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

时间:2015-07-06 08:12:35

标签: algorithm opengl 3d glsl mesh

有没有办法在OpenGL中渲染多个实心剪切平面?

用坚固的#34;切割飞机"我指的是一个切割网格部分并用例如纯色填充孔的平面。这给人的印象是网格是实心的,而不是只有一个外壳。

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

但是,我无法弄清楚如何扩展算法以使用多个切割平面。像这种情况例如:

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

     d

切割飞机' a'删除部分' A'来自网格。 切割飞机' b'删除部分' B'来自网格。 网格的剩余可见部分,' C'从地点呈现' d'在e - d方向(看着' e')。

问题是不会为C' C'内部的像素生成片段。因为切割平面都会移除入口和出口点。

我真的希望避免切片实际网格,因为切割平面可以每帧更改位置。

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

1 个答案:

答案 0 :(得分:1)

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