总览 在这部分的课程中,我们将专注于使用光线追踪来渲染图像.在光线追踪中最重要的操作之一就是找到光线与物体的交点.一旦找到光线与物体的交点,就可以执行着色并返回像素颜色. 在这次作业中,我们要实现两个部分: 光线的生成 光线与三角的相交. 本次代码框架的工作流程为: 从main 函数开始.我们定义场景的参数,添加物体(球体或三角形)到场景中,并设置其材质,然后将光源添加到场景中. 调用Render(scene) 函数.在遍历所有像素的循环里,生成对应的光线并将返回的颜色保存在帧缓冲区(frame…
总览 在上次作业中,虽然我们在屏幕上画出一个线框三角形,但这看起来并不是那么的有趣.所以这一次我们继续推进一步--在屏幕上画出一个实心三角形,换言之,栅格化一个三角形.上一次作业中,在视口变化之后,我们调用了函数rasterize_wireframe(const Triangle& t). 但这一次,你需要自己填写并调用函数 rasterize_triangle(const Triangle& t).该函数的内部工作流程如下: 创建三角形的2 维bounding box. 遍历此bound…
总览 Bézier 曲线是一种用于计算机图形学的参数曲线. 在本次作业中,你需要实现de Casteljau 算法来绘制由4 个控制点表示的Bézier 曲线(当你正确实现该算法时,你可以支持绘制由更多点来控制的Bézier 曲线). 你需要修改的函数在提供的main.cpp 文件中. bezier:该函数实现绘制Bézier 曲线的功能. 它使用一个控制点序列和一个OpenCV::Mat 对象作为输入,没有返回值.它会使t 在0 到1 的范围内进行迭代,并在每次迭代中使t 增加一个微小值.对于…
总览 在这次编程任务中,我们会进一步模拟现代图形技术.我们在代码中添加了Object Loader(用于加载三维模型), Vertex Shader 与Fragment Shader,并且支持了纹理映射. 而在本次实验中,你需要完成的任务是: 修改函数rasterize_triangle(const Triangle& t) in rasterizer.cpp: 在此处实现与作业2 类似的插值算法,实现法向量.颜色.纹理颜色的插值. 修改函数get_projection_matrix() in…
总览 到目前为止,我们已经学习了如何使用矩阵变换来排列二维或三维空间中的对象.所以现在是时候通过实现一些简单的变换矩阵来获得一些实际经验了.在接下来的三次作业中,我们将要求你去模拟一个基于CPU 的光栅化渲染器的简化版本. 本次作业的任务是填写一个旋转矩阵和一个透视投影矩阵.给定三维下三个点v0(2.0, 0.0,−2.0), v1(0.0, 2.0,−2.0), v2(−2.0, 0.0,−2.0), 你需要将这三个点的坐标变换为屏幕坐标并在屏幕上绘制出对应的线框三角形.简而言之,我们需要进行…
作业描述 给定一个点P=(2,1), 将该点绕原点先逆时针旋转45◦,再平移(1,2), 计算出变换后点的坐标(要求用齐次坐标进行计算). UE4 知识点 主要矩阵 FMatrix FBasisVectorMatrix FLookFromMatrix FOrthoMatrix FReversedZOrthoMatrix FPerspectiveMatrix FReversedZPerspectiveMatrix FScaleMatrix FTranslationMatrix FRotationT…
在前文中介绍了什么是物理以及如何在UE4和PhysX中进行可视化调试: Jerry:UE4物理模块(一)---概述与可视化调试​zhuanlan.zhihu.com 这里调试只谈到了碰撞盒(后续还会有场景查询等调试介绍),那么如何创建物体的碰撞盒呢? 碰撞既可以在3D Max中创建成.fbx文件然后导入UE4,也可以用UE4内建的模型工具进行生成.我们以示例场景中摆在桌上的雕塑为例,选中后,双击右侧Static Mesh图片就可以打开模型编辑器了,如下图: 在上面工具栏里面有一个Collisio…
回顾Games101 chatper1 - 6 前言 本文只写回顾后重新加深认识的知识 透视除法的意义 经过MVP矩阵之后,将模型空间下某点的坐标,转换成了裁剪空间下的坐标,此时因为裁剪空间的范围是x∈[-W/2,W/2]和y∈[-H/2,H/2],所以经过以下两个变换,其中除以pz就是透视除法 一: \[-1≤2·\frac{\left( \frac{p_x}{p_z}·near \right)}{w}≤1 \\ -1≤2·\frac{\left( \frac{p_y}{p_z}·near \…
game101的透视投影的投影矩阵是这样的 正交投影是这样的 而shader入门精要的透视投影矩阵是这样子 正交投影矩阵是这样子 game101的透视投影是这样得到的 而正交投影的时候并没有假设中心点在面的中心 所以区别在于正交投影的时候有没有进行一步位移操作. 可能引起误导的地方 书上投影矩阵这样表示 而101则是认为转换成了正方体,但其实他的w是z,所以按照书上的来看,他也还没有进行归一化. 矩阵最后一行的1乘上z就会导致w变为z.看推导过程也能知道 再来看入门精要. 除了w之后,就当成是一…
目录 一.光线追踪概述 1.1 光线追踪是什么 1.2 光线追踪的特点 1.3 光线追踪的历史 1.4 光线追踪的应用 二.光线追踪的原理 2.1 光线追踪的物理原理 2.2 光线追踪算法 2.3 RTX和DXR 2.3.1 RTX(NV) 2.3.2 DXR(Microsoft) 三.UE4的光线追踪 3.1 UE4光线追踪的开启 3.2 UE4光线追踪的特性 3.2.1 光线追踪的阴影 3.2.2 光线追踪的反射 3.2.3 光线追踪的透明 3.2.4 光线追踪的环境光遮蔽 3.2.5 光线…