「毎日Unity」の技術ブログ

開発で役立つ情報を発信する

【UnityC#】オブジェクトの法線を可視化する方法

オブジェクトの法線を可視化する方法をメモ。

[ 方法 ]

以下のコードを法線を可視化したいオブジェクトにアタッチします。

using UnityEngine;

[ExecuteInEditMode]

public class script : MonoBehaviour
{
    private float length = 1;

    private void Update() 
    {
        MeshFilter meshFilt = GetComponent<MeshFilter>();
        
        Mesh mesh = meshFilt.sharedMesh;

        Vector3[] localVerts = mesh.vertices;
        Vector3[] localNormals = mesh.normals;
        
        for (int i = 0; i < localVerts.Length; i++)
        {
            Vector3 localVert = localVerts[i];
            Vector3 localNormal = localNormals[i];

            Vector3 worldVert = transform.TransformPoint(localVert);
            Vector3 worldNormal = transform.TransformDirection(localNormal);

            Debug.DrawLine(worldVert, worldVert + worldNormal * length, Color.red);
        }
    }
}

[ 関連記事 ]