当前位置: 首页 > news >正文

次世代游戏引擎光影制作简述(转)

Azure大大那里转来:

http://www.azure.com.cn/article.asp?id=429

 

一、游戏光影的范畴
实际游戏制作当中,狭义的灯光只是指程序实时根据灯光影响的顶点色和动态阴影,但实际应用当中,影响玩家整体感觉的光影效果,也就是广义上的光影效果包含的范围要更加广泛。
程序的即时光影,shader的定制固然对光影效果至关重要,美术制作的lightmap,normalmap,VertexColor乃至Glow都可以构成一般玩家认知上的灯光效果。
即是说,在游戏制作应该以游戏玩家的感觉为基准整体的设置光影的效果,而并非仅以技术手段作为分界,对于游戏制作来说,综合程序美术的多种表现手段,最终呈现给玩家的光影的感觉,才是游戏制作当中的灯光。

二、基本灯光系统介绍及使用方法
从画面渲染来说,无论一般网游还是次世代游戏,运算的规则构建是大体相似的,我们可以通过分析这个构架得出其中制作各种光影效果的可能性,下图是比较常规的各种图素经过如何的运算达成了最终画面的pipeline。

http://school.ogdev.net/upload/img/3870298832.jpg


在这样的pipeline中,对最终光影有影响的环节

http://school.ogdev.net/upload/img/3871184690.jpg


Dark Map
Dark Map 也被称为 Lightmap,这是我们目前常使用的方法之一。
这个通道一般放置bake过的灯光贴图,或者Ambient Occlusion Map, 常用的方式是赋予一个另外的UV ,这一张很小的Dark Map就可以在没有灯光的情况下获得良好的光影效果,很多引擎当中是可以由灯光自动生成lightmap的,它的效果一般用在静态物体上。
http://school.ogdev.net/upload/img/3875870158.jpg


Project lights
Project lights就是一般我们所说的硬件灯光,由于效果是即时运算,有一定的硬件要求,推荐一般不要超过3盏,否则对效率会有一定的影响.除非完全必要,不建议使用这种方法。
Project lights的运用一般是三个平行光来构筑一个整体的天光环境,(另外 Ambient light在这个过程中也有重要的意义),由于Project lights是对资源比较耗费的部分,应该由程序尽量优化。

Base map
Base map就是diffuse map就是我们常说的:贴图。
在贴图上我们可以在固有色之上进行光和阴影的绘制,从这个角度来说也是影响光影效果的重要方式,这种做法几乎不会在光影表现上耗费任何系统资源。效果主要依赖美术人员绘制贴图的水平。
同时,这也是在美术人员能力许可的条件下,完成大部分光影的最佳方式。

http://school.ogdev.net/upload/img/3691264776.jpg


http://school.ogdev.net/upload/img/3694395147.jpg


http://school.ogdev.net/upload/img/3694921405.jpg


Project Shadow
Project Shadow和project light一般有相同的光源点产生,作用是生成阴影,由于project Shadow是动态的阴影,一般用于表现有动画的物体,实际运用中Project Shadow和lightmap往往互补使用,分别解决静态和动画物体的阴影。同样,这种方法非常耗费系统资源,除非完全必要,不建议使用这种方法。

http://school.ogdev.net/upload/img/3698467791.jpg


Normal Map
Normal Map是次世代游戏常用的技术,他解决了机能对面数限制的情况下如何体现物体细节的问题,通过RGB三色代替XYX三个Normal轴向值的方式获得了更多物体细节。
Noraml Map机理的主要是在各种灯光位置会对物体的diffuse specular和reflect进行扭曲来达到近似真实,但是他不会对base map产生影响,既是说normal map影响的仅仅是材质本身,而非贴图。
由于Normal Map的这一盲点,prallax map(或displacemap)方式被创造出来弥补normal map不能扭曲basemap的缺陷,实际应用中,常常在运用Normal Map之后配合prallax map来达到更好效果。

http://school.ogdev.net/upload/img/3704374670.jpg


http://school.ogdev.net/upload/img/3705272991.jpg


Vertex Color
Material of vertex map是游戏中重要的运用,顶点色可以适用的范围很多,透明柔体等都可运用,但是最主要的应用在色彩上,通过刷取顶点色可以方便迅速的改变物体的色调,对系统资源的要求也较低,但是他与灯光色彩有一定冲突,通常情况下灯光色彩与顶点色不会用于同一物体以避免冲突,顶点色可以手动绘制或者灯光烘培,在面数较低的物体上能发挥更多的影响。
顶点色是对游戏光影最佳的解决方法之一,也是最常用的解决方法。

http://school.ogdev.net/upload/img/3707259314.jpg


Gloss map
Gloss map即我们所说高光贴图,一般灯光对物体高光是基于顶点色进行影响,如角色毛发,皮衣等物体财政很难表现出质感,如果运用Gloss map即可借助贴图的肌理界定高光的外形,也是可以通过较少资源占用达到影响光影效果的手段,另外很重要一点,Gloss map与我们一般常用3D软件中的界定不同,并非仅仅影响高光,对反射贴图也有影响。

