问题标签 [implicit-surface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1611 浏览

math - 带有行进立方体的隐式曲面上的 CSG 操作

我用行进立方体渲染等值面,(或者可能是行进正方形,因为这是 2D),我想做集合操作,比如设置差异、交集和联合。我认为这很容易实现,只需在来自两个不同隐式曲面的两个顶点标量之间进行选择,但事实并非如此。

对于我的初始测试,我尝试了两个球体圆圈,并设置了操作差异。即A - B。一个圆圈在移动,另一个圆圈是静止的。这是我在选择顶点标量以及将角顶点分类为内部或外部时尝试的方法。代码是用 C++ 编写的。OpenGL 用于渲染,但这并不重要。没有任何CSG操作的正常渲染确实给出了预期的结果。



这给了我奇怪的锯齿:(来源:mechcore.net 看起来 CSG 操作是在没有插值的情况下完成的。它只是“丢弃”整个三角形。我是否需要以其他方式进行插值,或组合顶点标量值?我很想得到一些帮助。完整的测试用例可以在这里下载这里


编辑:基本上,我对行进广场的实施效果很好。这是我的标量场被破坏了,我想知道正确的方法会是什么样子。最好我正在寻找一种通用方法来实现我上面讨论的三个集合操作,用于通常的基元(圆形、矩形/正方形、平面)

编辑 2:以下是实施回答者白皮书后的一些新图像:

1.Difference
2.Intersection
3.Union

编辑 3:我也在 3D 中实现了这个,带有适当的阴影/照明:

1.大球和小球的区别 2.中心的大球和小球的区别
,被两边的两个平面夹住,然后与中心的球结合。
3.两个气缸之间的联合。

0 投票
1 回答
2221 浏览

algorithm - 自适应隐式曲面多边形化

由于Bloomenthal,我一直在使用一种较旧的隐式曲面算法,如发现here,基本上是基于四面体的算法。这工作得相当好,但有一个缺点。由于它使用固定网格,它要么浪费多边形,要么忽略细节,具体取决于所选的网格大小。

所以我的问题是,我有哪些改进方案?是否有任何可免费获得(来源或良好描述)的隐式曲面算法更能适应模型的曲率?我缺少任何选项吗?

到目前为止,我发现了一篇看起来很有希望的论文,将不胜感激。

0 投票
0 回答
328 浏览

c++ - 用于表面重建的自适应 3D 网格

我已经实现了http://physbam.stanford.edu/~fedkiw/papers/stanford2001-03.pdf中描述的算法,以从 3D 无组织数据集(点云)执行表面重建。该方法的主要特点是在 3D 网格上隐式表示表面(也称为体积表示)并求解偏微分方程以使表面适合数据。我编写的代码(C++)运行良好,并且给了我很好的结果。但这太天真了,因为我计算迭代通过 3D 网格的每个点的解决方案(因此对于每个维度 128 个点的网格,我有超过 200 万个点)。

因为,我是这个领域的新手,如果有人可以为实现自适应网格(可能像八叉树)或任何提高代码效率的策略提供一些参考,我将非常高兴!

谢谢。

0 投票
1 回答
85 浏览

mesh - 如何使用 CGAL 为水平集表面的一部分生成网格?

这是一个关于CGAL 中的3D Surface Mesh Generation工具的问题。

根据文档,我需要提供要以隐式形式进行网格划分的曲面作为零水平集曲面。这似乎限制了输入表面的多样性。

问题

在我的用例中,我需要为一个更大的“父”流形隐式表面的一个小“区域”生成网格。“区域”本身是非流形的,因为它不包含一个卷。

在此处输入图像描述

我能想到的解决这个问题的方法是:

  • 网格化整个“父”表面,然后
  • 提取与所需“区域”对应的网格。

但是,出于性能原因,我想避免这种情况。

我应该如何处理这个?CGAL 中是否有任何其他模块可以帮助我实现这一目标?