有没有办法检测具有一定数量顶点的物体是否撞击平面?如果是这样,我想将它以二进制(黑/白)绘制到平面上或用它创建纹理。
而且我也不关心这是否只能通过光线转换或一些棘手的物理操作/着色器/等来创建。我只是想知道什么数学算法可以创建它。
干杯,迈克尔
最佳答案
大多数游戏都会通过专门的着色器来实现这一点:
- 第一遍渲染场景中不透明对象的深度图
- 第二遍对透明对象使用交集着色器
相交着色器会查找深度等于(或接近等于)第一遍深度的片段,然后对这些片段进行不同的着色。
A question on the Game Development Stack Exchange更详细的内容,包括屏幕截图和 WebGL 演示。
就您而言,这可能看起来像:
- 将平面渲染为不透明几何体
- 使用交集着色器渲染其他对象
- 绘制与平面相交的片段
- 不与平面相交的碎片将被丢弃
无论您是对整个场景执行此操作,还是只是为了生成可应用于其他对象的纹理,着色器原理都保持相同。
关于unity-game-engine - Unity 交叉口蒙版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42278279/