さて、Unwrapのライセンスコードが届きましたので、さっそくUltimate Unwrap2.0をインストール、さらに、COLLADAで書き出すためのプラグインをインストールしました。
いろいろと機能はありそうなのですが、とりあえずDirectXからCOLLADAに書き出すためにだけ使うので、細かい使用方法はスルーしちゃいます。
復習しますと、
LWからアニメ付きでDirectX書き出し(.x)→ Ultimate Unwrapで読み込み、COLLADA書き出し(.dae)→ Paperviewで読み込み
という手順ですね。
で、結論からいいますと、以下のようにうまく書き出せました。(画像をクリックしてください)
ただ、ここまでには少し紆余曲折がありました。
まず、ちょっと不用意だったのが、PCにボーンを仕込む時に使ったスケルゴンをオブジェクとから削除するのを忘れてしまっていたこと。これを忘れると、DirectXエクスポートでエラーが出てしまいます。
次に、Yellow Soupさんのブログにもあるように、画像のパスがうまくいかない、という症状が出ました。
で、あれこれやったのですが、なかなかうまくいかないため、スクリプトで画像を設定するようにしました。前々回の投稿で書いたように、BitmapAssetMaterialでサーフェイスに割り当てる方法ですね。
ただ、LWから書き出したCOLLADAの場合は、LWのサーフェイス名にマテリアル設定すれば良かったのですが、今回のUnwrapで書き出したCOLLADAの場合はうまくいきませんでした。
で、そのCOLLADAを調べたところ、JPGテクスチャを指定しているらしいソース記述が以下のようになっていました。
<library_materials>
<material id="VisualMaterial1" name="Unassigned">
<instance_effect url="#Effect"/>
</material>
<material id="VisualMaterial2" name="NoNameMat0">
<instance_effect url="#Effect1"/>
</material>
<material id="VisualMaterial" name="pc.jpg">
<instance_effect url="#Effect2"/>
</material>
</library_materials>
で、この行の中のid="VisualMaterial"をマテリアル名と考えればよいのかなと思い、AS内で以下のように設定しましたところ、うまくいきました。
//画像マテリアルを作成
var mat1:BitmapAssetMaterial = new BitmapAssetMaterial("pc",true);
//VisualMaterialというマテリアル名に、上で作った画像マテリアルを割り当て
var materials:MaterialsList = new MaterialsList(
{
VisualMaterial: mat1
} );
// Colladaファイルの読み込み
var dae:DAE = new DAE();
dae.load("collada/pc_bone_120.dae",materials);
scene.addChild(dae);
もしかしたら、ファイル変換のどこかで設定がおかしかったのかもしれません。
まぁ、このように読み込んでおけば、マテリアルに画像以外の設定も加えやすいので、これはこれでとりあえずいいかな。
てことで、Unwrapを使ってのアニメ付き3Dオブジェクト読み込みでした。
次回は、せっかくなので、ククリックしたらアニメーションが始まる、みたいな、マウスでのアニメ制御について調べてみようと思います。
いろいろと機能はありそうなのですが、とりあえずDirectXからCOLLADAに書き出すためにだけ使うので、細かい使用方法はスルーしちゃいます。
復習しますと、
LWからアニメ付きでDirectX書き出し(.x)→ Ultimate Unwrapで読み込み、COLLADA書き出し(.dae)→ Paperviewで読み込み
という手順ですね。
で、結論からいいますと、以下のようにうまく書き出せました。(画像をクリックしてください)
ただ、ここまでには少し紆余曲折がありました。
まず、ちょっと不用意だったのが、PCにボーンを仕込む時に使ったスケルゴンをオブジェクとから削除するのを忘れてしまっていたこと。これを忘れると、DirectXエクスポートでエラーが出てしまいます。
次に、Yellow Soupさんのブログにもあるように、画像のパスがうまくいかない、という症状が出ました。
で、あれこれやったのですが、なかなかうまくいかないため、スクリプトで画像を設定するようにしました。前々回の投稿で書いたように、BitmapAssetMaterialでサーフェイスに割り当てる方法ですね。
ただ、LWから書き出したCOLLADAの場合は、LWのサーフェイス名にマテリアル設定すれば良かったのですが、今回のUnwrapで書き出したCOLLADAの場合はうまくいきませんでした。
で、そのCOLLADAを調べたところ、JPGテクスチャを指定しているらしいソース記述が以下のようになっていました。
<library_materials>
<material id="VisualMaterial1" name="Unassigned">
<instance_effect url="#Effect"/>
</material>
<material id="VisualMaterial2" name="NoNameMat0">
<instance_effect url="#Effect1"/>
</material>
<material id="VisualMaterial" name="pc.jpg">
<instance_effect url="#Effect2"/>
</material>
</library_materials>
で、この行の中のid="VisualMaterial"をマテリアル名と考えればよいのかなと思い、AS内で以下のように設定しましたところ、うまくいきました。
//画像マテリアルを作成
var mat1:BitmapAssetMaterial = new BitmapAssetMaterial("pc",true);
//VisualMaterialというマテリアル名に、上で作った画像マテリアルを割り当て
var materials:MaterialsList = new MaterialsList(
{
VisualMaterial: mat1
} );
// Colladaファイルの読み込み
var dae:DAE = new DAE();
dae.load("collada/pc_bone_120.dae",materials);
scene.addChild(dae);
もしかしたら、ファイル変換のどこかで設定がおかしかったのかもしれません。
まぁ、このように読み込んでおけば、マテリアルに画像以外の設定も加えやすいので、これはこれでとりあえずいいかな。
てことで、Unwrapを使ってのアニメ付き3Dオブジェクト読み込みでした。
次回は、せっかくなので、ククリックしたらアニメーションが始まる、みたいな、マウスでのアニメ制御について調べてみようと思います。