My blog directory:

YivanLee:专题概述及目录

Introduction:

前面两章我们已经完成了对工具的研究,下面我们久正式开始启程啦!后面的内容可能就比较美术了。

还是老规矩上个效果先:

(高级纱材质)

不过这一节我们不会立刻开始开发材质,我们先探究一下材质的基础。(上面的可不是alpha blend,没有透明乱序和高光混合损失!)。上面那个效果我会在后面介绍布料的章节连同:丝绸,纱,布,皮,麻,镭射重金属,棉等一起介绍。


main content:

现在的次世代游戏,材质表现已经成为游戏中非常重要的一部分,本专栏将一步步简述游戏开发中的材质开发。

首先要普及一个概念,到底什么叫“材质”。是一个材质球吗?是一个shader吗?是几张贴图吗。我理解的材质准确地说应该叫 shading。请不要把它翻译为“着色”,我认为这是不对的。在计算机里shading包含了很多事情。一个材质的表现需要模型,贴图,shader,灯光,后期等一系列配合。

在我们开始我们的材质开发之旅之前我们需要具备以下知识:

(1)C++和C#

(2)DirectX+HLSL或者OpenGL+GLSL等,还需要直到一些图形学知识。

(3)3DMax或Maya,Photoshop,SusbtancePainter和SubstanceDesigner,Zbrush等DDC软件

(4)引擎的话需要掌握Unity和UnrealEngine4

后面的文章将默认阅读者已经掌握或至少入门以上知识。如果你还没有掌握上述的知识,也不必担心,可以大家一起来讨论学习自然就会了。或者现在先去看以下上述罗列的基础知识。也可以去看看我以前的一些文章,希望有所帮助

下面是我们主要需要用到的软件:

其中VS的插件需要以下:

UnrealVS这个插件是虚幻引擎自带的,在引擎目录的extra下即可找到,其余的插件除VSAssist外全部都能在VS的拓展里找到。

VSCode需要以下插件:

也是直接在VSCode的拓展更新里就能找到。编写max脚本会非常方便。如果你喜欢用maya请跳过这一步。

下面我们来对材质作进一步探索。现在的游戏工业大致有两个走向,一个是真实向如刺客信条起源等。一个是风格化向,如塞尔达,二之国等。特别是欧美等大作,都是喜欢写实风格,但是其实不管是那种方向,其实都感觉你中有我我中有你。就拿神秘海域4来说,其实他写实的背后也做了不少风格化处理,这一点很好论证,你拿刺客信条的画面和神秘海域的做对比就能轻易发现,各个写实类游戏都有自己的风格化的东西在里面。一提到写实我们会常常听到PBR。所以到底什么是PBR呢?

PBR顾名思义,基于物理的渲染,可以更加准确地表示光和表面的相互作用。PBR其实是一套渲染方案,它不是一个材质球,不是几张贴图,不是SubstancePainter!!!我们在做PBR材质的时候,需要让我们的贴图是基于物理的,我们的shader是基于物理的,我们的灯光是基于物理的,我们的摄像机需要是基于物理的等等。如果只是shader的计算是基于物理的,那只能叫PBS。下面我们就来梳理一下PBR材质制作过程。

很多美术被很多错误的理论所误导,比如有些人会去根据经验,金属的metalic是多少,布料的Rouph是多少。这些其实会变化的,不同的引擎,不同的计算公式,这些值多多少少都会有变化,那么如何才能做出正确的效果呢,最好的办法就是在你们项目所在的环境下去实验,找出正确的那几个值。

我们可以做一个阵列,这样就一目了然了。

不同的项目不同的计算公式,这些值多多少少都会有所变化,我们可以去挨个实验,找出非金属,高光塑料皮革,亚光塑料皮革,高光金属,亚光金属的值,然后把这个值记录下来,以后就按照这个值去做。当然会有偏移,偏移造成的主要原因是脏迹挂痕造成的。

其实现在业界流行的这套PBR材质模型能够描述游戏内90%的材质效果,如金属石头,沙子泥土等等,但是这并不意味着有了这个我们能做一切事情了,有些比较特别的材质如宝石,头发,皮肤,眼睛,绒布,皮毛,羽毛等可能现在的这套比较流行的PBR材质模型就不适用了。而且PBR材质模型也有很多种,更多详情可以去网上搜搜PhysicbasedRendring相关文章。游戏内使用的基于物理的渲染大部分也都是拟合的。为什么头发布料不适用PBR那套模型公式呢?因为原理就不一样。想了解原理的话只有去看各大论文了,在RTR3里有对这些公式模型的详细描述。

【贴图】

第一:BaseColor

既然是基于物理的渲染,贴图自然也要基于物理。BaseColor一般储存为sRGB,线性空间中的颜色值。线性空间和gama空间的关系必须要搞清楚。一般颜色的计算这些都是线性空间下的。在制作PBR材质的时候,Basecolor的亮度很有讲究。非金属的基本上应该服从正太分布,然后金属集中在240左右附近。

