我想分别处理 3D 建模,现成引擎上的实现目前一点也不有趣。
我按照标准策略行事:从相机向屏幕上一个像素的方向射出一条射线,然后找到射线与多边形(三角形)所在平面的交点。为了找到多边形平面方程,我想使用高斯方法,我通过两个平面的交点设置光束(我自己分配 2 个系数,我使用相同的高斯方法寻找剩余的 2 个 - 我找到了方程光束所在的平面,用其他初始系数重复操作 - 我得到另一个平面的方程)。然后我就简单的把三个平面的系数代入到3x3的矩阵中,求出它们的交点。
问题是在该平面通过点 (0, 0, 0) 的情况下找到多边形平面方程,因为我最初选择系数 D = 1(对于这样的平面,它将始终为 0)。你知道这个问题通常是如何解决的吗?
更新:这是对我有用的解决方案:
与其搜索平面方程式,不如直接使用向量更容易。让平面由三个点定义:A、B、C。直线由两个点定义:D、E。点 T 是直线与平面的交点。您可以使用向量的两个属性:
- 共面向量的混合乘积 = 0
- 共线向量的向量积 = 零向量
点T的坐标矩阵是这样得到的:
进一步可以用与高斯相同的方法求解。使用这种方法,矩阵只有在两种情况下不会有高斯解:当直线位于平面上时以及当它们平行时