光线追踪(一)

本文介绍了光线与物体求交的条件,并探讨了两种加速光线追踪的技术:KD-Tree和Bounding Volume Hierarchy (BVH)。KD-Tree因可能导致物体跨越多个叶子节点而被弃用,而BVH通过物体划分解决了这一问题,确保每个物体只存在于一个格子内。文章详细阐述了BVH的划分策略,包括中位数快速选择算法,并对比了BVH与KD-Tree的优缺点。

(1)光线和物体的求交

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第42分钟
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
什么时候有交点:
当且仅当: 进入时间 小于 离开时间 并且离开时间>= 0

光线离开任意一个对面 , 则已经离开

(2)加速结构:

传统的经验模型(在分布密集的地方适用)
在这里插入图片描述

(2.1)KD-Tree (现在已经被弃用) 从空间的划分
被弃用的原因: 一个物体可能会在多个叶子节点内; 三角形与盒子的划分

在2D情况下划分: 第一刀 水平切; 第二刀 竖直切; 第三刀 水平切 ; 第四刀 竖直切。。。。。。。。。。。。
在3D情况下划分: 沿 X, Y, Z 三个方向循环划分

一个物体存在多个叶子节点中; 三角形与盒子的求交
在这里插入图片描述
(3)Bounding Volume Hierarchy (BVH) 从物体划分
解决了KD-Tree的问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一个物体 只可能出现在一个格子内

在这里插入图片描述

(3.1)BVH 的划分: (总共n个三角形: 在 n/2 附近划分)

在这里插入图片描述
找到中位数: 快速选择算法

(3.2)BVH 和 KD-Tree 的比较
在这里插入图片描述

### 关于光线追踪技术的图解与教程 光线追踪种用于生成高质量图像的渲染算法,其核心思想是模拟光在现实世界中的传播路径。通过跟踪从眼睛出发经过像素进入场景的条或多条光线,可以精确计算物体表面反射、折射以及阴影效果。 #### 基本原理 光线追踪的核心在于逆向追踪光线路径。通常情况下,光线是从光源发出并照射到观察者的眼睛,但在计算机图形学中为了效率考虑,会反向操作——即从摄像机位置发射光线至场景对象[^1]。当条射线击中某个几何体时,程序将进步派生新的次级光线以求得更复杂的效果,比如镜面反射或透明材质下的折射现象。 #### 实现步骤概述 以下是简化版的光线追踪实现逻辑: 1. **初始化**: 定义相机参数(如视场角FOV),创建虚拟屏幕作为采样区域。 2. **投射主光线(Main Rays)**: 对每个屏幕上对应的像素点, 投影出条由眼点指向该方向的世界坐标系下直线. 3. **相交测试(Hit Testing)**: 判断这条主线是否与其他任何三维模型发生碰撞; 如果存在多个潜在命中,则选取最近的那个接触点记录下来。 4. **光照计算(Lighting Calculation)**: 根据当前撞击点的位置及其法线信息决定局部颜色贡献度;同时可能还需要额外发送若干辅助探测光线去评估间接照明情况(例如漫反射全局光照GI)或者特殊材料属性表现形式(诸如高亮光泽斑Glossy Highlights) 5. **递归扩展(Subsequent Bounces)**: 若有必要的话继续沿不同角度再次触发新轮相似流程直至达到预定最大反弹次数限制为止. 下面给出段简单的伪代码表示这过程: ```python def trace_ray(ray, depth): if depth > max_depth: return background_color hit_record = scene.intersect(ray) if not hit_record.hit: return background_color material = hit_record.material scattered_ray, attenuation = material.scatter(ray, hit_record) color = attenuation * trace_ray(scattered_ray, depth + 1) return color ``` 此函数接受输入为单根特定走向轨迹再加上层数计数器变量`depth`, 输出则是综合考量之后所得最终呈现色彩数值。 #### 参考资料推荐 对于希望深入了解光线追踪的朋友来说,《Introduction to Ray Tracing: a Simple Method for Creating 3D Images》是份非常宝贵的入门指南[^1]。它不仅涵盖了基本概念而且还配有丰富的插图说明使得整个学习体验更加直观易懂。另外还有其他在线资源像Milo Yip所著文章也提供了不少实用技巧可供借鉴[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值