감사 F 또는 마틴의 대답! 나는 이제 다음과 같은 또 다른 접근 방식으로 잘 돌아가고있다. (마틴의 접근법 또한 완벽 할 수 있으며 Lmg 덕택이다.)
카메라를 처음부터 구의 꼭대기에 직선으로 설정한다. 높은 y 값, 반경 너머의 비트, 제 경우에는 200). 보이게 약간 낮은 :
camera.position.set(0, 210, 0);
camera.lookAt(new THREE.Vector3(0, 190, -50));
빈 그룹 (AN Object3D)를 만들고 카메라를 넣어 : 화면의 절반과 관련 퍼센트에
camGroup = new THREE.Object3D();
camGroup.add(camera);
scene.add(camGroup);
트랙 마우스 위치를 :
순방향 automoving 동안 애니메이션 루프
var halfWidth = window.innerWidth/2, halfHeight = window.innerHeight/2;
app.mouseX = event.pageX - halfWidth;
app.mouseY = event.pageY - halfHeight;
app.mouseXPercent = Math.ceil((app.mouseX/halfWidth) * 100);
app.mouseYPercent = Math.ceil((app.mouseY/halfHeight) * 100);
는 회전이 퍼센트 적용
camGroup.matrix.rotateY(-app.mouseXPercent * .00025);
camGroup.matrix.rotateX(-.0025);
camGroup.rotation.getRotationFromMatrix(camGroup.matrix);
requestAnimationFrame(animate);
renderer.render(scene, camera);
두 개의 비어있는 그룹을 만들고 내부에 카메라를 넣는 - forwardCamGroup (sidewaysCamGroup (camera)) - 몇 초 동안 작동하지만 회전이 계속되는 경우 (forwardCamGroup.rotation.x - = .0025; sidewaysCamGroup.rotation.y + = .0025;) 옆쪽 조향이 뒤쪽 방향 조종처럼 비뚤어지게됩니다 ... –
(예 : http://kishalmi.servus.at/tmp/h5/airplane.html) –
지금 뭔가가 있습니다. 하지만 옆쪽으로 회전하는 것과는 반대로 옆쪽으로 움직이는 것처럼 보이게됩니다./camGroup.matrix.rotateY (app.mouseXPercent * .00025); camGroup.matrix.rotateX (-.0025); camGroup.rotation.getRotationFromMatrix (camGroup.matrix); –