组件参考

Trace And Optimize / 跟踪和优化

以前称为自动配置

此组件将跟踪并自动优化你的模型。你可以使用复选框来启用或禁用某些自动优化功能。

此组件应添加到模型根目录中。(种类:模型全局组件

Trace and Optimize 在“永远不要让它影响到外观”的前提下进行了精心设计。
所以,如果出现任何问题,例如外观受到影响或者某些插件不正常运行,它们都是由 AAO 引起的错误,无一例外。
因此,如果你在使用此组件时遇到任何问题,请告诉我们。我们将尽可能的去修复它。

目前,自动应用以下优化。

当然,你可以使用以下设置调整优化。

此外,还有以下高级优化。

同时,还有 Debug Options 用于解决一些错误,但它不稳定且未经充分测试。有关更多详情,请参阅工具提示或实现。

component.png

动画优化器

此功能目前应用以下优化。


  1. AAO 目前假设任何名称以 end(忽略大小写)结尾的骨骼都是末端骨骼。

UnusedBonesByReferencesTool

将其标记为 EditorOnly,即仅从 EditorOnly 网格中引用的骨骼。

此组件应添加到模型根目录中。(种类:模型全局优化)

此组件已过时,你应该使用 Trace And Optimize 的 Remove unused Objects 功能来代替,此组件将永远不再获得支持与更新。

这是 Narazaka 的 UnusedBonesByReferencesTool 的端口,但在构建时运行。

component (1).png

Merge Skinned Mesh / 合并蒙皮网格

将一个或多个 SkinnedMeshRenderer 和 MeshRenderer 合并到同一个 SkinnedMeshRenderer 中。

你应该将此组件添加到具有未指定网格的 SkinnedMeshRenderer 组件的新游戏对象中。(种类:源编辑蒙皮网格组件)

好处

合并 SkinnedMeshRenderer 将减少变形网格(蒙皮)的数量。 此外,它可以合并使用相同材质球的材质槽,因此我们可以降低渲染成本。

注意

此组件将会让动画无法单独打开和关闭网格,但与材质球相关的动画无需修改即可工作。

此组件将配置 Mesh、Material、BlendShape 和 Bound,但其它设置不会被修改。请编辑附加在与 MergeSkinnedMesh 相同游戏组件上的 SkinnedMeshRenderer 组件,以设置 Anchor Override 等。

此组件适用于合并你的衣物网格和身体网格,但不适用于头部网格,因为 BlendShape 会对性能产生影响。BlendShape 的性能消耗与顶点和 BlendShape 的数量成正比。合并 SkinnedMesh 会增加顶点数量,而面部网格通常有许多 BlendShape。因此,合并头部网格并不是一个很好的点子。

另外,基于同样的原因,你应该冻结并移除身体/衣物网格中不变的 BlendShape。您可以使用 Freeze BlendShape 组件来冻结并移除 BlendShape。将此组件添加到合并源 SkinnedMeshRenderer 和/或合并后的 SkinnedMeshRenderer 中,以冻结并移除 BlendShape。此外,您还可以使用 Trace and Optimize 组件的 Automatically Freeze BlendShape 功能来获得相同的好处。

Trace And Optimize 将自动执行相同的过程,因此在某些情况下,你不需要使用此组件。

设置

component (2).png

Skinned Renderers / 蒙皮渲染器

要合并的 SkinnedMeshRenderer 列表。

将物体拖动到底部的 None 元素以添加渲染器,重置为 None 以从列表中删除。

Static Renderers / 静态渲染器

要合并的 MeshRenderer 列表(不带网格转换)。

将物体拖动到底部的 None 元素以添加渲染器,重置为 None 以从列表中删除。

Remove Empty Renderer GameObject / 移除空的渲染器游戏对象

如果选中此复选框,并且包含 SkinnedMeshRenderer 的游戏对象除了 SkinnedMeshRenderer 以外没有其它组件,则该游戏对象将从层级中移除。

Skip Enablement Mismatched Renderers / 跳过启用不匹配的渲染器

如果选中此复选框,则在构建时,渲染器的启用状态与目标渲染器不匹配的情况下,将不会被合并。

Merge Materials / 合并材质球

如果组件发现多个渲染器中使用了一些材质球,则这些材质球将在此处列出。

选中 Merge,将会使这些材质槽(子网格)合并成同一个材质槽。这样可以减少绘制调用。

Freeze BlendShape / 冻结和移除形态键

冻结并从网格中移除 BlendShape。

应将此组件添加到具有 SkinnedMeshRenderer 组件的游戏对象中。(种类:修改编辑蒙皮网格组件)

Trace And Optimize 将自动执行相同的过程,因此在大多数情况下,你不需要使用此组件。

好处

冻结和移除 BlendShape 具有以下好处。

注意

冻结 BlendShape 后,值将无法在动画中更改。

设置

component (3).png

你将看到 BlendShape 列表,并且可以勾选要冻结的 BlendShape。

Merge ToonLit Material / 合并 ToonLit 材质球

通过手动打包纹理,来将 VRChat/Mobile/Toon Lit 材质球合并为同一个材质球。

应将此组件添加到具有 SkinnedMeshRenderer 组件的游戏对象中。(种类:修改编辑蒙皮网格组件)

该组件目前仅支持 VRChat/Mobile/Toon Lit,因为我认为它需求非常大,但我可能会添加对其它着色器(包括第三方着色器)的支持。如果你希望支持其它着色器,请在 Github 上提交 issue

该组件将创建新的材质球,因此由组件创建的材质槽将不会被 AAO Merge Skinned Mesh 组件合并。如果你希望合并多个渲染器的材质球,请将 Merge ToonLit Material 组件添加到具有 AAO Merge Skinned Mesh 组件的游戏对象中。

设置

点击 Add Merged Material 以添加合并后的材质球。对于每个合并后的材质球,您可以从材质球中设置多个源材质球。点击 Add Source 或从下拉菜单中选择你的材质球。对于每个源材质球,你必须设置纹理的放置位置。请修改X、Y、W、H以适应您希望的位置。点击 Generate Preview 以生成每个贴图并查看预览。

component (4).png

Remove Mesh By BlendShape / 通过形态键移除面

移除由指定 Blendshap 驱动的顶点和面。

好处

通过删除被衣物或者其它东西遮挡的面,可以降低渲染成本、BlendShape 处理成本等,而不会对外观产生太大影响。 你可以使用此组件通过 BlendShape 轻松移除不需要的面,以减少身体各个部分的面数,这在许多模型中都有应用。

设置

component (5).png

你将看到 Blendshape 列表,并且可以通过选中复选框来选中 Blendshape。如果选中的 Blendshape 使网格中的某些顶点移动距离超过了设定的 Tolerance,此组件将移除这些顶点。

如果你想要移除的面未被移除,或者您不想移除的多边形被移除了,您需要调整 Tolerance 的值。Tolerance 决定了顶点被 BlendShape 移除的程度。对于第一种情况,稍微增加该值;对于第二种情况,稍微减少该值。

如果你启用了 Automatically set BlendShape weight for preview when toggled,当你开关指定的 Blendshape 时,它们的值将自动设为 100 或 0。

Remove Mesh By Mask / 通过蒙版移除面

移除蒙版贴图中指定的任何区域中的面。

应将此组件添加到具有 SkinnedMeshRenderer 组件的游戏对象中。(种类:修改编辑蒙皮网格组件)

好处

通过删除被衣物或者其它东西遮挡的面,可以降低渲染成本、BlendShape 处理成本等,而不会对外观产生太大影响。

你可以通过此组件轻松的使用带有透明通道的蒙版贴图来移除面,或者使用由 gatosyocora 制作的 MeshDeleterWithTexture 来通过蒙版移除面。

设置

component (6).png

你将看到网格的材制槽列表,你可以选中复选框来决定哪些需要使用通过遮罩来删除面。

蒙版纹理

用于删除面的蒙版贴图。单击“Edit”按钮来打开蒙版贴图编辑器。

删除模式

由于蒙版贴图根据情况有不同的颜色,因此你需要选择相应的模式。

当你想要删除面的蒙版色块接近黑色时,请选择 Remove Black 模式。
当你想要删除面的蒙版色块接近白色时,请选择 Remove White 模式。

蒙版贴图编辑器

mask-editor.png

通过此窗口,你将可以编辑蒙版贴图。
在窗口顶部,将显示与正在编辑的蒙版贴图相关的信息。
在窗口中心,有视图和画笔大小的控件。
窗口底部用于显示网格的原始贴图、蒙版贴图和 UV。

使用左键拖动来绘制蒙版,使用右键拖动或 Shift + 左键 拖动来移动视图。
滚动鼠标滚轮来进行放大或缩小,使用 Shift + 滚动鼠标滚轮来调整画笔大小。

Remove Mesh in Box / 通过立方体移除面

移除指定立方体内的面。

应将此组件添加到具有 SkinnedMeshRenderer 组件的游戏对象中。(种类:修改编辑蒙皮网格组件)

好处

通过删除被衣物或者其它东西遮挡的面,可以降低渲染成本、BlendShape 处理成本等,而不会对外观产生太大影响。

设置

component (7).png

单击 Edit This Box 来显示用于编辑立方体的小工具,如下图所示。你可以移动、旋转和缩放它。

gizmo.png

示例

当立方体如第一张图的位置摆放时,立方体内的面将被全部移除,如第二张图所示。

before.png

after.png

Clear Endpoint Position

该组件将在添加 _EndPhysBone 游戏对象时,将 EndpointPosition 替换为0。

这个组件会将 EndpointPosition 的值替换为 0,并添加 _EndPhysBone 游戏对象。

翻译内容有待考究,以下为英文原话:
This component will replace EndpointPosition to 0 with adding _EndPhysBone GameObject.

此组件应添加到具有 PhysBone 组件的游戏对象中。

此组件目前没有任何配置,但视图上有一个按钮。 单击 Apply and Remove component 将应用此操作并删除此组件。这对于开发模型可能会很有用。

component (8).png

Merge Bone / 合并骨骼

Trace And Optimize 将自动执行相同的过程,因此在大多数情况下,你不需要使用此组件。、

如果你将此组件添加到某个游戏对象,则该游戏对象将被移除并合并到父级游戏对象中。此外,如果目标游戏对象上附加了其他组件,它们也将被移除。

如果父级游戏对象也具有 Merge Bone 组件,则这两个游戏对象将合并到其更近一步的父游戏对象中。

应用了该组件的游戏对象的所有子对象将归属于该游戏对象的父对象。

设置

component (9).png

Merge PhysBone / 合并动骨

这个组件将多个 PhysBone 组件合并为一个组件,MultiChildType 将设为 Ignore。

此组件应该添加到新游戏对象中。

注意

合并目标 PhysBone 必须是同一游戏对象的子对象。或者,你可以使用 Make Children of Me 选项。

该组件将新建一个作为 PhysBone 根的游戏对象,并将合并目标 PhysBone 所影响的骨骼设为新建游戏对象的子对象。

此外,作为根的游戏对象也会被视为PhysBone影响的骨骼之一,因此每个合并的 PhysBone 的 PhysBone Affected Transform 数量会增加一个。由于该组件添加的游戏对象不会被 PhysBone 所影响,这可能是 VRChat 性能等级系统的一个错误。

设置

component (10).png

Make Children of Me

如果勾选此选项,合并目标 PhysBone 影响的骨骼将成为该游戏对象的子对象。

Components

PhysBone 组件的列表。

将物体拖动到底部的 None 元素以添加 PhyBone,重置为 None 以在列表中删除。

Overrides

在这些配置的下方,有类似于 VRCPhysBone 的配置界面。对于每个属性,您可以选择 Copy 以从源属性中复制值(仅当源属性的值相同时可用),或选择 Override 以设置新值。

对于碰撞体,你可以选择 Merge 来从源骨骼中合并碰撞体。

对于 Endpoint Position,你还可以选择 Clear 以使用 Clear Endpoint Position

Remove Zero Sized Polygon / 移除为零的面

移除面积为零的面。

应将此组件添加到具有 SkinnedMeshRenderer 组件的游戏对象中。

由于此组件在构建中最后才运行,因此该组件不是 修改编辑蒙皮网格组件
将此组件添加到要由 Merge Skinned Mesh 组件合并的 SkinnedMeshRenderers 中不起作用。

好处

通过移除面积为零的面,可以降低渲染成本,这对外观的影响几乎为零。

注意

在某些着色器中,即使模型网格中的面大小为零,也会用于某些特定的视觉效果,所以此组件可能会对外观产生影响。

设置

此组件目前没有任何可用配置。

component (11).png

注意

此组件将由 Trace and Optimize 组件自动添加。我建议你使用 Trace and Optimize,而不是手动添加此组件。

Make Children / 作为子对象

这些指定的对象在构建时将是组件中指定的游戏对象的子对象。

此组件已弃用。
这项功能与头像优化无关,因此该组件被当前计划中的非破坏性头像修改实用程序的一个组件所替换。

component (12).png