DirectX圖形介面指南的介紹(轉)
DirectX圖形介面指南的介紹(轉)[@more@] 第一人稱視角變換主要是view transformation matrix的變換。其實就是不斷變動eye point和camera look-at target的座標。具備基本的三維數學和矩陣運算技巧就可以了。 要弄清視角移動和轉動的原理,有必要先看看DX文件的Matrices和View Transformation章節。文件的相關3D數學原理和距陣計算以及介面方法搞清楚了。下面的工作就相當簡單。 首先定義D3DXVECTOR3 VDot,VAtPoint,VUp; 視景的移動 前後移動和左右移動 其實就是同時移動VDot和VAtPoint,即同時移動眼睛的位置和眼睛所看到的點的位置。程式碼比較簡單。udragon在他的主頁上有一段程式碼很清楚。可以參考:http:/ 視角的轉動 原理就是繞透過VDot的向量VUp旋轉VDot。即相當於站在原地旋轉Camera。udragon在他的主頁上關於視角旋轉的程式碼寫得思路比較晦澀難懂,主要是他的思路比較特殊,幾乎在程式裡把某點繞軸旋轉的公式按數學證明推導了一遍。其實如果數學運算得當以及合理運用D3D介面方法,這段程式碼可以簡化許多: 可能用到的變數 D3DXVECTOR3 pOut; D3DXVECTOR3 pOut2; D3DXVECTOR3 ab; D3DXVECTOR3 ac; D3DXVECTOR4 Vtemp; D3DXMATRIX R,RT,R2; //左右移動 D3DXVec3Normalize(&pOut,&ac); ` RT = D3DXMATRIX(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -VDot.x, -VDot.y, -VDot.z, 1); D3DXMatrixRotationAxis( &R2, &pOut, u); R = RT * R2; RT = D3DXMATRIX(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, VDot.x, VDot.y, VDot.z, 1); R = R * RT; D3DXVec3Transform(&Vtemp, &VAtPoint, &R); VAtPoint.x = Vtemp.x; VAtPoint.y = Vtemp.y; VAtPoint.z = Vtemp.z; //上下移動 s1 = D3DXVec3Length(&ab)*D3DXVec3Length(&VUp); s2 = (float)acos(D3DXVec3Dot(&ab, &VUp)/s1); if(u>0) { if(s2<=0.018) break; }//一度 else if(s2>=3.124) break; D3DXVec3Cross(&pOut,&ab,&ac); D3DXVec3Normalize(&pOut2,&pOut); RT = D3DXMATRIX(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -VDot.x, -VDot.y, -VDot.z, 1); D3DXMatrixRotationAxis( &R2, &pOut2, u); R = RT * R2; RT = D3DXMATRIX(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, VDot.x, VDot.y, VDot.z, 1); R = R * RT; D3DXVec3Transform(&Vtemp, &VAtPoint, &R); VAtPoint.x = Vtemp.x; VAtPoint.y = Vtemp.y; VAtPoint.z = Vtemp.z
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-951744/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DirectX 圖形介面指南(2) (轉)
- DirectX 圖形介面指南(4) (轉)
- DirectX 圖形介面指南(3) (轉)
- DirectX 圖形介面指南(5) (轉)
- DirectX 圖形介面指南(6) (轉)
- DirectX 圖形介面指南(7) (轉)
- 圖形介面備份Linux系統介紹薦Linux
- 圖形使用者介面(轉)
- 急救~進不了圖形介面(轉)
- iftop介面顯示介紹[轉]
- 《WTL起步 - 玩轉圖形介面》目錄 (轉)
- 介紹幾種MySQL常見的圖形化工具MySql
- JDBC介面技術介紹1 (轉)JDBC
- JDBC介面技術介紹2 (轉)JDBC
- DirectX8程式設計指南-1 (轉)程式設計
- centos 圖形介面和命令列介面切換(轉載)CentOS命令列
- SVG XML 格式定義圖形入門介紹SVGXML
- Linux圖形介面知識-輕鬆更換圖形環境(轉)Linux
- 理解FreeBSD中的圖形介面X系統(轉)
- Linux下的GTK圖形介面程式設計(轉)Linux程式設計
- DirectX5.0最新遊戲程式設計指南 (轉)遊戲程式設計
- solr介面介紹Solr
- AIX圖形介面配置AI
- DirectX5.0最新遊戲程式設計指南 DirectDraw教程篇 一、配置DirectX SDK (轉)遊戲程式設計
- DirectX5.0最新遊戲程式設計指南 DirectDraw篇 一、DirectDraw的基本圖象概念 (轉)遊戲程式設計
- 圖形介面系統XFree86的歷史(轉)
- (轉)使用yum來安裝CentOS圖形介面包CentOS
- Rust圖形庫gfx-hal 逐幀渲染流程介紹Rust
- 騰訊力作!超實用的iOS 9 人機介面指南(5):圖示與圖形設計iOS
- VNC連線圖形介面VNC
- 08【matplotlib】06matplotlib繪製多次圖形和不同圖形的差異介紹和總結
- 配置XDM--一種Linux的圖形登入介面(轉)Linux
- Elasticsearch 參考指南(介紹)Elasticsearch
- Linux字元介面和圖形介面Linux字元
- Qt開發技術:圖形檢視框架(一)基本介紹QT框架
- gfx-rs/hal跨平臺圖形抽象庫使用介紹抽象
- Android中圖片圓形設定三種方法介紹Android
- canvas繪製圓形圖案程式碼示例簡單介紹Canvas