我需要为我在Java3D应用程序中创建的某些形状(比如圆柱体)添加拖放功能。我想我知道基本步骤(虽然含糊不清):
node.setCapability(Node.ENABLE_PICK_REPORTING)
和PickTool.setCapabilities(node, PickTool.INTERSECT_FULL)
? ] 此外, PickShapes究竟是什么以及它们将如何影响拣货算法?
如果我提出非常基本的问题,我真的很抱歉,但我花了一整天时间阅读文档并成为初学者,这些对我来说还不够。我很难抓紧时间,我希望Stackoverflow社区能够慷慨地用耐心向我解释我的怀疑。非常感谢!
更新:只是为了澄清,通过拖放功能,我的意思是我想使用通常的鼠标左键,拖动和鼠标释放手势将圆柱体从画布上的一个位置转换为其他位置
答案 0 :(得分: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);
}