总览 在这次编程任务中,我们会进一步模拟现代图形技术.我们在代码中添加了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), 你需要将这三个点的坐标变换为屏幕坐标并在屏幕上绘制出对应的线框三角形.简而言之,我们需要进行…
总览 在这部分的课程中,我们将专注于使用光线追踪来渲染图像.在光线追踪中最重要的操作之一就是找到光线与物体的交点.一旦找到光线与物体的交点,就可以执行着色并返回像素颜色. 在这次作业中,我们要实现两个部分: 光线的生成 光线与三角的相交. 本次代码框架的工作流程为: 从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 增加一个微小值.对于…
作业描述 给定一个点P=(2,1), 将该点绕原点先逆时针旋转45◦,再平移(1,2), 计算出变换后点的坐标(要求用齐次坐标进行计算). UE4 知识点 主要矩阵 FMatrix FBasisVectorMatrix FLookFromMatrix FOrthoMatrix FReversedZOrthoMatrix FPerspectiveMatrix FReversedZPerspectiveMatrix FScaleMatrix FTranslationMatrix FRotationT…
1.漫反射 此模型属于经验模型,主要用来简单模拟粗糙物体表面的光照现象 此模型假设物体表面为理想漫反射体(也就是只产生漫反射现象,也成为Lambert反射体),同时,场景中存在两种光,一种为环境光,一种为方向光,然后我们分别计算这两种光照射到粗糙物体表面所产生的光照现象,最后再将两个结果相加,得出反射后的光强值. 首先是计算环境光的公式: I_ambdiff = K_d * I_a; 其中,K_d为粗糙物体表面材质对光的反射系数,这个系数由程序编写者在宿主程序中给出,I_a为环境光的光强,也就是…
这次我们来用DirectX12实现一下基本的Blinn Phong光照模型.让我们再把这个光照模型的概念过一遍:一个物体的颜色由三个因素决定:ambient, diffuse, specular.ambient表示场景中的其他物体反射出来的光线到该物体所呈现的颜色,与摄像机所在的位置无关:diffuse表示物体内部所吸收的光线反射出来所呈现的颜色,它是完全杂乱无章而且随机的,可以假设散射到任意方向的分量都是相等的,因此也与摄像机所在的位置无关:specular表示物体根据Fresnel效应,入射…
回顾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 \…
NABC正是这样的一套框架,当你试图提出一项崭新的提案之际,它能够提供四个思维基点,令你的商业策划具备天马行空的基础. 具体来说,NABC是四个关键词的首字母缩写- Need(需求)-现在市场上未被满足但又急需满足的客户需求是什么? Approach(方法)-要满足这种需求,我能够提出什么独特的方法吗? Benefits (收益)-该方法给顾客提供的便利是什么? Competition (竞争) -对于竞争对手和其他可选择的方案来说,这种单位成本收益的优势在哪里? Delivery(推广)我所实…