http://school.ogdev.net/upload/img/3721312782.jpg


Gloss map其实并不一定需要是灰度图,用彩色贴图一样可以使用

Environment Map
Environment Map可以理解为我们一般所谓的反射贴图,有球形和盒体等多种方式,表现金属物体时常用,可以通过 gloss map进行限制。
Enivironment Map在max下的贴图槽为Reflection slot,默认的贴图放置进去会用球形坐标方式进行反射,如果对贴图有更高要求,也使用box贴图,六张贴图组成反射盒,如果是dds box贴图可以直接调用,但是坐标会有不同。

http://school.ogdev.net/upload/img/3723172328.jpg


MixGlow Map
Glow Map一般用以体现各种发光物体,如灯,火焰等等,是比较常用的特效类channel,在Glow 贴图栏里面贴上所用glow map ,会和其他贴图的最终效果产生相乘效果。

http://school.ogdev.net/upload/img/3729843678.jpg


Post Effects
除去上述效果,在Final效果输出之后,有时我们会通过各种post effect效果对画面加强,如Glow等,对画面光影感觉也会有巨大的影响。

http://school.ogdev.net/upload/img/3732810506.jpg


http://school.ogdev.net/upload/img/3733384620.jpg


Channel Mix

http://school.ogdev.net/upload/img/3743859463.jpg


http://school.ogdev.net/upload/img/3744321500.jpg


http://school.ogdev.net/upload/img/3745548849.jpg


http://school.ogdev.net/upload/img/3748110257.jpg


http://school.ogdev.net/upload/img/3749159018.jpg


http://school.ogdev.net/upload/img/3750176913.jpg


http://school.ogdev.net/upload/img/3750872451.jpg


http://school.ogdev.net/upload/img/3753136923.jpg


http://school.ogdev.net/upload/img/37537107094.jpg


http://school.ogdev.net/upload/img/3755084591.jpg


灯光系统分级方法及制作要点
在实际游戏制作当中,一般不会将所有的channel都开启,一方面其实要做出一款出色的游戏画面并非取决于使用多少新技术,令一方面也要考虑程序的负载。
根据游戏的种类和需求选择正确的方法合理的节省资源能够让游戏拥有更好的效果。

技术是手段,不是诉求
《Doom III》 虽然在当时是技术绝对领先的游戏,但是美术过度的依赖先进的技术,导致在美术风格上的切入不够,本应该更优秀的游戏,未能更上一步。

http://school.ogdev.net/upload/img/3763459715.jpg


与之相对,几年后推出的《Lost Plant》则成功找回了游戏美术最本质的东西,使技术成为一种手段。

http://school.ogdev.net/upload/img/37655109434.jpg


哪些地方?该使用哪些手段?
我们首先要明确,在一个成熟的美术团队中。对于一款游戏画面中的各种光影,是如何去表现,以达到画面效果和系统负担最佳的结合点的?
我们需要找到:最优化的手段。

From http://www.wz-online.net/web2/home/Detail.asp?id=47&FromType=1

转载于:https://www.cnblogs.com/lancidie/archive/2011/10/09/2203927.html

相关文章:

  • linux查看硬件信息及驱动设备相关整理
  • 烂泥:HTML编辑器中使用img插入图片
  • wcf学习总结《上》
  • Oracle exp/imp,备份或导入时注意的事项
  • IDEA常用快捷键[转]
  • ABR上配置OSPF区域间路由汇总
  • J-Scope的使用
  • oracle kill所有plsql developer进程
  • 《编程之美》
  • squid反向代理基本概述及性能事项
  • 自定义事件
  • 基因大数据分析的云计算实践
  • 推荐2个网站特效的网址
  • 【最新】2015年7月之15个最新jQuery插件
  • VS“.NET研究”2010测试功能之旅:编码的UI测试(1)
  • Android优雅地处理按钮重复点击
  • CSS 提示工具(Tooltip)
  • egg(89)--egg之redis的发布和订阅
  • express.js的介绍及使用
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java精华积累:初学者都应该搞懂的问题
  • JDK 6和JDK 7中的substring()方法
  • Python实现BT种子转化为磁力链接【实战】
  • 批量截取pdf文件
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 听说你叫Java(二)–Servlet请求
  • 新书推荐|Windows黑客编程技术详解
  • 运行时添加log4j2的appender
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • Semaphore
  • ​TypeScript都不会用,也敢说会前端?
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (C++17) std算法之执行策略 execution
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Git) gitignore基础使用
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (十六)串口UART
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .Net - 类的介绍
  • .net 7 上传文件踩坑
  • .NET 服务 ServiceController
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET 中的轻量级线程安全
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .Net的C#语言取月份数值对应的MonthName值