图形 2.2 模型与材质基础

参考视频:图形 2.2 模型与材质基础

渲染管线与模型基础

1.图形渲染管线在这里插入图片描述

顶点着色器,几何着色器,片元着色器均是可编程部分,渲染流水线流程在1.1中已有介绍不再赘述

2.模型uv

展uv就是将一个三维物体每个顶点映射到二维空间(用一张图片存储该二维空间信息)上,三维物体顶点对应的二维空间(横向为u纵向为v范围为0~1的坐标系)中的位置称为纹理坐标(uv坐标),uv坐标对应的点的值(通常用用颜色表示)则用于存储诸如法线,金属度,AO等信息

3.模型包含的信息

以下是maya导出一个三角形网格化后的正方体(未使用软边),生成的正方体.obj用记事本打开的内容
在这里插入图片描述

#This file uses centimeters as units for non-parametric coordinates.

mtllib redcubetri.mtl
g default
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
vt 0.375000 0.000000
vt 0.625000 0.000000
vt 0.375000 0.250000
vt 0.625000 0.250000
vt 0.375000 0.500000
vt 0.625000 0.500000
vt 0.375000 0.750000
vt 0.625000 0.750000
vt 0.375000 1.000000
vt 0.625000 1.000000
vt 0.875000 0.000000
vt 0.875000 0.250000
vt 0.125000 0.000000
vt 0.125000 0.250000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
s 1
g pCube1
usemtl phong1SG
f 1/1/1 2/2/2 3/3/3
f 3/3/3 2/2/2 4/4/4
s 2
f 3/3/5 4/4/6 5/5/7
f 5/5/7 4/4/6 6/6/8
s 3
f 5/5/9 6/6/10 7/7/11
f 7/7/11 6/6/10 8/8/12
s 4
f 7/7/13 8/8/14 1/9/15
f 1/9/15 8/8/14 2/10/16
s 5
f 2/2/17 8/11/18 4/4/19
f 4/4/19 8/11/18 6/12/20
s 6
f 7/13/21 1/1/22 5/14/23
f 5/14/23 1/1/22 3/3/24
可以看到v代表顶点位置(8行),vt代表纹理坐标(14行,可以在下图看出14个纹理坐标点),vn是顶点法线方向(8*3=24行,因为一个顶点在不同三角形中法线可能不一样),f是面,记录一个三角形三个顶点的信息,顶线信息为顶点位置索引/纹理坐标索引/法线索引。此外maya导出的obj格式中还引用了一个.mtl文件,该文件记录了材质信息(具体我还未理解是啥,以后再补充)
下图展示了正方形的uv坐标,即文件中vt的部分
在这里插入图片描述

在这里插入图片描述

材质基础

1.漫反射
在这里插入图片描述

2.镜面反射

3.折射
在这里插入图片描述
4.粗糙镜面反射
与镜面反射的反射光线集中在一个方向不同,粗糙镜面反射的反射光线有多个方向且集中在一个区域,有种磨砂的质感
在这里插入图片描述
5.粗糙镜面折射
比如毛玻璃
在这里插入图片描述
6.多层材质
在这里插入图片描述
7.次表面散射
在这里插入图片描述
8.多层皮肤模型
在这里插入图片描述

模型数据解析

模型数据在渲染中的作用
1.纹理动画
在这里插入图片描述
这个shader效果分为两个部分,一个对是计算光照,另一个是对背后的物体有一个扰动的效果,光照部分改变了法线纹理的采样位置,扰动的效果则是修改了背后物体顶点的uv坐标
在这里插入图片描述
在这里插入图片描述
2.顶点动画
顶点动画是在顶点着色器中对顶点进行操作以产生动画效果,在一些三维建模软件中,顶点的k帧也可以理解为顶点动画
3.顶点色
顶点色则改变顶点的颜色,比如对第二图中人物的颜色进行判断,小于某个阈值则改变其颜色使其处于阴影之中(第三幅图人物的裆部有更大的阴影范围)
在这里插入图片描述
三角形插值
在这里插入图片描述
重心坐标表示了一个点到三角形三条边的带符号距离,比如在B点对于BC边的带符号距离(图中的α)为0,AC边(β)为1,AB边(γ为0),所以A点权重0,B点权重1,C点权重0,最后颜色为B点颜色

顶点法线和面法线

可以看到顶点法线(右)插值效果较好,面法线(右)表面不是很光滑
在这里插入图片描述
原理
在这里插入图片描述
maya对正方体使用软化边得到的法线信息为8行(8个顶点),使用硬化边(见上面介绍obj文件格式时的顶点法线信息)则有24行(每个顶点在不同面上的法线不同)
在这里插入图片描述

扩展

在这里插入图片描述

作业

1.顶点色还可以做什么
视频里讲了顶点色可以用来做动画。(以下纯凭想象如有错误欢迎指出)
顶点色本质上是与顶点绑定的一个存储三个值的数据结构(通常叫rgb实际上叫啥都无所谓只不过恰好可以用颜色来直观显示罢了),那除了用于表示颜色以外,还可以存储其他信息。比如自定义一个属性只用一个通道就可以将顶点分为不同类,在顶点着色器对该属性进行判断,不同的值采用不同的渲染方式。
如果在顶点着色器中直接将顶点颜色读取传给片元着色器,那实际上各种贴图能干的事情顶点色都能干(只要用到的数据不超过3个),只是一般顶点着色器负责计算坐标,片元着色器根据顶点坐标插值得到片元的uv坐标,再对贴图进行采样;而使用顶点颜色代替贴图相当于提前计算得到颜色,片元着色器对颜色进行插值即可
2.模型光滑组对法线有什么影响
对于一个正方体,硬边的法线有8个顶点*3=24个
在这里插入图片描述
在这里插入图片描述
对整个物体经过平滑后得到的法线如下
在这里插入图片描述
在这里插入图片描述
可以看到原本一个顶点在不同面拥有不同的法线,在使用平滑后一个顶点只拥有一个法线,其方向是原本所有方向的平均值+归一化,因此能看到平滑后颜色插值得到的结果非常明显(尤其是在球中)
在这里插入图片描述

疑惑

在测试模型光滑组(maya中叫软边)遇到了如下诡异的问题,发现在群里问问题是件效率很低的事(责任分散效应)。最后结论:这就是个bug。
在maya2020中对预设的正方体软化边时会得到两种不同的结果
只要把预设的正方体导出成obj再导入,软化边的结果就是左边错误的结果,即使再硬化,也无法恢复成原来的样子,与最初的obj文件比,其面信息中纹理坐标的索引不同,其余信息均相同
如果直接创建一个正方体,进行软化得到的是右边的结果,再硬化可以恢复原来的样子
在这里插入图片描述
这法线莫名有点可爱
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值