2012-07-24 2 views
1

three.js를 사용하면 중앙에서 팬 된 객체를 회전 할 수 있습니다. http://jsfiddle.net/yKt6h/4/three.js를 사용하여 중심을 중심으로 회전 된 객체를 회전하는 방법은 무엇입니까?

제어판에서 자동 회전 모드를 선택하면 중앙에 대해 회전 된 회전식 큐브를 회전 할 수 있습니다. 마우스 움직임으로 큐브를 회전하려고 할 때 비슷한 효과를 얻을 수 있습니까? 가능한 경우

는 당신이 요구하는 것은 어려운 일이 아니다 그러나 당신의 jsFiddle THREE is not defined을 볼 때 내가 콘솔에서 오류를 얻고있다 나에게 샘플 코드

+0

을 나는 아직도 재생을 기다리고 :

controls = initTrackball(camera, 0.8); 

그런 다음 각 프레임에 당신이 할 일은 당신의 ANIM 루프 업데이트 함수를 호출합니다. 누군가가이 요구를 구현하기 위해 TrackballControls.js에서해야 할 모든 수정 사항을 설명 할 수 있습니까? –

답변

2

을 제공하십시오. 트랙볼 카메라는 원하는대로 정확하게 작동하도록 설계되었습니다. 원점에 객체를 렌더링하는 경우 트랙볼 컨트롤을 초기화하면됩니다. 간단한 moon demo that uses TrackballControls을 만들었습니다. TrackballControls.js에서 수정 작업을 수행 할 필요는 없습니다. 내가 트랙볼을 초기화 함수를 호출 위의 데모에서

함수는 나의 ​​ThreeUtil.js 파일에 정의되어 제어 : 당신은 사용자가 이동하지 못하도록하려면

function initTrackball(camera, rotate, zoom, pan, damping) { 
    var controls = new THREE.TrackballControls(camera); 
    controls.rotateSpeed = rotate || 1.0; 
    controls.zoomSpeed = zoom || 1.2; 
    controls.panSpeed = pan || 0.8; 
    controls.noZoom = false; 
    controls.noPan = false; 
    controls.staticMoving = true; 
    controls.dynamicDampingFactor = damping || 0.3; 
    return controls; 
} 

또는 줌 기능을 사용하여 객체를 회전시킬 수 있습니다. 위 기능에서 controls.noZoom = truecontrols.noPan = true을 설정하면됩니다.

내 달 개체가 내 장면의 원점에 있기 때문에 내가해야하는 모든 작업은 카메라를 원점에서 약간 떨어져 놓는 것입니다. 우리는 z 축의 양의 값으로 놓을 것이므로 이미 원점에서 객체를보고 있습니다. 그런 다음 위의 함수를 호출하여 컨트롤을 설정합니다. 나는 사용자 정의 회전 속도에 전달합니다

controls.update(camera); 
+0

jsfiddle을 업데이트하여 오류를 수정했습니다. 링크 : http://jsfiddle.net/yKt6h/4/ 여기에서 initTrackball 코드를 사용했지만 예상대로 작동하지 않습니다. 마우스를 사용하여 큐브를 회전하면 그 회전 w.r.t [0,0,0]이 움직입니다. 큐브 중심으로 큐브를 회전시키고 싶습니다. 결과 페이지의 오른쪽 상단에있는 제어판에서 회전 확인란을 선택하면 예상 된 결과를 볼 수 있습니다. –

+0

http://jsfiddle.net/yKt6h/5/ –

+0

jsfiddle.net/yKt6h/5는이 문제에 대한 해결책을 제공하지 않습니다. 큐브를 패닝 한 후에도 큐브가 그 중심으로 회전되기를 원합니다. 그것을 성취 할 수 있습니까? –

관련 문제