D3DXMatrixLookAtLH参数详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
D3DXMatrixLookAtLH参数详解
DirectX3D官⽅⽂档给出的该函数的定义如下:
D3DXMATRIX * D3DXMatrixLookAtLH(
__inout D3DXMATRIX *pOut,
__in const D3DXVECTOR3 *pEye,
__in const D3DXVECTOR3 *pAt,
__in const D3DXVECTOR3 *pUp
);
其官⽅⽂档上给出的各个参数解释如下(英⽂翻译):
pOut [in, out]
D3DXMATRIX
指向操作结果存放的矩阵
pEye [in]
D3DXVECTOR3
定义眼睛(摄像机)位置。
pAt [in]
D3DXVECTOR3
定义相机看的⽬标位置
Pointer to the D3DXVECTOR3 structure that defines the camera look-at target.
pUp [in]
D3DXVECTOR3
定义当前世界(视野)的上⾓,通常被设置为[0, 1, 0]。
表⽰看过以后,被这个⽂档忽悠得⼀转⼀转的,然后尝试设置摄像机位置在y轴正上⽅,从上往下看,位于坐标原点的⽴⽅体,发现设置完成后,没有看到⽴⽅体了,于是好好的研究了这个函数的⼏个参数。
直接上图⽐较清楚,图中pAt参数那个箭头不代表⽅向,只是从⽴⽅体⾥⾯引出来,代表设置的那个点为pAt点。
很清晰的可以看出三个参数,pEye就是摄像机(或者眼睛)在的位置,然后pAt告诉摄像机(或眼睛)物体所在位置,pUp摄像机的朝向的点(基本可以认为,把pUp减去pEye获得的向量,就是摄像机的朝向)。
所以摄像机在盒⼦上⽅,朝盒⼦45度⼀个⾓看去的代码可以这样写:
//相机位置
D3DXVECTOR3camera( 0.0f, 10.0f, 0.0f );
//物体位置
D3DXVECTOR3object( 0.0f, 0.0f, 0.0f );
//相机朝向点
D3DXVECTOR3directPoint( 1.0f, 0.0f, 1.0f);
//获取视⾓矩阵
D3DXMatrixLookAtLH( &matView, &camera, &object, &directPoint );
//指定视⾓矩阵
g_pd3dDevice->SetTransform(D3DTS_VIEW, &matView );
可以基本认为,看到的东西的视域,是向量pUp-pEye以及向量pAt-pEye所夹的⼀个区域,上书代码所得到的结果为:。