OpenGL ES

【OpenGL ES】光栅化插值原理和射线拾取原理

2025-10-02  本文已影响0人  LittleFatSheep

1 前言

最近在推导光栅化插值公式和射线拾取公式,发现计算过程中有很多共同点,因此将它们放在一篇文章里介绍。具体共同点如下。

2 光栅化插值原理

光栅化要解决的问题:如下图,已知三角形的三个顶点的坐标及其他属性(如颜色、纹理坐标、法线向量、切线向量、副切线向量等),对于三角形内任意一点,若已知其坐标,求该点的颜色、纹理坐标等属性的值。

进一步细化问题:如下图,O 点是坐标原点,已知 A、B、C、Q 4 个点的坐标,假设 Q = x · A + y · B + z · C,求 x 、y、z 的值。

定义向量如下。

向量 d 可以用向量 a、b、c 线性表示如下。

使用矩阵表示如下。

求解向量 m 如下。

说明如下:

为简化计算,可以使用以下数学工具。

2 射线拾取原理

参考:直线与三角形相交Moller Trumbore算法推导

如下图,已知 A、B、C、P 4 个点的坐标,向量 n 是由 P 点发射的单位方向向量,Q 点是向量 n 与 ΔABC 的交点,求 Q 点坐标。由于 Q = P + d,因此本节只求向量 d 的坐标。

定义向量如下。

向量 n 可以用向量 a、b、c 线性表示如下。

使用矩阵表示如下。

求解向量 m 如下。

如果 mx、my、mz 中有一个为负数,说明交点 Q 一定在 ΔABC 外部;如果 mx + my + mz = 0,说明向量 m 与 ΔABC 平行。

由于向量 d 与向量 a 线性相关,并且 Q 点在 ΔABC上,可以得出以下方程,求解后即可得到向量 d 的坐标。

声明:本文转自【OpenGL ES】光栅化插值原理和射线拾取原理

上一篇 下一篇

猜你喜欢

热点阅读