Threejs系列--7相机

本文介绍了Threejs中的四种相机类型:正交相机适合2D场景和UI元素,物体大小不会因距离变化;透视相机模拟人眼视角,远小近大;立体相机用于创建3D立体效果;立方相机则能创建六面渲染的环境贴图。通过调整相机参数和位置,可以实现不同视觉效果。
摘要由CSDN通过智能技术生成

序言

摄像机在3D演示中扮演着重要的角色,Threejs提供了Camera对象及其子对象,可以非常方便的应用。

正交相机

使用正交投影来进行投影,无论物体距离相机距离远或者近,在最终渲染的图片中物体的大小都保持不变。渲染2D场景或者UI元素非常有用。

OrthographicCamera( left : Number, right : Number, top : Number, bottom : Number, near : Number, far : Number )
left: 摄像机视锥体左侧面。
right: 摄像机视锥体右侧面。
top: 摄像机视锥体上侧面。
bottom: 摄像机视锥体下侧面。
near: 摄像机视锥体近端面。
far: 摄像机视锥体远端面。

改变物体距离相机距离,物体大小始终如下
在这里插入图片描述

var camera = new THREE.OrthographicCamera( window.innerWidth / - 2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / - 2, 0.1, 1000 );

camera.position.z = 1; //改变相机距离物体位置,物体保持不变
//camera.position.z = 999; 

透视相机

这一摄像机使用透视投影来进行投影,用来模拟人眼所看到的景象,它是3D场景的渲染中使用最普遍的投影模式。

PerspectiveCamera( fov : Number, aspect : Number, near : Number, far : Number )
fov: 摄像机视锥体垂直视野角度
aspect: 摄像机视锥体长宽比
near: 摄像机视锥体近端面
far: 摄像机视锥体远端面

改变相机距离物理距离为466
在这里插入图片描述

改变相机距离物理距离为66
在这里插入图片描述

var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);

//改变相机距离物体位置,犹如人眼平常看到的景象,远小近大。
camera.position.z = 466; 
//camera.position.z = 66; 

立体相机

双透视摄像机常被用于创建3D立体影像或者视差效果。

StereoCamera(aspect : Float,eyeSep : Float,cameraL : PerspectiveCamera,cameraR : PerspectiveCamera)
aspect: 摄像机视锥体的长宽比,默认值是1。例如设置为场景的宽高比。
eyeSep: 模拟人的瞳孔间距,默认值是0.064
cameraL: 左摄像机
cameraR: 右摄像机

立方相机

创建6台相机,将它们的拍摄结果渲染。

//构造器
CubeCamera( near : Number, far : Number, cubeResolution : Number )
near: 近剪切面的距离
far: 远剪切面的距离
cubeResolution: 设置立方体边缘的长度
//创建6台相机
var cubeCamera = new THREE.CubeCamera( 1, 100000, 128 );
scene.add( cubeCamera );

//材质中设置环境贴图为相机拍摄
var chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeCamera.renderTarget.texture } );
var car = new Mesh( carGeometry, chromeMaterial );
scene.add( car );

// 更新相机
car.setVisible( false );
cubeCamera.position.copy( car.position );
cubeCamera.update( renderer, scene );

//渲染场景
car.setVisible( true );
renderer.render( scene, camera );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猴子喝牛奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值