Hyluss

[Unity] TangentSpaceVisualizer

Sep 6th, 2019
604
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.09 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class TangentSpaceVisualizer : MonoBehaviour
  6. {
  7.     public float offset = 0.01f;
  8.     public float scale = 0.1f;
  9.  
  10.  
  11.     void OnDrawGizmos()
  12.     {
  13.         MeshFilter filter = GetComponent<MeshFilter>();
  14.         if (filter)
  15.         {
  16.             Mesh mesh = filter.sharedMesh;
  17.             if (mesh)
  18.             {
  19.                 ShowTangentSpace(mesh);
  20.             }
  21.         }
  22.     }
  23.  
  24.     void ShowTangentSpace(Mesh mesh)
  25.     {
  26.         Vector3[] vertices = mesh.vertices;
  27.         Vector3[] normals = mesh.normals;
  28.         for (int i = 0; i < vertices.Length; i++)
  29.         {
  30.             ShowTangentSpace(
  31.                              transform.TransformPoint(vertices[i]),
  32.                              transform.TransformDirection(normals[i])
  33.                             );
  34.         }
  35.     }
  36.  
  37.     void ShowTangentSpace(Vector3 vertex, Vector3 normal)
  38.     {
  39.         vertex += normal * offset;
  40.         Gizmos.color = Color.green;
  41.         Gizmos.DrawLine(vertex, vertex + normal * scale);
  42.     }
  43. }
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment