ky_lokの日記: [Java3D]ズームと移動とモデルの大きさ
日記 by
ky_lok
めもめも。
以前から、読み込むモデルの大きさ(バウンディングボックスのradius)によっては、マウスでずりずりとズームや移動をしたときの反応がまちまち(かっ飛んでいってそのまま行方不明とか、ちっともうごかずいらいらずりずり・・・とか)だったのを、TransformGroup#getBounds()の返り値を使ってパラメータ調整。
ところが。
TransformGroupを作成するメソッドの中で一緒にパラメータをセットしてやると、どんなモデルでもradiusが一律-1.0になる。
・・・教訓。
モデルのサイズを知りたいときは、モデルをTransformGroupにaddChild()してから、getBounds()しましょう。
- hoge = new TransformGroup() ;
- hoge.addChild( model ) ;
- bounds = hoge.getBounds() ;
- translator.setFactor( bounds.getRadius() ) ;
- zoomer.setFactor( bounds.getRadius() ) ;
(実際は、bouns.getRadius()の値そのままではなくて、何倍かしてやったほうがいい)
setFactor()は、MouseTranslateとMouseZoomにすればOK。
MouseRotateはしても意味無し。却っておかしくなる。
これは、回転角と移動・ズームの次元が違うせい・・・でいいのかな?
[Java3D]ズームと移動とモデルの大きさ More ログイン