法线贴图的一些总结

总的来说法线贴图就是一张RGB图记录了XYZ的法线信息,无它,但关键是一个切线空间,推荐以下几篇文章。

http://blog.csdn.net/bonchoix/article/details/8619624

http://www.cnblogs.com/shuifenzi/articles/2551364.html

http://www.cnblogs.com/jim-game-dev/archive/2016/04/19/5410529.html

摘出文章中一些最关键的知识点:

1.模型顶点中的纹理坐标,就定义于切线空间。普通2维纹理坐标包含U、V两项,其中U坐标增长的方向, 即切线空间中的tangent轴,V坐标增加的方向,为切线空间中的bitangent轴。所以可以根据这一点计算从切线空间到物体空间的变换,这是求切线空间最核心一点。

2.通常我们所见的法线纹理还是基于原法线信息构建的坐标系来构建出来的。那种偏蓝色的法线纹理其实就是存储了在每个顶点各自的Tangent Space中,法线的扰动方向。

3.之所以用切线空间来表示法线,是因为切线空间是相对于每一个顶点的,也就是说这个法线信息是基于每一个顶点的相对值,可以理解成是一种扰动。所以即便把该纹理应用到一个完全不同的网格上,也可以得到一个合理的结果。可进行UV动画。比如,我们可以移动一个纹理的UV坐标来实现一个凹凸移动的效果,这种UV动画在水或者火山熔岩这种类型的物体会会用到。

4.在计算中一般将光源位置方向等变换到切线空间中去计算,而不是反过来。主要是考虑效率的问题,切线空间中计算大部分在VS中,而世界空间中计算大部分在PS中。使用NormalMap的先决条件--逐像素著色。

5.NormalMap看来可以增加细节,但是它的缺点也很明显。最大缺点是不能平视。因为NormalMap只是改变的表面上的光照结果,并没有改变表面上的形状。而且NormalMap因为不能实现自身内部的遮挡,因此不能表现平面上凹凸起伏比较大的场合。NormalMap只能用在大家对遮挡关系不敏感的场合,比如场景等,而用NormalMap的人物不太经得起特写,放大了,角度刁钻了都容易穿帮。

6.BumpMap。这种贴图是一种灰度图,用表面上灰度的变化来描述目标表面的凹凸。早期发明NormalMap的时候还没有MAX这种这么方便生成NormalMap的方法,NormalMap都是从BumpMap计算得到的,因此其实通过很简单的算法就可以从BumpMap算出NormalMap的。

时间: 2024-10-15 19:57:52

法线贴图的一些总结的相关文章

法线贴图技术

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多Unity3D资源.Unity3D培训视频.Unity3D教程.Unity3D常见问题.Unity3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 什么是法线贴图技术呢?这是一种用来实现3D效果的一种技术,要想理解这种技术还请您听我慢慢道来. 我们知道,在游戏中经常会有这样的情况,就是一个平面这个平面在现实中并不是一个"平"面,例如砖墙的表面带有石质浮雕等等.这

法线贴图——Normal Mapping

对于不曾学过.用过法线贴图的人来说,提到法线贴图,经常会提到的问题是什么是法线贴图?法线贴图用于解决什么问题?法线贴图的原理是什么?本文将就这三个问题阐述本人的一些见解,各位不喜勿喷!!! 谈到法线贴图首先提到的是切线空间,参考网站 http://blog.csdn.net/bonchoix/article/details/8619624 PS:常提到的纹理坐标就是定义在切线空间的,U坐标对应切线空间的T轴,V轴对应切线空间的B轴,顶点法向量N对应切线空间的N轴,模型中每个三角形都有对应的切线空

【Unity Shaders】Reflecting Your World —— Unity3D中的法线贴图和反射

http://blog.csdn.net/candycat1992/article/details/24541623 本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源(当然你也可以从官网下载). ========================================== 分割线 ==================================

【转】法线贴图原理

原文地址http://www.cnblogs.com/flytrace/p/3387748.html 我算个笨人吧.笨人以前弄懂一些东西后,讲给笨人听往往更有效.看之前请自行具备图形学关于光照的基础知识. >> world/object space normal map 我们先讲基于世界或模型坐标的法线贴图(world/object space normal map).不常用,但是基础. 首先,请无视你之前google到的所谓通过Photoshop生成法线贴图类似文章,美术除外.那只是一种利用

NormalMap 法线贴图

法线贴图 存储法线的一张贴图,法线的 xyz 的值被映射成为对应的 RGB 值.即法线的分量由(-1,1)映射成(0,127).法线贴图一般呈蓝色,因为大多数朝向 (0,0,1)的法线被映射成为了 (0,0,127). 切空间(Tangent Space,TBN):纹理空间 切空间是在某一点所有的切向量组成的线性空间.也就是说,在模型每个顶点中,都存在这样的一个切空间坐标系,以模型顶点为圆心,再加上TBN3个轴(Tangent,Binormal,Normal),N是顶点的法线方向,T.B两个向量

Unity3d《Shader篇》法线贴图

效果图 贴图 法线贴图 //代码 Shader "Custom/NormalMap" { Properties { _MainTex ("Texture", 2D) = "white" {} _NormalMap ("NormalMap", 2D) = "bump" {} _Color ("Main Color", Color) = (1,1,1,1) _SpecColor("

Unity3D ShaderLab法线贴图

Unity3D ShaderLab法线贴图 说到法线贴图,应该算是我们最常使用的一种增强视觉效果的贴图.将法线贴图的各个像素点座位模型的法线,这样我们的光照可以模拟出高分辨率的效果, 同时也保持较低的多边形数.法线贴图通常存储在一个普通的rgb图片,他的rgb分量分别对应了曲面法线的xyz坐标. 在Unity中,会通过UnpackNormals()函数来使用法线贴图,这使得在表面着色范围内为我们的着色器添加使用法线的过程变得更容易. 首先,创建一个shader和材质球.我们开始修改shader代

【转载】法线贴图Nomal mapping 原理

法线贴图多用在CG动画的渲染以及游戏画面的制作上,将具有高细节的模型通过映射烘焙出法线贴图,贴在低端模型的法线贴图通道上,使之拥有法线贴图的渲染效果,却可以大大降低渲染时需要的面数和计算内容,从而达到优化动画渲染和游戏渲染的效果. 现在好多3d网游都没有法线贴图啊,呵呵,<giant>就没有. CG:计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学.简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形

Esfog_UnityShader教程_NormalMap法线贴图

咳咳,好久没有更新了,一来是这段时间很忙很忙,再来就是自己有些懒了,这个要不得啊,赶紧补上.在前面我们已经介绍过了漫反射和镜面反射,这两个是基本的光照类型,仅仅依靠它们就想制作出精美的效果是远远不够的,这一篇我们就来了解一下如何利用一种叫做法线贴图的技术并结合我们前面讲过的知识来制作出更精细的效果. 法线贴图NormalMap 首先要提到的是,什么是法线贴图,如果大家想看更专业的解释可以自行求助搜索引擎,这里我说一下我的个人理解:在游戏中,如果角色或物体模型做的越精细(面数越多),那么渲染后效果