トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

PMDの読み込みとか

[プログラミング,OpenGL]

MMDのモデルデータ(PMD)形式

  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)
edge_flag(BYTE) 輪郭フラグ
face_vert_count(DWORD) この材質で使う面頂点リストのデータ数
texture_file_name(char[20]) テクスチャファイル名
  • Clojureによるデシリアライズ例

+ ソースコード

ボーンリスト

  • Clojureによるデシリアライズ例

+ ソースコード

IKリスト

  • Clojureによるデシリアライズ例

+ ソースコード

表情リスト

  • Clojureによるデシリアライズ例

+ ソースコード

表情枠用表示リスト

  • Clojureによるデシリアライズ例

+ ソースコード

ボーン枠用枠名リスト

  • Clojureによるデシリアライズ例

+ ソースコード

ボーン枠用表示リスト

  • Clojureによるデシリアライズ例

+ ソースコード

拡張部分

  • Clojureによるデシリアライズ例

+ ソースコード

+ ソースコード

+ ソースコード

+ ソースコード

+ ソースコード

+ ソースコード

+ ソースコード

お名前: コメント: