Я понимаю, что такое намотка, и как он используется для отбраковки задней поверхности.Порядок намотки вершин
Однако я не совсем уверен, как 3D-моделирующие программы, такие как Blender, могут взять произвольную группу треугольников и правильно направить их все.
Я попытался прибегая к помощи ответ, и это было лучшее, что я нашел:
http://www.gamedev.net/topic/550481-vertex-winding-order-counter-clockwise-oder-vertex---algorithm/
В принципе, для каждого треугольника, вы найдете его центр (барицентр быть точным), вычислить вектор нормали из этого треугольника , который дает вам луч. Вы берете этот луч и проверяете его против пересечения с любым другим треугольником. Если это четное число, то ваша обмотка правильная, если это нечетное число, ваша обмотка неверна (я полагаю, это зависит от того, как именно вы создали нормальный вектор, но каким-то образом вы используете стратегию «нечетные/четные»). В любом случае, это означает, что весь этот процесс, как правило, O (n^2). Если у вас 1000 треугольников, то для каждого треугольника вы должны проверить его на пересечение для 999 других треугольников. Существует ли менее очевидный способ правильного ветвления вершин, что более эффективно?
Я не уверен, что вы подразумеваете под произвольной группой треугольников. Как правило, треугольники создаются из сетки, которые начинаются с правильного направления намотки. –
Да, когда вы экспортируете сетку для какой-либо системы рендеринга, она имеет правильный порядок намотки. Но как этот 3d-модельер сначала определит правильный порядок намотки? – newprogrammer