2017/03/24(金) [n年前の日記]
#1 [dxruby][ruby] COLLADA形式について分かった範囲でメモ
COLLADA形式について分かった範囲でメモ。あくまで blender からエクスポートしたCOLLADA形式(.dae)について、だけど。他の3DCGソフトからエクスポートすると違う記述になってるのかもしれない。
ざっと眺めただけでも、おおよその見当がつくのでイイ感じのフォーマットだなと。
library_geometries タグの中身は…。
更に、polylist タグの中身は…。
ざっと眺めただけでも、おおよその見当がつくのでイイ感じのフォーマットだなと。
- library_effects は、マテリアルの実際の値が記述されてる。ambient とか diffuse とかそういうの。
- library_materials は、マテリアル情報実値へのリンク。library_effects の中のどれを使いますよ、てな情報だけが書かれてる。
- library_geometries タグは、形状データ。マテリアルに関係なく形状データだけ取り出したいなら、たぶんここだけ見ればいい。
library_geometries タグの中身は…。
- source タグは、頂点座標配列、法線ベクトル配列、UV座標配列、頂点カラー配列、等々が書かれてる。それぞれを何に使ってるか(頂点座標なのか、法線ベクトルなのか、等)の情報は含まれてなくて、そのあたりは polylist タグのほうで指定されてる。
- polylist タグは、頂点インデックス群の情報。マテリアルを複数使ってる場合は、複数の polylist タグがマテリアル毎に分かれて存在する。たぶん。
更に、polylist タグの中身は…。
- input タグは、「頂点座標(or 法線 or UV or 頂点カラー)群はこの source を使うよ」等の指定。offset が、頂点インデックス配列の何番目がこの source に対応してるのか、という情報。
- vcount タグは、面1つにつき何個の頂点を使うのかが列挙されてる。例えば「3 3 3 3」と並んでたら、三角形が4つありますよ、ということ。
- p タグは、頂点インデックス群。
◎ pタグについて補足。 :
pタグは、頂点インデックス群だけど…。
例えば、polylist の中に input が4つあって、頂点座標(VERTEX)、法線ベクトル(NORMAL)、UV座標(TEXCOORD)、頂点カラー(COLOR) の順で並んでたら…。
p タグの中は、
例えば vcount が、「3 3」だったら「三角形が2つありますよ」ということだから、pタグの中は…。
例えば、polylist の中に input が4つあって、頂点座標(VERTEX)、法線ベクトル(NORMAL)、UV座標(TEXCOORD)、頂点カラー(COLOR) の順で並んでたら…。
p タグの中は、
頂点インデックス, 法線インデックス, UVインデックス, 頂点カラーインデックス, // 頂点0 頂点インデックス, 法線インデックス, UVインデックス, 頂点カラーインデックス, // 頂点1 頂点インデックス, 法線インデックス, UVインデックス, 頂点カラーインデックス, // 頂点2 ...てな感じでインデックス値がずらずらと列挙されることになる。
例えば vcount が、「3 3」だったら「三角形が2つありますよ」ということだから、pタグの中は…。
頂点インデックス, 法線インデックス, UVインデックス, 頂点カラーインデックス, // 頂点0 頂点インデックス, 法線インデックス, UVインデックス, 頂点カラーインデックス, // 頂点1 頂点インデックス, 法線インデックス, UVインデックス, 頂点カラーインデックス, // 頂点2 頂点インデックス, 法線インデックス, UVインデックス, 頂点カラーインデックス, // 頂点3 頂点インデックス, 法線インデックス, UVインデックス, 頂点カラーインデックス, // 頂点4 頂点インデックス, 法線インデックス, UVインデックス, 頂点カラーインデックス, // 頂点5こうなるんじゃないかなと…。4 x 3 x 2 = 計24個の値が並ぶ、みたいな。
[ ツッコむ ]
以上です。