创建Voronoi网格的管道


10

我想实现一个Maya插件(此问题独立于Maya)以创建3D Voronoi模式,例如

在此处输入图片说明

我只知道我必须从点采样开始(我实现了本文描述的自适应泊松采样算法)。

我认为,从这些观点出发,我应该使用Voronoi创建网格的3D线(我尝试使用(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 2015年

根据建议添加了示例!
Jiloc 2015年

泊松采样的点是正确的。生成它们的算法是经过完全单元测试的,并且您在屏幕上看到的是在采样点中心以我在调用Voronoi(points)之前通过编程方式创建的球形!我担心我没有遵循正确的路径,或者我以错误的方式处理Voronoi结果
Jiloc 2015年

您显示的图像在2d功能上完成了voronoi。
joojaa 2015年

@joojaa从示例图像中,我期望2D表面上的Voronoi单元边缘是必需的(给出连接球体表面上的点的线段的集合,而不是3D中给出的平面截面的集合) 。但是,scipy.spatial.Voronoi似乎是为N维空间而不是嵌入其中的曲面设计的。我无法立即看到如何将其用于约束到2D曲面的3D点。
trichoplax

Answers:


1

http://www.cs.sandia.gov/~samitch/papers/vor_final.pdf在任何编程语言中都没有计算机算法,但是您应该能够通过一些“平面反射”和来自以上链接。


欢迎使用ComputerGraphics.SE!在Stack Exchange自包含的容器中做出答案通常是个好主意(例如,如果链接断开了,并且通常情况下,这样人们就不必跟随链接就能知道答案是否对他们有用)。您可能希望通过包含论文内容的简短摘要来改善答案。
马丁·恩德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.