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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 介紹幾種MySQL常見的圖形化工具MySql
- SONM最新路線圖介紹(轉)
- SVG XML 格式定義圖形入門介紹SVGXML
- 08【matplotlib】06matplotlib繪製多次圖形和不同圖形的差異介紹和總結
- 將彩色圖轉化為灰度圖及其原理介紹
- Rust圖形庫gfx-hal 逐幀渲染流程介紹Rust
- Android中圖片圓形設定三種方法介紹Android
- 高效能圖表LightningChart JS 遷移指南介紹GCJS
- Elasticsearch 參考指南(介紹)Elasticsearch
- 條形碼生成原理介紹及簡介
- gfx-rs/hal跨平臺圖形抽象庫使用介紹抽象
- Qt開發技術:圖形檢視框架(一)基本介紹QT框架
- RenderDoc圖形偵錯程式詳細使用教程(基於DirectX11)
- Nacos 介面詳細介紹
- 使用SCRT+XMING 圖形介面
- 26 使用者圖形介面
- 07圖形化介面和命令列介面操作命令列
- Halcon介面介紹 第二講
- Centos7 使用ssh進行x11圖形介面轉發CentOS
- Linux無圖形介面環境使用Python+Selenium實踐 (轉載)LinuxPython
- 3 個 Linux 上的 SSH 圖形介面工具Linux
- Android 圖形架構簡介Android架構
- Python資料分析--Numpy常用函式介紹(9)--Numpy中幾中常見的圖形Python函式
- 【轉】恢復archivelog介紹Hive
- XManager:xshell顯示圖形化介面
- GO-圖形使用者介面Go
- Ubuntu無法進入圖形介面Ubuntu
- JavaGUI——Java圖形使用者介面JavaGUI
- WSL安裝及配置圖形介面
- public interface View介面和public interface ViewResolver介面介紹View
- hadoop實戰3(web管理介面介紹及NN,DN,SNN介紹)HadoopWeb
- AUTONOMOUS TRANSACTION(自治事務)的介紹(轉)
- 遠控介紹及介面編寫
- HDI硬體裝置介面介紹
- java的圖形化介面 文字區JTextArea的程式例子Java
- 介紹 9 款 MySQL 常見的圖形化工具,第三款我用了 10 年MySql
- Three.js開發指南(1):介紹JS
- 鉗形電流表測試電流的原理介紹
- 投影互動牆的三大實現形態介紹