おべんきょうwiki
COLLADA
最終更新:
yahirohumpty
-
view
collada_dom
準備
2.4.0-libsrc,2.4.0は10.04でコンパイル通らず
2.3.1は2.3からいくつかディレクトリを移植しないとコンパイル通らず
fx,rx,dom/testをまるまるコピー
2.3.1は2.3からいくつかディレクトリを移植しないとコンパイル通らず
fx,rx,dom/testをまるまるコピー
コンパイル方法
MakefileはなぜかデフォルトでPS3になっている.
かといってMakefile.linuxも微妙に怪しい.
正解?はcmakeを使うことらしい.
かといってMakefile.linuxも微妙に怪しい.
正解?はcmakeを使うことらしい.
例)
mkdir build cd build cmake .. make sudo make install
自作プログラムからの呼び出し
pkg-configもcmakeのfind_packageもつかえる.
cmakeの場合
find_packageの場合COLLADA_DOMはすべて大文字でないといけない.
COLLADAのバージョンはCOMPONENTSで指定する.
find_packageの場合COLLADA_DOMはすべて大文字でないといけない.
COLLADAのバージョンはCOMPONENTSで指定する.
例)
find_packags(COLADA_DOM 2.3.1 COMPONENTS 1.4) find_packags(COLADA_DOM 2.4 COMPONENTS 1.5)
注意点
許されない操作がコンパイル時にエラーにならない.
実行時にいきなりセグフォしてはじめて気づくことが多い.
セグフォした場合,配列の範囲超過よりもまずは
COLLADAのフォーマット違反をやろうとしているかどうかを見たほうがいい.
変な名前のタグをつけようとしたり
違う場所にタグをつけようとしたりは実行できない.
実行時にいきなりセグフォしてはじめて気づくことが多い.
セグフォした場合,配列の範囲超過よりもまずは
COLLADAのフォーマット違反をやろうとしているかどうかを見たほうがいい.
変な名前のタグをつけようとしたり
違う場所にタグをつけようとしたりは実行できない.
COLLADAの書式
xmlで記述.ルートはCOLLADA.
- asset,
- library_geometries,
- library_effects,
- library_images,
- library_materials,
- library_visual_scenes
がおもな要素となる.
ものによってはどれかが足りないと表示すらされない.
ものによってはどれかが足りないと表示すらされない.
このうち,モデルの形状を記述するのは
library_geometriesである.
OBJ形式における.mtlファイルの役割は
library_geometriesである.
OBJ形式における.mtlファイルの役割は
- library_effects,
- library_images,
- library_materials
が果たす.
library_visual_scenesはモデルの姿勢やマテリアル情報を決める.
library_visual_scenesはモデルの姿勢やマテリアル情報を決める.
asset
ヘッダーと単位系を記述.
library_images
複数のimageを子要素として持てる.
テクスチャ画像を指定.
テクスチャ画像を指定.
library_effects
複数のeffectを子要素として持てる.
素材の質感,貼り付けるテクスチャを指定.
surfaceのinit_fromでimageのidを指定.
素材の質感,貼り付けるテクスチャを指定.
surfaceのinit_fromでimageのidを指定.
library_materials
複数のmaterialを子要素として持てる.
effectを指定することでマテリアルを設定.
instance_effectでeffectのidを指定.
effectを指定することでマテリアルを設定.
instance_effectでeffectのidを指定.
library_geometries
複数のgeometryを子要素として持てる.
形状や法線,UVマップなどを記述する.
形状や法線,UVマップなどを記述する.
- geometry
- mesh
- source
- float_array
- source
- mesh
のようなかんじ
このときgeometry,source,arrayにはid属性がつき,後で参照される.
このときgeometry,source,arrayにはid属性がつき,後で参照される.
またarrayには格納のされ方を記述する
technique_common accessor
がsourceの下に付随する.
ここでは array のidを指定する.
technique_common accessor
がsourceの下に付随する.
ここでは array のidを指定する.
vertices
頂点を格納した source のidを参照する.
triangles
頂点,法線,UVマップのインデックスを三角パッチごとに指定.
頂点は vertices のidを,
他二つは参照する array のidを指定する.
ここで設定するmaterialはvisual_sceneから参照される.
マテリアルの設定があるのでテクスチャ画像が異なる場合は
異なるtrianglesを設定する.
頂点は vertices のidを,
他二つは参照する array のidを指定する.
ここで設定するmaterialはvisual_sceneから参照される.
マテリアルの設定があるのでテクスチャ画像が異なる場合は
異なるtrianglesを設定する.
library_visual_scenes
visual_sceneでモデルの姿勢やライティングを設定する.
visual_scene node instance_geometry
では geometry のidを指定する.
visual_scene node instance_geometry
では geometry のidを指定する.
bind material technique_common instance_material
ではtrianglesのmaterial属性とmaterialのid属性をひもづける.
ではtrianglesのmaterial属性とmaterialのid属性をひもづける.