一种凹凸贴图新算法 (薛守良,苏鸿根)
来源:互联网 发布:tensorflow安装32位 编辑:程序博客网 时间:2024/05/20 20:44
1 BUMP MAPPING简介
凹凸贴图是通过随机扰动表面法线的方法,改变光线的反射方向,从而生成表面凹凸纹理的真实感效果。Blinn 在1978 年提出上述的经典方法。
理论上可以求导的函数均可以当作扰动函数F( u , v) 。
在凹凸贴图中的一个重要概念是凹凸图。凹凸图其实是一种纹理图,它包含了将要用于场景模型的纹理一些简要信息。这种信息根据使用的方法不同,有着不同的形式。比如高度图,那里面存储的就是每个象素的高差值,这种纹理图一般以灰度图方式存储,也就是说,此种凹凸图里只有一维信息;对于法线图来讲,它将每个象素的法矢存储在纹理图中,并以RGB 数据
作为法矢与三维坐标之间的转换。现在主要的凹凸贴图方法有以下几种:
浮雕式凹凸;扰动u v 凹凸;dot3 凹凸;浮雕式凹凸是通过高度图作为凹凸图的,使用反转后的纹理图在光线方向上偏移,并与原纹理图进行混合,从而产生“浮雕”效果的。这种算法不需要特别硬件的支持,但是效果不理想。
扰动u v 凹凸又叫做环境凹凸贴图。这种技术需要三层纹理:基本纹理图,凹凸图,反射图;通过凹凸图对反射进行纹理坐标偏移达到预期的效果要求。这种算法是基于多纹理混合以及纹理坐标映射,目前大部分硬件都支持。
dot3 凹凸(Dot Product3 Bump Mapping) 算法是基于上述的Blinn 的算法,不过需要支持DOTPRODUCT3 多纹理操作的硬件。对于以上所述的方法,各有优劣;其中浮雕式凹凸占有资源最低,不需要特别硬件,但是效果最差;扰动u v 凹凸及dot3 凹凸占有资源较多(包括CPU 及GPU) ,效果较好,但是dot3 凹凸需要特别硬件支持,而且只有在点光源的情况下才有较好的效果。本文所述的方法,不需要特别硬件的支持,资源占有较少,但是效果很好。称之为CP 凹凸(Cross - Plane Bump Mapping) 。
2 CP 凹凸算法
在CP 凹凸方法中,将凹凸图定义为曲面上点的法矢角度的集合。此纹理图
的每一个象素以32bit 浮点数表示,代表法向矢量的角度。如图1。在如图所示的平面方式中,可以定义
起始角度为0 (0) ,终止角度为1 ( PI) 。但是在实际运用中是三维的情况,将使用两个凹凸图:水平图,垂直图;水
平图表示在XOY 平面上的凹凸变化,垂直图表示在ZOY平面上的凹凸变化;如图2。
算法中需要两个关键,一个是光源矢量的角度,一个是凹凸图;当曲面上的一点的法矢和光矢量一样时,那么结果是0 (黑色) ;如果二者相差不大,结果就是不太暗的颜色;如果相差很大,那么将是亮角;这里可以看出,所需的纹理图是光矢量与法矢的差异值;即需要将凹凸图中减去光矢量(实际存于颜色数据中) 的绝对值作为纹理的结果。最后将这些纹理结果反转,混合水平及垂直的凹凸图,得到场景中最终的结果。
- 一种凹凸贴图新算法 (薛守良,苏鸿根)
- 凹凸贴图(bump mapping)
- modelview与凹凸贴图
- unity3d 凹凸贴图、法线贴图、置换贴图
- 凹凸贴图、法线贴图、置换贴图
- 凹凸贴图(bump mapping)概念
- 凹凸贴图(bump mapping)综述
- Houdini如何创建凹凸贴图?
- Maya 凹凸贴图与置换贴图
- 凹凸贴图与法线贴图的区别
- D3D11 法线贴图(凹凸贴图)
- 置换贴图,法线贴图,凹凸贴图的区别
- unity3d 凹凸贴图、法线贴图、置换贴图 (一)
- unity3d 凹凸贴图、法线贴图、置换贴图 (二)
- 置换贴图,法线贴图,凹凸贴图的区别
- 置换贴图,法线贴图和凹凸贴图详解
- 置换贴图,法线贴图,凹凸贴图的区别
- 写给美术朋友们的凹凸贴图白皮书
- 中秋节祝福短信
- 访问数组中的值(Accessing Values in an Array)
- 如何使Linux系统上的程序开机后自动运行
- 中秋短信送祝福
- Statement (3)
- 一种凹凸贴图新算法 (薛守良,苏鸿根)
- 成功:linux 上 QQ
- fstab的修复 不需要disk的方法
- 《深度探索C++对象模型》存疑
- asp 去掉Html代码函数
- ASP.NET 页生命周期概述
- asp 文件、文件夹操作函数
- OpenGL 中贴长宽不为2的幂的纹理的方法(李传中)
- 国际域名.com/.net 10月份全部升价