2008年6月14日
摘要: 哈希表和哈希函數(shù)是大學數(shù)據(jù)結構中的課程,實際開發(fā)中我們經(jīng)常用到Hashtable這種結構,當遇到鍵-值對存儲,采用Hashtable比 ArrayList查找的性能高。為什么呢?我們在享受高性能的同時,需要付出什么代價,那么使用Hashtable是否就是一樁無本萬利的買賣呢?就此疑問,做以下分析,希望能拋磚引玉。
閱讀全文
摘要: 在三維圖形程序設計中,網(wǎng)格模型占有非常重要的地位,而且也是比較復雜的部分,特別是包含動畫和蒙皮信息的網(wǎng)格模型。
.x文件格式最初是為傳統(tǒng)的Direct3D保留模式而設計的,在DirectX 6.0問世后,針對立即模式對它作過一次擴展。要想在Direct3D程序中靈活自如地使用網(wǎng)格模型,應當深入理解.x文件格式。
閱讀全文
2008年6月13日
摘要: OBJ文件是Alias|Wavefront公司為它的一套基于工作站的3D建模和動畫軟件"Advanced Visualizer"開發(fā)的一種標準3D模型文件格式,很適合用于3D軟件模型之間的互導,也可以通過Maya讀寫。比如你在3dsMax或 LightWave中建了一個模型,想把它調(diào)到Maya里面渲染或動畫,導出OBJ文件就是一種很好的選擇。目前幾乎所有知名的3D軟件都支持OBJ文件的讀寫,不過其中很多需要通過插件才能實現(xiàn)。
OBJ文件是一種文本文件,可以直接用寫字板打開進行查看和編輯修改。另外,有一種與此相關二進制文件格式(*.MOD),其作為專利未公開,因此這里不作討論。
閱讀全文
摘要: 一個網(wǎng)格模型中可以包含多個動畫集,在渲染網(wǎng)格時通過動畫控制器可以在各個動畫集之間進行切換,從而可以在渲染網(wǎng)格模型時根據(jù)具體情況播放不同的動畫。這里將具有多個骨骼動畫的網(wǎng)格模型稱為"多骨骼動畫網(wǎng)格模型",當然骨骼動畫網(wǎng)格模型也完全可以具有蒙皮信息,下面的示例程序演示了渲染多骨骼動畫網(wǎng)格模型時骨骼動畫之間的切換,骨骼動畫間的切換是通過動畫控制器來完成的。
閱讀全文
摘要: cSkinMesh類的實現(xiàn)與cAnimMesh的實現(xiàn)基本相同,區(qū)別在以下幾點。
首先是在load_from_xfile()中增加了對網(wǎng)格模型骨骼矩陣的保存,接下來是DrawMeshContainer()的實現(xiàn),該函數(shù)負責當前網(wǎng)格容器中具體網(wǎng)格模型的渲染.
閱讀全文
摘要: 蒙皮骨骼動畫網(wǎng)格模型接口是對上一節(jié)骨骼動畫網(wǎng)格模型接口的擴展,添加了處理蒙皮信息的功能。
為了在網(wǎng)格模型中包含蒙皮信息,需要進一步擴展D3DXMESHCONTAINER_DERIVEED。
閱讀全文
2008年6月12日
摘要: Direct3D通過索引頂點混合,擴展了使用多個混合矩陣對頂點進行混合的支持。在索引頂點混合中,混合矩陣被保存在矩陣調(diào)色板(可以看成一個矩陣數(shù)組)中,使用矩陣索引來引用特定的混合矩陣。矩陣索引使用8位無符號整數(shù)表示,由每個頂點提供,因為Direct3D中限定每個頂點最多受到4個混合矩陣的影響,所以每個頂點最多具有4個矩陣索引,每個頂點的矩陣索引被組合成一個DWORD類型的整數(shù)存儲和表示。因為每個頂點最多受4個混合矩陣的影響,所以在渲染一個三角形時最多可能需要使用12個混合矩陣,在這種情況下,矩陣調(diào)色板中最少需要包含12個混合矩陣。
閱讀全文
2008年6月11日
摘要: 在骨骼動畫網(wǎng)格模型中,骨骼的變動導致軀體網(wǎng)格模型的改變,于是就有了骨骼動畫。網(wǎng)格模型是由一個個頂點構成的,如果任意一個頂點只受一塊骨骼影響,那么網(wǎng)格模型在運動時很容易出現(xiàn)裂縫,特別是在一些結合部位,如肩關節(jié)、肘關節(jié)等。盡管可以使用縫合技術縮小這些裂痕,但當關節(jié)的旋轉比較極端時,例如前臂繞肘關節(jié)旋轉120度時,就會在肘關節(jié)處出現(xiàn)一個較大的剪缺。這是因為只有一個多邊形跨越在上臂和前臂之間的整個間隙,間隙越大,裂縫就越大,最終的渲染效果也越差。
閱讀全文
摘要: 使用cAnimMesh類包含3個步驟,首先在回調(diào)函數(shù)OnCreateDevice()中創(chuàng)建cAnimMesh類的實例,接著在回調(diào)函數(shù)OnFrameRender()中渲染網(wǎng)格模型,最后在回調(diào)函數(shù)OnDestroy()中釋放網(wǎng)格模型。
閱讀全文
摘要: 類cAnimMesh是最關鍵的一個類,所有與骨骼動畫相關的具體實現(xiàn)細節(jié)都封裝在該類中,該類還定義了類cAllocateHierarchy的一個對象m_alloc_hierarchy,該對象完成從文件中加載動畫網(wǎng)格模型的骨骼層次結構、動畫數(shù)據(jù)以及其他用于繪制模型的幾何數(shù)據(jù)。
閱讀全文