googlevr / seurat

Seurat is a scene simplification technology designed to process very complex 3D scenes into a representation that renders efficiently on mobile 6DoF VR systems.
Apache License 2.0
872 stars 94 forks source link

Speculars and reflections not changing #18

Open superrune opened 6 years ago

superrune commented 6 years ago

I have just written an exporter to Seurat for 3ds Max (https://github.com/superrune/3dsmaxSeuratExport), and have tested a couple scenes in the Butterfly viewer. I was under the impression that Seurat was storing light fields on the surface points, so that the files would store the reflections and specs as they change according to viewing angle. However, I am not seeing any of that in Butterfly. Can Seurat store the reflections as they change?

FrankEscobar commented 6 years ago

I had the same problem but unfortunatly I think that there is no support by the people that made it.

MotivaCG commented 6 years ago

Probably it won't work never, since you should apply it as self-illumination map I cannot imagine how it could work I think that this implementation has nothing to do with the one that ILM used.

breakin commented 6 years ago

I briefly looked at Seurat. I was surprised to learn that it only supported a single image channel. If it had supported say 3-4 image channels Seurat could be used to reconstruct a g-buffer holding material properties such as metalness, base color, roughness etc.. Light sources could then be added by the realtime engine enabling view-dependent effects. I'm kinda assuming that this is what ILM did since storing full light-field seems expensive, but I could be wrong ofc. I have no actual insight into their prototype beyond what was written in media.

I guess you could run Seurat once for each input image to obtain different meshes/textures for the different images and then you could render all of them into different buffers to get you full g-buffer. Maybe this is what ILM did?

davejrichardson commented 6 years ago

Seurat doesn't in general support dynamic specular reflections; they're baked in.

As Anders suggests, you can capture and process a set of g-buffers as input by running the pipeline in several iterations. It's a bit lengthy, and you need to carefully use the --cache_path flag to get consistent processing results over multiple pipeline runs.