Rahnir Posted June 8, 2021 Share Posted June 8, 2021 I have this very simple scene with a static plane, a static cube and a dynamic sphere. There's also a voxel probe volume. However, after baking, the voxels don't seem to be correct. They're black on certain sides, causing undesired effect on sphere: https://gyazo.com/ab581518ac58a8410bf10b6c764ee3fa https://gyazo.com/a4a5d2059c7dcb56697ecd122181c802 How do you fix this? All the best. Link to comment
silent Posted June 9, 2021 Share Posted June 9, 2021 Rahnir Looks like you need to bake more detailed voxel probe to avoid this. Can you export your scene context to a package and send us for debugging? Thanks! How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
Rahnir Posted June 9, 2021 Author Share Posted June 9, 2021 (edited) Sure thing, I uploaded it here: https://www.dropbox.com/s/ozcxvz5os8dw8tz/test.upackage?dl=0 I reckon the probes go black because they're inside the cube? Perhaps propes that are invalid (inside geometry) shouldn't be included? I noticed in the fox hole sample project, there's a lot of black probes as well which would cause undesired ambient lighting on dynamic objects for certain locations (near ground/walls etc). While increasing voulme may mitigate the effect, it isn't entirely solved that way. I know there's this package for Unity that automatically places probes in optimal locations and guaranteed doesn't place probes inside geometry. Might be worth checking out for inspiration: https://assetstore.unity.com/packages/tools/utilities/magic-light-probes-157812 All the best. Edited June 9, 2021 by Rahnir Link to comment
silent Posted June 10, 2021 Share Posted June 10, 2021 Hi Rahnir, Thanks for the test scene. Indeed in your case voxels resolution is not enough to provide a proper lighting information. Some voxels (black) are located inside the object and because they so big you can see the interpolation results (dark colors near the surfaces). To avoid this you will need to bake lighting with increased voxels resolution (decrease the voxel size to get dense grid). It will take more time to bake and resulting texture would be bigger in size. So, you need to have at least 2-3 voxels in the closest interval between your objects in a scene: We also found a bug that can affect quality of the baked lighting: you need to uncheck Visibility Voxel Probe option to get a slightly better results in your scene: Quote I know there's this package for Unity that automatically places probes in optimal locations That might work for the case when each probe represents a single volume, but we have all the voxels baked at once in a separate 3D texture and there is no way to place them in a specific locations. Thanks! How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
Rahnir Posted June 11, 2021 Author Share Posted June 11, 2021 Thanks for the pointers and suggestions for improving the scene. Yeah Unity seems to work fundamentally different in regards to light probes. Having it their way has some benefits (like avoiding placement inside geometry). However, with such a system there's also some limits. I created this very simple scene in Unigine: In Ungine, the light probes affecting the dynamic cylinder works out of the box. In Unity, this would not work since each object is affected by a single light probe (in this case it would probably turn purple since it's between red and blue). For large objects (such as this cylinder), that would not be good since the ambient lighting is so different across the object. However, they offer something they call Light Probe Proxy Volume (LPPV), which is a 3D texture created at runtime which samples the light probes at each point in the volume (with user authored density). That way, an object could be affected by multiple probes at runtime, while those probes still being user authored. I think such a system could benefit Unigine also. Another approach could be to discard voxels considered "invalid" prior to baking, and propagate values from nearby, valid cells after bake, until all cells are filled. That may be a better and easier solution to implement in Unigine. Anyway, just some thoughts of a Unity game developer who is exploring Unigine for the first time. All the best. 1 Link to comment
Recommended Posts