Tuesday, August 17, 2010

包工的日記 3

要手動找出特定模型的 verts 位置並不難, 要通用於所有的模型就要整理好整體格式了! 追蹤這個模型格式可說很不容易! 它用了指標索引(offset pointer) 再索引到另一組索引, 然後再索引, 一共指向四五層之深! 有點像C++ 的 OOP Class呢!

由於模型本身去掉了 transform, 要乘上骨骼 transform 才能正確重現整個模型. 對於只有一個骨骼影響的 verts 是沒有問題了. 可是 shared weight 的 verts 就是不對於, 暫時仍然找不到原因所在!?

Tuesday, August 10, 2010

包工的日記 2

這個遊戲的骨骼資料也不難找, 就是記錄的方法有別於一般的 PC 遊戲. PC 遊戲大都是用 quaternions 來記錄, 而這東西就是直接用 angles 記錄. 知道方式要轉換相信也不難. 可是我用的 3DSMAX 的座標方式與一般遊戲座標不同, 軸方向也有些是反向的.苦戰了數天仍然有部分骨骼位置不正確! 苦惱~

Sunday, August 08, 2010

一次包工的日記

近日有朋友要我包工一個 PS2 的遊戲的模型導入程序. 我看了一下格式, 與一般的 PS2 模型格式類同. 而且一直研究 PS2 的 Gantz 遊戲吸收了不少經驗. 於是接下了這工作, 期間是兩星期.

不用花太多的時間已找出了模型的基本資料, 是沒有 Face indices 的 tri-Strips 方式建模. 模型記錄的方式也有兩種, 沒有蒙皮的 和 包含 骨骼索引, weight 的. 但導入後的模型可是怪怪的. 細心查正後相信我是沒有錯誤的! UV 也絕對正確. 而奇怪的模型都是包含 骨骼索引, weight 的那種! 相信是模型本身去掉了 transform, 所以要向 骨骼 架構入手了(以前在一些 X360 的遊戲也遇見過這樣的方式的).