У меня есть приложение для 3D-моделирования. Сейчас я рисую сетки с двух сторон, но я бы хотел переключиться на односторонние, когда объект закрыт.
Если полигональная сетка замкнута (без граничных ребер / полностью периодическая), кажется, что я всегда должен быть в состоянии определить, перевернут ли объект в данный момент, и автоматически исправить.
Быть перевернутым означает, что мои нормали указывают на объект, а не на объект. Переворот является результатом несоответствия между моими правилами намотки и текущими настройками лицевой стороны, но я вычисляю нормали непосредственно из геометрии, поэтому просмотр нормалей является простым способом его обнаружения.
Одна вещь, о которой я думал, это взять ограничивающий прямоугольник, найти самую высокую точку и посмотреть, нет ли ее нормальных точек вверх или вниз - если она внизу, то объект переворачивается.
Но похоже, что это решение может быть подвержено ошибкам с вырожденной геометрией или ошибкам с плавающей запятой, поскольку я смотрю только на одну точку. Полагаю, я мог бы получить все 6 экстентов, выровненных по оси, но это кажется немного лучшим клуджем, а не правильным решением.
Есть ли надежный и простой способ сделать это? Надежный и тяжелый тоже сработает ..:)