MMDのモデルデータ(PMD)形式
PMD形式の詳細
- 以下のサイトを参考にしている
- 型情報早見表
C/C++の型 | Win32 API での別名 |
---|---|
unsigned char | BYTE |
unsigned short | WORD |
unsigned long | DWORD |
ヘッダ
変数(型) | 役割 |
---|---|
magic(char[3]) | 固定値 |
version(float) | 固定値 |
model_name(char[20]) | モデル名称 |
comment(char[256]) | コメント |
- Rubyによるデシリアライズ例
+ | ソースコード |
- Clojureによるデシリアライズ例
+ | ソースコード |
頂点リスト
変数(型) | 役割 |
---|---|
vert_count(DWORD) | 頂点数 |
vertex(t_vertex[]) | 頂点データ |
- t_vertex
- 頂点データ
変数(型) | 役割 |
---|---|
pos(float[3]) | 座標:x, y, z |
normal_vec(float[3]) | 法線ベクトル:nx, ny, nz |
uv(float[2]) | UV座標:u, v |
bone_num(WORD[2]) | ボーン番号1,2 |
bone_weight(BYTE) | ボーン1に与える影響度 |
edge_flag(BYTE) | 輪郭有効:0, 輪郭無効:1 |
- Rubyによるデシリアライズ例
+ | ソースコード |
- Clojureによるデシリアライズ例
+ | ソースコード |
面頂点リスト
変数(型) | 役割 |
---|---|
face_vert_count(DWORD) | 頂点数 not 面数 |
face_vert_index(WORD[]) | 頂点番号(3個/面) |
- Clojureによるデシリアライズ例
+ | ソースコード |
材質リスト
変数(型) | 役割 |
---|---|
material_count(DWORD) | 材質数 |
material(t_material[]) | 材質データ |
- t_material
変数(型) | 役割 |
---|---|
diffuse_color(float[3]) | 減衰色 |
alpha(float) | 減衰色の不透明度 |
specularity(float) | 光沢度 |
specular_color(float[3]) | 光沢色 |
mirror_color(float[3]) | 環境色 |
toon_index(BYTE) | toon番号 |
edge_flag(BYTE) | 輪郭フラグ |
face_vert_count(DWORD) | この材質で使う面頂点リストのデータ数 |
texture_file_name(char[20]) | テクスチャファイル名 |
- テクスチャファイルについて
- モデルと同じフォルダに置かれている想定みたい。モデル内部に持っているわけではないんだな…
- 「(テクスチャファイル名)*(スフィアファイル名)」の形でスフィアマップが入ってくる仕様
- toon番号について
- 設定されている場合、MikuMikuDanceのDataディレクトリ以下にある {toon番号}.bmpファイルをテクスチャ(?)に設定しないといけない
- 0.bmp:0xFF, 1(01).bmp:0x00 ・・・ 10.bmp:0x09
- Clojureによるデシリアライズ例
+ | ソースコード |
ボーンリスト
- Clojureによるデシリアライズ例
+ | ソースコード |
IKリスト
- Clojureによるデシリアライズ例
+ | ソースコード |
表情リスト
- Clojureによるデシリアライズ例
+ | ソースコード |
表情枠用表示リスト
- Clojureによるデシリアライズ例
+ | ソースコード |
ボーン枠用枠名リスト
- Clojureによるデシリアライズ例
+ | ソースコード |
ボーン枠用表示リスト
- Clojureによるデシリアライズ例
+ | ソースコード |
拡張部分
- Clojureによるデシリアライズ例
+ | ソースコード |
+ | ソースコード |
+ | ソースコード |
+ | ソースコード |
+ | ソースコード |
+ | ソースコード |
+ | ソースコード |