包含此页的版本:
不含此页的版本:
顶点数据的元素称为顶点属性。
每个顶点都可以具有以下属性:
在内部,所有顶点数据都存储在相同大小的单独数组中。如果您的meshUnity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
请参阅术语表包含一个具有 10 个顶点位置的数组,它还具有它使用的每个顶点属性具有 10 个元素的数组。
在 C# 中,Unity 使用 VertexAttribute 枚举描述可用的顶点属性。您可以检查Mesh类具有具有 Mesh.HasVertexAttribute 函数的给定顶点属性。
顶点位置表示顶点在对象空间中的位置。
Unity 使用此值来确定网格的表面。
此顶点属性对于所有网格体都是必需的。
在Mesh类,访问此数据的最简单方法是使用 Mesh.GetVertices 和 Mesh.SetVertices。Unity 还将此数据存储在 Mesh.vertices 中,但这个较旧的属性效率较低且用户友好。
顶点法线表示在顶点位置直接指向表面“向外”的方向。
Unity 使用此值来计算光线从网格表面反射的方式。
此顶点属性是可选的。
在Mesh类,访问此数据的最简单方法是使用 Mesh.GetNormals 和 Mesh.SetNormals。Unity 还将此数据存储在 Mesh.normals 中,但这个较旧的属性效率较低且用户友好。
顶点切线表示在顶点位置沿表面的“u”(水平纹理)轴指向的方向。
Unity 将顶点切线与附加数据片段存储在四分量向量中。向量的 x、y、z 分量描述切线,向量的 w 分量描述其方向。Unity 使用 w 值来计算正法线,即正切和法线的叉积。
Unity 在法线贴图中使用切线和双法线值。
此顶点属性是可选的。
在Mesh类,访问此数据的最简单方法是使用 Mesh.GetTangents 和 Mesh.SetTangents。Unity 还将此数据存储在 Mesh.tangents 中,但这个较旧的属性效率较低且用户友好。
一个网格最多可以包含八组纹理坐标。纹理坐标通常称为UV,这些集称为通道。
Unity 在网格周围“包裹”纹理时使用纹理坐标。UV指示纹理的哪一部分与顶点位置的网格表面对齐。
UV 通道通常称为“UV0”,第一个通道称为“UV1”,第二个通道通常称为“UV1”,依此类推,直至“UV7”。通道分别映射到着色器在 GPU 上运行的程序。更多信息
请参阅术语表语义学TEXCOORD0,TEXCOORD1,依此类推,直到TEXCOORD7.
默认情况下,Unity 使用第一个通道 (UV0) 来存储常规纹理的 UV,例如漫反射贴图和镜面反射贴图。Unity 可以使用第二个通道 (UV1) 来存储烘焙lightmap:预渲染的纹理,包含光源对场景中静态对象的效果。光照贴图覆盖在场景几何体之上,以创建光照效果。更多信息
请参阅术语表UV,以及用于存储实时光照贴图UV的输入数据的第三个通道(UV2)。有关光照贴图 UV 以及 Unity 如何使用这些通道的更多信息,请参阅光照贴图 UV。
所有八个纹理坐标属性都是可选的。
在Mesh类,访问此数据的最简单方法是使用 Mesh.GetUVs 和 Mesh.SetUVs。Unity 还将此数据存储在以下属性中:Mesh.uv、Mesh.uv2、Mesh.uv3 等,最高可达 Mesh.uv8。请注意,这些较旧的属性效率较低且用户友好。
顶点颜色表示顶点的基色(如果有)。
此颜色独立于网格体可能使用的任何纹理而存在。
此顶点属性是可选的。
在Mesh类,访问此数据的最简单方法是使用 Mesh.GetColors 和 Mesh.SetColors。Unity 还将此数据存储在 Mesh.colors 中,但这个较旧的属性效率较低且用户友好。
在蒙皮网格体中,混合索引指示哪些骨骼影响顶点,骨骼权重描述这些骨骼对顶点的影响程度。
在 Unity 中,这些顶点属性存储在一起。
Unity 使用混合索引和骨骼权重根据蒙皮网格体的骨架移动来变形蒙皮网格体。有关更多信息,请参阅蒙皮网格渲染器。
这些顶点属性是蒙皮网格体所必需的。
过去,Unity 最多只允许 4 个骨骼影响一个顶点。它将此数据存储在 BoneWeight 结构体的 Mesh.boneWeights 数组中。现在,Unity 允许多达 256 个骨骼影响一个顶点。它将此数据存储在 BoneWeight1 结构体中,你可以使用 Mesh.GetAllBoneWeights 和 Mesh.SetBoneWeights 访问它。有关更多信息,请阅读链接的 API 文档。