[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:01469] Re: 衝突直前と衝突直後について
‥‥・・━━━● 2000年ダイエーのお中元 ●━━━・・‥‥
ハワイ旅行・商品券が当たる!! 全国無料配達承り中
さらに!! d´clubサポーター(登録・会費無料)なら
早期割引10%OFF 7月3日(月)まで
━━ http://www.daiei.co.jp/ochugen2000/ad/easyml.html ━━━
-PR------------------------------------------------------------------PR
えんどうです。
> 目線をある一定量移動させ、もし自分以外の物体に衝突したら、目線を衝突
> 直前の座標に戻したいのですが、目線を変更するためのGUIのスレッドとJava3D
> が衝突を判定するスレッドが別であるためか、すぐに衝突を検出できずに目線
> を移動できてしまいます。
>
> えんどうさんの、「Java 3D プログラミングガイド (凍結版) 」にあるサンプル
> (http://www.javaopen.org/j3dbook/examples/CollisionTest/CollisionTest.java)
> もどうようの動きを見せ、簡単に壁を突き抜けてしまいます。
つきぬけてましたか^^;
> みなさんはこのような場合、どのように対処していらっしゃるのでしょうか?
Java 3Dの衝突判定は、
WakeupOnCollisionEnter (衝突した)、
WakeupOnCollisionMovement (衝突しながら移動した)、
WakeupOnCallisionExit (衝突していたものが離れた)
の3つなのですが、
最初のものが検出されたとしても、
最後のものが必ずしも検出されない場合があるとか、
けっこう扱いがむずかしいです。
このサンプルでは WakeupOnCollisionMovement だけを使っているのですが、
本当は3つとも使って別の動作をさせた方が良いかも知れません。
また、BoundingBox を使う荒い判定と、
Geometry を使う細かい判定があるのですが、
BoundingBox を使うと衝突判定が甘すぎ、
Geometry を使うとパフォーマンスが悪くなるなどの問題もあります。
> やはり、衝突判定用の境界群を自前で管理しておき(最適化できるように工夫は
> 必要でしょうが)、目線を移動させるたびに自分で判定するのでしょうか?
私も経験不足なのでよくわかりませんが、
空間をマークするようなことが必要なのだと思います。
> ま、そうしたところで interpolatorを利用して運動している物体との衝突判定
> はうまく行かないような気もしますが...。
衝突判定や Interpolator が増えると、
かなりパフォーマンスが悪くなるという印象があります。
ある程度あきらめが必要なんでしょうね・・
そういえば Sun の Java 3D 開発チームが作ったこの手のサンプル、
Maze Demo は公開されたんでしょうか?
この Maze Demo で衝突判定関係の技法が
いろいろわかるのではないかと期待してるんですが..
--
ENDO Yasuyuki <yasuyuki@xxxxxxxxxxxx>
http://www.javaopen.org/jfriends/index.html (Japanese Only)