我正在渲染复杂的 3d 对象。这是一个带有类球体的简单示例:
接下来,我将剪切平面应用于这些对象并在该平面上渲染纹理,给人的印象是您正在查看对象的内部,就好像它被切片一样。例如:
问题是纹理的锯齿状边缘。它会伸出表面的边界。这是另一个你可以看到它突出的角度。表面和纹理都来自相同的源数据,但表面经过平滑处理,并且比纹理具有更高的分辨率。
我想要的是能够以某种方式剪辑纹理,使其永远不会超出表面的边界。另外,我不想简单地缩小纹理,因为虽然这可能会阻止它粘在外面,但它会在纹理边缘和表面边缘之间产生内部间隙。我宁愿纹理有点太大,把它剪掉,使它与表面边缘齐平。
这就是我所在的位置:
我认为第一步是定义平面和曲面的交点。所以现在我有了它,作为线段的有序列表。但是,我不确定如何处理这些信息(或者这是否是最好的方法)。
我一直在阅读模板缓冲区。一种方法可能是将相交线转换为 2d 形状并将其绘制到模板缓冲区中。然后在绘制纹理时应用它。(虽然我认为这是很多工作,因为形状可能很复杂。)
我想知道我是否可以以某种方式使用已经绘制的表面(结合模板缓冲区或其他技术)以某种方式剪辑纹理——而不必经历推导相交线等的额外麻烦。
这里最好的方法是什么?(您可以指出我的任何在线示例也将非常有帮助。)