カメラワークの実装について

いま「ポリゴンウォーク」の視点は一人称となっています。

つまり自分のアバターは画面上には出てきません。

※そのため現在はワールドビューの右側にアバタービューを用意しています。

一人称視点は自分が世界を歩いているような臨場感もありますが、やはり何か物足りなさを感じる気はします。

あとはアバタービューを出すくらいなら、アバターをワールドビュー内に入れてその分ワールドビューを大きく見せたいというのもあります。

しかしここでも技術的な課題が・・・。

Cortona3Dではウォークモードにした場合、視点を自分として物体との衝突を勝手に検知してくれます。

もしアバターを背後から見る視点にした場合、視点と自分がいる位置とのズレが生じますので、衝突判定にも何らかの細工を加える必要が出てきます。
※壁があっても衝突は視点との判定なのでアバターは壁に埋まってしまう。

アバターを背後から見る視点の実装については、正弦関数を用いて視点の角度方向のいくらか前方にアバターを常に表示するような形をとればそこまで難しいことはないのかと思いますが、アバターと物体との衝突判定の実装イメージが湧きません。

視点とは別にオブジェクト同士の衝突判定を行う必要が出てきます。

VRMLにはCollisionという衝突判定用のノードがありますが、これはあくまで視点と物体の衝突を検知するものなのでどうも使えそうもない。

もうひとつは範囲侵入を検知するノード、ProximitySensorをすべての物体に設置して、

物体の占める半径:r

視点とアバターの一定距離:d

とした場合に、ProximitySensorで設定する範囲は、

r + d

として、視点がProximtySensorの範囲に侵入したときに視点の動きを制限するのもひとつの方法でしょうか。

しかしこの方法の場合、地形との衝突判定は困難そうです。

地形もひとつのオブジェクトとみなす場合、先ほどの計算方法だとアバターはそもそも地形表面に入れなくなってしまうでしょう。

カメラワークにしても、もし3Dゲームのような「ゴム紐視点」を取り入れようとするならばよく実装方法を勉強しないといけません。

アバターを画面内に表示しようとするだけでこれだけ多くの課題が発生するんですね。

この辺はまたサイトを使ってくれるユーザーが増えてきたときに考えたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>