摘要: 接下來的Create()函數分別從接口ID3DXFileData創建網格模型,從輸入的網格模型中創建新的網格模型。
函數Destroy()用來在程序退出時銷毀指定的資源。
閱讀全文
摘要: 函數CreateMaterials()用于創建網格模型中所需的材質和紋理,我們來看看CreateMaterials()的實現:
閱讀全文
摘要: 類CDXUTMesh主要用于從一個指定的網格模型中加載數據、渲染模型以及銷毀網格模型,它將整個網格模型作為一個整體進行操作,沒有考慮網格模型內部的框架層次,對于不包含動畫信息的網格模型,使用該類是一個比較好的選擇。
閱讀全文
摘要: DXUT中涉及到媒體文件查找的函數有3個:DXUTFindMediaSearchTypicalDirs()、 DXUTFindMediaSearchParentDirs()、DXUTFindDXSDKMediaFileCch(),都位于 DXUTmisc.cpp文件中。
閱讀全文
摘要: 漸變(tweening)網格模型是Direct3D中實現模型動畫最簡單的方式和途徑,它的原理也非常簡單。例如對于場景內的某個網格模型,最初只記錄 t0時刻和t1時刻該網格模型的狀態(即這兩個時刻網格模型中所有頂點的位置),對于t0到t1這段時間內的任意時刻t_current,根據該時刻距離 t0和t1時刻的遠近,實時地分配給這兩個網格模型不同的權重,然后按照這兩個網格模型中頂點的不同位置和它們各自的權重進行插值,計算出 t_current時刻整個網格模型中所有頂點的位置,從而實現動畫效果。
閱讀全文
摘要: 增強網格模型是運行鑲嵌技術將原始網格模型的三角形面進行細分,形成更加精細(三角形面更多)的網格模型,這對于逐頂點進行的光照效果會更好。網格模型鑲嵌技術主要用在層次細節場景中當模型距離觀察者較近時,使模型的顯示更精細。
增強網格模型可以通過對原始網格模型進行鑲嵌細分模型得到,Direct3D提供了功能函數D3DXTessellateNPatches()來完成這一工作。該函數根據指定的參數,由顯卡的鑲嵌器(tessellator)對網格模型中的多邊形進行細分,從而使原來的三維物體表面變得更加光滑細致。
閱讀全文
摘要: 層次細節網格模型(progress mesh)是一種特殊的網格模型,它的頂點數據以樹狀形式組織,可以隨意增加或降低模型的復雜程度,從而比普通的網格模型具有更大的靈活性,層次細節網格模型對于層次細節場景的渲染非常理想。當模型距離觀察者較遠時可以降低模型的復雜程度,提高渲染速度。而當模型距離觀察者較近時可以使用復雜的模型,從而提高視覺效果。Direct3D用ID3DXPMesh來表示層次細節網格模型對象,而不是ID3DXMesh。
閱讀全文
摘要: Direct3D對加載到內存中的網格模型提供了優化功能,通過網格模型優化可以明顯提高三維模型的渲染速度,這對渲染速度要求較高的三維圖形程序和游戲具有非常重要的現實意義。
對于程序員而言,對網格模型進行優化是比較簡單的,只需調用接口ID3DXMesh的方法Optimize().
閱讀全文
摘要: 為了使一個.x文件產生動畫,必須至少提供一個動畫集,每個動畫集都應具有一個對某個框架的引用。模板 AnimationSet用來定義動畫集。
Animation是一個完全開放的模板,一般情況下,用模板AnimationKey來填充它。
閱讀全文
摘要: 通過前面的介紹,可以建立起一個網格模型,但這個網格模型是渾然一體的,而在現實生活中,為了能獨立對一個物體的不同部分進行變換,必須將模型分割成不同的模塊,在.x文件中使用框架(frame)對一個網格模型的不同部分進行組織和管理。框架僅僅是一個外殼,在框架中通常需要包含具體的網格和一個框架變換矩陣,其中框架變換矩陣用于指定該框架包含的部分在整個模型中的初始位置。
閱讀全文