PV3D2.1: ウォークスルーテスト

2009年9月26日
以前のエントリの視線とメッシュの交差判定を使って
凸凹の地形を歩かせてみました。

walkthrough1.jpg
  • 矢印キーで移動
  • 右上のマップをクリックすると地形変形
地形は10x10分割のPlaneをperlinNoiseした画像の明るさに合わせて頂点移動してるだけです。
今回交差判定用のレイを2本飛ばしていて、
1つはキャラクタ上空から真下に飛ばして地形の高度をチェックして、
2つ目はカメラの注視点から視点にむかってレイを飛ばして
カメラがポリゴンに埋まっていないかをチェックしています。
(地形との交差点までの距離がカメラの距離より短かったら埋まっている)

キャラクターモデル

ロボットは3dsMax2010で作ってColladaエクスポータで書き出したものです。
エクスポータはここの「OpenCOLLADA for 3ds Max(ver1.2.3)」を使いました。

顔のディスプレイっぽいところ、黒い板の向こうに光る顔が見えてますが
透過させてるわけではなくて、法線フリップした黒ボックスを組み合わせてます。
↓こんな感じ
robot.jpg

Colladaファイルの書き出し

モデルができたらエクスポータで書き出すだけなんだけど、
テクスチャ付きのColladaモデルをPapervisionで表示するまで
いくつかハマったポイントがあったのでメモしておきます。
  • 書き出し形式
collada1.jpg
Autodesk Colladaじゃなくて下のCOLLADA NextGenの方を選びます。
最初Autodeskの方を選んでて色々おかしな事になってました。。

  • 書き出しオプション
collada2.jpg
細かいオプションはわからないけどとりあえずこんな感じでいけました。
Copy Imagesを選ぶとdaeファイルを書き出した所に画像データがコピーされるみたい。

  • daeファイル内の個人情報
daeファイルといっても中身はXMLなので普通に編集できます。
書き出したファイルを見ると上の方に<contributor>タグがあるんですが
この中にユーザー名とかmaxファイルのフルパスとか入っちゃってるので
まずそうなのは消しておいたほうがいいかも。

  • サーバーにあげると画像マテリアルが表示できない
これなんだけど、単純にパスの参照がずれてるとか、
クロスドメインの問題かなと思ったんだけど、結局よくわからなかった・・・
DAEクラスのインスタンス生成時にマテリアルリストを渡す方法ではうまくいったので
今回はその方法でやっています。

DAEのマテリアルリストの設定方法はこちらのサイトが詳しいです。
[Pv3D]Papervision3Dをやってみた その3[AS3.0] - 明日の今日
[Pv3D][Flex]Collada(.dae)のマテリアル張り替え - 明日の今日

キャラクターアニメーション

あと、せっかくなのでアニメーションもさせてみました。
複数アニメーションに関してはこちらの記事を参考にさせてもらいました。
[Papervision3D 2.1 alpha] Collada(.dae)で複数モーション - KYUCON*BLOG
Shockwave3Dの時は時間ベースの歩行アニメーションと
フレームベースの移動を同期させる為に
FPSを計算してアニメーションスピードを調節してたんだけど、
現状のDAEクラスにはアニメーションの再生倍率を弄る機能はついてないのかなあ。

トラックバック(0)

トラックバックURL: http://www.morocoshi.net/mt/mt-tb.cgi/14

コメントする