版本:Unity 6 (6000.0)
语言英语
  • C#

Mesh.RecalculateTangents

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读我们用户的每一条建议更改,并在合适的地方进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请在几分钟后<a>重试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public void RecalculateTangents(Rendering.MeshUpdateFlags flags = MeshUpdateFlags.Default);

参数

flags 控制函数行为的标志,参见 MeshUpdateFlags

描述

使用法线和纹理坐标重新计算网格的切线。

修改网格的顶点和法线后,如果使用引用法线贴图的着色器渲染网格,则需要更新切线。Unity 使用网格的顶点位置、法线和纹理坐标计算切线。

RecalculateTangents 向顶点添加一个切线属性,或将切线属性更改为正确的格式。属性的维度为 4,并使用 VertexAttributeFormat.Float32 格式。即使网格没有顶点,RecalculateTangents 也会添加该属性。

using UnityEngine;

public class Example : MonoBehaviour { void Start() { Mesh mesh = GetComponent<MeshFilter>().mesh; mesh.RecalculateTangents(); } }

如果格式不同,RecalculateTangents 会将网格顶点位置、法线和 UV0 数据转换为 VertexAttributeFormat.Float32 格式。

如果网格没有法线、纹理坐标或三角形,则所有切线都将设置为 (1,0,0,1) 向量。

其他资源:RecalculateNormals