2011-12-24 4 views
1

Java Applet Java3D를 작성 중이며 버튼을 클릭 할 때 MouseRotate 동작에서 마우스 회전을 재설정하려고합니다.Java3D에서 마우스 회전을 재설정하는 방법은 무엇입니까?

BoundingSphere bound = 
      new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);  

     MouseRotate mouseRotate = new MouseRotate(); 
        TransformGroup modelGroup = new TransformGroup(); 
        mouseRotate.setTransformGroup(modelGroup); 
        modelGroup.addChild(mouseRotate); 
        mouseRotate.setSchedulingBounds(bound); 

답변

0

죄송합니다. MouseRotate을 다시 작성하지 않고 재설정 할 수있는 방법이없는 것 같습니다.

두 번째 시도 : modelGroup의 부모로 다른 TransformGroup을 장면 그래프에 포함시키고 재설정이 거부 될 때 modelGroup의 반전 변환으로 변환을 설정합니다.

TransformGroup modelGroupReset = new TransformGroup(); 
TransformGroup modelGroup = new TransformGroup(); 
modelGroupReset.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); 
modelGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); 
modelGroupReset.addChild(modelGroup); 

JButton resetButton = new JButton(); 
resetButton.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     Transform3D t3d = new Transform3D(); 
     modelGroup.getTransform(t3d); 
     t3d.invert(); 
     modelGroupReset.setTransform(t3d); 
    } 
}); 

;

0

이 사용 해보세요 : 관련 코드는 다음과 같습니다 mouseRotate.initialize(); 다음 mouseRotate.setTransformGroup(modelGroup);을 기억하자. 검증되지 않은!

+0

감사하지만 작동하지 않았습니다. initialize() 메서드를 사용할 때마다 다음 오류가 발생합니다. "AWT-EventQueue-0"스레드의 예외 java.lang.IllegalStateException : 초기화 또는 processStimulus에서 wakeupOn을 호출해야합니다. – Hassan

2

작동합니다. 고마워요! 그러나 제안 된 방법을 구현하는 동안 우연히 더 간단 해졌습니다. 코드는 다음과 같습니다. 이 메서드는 내 목적을 위해 작동하는 것으로 보이며 부모 TransformGrop도 필요하지 않습니다. 이 방법은 분명하고 이전에 시도했다고 생각했습니다. 아마 나는 이것을 시도했지만 다른 이유로는 효과가 없었습니다. 하산 건배

TransformGroup modelGroup = new TransformGroup(); 
modelGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); 
modelGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); 

JButton resetButton = new JButton(); 
resetButton.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent e) { 
    modelGroup.setTransform(new Transform3D()); 
} 
}); 
관련 문제