计算机图形学 Ray Trace 学习笔记

news2024/10/5 15:45:27

屏幕上的一个像素,是通过各种反射、折射而共同组成的,每个反射折射的点,都会考虑光源是否有直接照射到反射折射的点上,反射与折射之间会存在能量衰减,最终汇总在屏幕的像素上。

计算是哪一个三角形被射线打中,则在三角形上扩展成一个与三角形位置平行且完全包含三角形的平面,N为平面的法线,pPre是在平面上的任意一点,若射线OD打到平面上的交点与pPre组成向量与N相乘为0(由于垂直,向量相乘为0),则表明射线OD打中平面,再判断是否打中三角形,世界中每一个在玩家视口中的三角形都会这样判断。

为了加快运算效率,提出了Bounding Volume的概念,将一个规则的集合体包裹在物体上,若射线没有打到包围盒上,那么肯定也没有打到物体上的三角面,当只移动玩家视角的时候,这整个物体的三角面就不用得到重新计算。 


KD-Tree就是先绕X轴分一个横线,然后在Y轴分一个竖线,以此往复,如果是3维,就是X,Y,Z轴依次用平面来切割,以此往复

蓝色块与射线有入射线和出射线,进行判断蓝色快内是否有物体与射线有交点。

到下一个节点去,射线在B的范围内同时也有入射线和出射线,所以判断B中是否有交点,B中分为2和C部分,先看2中是否存在射线与物体的交点 

找C块,C块又分为D部分和3,先看3,3与射线有入射点和出射点,所以判断3中是否存在物体与射线的交点,很明显是存在的

接着判断4和5,5没有入射点和出射点,所以5这一块不用做交点判断


为了防止和KD-Tree一样,一个object有多个树节点存储它的信息,所以有了Bounding Volume Hierarchy算法,只有完全框到的才能算在树节点内

每次取最长的一个框的一条轴取划分这是一个BVH算法的其中一个划分方法

每次取一个框的中位线也是BVH的一种划分方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/137022.html

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

相关文章

Hive SQL 每日SQL

1、查询订单明细表(order_detail)中销量(下单件数)排名第二的商品id,如果不存在返回null,如果存在多个排名第二的商品则需要全部返回。 需要用到的表: 订单明细表:order_detail 代码…

【谷粒商城基础篇】仓储服务:仓库维护

谷粒商城笔记合集 分布式基础篇分布式高级篇高可用集群篇简介&环境搭建项目简介与分布式概念(第一、二章)基础环境搭建(第三章)整合SpringCloud整合SpringCloud、SpringCloud alibaba(第四、五章)前端知…

android 创建aar包

1. 背景 由于新入职公司在做硬件接入的项目,需要接入多款硬件,而且,几个app的功能不太一样。于是,需要模块化开发,并且许多东西都是可以复用的(像网络框架、log、shareprefrence、权限申请等)。…

嵌入式HLS 案例开发步骤分享——Zynq-7010/20工业开发板(1)

目 录 前 言 3 1 HLS 开发流程说明 5 1.1 HLS 工程导入 5 1.2 编译与仿真 6 1.3 综合 8 1.4 IP 核封装 10 1.5 IP 核测试 14 前 言 本文主要介绍 HLS 案例的使用说明,适用开发环境: Windows 7/10 64bit、Xilinx Vivado 2017.4 、Xilinx Vivado HLS 2017.4 、Xilinx…

数据结构|排序算法详解

​​​​​​​目录 一.插入类 1.直接插入排序 2.希尔排序 二.选择类,排一次选出一个最值 1.选择排序 2.堆排序 三.交换类,通过一直交换一次确定数字的位置 1.冒泡排序 2.快速排序 2.1 hoare版本 2.2挖坑法 2.3前后指针法 四.归并类 1.归并…

Go第 5 章:程序流程控制

第五章程序流程控制 5.1程序流程控制介绍 在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控 制语句。 1)顺序控制 2)分支控制 3)循环控制 5.2 顺序控制 程序从上到下逐行地执行,中间没有任…

C++标准库的智能指针:shared_ptr、weak_ptr和unique_ptr

文章目录智能指针shared_ptr模版类week_ptr模版类unique_ptrC中是没有内存回收机制的,我在之前的一篇文章中提到使用指针的一些基本方法。C在std标准库中也提供了三种封装过的指针模版类,称作为智能指针:shared_ptrunique_ptrweek_ptr 我这里…

