【笔记】【百人计划】图形2.2 模型与材质基础

一、渲染管线与模型基础

image-20220723154809728

uv

在建模软件中完成UV展开,UV放置在一个横向u,纵向v,(0-1)的二维坐标系中

展开后的uv在sp等软件中绘制贴图

模型信息

模型的表达(以obj为例)

  • v顶点坐标
  • vt对应纹理坐标 texcoord
  • vn顶点法线
  • f面
  • 顶点色(fbx)
# obj格式 fbx格式 备注
多个object 支持 支持 在文件中存放多个三维模型
单object拥有多个材质 支持 支持
Polygons面 支持 支持 易于被3ds max等软件编辑加工 注:导入到ue4时,必须为三角形面
Normal 支持 支持
Material 支持 支持
光滑组(Smoothing Group 支持 支持 光滑组中的点或面使用平均法线来计算光照,使得整个mesh区域看起来更平滑
uv套数 1 多套
顶点Color 不支持 支持 导入ue4时,Vertex Color Import Option设置为Replace
ue4 lod 不支持 支持 导入ue4时,勾选Import Mesh LODs
ue4 simple collision 支持 支持 任意凸体碰撞命名规则:UCX_[RenderMeshName]、UCX_[RenderMeshName]_00
socket插槽 不支持 支持 命名规则:SOCKET_[RenderMeshName]、SOCKET_[RenderMeshName]_01
skeleton骨骼 不支持 支持
skeletal mesh网格 不支持 支持
animation sequence 不支持 支持 fbx可在文件中存放多个动作序列

二、材质基础

  • 材质

    • 描述物体对光的接收与散射

    • 漫反射

    • 镜面反射

    • 折射

      • 菲涅尔定律可以描述反射与折射的比例
    • 粗糙镜面反射glossy(磨砂金属)

    • 粗糙镜面折射(毛玻璃)

    • 多层材质

      image-20220723160309345
    • 次表面散射(Subsurface scattering)

      • 光线传入物体内部后,经过多次弹射再离开物体表面

      • image-20220723160453573
      • image-20220723160606384
  • 改变材质表面

    • 使用法线贴图对法线做出调整,影响光照计算的结果

三、模型数据解析

  • 顶点动画

    • 在vs中改变模型的顶点位置,达到模型运动的效果
    • (需要一定数量的顶点,效果才比较明显)
  • 纹理动画

    • 在fs中修改模型uv信息,使采样贴图时发生位移而产生运动效果
  • 顶点色

    • 在渲染时影响输出结果,控制颜色范围
    • 例:当前顶点色达到一定值,就认定为阴影中
    • 片元当中使用重心坐标插值
  • 顶点法线与面法线

image-20220723162706622

四、扩展

NPR中,通常在vs中将顶点往法线方向偏移(模型背面),然后在fs中直接输出一个颜色,达到描边效果。

BackFacing描边时,线条断开就是因为没有平滑顶点之间的法线(面法线外扩),法线不连续导致的。

image-20220723162821829

作业

顶点色还可以做什么

  • 在渲染上
    • 直接作为物体颜色
    • 与贴图颜色混合。
    • 取代一些光照:如教程中罪恶装备案例对阴影的处理
  • 其他应用
    • 不直接用于渲染,正如贴图,顶点色还可以储存其他信息、属性

模型光滑组对法线有什么影响

首先要知道什么是光滑组,这其实也是我第一次见这个名词。

光滑组:(smoothing group)是用来设置边缘线的光滑显示的。

光滑组定义了模型边缘渲染的方式(flat shading和Gouraud/Phong shading),也就是101中所说的着色频率(Shading frequencies)

这也就控制了所说的边缘“软硬”

在这里插入图片描述

那这样回答这个问题就很简单了

Flat shading使用的是面法线;gouraud shading使用的是顶点法线;在vs中计算顶点着色,片元对颜色插值;phong shading使用顶点法线,片元上对法线插值后,在fs中计算光照。

光滑组所做的也就是决定模型哪些部分采用法线插值

因此光滑组的作用也很有趣,让一个模型的着色方式不同,来表现同一模型的不同细节。

过渡部分

尝试了Maya中对应的“软硬边”功能,因为非常值得思考的是,在光滑组与非光滑组的过渡部分如何处理?

image-20220723175542376 image-20220723175557394

我们来研究这里的细节。首先对于完整的硬边三角形和软边三角形不必说。

对于硬边三角形的顶点法线,就是面法线,因此,4个硬边相接的顶点上,出现了4个顶点法线,分别是用1256这四个面法线代替的。关注2354这里的顶点法线,只有完整的硬边面5,还保持着面法线,

image-20220723180155081

我尝试对这个顶点剩余的硬边进行软化,观察这个顶点法线是否变化

image-20220723180950650 image-20220723181006044

出现明显的偏移,因此可以得出结论

软边会使相邻两个面的面法线进行插值得到一个顶点法线。

像这里4条边,只需要3条软边,就完成了周围四个面法线(其实是面法线所代替的4个顶点法线)的插值得到的顶点法线,这和4条软边是一样的。

image-20220723182303248 image-20220723182545394

研究了半天,放了个最简单的例子,其实就理解为软边会使相邻两个面法线插值好了

image-20220723185549252

参考资料

[1] https://www.bilibili.com/video/BV1kh411U7F7 【技术美术百人计划】图形 2.2 模型与材质基础

[2]https://www.bilibili.com/video/BV1X7411F744 GAMES101-现代计算机图形学入门-闫令琪