实现第三人称摄像机.DOC

上传人:天*** 文档编号:1325567 上传时间:2019-02-08 格式:DOC 页数:11 大小:927.50KB
下载 相关 举报
实现第三人称摄像机.DOC_第1页
第1页 / 共11页
实现第三人称摄像机.DOC_第2页
第2页 / 共11页
实现第三人称摄像机.DOC_第3页
第3页 / 共11页
实现第三人称摄像机.DOC_第4页
第4页 / 共11页
实现第三人称摄像机.DOC_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、实现第三人称摄像机 案例说明:本例子 通过在 D3D 中架设一个 第三人称 摄像机 ,掌握 DirectInput 的使用和 D3D中 3 维向量的计算。 打开工程后,首先修改原来 FreeCamera 的类设计, 将 private 成员改成 protected 成员, 将Input 修改成虚函数,加入 Move 和 Rote 两个成员函数 在 FreeCamera.cpp 文件中实现 Move 和 Rote 函数 D3DXVECTOR3 FreeCamera:Move() D3DXVECTOR3 moveVec(0.0f,0.0f,0.0f); if (g_pInput-IsKeyDown

2、(DIK_UP) | g_pInput-IsKeyDown(DIK_W) /计算摄像机方向的向量 D3DXVECTOR3 vec = m_vViewAt- m_vPos; /转换成单位向量 D3DXVec3Normalize( /向量缩小倍 vec = vec*0.01f; /移动摄像机 moveVec += vec; if (g_pInput-IsKeyDown(DIK_DOWN) | g_pInput-IsKeyDown(DIK_S) D3DXVECTOR3 vec = m_vViewAt- m_vPos; D3DXVec3Normalize( vec = vec*0.01f; moveV

3、ec -= vec; if (g_pInput-IsKeyDown(DIK_LEFT) | g_pInput-IsKeyDown(DIK_A) D3DXVECTOR3 vec = m_vViewAt- m_vPos; D3DXVec3Normalize( D3DXVECTOR3 fvec; /使用叉积计算垂直于摄像机方向的向量 D3DXVec3Cross( fvec = fvec*0.01f; moveVec += fvec; if (g_pInput-IsKeyDown(DIK_RIGHT) | g_pInput-IsKeyDown(DIK_D) D3DXVECTOR3 vec = m_vV

4、iewAt- m_vPos; D3DXVec3Normalize( D3DXVECTOR3 fvec; D3DXVec3Cross( fvec = fvec*0.01f; moveVec -= fvec; return moveVec; D3DXVECTOR3 FreeCamera:Rote() D3DXVECTOR3 vec = m_vViewAt- m_vPos; if (g_pInput-GetRButton() /获得鼠标移动的大小 int x = g_pInput-GetMoveX(); D3DXMATRIX rote,temp; /生成沿向量 tvec旋转的矩阵 D3DXMatri

5、xRotationAxis( int y = -g_pInput-GetMoveY(); D3DXVECTOR3 tvec; D3DXVec3Cross( /生成沿向量 tvec旋转的矩阵 D3DXMatrixRotationAxis( D3DXVec3TransformCoord( D3DXVec3Normalize( float t= D3DXVec3Dot( if (fabs(t) GetMoveZ(); if (z 0 vec = vec * 0.001f * z; /移动摄像机 m_vPos = m_vPos + vec; if (z GetNumAnimationSets(); LPD3DXANIMATIONSET pAnimSet; for(DWORD i=0;iGetAnimationSet(i, strcpy(strTempName, pAnimSet-GetName(); if(strcmp(strAnimName,strTempName)=0)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。