JVM性能调优详解

前面我们学习了整个JVM系列,最终目标的不仅仅是了解JVM的基础知识,也是为了进行JVM性能调优做准备。这篇文章带领大家学习JVM性能调优的知识。 性能调优 性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操…

最优二叉树(哈夫曼树)

一、最优二叉树 1、定义 官方定义:在权值为w1,w2,…,wn的 n个叶子所构成的所有二叉树中,带权路径长度最小(即代价最小)的二叉树称为最优二叉树或哈夫曼树。 通俗来讲,就是给定N个权值作为N个叶子结点&…

仿牛客论坛项目总结

一.数据库中每一张表有哪些字段 user表 用户表 (1)id 用户的id (2) username 用户名 (3)password 密码 (4)salt 盐 (5)emai邮箱 (6&…

PAT甲级1008 Elevator C++/C语言

1008 Elevator 分数 20 作者 CHEN, Yue 单位 浙江大学 The highest building in our city has only one elevator. A request list is made up with N positive numbers. The numbers denote at which floors the elevator will stop, in specified order. It costs 6 seconds …

联邦学习将如何影响您的日常生活?

人工智能 (AI) 被认为是下一次工业革命的最大创新之一,其中包括机器学习。另一方面,随着原油和电力成为现代工业的基础资源,数据成为人工智能和机器学习的关键要素。 数据隐私与需求之间的冲突 训练的数据样本的大小决定了可用于增强 AI 性能…

CPT203-Software Engineering(2)

文章目录5. Scrum Framework5.1 Scrum Roles5.2 Scrum Activities and Artifacts6. Requirements Engineering6.1 User requirements and system requirements6.2 Functional & Non-functional requirements6.2.1 Functional requirements6.2.2 Non-functional requirement…

第一章:C++算法基础之基础算法

系列文章目录 文章目录系列文章目录前言一、排序(1)快速排序核心思想思路分析模板(2)归并排序核心思想思路分析模板稳定性时间复杂度二分查找(1)整数二分核心思想思路分析模板(2)浮点…

jetson nano系统引导安装(无外设安装方式)

文章目录一.硬件设置二.系统设置一.硬件设置 插入烧写好系统的SD卡将micro USB线接到jetson nano上,另一端USB A接到电脑上为jetson nano插入电源,开机等待电脑检测到如下盘符说明jetson nano连接成功 二.系统设置 进入电脑的设备管理器,查…

【linux】三种权限的使用和更改、粘滞位和yum的使用

目录 1.权限问题 ①什么是权限? ②小问题 ③默认权限 ④如何更改“人”的权限呢? ⑤更改权限的八进制方案 ⑥强制改权限里的“人”(权限人文件属性) 2.粘滞位 2.yum的使用 1.权限问题 ①什么是权限? 权限人&a…

HTTP协议解析

HTTP概述 HTTP (全称为 "超文本传输协议") 是一种应用非常广泛的应用层协议~~我们平时打开一个网站, 就是通过 HTTP 协议来传输数据的。 HTTP工作过程: 当我们在浏览器中输入一个 "网址",此时浏览器就会给对应的服务器发送一个 H…

CTF中的PHP特性函数(上)

前言 对于PHP大家一定不陌生,但你知道PHP在CTF中是如何考察的吗,本文给大家带来的是通过PHP特性来进行CTF比赛中解题出题的知识,会介绍一下CTF中常见的php特性以及围绕该知识点的相关案例,因为内容过多这里分成上中下三篇来讲&am…

操作系统的特征

文章目录🎀前言:本篇博客知识总览🍔并发🎇概念:🍔共享🎇概念:🍔虚拟🎇概念:🍔异步🎇概念:🏳️‍&a…

ThinkPHP 多应用模式之Api路由分组+中间件

ThinkPHP 6.1 在多应用模式下实现API路由分组中间件验证业务 目录 1.创建中间件文件 2.迁移中间件到子应用目录中 3.编辑中间件验证业务 修改命名空间 编写handle处理代码 4.注册中间件 编辑中间件文件 TP内置中间件 5.设置路由分组 优化相同控制器前缀 最终效果&am…