D3D study 1

来源:互联网 发布:淘宝租手机 编辑:程序博客网 时间:2024/05/25 20:00
 
一: 数学知识
1:向量:长度,定点。
(1)       向量与位置无关,所以我们可以把所有的向量的尾部和坐标系的圆点重合,从而我们可以用一点来表示向量。
(2)       向量的相等:有同样的维数和分量也相等
向量的大小: 各个分量的平方和的绝对值 
FLOAT D3DXVec3Length(CONST D3DXVECTOR*pV);
             ex :D3DXVECTOR3 v(1.0f,2.0f,3.0f);
                 float magnitude=D3DXVEC3Length(&v)
向量的规范化:D3DVECTOR3 *d3dxvECT3Normalize(D3DXVECTOR3*pOut,CONST D3DXVECTOR3*pV) 注:返回的是个指针
向量相加:D3DXVECTOR3 sum= u+v
向量相减:D3DXVECTOR3 diffierence=u-v
向量的数乘(一个向量和一个实数相成)D3DXVECTOR3 scleVec=u*10.f
向量的点乘:FLOAT D3DXVECTOR3Dot(u,v);
向量的叉乘:得到一个垂直与其他两个向量的向量
      D2DXVECTOR3*D3DXVec3Cross(D3DXVECTOR3*pOut //result
CONST D3DXVECTOR3*Pv1//left
CONSTD 3DXVECTOR3*Pv2//right)
2:坐标系:
   D3D里使用的坐标系是左手坐标系,就是当你看屏幕时,左手边是X轴的负方向,右手边是X轴的正方向。屏幕下边是Y轴的负方向,屏幕上边是Y轴的正方向。远离屏幕是Z轴的负方向,指向屏幕里面是Z轴的正方向。
坐标系还有右手坐标系,还有其它各种各样的坐标系。如果需要从其它坐标里的图形显示在D3D里,就需要进行转换。
 
二:DirectX
1:所有DirecrX的使用都是基于windows和一样的函数回调方式(Using Callback Function)
2:IDirect3DDevice9::SetRenderState() 设置定点渲染方式 如顺时针或逆时针
3:建立定点缓冲区的步骤
 构造定点数据结构-〉建立定点缓冲区-〉把数据写入定点缓冲区-
 
三:骨骼动画
   1: 基本原理:首先,建模师完成一个标准姿势的3D模型,通常是双手沿着肩的方向伸展平放,双脚打开。所有的后继动作将由这个基础动作演变得到。在完成这个基准模型之后,建模师再建一个骨骼结构,一系列相互关联的顶点,就像一个骨架一样,与人体模型各个关节匹配并且都会有一定数量的顶点与之关联。想象一下人和人身上的骨骼就很容易知道我在说什么。之后,在我们想要完成的动画序列中,挑选一些关键帧,对每个关键帧,将骨骼的位置与关键帧匹配。然后把这一系列的关键帧骨骼保存起来,除了骨骼的位置,同时保存的还有从基准位置变换到当前关键帧的旋转、平移、缩放或者一个混合的坐标变换矩阵。在我们引擎中,首先根据当前时间查找这时候角色是处于哪两个关键帧中间。找到之后以时间为参数在关键帧的坐标变换矩阵之间求插值,用插值结果来决定骨骼当前的位置。骨骼位置求出来后,所有和骨骼关联的顶点的坐标也可以相应求出来了。通过使用骨骼动画技术,我们用相对较少的数据就可以播放很平滑的动画!
2:需要的数据:有骨骼(bone)的数据,模型(mesh)的数据,关联骨骼和模型上每个顶点的关联数据,以及关键帧的坐标变换数据,所有的这些数据都存放在.X文件里
 
原创粉丝点击