algorithm - 任何渲染多个实体切割平面的方法?

标签 algorithm opengl 3d glsl mesh

有什么方法可以在 OpenGL 中渲染多个实体剖切面吗?

对于纯色“切面”,我的意思是切掉部分网格并用例如纯色填充孔的平面。这给人的印象是网格是实心的,而不仅仅是一个壳。

使用单个切割平面渲染它的经典方法是拒绝平面不可见侧的样本,然后使用模板缓冲区计算剩余网格中正面和背面的数量。

但是,我不知道如何扩展该算法以处理多个切割平面。例如这种情况:

     e
    ___
   /   \
  |  A  |
  |     |
----------- a
  |  C  |
  |     |
----------- b
  |  B  |
  |     |
   \___/

     d

切割平面“a”从网格中移除部分“A”。 切割平面“b”从网格中移除部分“B”。 网格的剩余可见部分“C”从位置“d”沿 e - d 方向(看“e”)呈现。

问题是“C”内的像素不会生成任何片段,因为切面删除了入口点和导出点。

我真的很想避免切割实际的网格,因为切割平面可以在每一帧改变位置。

我认为这是他们几年前在这里提出的同一个问题: How to render multiple solid cut planes?

最佳答案

是的,可以使用模板缓冲技术渲染任意 CSG 树。这里有一个很好的介绍:ftp://ftp.sgi.com/opengl/contrib/blythe/advanced99/notes/node22.html

关于algorithm - 任何渲染多个实体切割平面的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31240755/

相关文章:

algorithm - 功能替代品?

c++ - glfw 不创建窗口

javascript - 在 python 中使用 Bokeh 实现完整的 3d 散点图

python - 使用 mlab.surf() 将 mask 与 Mayavi 3d 曲面图一起使用

java - 时间复杂度说明

python - 以下伪代码的运行时复杂度(大 O)是多少?

c++ - 多个网格或单个网格中的多个对象?

java - glReadPixels() 返回零数组

从驻点到任意点的 3D 三角变换

algorithm - 有根 k-ary 树的直径