这两章主要说:1.通过代码数据创建mesh 2.由于1方法过于麻烦,读取现有模型文件,得到mesh数据 3.mesh的优化 4.ECT (edge collapse transformations) 边折叠变换 ,对网格简化。实现渐进网格。
我得到了什么:并没有了解到实现mesh优化和渐进mesh的具体方法,只是知道有这个东西,mesh优化的几个重要属性和类型设置。
mesh和优化: 1.首先ID3DXMesh和ID3DXPMesh都继承自ID3DXBaseMesh
2.一个mesh有多个subMesh组成,每个面片都有自己的属性ID,指定属于哪个subMesh,这些属性ID存储在attribute buffer内。每个三角面片又对应一个index;这样每个index有相应的subMesh 属性组
3.对mesh中的顶点和索引进行重组,重组过程称为网格优化。重组后在索引缓存中每个面片的index信息可能会被移动
4.关键点:每个面片的邻接信息。
5.attribute table:属性表里有subsetID,vertex 数量,vertex start,face start,face 数量;
比如:Entry 2
Subset ID: 2
Face Start: 8
Face Count: 4
Vertex Start: 16
Vertex Count: 8
建立表后,一次快速查找,就能得到vertexbuffer里属于该subset的全部面片。
顶点法线的计算:光照是对每个顶点进行的。
chapter5中说明了计算vertex normal的两种方式。
一种是等于面片法向量,利用向量的叉乘得到。另一种是取这个vertex共享面片法向量的均值。
从.x文件中读取,vertex可能没有包含vertex normal的信息。使用computerNormals之前,需要clone该mesh,并指定vertex的FVF包括normal
渐进网格的思路和纹理中多级渐进纹理mipmap类似,小而远的mesh不需要精细的数据来绘制。
每个顶点有相应的权值,
最后说了bounding volume,外接体,用来加速可见性(visibility test)和碰撞检测(collision test).
但AABB和OBB具体实现的区别?