图形学games101课程回顾--变换矩阵和MVP变换

这篇博客回顾了games101课程中的图形学知识,重点介绍了计算机图形学的基本概念,如光栅化、几何表示、光传播和动画模拟。文章详细讲解了线性代数在图形学中的作用,特别是二维和三维变换,包括缩放、反演、切变、旋转和平移。MVP变换(模型、视图、投影)作为将3D场景转化为2D图像的关键步骤,通过摆好物体造型、调整摄像机位置和投影成像三个阶段来实现。最后,博客探讨了实际操作中如何运用这些变换进行3D渲染。
摘要由CSDN通过智能技术生成

前言

这个文档为笔者自用,纯属知识分享和讨论,杜绝商用,有问题欢迎大家指出。

一、计算机图形学?

计算机图形学就是应用计算机合成或生成虚拟信息。在当前生活中,有很多这方面的应用,比如动画《凡人修仙传》、电影《冰雪奇缘》,电影特效《权力的游戏》,游戏,场景模拟,产品设计图,VR等等。

在这个课程中,主要讲解光栅化成像、几何表示、光的传播理论和动画与模拟这四部分。

二、前期准备

1.线性代数

无论是图形学还是机器学习,都离不开用向量、矩阵来表示物体的具体位置等属性。

  • 向量:具有大小和方向。例如给定一个三维直角坐标系,向量 A B ⃗ \vec{AB} AB = B-A,其中A为起始点,通常为原点,B为终点(x, y, z),大小为|| A B ⃗ \vec{AB} AB || x 2 + y 2 + z 2 \sqrt{x^{2} + y^{2} + z^{2}} x2+y2+z2 , 方向为 A B ⃗ / \vec{AB}/ AB /|| A B ⃗ \vec{AB} AB ||.
  • 向量点乘:点乘得到的是一个数, a ⃗ \vec{a} a
在这部分的课程中,我们将专注于使用光线追踪来渲染图像。在光线追踪中 最重要的操作之一就是找到光线与物体的交点。一旦找到光线与物体的交点,就 可以执行着色并返回像素颜色。在这次作业中,我们需要实现两个部分:光线的 生成和光线与三角的相交。本次代码框架的工作流程为: 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、付费专栏及课程。

余额充值