美術經常找程序撕逼,我做的頂點在max裏面只有xxx那麼少,但是程序說我再unity看到的就是有XXX那麼多。爲什麼?
因爲有些公共頂點直觀感受是一個,實際上是應該按照三角面的個數來計數的。
同樣。公共頂點的法線也不止一個。
不過,因爲normal是影響光照效果,即在光照下的凹凸平滑程度,所以用插值平均後的Normal代替所有的頂點的各自的normal可使低精度模型看起來平滑
顯示編輯器下顯示 normal 的腳本,參考
using UnityEngine;
[ExecuteInEditMode]
public class ShowNormals : MonoBehaviour {
public float length = 1;
public Vector3 bias;
// Update is called once per frame
void Update() {
// 獲取網格法線
Mesh mesh = GetComponent<MeshFilter>().sharedMesh;
Vector3[] vertices = mesh.vertices;
Vector3[] normals = mesh.normals;
for (var i = 0; i < normals.Length; i++)
{
Vector3 pos = vertices[i];
pos.x *= transform.localScale.x;
pos.y *= transform.localScale.y;
pos.z *= transform.localScale.z;
pos += transform.position + bias;
Debug.DrawLine
(
pos,
pos + normals[i] * length, Color.red);
}
}
}