Нормаль (т.е. вектор, перпендикулярный плоскости) часто необходим в процессе создания меша и также может быть полезен при отслеживании пути и других ситуациях. Имея три точки на плоскости, скажем угловые точки треугольника меша, легко вычислить нормаль. Выберите любую из трех точек и затем вычтите ее из каждой из двух остальных точек, чтобы получить два вектора:-
var a: Vector3;
var b: Vector3;
var c: Vector3;
var side1: Vector3 = b - a;
var side2: Vector3 = c - a;
Векторное произведение этих векторов даст третий вектор, перпендикулярный к искомой поверхности. Для определения порядка, в котором два вектора должны быть использованы в функции векторного произведения, можно использовать “правило левой руки”. Если смотреть сверху на поверхность (из которой должна выходить нормаль), первый вектор должен следовать по часовой стрелке за вторым:-
var perp: Vector3 = Vector3.Cross(side1, side2);
Для мешей нормаль должна быть нормализована. Это может быть сделано с помощью свойства normalized, но есть другая хитрость, которая иногда может быть полезна. Вы можете нормализовать перпендикуляр, разделив его на его же длину:-
var perpLength = perp.magnitude;
perp /= perpLength;
Оказывается, площадь треугольника равна perpLength / 2. Это полезно, если вам нужно найти площадь поверхности всего меша, или вы хотите выбрать треугольники случайно, с вероятностью на основе их относительной площади. Результат будет направлен в противоположную сторону, если поменять порядок исходных векторов.