当前位置: 首页 > news >正文

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

1 前言

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

  • 都引入了四面体模型
  • 都以四面体的三条边作为基向量构建坐标系(非直角坐标系)
  • 都需要求解射线向量在基向量上的坐标

2 光栅化插值原理

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

img

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

img

​ 定义向量如下。

img

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

img

​ 使用矩阵表示如下。

img

​ 求解向量 m 如下。

img

​ 说明如下:

  • 向量 m 的几何含义是:若以向量 a、b、c 为坐标轴建立坐标系(非直角坐标系),向量 m 表示向量 d 在该坐标系下的坐标。
  • 由于 Q 点在 ΔABC 的内部,因此 mx + my + mz = 1,并且 mx >= 0、my >= 0、mz >= 0(第一象限)。
  • 如果 mx = my = mz = 1 / 3,则 Q 点一定是 ΔABC 的重心

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

  • 对于线性方程组 A·x=b,根据克拉默法则可以求解:xi = |Bi| / |A|,其中 Bi 是将矩阵 A 的第 i 列替换为 b 向量后的矩阵。
  • 假设 3x3 矩阵 A 由 a、b、c 三个列向量组成,则 |A| = a x b · c。

2 射线拾取原理

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

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

img

​ 定义向量如下。

img

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

img

​ 使用矩阵表示如下。

img

​ 求解向量 m 如下。

img

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

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

img

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

http://www.hskmm.com/?act=detail&tid=26846

相关文章:

  • HTML 速查列表 - 教程
  • Exp1
  • 20_uv_wsl_installation
  • 学习问题日记-4
  • Codeforces Round 1042 (CF2131) 补题笔记(A-E)
  • 在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名AI编程助手框架需求探索
  • 表格数据自动机器学习技术解析
  • 10/8
  • 2025.10.8
  • 【QT】QString 与QString区别 - 教程
  • 连通分量tarjan学习笔记
  • [Python/地图] 基于Python绘制地图
  • 实验任务1——8
  • 一款专门为 WPF 打造的开源 Office 风格用户界面控件库
  • dockercontainerd代理设置脚本
  • 实用指南:vue3+elementplus表格表头加图标及文字提示
  • 2025国庆集训总结
  • tampermonkey油猴脚本, 动画疯评分显示增强脚本
  • 9.29课后整理 - GENGAR
  • 深入解析:【QT】`QTextCursor::insertText()`中插入彩色文本
  • Java方法专题 - 动手动脑问题与实验总结
  • 2025年中盘点
  • 学习问题日记-3
  • 差分约束乘法改加减
  • 01-方法-课后作业
  • 应用程序io接口
  • 边缘数据库近期想法(2)
  • 方法-课后作业1
  • io软件的层次结构
  • 2025年- H57-Lc165--994.腐烂的橘子(图论,广搜)--Java版 - 教程