Threejs系列:相机
本文主要研究一下threejs中的相机
threejs中的相机:
ArrayCamera:包含着一组子摄像机,常用于多人同屏的渲染,更好地提升VR场景的渲染性能StereoCamera:双透视摄像机(立体相机),常用于创建 3D 立体影像,比如 3D 电影之类或 VRCubeCamera:有6个渲染,分别是立方体的6个面,常用于渲染环境、反光等OrthographicCamera:正交相机,在这种投影模式下,无论物体距离相机距离远或者近,在最终渲染的图片中物体的大小都保持不变。这对于渲染2D场景或者UI元素是非常有用的。PerspectiveCamera:透视相机,这一投影模式被用来模拟人眼所看到的景象,它是3D场景的渲染中使用得最普遍的投影模式。
透视相机
语法:PerspectiveCamera( fov, aspect, near, far )fov:摄像机视锥体垂直视野角度aspect:摄像机视锥体长宽比,一般设置为Canvas画布宽高比width / heightnear:摄像机视锥体近端面far:摄像机视锥体远端面,far-near构成了视锥体高度方向// 样例代码 const camera = new THREE.PerspectiveCamera(75, containerWidth / containerHeight, 0.1, 1000); camera.position.x = 10; camera.position.y = 10; camera.position.z = 10;透视视角:
正交相机
语法:OrthographicCamera( left, right, top, bottom, near, far )left:摄像机视锥体左侧面。right:摄像机视锥体右侧面。top:摄像机视锥体上侧面。bottom:摄像机视锥体下侧面。near:摄像机视锥体近端面。表示从距离相机多远的位置开始渲染,一般情况会设置一个很小的值。 默认值0.1far:摄像机视锥体远端面。表示距离相机多远的位置截止渲染,如果设置的值偏小小,会有部分场景看不到。 默认值2000
const s = 5; // 假设一个范围
const k = window.innerWidth / window.innerHeight; // 视图的长宽比(canvas画布的长宽比)
const camera = new THREE.OrthographicCamera( -s*k, s*k, s , -s, 0.1,2000)
scene.add( camera );const s = 5; // 假设一个范围
const k = window.innerWidth / window.innerHeight; // 视图的长宽比(canvas画布的长宽比)
const camera = new THREE.OrthographicCamera( -s*k, s*k, s , -s, 0.1,2000)
scene.add( camera );
正交视角:
再补一个直观的
透视
正交
透视相机和正交的区别:前者模拟人眼观察的效果,用于相机漫游等场景,后者通常用于全图总览等场景
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
