GAMES101-现代计算机图形学学习笔记(05)

本文是关于GAMES101现代计算机图形学的学习笔记,重点讲解视图/摄像机变换,包括正交投影和透视投影的投影范围确定。接着介绍视口变换,将三维坐标映射到屏幕空间,并标准化。最后,探讨光栅化过程,解释为何选择三角形作为基本图元,并阐述如何通过采样确定三角形在屏幕上的像素。
摘要由CSDN通过智能技术生成

GAMES101-现代计算机图形学学习笔记(05)

原课程视频链接以及官网
b站视频链接: link.
课程官网链接: link.

视图/摄像机变换

确定投影范围

上一节说了投影实质上是通过一个长方体(正交投影)或者视锥(透视投影)限定一个范围,然后把范围内的坐标投影在二维空间上,所以这里涉及到了如何为不同的投影方式确定范围。

正交投影

正交投影比较好理解,即如何定义一个长方体,我们只需要知道高,宽和深坐标。所以需要的参数是height_start,height_end, width_start,width_end, znear(近平面), zfar(远平面)六个参数
在这里插入图片描述

透视投影

透视投影需要定义的范围是一个视锥,而一旦确定了视锥就可以通过上文的l逻辑来构造透视投影矩阵,范围如图所示:在这里插入图片描述
我们这里从二维平面来讨论构建透视矩阵需要哪些参数,先把视锥往zoy平面压平,然后只取视锥的上半部分,结果如下图所示:
在这里插入图片描述

fovY表示视野角度,同时已知近平面深度为n,远平面深度为f,宽高比为aspect,所以可以通过相似三角形和角度关系求得:
tan ⁡ f o v Y 2 = t ∣ n ∣ \tan \frac{f o v Y}{2}=\frac{t}{|n|} tan2fovY=nt
aspect = r t → r = a s p e c t ⋅ t \text {aspect}=\frac{r}{t} → r= {aspect} \cdot {t} aspect=t

在这部分的课程中,我们将专注于使用光线追踪来渲染图像。在光线追踪中 最重要的操作之一就是找到光线与物体的交点。一旦找到光线与物体的交点,就 可以执行着色并返回像素颜色。在这次作业中,我们需要实现两个部分:光线的 生成和光线与三角的相交。本次代码框架的工作流程为: 1. 从 main 函数开始。我们定义场景的参数,添加物体(球体或三角形)到场景 中,并设置其材质,然后将光源添加到场景中。 2. 调用 Render(scene) 函数。在遍历所有像素的循环里,生成对应的光线并将 返回的颜色保存在帧缓冲区(framebuffer)中。在渲染过程结束后,帧缓冲 区中的信息将被保存为图像。 3. 在生成像素对应的光线后,我们调用 CastRay 函数,该函数调用 trace 来 查询光线与场景中最近的对象的交点。 4. 然后,我们在此交点执行着色。我们设置了三种不同的着色情况,并且已经 为你提供了代码。 你需要修改的函数是: • Renderer.cpp 中的 Render():这里你需要为每个像素生成一条对应的光 线,然后调用函数 castRay() 来得到颜色,最后将颜色存储在帧缓冲区的相 应像素中。 • Triangle.hpp 中的 rayTriangleIntersect(): v0, v1, v2 是三角形的三个 顶点, orig 是光线的起点, dir 是光线单位化的方向向量。 tnear, u, v 是你需 要使用我们课上推导的 Moller-Trumbore 算法来更新的参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值