坐标系手性
unity编辑器和世界空间惯用左手,相机空间惯用右手,设备空间取决于设备的project矩阵。
射线与球体相交
射线:P +
λ
\lambda
λD。
球心:C 半径:r。
构造二元一次方程|D|2
λ
\lambda
λ2 + 2(P•D - C•D)
λ
\lambda
λ + |P|2 + |C|2 - 2P•C - r2 = 0。
根据方程的根
λ
\lambda
λ以及射线方程V(
λ
\lambda
λ) = P +
λ
\lambda
λD可以推导出相应的情形比如:如果
Δ
\Delta
Δ < 0:射线与球体不相交;如果
Δ
\Delta
Δ > 0:射线有可能与球体相交,解得
λ
\lambda
λ1 = x1,
λ
\lambda
λ2 = x2,如果
λ
\lambda
λ1和
λ
\lambda
λ2都小于零,射线与球体不相交;如果
λ
\lambda
λ1和
λ
\lambda
λ2都大于零则射线与球体相交,并且有两个交点;如果
λ
\lambda
λ1和
λ
\lambda
λ2一正一负,射线与球有一个交点且射线的起点在球内部。
把
λ
\lambda
λ1和
λ
\lambda
λ2带入射线中就得出交点的位置坐标,再根据球体的距离场方程的梯度就可以得到交点处的法线。
Unity备忘
最新推荐文章于 2025-05-13 18:31:56 发布