English

10из22

HOUDINI: PCloud Shatter SOP

22 / 05 / 2009

Разбивалка геометрии на куски по методу Вороного. Идею алгоритма честно подтырил здесь . Там же можно почитать в чем заключается метод Вороного.

PCloudShatter SOP  имеет 2 входа. Первый — для геометрии, второй — для облака точек. Сколько подаем точек, столько и кусков в результате.

Гуще точки — меньше кусочки, реже точки — больше кусочки. Таким образом получаем вполне управляемое разбиение.

voronoy

 

На скриншоте ниже общий принцип работы с нодой. 

network

 

IsoOffset SOP генерит обьем из исходной геометрии, а Scatter SOP заполняет его облаком точек. Можно после IsoOffset SOP-а добавить VolumeVop, в котором сделать какой-нить процедурный 3д-шум на плотность обьема. Так мы получим менее равномерное распределение точек, а следовательно более разнообразные по размерам кусочки. А если нужен более точный контроль над размерами кусочков, то можно просто поудалять-подвигать некоторые точки вручную.

Ниже параметры PCloudShatter SOP-а:

parms

 

Во вложении тулза и пример использования (в примере нода залочена чтобы сценка быстрее открывалась). 

torus

 

История:

v1.0.1
  Добавил в пример RBD-симуляцию.

v1.0.2
  Примерчик подчистил и украсил :-)

v1.1.0
  1) Пофиксил баг: иногда создавалась группа с более чем одним куском.
  2) Оптимизировал алгоритм. Теперь большая часть галок при изменении состояния не прокручивает заново весь цикл разбиения. То есть реакция на измения гораздо быстрее.
  3) Добавил возможность генерации атрибута size, в котором содержится размер куска. А точнее — диаметр описанной сферы.
  4) Добавил возможность создавать жесткие грани за счет вертекс нормалей (эффект виден только при рендере).

v1.1.1
 Добавил галку и рульку max iteration, для ограничения кол-ва итераций на каждый кусок. По-умолчанию итерации определяются автоматом что чуть медленнее, но гарантирует отсутствие артефактов. Если указывать ручками  — возможны проникновения кусков друг в друга, но само разбиение происходит быстрее.

v1.1.2
 Пофиксил неправильное формирование группы inside (глюк появился в версии 1.1.0)

v1.2.0
 1) Немного модифицировал интерфейс. Добавил возможность генерации атрибута centroid и группы outside.
 2) Добавил альтернативный вариант разбиения. Суть его в том что изначально разбивается не входная геометрия, а ее баунд-бокс. А затем каждый полученный кусочек булеаном интерсектится с входной геометрией. Такой подход дает большой прирост в скорости генерации, особенно на тяжелой геометрии, так как непосредственно в цикле разбиения учавствует очень легкий баунд-бокс. Врубается этот метод галкой Alternate Method (по-умолчанию галка врублена).
 3) Оптимизация и мелкие баг-фиксы.

v1.3
  Добавил рульку Jagged Edges, которая коцает края кусков. Пока бета, но работает. Хоть иногда и с артефактами.

v1.3.1
  Исправил баг: Jagged Edges не работал при отключенной галке Create Inside Surface.

Скачать: PCloud_Shatter_v1.3.1.zip