We would appreciate some guidance/advice on how to retain visual parity when scaling a world down. More specifically, the SkyAtmosphere component and the amount of aerial perspective expected on an earth-like-world vs a miniature world at a 1/10th of the scale.
For example, the image attached below right called *WorldScale1 shows a test environment at real world earth scale and an approved Atmospheric look. The image attached below left called WorldScale0.1 has the Landscape scaled down to 1/10 to represent the miniature world. Obviously the amount of perceived aerial perspective is now very different but we would like to retain the look between the two scenarios. Is there any recommendation on how to get the same visual when scaling a world down in terms of atmospherics? There are no global “Scale” like parameter in the SkyAtmosphere.
We have tried scaling down the “Ground Radius” and “Atmosphere Height” inside the SkyAtmosphere by a 10th to have parity with the environment, and then increasing “Aerial Perspective View Distance Scale” by a factor of 10 thinking we would arrive at a similar look but this did not work either. Similarly we have tried scaling Rayleigh / Mie components to increase Atmosphere density but our efforts so far have failed.
Before we explore matching the two visual in a non physical artistic way, is there any advice on how to achieve this?
Indeed this is tricky. I did a quick try and it will depends on lots of things such as when you scale your terrain, camera must stay at the same relative position. Also the skyatmosphere should be moved accordingly to map the top of the atmosphere (using the PlanetTopAtComponentTransform mode) with the same position on the terrain.
Let’s say all that is correct, then one would need to tweak the atmosphere density and it distribution. I am looking at a few things and will add then here when I am done.
Ok so yes, if you scale your terrain by S=0.01, then have to scale the top position of the SkyAtmosphere position too (must use PlanetTopAtComponentTransform).
All distances have to be scale by S: as mentioned the planet transofmr, the atmospehre height and radius, exponential ditributions for Mie and Raylkeigh, as well as absorption tent altitude nd width .
Then all scattering and absorption coefficients have to be scaled by 1/S to maintain same transmittance/scattering properties.
I have attached an image of before/after scaling world/after scaling skyatmosphere. It is not perfect yet but very close. After that, if art direction is tweaked, I would not be able to tell more. I also attach an image showing what I have touched in the SkyAtmosphere component.
Thank you so much for the reply on this. I had given up mainly because I did not know how to scale the Coefficients. I did try to divide any distance attribute but was unsure how to scale tent and coefficients.
Will try it now with some of this new knowledge from you!
Ok here are some images to look at. Thanks again Sebastien for the info.
Unfortunately I cant seem to match the sky as good as you were able to even with the same settings you provided, unsure what may be missing for a 1 to 1 match.
Disregarding that, They sky looks very similar between different world scales but there are still some issues. One of them is the atmosphere accumulation over objects at different distances. Clouds and Exponential Atmosphere are another set of problems because there is no easy way to scale those down, so I will ignore those for now.
As you can see in the following images between scales 1.0 0.1 and 0.01 The amount of “depth cueing” over the mountains decreases at lower scales. Fortunately for us, the difference between 1.0 and 0.1 is close enough (after boosting “Aerial Perspective View Distance Scale” by a factor of 2). We dont need to scale our world beyond 1/10th .
Yes it was not designed to scale like that especially due to art direction knobs. Just to be setup so I think that is as far as we can go about that.
The difference of aerial perspective is that by default we do not trace on opaque but apply a fast froxel volume that is limited in depth. Please check out r.SkyAtmosphere.AerialPerspectiveLUT.Depth and r.SkyAtmosphere.AerialPerspectiveLUT.DepthResolution. So if xxxLUT.Depth was not going far enough, you would not have gotten enough aerial persective. Might be something else also? Like skylight contribution instead of aerial pserspectve? Is the capture sky bos the same? the skylight position dictate that IIRC.
Ahh yes, using r.SkyAtmosphere.AerialPerspectiveLUT.FastApplyOnOpaque=1 will make the sky match. The issue of lack of atmosphere accumulation on the objects is still present at scale 1/100 . As mentioned above, we only need to scale down to 1/10.
Thanks again Sebastien! We have what we need for this.
ps yes the art Direction parameters we dont use. They are set to default values for this test. Having said that, might need to increase the AerialPerspectiveViewDistanceScale to get the images to match closer.
pss [mention removed] will be taking over the cloud/sky work on behalf of WetaFX from now on so CCIng him here !
Ohhh actually I just found out the “problem” of diminishing AerialPerspective at very low scales. The problem stems from the AerialPerspectiveStartDepth default of 0.1, which at very low scales means even a “Mountain” would be completely lacking Atmosphere accumulation.
This screenshot shows the issue, AerialPerspective scale has been set to 100 to show the issue clearly. The entire mountain will be completely clear unless the value is lowered appropiately. [Image Removed] [Image Removed]
Well i think this solves the issue now.
Once again, thanks for such a cool tool and with the help with this task we had to push it to these extremes!