Unity3D:蒙皮网格渲染器组件

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

蒙皮网格渲染器组件

蒙皮网格渲染器组件渲染可变形网格。可变形网格包括蒙皮网格(具有骨骼和绑定姿势的网格)、具有混合形状的网格以及运行布料模拟的网格。

要渲染常规网格,请改用网格渲染器和网格滤镜。

将可变形网格或具有可变形网格的模型添加到场景中时,Unity 会将蒙皮网格渲染器组件添加到生成的游戏对象中。

在 C# 代码中,类表示蒙皮网格渲染器组件。该类从 Renderer 类继承其大部分功能。因此,此组件与继承自 的其他组件有很多共同之处,例如线渲染器和跟踪渲染器。SkinnedMeshRendererRenderer

蒙皮网格渲染器可见性疑难解答

Unity 使用网格的边界来确定是否渲染它。如果整个边界体积位于任何活动摄像机的视图之外,Unity 不会渲染网格。

对于蒙皮网格渲染器,其网格边界会随着变形而变化。Unity 在计算最大边界体积时会考虑导入时存在的所有动画,并使用此值来确定可见性;但是,导入后发生的以下情况可能会将顶点或骨骼推到最大已知边界之外:

  • 附加动画
  • 在运行时更改脚本中骨骼的位置
  • 使用更改顶点位置的顶点着色器
  • 使用布娃娃

如果发生这种情况,Unity 可能无法正确确定网格的可见性,并且可能无法按预期显示网格。

在这些情况下,您可以尝试以下任一解决方案来解决问题:

  • 修改边界以匹配网格的最大潜在边界体积。如果可能,请使用此选项,因为它对性能更好。
  • 启用屏幕外时更新,以便 Unity 始终继续计算网格边界,即使网格不可见也是如此。如果性能不是主要问题,或者无法预测边界体积的大小(例如,如果使用布娃娃),请使用此选项。

蒙皮网格渲染器检查器参考

在“检查器”窗口中显示的蒙皮网格渲染器组件。
在“检查器”窗口中显示的蒙皮网格渲染器组件。

A:属性
B:材质
C:照明
D:探头
E:其他设置

属性

属性描述
边界设置 Unity 用于确定网格何时离开屏幕的边界体积。Unity 在模型文件中导入网格和动画时预先计算边界,并在场景视图中将边界显示为模型周围的线框。

如果将“屏幕外时更新”设置为 True,Unity 会在每一帧重新计算这些边界,并使用这些计算值来覆盖此属性。

此属性对应于 Mesh.Bounds API。
混合形状存储 Unity 与网格中定义的混合形状一起使用的权重值。
质量为可能影响顶点的最大骨骼数设置运行时上限。

当 Unity 导入网格时,Unity 可以使用从 1 到 32 的骨骼数量为每个顶点蒙皮。更多有影响力的骨骼可以改善运动过程中的效果。但是,这也会增加所需的计算资源,因此可能会影响性能。

出于性能原因,最好在导入时设置影响顶点的骨骼数,而不是使用运行时上限。为此,请使用“模型导入设置”窗口的“绑定”选项卡并调整“蒙皮权重”设置

除了使用此设置设置每个组件的运行时上限外,还可以在“编辑>项目设置”>“质量>其他>外观权重”下为项目设置全局限制。

此属性对应于 SkinnedMeshRenderer.quality API。
汽车使用在“质量设置”>“外观权重”中设置的全局限制。

【注】如果导入自定义数量的皮肤权重,并且想要允许四个以上的影响骨骼,则必须选择此选项并确保将“皮肤权重”设置为“无限制”。
1 骨头每个顶点仅使用一块骨骼。
2 骨头每个顶点最多使用两个骨骼。
4 骨头每个顶点最多使用四个骨骼。要允许四个以上的骨骼影响单个顶点,请使用“自动”设置。
屏幕外时更新启用此选项可计算每一帧的边界体积,即使网格对任何摄像机都不可见也是如此。禁用此选项可在游戏对象离开屏幕时停止外观,并在游戏对象再次可见时恢复外观。

出于性能原因,默认情况下禁用此功能。

此属性对应于 SkinnedMeshRenderer.updateWhenOffscreen API。
网孔设置此渲染器使用的网格。网格应包含有效的绑定姿势和蒙皮权重、使用混合形状或运行布料模拟。如果网格不使用任何这些技术,请考虑使用网格渲染器和网格过滤器。

对应于 SkinnedMeshRenderer.sharedMesh 属性。
根骨设置作为骨架“根”的转换。边界随此转换一起移动。
渲染层蒙版此属性确定 Unity 将此渲染器分配给哪个渲染层。可以使用此属性指定其他特定于渲染的图层蒙版。这将根据渲染器具有的遮罩过滤渲染器。

此属性对应于 Renderer.renderingLayerMask API。

Unity 仅在使用可编程渲染管线时显示此属性。
渲染器优先级按优先级对渲染器进行排序。较低的值首先呈现,较高的值最后呈现。

此属性对应于 Renderer.rendererPriority API。

Unity 仅在使用高清渲染管线时显示此属性。

材质

Unity 2020.1 HDRP 模板示例项目中网格的线框视图
Unity 2020.1 HDRP 模板示例项目中网格的线框视图

Materials 部分列出了此组件使用的所有材质。

