魔獸世界客戶端資料研究(二)

2021-09-19 12:36:07 字數 1303 閱讀 7922

終於決定,還是通過wow model viewer起手,研究一下wow的資料型別,從另乙個角度,體驗一把這

個唯一讓我充過值的遊戲。

這將是一系列隨筆,即在讀**的時候,順便記錄,以理清思路和加深映象。 其中會有很多讓人費

解的地方,如果有幸被某位兄弟看見,請勿見笑。

上次弄到nattachlookup就不行了,這次繼續弄。

最近四川**了,所以弄得比較慢。

好吧,我們接著nattachlookup說。

讀完掛接資料後,我們接著讀了堆nattachlookup個的uint16資料。這串資料最後被存了下來。在

wmv中用了乙個uint16的陣列來儲存,叫attlookup

經過多方面分析,這個attlookup正如其名字一樣,是用來查詢掛接點的。

而attlookup的值可以是以下列舉成員

enum position_slots

; 上面這個列舉成員,定義了wow中乙個帶動畫的模型可以掛接物體的位置。又可以說,是骨頭id。在

先前我們的modelattachment或者modelattachmentdef結構體中定義的id,就正好是上面的列舉值中

的乙個。

讀完掛接資訊以後,就是顏色和透明度資料了,wow的模型中,乙個模型可以持有由若干顏色和透明

度組成的序列,在每幀渲染的時候,動態插值計算出當前的值。 即可以實現顏色閃爍和透明度變化

的效果。 幽靈虎和鳳凰什麼的,就是用到了這個。

//這是顏色結構體的定義,可以看出,它定義了乙個顏色值,和乙個16位的透明度值

struct modelcolordef ;

//這是透明度結構體的定義,也是乙個16位的透明度值。

struct modeltransdef ;

這兩個定義,導致了模型透明度的重複。 而在wmv中的**,也確實是這樣寫的。先將顏色進行了

插值,而後又用透明佇列的值對顏色中的alpha通道進行修改。

讀取完了上面的資料後,接下來的,就是模型的lod資料。 lod中則包含了對應的材質資料。 在wmv

中,只讀取了lod0的模型。

讀取完lod後,wmv對模型的頂點資料建立了乙個索引。

if (nindices) {

indicetoverts = new size_t[nindices+2];

for (size_t i=0;i今天暫時寫到這裡,改天繼續。。。

posted @

2013-04-24 00:47

麒麟子(alex) 閱讀(

...)

編輯收藏

Zookeeper客戶端(二) 原生客戶端

在zookeeper客戶端 一 原生客戶端中我們主要介紹了使用zookeeper客戶端對節點的增刪改查等操作,但是別忘了還有acl許可權控制,這裡我們就再來看一看在zookeeper客戶端中,我們是如何使用acl許可權控制的。首先我們需要先連線我們的服務端,這裡和之前類似,有一點不同的是,這裡我們沒...

核心研究 Binder客戶端設計

要想使用服務端,首先要獲取服務端在binder驅動中對應的mremote變數的引用。獲得該變數的引用後,就可以呼叫該變數的transact 方法。該方法的函式原型如下 public final boolean transact int code,parcel data,parcel reply,in...

JS讀取客戶端檔案研究

都知道js沒辦法直接讀取客戶端檔案 除了特定目錄下邊的檔案外 但總是有人問,怎麼使用js去讀客戶端檔案。於是就有人出主意使用activexobject,activexobject作為ie特有的外掛程式,幾乎可以幹任何c s的事,安全性問題很嚴重,所以其他瀏覽器都不支援,說句實話,這就是乙個雞肋,現在...