using UnityEngine; [ExecuteInEditMode] public class ShowMeshNormals : MonoBehaviour { public float length = 0.0125f; SkinnedMeshRenderer smr; Mesh bakedMesh; void OnDrawGizmos() { if (!smr) smr = GetComponent(); if (!bakedMesh) bakedMesh = new Mesh(); smr.BakeMesh(bakedMesh); var vertices = bakedMesh.vertices; var normals = bakedMesh.normals; for (int i = 0; i < vertices.Length; i++) { Vector3 worldPos = transform.TransformPoint(vertices[i]); Vector3 worldNormal = transform.TransformDirection(normals[i]); Gizmos.color = new Color( worldNormal.normalized.x * 0.5f + 0.5f, worldNormal.normalized.y * 0.5f + 0.5f, worldNormal.normalized.z * 0.5f + 0.5f ); Gizmos.DrawLine(worldPos, worldPos + worldNormal * length); } } }