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

Why are there differences (scale, head box, cube size) between the Unity & Unreal Seurat Capture plugins? #11

Open mebalzer opened 6 years ago

mebalzer commented 6 years ago

I had first thought there was an issue with the Unreal Capture plugin due to the lack of any of mesh information being captured, but I have since changed my thoughts on this since I have a similar "Chatting with Vincent" model used in both engines but noticed far more data is captured in Unity than Unreal. I thought this was due to the headbox size (1 x 1 x 1 in Unity versus 100 x 100 x 100 in Unreal) but the actual size of the cube created did not seem to change even when I changed it in Unreal 10 x 10 x 10 (1 x 1 x 1 seems to hang the texture generation part of the procedure). However, if I change the pipeline 'skybox_radius=' to 400, I show 4x as much mesh detail since the box is now 4x larger . At 'skybox_radius=800' the detailed capture is further out, but it seems to me I am having to make too many changes in the pipeline. I also noticed the mesh is 100x larger than the mesh captured in Unity, but since too many things in my Unreal level are set up for VR scale and some assets are scaled independently within the level to match. Just making a wholesale scale change is not practical. However it is easy to just bring the .obj file over to Blender or other 3D design tool and change the scale there before importing back into an Engine. (Also if you want to use Blender to preview, make sure you select under Texture/Influence - Color& Alpha then 'Blend = Multiply'

blendertexturesetting

I guess knowing exactly what Google is trying to accomplish in the capture plugins would be very helpful since experimental iterations can take a great deal of time. However, if anyone else wants to contribute to this thread on what they have found in their own experimentation, that would be excellent.

In saying all this, it is great that the actual output is engine agnostic allowing allowing the capture process to used in any engine/3D rendering tool if someone wants to take the time build a plugin/tool. Again, a much more in-depth analysis of what is being accomplished will help us create a wider variety of Seurat tools.

MattOstgard commented 6 years ago

The game units in ue4 are in centimeters so headbox size is actually 1 meter in both engines.

manfred-ernst commented 6 years ago

You need to set 'skybox_radius=20000" for Unreal captures, because units are centimeters. The units of the Seurat output will match the units of the input, so meters for Unity and centimeters for Unreal.

mebalzer commented 6 years ago

I came to the conclusion as well. Thanks!