35 lines
971 B
C#
35 lines
971 B
C#
using UnityEngine;
|
|
|
|
[ExecuteInEditMode]
|
|
public class ShowMeshNormals : MonoBehaviour
|
|
{
|
|
public float length = 0.0125f;
|
|
|
|
SkinnedMeshRenderer smr;
|
|
Mesh bakedMesh;
|
|
|
|
void OnDrawGizmos()
|
|
{
|
|
if (!smr)
|
|
smr = GetComponent<SkinnedMeshRenderer>();
|
|
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);
|
|
}
|
|
}
|
|
} |