一、渲染管线与模型基础

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(磨砂金属)
粗糙镜面折射(毛玻璃)
多层材质
次表面散射(Subsurface scattering)
光线传入物体内部后,经过多次弹射再离开物体表面
改变材质表面
- 使用法线贴图对法线做出调整,影响光照计算的结果
三、模型数据解析
顶点动画
- 在vs中改变模型的顶点位置,达到模型运动的效果
- (需要一定数量的顶点,效果才比较明显)
纹理动画
- 在fs中修改模型uv信息,使采样贴图时发生位移而产生运动效果
顶点色
- 在渲染时影响输出结果,控制颜色范围
- 例:当前顶点色达到一定值,就认定为阴影中
- 片元当中使用重心坐标插值
顶点法线与面法线

四、扩展
NPR中,通常在vs中将顶点往法线方向偏移(模型背面),然后在fs中直接输出一个颜色,达到描边效果。
BackFacing描边时,线条断开就是因为没有平滑顶点之间的法线(面法线外扩),法线不连续导致的。

作业
顶点色还可以做什么
- 在渲染上
- 直接作为物体颜色
- 与贴图颜色混合。
- 取代一些光照:如教程中罪恶装备案例对阴影的处理
- 其他应用
- 不直接用于渲染,正如贴图,顶点色还可以储存其他信息、属性
模型光滑组对法线有什么影响
首先要知道什么是光滑组,这其实也是我第一次见这个名词。
光滑组:(smoothing group)是用来设置边缘线的光滑显示的。
光滑组定义了模型边缘渲染的方式(flat shading和Gouraud/Phong shading),也就是101中所说的着色频率(Shading frequencies)
这也就控制了所说的边缘“软硬”

那这样回答这个问题就很简单了
Flat shading使用的是面法线;gouraud shading使用的是顶点法线;在vs中计算顶点着色,片元对颜色插值;phong shading使用顶点法线,片元上对法线插值后,在fs中计算光照。
光滑组所做的也就是决定模型哪些部分采用法线插值
因此光滑组的作用也很有趣,让一个模型的着色方式不同,来表现同一模型的不同细节。
过渡部分
尝试了Maya中对应的“软硬边”功能,因为非常值得思考的是,在光滑组与非光滑组的过渡部分如何处理?


我们来研究这里的细节。首先对于完整的硬边三角形和软边三角形不必说。
对于硬边三角形的顶点法线,就是面法线,因此,4个硬边相接的顶点上,出现了4个顶点法线,分别是用1256这四个面法线代替的。关注2354这里的顶点法线,只有完整的硬边面5,还保持着面法线,

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


出现明显的偏移,因此可以得出结论
软边会使相邻两个面的面法线进行插值得到一个顶点法线。
像这里4条边,只需要3条软边,就完成了周围四个面法线(其实是面法线所代替的4个顶点法线)的插值得到的顶点法线,这和4条软边是一样的。


研究了半天,放了个最简单的例子,其实就理解为软边会使相邻两个面法线插值好了
参考资料
[1] https://www.bilibili.com/video/BV1kh411U7F7 【技术美术百人计划】图形 2.2 模型与材质基础
[2]https://www.bilibili.com/video/BV1X7411F744 GAMES101-现代计算机图形学入门-闫令琪