COLLADA DOMをセットアップ


1. 前提事項

 本書は、COLLADA-DOM 2.2をセットアップした際の作業メモになります。 環境の構成は、以下を前提とします。

 記述範囲は、COLLADA DOM を利用してアプリケーションとリンクが可能になる状況までになります。
 COLLADA DOM を利用する目的は、COLLADA DOM 形式のドキュメント(.dae)を読み込むことです。
 この為、配布媒体からライブラリファイルを作る事を目標とします。

 こういうライブラリを利用する作業を行う場合の定石に「ライブラリファイルになっている状態を入手して利用する*1」があります。
 過去にコンパイル済みのライブラリとヘッダファイルをパッケージして配布していた様子でしたが、現時点だと配布していませんでした。
 この為、ソースコードからライブラリを作成する手順を記述します。

2. ダウンロードパッケージのファイル構成

 COLLADA DOM の配布ファイルを展開すると、幾つかのディレクトリが作られます。
 最上位のディレクトリに着眼して、ディレクトリの意味づけを観点に分かった意味を記述します。

表2-1. ディレクトリ名と意味
ディレクトリ名 意味
dom COLLADA ドキュメントの読み込みと書き込みを提供するライブラリ
fx COLLADA のエフェクトローダとか書いてあるが、詳細は調べていない
License_Folder ライセンスの書類
rt ランタイムレンダリングのソースコード(OpenGL ES or PSGL)
viewer COLLADA ビュアのソースコードとプロジェクトファイル

 上記より目的を遂行する為に必要な物は、dom のみになります。
 viewerは、読み込み処理を実装する為のサンプルとして使うのでコンパイルは省略します。

3. DOM ライブラリのコンパイル

3-1. 何をコンパイルするべきか?(調査結果)

 同梱のreadme.txtにある当該作業を説明していると思われる英文を引用します。

[Windows host/Visual Studio]
Project files for Visual C++ 8 (VS 2005) and Visual C++ 9 (VS 2008) are both provided. If you are using Visual C++ 9,
substitute "vc9" for "vc8" for the following instructions.
1) Open Visual Studio Solution at \viewer\projects\vc8-PS3\viewer.sln
2) Select "PS3 debug" or "PS3 release" configuration to build PS3 target
3) Unzip samples.zip, extract its contents to \viewer\bin\
4) Use ProDG Target Manager or Debugger to load viewer.ppu.self (release) or viewer-d.ppu.self in \viewer\bin
Optionally, specify a COLLADA document (cage.dae) as command line argument when loading viewer executable

 vc8 と表記されたキーワードは、Visual Studio 2005 付属のVisual C++を指すとの事です。

 まず最初に躓くのは「1.4」「1.5」のキーワードで、トップディレクトリのreadme.txtには説明がありません。
 調べるとdom\projects ディレクトリにもreadme.txt があり、そちらに説明らしきものがありました。 該当箇所だけ抜粋します。

Let's say we're working on the VC8 files and Collada 1.4.

 …恐らく、CURRENTが1.5、STABLEが1.4と推測します。 英文の助言の通り「1.4」を利用すると定めて、作業を進めます。
 このreadme.txtファイルに「changeColladaVersion.py」という名前のPythonスクリプトを使ってプロジェクトファイルをコンバートしているとの記述がありました。  ですので、作業で詰まった場合は、試してみると良いかもしれません。 取り敢えず、これを使わずにコンパイルはできました。  尚、Pythonのインストール説明は割愛します。

 まとめると「dom\projects\vc8-1.4のプロジェクトファイルを使えばコンパイルできる」となります。

3-2. ライブラリファイルのコンパイル

 簡単なので箇条書きで手順だけ記します。

  1. dom\projects\vc8-1.4のdom.slnを開く
  2. ソリューションをビルドする
  3. とんでもない量のワーニングが発生するので驚く
3-3. ワーニングの調査

 ヘッダファイルに日本語コードページ(932:Shift-JIS)で表示できない文字を含んでいます。 具体的には「UTF-8」で「BOM なし」です。

 Visual Studio 2005のテキストエディタで普通に表示ができます。
 しかし、Visual C++コンパイラ(cl.exe)は、UTF-8 の中でも「UTF-8 (BOM: little)」でないと警告する様子です。
 総合して考えた結論は、cl.exeの機能不足であろうと考えています。 何にせよ回避が必要です。

 対処は、二つ考えられます。

  1. C4819 Warning を抑止する
  2. ヘッダファイルを別の漢字コードに(UTF-8 (BOM付き), Shift-JIS)に変換する

 理由は引き続き記述しますが、警告を抑止する方法を推奨します。 文字コードの変換は、問題が多いです。

 【漢字コードを変換する方法を採用する場合の問題点】

  1. DOM のバージョンアップに差し替える度に変換作業が発生する
  2. Shift-SJISへ変換すると情報の欠損が発生する
  3. UTF-8(BOM)へ変換するとバイトオーダマークに依存する問題を抱える

 1 は変換ツールを使う前提としても、人手を介す事によるロスが発生する可能性があります。
 2 は、一見した所だとヘッダファイルに書式(アンダーライン)が使用されていました。
 この程度なら問題は無いですが、網羅的に漢字コードの変換による障害を洗い出す必要があります。
 これを無視するなら不慮の問題に遭遇する危険があります。
 3 はマーク(BOM: Byte Order Markのこと。マークと略す)のエンディアンに関する問題、マーク付与によるサイズの肥大化などがあります。
 尚、BOM の諸問題については説明しませんので、必要な方はWikipedia などを参照してください。

 以上を理由として「C4819 Warning を抑止する」方法で作業を進めます。

3-4. ワーニングを抑止

 箇条書きで手順だけ記します。

  1. 全てのプロジェクトを選択して、プロジェクトのプロパティを開く
  2. 全ての構成を選択した上で、ワーニング抑止のオプションを変更する

  3. (対象となるプロパティページと項目名、項目値は、図3-1を参照)
top
図3-1. ワーニングを抑止する設定箇所(プロパティページ)
3-5. ライブラリファイルの作成

 前述の3-2を参照してください。

3-6. 出力ファイルの確認

 以下に http://collada.org/mediawiki/index.php/Portal:COLLADA_DOM より必要な箇所のみを抜粋します。
 尚、ライブラリファイルは、dom\build\vc8-1.4 に出力されます。 又、デバッグ版の出力ディレクトリは「dom\build\vc8-1.4-d」になります。

表3-1. ライブラリの種類とライブラリファイル名
リンクの方法 ライブラリの種類 ライブラリファイル名
スタティックリンク リリース版 libcollada14dom22-s.lib
デバッグ版 libcollada14dom22-sd.lib
ダイナミックリンク リリース版 libcollada14dom22.lib
デバッグ版 libcollada14dom22-d.lib

4. リンクする必要があるライブラリファイル

 COLLADA DOM は、外部ライブラリを利用している為、そのライブラリもリンクする必要があります。

 3-6 で参照したドキュメントより、該当箇所を引用します。

 [スタティックリンクの場合]

libcollada14dom22-s.lib (release) or libcollada14dom22-sd.lib (debug)
libxml2_a.lib
zlib.lib
wsock32.lib
pcre.lib (release) or pcre-d.lib (debug)
pcrecpp.lib (release) or pcrecpp-d.lib (debug)
minizip.lib (release) or minizip-d.lib (debug)
libboost_filesystem.lib (release) or libboost_filesystem-d.lib (debug)
libboost_system.lib (release) or libboost_system-d.lib (debug)
 ※ zlib.lib を利用している点に注意すること。  既にzlibを利用している場合は、バージョンの違いで誤動作する可能性を留意する必要

 [ダイナミックリンクの場合]

libcollada14dom22.lib (release) or libcollada14dom22-d.lib (debug)
libboost_filesystem.lib (release) or libboost_filesystem-d.lib (debug)
libboost_system.lib (release) or libboost_system-d.lib (debug)
 ※ ダイナミックリンクの説明は、大分嘘くさい…(足りないのでは?)

5. まとめ

 以上でCOLLADA DOM のライブラリが利用可能になります。
 外部ライブラリを使っているので課題が増えていますが、まずはお疲れ様でした。


*1 作業手順が保守されておらず、配布元が検証していない可能性がある為、確実に手探りで作業する必要があります。

作成日:2010/10/31