Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【GAMES101】Lecture 13 14 加速光线追踪 AABB

【GAMES101】Lecture 13 14 加速光线追踪 AABB

作者头像
叶茂林
发布于 2024-02-03 01:00:46
发布于 2024-02-03 01:00:46
1730
举报

包围盒

对于下面这个壶,我可以用一个框把它框起来,如果光线和这个框没有交点,那是不是就不会和这个壶有任何的交点,那是不是这一块我都不用算了,基本思想就是这个Bounding Volumes,叫包围盒

轴对⻬包围盒 Axis-Aligned Bounding Box (AABB)

实际应用中我们用这个长方体,叫这个Axis-Aligned Bounding Box (AABB),叫轴对⻬包围盒,就是它由三对平行的平面确定的长方体

那具体怎么做呢,我们先从这个二维的出发,我把这长方体三对面拿俩对面出来,我先算这个竖的,可以计算出光线进入平面的时候tmin和出去平面的时间tmax是不是,然后我再算横的,同样可以计算出一个tmin和一个tmax,我这里先不管这个算出的t的正负,然后我要确定这个光线进入这个框起来的范围内的真正的进入时间是不是两个tmin的较大值,然后真正离开时间是这两个tmax的较小值

同理到三维,我去计算每对面的tmin和tmax出来,然后取最大的tmin和最小的tmax就是光线进入和离开的时间对不对

如果离开的时间小于0,那说明这个包围盒在光线的后面

如果离开的时间大于等于0,但是进入的时间小于0,那说明这个光线是在包围盒里面发出来的

我们这里为什么要用上轴对称的面呢,这是因为这样计算量小一些,当这个光线和某些面垂直或者平行的时候,计算这个t只需要用到三维向量中的一个分量进行计算即可

下面就到lecture14讲如何通过这个aabb加速光线追踪

均匀网格 Uniform grids

先用一个大的包围盒将物体包起来,然后生成网格,记录下每个物体覆盖的网格

然后沿着光线的方向去看和光线相加的格子里面有没有物体,如果有的话就计算和物体的交点

基本思路就是这样,但实际中呢这个格子的大小影响比较大,格子太大,那基本上都要和每个物体计算交点,等于没做,格子太小 ,那本身就要计算很多多余的格子,在摸索过程中可能可以找到一个格子的数量可能效果比较好

这个均匀网格适用于场景分布比较均匀的,对于物体差异比较大的场景效果不好

空间划分 Spatial partitions

均匀网格的缺点就是均匀对吧,那不均匀的划分是不是会好一点,这里就讲了三种空间划分

首先是这个八叉树,它在二维里面就相当于四叉树,怎么做呢,就是我每次把场景分成四份,然后递归的继续分下去,那什么时候停下了呢,就是当这次的划分使得一个格子里面三角形数量比较少的时候我就停下来

然后是这个后面要详细讲解的KD树,就是二叉树,每次把场景分成两部分,每次都从不同的维度划分,比如这次沿xy平面,下次沿yz平面,再下次沿zx平面,但是都是这种正交方向的

然后同样二分的是这个BSP树,也是每次分两部分,但是不同的是它这个方向是斜的

KD-Tree

怎么建立这个KD树呢,其实思路也很清晰,就是每次将这个场景沿着一个轴平面分成两部分,这就产生两个子节点,然后继续递归下去划分,然后直到这个节点内的物体数量比较少,并且所有的物体都挂在这个叶子节点上

然后就是和均匀网格一样的做法,看光线路径上和哪些块相交,再继续看块内的物体有没有和光线相交,找出最近的相交点

但是这个KD树同样有问题哈,就是我一个物体可能在多个块上,这就引出下面的BVH

Bounding Volume Hierarchy (BVH)

基本思路和KD树差不多,不同的是我先把物体分成两堆,然后去求两堆物体的包围盒,那这样形成的两个节点就不会包含同一个物体了

那这里涉及到怎么样去将物体分成两堆,可以从某一个维度去划分,还可以选择最长的一条然后把它分开变短,还有就是选择一个位置在中间的物体为界,这里可以用快速选择来找出中间值

然后同样是将物体挂在叶子节点上

