我可以通过使用距离函数进行建模来轻松地建立模型,但是我需要从中进行网格划分,因此我决定使用体素化并为我的带符号距离场圆环制作三角形,就像这个视频一样。但是我不知道该怎么做。 br />您可以在我的github上看到这个圆环。


更新

Snail SDF
我找到了一个名为SDF Mesher的软件。是我想要但未发布的东西。
aiekick instagram,
aiekick twitter
他将着色器转换为网格吗?
aiekick sketchfab

总之,我需要一种将sdf转换为网格的方法。例如:
输入:SDF模型
输出:网格

评论

一种更易于实现的算法是Marching Cubes。尽管它会产生比圆环双重轮廓更糟糕的结果。实施行进立方体后,可能更容易理解双重轮廓。或者在VTK或CGAL之类的库中使用它的千种实现之一。同样,在2d中也很容易理解行进立方体(称为行进方格)。

@AndrewWilson是的,正确的多维数据集是解决方案,但我不知道要在Raymarching中实现此算法

哦,我想我明白你的意思了。但是射线行进与多边形的生成和使用完全无关。行进立方体可从3d图像(体素网格/标量场)生成多边形。您应该创建所需分辨率的3d图像,并在图像的每个点上评估带符号距离函数,以创建带符号距离字段。然后使用0作为您的阈值(即,表面为0)。

@AndrewWilson谢谢你能告诉我Aiekick如何实现Sdf网格化吗?

@AndrewWilson,请观看由2D平面生成的视频sdf吗?!

#1 楼

使用CGAL,您可以通过隐式函数生成网格。 https://doc.cgal.org/latest/Mesh_3/index.html

搜索“隐式”。有一个根据球的函数生成网格的示例。

评论


$ \ begingroup $
我不需要这个。我想要的是一台扫描我的Raymarching对象然后从中创建网格的扫描仪。
$ \ endgroup $
–塞里(Morteza Kamali)眼
18年4月16日在5:28

#2 楼

经过大量研究,我弄清楚了它是如何工作的:

他在glsl中定义了三个缓冲区,在每个fbo附件中,我得到了3个sampler2D用于多通道。参数是(buffer:file:id)file是目标着色器,这里我们希望当前没有任何文件。 id是fbo附件(0到7)。


然后他可以轻松地制作网格:



评论


$ \ begingroup $
这是什么软件?现在可以使用吗?
$ \ endgroup $
–user2153553
18/09/12在2:35

$ \ begingroup $
@ user2153553该软件由Twitter上的人员制作我不知道现在可以使用,但是您可以询问有关该软件的更多信息
$ \ endgroup $
–塞里(Morteza Kamali)眼
18-09-12在7:28



$ \ begingroup $
是的,实际上我也一直在关注那个家伙,他说很快就会来。
$ \ endgroup $
–user2153553
18年9月13日在0:10

$ \ begingroup $
确实确实非常有趣的软件,看来作者将大量出售它
$ \ endgroup $
–user4801
19年6月19日在8:40