PISCOnoob

导航

模型与材质

想要在游戏里渲染出好看的画面,我们首先要有模型和相应的材质通过cpu提交相关信息给gpu,那么这些模型和材质到底包含了什么东西呢?

模型

1.

模型实际上就是若干个点按照一定的顺序连成线,线连成面,面连成多边形模型。

2.模型文件

在unity中我们常用的模型文件有OBJ和FBX,我们来看看文件中包含了什么。

以OBJ文件为例:

v(vertex)代表顶点坐标数据,即模型空间中某个顶点的XYZ坐标。

 

 vt(vertex Texcoord)代表顶点纹理坐标,即所说的UV坐标,U是水平轴,V是纵轴,范围在0-1之间。

 

 vn(vertex normal)代表顶点法线

 

 OBJ与FBX格式对比:

3.UV

在模型制作的过程中,有个重要的步骤叫做展UV。简单来说,我们把模型(比如一个人物角色)剪开平铺在一个面上,横轴为U,纵轴为V,范围在0-1之间。我们可以将其视为角色的“皮肤”,展在二维平面上为其绘制,并最终“贴”回到模型上,让其有更丰富的外表细节。这就是UV纹理贴图,可以说,它定义了图片上每个点的信息(比如颜色值),而每个点又跟模型上的每个点是相对应的。

 

 

 

 

但是展UV绝对是个技术活,展一个正方体盒子当然没什么难度,就如同我们小学美术课把一个立方体剪成六个面一样,当模型复杂起来时展UV也更难。UV展好的话,其表现平整干净,就像是直接从模型上扒下来的纸张,展不好的话,其效果表现就是扒下来的纸张像是叠了好几次,皱巴巴的。展好UV后艺术家们会用photoshop,bodypainter,substance painter等DCC软件(Digital Content Creating )绘制贴图。

当然纹理贴图不止能存储模型的RGB颜色值,还能存储各种各样的信息,后续文章会提到。

 

材质

我们在一开始画画的时候会发现怎么画都不像,除了物体的形态外,重要的还有光影,因此我们想要让我们的渲染结果更加“真实可信”,我们还需要为其添加具有正确光照模型的材质。而现实世界中,每一样物体又有不同的材质,即会有不同的光照效果,我们先来简单看一下几种光照情况。

1.漫反射(diffuse)

漫反射经典的经验模型是兰伯特模型(Lambert)。红色的为入射光它假设所有的光线被均匀地反射出去,亮部暗部取决于入射光与模型表面法线的夹角,夹角越小越亮,因此夹角为0时为最亮部,夹角为180是为理论上最暗部。

公式如下:

Diffuse = baseColor *LightColor * dot(LightDir , Normal);

baseColor理解为纹理贴图的颜色,lightColor理解为灯光的颜色(比如太阳光一般表示为金黄色之类的),dot点乘结果为(-1,1),但是对于颜色值来说,只要值<=0就是黑色了。

 

 

2.镜面反射

镜面反射就是将入射光线根据模型表面法线进行反射,并且只有在反射方向有能量,其他方向能量均为0,因此会根据视方向(即相机观察角度)有不同的表现。

公式为:

Specular =  pow(saturate(dot(ReflDir,ViewDir)),smoothness) * LightColor

从公式中可以反射方向与视方向做点乘,夹角越小镜面反射越强烈,而结果配合smoothness做power,表示越光滑的表面高光点越小,越粗糙的表面高光点越分散。

 

 

3.折射

不同的介质有不同的折射率,而光从一种介质到另一种介质的时候光的方向会发生变化,比如从空气进入水中,有一部分能量会发射,另一部分能量进入水中后改变了方向。反射和折射能量的多少是由菲涅尔定律决定的。

公式为:

R = refract(View,Normal,ration)

ReflColor = tex2D(skybox,R)

ration是原介质折射率/新介质折射率

 

4.粗糙镜面反射

可形成磨砂表面质感

 

 

5.粗糙镜面折射

可形成磨砂玻璃折射的效果

 

6.次表面散射(3s效果)

当光照(比如太阳光)照射到我们的皮肤上时(尤其是耳朵手指这些比较“薄”的部位)会出现透红的效果。照在玉石,树叶,水果等物体上也会发生。

 

孤岛惊魂5和神秘海域4中的皮肤渲染

 

7.多层材质

一个很好的例子就是木地板打蜡或刷光油,木地板是一层材质上面的光油也是一层材质

 

 

参考资料:

1.unity官方文档

https://docs.unity3d.com/2021.2/Documentation/Manual/materials-introduction.html

2.《GPU Gems 3》:真实感皮肤渲染技术总结--毛星云

https://zhuanlan.zhihu.com/p/42433792

3.Unity Shader入门精要–冯乐乐

4.TA百人计划

https://learn.u3d.cn/tutorial/technical-artist-may

 

posted on 2022-04-08 14:17  PISCOnoob  阅读(231)  评论(0编辑  收藏  举报