做法和之前的一样,如果光线和框没有交点就直接返回,如果是和叶子节点框有交点就计算里面所有物体和光线的交点,返回最近的,不然就继续递归计算和两个子节点框

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WEB前端day1(HTML5+CSS3)
Outline轮廓 绘制于元素周围的一条线,在边框border的外围,起突出元素的作用。
王中阳Go
2022/10/26
6270
WEB前端day1(HTML5+CSS3)
一些小参考
工作区(你本身的电脑)和版本库(git仓库,仓库里面有git的主体和暂存区),首先是工作区提交到暂存区(可以重复很多次),然后暂存区提交到git主体就是提交改变内容,插入分支里面(git commit的话只会commit暂存区内容)
用户7267083
2022/12/08
6470
HTML 常见面试题速查
DOCTYPE 是 html5 标准网页声明,且必须声明在 HTML 文档的第一行。用来告知浏览器的解析器用什么文档标准来解析该文档,不同的渲染模式会影响到浏览器对于 CSS 代码甚至 JavaScript 的解析。
Cellinlab
2023/05/17
8210
HTML 常见面试题速查
HTML5新特性
HTML5是下一代HTML标准,是HTML最新的修订版本,2014年10月由万维网联盟W3C完成标准制定,HTML5将HTML从用于构造一个文档的一个简单标记,到一个完整的应用程序开发平台,HTML5还包括新元素和用于增强存储、多媒体和硬件访问的JavaScript APIs。
WindRunnerMax
2020/08/27
1.7K0
前端开发面试题总结之——HTML
---- 相关知识点 web标准、 web语义化、 浏览器内核、 兼容性、 html5... 题目&答案 Doctype作用?严格模式与混杂模式如何区分?它们有何意义(1)<!DOCTYPE>声明位于HTML文档中的第一行,处于<html>标签之前,用于告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。 (2)标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点
用户1667431
2018/04/18
1.9K0
前端开发面试题总结之——HTML
HTML5(九)——超强的 SVG 动画
SVG 动画有很多种实现方法,也有很大SVG动画库,现在我们就来介绍 svg动画实现方法都有哪些?
呆呆
2021/09/30
3.3K0
【前端面试题】01—42道常见的HTML5面试题(附答案)
HTML5为我们提供了更多的语义化标签、更丰富的元素属性,以及更让人欣喜的功能。但在面试中,HTML5部分的面试题主要考察应试者对HTML5API的掌握情况,这是HTML5的重点,也正是这些API推动了前端的发展。
前端达人
2021/03/16
5.6K0
【前端面试题】01—42道常见的HTML5面试题(附答案)
前端HTML5面试官和应试者一问一答
form特性在HTML5中,可以把从属于表单的元素放在任何地方,然后指定该元素的form特性值为表单的id,该元素就从属于表单。
达达前端
2021/01/14
2.1K0
前端HTML5面试官和应试者一问一答
HTML5学习笔记
参考资料:http://www.runoob.com/html/html-tutorial.html
易墨
2018/09/14
1.6K0
HTML5学习笔记
HTML5新特性
本章的主要内容有: ---- [1] 用于媒体回放的 video 和audio 元素 [2] HTML5拖放 [3] canvas简单应用 [4] Web存储: localStorage 和 SessionStorage [5] Input输入类型 [6] 表单类型 [7] 表单属性 [8] 地理定位 (geolocation) [9] Web Workers: Worker [10] 服务器发送事件 EventSource ---- [1] 用于媒体回放的 video 和audio 元素 video 支持
echobingo
2018/04/25
1.7K0
HTML5新特性
三种图表技术SVG、Canvas、WebGL 3D比较
因为前两项都是描述2D图形的,而WebGL是描述3d的,所以以下针对SVG和Canvas做比较。
IT人一直在路上
2019/09/16
3.8K0
HTML 面试知识点总结
本部分主要是笔者在复习 HTML 相关知识和一些相关面试题时所做的笔记,如果出现错误,希望大家指出!
不愿意做鱼的小鲸鱼
2022/09/26
2K0
HTML 面试知识点总结
前端面试那些坑之HTML篇
HTML 1、Doctype作用?标准模式与兼容模式各有什么区别? (1)、<!DOCTYPE>声明位于位于HTML文档中的第一行,处于<html> 标签之前。告知浏览器的解析器用什么文档标准解析这
用户1667431
2018/04/18
1.5K0
「资深前端工程师总结」前端面试知识点大全——html篇
定时让网页在3秒内跳转到mozilla首页(http-equiv 属性为名称/值对提供了名称。并指示服务器在发送实际的文档之前先在要传送给浏览器的 MIME 文档头部包含名称/值对。)
用户5997198
2019/08/12
2K0
「资深前端工程师总结」前端面试知识点大全——html篇
H5新增的特性及语义化标签
为了更好地处理今天的互联网应用,HTML5添加了很多新元素及功能,比如: 图形的绘制,多媒体内容,更好的页面结构,更好的形式 处理,和几个api拖放元素,定位,包括网页 应用程序缓存,存储,网络工作者,等
青梅煮码
2023/01/31
2.5K0
HTML5 学习总结(四)——canvas绘图、WebGL、SVG
一、Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术。<canvas> 标记和 SVG以及
张果
2018/01/04
9.8K0
HTML5 学习总结(四)——canvas绘图、WebGL、SVG
HTML5之API
  加载时直接播放音频的方式:new Audio("BY2.mp3").play();
JQ实验室
2022/02/09
5500
大厂前端面试考什么?5
以下是代码实现,实现了思路,但是可能会存在 Bug,但是这种设计题一般是给出设计思路和部分代码,不会需要写出一个无问题的代码
loveX001
2023/01/09
9990
01 . 前端之HTML
HTML(Hyper Text Markup Language)超文本标记语言,它不同于编程语言
iginkgo18
2020/09/27
1.7K0
01 . 前端之HTML
HTML5游戏开发实战–当心
1.WebSocket它是HTML5该标准的一部分。Web页面可以用它来连接到持久socketserver在。该接口提供一个浏览器和server与事件驱动的连接。这意味着client每次需要时不再server发送一个新的数据请求。
全栈程序员站长
2022/07/06
1.9K0
相关推荐
WEB前端day1(HTML5+CSS3)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档