简介

法线贴图就是在原物体的凹凸表面的每个点上均作法线,通过RGB颜色通道来标记法线的方向,你可以把它理解成与原凹凸表面平行的另一个不同的表面,但实际上它又只是一个光滑的平面。对于视觉效果而言,它的效率比原有的凹凸表面更高,若在特定位置上应用光源,可以让细节程度较低的表面生成高细节程度的精确光照方向和反射效果。

法线贴图是可以应用到3D表面的特殊纹理,不同于以往的纹理只可以用于2D表面。作为凹凸纹理的扩展,它使每个平面的各像素拥有了高度值,包含了许多细节的表面信息,能够在平平无奇的物体外形上,创建出许多种特殊的立体视觉效果。

什么是法线贴图技术呢?这是一种用来实现3D效果的一种技术,要想理解这种技术还请您听我慢慢道来。

  我们知道,在游戏中经常会有这样的情况,就是一个平面——这个平面在现实中并不是一 个“平”面,例如砖墙的表面带有石质浮雕等等。这样的情况如果要求游戏开发人员将复杂的3D细节都做出来是不现实的,因为即使不计较在建模时候的复杂度, 过多的3D细节也同样会大量消耗显示芯片的性能,让游戏根本没有可玩性。

法线贴图

如何利用贴图实现凹凸效果呢?

  可行的方法就是将这个平面用一个贴图覆盖,用贴图的纹理实现一定的凹凸效果。但是这种方法实现的效果并不是很好,因为如果视角一变化,看起来就会像一张简单的画有图案的平面了。

  后来,聪明的游戏开发者想出了一种方法,就是在贴图过程中对贴图进行一定的处理,从而保证了在视角变换以后仍然保证有较为明显的凹凸效果。

  光与影,法线贴图技术的物理学基础

  我们知道,人之所以能够对景物看出立体感的主要原因是因为人有两只眼睛。两只眼睛看的景象是不同的,所以人们才能分辨出立体感来。但是,由于电脑的屏幕是一个平面,分辨3D效果就只能靠光影效果来实现了。

  举个简单的例子,这就像我们画素描的时候,为了不让一个球体看起来像是一个圆圈,必须让球体的一些区域是亮的,一些区域是暗的。而且从亮部转向暗部的时候是一个均匀的按照物理模型特点的过渡,这样画出来的球体才像个球体,电脑为我们绘制的过程也是一样。

法线贴图

因为有明暗,我们才能将平面理解成立体

  基于这个道理,我们就不难理解可以通过贴图局部的亮暗变化来实现假的3D效果。换一种说法就是说我们可以通过在贴图上的局部做一些亮暗的变化来做到一种假的3D效果。

法线贴图

光照因角度不同而呈现不同的明暗

  那么如何实时的对贴图进行转换呢?如果要实现虚拟的光影变换,我们最起码需要知道在一个平面上真正的凹凸的情况,这样才能让显示芯片进行运算,生成一种假的凹凸的效果。

  显然,记录真实的凹凸模型是得不偿失的——如果那样的话就没有任何意义了,我们需要用一种非常简单的方法来记录一个贴图的凹凸情况,于是就诞生了一种全新的方法,法线贴图技术。

  接下来,我们再回到我们刚才谈到的法线贴图的话题上。

  法线贴图就是记录了一个需要进行光影变换的贴图上的各个点的凹凸情况的贴图,显示芯片根据这个贴图的内容,来实时的生成新的有过光影变化的贴图,从而实现立体效果。

  那么,究竟是怎样利用法线贴图记录一个平面或者说是一个贴图的凹凸情况呢?我们知 道,物体表面产生明暗变化的直接原因,就是光线照射角度的不同,光线垂直于平面的地方就亮,光线斜射到平面的地方就暗,光线照不到的地方就更暗(应该是黑 色,但是由于环境光照所以不会有阴影是真正的黑色)。

  借色彩之值存法线之向,巧妙的存储

  学过初中物理的朋友一定还都记得,表示光线射向平面的角度时通常使用光线和该点法线角度来表示。这也就意味着,如果我们将一个贴图上所有点的法线记录起来的话,就不难再利用这些信息实现后期的假的凹凸效果了。

  记录这些法线的载体就被我们称为法线贴图。为什么称之为贴图呢?我们知道,一条法线 是一个三维向量,一个三维向量由X、Y、Z等3个分量组成,于是人们想出了一个聪明的方法,就是以这3个分量当作红绿蓝3个颜色的值存储,这样的话就生成 一张新的贴图了,这就是法线贴图的来历。

法线贴图

