相机API
照相机就是这样一个抽象,它定义了三维空间到二维屏幕的投影方式,用“照相机”这样一个类比,可以使我们直观地理解这一投影方式。
而针对投影方式的不同,照相机又分为正交投影照相机与透视投影照相机。我们需要为自己的程序选择合适的照相机。
正交投影照相机
THREE.OrthographicCamera(left, right, top, bottom, near, far)
- left: 相机视椎体(Camera frustum)左面。
- right: 相机视椎体(Camera frustum)右面。
- top: 相机视椎体(Camera frustum)上面。
- bottom:相机视椎体(Camera frustum)下面。
- near: 相机视椎体(Camera frustum)前面(靠近相机的这一面)。
- far: 相机视椎体(Camera frustum)后面(远离相机的这一面)。
设置照相机
var camera = new THREE.OrthographicCamera(-2, 2, 1.5, -1.5, 1, 10);
camera.position.set(0, 0, 5);
scene.add(camera);
相机位置
camera.position.set(2, -2, 5);
相机朝向
镜头默认的方向是朝着z轴的负方向
camera.lookAt(new THREE.Vector3(0,0,0));
lookAt函数接受的是一个THREE.Vector3的实例,因此千万别写成camera.lookAt(0, 0, 0),否则非但不能得到理想的效果,而且不会报错,使你很难找到问题所在。
相机快门方向
相机快门默认向上,以相机自身为中心画坐标轴(本地坐标轴)默认为(0,0,0);
camera.up.z= 1;
camera.up.x =1;
camera.up.y =-1;
更新相机投影矩阵
camera.fov = fov;
camera.updateProjectionMatrix();
更新相机投影矩阵,必须在参数发生变化后调用。
透视投影照相机
THREE.PerspectiveCamera(fov, aspect, near, far)
- 视角fov:这个最难理解,我的理解是,眼睛睁开的角度,即,视角的大小,如果设置为0,相当你闭上眼睛了,所以什么也看不到,如果为180,那么可以认为你的视界很广阔,但是在180度的时候,往往物体很小,因为他在你的整个可视区域中的比例变小了。
- 近平面near:这个呢,表示你近处的裁面的距离。补充一下,也可以认为是眼睛距离近处的距离,假设为10米远,请不要设置为负值,Three.js就傻了,不知道怎么算了,
- 远平面far:这个呢,表示你远处的裁面,
4、纵横比aspect:实际窗口的纵横比,即宽度除以高度。这个值越大,说明你宽度越大,那么你可能看的是宽银幕电影了,如果这个值小于1,则为竖屏。
设置照相机
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 1000);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。