Разделение 3D-модели по углу среза - PullRequest
1 голос
/ 15 октября 2010

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

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

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

Ответы [ 2 ]

1 голос
/ 15 октября 2010

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

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

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

ax + by + cz + d

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

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

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

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

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

1 голос
/ 15 октября 2010

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

...