Во время рисования через Handles/Gizmos/GL вы можете столкнуться с проблемой, которая заключается в том, что нарисованные треугольники и линии начинают "играть" на находящемся рядом меше.
Помимо этого, эффект не статичен, линии начинают прыгать при изменении параметров обзора камеры.
Выглядит это примерно так:
Помимо этого, эффект не статичен, линии начинают прыгать при изменении параметров обзора камеры.
Выглядит это примерно так:
Решить данную проблему можно двумя разными подходами - на уровне шейдеров и на уровне кода самого рисования. Я предлагаю вам решать проблему через код, так как в этом случае вы имеете быстрый способ изменения приоритета рисования объектов.
Наиболее тривиальным решением будет пропустить все точки через метод, немного приближающий их к камере.
Например:
Например:
public static Vector3 CloserCamera(Vector3 point, int order)
{
//matrix - Gizmos.matrix / Handles.matrix в зависимости от контекста
var cameraLocalPosition = matrix.inverse.MultiplyPoint(Camera.current.transform.position);
var direction = (cameraLocalPosition - point).normalized;
return point + direction * (.001f*order);
}
Мы можем выстраивать order по своему усмотрению, в зависимости от того, какой объект хотим видеть ближе.
Плюс данного способа в том, что "смещение" не видно под любым углом обзора, а объект полностью сохраняет свои пропорции.
Плюс данного способа в том, что "смещение" не видно под любым углом обзора, а объект полностью сохраняет свои пропорции.
Если нормали от трианглов то на впуклых участках меша это наоборот "скроет" линии, на выпуклых может показать две.
Тут же еще какой плюс - с какой стороны не посмотри на меш, он все время будет правильно отображаться.