將x檔案綁在mdl手上

2021-05-23 00:11:13 字數 1587 閱讀 1771

---------------------------西昌.何雨鋒 將x檔案綁在mdl手上

有乙個函式是attach,但是實際上不用這個來繫結,因為這是骨骼之間做繫結的。

這裡用的是矩陣繫結法,被繫結的物體的位置、動作、大小決定了繫結的東西的這些。

所以連大小設定都沒必要了。

***************

首先在h檔案中找到d3dvector定義的位置(實際這個結構在dx中是有的,但是由於這些結構都

比較簡單,完全沒必要再去包括d8d.h檔案),所以再參考了vb中的d3dmatrix結構後,就直接在

vector的定義附近自己寫乙個d3dmatrix結構就可以了,結構定義如下:

#ifndef d3dmatrix_defined

typedef struct d3dmatrix

d3dmatrix;

定義好以後,就可以在cpp檔案中定義matrix了。

itvmesh mesh1;                 //用來讀取**

d3dvector vector1;             //用來得到手的位置,這個位置是用不上的,而且也是錯誤的

d3dmatrix matrix1;             //用來得到手的矩陣

mesh1=scene1->createmeshbuilder("sword");

mesh1->loadxfile("..//..//..//media//sword.x",tvtrue,tvtrue);

//注意,這個x檔案必須要能在程式中正常顯示出來,而且最好是自帶紋理的。(即x檔案中已指明了紋理位置)

mesh1->setmaterial(0,-1);   //這好象是預設值。

//在渲染迴圈中不斷得到actor2的某個骨骼矩陣給矩陣變數,然後把這個矩陣設給mesh.

man2->getbonematrix(man2->getboneid("bip01 r hand"),&vector1,&matrix1);

//man2是個actor2或actor.

mesh1->setmatrix(&matrix1);

mesh1->render();

********************

這樣就可以了,這個x檔案形成的mesh將隨著actor2的動作而動作,大小而大小。

以下是要點:

1、先要定義d3dmatrix;

2、怎樣得到骨骼呢?用id的話恐怕記不住,用actor2->getboneid("名稱")當然好,

但是怎麼知道骨骼的名稱呢?簡單,用milkshape3d將mdl檔案反編譯後再開啟身體的mds檔案,然後找到

骨骼的名稱就可以了,一般用手掌。

3、這裡的那個vector好象返回值是錯的,但是不用擔心,反正這裡用不著。

4、mesh1->rotatex(...),這樣的函式可以保證mesh先旋轉一定的度數再跟著matrix轉,如果用setrotate(...),那麼渲染出的mesh就會方向始終不變。

5、mesh1->moverelative(up,left,straf)是用來進行繫結位移的,即繫結後的物體會動作仍然跟隨,而位置不再固定於被綁物上面了,front代表前後,up代表上下,straf代表平移.

檢視md檔案

使用命令將md檔案轉為html,在瀏覽器中演示 通過npm安裝i5ting toc 安裝好node之後,可以直接使用npm。windows r開啟執行框,輸入cmd,開啟命令視窗。連網的情況下,輸入如下命令 npm install g i5ting toc 2.使用i5ting toc命令將md檔案...

寫了個指令碼將json換成md

用python 指令碼將protocol.json中的json按照templete.md模版生成,結果在protocol.md中 python usr bin python coding utf 8 import json import sysimport osreload sys sys.setd...

將AJAX通話延遲X秒

jquery 段將ajax呼叫延遲x秒。可用於需要通過ajax從伺服器端獲取資料之前需要採取措施的事件。更新 通過使用settimeout 函式,有一種更簡單的方法可以執行此操作 參見以下示例。請享用!var pendingcall li a click function e error funct...