var barycentricCoordinate : Vector3
Description
The barycentric coordinate of the triangle we hit.
This lets you interpolate any of the vertex data along the 3 axes.
function Update () {
var hit : RaycastHit;
if (!
Physics.Raycast (
Camera.main.ScreenPointToRay(
Input.mousePosition), hit))
return;
var meshCollider = hit.collider as
MeshCollider;
if (meshCollider == null || meshCollider.sharedMesh == null)
return;
var mesh :
Mesh = meshCollider.sharedMesh;
var normals = mesh.normals;
var triangles = mesh.triangles;
var n0 = normals[triangles[hit.triangleIndex * 3 + 0]];
var n1 = normals[triangles[hit.triangleIndex * 3 + 1]];
var n2 = normals[triangles[hit.triangleIndex * 3 + 2]];
var baryCenter = hit.barycentricCoordinate;
var interpolatedNormal = n0 * baryCenter.x + n1 * baryCenter.y + n2 * baryCenter.z;
interpolatedNormal = interpolatedNormal.normalized;
var hitTransform :
Transform = hit.collider.transform;
interpolatedNormal = hitTransform.TransformDirection(interpolatedNormal);
Debug.DrawRay(hit.point, interpolatedNormal);
}