Community:AAO: Avatar Optimizer
[Reason: You can contribute by expanding and proofreading this article, in accordance with the Manual of Style.]
(For upcoming VRChat-Official Avatar optimizer, please see Community:Potentially Upcoming Features. For d4rkpl4y3r's avatar optimizer, please see Community:d4rkAvatarOptimizer.)
AAO: Avatar Optimizer is an Avatar optimization tool, built on NDMF.
History
The project's official anniversary post summarizes much of its early history[1].
- AAO is also known as "Anatawa12's Avatar Optimizer", but was renamed in later release[1].
- The initial release was not based on NDMF[2]. However, later version migrated to the NDMF[3].
Features
TODO: this section is WIP.
"Trace and Optimize"
AAO provides a "Trace and Optimize" component. Users can add it to the Avatar's root[4]; typically, GameObject with the Avatar Descriptor.
The documentation describes this design principle as follows[4]:
Trace and Optimize is quite carefully designed under the premise that “never let it affect the appearance.”
So, if any problems occur, [...] they are all caused by bugs in AAO, without exception.
This component automatically applies optimizations equivalent to those performed by the following components when it determines that they are safe.
Merge Skinned Mesh
This component manually merges Unity SkinnedMeshRenderer components[5].
This component is usually not required, as "Trace and Optimize" automatically performs the same optimization in most cases[5]:
Trace and Optimize will automatically do the same process, so in most cases you do not need to use this component.
Freeze Blendshape
This component manually freezes Blendshapes at once in their initial weight[6] and remove it from the mesh. It must be added to same GameObject as SkinnedMeshRenderer[6].
By definition, it does not consider animations that affect blendshapes; if the blendshapes are animated, consider using Modular Avatar's "Mesh Cutter" component instead.
Remove Meshes by various selection
Following components remove parts of mesh by their input:
- Remove Mesh By BlendShape - uses Blendshapes
- Remove Mesh By Mask - uses a Texture
- Remove Mesh By Box - uses cuboids
- Remove Mesh By UV Tile - uses "UV Discard"-compatible configuration.
By definition, it does not consider animations that affect blendshapes; if the blendshapes are animated, consider using Modular Avatar's "Mesh Cutter" component instead.
See also
References
- ↑ 1.0 1.1 https://vpm.anatawa12.com/avatar-optimizer/ja/posts/2024-06-27-one-year-since-stable-release/
- ↑ https://github.com/anatawa12/AvatarOptimizer/issues/353
- ↑ https://github.com/anatawa12/AvatarOptimizer/pull/375
- ↑ 4.0 4.1 https://vpm.anatawa12.com/avatar-optimizer/en/docs/reference/trace-and-optimize/
- ↑ 5.0 5.1 https://vpm.anatawa12.com/avatar-optimizer/en/docs/reference/merge-skinned-mesh/
- ↑ 6.0 6.1 https://vpm.anatawa12.com/avatar-optimizer/en/docs/reference/freeze-blendshape/