任何渲染多个实体切割平面的方法?
Posted
技术标签:
【中文标题】任何渲染多个实体切割平面的方法?【英文标题】:Any way of rendering multiple solid cut planes? 【发布时间】:2015-07-06 08:12:35 【问题描述】:有没有办法在 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?
【问题讨论】:
只是我个人的看法,但我更喜欢在 CPU 上对网格进行“切片”操作(返回新网格),而不是尝试在 GPU 上使用“效果”。从长远来看,它将更加通用和灵活。 我同意罗宾逊的观点。您正在谈论的解决方案是“渲染技巧”。如果您没有要渲染的几何图形(因为它在两侧都被切割),则不能使用渲染技巧。最好的方法是在网格被切割的地方生成额外的几何图形。该算法应该非常简单。 是的,我会考虑将其作为第二个选项。该算法可能没有那么复杂,但我担心与某些“渲染技巧”相比,实施起来会非常耗时。 【参考方案1】:是的,可以使用模板缓冲区技术渲染任意 CSG 树。这里给出了很好的介绍:ftp://ftp.sgi.com/opengl/contrib/blythe/advanced99/notes/node22.html
【讨论】:
谢谢!我还没有实现算法,但它看起来像我要求的那样。以上是关于任何渲染多个实体切割平面的方法?的主要内容,如果未能解决你的问题,请参考以下文章
react FileReader读取TXT文件并保存 split切割字符串 map()分别渲染切割后的数组内的所有字符串