采用色彩通道存储法线向量

  法线贴图其实并不是真正的贴图,所以也不会直接贴到物体的表面,它所起的作用就是记录每个点上的法线的方向。所以这个贴图如果看起来也会比较诡异,经常呈现一种偏蓝紫色的样子。

法线贴图

法线贴图的生成过程

法线贴图

Doom3中的一张纹理贴图和这张贴图对应的法线贴图

  『小提示-05:事实上,真正的法线贴图并不是记录贴图上每个点的法线的绝对角度,而是记录的是相对于平面的一个差值。这样的话,随着平面的3D变换都能够实现即时的法线运算了。』

  传统纹理压缩,法线贴图不再适用

  采用法线贴图技术的优势就是利用很少的资源实现了效果非常好的凹凸效果,而且可以利用我们在开篇的时候提到的纹理压缩技术对法线贴图进行压缩,进一步节省资源。

法线贴图

前面的那张圆球图案的法线贴图

制作法线贴图

接下来我们在3ds Max里面制作Normal Map (法线贴图),将低模和高模分别命名为:low-model和high-model,然后将导出的低模UV 分好,高模不用分UV。

图22

  接着把高模和低模适配到一起

图23

  高模和低模匹配好以后,在Max菜单栏里找到Rendering 展开并选择Render To Texture。

图24

  接下来的操作是:

  展开General Settings栏并在Output里并设好输出的路径,选中视图中的低模(low-model),选中以后在Render to Texture窗口中Objects to Bake栏里面会显示所选的物体信息。

图25

  在Projection Mapping中勾选Enabled并点击Pick按钮,在弹出的窗口中选择高模(high-model),这时视图中的两个模型会有所变化。

图26

  与此同时在低模的修改面板中会增加一个修改器“Projection”,到Projection栏中展开Cage并点击Shaded(有点类似蒙皮)和reset(重新设置),然后拖动Amount值(结合到视图中观察模型外沿的变化而设,外面的蒙皮一定要包住两个物体不能有穿,不然烘焙出来会出问题)。

图27

  在Mapping Coordinates里面勾选Object 的Use Existing Channel(使用现有的UV,之前我已经给低模(low-model)分好了UV);展开Output栏后点击Add在弹出的窗口中选择Normal Map再点Add Elements,可以调整贴图的尺寸,我选择的是1024*1024,然后勾选Output into Normal bump,最后再点击Render便可以渲染出来,渲染的时候最好用scanline(线扫描渲染器)。

图28

  渲染出来的效果,(红色区域是我之前将高模和低模锁骨部分删掉后,两个模型不一样所造成的)。

图29

  Normal Map(法线贴图)渲染好以后,我们贴到低模(low-model)上看看效果,给低模一个材质球,在map栏里的Bump中添加Normal Bump,然后在Normal  bump 里面的Normal 里贴刚刚生成出来的Normal map (法线贴图),只要渲染便可以看到效果。

图30

  如果要在视图中直接看到法线贴图的,效果需要调整一下设置:

  在max菜单栏上展开Customize选择Preference,在弹出的窗口中依次选择:Viewports---Choose Driver(弹出的窗口中)勾选Direct3D(Recommended),重新启动max。

图31

  打开材质编辑器,在刚刚贴法线的材质球中展开DirectX Manager ,勾选DX Display of Standard Material ,等待一会儿显示贴图的“盒子”会变成红白的棋盘格,点击便可以在视图中看到法线的效果。

图32

图33

  做到这一步,次世代模型的Normal Map(法线贴图)算是告一段落了,当然制作法线的方法还有很多种,这只是其中一种,由于时间的关系我这里就不一一列出来,希望这个教程能给大家带来一些帮助!看后大家有什么意见和建议可以与我联系。

  后面抽了些时间简单的做了些贴图:Color Map、Specular Map、Normal Map。

如果你想要学好3D次世代 ,游戏建模,,Maya,3Dmax,  最好加入一个组织,这样大家学习的话就比较方便,还能够共同交流和分享资料,给你推荐一个学习的组织学习有困难或者想获取资料请加学习QQqun: 809870691一起学习

