环境映射Environment mapping,颠簸映射Bump mapping,正常映射Normal mapping,位移映射Displacement mapping

环境映射Environment mapping,颠簸映射Bump mapping,正常映射Normal mapping,位移映射Displacement mapping

1.简介
还有其他纹理方法:
•环境映射Environment mapping
•颠簸映射Bump mapping
•正常映射Normal mapping
•位移映射Displacement mapping

2.环境映射 /反射映射
•放置对象的环境在物体的表面中反映
例子:镜子太阳镜,闪亮的厨房用具,宇航员的头盔等
•区分两种情况:
浸入合成世界中的合成对象; 浸入现实世界中的合成对象

• 大概的概念:
•从角度来看,找出反射的射线在世界上相交的内容, 但这很慢
• 反而:将周围世界存储在与物体相关的“周围纹理”中, 从角度来看,找出周围纹理中反映的射线与利用存储的值(这是特定于观点的)
•将周围世界存储在一个与对象相关的“周围纹理”
•球形映射:更复杂
•立方体映射: 最常见的, 相对易于构建

2.1立方体映射
两个阶段:
•阶段1:创建立方体地图:外线舞台
包围物体用立方体映射; 使用立方体的中心作为视点和从多维数据集的每个面上看到的环境图像(注意:虽然在图中可见,但红眼睛的目的是位于立方体的中心,因此也位于茶壶的“中心”中。) 将结果存储为“纹理”地图,每个面在u和v中都被参数化
•阶段2:在渲染: 实时使用
反射的向量:
使用视点向量(V)和片段正常(n)计算;
r = 2(n.v)n-v(归一化);
找到反射矢量相交的立方体面孔;
计算u,v坐标并在纹理图中查找价值

•环境图的分辨率影响质量
•浸入现实世界中的合成对象:
从现实世界中的特定点拍摄照片对应于当时的虚拟立方体面孔;
六张照片成为立方体映射中使用的纹理;
真实场景的照片是从虚拟的位置拍摄的,对象要插入;
缺点:如果移动对象,则需要重复重复,但不仅仅是变形
并且不从一个地方或条件移动到另一个地方。

•将环境地图与天箱(skybox)结合
Skybox是制作的背景一个场景看起来比现在更大,例如添加一张天空的图片(移动)云作为纹理盒子或球体的内部围绕整个场景。
Skybox跟随相机移动。
环境映射技术可以与使用“ Skybox”
可以将相同的纹理添加到Skybox和用于环境图
取决于对象是否是更大的场景,需要场景环境图
如果对象变形,则可以重复使用相同的周围环境图
如果对象在场景周围移动,则环境每个动画框架都需要重新计算地图(即每个新的位置)

2.1 环境映射:缺点
•反射的几何形状无疑是不正确的
•但足以愚弄观众
•质量取决于环境的分辨率地图
•对象无法反映自己,例如 茶壶喷口
•每个对象都需要单独的地图场景,因为环境图必须是从物体的位置构建
•如果对象翻译所需的新地图
•相邻的闪亮物体不会相互作用
•射线追踪所有这些问题

3.在表面上产生颠簸
三个替代方案:
•颠簸映射(Blinn,88)→改变正常的几何形状,欺骗眼睛
•正常映射
更换正常,使用正态分子代表,表面细节分层简化模型
•排量映射→改变几何形状

3.1颠簸映射
•凸起图案作为纹理图存储
•灰度编码虚拟表面的高度
•此信息用于改变正常表面
•使用纹理图改变表面渲染过程中正常:
i = f(n),即如果n更改,则光强度变化.因此,眼睛相信有颠簸
•使用tbn( (tangent切线, bitangent, normal) 在每个相关表面点,即(PU,PV,N)
bitangent: 在几何形状中,与曲线C的小点是在两个不同的点P和Q中接触C的线L,并且在这些点上具有与C相同的方向。 也就是说,L是P和Q处的切线。
tbn空间:切线空间的原点就是顶点本身,z轴是顶点的法线方向(n),x轴是顶点的切线方向(tangent, t)。Attention!!! 既然以及知道了两个轴,那么通过叉积运算,我们可以得到y轴,其被称为副切线(bitangent, b) 或者 副法线。
•缺点:轮廓边缘保持不变

3.2正常映射
•纹理中的r,g,b用于存储X,Y,Z组件正常的组件
•对于每个普通组件,[-1,1]需要映射到[0,1]
•正常地图用于在阴影时提供正常: 必须考虑使用TBN空间的现有表面正常的方向
•将原始网格中的表面细节烘烤到正常地图中
•然后,仅渲染简化的网格三角形,正常地图用于添加正常状态,从而诱使眼睛看到细节
•可以将凹凸地图转换为普通地图: 使用相邻高度之间的部分差异计算正态
直接把高度图(Height map)转换成一张法线图(Normal Map),其图的RGB分别是原高度图该点的法线指向:Nx、Ny、Nz,这张图可由Direct3D的专门函数帮助我们计算。最后在渲染的时候直接将该 高度图的每个像素与光源的向量点乘,即可得到表示每一点的明暗系数的图:根据高度图,越突出的地方,法线与光源夹角越小,该点的数值越大。接着将这张图乘 到渲染线中即可,这样就使模型在背光的凹处有阴影而在面向光源处更亮的效果,这样的3D模型看起来就像真的凹凸不平一样!
Bump Map存储的是高度差,而非Normal Map直接存储法线值。这一点值得让人思考。即,Bump存储一张8bit灰度图,而Normal存储一张24bit RGB彩色图!

3.3位移映射
•将高度字段存储在纹理地图中
•更改对象的实际几何形状
•依靠对象的几何形状足够详细
•替代方案:将纹理转换为几何并替换对象的现有几何形状
位移映射与凹凸贴图之 间区别在例 图中已经很明显地显现出来了:在凹凸贴图中,只有法线进行了扰动,而几何体本身没有扰动,这样的结果就是人为改变只出现在物体的轮廓上,而球体本身仍然是原来的圆 形。即凹凸贴图只 是视觉上的改变,就像一个画得很透视的图片;而位移映射却真的将3D物体变得“凹凸不平”。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值