可以把PS的图像模式改成LAB模式,然后窗口打开直方图来检测BaseColor的制作是否合法。

BaseColor一般应该是一致的,平台的,没有过亮或过暗的,BaseColor应该只包含纯颜色信息不应该有光影信息。颜色代表了非金属材料的反射率,除了遮挡外,应该没有光照信息,黑色值不应该低于30 sRGB或50sRGB(如果材质颜色低于的话,你以为你是黑洞啊),亮度值不应高于240 sRGB

第二:Normal

法线贴图烘焙的时候主要是注意坐标空间,左右手坐标系。杜绝手动PS这些操作。除非你有特异功能可以人眼光线追踪。

第三:Metalic和Rouphness

金属度和光滑度这一点上需要特别注意,因为PBR模型其实是拟合的(也可以说是带有一定trick的)。所以其实并无法表现所有零到一各个数值的完美效果,我们只能取其中一小段来使用会比较完美。这个取值范围会根据不同的PBR模型不同的环境而变化。具体值需要自己取实验。

第四:贴图使用

在贴图的制作过程中,可能我们并不会刻意地去关心什么贴图应该绘制什么东西。可能这个问题会有点奇怪,但是仔细想想,美术在贴图制作过程中一般都是怎么好看怎么来,也不会刻意去关心到底贴图里面应该画什么。举个例子,布料的纹路到底应该怎么表现呢?画在Diffuse上?那那种有高光的布条怎么办?美术可能会说,这个好办,在光滑度或者金属度上也画上去啊!但是问题就来了,贴图就那么几张。假设贴图上能保存的我们肉眼能看到的纹理信息的总量是10单位,那么我们想尽可能多地表达我们的信息,那么就会涉及到储存空间不够用的问题。所以合理地分配什么信息储存在什么贴图上,可以有效地使我们贴图的利用率更高。比如水渍使用光滑度去表现就可以了,没必要使用Diffuse或者别的。这样还能避免过噪和贴图压缩带来的信息损失。

【模型】

在游戏开发过程中其实会常常遇见一个问题,模型到底应该如何拆分?怎么建模怎么布线这些我就不多说了,这些都是角色师应该知道的。我们站在材质的角度上想这个问题。一个材质至少是一次DrawCall,如果角色材质过多,会导致DrawCall过多,当然DrawCall的多少和游戏运行效率不是必然关系。那么我们应该如何拆分模型呢?

可以确定的是,在其他外在因素一定的情况下,如果游戏瓶颈在Drawcall上的话,材质数量越少越好。当材质计算很复杂的情况下,可以把模型拆开使用两个材质,可能效率反而还有所提升。单单就从效果上说的话,如果引擎架构是像Unreal那种分材质模型或者光照模型的话,那么模型拆分就是根据光照模型的数量种类来拆,如果是像unity那种不分这些概念的话,那么就可以按照复杂度等因素来拆,其实这个还是一个比较灵活多变的概念,这里只是一个声明性的论述,希望引起大家的关注罢了。

【动画和物理模拟】

有些人可能会疑问了,这不是材质么,跟动画和物理模拟有关系么。其实是有一定关系的,我们需要知道一些相关的东西。比如我们制作布料材质,我们需要去设定布料模拟状态下布料的运动状态的物理硬度这些。布料的表现,布料的物理模拟至少占了一半的比重。比如我们要做草的材质,这时候是需要考虑草的摆动因素的,如果草的摆动通过操控顶点着色器来实现的话。

至此我们大概描述了一下材质的一些东西。后面我们就会开始实际动手制作研究材质了。还有很多细节我们没有讨论到或者上面有很多东西还很粗略,后面我们慢慢来细化。


Summary and outlook:

Enjoy it


Next:

YivanLee:虚幻4渲染编程(材质编辑器篇)【第五卷:布料,丝绸纱皮革棉】

