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

Any way of rendering multiple solid cut planes?

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

使用纯色 "cut plane" 我的意思是切掉部分网格并用纯色填充孔的平面。这给人的印象是网格是实心的,而不仅仅是 shell.

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

但是,我无法弄清楚如何扩展算法以处理多个剖切面。例如这种情况:

     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