2

Java3D アプリケーションで作成したいくつかの形状 (円柱など) にドラッグ アンド ドロップ機能を追加する必要があります。私は基本的な手順を知っていると思います(漠然としていますが):

  1. 現在のCanvasとルートBranchGroupを使用してPickCanvasを構築します。
  2. PickCanvasのモードをPickCanvas.GEOMETRYに設定します。これはドキュメントによると、より正確です [疑問: さまざまなピッキング モード、つまり BOUNDS、GEOMETRY、GEOMETRY_INTERSECT_INFO の違いは何ですか? ドキュメントからは明らかではありません。ジオメトリによるピッキングの本当の意味は何ですか? ]
  3. 選択したいオブジェクトの機能を設定します。[疑問: 機能を設定するこれら 2 つの方法の違いは何ですか? - node.setCapability(Node.ENABLE_PICK_REPORTING)PickTool.setCapabilities(node, PickTool.INTERSECT_FULL)? ]
  4. キャンバスにmouseListenerを追加します。
  5. mousePressedメソッドでは、どのオブジェクトがクリックされたかを識別し、適切なアクションを実行する必要があります。クリックされたオブジェクトを特定する方法について、詳細な回答をいただければ非常に助かります。]

また、PickShapes とは正確には何であり、ピッキング アルゴリズムにどのように影響しますか?

非常に基本的な質問をしている場合は本当に申し訳ありませんが、ドキュメントを読み、初心者であることに丸一日を費やしてきたので、それだけでは十分ではありません。私は時間に追われており、Stackoverflow コミュニティが寛大で、私の疑問を辛抱強く説明してくれることを願っています。どうもありがとう !

更新: 明確にするために、ドラッグ アンド ドロップ機能を使用して、通常の左マウス プレス、ドラッグ、およびマウス リリース ジェスチャを使用して、キャンバス上のある位置から別の位置に円柱を移動したいことを意味します。

4

1 に答える 1

0

形状を変換 (および回転) するには、MouseBehaviorクラスを使用します。たとえば、次の例では、マウスの左ボタンで回転し、右で平行移動します。

public Test()
{
    SimpleUniverse universe = new SimpleUniverse();
    BranchGroup group = new BranchGroup();

    TransformGroup rootTransformGroup = new TransformGroup();
    group.addChild(rootTransformGroup);
    rootTransformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    rootTransformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);

    ColorCube colorCube = new ColorCube(.3);
    rootTransformGroup.addChild(colorCube);

    BoundingSphere boundingSphere = new BoundingSphere(new Point3d(0, 0, 0), 1000);

    MouseRotate mouseRotate = new MouseRotate();
    mouseRotate.setTransformGroup(rootTransformGroup);
    mouseRotate.setSchedulingBounds(boundingSphere);
    group.addChild(mouseRotate);

    MouseTranslate mouseTrans = new MouseTranslate();
    mouseTrans.setTransformGroup(rootTransformGroup);
    mouseTrans.setSchedulingBounds(boundingSphere);
    group.addChild(mouseTrans);

    universe.getViewingPlatform().setNominalViewingTransform();
    universe.addBranchGraph(group);
}
于 2012-12-03T16:43:56.597 に答える