问题标签 [csg]

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 投票
4 回答
9134 浏览

graphics - 贝塞尔剪裁

我正在尝试找到/制作一种算法来计算两个任意填充的 2D 对象的交集(一个新的填充对象)。对象使用直线或三次贝塞尔曲线定义,并且可能有孔或自相交。我知道一些现有的算法对多边形做同样的事情,这里列出。但是,我想支持贝塞尔曲线而不将它们细分为多边形,并且在没有交叉点的区域中,输出应该具有与输入大致相同的控制点。

这是一个交互式程序来做一些 CSG,但剪辑不需要是实时的。我已经搜索了一段时间,但没有找到好的起点。

0 投票
2 回答
509 浏览

floating-point - POVray:如何可靠地创建仅接触表面的对象的漂亮合并?

我在做什么

我有一个场景,它通过算法绘制一个prism具有六边形横截面的 a 和围绕中心一个的 n 层这样的棱镜,这样所有的棱镜一起形成一个更大的六边形形状。

现在,每一排棱镜与下一排棱镜的位移是 sqrt(3)/2 的倍数(因为一个棱镜的尺寸是 <1,sqrt(3)>,因为 sin(120/2°) = sqrt(3 )/2)。

我想,与棱镜尺寸相关的结果位置的浮点值并不总是以在物体之间产生零间隙的方式完全一致。因此,当我将整个东西包裹在 a 中merge并为其分配透明的玻璃材料时,我不会得到平滑、统一的形状。根据 n 的值,我会在合并对象内部的边缘或某些表面的阴影处或两者兼而有之处得到抖动的怪异。

这是我的代码开头的注释块中的一个片段,它解释了 ASCII 艺术中的场景:

整个代码太长,无法在此处粘贴,但可在此处找到。读起来可能也很痛苦,因为我是个糟糕的编码员,而且 POVray 没有#for循环。

我的问题

  • 在合并仅接触表面但不重叠的数学定位对象时,如何考虑浮点值的不可预测性和不精确性?
  • 这甚至应该按照我在 POVray 中想要的方式工作吗?
  • 我在这里做一些非常愚蠢的事情吗?
0 投票
1 回答
759 浏览

c - 使用 CSG 树进行射线投射

我正在做一个项目,我必须在其中执行光线投射并使用 CSG 树。但我不知道如何使用 CSG 树或为这个项目实施它。我可以进行光线投射并给出最终答案。我的问题实际上是如何实现树并链接它。

0 投票
1 回答
5884 浏览

c++ - 如何在 OpenGL / C++ 中创建构造实体几何

我想用 openGL 模版出一些对象。

我尝试了这么多小时来实现一个简单的布尔运算,但我不明白。

我想要这样的东西:

图像

0 投票
1 回答
1873 浏览

three.js - 在通过 CSG.js 进程后将纹理添加到 three.js 形状

我同时使用 three.js 和 CSG.js 来制作一个新的形状。

不是最好的代码——最重要的几行是

我正在尝试将纹理添加到已转换为 CSG 的切割形状,然后返回到三个。每次我这样做时,我都会从 three.js 中得到一个随机错误。我厌倦了将 MeshBasicMaterial 更改为“MeshPhongMaterial”和“MeshLambertMaterial”,仍然是同样的错误。

所以我的问题是,我做错了什么还是不可能?

0 投票
2 回答
3100 浏览

opengl - OpenGL 中的 CSG 建模

我正在使用 OpenGL 处理构造实体几何 (CSG) 建模。

我想知道如何实现二进制操作。我读了一些关于Gold Feather Algorithm的东西,我知道OpenCSG,但是在阅读了它的源代码之后,我发现它太复杂了,无法理解。我只需要一个简单的最短 OpenGL 示例如何实现它。

只要易于实现,算法就没有限制。

0 投票
1 回答
2311 浏览

javascript - 用three.js和CSG设置位置

当我使用它作为一个立方体和一个球体的代码时,它会切掉这个立方体的某些部分:

我现在如何设置立方体的位置?我需要像 cube.CSG.position.set 这样的东西还是 CSG 库有一个特殊的方法可以使用?

谢谢!

0 投票
4 回答
5238 浏览

three.js - 如何在 Three.js 中构造一个空心圆柱体

我在 Three.js 中构建空心圆柱体时遇到了困难。

我应该使用 CSG 还是通过将顶点缝合在一起来构建它?

0 投票
1 回答
586 浏览

geometry - 两个剖面的交点

我正在尝试找到一种算法来使用两个(或更多)剖面切割 3D 对象。仅应在两个剖面都被切割的地方切割对象。因此,考虑以下由两个剖面相交的 abcd 矩形:s0 和 s1;s1 向右切,s0 向顶部切。我想要的是得到最终的 ajikcd 形状。

这是一个非常简单的例子,但我希望它能清楚地说明我想要完成的工作。此外,这应该在 3D 中完成。

有谁知道这样做的任何库,或这样做的算法?这似乎是一个重要的问题,一定有人在我之前解决了!:)

我必须补充一点,我知道如何做基础知识(平面与面/平面/边缘的相交)。我看不到是否有一种聪明的方法来解决所有可能的情况(在这个情况下,必须添加两个面,但在其他一些情况下可能只创建一个面,等等),或者你是否应该处理它们分别地。

我应该补充的另一件事是我不关心渲染部分,我知道如何使用带有剪裁平面的 OpenGL 来做到这一点。我想要的是能够计算对象的新拓扑。

0 投票
1 回答
644 浏览

three.js - 如何删除 CubeGeometry 的一部分?

目前我正在使用 ThreeCSG/CSG 从一个更大的立方体中减去一个小立方体。这很好用,但只是它的外观不会改变实际的几何形状。因此,当在另一个立方体上使用 PhysiJS(物理引擎)时,它不会掉进洞里,而是像往常一样。点击演示

有什么办法可以真正从 CubeGeometry 中删除一个部分,以便对象可以落入其中 - 不仅仅是为了显示目的?谢谢!