Community:AAO: Avatar Optimizer

From VRChat Wiki
Revision as of 07:28, 26 September 2026 by kisaragi marine (talk | contribs) (Created page with "{{Noticebox/Community}} {{stub}} {{Infobox/Asset |name=AAO: Avatar Optimizer |author=anatawa12 |license=MIT |github=anatawa12/avatar-optimizer |documentation=https://vpm.anatawa12.com/avatar-optimizer }} (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 too...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
V · ECommunity-written content
The following was created by the community. It may contain material not directly endorsed by the VRChat team. To learn more, consider reading Contributing to the VRChat Wiki.
V · EThis page is a stub.
You can help the VRChat Wiki by improving it.
[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:

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