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

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

1 前言

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

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

2 光栅化插值原理

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

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

        定义向量如下。

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

        使用矩阵表示如下。

        求解向量 m 如下。

        说明如下:

  • 向量 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 的重心

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 的坐标。

http://www.dtcms.com/a/358430.html

相关文章:

  • Day17(前端:JavaScript基础阶段)
  • Cocos游戏中自定义按钮组件(BtnEventComponent)的详细分析与实现
  • HAProxy 负载均衡全解析:从基础部署、负载策略到会话保持及性能优化指南
  • Spring : 事务管理
  • 音视频学习(六十一):H265中的VPS
  • Prompt Engineering:高效构建智能文本生成的策略与实践
  • 深层语义在自然语言处理中的理论框架与技术融合研究
  • AI大模型:(二)5.2 文生视频(Text-to-Video)模型训练实践
  • FPGA增量式方差与均值计算
  • 响应式编程框架Reactor【4】
  • FPGA学习笔记——SPI读写FLASH
  • 优化器全指南:从原理到调优实战
  • 原子操作与锁实现
  • 由于不对称GND过孔配置,差分信号过孔上的差模到共模转换
  • SQL相关知识 CTF SQL注入做题方法总结
  • seafile-setup-troubleshooting_# Seafile 安装与问题解决记录 # Seafile/Seahub 启动问题记录文档
  • Scikit-learn Python机器学习 - Scikit-learn加载数据集
  • C/C++:AddressSanitizer内存检测工具
  • 《以奋斗者为本》读书笔记(上篇:价值管理)
  • Ethan开发者创新项目日报 | 2025-08-30
  • MySQL之事务
  • 渲染数据列表:`map` 方法与 `key` 的奥秘
  • Rust 泛型:抽象与性能的完美融合(零成本抽象的终极指南)
  • sql简单练习——随笔记
  • Deepseek法务提示指令收集
  • 【前端教程】MIUI 官网界面设计与实现全解析
  • ceph配置集群
  • 详情Redis的Zset结构
  • STM32 之BMP280的应用--基于RTOS的环境
  • React学习教程,从入门到精通, ReactJS - 优点与缺点(5)