2017-02-21 1 views
0

Autodesk Forge Viewer에서 카메라를 제어하려고합니다. 목표와 위치 설정은 잘 작동하는 것처럼 보이지만 회전 또는 쿼터니언을 설정하려고하면 아무 효과가 없습니다.Forge 뷰어에서 카메라 제어

카메라를 얻으려면 매개 변수를 설정하려고 시도한 후에 getCamera 함수를 사용한 다음 applyCamera를 사용합니다.

내가 달성하려는 것은 휴대용 장치에서 장치 방향을 사용하여 모델을 회전하는 것입니다. 알파와 베타를 사용하여 목표를 설정하는 것은 순조로운 경험이 아닙니다.

// get camera 
var cam = _viewer.getCamera(); 

// get position 
var vecPos = cam.position; 

// get view vector 
var vecViewDir = new THREE.Vector3(); 
vecViewDir.subVectors(cam.target,cam.position); 

// get length of view vector 
var length = vecViewDir.length(); 

// rotate alpha 
var vec = new THREE.Vector3(); 
vec.y = length; 
var zAxis = new THREE.Vector3(0,0,1); 
vec.applyAxisAngle(zAxis,THREE.Math.degToRad(alpha)); 

// rotate beta 
var vec2 = new THREE.Vector3(vec.x,vec.y,vec.z); 
vec2.normalize(); 
vec2.negate(); 
vec2.cross(zAxis); 
vec.applyAxisAngle(vec2,THREE.Math.degToRad(beta) + Math.PI/2); 

// add to camera 
cam.target.addVectors(vecPos,vec); 
_viewer.applyCamera(cam,false); 
+0

안녕하세요, 작년에 모바일 장치로 뷰어의 카메라를 구동하는 실험을했습니다. 이것은 그것에 관한 블로그입니다. https://forge.autodesk.com/cloud_and_mobile/2016/11/remotely-connect-forge-viewer-with-mobile-sensor-and-touch-by-javascript.html. Viewer3D.js 코드를 복사하여 카메라를 회전 시켰습니다. 좀 도와 줄 수 있니? 그렇지 않은 경우 Google에서 조사 할 코드 스 니펫을 제공 할 수 있습니까? –

+0

안녕하세요. 내가 처음으로 질문 한 것에 대한 코드 스 니펫을 추가했습니다. 쿼터니언을 사용하여 코드를 변경하려고했지만 여전히 좋지 않습니다. 내 장치의 알파 및 베타 값은 매우 "불안정"합니다. Chrome에서 시뮬레이션 된 기기 방향으로 실행하면 잘 보입니다. – FrodeTo

답변

1

당신은 setView() 메소드를

_viewer.navigation.setView (pos, target) ; 

를 사용해야 월은 카메라에게 당신이 원하는 방식으로 방향을 확인하기 위해 최대 벡터를 설정해야합니다.

_viewer.navigation.setCameraUpVector (upVector) ; 
+0

나는 그것을 시도했지만 결과는 같습니다. 실제 기기의 오일러 각이 Chrome에서 시뮬레이션 된 것과 같지 않은 것처럼 보입니다. 여기 간단한 예제를 테스트 할 수 있습니다 : https://deviceorientationtest.azurewebsites.net/ – FrodeTo

+0

코드를 자세히 살펴볼 수는 있지만 여기에 샘플을 게시했습니다. http://vr.autodesk.io/ - 소스 코드 : https://github.com/cyrillef/google-cardboard-vr - 도움이되지 않는 경우 알려 주시면 데뷔하겠습니다. – cyrille

관련 문제