three.js照相机-透视投影照相机

透视投影照相机

构造函数解释

1
THREE.PerspectiveCamera(fov, aspect, near, far)
透视照相机投影图

透视图中,灰色的部分是视景体,是可能被渲染的物体所在的区域。

fov是视景体竖直方向上的张角(是角度制而非弧度制),如侧视图所示。fov越大,视景体变大,显示物体相对于整个视景体大小变小。

aspect等于width / height,是照相机水平方向和竖直方向长度的比值,通常设为Canvas的横纵比例。

nearfar分别是照相机到视景体最近、最远的距离,均为正值,且far应大于near

实例说明

下面,我们通过一个例子来学习透视投影照相机。

基本设置

设置照相机,Canvas长400px,宽300px,所以aspect设为400 / 300

1
2
let camera = new THREE.PerspectiveCamera(45,400/300,1,10);
camera.position.set(0,0,5);

设置一个在原点处的边长为1的正方体:

1
2
3
4
5
6
7
8
// a cube in the scene
let geometry = new THREE.CubeGeometry(1, 1, 1);
let material = new THREE.MeshBasicMaterial({
color: 0xff0000,
wireframe: true
});
let cube = new THREE.Mesh(geometry,material);
scene.add(cube);

得到效果:

透视投影可以看到全部的12条边,而且有近大远小的效果,这也就是与正交投影的区别。