Javascript 如何在THREE.js中将等轴测摄影机指向立方体的中心?
我正在努力解决一个锻炼问题,也许你能帮我。 我必须用THREE.js设置摄像头和立方体。立方体应保持其初始比率,相机应注视立方体的中心。 我想我设法做了一个等距投影,但我不知道如何将相机指向中心 以下是我尝试过的:Javascript 如何在THREE.js中将等轴测摄影机指向立方体的中心?,javascript,3d,three.js,geometry,Javascript,3d,Three.js,Geometry,我正在努力解决一个锻炼问题,也许你能帮我。 我必须用THREE.js设置摄像头和立方体。立方体应保持其初始比率,相机应注视立方体的中心。 我想我设法做了一个等距投影,但我不知道如何将相机指向中心 以下是我尝试过的: <!DOCTYPE html> <html> <head> <meta charset=utf-8> <title>Cube</title> <style> </style> &l
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>Cube</title>
<style>
</style>
</head>
<body>
<script src="js/three.min.js"></script>
<script>
var scene = new THREE.Scene();
var camera = new THREE.OrthographicCamera(-3,3,3,-3, 0, 100);
var ambientLight = new THREE.AmbientLight(0x222222);
scene.add(ambientLight);
var light = new THREE.PointLight( 0xffffff );
light.position.set(-10, 10, 10);
scene.add(light);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(800,800);
document.body.appendChild(renderer.domElement);
var geometry = new THREE.BoxGeometry(1,1,1);
var cube = new THREE.Mesh(geometry, new THREE.MeshLambertMaterial( { color: 0x00ffff }));
scene.add( cube );
function render() { //this is to be used for animation later
requestAnimationFrame(render);
camera.position.x=1;
camera.position.y=1;
camera.position.z=1;
camera.lookAt(new THREE.Vector3(0,0,0));
renderer.render( scene, camera);
}
render();
</script>
立方体
var scene=new THREE.scene();
var摄像机=新的三个正交摄像机(-3,3,3,-3,0100);
var环境光=新的三个环境光(0x22222);
场景。添加(环境光);
var灯=新的三点灯(0xffffff);
灯。位置。设置(-10,10,10);
场景。添加(灯光);
var renderer=new THREE.WebGLRenderer();
渲染器。设置大小(800800);
document.body.appendChild(renderer.doElement);
var geometry=新的3.BoxGeometry(1,1,1);
var cube=new THREE.Mesh(几何体,new THREE.MeshLambertMaterial({color:0x00ffff}));
场景.添加(立方体);
函数render(){//这将在以后用于动画
请求动画帧(渲染);
摄像机位置x=1;
摄像机位置y=1;
摄像机位置z=1;
摄像机。注视(新三个。矢量3(0,0,0));
渲染器。渲染(场景、摄影机);
}
render();
这就是lookAt的用途。在你的例子中,立方体的位置等于它的中心,所以答案是:
camera.lookAt(立方体位置)代码>
这可以表示为向量吗?也许camera.lookAt(新的3.Vector3(0,0,0))代码>?cube.position
是一个3.Vector3
。您的多维数据集位于(0,0,0)
,因此这已经是正确的:-)