对于光线跟踪器项目,我一直在研究处理找到光线和三角形之间交叉的算法(由三个顶点定义)。到目前为止我发现的是Möller-Trumbore(MT)算法被普遍使用。
所以我的问题是1)是否有MT的替代方案或算法被认为是计算交叉点的最快方法? 2)如果是,MT被证明是最优的还是有人可以想象发明更快的算法?
编辑:我现在看到我的问题与Ray-triangle intersection非常相似
作者声称,2016年有一篇论文
在理想的实验条件下运行,我们的算法总是比标准的Möller和Trumbore算法更快,并且比高度调整的现代版本更快,除了非常高的射线三角形命中率。
资料来源:Doug Baldwin和Michael Weber,“坐标转换快速三角交叉点”,“计算机图形技术期刊”(JCGT),第一卷。 5,不。 2016年3月39日至39日
谨慎对待Weber算法。虽然它可能更快,但我看到很多交叉点错误地被识别为不相交。该文件指出:
如果t太小或太大而无法表示有效交叉点,或者如果b1超出允许交叉点的范围,则此系列计算可以提前终止。
我已经看到大约2-3%的网格早期失败,因为't'太小了。我还在排除故障,但看起来P的倒数导致我的旋转方向向量太大,等于小't'。
另一方面,如果未正确设置epsilon,您还可以使用MT算法获得错误的交叉点。