2017-04-21 2 views
1

나는 3D CAD 도면과 0,0,0을 중심으로하는 다양한 첨부 된 모양으로 구성된 java3d 장면을 가지고 있습니다. 나는 OrbitBehaviour를 사용하여 사용자가 그 주위를 돌아 다니게합니다.(OrbitBehaviour?를 사용하여) java3d 장면을 프로그래밍 방식으로 회전

한 축 주위를 고정 된 양 (예 : 10도이지만 분명히 라디안)만큼 회전시키는 버튼이 필요합니다. lookAt를 사용하여 초기 시점으로 돌아가는 "집"버튼이 이미 있습니다.

다른 작업과 비교해 보면 소리가 간단하지만 시도한 접근 방식에 상관없이 작동하지 않습니다.

제가 생각하기에, OrbitBehaviour에 getViewPlatformTransform()을 요청하고 0,0,0 -> rotate -> 원래 위치로 어떻게 든 이동해야합니까?

+0

명확히하기 위해 사용자가 마우스를 드래그하여 하나의 축을 중심으로 조금만 회전하는 것처럼 장면을 이동시키고 싶습니다. – UnixNerd

답변

2

가장 쉬운 방법은 모든 개체를 TransformGroup에 넣고 회전 행렬을 적용하는 것입니다.

TransformGroup tg = new TransformGroup(); 
Transform3D transform = new Transform3D(); 
/// add objects to transform group 
tg.setTransform(transform); 

런타임에서 변환 코드를 변경하려면 해당 변환 그룹에 적절한 힌트를 추가해야합니다.

+0

감사합니다. 이전에 시도했지만, 초기 장면을 컴파일 한 후에 레이블을 추가하고 제거해야하므로 문제가있었습니다. 이번에는 문제를 해결하고 물론 답을 얻을 수 있습니다 :-) – UnixNerd

+0

제가 기억하는 한, 런타임 예외를 던지지 않도록 적절한 힌트가 필요하지만 오브젝트가 장면에 동적으로 추가 될 수 있습니다 (즉, 변환 그룹을 통해). . – Dariusz

+0

초기 장면을 컴파일 한 후에 BranchGroups 만 추가 할 수 있다고 생각합니다. 그래서 다른 물체는 하나의 물체 아래에 싸여 야합니다. – UnixNerd

관련 문제