Game101课程笔记_lecture10_几何

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1 纹理应用

纹理理解成一块数据,去查询。

1 环境光-环境贴图

纹理用来表示表示环境光
经典模型-经典名字
这个图里的茶壶是ulta teapot
兔子

康奈尔盒子
在这里插入图片描述
在这里插入图片描述
存储环境光,把环境光存储到一个球上。并且把它展开,但是它有扭曲问题。
在这里插入图片描述
在这里插入图片描述
解决办法:
存储到立方体的表面。没有扭曲的问题了
但是需要额外 的计算,描述不同方向的光照关系。
能看到它,一定有光线发射到你的眼睛,它一定有光发出。

在这里插入图片描述在这里插入图片描述

2 凹凸贴图(法线贴图)

存储高度和法线
不把几何形体变复杂的情况下,用纹理来表示相对的高度,也就是法线发生变化,导致着色的明亮对比。
人为的做假的法线,
为了改变任何一个点它的法线。
在这里插入图片描述

1 Bump Mapping

通过改变顶点的相对高度,从而改变了其顶点法线
在这里插入图片描述
计算新的法线方向,
线切线
用凹凸贴图计算切线,然后再计算出法线:
2D:
在这里插入图片描述
3D:
在这里插入图片描述

3 位移贴图

用一个纹理定义任意一个点应该到的高度,这个是真的做个移动。
这个位移贴图的结果要更好,但是需要模型的顶点要足够细。
三角形足够细致要比纹理定义的频率还要高。

在这里插入图片描述

动态的曲面细分,根据需要做曲面的细分,directX有个API就是做这个的

4 三维纹理

三维空间中噪声函数。
在这里插入图片描述

5 环境光遮蔽

计算好的一副纹理,然后将这张纹理贴上。
很大计算可以拿到之前就行计算,可以用纹理来记录之前的信息。
在这里插入图片描述

6 体渲染3D Texture and Volume Rendering

在这里插入图片描述

2 Introduction Geomtry

1 几何的例子

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
纤维-绳子-毛衣
在这里插入图片描述

在这里插入图片描述
城市的几何多,如何存储
在这里插入图片描述
这个毛发如何表示,非常非常复杂
在这里插入图片描述
细胞和蛋白质,什么时候,如何过渡。
在这里插入图片描述

在这里插入图片描述
几何不是都可以用三角形面来表示的事情

2 几何表示的方法

在这里插入图片描述

1 隐式的表示

用隐式方程表示,给你一个关系,满足这个关系,就是这个几何体上的点。
在这里插入图片描述
知道这个式子的形状很难。

在这里插入图片描述
判断一个点是否在这个面上是非常简单的事情。
在这里插入图片描述

2 显式的表示

直接把所有的点或者通过参数映射的表示
马鞍面是大家非常喜欢的几何体

在这里插入图片描述

在这里插入图片描述
测试一个点在不在几何体内比较难。
在这里插入图片描述

有一些问题适合显示,有一些适合隐式
几何太难了!
在这里插入图片描述

3 隐式表示的几个方法

在这里插入图片描述

1 代数曲面

几何隐式 的表示方法通过代数的形式。但是一些简单的形体也需要特别复杂的代数来表示。
在这里插入图片描述
在这里插入图片描述

2 基本几何图的布尔运算

通过一般几何体布尔运算来得到!

在这里插入图片描述

3 距离函数:(不懂)

表示能力非常强,有很多有用的地方
对几何的距离函数做融合。
在这里插入图片描述
SDF-有向距离函数
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4 水平集方法

在这里插入图片描述
人体密度纹理。
在这里插入图片描述
水滴和水滴融合到一块。
在这里插入图片描述

6 分形

自相似
递归
应用不是很多,这种对于后面会有渲染走样的问题。
在这里插入图片描述
在这里插入图片描述

2 显式表示方法的代表方法

在这部分的课程中,我们将专注于使用光线追踪来渲染图像。在光线追踪中 最重要的操作之一就是找到光线与物体的交点。一旦找到光线与物体的交点,就 可以执行着色并返回像素颜色。在这次作业中,我们需要实现两个部分:光线的 生成和光线与三角的相交。本次代码框架的工作流程为: 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 算法来更新的参数。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值