さて、オブジェクトにUVマップでテクスチャを貼ってみます。

UVの向きに矛盾などないか検証するため、さいころのように各面に番号を貼り付けます。

LWモデラーで面ごとにUVを貼ります。

LW画面


それを、Papervision3Dで読み込みます。(画像をクリックしてください)

SWF画面


特に問題なくテクスチャーが貼られているようです。

ちなみに、昨日のサンプルで設定していたFlatShadeMaterialを外しています。

dae.load("collada/base_poly.dae",material);

この赤字部分を外しました。

そして、注意事項ですが、コチラのサイトでも書かれているように、COLLADAファイル内の画像パスを手書きで修正しなくてはなりません。というか、画像もCOLLADAと一緒に一つのデータになるのかと思っていたのですが、COLLADAってバイナリデータじゃなくアスキーデータなんですね。

で、テキストエディタで開いて、LW内の画像パス読み込みリンクを、実際のアップ時のパスに書き換えます。そしてDAEファイルから正しい位置関係になるよう画像データも配置します。

ここまでで気になる点ですが、まず第一に、UVテクスチャを表示させるには、Papervision3D側のマテリアル設定をはずさないといけないらしいことです。つまり、動的なライティングやシェーディングは使えなくなるため、陰影は画像テクスチャにベイクしないといけないようです。

この点については、LWのセミナーで講演した方も「ベイクしないといけない」と言っていたので、おそらくそれしか方法がないのだと思います。良い方法が発見できたら試してみます。

動的にライティングやシェーディングが反映される3Dコンテンツを作ろうと思ったら、CPLLADAではなくPV3Dでオブジェクトやテクスチャを設定する方法にしなくてはいけないということですね。

この辺の制約は、作るコンテンツの性格に応じて頭を使って対処すべきなんでしょうね。

気になる点の二番目は、上のサンプルのような粗いオブジェクトだと、回転する際に数字が歪んで見えることがあります。これは、三角ポリゴンにしている影響だそうですが、これは直せないものかなと。

これはちょっと宿題にします。(preciseをどうにか使えないものか…)

てことで、UVマッピングのメモでした。