属性描述
大小材料列表中的元素数。

如果减少元素数量,Unity 将删除列表末尾的元素。如果增加元素的数量,Unity 会将新元素添加到列表的末尾。Unity 使用与列表末尾的元素相同的材料填充新元素。
元素列表中的材料。您可以为每个元素分配材质资源。

默认情况下,Unity 会根据材质名称按字母顺序对列表进行排序。此列表是可重新排序的,Unity 会在您更改元素顺序时自动更新元素的数量。

注意:如果材质多于子网格,则 Unity 会使用剩余的每个材质逐一渲染最后一个子网格,使一个材质加在下一个材质之上。 如果材质不是完全不透明的,则可以将不同的材质分层并创建有趣的视觉效果。 但是,完全不透明的材质会覆盖之前的层,因此 Unity 应用于最后一个子网格的任何其他不透明材质都会对性能产生负面影响,但不会带来任何好处。

光照

Lighting 部分包含与光照相关的属性。

属性描述
投射阴影指定当合适的光线照射到此渲染器上时,此渲染器是否以及如何投射阴影。

此属性对应于 Renderer.shadowCastingMode API。
当投射阴影的光源照射到此渲染器上时,此渲染器会投射阴影。
关闭此渲染器不会投射阴影。
双面此渲染器投射双侧阴影。这意味着像平面或四边形这样的单面物体可以投射阴影,即使光源在网格后面也是如此。

要使烘焙全局照明或 Enlighten 实时全局照明支持双面阴影,材质必须支持双面全局照明
仅阴影此渲染器投射阴影,但渲染器本身不可见。
接收阴影指定 Unity 是否显示投射到此渲染器上的阴影。

仅当为此场景启用烘焙全局照明或启发实时全局照明时,此属性才有效。

此属性对应于 Renderer.receiveShadows API。
贡献全局照明将此渲染器包含在烘焙时进行的全局照明计算中。

仅当为此场景启用烘焙全局照明或启发实时全局照明时,此属性才有效。

启用此属性将在游戏对象的静态编辑器标志中启用贡献 GI 标志。它对应于 StaticEditorFlags.ContributeGI API。
接收全局照明Unity 是从烘焙光照贴图还是从运行时光照探针向此渲染器提供全局光照数据。

仅当启用“贡献全局照明”时,此属性才可编辑。仅当为此场景启用烘焙全局照明或启发实时全局照明时,它才具有效果。

此属性对应于 MeshRenderer.receiveGI API。
光照贴图Unity 从光照贴图向此渲染器提供全局照明数据。
光探头Unity 从场景中的光照探针向此渲染器提供全局照明数据。
优先考虑照明启用此属性以始终将此渲染器包含在 Enlighten 实时全局光照计算中。这可确保渲染器受到远距离自发光的影响,即使是那些通常出于性能原因从全局照明计算中排除的自发光。

仅当在游戏对象的静态编辑器标志中启用了 Contribute GI、项目使用内置渲染管线并在场景中启用了 Enlighten 实时全局光照时,此属性才可见。

探针

Probes 部分包含与光照探针 和反射探针有关的属性。

属性描述
光探头设置此渲染器如何从光照探针系统接收光线。

此属性对应于 Renderer.lightProbeUsage API。
关闭渲染器不使用任何插值光照探针。
混合探头渲染器使用一个插值光照探针。这是默认值。
使用代理卷渲染器使用插值光照探针的 3D 网格。
定制提供渲染器从 MaterialPropertyBlock 中提取光照探针着色器均匀值。
代理卷覆盖设置对具有光照探针代理体积组件的另一个游戏对象的引用。

仅当光照探针设置为“使用代理卷”时,此属性才可见。
反射探头设置渲染器如何从反射探针系统接收反射。

此属性对应于 Renderer.probeAnchor API。
关闭禁用反射探头。Unity 使用天空盒进行反射。
混合探头启用反射探针。混合仅在反射探头之间发生。这在室内环境中很有用,因为角色可能会在具有不同照明设置的区域之间过渡。
混合探针和天空盒启用反射探针。混合发生在反射探针之间,或反射探针与默认反射之间。这对于户外环境很有用。
简单启用反射探针,但当存在两个重叠的体积时,反射探针之间不会发生混合。
定位点覆盖设置 Unity 在使用光照探针或反射探针系统时用于确定插值位置的变换。默认情况下,这是渲染器几何体边界框的中心。

此属性对应于 Renderer.probeAnchor API。

其他设置

Additional Settings 部分包含额外的属性。

财产描述
蒙皮运动矢量启用此选项可对网格蒙皮数据进行双重缓冲,以便 Unity 可以插值蒙皮运动并将其放入运动矢量纹理中。这会使用更多的 GPU 内存,但会导致更正确的运动矢量。
动态遮挡启用动态遮挡后,Unity 的遮挡剔除系统会在静态遮挡器从摄像机视图中屏蔽此渲染器时剔除该渲染器。否则,当此渲染器被静态遮挡器挡出摄像机视图时,系统不会剔除此渲染器。

默认情况下启用动态遮挡。禁用它以获得效果,例如在墙后绘制角色的轮廓。

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:Mesh Renderer 组件 (mvrlink.com)

下一篇:Unity3D:Mesh Filter 组件 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号