Трубопровод для создания Вороного Меша

10

Я хотел бы реализовать плагин Maya (этот вопрос не зависит от Maya) для создания 3D-моделей Вороного, что-то вроде

введите описание изображения здесь

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

Я подумал, что из этих точек я должен создать 3D-проволочную сетку с применением Voronoi (я пытался использовать (Python) scipy.spatial.Voronoi, но результат оказался не таким, как я ожидал).

Я что-то упустил? Кто-нибудь может предложить правильный конвейер и алгоритмы, которые я должен реализовать для создания таких шаблонов?

[РЕДАКТИРОВАТЬ] Вот несколько примеров того, как я получаю обработку результата, который я получаю из scipy.spatial.Voronoi, как это (как предложено здесь ):

vor = Voronoi(points)
for vpair in vor.ridge_vertices:
    for i in range(len(vpair) - 1):
        if all(x >= 0 for x in vpair):
            v0 = vor.vertices[vpair[i]]
            v1 = vor.vertices[vpair[i+1]]
            create_line(v0.tolist(), v1.tolist())

Серые вершины - это выбранные точки (исходная форма была простой сферой): введите описание изображения здесь

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

Jiloc
источник
Спасибо за ответ. Я собираюсь повторить то, что я сделал, и опубликовать экран в соответствии с предложением. В любом случае, окончательная цель этого вопроса не в том, чтобы отладить мой код, а в том, чтобы понять, правильно ли то, что я делаю, или есть другие шаги, которые мне не хватает в промежутке!
Джилок
добавлены примеры как предложено!
Джилок
Точки из отбора Пуассона верны. Алгоритм, который их генерирует, полностью тестируется модулем, и те, которые вы видите на экранах, представляют собой сферы с центром в точке выборки, которую я программно создал перед вызовом Вороного (точки)! Меня беспокоит, что я не иду по правильному пути или неправильно отношусь к результату Вороного
Jiloc
Изображения, которые вы показываете, сделали voronoi на 2d функции.
Джуджаа
@joojaa Из примеров изображений я ожидал, что края ячейки Вороного на 2D-поверхности были тем, что требовалось (чтобы получить набор отрезков линий, соединяющих точки на поверхности сферы, а не набор плоских сечений, которые будут заданы в 3D) , Однако scipy.spatial.Voronoi, похоже, предназначен для N пространств, а не для поверхностей, встроенных в них. Я не могу сразу увидеть, как это будет использоваться для 3D-точек, ограниченных 2D-поверхностью.
Трихоплакс

Ответы:

1

http://www.cs.sandia.gov/~samitch/papers/vor_final.pdf В любом языке программирования нет компьютерного алгоритма, но вы должны быть в состоянии легко воспроизвести его с помощью некоторых плоских отражений и алгоритмов из ссылка выше.

Zeitaku Enjin
источник
Добро пожаловать в ComputerGraphics.SE! Обычно хорошая идея сделать ответы на Stack Exchange самодостаточными (например, в случае, если ссылки не работают, а также в целом, чтобы людям не приходилось переходить по ссылкам, чтобы иметь возможность определить, полезен ли им ответ). Возможно, вы захотите улучшить свой ответ, включив краткое резюме содержания статьи.
Мартин Эндер