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

news/2025/10/8 17:33:44/文章来源:https://www.cnblogs.com/zhyan8/p/19123030

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.mzph.cn/news/931768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站移动端推广佛山网站建设熊掌号

只针对不正常的情况才使用异常 异常只应该被用于不正常的条件,它们永远不应该被用于正常的控制流。《阿里手册》中:【强制】Java 类库中定义的可以通过预检查方式规避的RuntimeException异常不应该通过catch 的方式来处理,比如:Nu…

网站建设职业描述郑州网站免费制作

概述: el-switch 表示两种相互对立的状态间的切换,多用于触发「开/关」。 常见用法: 1、绑定v-model到一个Boolean类型的变量。可以使用active-color属性与inactive-color属性来设置开关的背景色。 2、使用active-text属性与inactive-tex…

塑料机械怎么做网站网站建设协议 模板

尽管 Hexo 支持 MarkDown,但是我们却不能像写单独的 MarkDown 文档时那样肆无忌惮。由于我们所写的文档是需要被解析为静态网页文件的,所以我们必须严格遵从 Hexo 的规范,这样才能解析出条理清晰的静态网页文件。新建文档 假设我们的文章名为…

HTML 速查列表 - 教程

HTML 速查列表 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

Exp1

Experiment 1 实验任务1 1.1 #include <stdio.h> int main() {printf(" O \n");printf("<H>\n");printf("I I\n");printf(" O \n");printf("<H>\n&qu…

20_uv_wsl_installation

windows11 #wsl 在Windows 11 WSL上安装uv的完整指南 概述 uv是由Astral公司开发的现代化Python包管理器和项目管理工具,用Rust编写,提供极快的速度和统一的工具链,可替代pip、pip-tools和virtualenv。 安装方法 方…

学习问题日记-4

在学习Docker时候,安装完所有配置了,配置源使用的是阿里云的,然后在测试安装是否成功时候,执行了一下以下命令: docker run hello-world 结果遇到了以下报错: docker: Error response from daemon: Get "ht…

Codeforces Round 1042 (CF2131) 补题笔记(A-E)

A. Lever 预计难度:红。 考察:语法。 对于所有满足 \(a_i>b_i\) 的下标 \(i\),累计 \(a_i-b_i\) 再加上 \(1\) 就是结果。因为忽略操作 \(1\) 时还迭代了一次所以要加 \(1\)。点击查看代码 #include <bits/st…

在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名AI编程助手框架需求探索

本文深入分析了一个专注于提升AI编程助手体验的开源项目,探讨其核心功能定位、应用场景和使用方式,并基于大量用户反馈识别出潜在的创新需求方向,为AI编程工具的未来发展提供参考。内容描述 核心功能定位 该项目是一…

表格数据自动机器学习技术解析

本文介绍了AutoGluon Tabular开源库,这是一个面向表格数据的自动机器学习工具。通过该工具,开发者仅需编写少量代码即可利用深度学习技术构建应用程序,涵盖自动机器学习技术在图像、文本和表格数据集上的应用。Auto…

网站开发 工作量公司网站开发步骤

前面博主写了一篇文章去介绍opentsdb的http接口的使用方法,但是某一些接口的使用还是比较复杂&#xff0c;这篇文章会通过example来详细讲述opentsdb的一些特性。 本文的举的例子有这些&#xff1a; 基本的写入和查询数据的注释和说明子查询查询中的filters使用查询数据的rat…

外链提高网站权重沈阳男科私立医院

普源示波器是一种常用的电子测试设备&#xff0c;它可以测量电路中的电压和电流波形。其中&#xff0c;测量相位差是示波器的一个重要功能&#xff0c;它可以用于分析信号的时间延迟、相位差、频率响应等信息。本文将介绍普源示波器测量相位差的原理和方法&#xff0c;并通过实…

广州定制网站建设毕业设计做网站 答辩会问什么问题

1、添加记录(INSERT)使用SQL语句的INSERT命令可以向数据库中插入记录&#xff0c;INSERT命令的基本形式为&#xff1a;INSERT INTO 表名 [(字段名1,字段名2…)] VALUES (值1,值2,…)若在输入记录时&#xff0c;每个字段均有内容&#xff0c;可省略表名后的字段名。该SQL语句用于…

10/8

Java方法与递归学习实践总结 在Java方法章节的学习中,我最大的收获并非仅仅掌握了语法规则,而是体会到“结构化编程”背后的思维逻辑——用“方法”将复杂问题拆解、复用,用巧劲替代重复的蛮力,这与课件中“懒人造…

2025.10.8

file:///C:/Users/lenovo/Desktop/Java%20%E6%A0%B8%E5%BF%83%E5%9F%BA%E7%A1%80%E5%AE%9E%E9%AA%8C%E6%96%87%E6%A1%A310.8.docx

【QT】QString 与QString区别 - 教程

【QT】QString& 与QString区别 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

[Python/地图] 基于Python绘制地图

0 概述:基于Python绘制地图 1 基于 PyEcharts 绘制地图 PyEchart库pyecharts 是一个基于 百度开源的 Apache ECharts 的 Python 数据可视化库。ECharts 是一个使用 JavaScript 实现的开源可视化库,而 Pyecharts 则是…

常德网站开发哪家好如何制作自媒体短视频

全球领先的企业软件创新者VMware&#xff08;NYSE&#xff1a;VMW&#xff09; 今日在VMworld 2020大会上&#xff0c;宣布升级Tanzu对VMware Cloud on AWS、Azure VMware Solution 和Oracle Cloud VMware Solution的支持&#xff0c;同时与GitLab展开合作。在VMworld 2019美国…

【从前端到后端导入excel资料实现批量导入-笔记模仿芋道源码的《系统管理-用户管理-导入-批量导入》】

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …