本書は、COLLADA-DOM 2.2をセットアップした際の作業メモになります。 環境の構成は、以下を前提とします。
記述範囲は、COLLADA DOM を利用してアプリケーションとリンクが可能になる状況までになります。
COLLADA DOM を利用する目的は、COLLADA DOM 形式のドキュメント(.dae)を読み込むことです。
この為、配布媒体からライブラリファイルを作る事を目標とします。
こういうライブラリを利用する作業を行う場合の定石に「ライブラリファイルになっている状態を入手して利用する*1」があります。
過去にコンパイル済みのライブラリとヘッダファイルをパッケージして配布していた様子でしたが、現時点だと配布していませんでした。
この為、ソースコードからライブラリを作成する手順を記述します。
COLLADA DOM の配布ファイルを展開すると、幾つかのディレクトリが作られます。
最上位のディレクトリに着眼して、ディレクトリの意味づけを観点に分かった意味を記述します。
ディレクトリ名 | 意味 |
---|---|
dom | COLLADA ドキュメントの読み込みと書き込みを提供するライブラリ |
fx | COLLADA のエフェクトローダとか書いてあるが、詳細は調べていない |
License_Folder | ライセンスの書類 |
rt | ランタイムレンダリングのソースコード(OpenGL ES or PSGL) |
viewer | COLLADA ビュアのソースコードとプロジェクトファイル |
上記より目的を遂行する為に必要な物は、dom のみになります。
viewerは、読み込み処理を実装する為のサンプルとして使うのでコンパイルは省略します。
同梱の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のプロジェクトファイルを使えばコンパイルできる」となります。
簡単なので箇条書きで手順だけ記します。
ヘッダファイルに日本語コードページ(932:Shift-JIS)で表示できない文字を含んでいます。 具体的には「UTF-8」で「BOM なし」です。
Visual Studio 2005のテキストエディタで普通に表示ができます。
しかし、Visual C++コンパイラ(cl.exe)は、UTF-8 の中でも「UTF-8 (BOM: little)」でないと警告する様子です。
総合して考えた結論は、cl.exeの機能不足であろうと考えています。 何にせよ回避が必要です。
対処は、二つ考えられます。
理由は引き続き記述しますが、警告を抑止する方法を推奨します。 文字コードの変換は、問題が多いです。
【漢字コードを変換する方法を採用する場合の問題点】
1 は変換ツールを使う前提としても、人手を介す事によるロスが発生する可能性があります。
2 は、一見した所だとヘッダファイルに書式(アンダーライン)が使用されていました。
この程度なら問題は無いですが、網羅的に漢字コードの変換による障害を洗い出す必要があります。
これを無視するなら不慮の問題に遭遇する危険があります。
3 はマーク(BOM: Byte Order Markのこと。マークと略す)のエンディアンに関する問題、マーク付与によるサイズの肥大化などがあります。
尚、BOM の諸問題については説明しませんので、必要な方はWikipedia などを参照してください。
以上を理由として「C4819 Warning を抑止する」方法で作業を進めます。
箇条書きで手順だけ記します。
前述の3-2を参照してください。
以下に http://collada.org/mediawiki/index.php/Portal:COLLADA_DOM より必要な箇所のみを抜粋します。
尚、ライブラリファイルは、dom\build\vc8-1.4 に出力されます。 又、デバッグ版の出力ディレクトリは「dom\build\vc8-1.4-d」になります。
リンクの方法 | ライブラリの種類 | ライブラリファイル名 |
---|---|---|
スタティックリンク | リリース版 | libcollada14dom22-s.lib |
デバッグ版 | libcollada14dom22-sd.lib | |
ダイナミックリンク | リリース版 | libcollada14dom22.lib |
デバッグ版 | libcollada14dom22-d.lib |
COLLADA DOM は、外部ライブラリを利用している為、そのライブラリもリンクする必要があります。
3-6 で参照したドキュメントより、該当箇所を引用します。
[スタティックリンクの場合]
libcollada14dom22-s.lib (release) or libcollada14dom22-sd.lib (debug)※ zlib.lib を利用している点に注意すること。 既にzlibを利用している場合は、バージョンの違いで誤動作する可能性を留意する必要
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)
[ダイナミックリンクの場合]
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)
以上でCOLLADA DOM のライブラリが利用可能になります。
外部ライブラリを使っているので課題が増えていますが、まずはお疲れ様でした。
作成日:2010/10/31