【发布时间】:2015-05-05 08:36:59
【问题描述】:
我已经用 MetalFramework for iOS 实现了实时光线追踪器,它是为跟随光学棱镜而实现的,如十二面体、二十面体、八面体、立方体等。我所有的图形都是由三角形组成的,例如立方体 - 12 个三角形,八面体 - 4三角形。我追踪光线并搜索与图形的交点,然后搜索光线在棱镜中的移动方式。然后射线离开身影,我搜索与天空盒的交点。问题在于复杂的数字。当我测试立方体 fps 为 60 时,但当我测试十二面体 fps 为 6 时。在我的算法中,与图形的交集与与任何三角形的交集相同。这意味着当我检查与射线和图形的交点时,我必须检查与所有三角形的交点。我需要一些想法如何不检查所有三角形的交点。谢谢。
【问题讨论】:
-
您需要划分场景部分并仅测试与射线相交的部分内的对象/三角形......有很多基于树的方法,但我更喜欢从场景中制作一个像网格一样的体素,将三角形分组到
voxel cubes,然后只跟踪穿过这些立方体的光线,并仅测试为命中体素立方体列出的三角形。这应该会大大加快速度 -
谢谢。我不明白如何划分场景。你能举一些例子吗?
-
添加了答案,试图澄清我的意思......
标签: ios algorithm geometry raytracing metal