Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 3J绕Y旋转相机_Javascript_Three.js - Fatal编程技术网

Javascript 3J绕Y旋转相机

Javascript 3J绕Y旋转相机,javascript,three.js,Javascript,Three.js,我对这个有点困惑:S 我创建了一个代码,让我的相机“半途而废”。我的意思是,我可以用鼠标移动事件将相机旋转半圈,但目标是整圈:) 当this.Camera.position.z/半径为-1或1:S时,相机移动停止 有人能帮我一下吗?:)如果你想绕轴旋转,为什么不试试使用四元数 camera.position.applyQuaternion( new THREE.Quaternion().setFromAxisAngle new THREE.Vector3( 0, 1, 0 ), // T

我对这个有点困惑:S

我创建了一个代码,让我的相机“半途而废”。我的意思是,我可以用鼠标移动事件将相机旋转半圈,但目标是整圈:)

当this.Camera.position.z/半径为-1或1:S时,相机移动停止
有人能帮我一下吗?:)

如果你想绕轴旋转,为什么不试试使用
四元数

camera.position.applyQuaternion( new THREE.Quaternion().setFromAxisAngle
    new THREE.Vector3( 0, 1, 0 ), // The positive y-axis
    RADIAN / 1000 * delta // The amount of rotation to apply this time
));
camera.lookAt( scene.position );
上述操作将围绕Y轴创建一个
旋转
(定义为
四元数
),并且每拖动1000次
增量
(可以是毫秒,也可以是像素)。下面是一个示例实现:

var renderer=new THREE.WebGLRenderer;
var场景=新的三个场景;
var摄像机=新的三视角摄像机;
var last=false;
变量四元数=新的三个四元数;
变量轴=新的三个向量3(0,1,0);
renderer.doElement.addEventListener('mousedown',event=>{
last=新的三个.Vector2(event.clientX,event.clientY);
});
renderer.domeElement.addEventListener('mousemove',event=>{
如果(最后){
让delta=event.clientX-last.x;
camera.position.applyQuaternion(quaternion.setFromAxisAngle(
轴,Math.PI*2*(增量/内部宽度)
));
摄像机。注视(场景。位置);
set(event.clientX,event.clientY);
}
渲染器。渲染(场景、摄影机);
});
renderer.doElement.addEventListener('mouseup',event=>{
last=false;
});
添加(新的THREE.Mesh(新的THREE.BoxGeometry,新的THREE.MeshBasicMaterial));
场景.添加(新的3.AxesHelper);
设置大小(512);
摄像机位置设置(0,0,5);
渲染器。渲染(场景、摄影机);
document.body.appendChild(renderer.doElement)

如果要绕轴旋转,为什么不尝试使用
四元数

camera.position.applyQuaternion( new THREE.Quaternion().setFromAxisAngle
    new THREE.Vector3( 0, 1, 0 ), // The positive y-axis
    RADIAN / 1000 * delta // The amount of rotation to apply this time
));
camera.lookAt( scene.position );
上述操作将围绕Y轴创建一个
旋转
(定义为
四元数
),并且每拖动1000次
增量
(可以是毫秒,也可以是像素)。下面是一个示例实现:

var renderer=new THREE.WebGLRenderer;
var场景=新的三个场景;
var摄像机=新的三视角摄像机;
var last=false;
变量四元数=新的三个四元数;
变量轴=新的三个向量3(0,1,0);
renderer.doElement.addEventListener('mousedown',event=>{
last=新的三个.Vector2(event.clientX,event.clientY);
});
renderer.domeElement.addEventListener('mousemove',event=>{
如果(最后){
让delta=event.clientX-last.x;
camera.position.applyQuaternion(quaternion.setFromAxisAngle(
轴,Math.PI*2*(增量/内部宽度)
));
摄像机。注视(场景。位置);
set(event.clientX,event.clientY);
}
渲染器。渲染(场景、摄影机);
});
renderer.doElement.addEventListener('mouseup',event=>{
last=false;
});
添加(新的THREE.Mesh(新的THREE.BoxGeometry,新的THREE.MeshBasicMaterial));
场景.添加(新的3.AxesHelper);
设置大小(512);
摄像机位置设置(0,0,5);
渲染器。渲染(场景、摄影机);
document.body.appendChild(renderer.doElement)