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


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

Изображения, которые вы показываете, сделали voronoi на 2d функции.
Джуджаа

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

Ответы:


1

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


Добро пожаловать в ComputerGraphics.SE! Обычно хорошая идея сделать ответы на Stack Exchange самодостаточными (например, в случае, если ссылки не работают, а также в целом, чтобы людям не приходилось переходить по ссылкам, чтобы иметь возможность определить, полезен ли им ответ). Возможно, вы захотите улучшить свой ответ, включив краткое резюме содержания статьи.
Мартин Эндер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.