Adaptive Optimize¶
This option allows for more fine-tuned optimization of the scene, that maximizes performance while keeping the visual as intact as possible.
Optimizing is non destructive
memsaver
works in a way that you won't lose your original setup.
Optimized images and meshes can be always returned to the previous state by using the
Revert Images to Originals
and Revert Meshes to Originals
button.
Operator reports what changed
After the optimization finishes, the operator reports how many images and meshes were successfully optimized, how many failed, and how much memory was saved. You can open the Blender info tab to see more details in case something failed.
Optimize Images¶
Choose texture resolution based on how big the object appears in the render image!
You can make sure all images are of some size or lower when using Resize Images
but what about using smaller images for far away objects but large images for close objects?
Adaptive Image Resize
can help you choose smaller image sizes for far away or small objects and
larger sizes for close objects or objects that are large.
memsaver
calculates a 2D rectangle that covers the entire object in the rendered image based on the object's bounding box.
Then it takes the larger side (either width or height), multiplies it by the quality factor
and uses that
for scaling images used on that object.
Reused textures
If a texture is used in multiple objects, memsaver
will consider the closest object when
choosing the size. It does not make sense to use multiple sizes of the same image as that would
just waste memory. Sometimes this ends up with far away objects using large textures because
something close to the camera is using the same images.
Example
In this example the first object's bounding box has maximum dimension approximately 800 pixels
. We
multiply this by our quality factor which we left at 1.0
for this example and then choose the
closest power of two size of a texture, which is 1024 pixels
.
The second object has a maximum side size of approximately 600 pixels
. This again will end up as 1024 pixels
,
closest power of two size for textures.
We can use the magnifying glass next to the Adaptive Image Resize
operator to preview the changes
on all scene objects and see that this is indeed the size of images that the operator would choose.
Notice that one texture is larger than what we calculated - that is because the texture is
reused by a larger foreground object.
Objects to preview are selected with the Left Button and preview mode can be exited with Esc.
Active camera¶
Adaptive optimization is camera dependent - image optimization and mesh decimation is calculated based on your active camera. You can see and change the active camera before starting the optimization.
Info
Preview Adaptive Optimize
is pre-calculated based on the Active Camera.
If you change the camera position or other settings, exit and restart the Preview Adaptivce Optimize
to recalculate the preview values.
Target Images¶
Resize Images
operates on images directly but Adaptive Image Resize
operates on objects.
That's why we have to choose the target slightly differently.
Selected Objects
- considers all selected objects and the images used in themScene Objects
- considers all objects in the current scene and their images
Tuning Image Resizing¶
There are three image resizing values you can tune when using the Adaptive Image Resize
operator.
Quality Factor
: This is what we multiply the 2D bounds dimension to get desired texture sizeMinimum Image Size
: Limit of how small the images may get, we will never go under this valueMaximum Image Size
: Limit of how large the images may get, we will never go over this value
We advise to play with the quality factor to get a good trade-off for your scene. Values over 1.0
are conservative, you can often get away with lower values such as 0.25
.
Comparison with Change Image Size¶
This operator is similar to the Resize Images operator but chooses texture sizes separately for each object. Let us look at a comparison:
Decimate Meshes¶
Choose mesh decimation based on distance and polycount limit!
You can reduce polycount of meshes that are far from active camera and don't benefit from additional detail.
Target Meshes¶
The options for target meshes are the same as in Decimate Meshes
.
Selected Objects
- considers all selected objects and their meshesScene Objects
- considers all objects in the current scene and their meshes
Tuning Mesh Decimation¶
There are four mesh decimation values you can tune when using the Adaptive Image Resize
operator.
Full Quality Max Distance
: Meshes that are closer to the camera then given value will not be affectedLowest Quality Distance
: All meshes further than this distance will have maximum decimation appliedLowest Quality Decimation Ratio
: Ratio of triangles to be reduced at theLowest Quality Distance
. The smaller the value, the larger the decimationLowest Face Count
: Meshes with face count lower than this value will be ignored
Animation Mode¶
If animation mode is enabled the resulting optimization is based on the keyframe where the object is closest to the camera instead of current frame.