虚幻4渲染编程(材质编辑器篇)【第三卷:正式准备开始材质开发】相关推荐

  1. 渲染到ui_虚幻4渲染编程(UI篇)【第二卷:程序化UI特效-[1]】

    MY BLOG DIRECTORY: 小IVan:专题概述及目录​zhuanlan.zhihu.com INTRODUCTION: 当遇见某些特殊需求,比如对游戏效果有很多变化的要求,这时使用静态的贴 ...

  2. 虚幻4渲染编程(灯光篇)【第二卷:体积光】

    我的专栏目录: 小IVan:专题概述及目录 体积光在游戏里被越来越多地用到,对烘托场景气氛,提高游戏的逼格有比较重要的作用.这篇就来由浅入深研究一下这个东西.从容易的做法到高端做法依次递进. 首先先来 ...

  3. 虚幻4渲染编程(灯光篇)【第一卷:各种ShadowMap】

    小IVan:专题概述及目录 灯光篇开篇概述: 灯光在游戏里非常重要,游戏画面的整体感觉,游戏运行的效率都和它息息相关.然而虚幻把这些逻辑封得死死地.各种概念和庞大的系统常常令人束手无策.本篇将从灯光光 ...

  4. 虚幻4渲染编程(光线追踪篇)【第一卷:光线追踪篇开篇综述】

    MY BLOG DIRECTORY: 小IVan:专题概述及目录​zhuanlan.zhihu.com INTRODUCTION: 什么都不说了先上个效果: 光线追踪云 电子游戏的光线追踪时代即将到来 ...

  5. 虚幻4渲染编程(环境模拟篇)【第三卷:体积云天空模拟(3)---高层云】

    我的专栏目录: 小IVan:专题概述及目录 目前业内流行有两种体积云模拟的方式,模型+特殊shader法,RayMarching法.我前两篇文章已经对它们都做了介绍.当然还有些比较非主流的,比如粒子云 ...

  6. 虚幻4渲染编程(环境模拟篇)【第五卷:可交互物理植被模拟 - 上】

    我的专栏目录: 小IVan:专题概述及目录 开篇综述 这一卷将会开始研究可交互植被环境的模拟.我把可交互植被环境模拟这个大的课题拆解为几个部分.我挑选了几个森林模拟至关重要的几个要素并且实现它们. [ ...

  7. 虚幻4渲染编程(Pipeline篇)【第一卷:PBR Production Pipeline】

    我的专栏目录: 小IVan:专题概述及目录 简介: 当技术这边完成理论推导和研发后,需要为其配备一整套完整的落地方案,并且这套方案的成熟度,完善度和开发效率直接决定了产品的最后品质和公司的生产成本.随 ...

  8. 虚幻4渲染编程(环境模拟篇)【第八卷:海洋模拟-中-在UE中实现FFT海洋】

    我的专栏目录: YivanLee:专题概述及目录 简介: 先上一下效果.因为是GPU的FFT海洋模拟,所以效率非常高.我这里只做了波形的部分,shading放到下一卷介绍 上一篇推导了海洋模拟的基础理 ...

  9. 虚幻4渲染编程(图元汇编篇)【第五卷:游戏中的动力学模拟】

    我的专栏目录 小IVan:专题概述及目录 还是先上效果吧 目前(2018年)在游戏中,通常使用韦尔莱积分做动力学模拟.使用韦尔莱积分可以模拟大部分物体的运动.布料,绳子,弹簧,软体,棍子都可以模拟.但 ...

  10. 虚幻4皮肤材质_虚幻4渲染编程(材质编辑器篇)【第六卷:各向异性材质amp;玻璃材质】...

    My blog directory: YivanLee:专题概述及目录​zhuanlan.zhihu.com Introduction: 各向异性材质 玻璃材质 材质编辑器篇的很多效果都非常简单,可以 ...

最新文章

  1. 【数据平台】python中文分词工具jieba
  2. 滑动窗口—满足XX条件的最长子串
  3. Ubuntu 安装php mcrypt
  4. 历史需要重写?AlexNet之前,早有算法完成计算机视觉四大挑战
  5. C++常量的引用 const
  6. mysql udf http,mysql下mysql-udf-http效率测试小记
  7. 2,000,000+在用的这款Chrome插件,到底有多牛逼?
  8. 答非所问:产品质量怎样?发现了很多BUG
  9. 第十二 关于JavaScript
  10. 河南理工大学计算机科学与技术怎么样,河南理工大学计算机科学与技术怎么样...
  11. 学习站点(ireaperwebEx播放器)
  12. HTML生成Word文档,可自定义Word文档页眉、页脚、分页。
  13. android 6 root权限,安卓一键root(权限获取)
  14. Excel数据分析常用函数②——统计函数(sumproduct,sumif,sumifs,count,countif,countifs,counta…)
  15. 架构实践全景图 | 文末赠书
  16. 洛谷 P3386 【模板】二分图匹配
  17. freeSWITCH detect_speech源码分析
  18. 【FFT夯实基础系列】手写笔记合集|傅里叶级数、傅里叶变换
  19. 深度学习中的VQA(视觉问答)技术
  20. 我的世界服务器反反作弊最新版,【服务器插件】【完全的反作弊】

热门文章

  1. 计算机网络覆盖的地理范围分类,计算机网络按地理范围可分为什么
  2. matlab eye函数_[线性代数系列1] MATLAB入门笔记
  3. 医疗器械注册文件清单 2022.5.26
  4. vue项目echarts通过cdn或npm引入
  5. linux java 缓存服务器,linux服务器缓存环境memcached筹建及应用(java)
  6. angular 使用ngx-quill
  7. Bash 单行注释与多行注释
  8. 怎么制作打印机服务器,如何配置打印机服务器设置
  9. 打印机服务器文件,打印机服务器ftp配置文件
  10. Java生成sitemap网站地图