模型与材质基础

模型的实现原理

点连接成线,线围成面,组成多边形,至此一个模型空间下的模型形成。

UV

UV如同一个矿泉水瓶,将它划开。平铺在一个二维的坐标系中。瓶子的每个位置(模型的每个顶点),在三维空间和二维空间中都能一对应。在二维坐标系中的顶点对应的位置就是顶点的纹理坐标,因此每个顶点都能利用纹理坐标获取到贴图所存储的信息。

在建模软件中进行UV展开UV会放在一个横向为U纵向为V,范围(0-1)的二维坐标系中。展开后的UV在SP中绘制贴图(漫反射贴图、 法线贴图、高度贴图、金属度贴图、AO贴图)。

 一个模型包含的信息(OBJ文件):

  • V顶点坐标数据(模型空间中单个顶点的XYZ坐标)
  • VT贴图坐标(水平方向是U,垂直方向是V范围0-1之间)
  • VN顶点法线
  • 顶点色(单个顶点的RGBA通道颜色信息)

OBJ格式与FBX格式

 材质基础

有些物体反射光的时候不会有太多的散射(Scatter),因而产生一个较小的高光点;而有些物体则会散射很多,产生一个有着更大半径的高光点。

  • 漫反射

兰伯特模型:光线均匀反射出去

Diffuse = baseColor *LightColor * dot(LightDir , Normal);
  •  镜面反射

Specular =  pow(saturate(dot(ReflDir,ViewDir)),32) * LightColor; 
  • 折射

R = refract(View,Normal,ration);
ReflColor = tex2D(skybox,R);
  • 粗糙镜面反射

法线偏移较小,反射依然集中在一个区域,形成磨砂质感。

  • 粗糙镜面折射

毛玻璃

  • 多层材质

 涂了透明油漆的木地板

  • 次表面散射

 半透明物体,如玉石、蜡烛、牛奶、皮肤。

多层皮肤模型:

我们把皮肤看成三层,油脂层(微量,很薄),表皮层,真皮层。正是因为有油脂层,因为油脂层直接把光反射出去,所以皮肤上才会有高光产生,没有被反射的光通过折射进入子表面层,光进入这些层之后部分被吸收(获得颜色)和散射,再从皮肤中入射点附近的出射点射出。这个过程就产生了次表面散射的效果。

模型数据在渲染中的作用

1.顶点动画:在顶点着色器中,修改模型的顶点位置,进而达到模型运动的效果

        顶点着色器计算的是模型的每个顶点, 每个顶点的数据是不同的,因此同一个计算公式在不同的顶点上,计算出来的结果也是不同的。

2.纹理动画:在片段着色器中,修改模型的UV信息,使得采样贴图时,发生位移而产生运动效果

原理:(1)改变法线,利用法线贴图,改变反射与折射的朝向,由于修改的只是法线信息,所以其他数据仍然保持修改前的状态。

                (2)改变UV采样点的位置,从而产生动画效果。

3.顶点色:在渲染时,影响输出结果,控制颜色范围

原理:重心计算
插值操作是在光栅化阶段进行的,所以这些XY坐标可以理解为屏幕坐标。点D的真实坐标为(x,y)重心坐标为(a,β,γ)该点是三个顶点直角坐标的线性组合,系数之和为1每个系数都是非负的。

面法线与顶点法线

(面法线)未使用平滑时,三角形三个顶点共用一个法线。那么插值时,因为三个顶点的法线相同,所以插值的结果相同。

(顶点法线)使用平滑后,一个顶点一个法线。三角形三个顶点的法线也就不相同。插值结果,也就会不同。

视频地址:【技术美术百人计划】图形 2.2 模型与材质基础_哔哩哔哩_bilibili

猜你喜欢

转载自blog.csdn.net/weixin_51327051/article/details/122312747
今日推荐