Во время рисования через 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 по своему усмотрению, в зависимости от того, какой объект хотим видеть ближе.
Плюс данного способа в том, что "смещение" не видно под любым углом обзора, а объект полностью сохраняет свои пропорции.
`
ОЖИДАНИЕ РЕКЛАМЫ...
27
И, кстати, вопрос после написанной заметки - помнится у такого эффекта есть даже специальное название. Кто помнит как это называется?
29
Devion, Z-Figthing
Если ты строишь эти линии поверх меша, то просто делай небольшое смещении по нормали
27
Если ты строишь эти линии поверх меша, то просто делай небольшое смещении по нормали
Так метод это и делает. Смещает по направлению к камере. А ты как предлагаешь? :)
Если нормали от трианглов то на впуклых участках меша это наоборот "скроет" линии, на выпуклых может показать две.
Тут же еще какой плюс - с какой стороны не посмотри на меш, он все время будет правильно отображаться.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.