虚幻4渲染编程(材质编辑器篇)【第三卷:正式准备开始材质开发】
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渲染编程(材质编辑器篇)【第三卷:正式准备开始材质开发】相关推荐
- 渲染到ui_虚幻4渲染编程(UI篇)【第二卷:程序化UI特效-[1]】
MY BLOG DIRECTORY: 小IVan:专题概述及目录zhuanlan.zhihu.com INTRODUCTION: 当遇见某些特殊需求,比如对游戏效果有很多变化的要求,这时使用静态的贴 ...
- 虚幻4渲染编程(灯光篇)【第二卷:体积光】
我的专栏目录: 小IVan:专题概述及目录 体积光在游戏里被越来越多地用到,对烘托场景气氛,提高游戏的逼格有比较重要的作用.这篇就来由浅入深研究一下这个东西.从容易的做法到高端做法依次递进. 首先先来 ...
- 虚幻4渲染编程(灯光篇)【第一卷:各种ShadowMap】
小IVan:专题概述及目录 灯光篇开篇概述: 灯光在游戏里非常重要,游戏画面的整体感觉,游戏运行的效率都和它息息相关.然而虚幻把这些逻辑封得死死地.各种概念和庞大的系统常常令人束手无策.本篇将从灯光光 ...
- 虚幻4渲染编程(光线追踪篇)【第一卷:光线追踪篇开篇综述】
MY BLOG DIRECTORY: 小IVan:专题概述及目录zhuanlan.zhihu.com INTRODUCTION: 什么都不说了先上个效果: 光线追踪云 电子游戏的光线追踪时代即将到来 ...
- 虚幻4渲染编程(环境模拟篇)【第三卷:体积云天空模拟(3)---高层云】
我的专栏目录: 小IVan:专题概述及目录 目前业内流行有两种体积云模拟的方式,模型+特殊shader法,RayMarching法.我前两篇文章已经对它们都做了介绍.当然还有些比较非主流的,比如粒子云 ...
- 虚幻4渲染编程(环境模拟篇)【第五卷:可交互物理植被模拟 - 上】
我的专栏目录: 小IVan:专题概述及目录 开篇综述 这一卷将会开始研究可交互植被环境的模拟.我把可交互植被环境模拟这个大的课题拆解为几个部分.我挑选了几个森林模拟至关重要的几个要素并且实现它们. [ ...
- 虚幻4渲染编程(Pipeline篇)【第一卷:PBR Production Pipeline】
我的专栏目录: 小IVan:专题概述及目录 简介: 当技术这边完成理论推导和研发后,需要为其配备一整套完整的落地方案,并且这套方案的成熟度,完善度和开发效率直接决定了产品的最后品质和公司的生产成本.随 ...
- 虚幻4渲染编程(环境模拟篇)【第八卷:海洋模拟-中-在UE中实现FFT海洋】
我的专栏目录: YivanLee:专题概述及目录 简介: 先上一下效果.因为是GPU的FFT海洋模拟,所以效率非常高.我这里只做了波形的部分,shading放到下一卷介绍 上一篇推导了海洋模拟的基础理 ...
- 虚幻4渲染编程(图元汇编篇)【第五卷:游戏中的动力学模拟】
我的专栏目录 小IVan:专题概述及目录 还是先上效果吧 目前(2018年)在游戏中,通常使用韦尔莱积分做动力学模拟.使用韦尔莱积分可以模拟大部分物体的运动.布料,绳子,弹簧,软体,棍子都可以模拟.但 ...
- 虚幻4皮肤材质_虚幻4渲染编程(材质编辑器篇)【第六卷:各向异性材质amp;玻璃材质】...
My blog directory: YivanLee:专题概述及目录zhuanlan.zhihu.com Introduction: 各向异性材质 玻璃材质 材质编辑器篇的很多效果都非常简单,可以 ...
最新文章
- 【数据平台】python中文分词工具jieba
- 滑动窗口—满足XX条件的最长子串
- Ubuntu 安装php mcrypt
- 历史需要重写?AlexNet之前,早有算法完成计算机视觉四大挑战
- C++常量的引用 const
- mysql udf http,mysql下mysql-udf-http效率测试小记
- 2,000,000+在用的这款Chrome插件,到底有多牛逼?
- 答非所问:产品质量怎样?发现了很多BUG
- 第十二 关于JavaScript
- 河南理工大学计算机科学与技术怎么样,河南理工大学计算机科学与技术怎么样...
- 学习站点(ireaperwebEx播放器)
- HTML生成Word文档,可自定义Word文档页眉、页脚、分页。
- android 6 root权限,安卓一键root(权限获取)
- Excel数据分析常用函数②——统计函数(sumproduct,sumif,sumifs,count,countif,countifs,counta…)
- 架构实践全景图 | 文末赠书
- 洛谷 P3386 【模板】二分图匹配
- freeSWITCH detect_speech源码分析
- 【FFT夯实基础系列】手写笔记合集|傅里叶级数、傅里叶变换
- 深度学习中的VQA(视觉问答)技术
- 我的世界服务器反反作弊最新版,【服务器插件】【完全的反作弊】
热门文章
- 计算机网络覆盖的地理范围分类,计算机网络按地理范围可分为什么
- matlab eye函数_[线性代数系列1] MATLAB入门笔记
- 医疗器械注册文件清单 2022.5.26
- vue项目echarts通过cdn或npm引入
- linux java 缓存服务器,linux服务器缓存环境memcached筹建及应用(java)
- angular 使用ngx-quill
- Bash 单行注释与多行注释
- 怎么制作打印机服务器,如何配置打印机服务器设置
- 打印机服务器文件,打印机服务器ftp配置文件
- Java生成sitemap网站地图