Javascript 如何使用正交投影执行缩放?
我只是尝试使用THREE.OrbitControls在正交投影中执行缩放,但我没有得到我想要的行为 我认为这是可能的改变viewSize的倍增到左,右,上和下,以创建一个接近缩放的东西Javascript 如何使用正交投影执行缩放?,javascript,three.js,Javascript,Three.js,我只是尝试使用THREE.OrbitControls在正交投影中执行缩放,但我没有得到我想要的行为 我认为这是可能的改变viewSize的倍增到左,右,上和下,以创建一个接近缩放的东西 有谁有更好的主意吗?是的,您可以使用以下模式使用正交摄影机实现缩放效果: camera.zoom = 1.5; camera.updateProjectionMatrix(); 这也适用于透视照相机 three.js r.70我有一个缩放场景的功能。请试一试 function zoom_all(center,s
有谁有更好的主意吗?是的,您可以使用以下模式使用
正交摄影机实现缩放效果:
camera.zoom = 1.5;
camera.updateProjectionMatrix();
这也适用于透视照相机
three.js r.70我有一个缩放场景的功能。请试一试
function zoom_all(center,size) {
// get the current lookAt vector of OrthographicCamera camera
var vectorLookAt = new THREE.Vector3(0, 0, -1);
vectorLookAt.applyQuaternion(camera.quaternion);
vectorLookAt.normalize();
// move back along lookat vector to set new position of camera
vectorLookAt.multiplyScalar(-size);
camera.position = new THREE.Vector3().addVectors(center, vectorLookAt);
// get current size of camera
var viewSize = 2 * camera.top;
var aspectRatio = 2 * camera.right / viewSize; // get aspectRatio of camera
// camera = new THREE.OrthographicCamera(
// -aspectRatio * viewSize / 2, aspectRatio * viewSize / 2,
// viewSize / 2, -viewSize / 2,
// 0.1, 1000);
// update new size for camera
viewSize = size;
// now update camera size
camera.left = -aspectRatio * viewSize / 2;
camera.right = aspectRatio * viewSize / 2;
camera.top = viewSize / 2;
camera.bottom = -viewSize / 2;
camera.near = 0.1;
camera.far = 2 * size;
camera.updateProjectionMatrix();
// you can set light to camera position
spotLight.position.set(camera.position.x, camera.position.y, camera.position.z);
// set center point for orbit control
orbitControls.center.set(center.x, center.y, center.z);
orbitControls.target.set(center.x, center.y, center.z);
}
如果还有人感兴趣,我根据WestLangley的回答编辑了OrbitControls以使用正交摄影机:
NinhKu提前表示感谢,但问题已由WestLangley回答解决。我可以根据更改缩放因子吗model@Aashajoney如果你有问题,请写一篇新文章。这同样适用于。我刚刚添加了camera.updateProjectMatrix()
:)