0

まず最初に、私は Java3D の初心者です。私の無知をご容赦ください。Java3D でアプリケーションを作成しましたが、ズームに関して次のような問題があります。

  1. Java3D の MouseWheelZoom 動作は、オブジェクトを Z 軸に沿って移動するようです。シーンでは、私の Z 軸は平面から外れていないため、 MouseWheelZoom を使用すると、オブジェクトは近づきませんが、画面からはみ出します。ズーム方向を任意の方向に設定する方法はありますか?

  2. MouseWheelListener を使用し、ズーム手順に基づいて表示プラットフォームを変更することで、問題を回避しました。しかし、今は別の問題があります。オブジェクトが特定の距離よりも近づくと、オブジェクトの一部 (通常はコーナー) が消え始めるため、必要なだけズームできません。

助けていただけますか?

よろしく、

ハッサン

4

1 に答える 1

0
  1. 質問: 次のように、MouseControl に OrbitBehavior を使用していると思います。

    orbit = new OrbitBehavior(canvas3d, OrbitBehavior.REVERSE_ALL);
    

その場合は試してみてください

    orbit.setZoomFactor(-1d);

ズーム方向を逆にします (デフォルトのズーム倍率は +1d です)。

2. 質問: PlatformGeometry に BoundingLeaf を設定して、「表示領域」をカプセル化する必要があります。このようなことを試してください

defaultBounds = new BoundingSphere(new Point3d(radiusGameMap, 0.0, radiusGameMap),
            radiusGameMap * 6.0d);
BoundingLeaf boundingLeaf = new BoundingLeaf(defaultBounds);
PlatformGeometry platformGeom = new PlatformGeometry();
platformGeom.addChild(boundingLeaf);

ここで、radiusGameMap は、マップ全体の半径を定義する double です。

于 2012-06-27T11:59:18.360 に答える