2010-10-15 2 views
1

В 3D Max Studios я вспомнил, что есть функция (я не мог вспомнить название функции, извините), чтобы вырезать трехмерную модель на две части. Например, вы создаете сферу, затем вы разрезаете ее посередине, оставляя 2 полусферы. Теперь, как насчет человеческого тела? Представьте себе, что самурай разрезал врага на живот, теперь, когда модель противника станет 2-мя моделями: одна - верхняя часть от головы до живота, а другая - нижняя часть от живота до ног. Кроме того, чтобы игрок не видел внутри модели разреза, дополнительный полигон также должен быть помещен в обе модели. (и предпочтительно добавить текстуру крови в этом полигоне, чтобы создать впечатление, что это кровь внутри тела) Извините, если мое объяснение плохое, вы понимаете, что я пытаюсь сказать?Разбиение 3D-модели относительно угла разреза

В 3D Max Studios мы можем сделать выше. Теперь, 3D-программирование, что мне делать, если я хочу добиться чего-то подобного? Несомненно, один дешевый метод состоит в том, чтобы иметь предварительно разрезанные модели, но это нереально.

Я ищу способ вырезать модель на две части относительно угла разреза в реальном времени. Это возможно?

ответ

1

Вам необходимо два угла, чтобы представить «угол разреза» в 3-х измерениях.

В математике, вероятно, проще использовать точку и нормаль, определяя plane, который делит модель на две части.

Затем вы можете определить, какие части модели находятся на одной стороне плоскости, а какие - на другом. Просто подключите каждую точку в уравнение плоскости, например.

ax + by + cz + d 

..если результат> 0, то точка находится на одной стороне, а если < 0, то на другой.

Вы можете обнаружить треугольники, которые пересекают плоскость (потому что некоторые вершины находятся на одной стороне, а некоторые на другом) и разбивают их на несколько треугольников, чтобы сохранить «разрез» прямо, например.

 
     /\ 
    /\ 
    --------------- (cut) 
    /\ /\ 
/\/\ 
/ \/ \ 
    ------------ 

(Примечание вам нужно только два треугольника ниже линии - я не художник :)

Затем, если вы вырезать твердую модель в двух, и вам нужно «патч» над которое вы создали, вам нужно будет tessellate (или triangulate) точки на плоскости деления до create a new polygon. Это не всегда легко, особенно если полигон не convex.

1

Это называется clipping, существуют стандартные алгоритмы для обрезки полигонов в любом графическом тексте компьютерной графики.