パスワードを忘れた? アカウント作成
431755 journal

ky_lokの日記: [Java3D]ズームと移動とモデルの大きさ

日記 by ky_lok

めもめも。

以前から、読み込むモデルの大きさ(バウンディングボックスのradius)によっては、マウスでずりずりとズームや移動をしたときの反応がまちまち(かっ飛んでいってそのまま行方不明とか、ちっともうごかずいらいらずりずり・・・とか)だったのを、TransformGroup#getBounds()の返り値を使ってパラメータ調整。
ところが。
TransformGroupを作成するメソッドの中で一緒にパラメータをセットしてやると、どんなモデルでもradiusが一律-1.0になる。

・・・教訓。
モデルのサイズを知りたいときは、モデルをTransformGroupにaddChild()してから、getBounds()しましょう。

  1. hoge = new TransformGroup() ;
  2. hoge.addChild( model ) ;
  3. bounds = hoge.getBounds() ;
  4. translator.setFactor( bounds.getRadius() ) ;
  5. zoomer.setFactor( bounds.getRadius() ) ;

(実際は、bouns.getRadius()の値そのままではなくて、何倍かしてやったほうがいい)

setFactor()は、MouseTranslateとMouseZoomにすればOK。
MouseRotateはしても意味無し。却っておかしくなる。
これは、回転角と移動・ズームの次元が違うせい・・・でいいのかな?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人

読み込み中...