什么是法线贴图 今天教你如何制作法线贴图相关推荐

  1. html .9.png 自动拉伸,4招教你如何制作点九图(.9.png)

    对于很多人们来说都不知道点九图是什么?又应该如何制作?并交付对接给开发.今天我将工作中积累的知识和经验分享给各位,希望对大家有帮助. 这次我将点九图分为4个方面来讲:1.概念  2. 展现方式  3. ...

  2. 如何用计算机制作动态图,怎样用电脑轻松制作GIF动图图片

    GIF动态图片在网上是很流行的,不管是社交软件.自媒体平台还是微信公众号都喜欢用GIF动态图片.GIF动态图片通过对图层的图片,按时间进行不同的切换,从而达到动画效果,生动形象.小伙伴们喜欢运用或浏览 ...

  3. php能做彩票走势图么,如何用EXCEL制作彩票走势图?

    如何用EXCEL制作彩票走势图? 关键字:彩票 更新时间:2018-03-11 11:10:24 76次访问 网上的彩票走势图用excel可以制作吗?如果行,如何做?最好要象网站上的一样能够随时刷新, ...

  4. 用html批量绘制k线图,10分钟学会ikvStockChart制作K线图(股票走势图)

    前言: 最近在技术群里面,总是有人在问这个股票图怎么做,有没有相关的三方库可以使用呢?其实我也想研究这类的项目,刚好在github上面遇到了一个制作K线图的库,叫做 OK,Show me your c ...

  5. gif背景图html,教你更换样式GIF背景图~文末超美!

    先来欣赏一波GIF背景图样式: GIF背景样式 ||  样式ID:87514  || 我对生命无所期待.我没有预先想过要什么.生活本身就够激动人心的了. by 萨冈 ||  样式ID:40508  | ...

  6. sip 时序图_教你如何看懂时序图(小白如何快速轻松的看懂时序图)

    操作时序永远是使用任何一片IC芯片的最主要的内容,看懂时序图,再操控这个芯片就非常容易了.而提取芯片器件手册上有用的信息是使用芯片的最基本步骤. 以液晶显示芯片1602为例 首先我们来看1602的引脚 ...

  7. Echarts 图表制作建议指南思维导图,教你什么数据画什么图

    Echarts图表制作思维指南总结 ... ---- Nick.Peng 一.Echarts图表制作建议指南 有了它,开发时就知道什么样的数据画什么图了,以后画图再也不用发愁啦 ...

  8. 怎么做动态文字闪图?教你一键在线做闪图

    想要制作炫酷的动态文字闪图,应该使用什么软件呢?很简单,使用专业的gif图片制作(https://www.gif.cn/)工具-[GIF中文网],只需要打开网站上传jpg.png格式的图片,就能够快速 ...

  9. 图片拼接成gif怎么拼接?教你一键制作gif动图

    平时大家在跟朋友聚会的时候都会用手机拍一些照片,这些照片如果能连起来做成gif动图的话会更有吸引力,所以今天来给大家推荐一款gif生成器,支持在线gif合成功能,只需要3个步骤就能完成gif动图制作, ...

  10. 图片如何制作GIF?教你在线制作GIF动图

    图片充斥着我们的生活和工作,当我们把几张可爱有趣的图片合成一起生成GIF格式的动态图片就会出现不一样的视觉效果.那么,这种动态GIF图片是怎么制作的呢?下面,就给大家分享一款**图片合成**GIF工具 ...

最新文章

  1. 推荐关注这7个高质量的前端公众号
  2. 分布式SQL学习总结(1)——蚂蚁金服资深总监韩鸿源:像使用集中式数据库一样使用OceanBase分布式数据库
  3. vue实现分屏_VUE视频怎么分镜 VUE视频如何进行分镜编(图文步骤)
  4. win10安装RNDIS驱动
  5. rn 滑动验证_rn-fetch-blob
  6. 解决pygame中按键连续按下的问题
  7. 计算机网络知识点自我总结
  8. 阿里云认证证书合集(一起来考证)
  9. ComicTheme 隐私条款
  10. 使用Docker制作镜像并推送到镜像仓库
  11. 再谈GC3:GC调优思路与常用工具
  12. 如何在家远程控制公司的电脑,高效便捷的远程办公?
  13. cs231n课程笔记 摘抄
  14. 1011 最大公约数GCD
  15. UIReferenceLibraryViewController:App中字典词义查询的实现
  16. matlab光谱实验,实验四Matlab神经网络及应用于近红外光谱的汽油辛烷值预测
  17. 智源论文前沿记录230610
  18. 移动端-动态改变字体大小
  19. Session攻击手段(会话劫持/固定)及其安全防御措施
  20. 电表检测部署应用:手把手教你把PPOCRLabel改成想要的模样

热门文章

  1. 我工作用的电脑十年没重装过一次系统,我是如何做到的
  2. 【JVM】17、垃圾回收器
  3. 联想android刷机教程,联想YOGA Tablet 2线刷刷机教程 Android版可救砖
  4. 华为云学习笔记(二)
  5. java.lang.IllegalStateException: The specified message queue synchronization barrier token has not
  6. 文件夹目录权限实现方法总结(附代码)
  7. RabbitMQ消息发布确认
  8. leapftp连接不上,为什么leapftp连接不上
  9. 带权图上的三个问题--最短路问题、中国邮递员问题与货郎担问题
  10. 邮递员算法问题之c++实现