温馨提示: 豌豆仅提供国内节点,不提供境外节点,不能用于任何非法用途,不能访问境外网站及跨境联网。

免费领取1万IP!

透视相机(PerspectiveCamera)

发布时间:

透视相机(PerspectiveCamera)

Three.js 中文文档链接

这一摄像机使用perspective projection(透视投影)来进行投影。

这一投影模式被用来模拟人眼所看到的景象,它是3D场景的渲染中使用得最普遍的投影模式。

var camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );
scene.add( camera );

构造器

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

这些参数一起定义了摄像机的viewing frustum(视锥体)。

属性

请参阅其基类 Camera 来查看共有## 属性。
请注意,在大多数## 属性发生改变之后,你将需要调用.updateProjectionMatrix来使得这些改变生效。

.aspect : Float

摄像机视锥体的长宽比,通常是使用画布的宽/画布的高。默认值是1(正方形画布)。

.far : Float

摄像机的远端面,默认值是2000。

其有效值范围是在当前摄像机near plane(近端面)的值到无穷远之间。

.filmGauge : Float

胶片尺寸,其默认值为35(毫米)。 这个参数不会影响摄像机的投影矩阵,除非.filmOffset被设置为了一个非零的值。

.filmOffset : Float

水平偏离中心偏移量,和.filmGauge单位相同。默认值为0。

.focus : Float

用于立体视觉和景深效果的物体的距离。 这个参数不会影响摄像机的投影矩阵,除非使用了StereoCamera。 默认值是10。

.fov : Float

摄像机视锥体垂直视野角度,从视图的底部到顶部,以角度来表示。默认值是50。

.isPerspectiveCamera : Boolean

用于测试这个类或者派生类是否为PerspectiveCameras,默认为true。

你不应当对这个## 属性进行改变,因为它在内部由渲染器使用,以用于优化。

.near : Float

摄像机的近端面,默认值是0.1。

其有效值范围是0到当前摄像机far plane(远端面)的值之间。 请注意,和OrthographicCamera不同,0对于PerspectiveCamera的近端面来说不是一个有效值。

.view : Object

Frustum window specification or null. 这个值使用.setViewOffset## 方法来进行设置,使用.clearViewOffset## 方法来进行清除。

.zoom : number

获取或者设置摄像机的缩放倍数,其默认值为1。

方法

请参阅其基类Camera来查看共有## 属性。

.clearViewOffset () : null

清除任何由.setViewOffset设置的偏移量。

.getEffectiveFOV () : Float

结合.zoom(缩放倍数),以角度返回当前垂直视野角度。

.getFilmHeight () : Float

返回当前胶片上图像的高,如果.aspect小于或等于1(肖像格式、纵向构图),则结果等于.filmGauge。

.getFilmWidth () : Float

返回当前胶片上图像的宽,如果.aspect大于或等于1(景观格式、横向构图),则结果等于.filmGauge。

.getFocalLength () : Float

返回当前.fov(视野角度)相对于.filmGauge(胶片尺寸)的焦距。

.setFocalLength ( focalLength : Float ) : null

通过相对于当前.filmGauge的焦距,设置FOV。

默认情况下,焦距是为35mm(全画幅)摄像机而指定的。

.setViewOffset ( fullWidth : Float, fullHeight : Float, x : Float, y : Float, width : Float, height : Float ) : null

fullWidth — 多视图的全宽设置
fullHeight — 多视图的全高设置
x — 副摄像机的水平偏移
y — 副摄像机的垂直偏移
width — 副摄像机的宽度
height — 副摄像机的高度

在较大的viewing frustum(视锥体)中设置偏移量,对于多窗口或者多显示器的设置是很有用的。

例如,如果你有一个3x2的显示器阵列,每个显示器分辨率都是1920x1080,且这些显示器排列成像这样的网格:
±–±--±–+
| A | B | C |
±–±--±–+
| D | E | F |
±–±--±–+

那对于每个显示器,你可以这样来设置、调用:

var w = 1920;
var h = 1080;
var fullWidth = w * 3;
var fullHeight = h * 2;

// A
camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );
// B
camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );
// C
camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );
// D
camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );
// E
camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );
// F
camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );

请注意,显示器的不必具有相同的大小,或者不必在网格中。

.updateProjectionMatrix () : null

更新摄像机投影矩阵。在任何参数被改变以后必须被调用。

.toJSON () : JSON

使用JSON格式来返回摄像机数据。

相关文章


时间序列预测(五)—— Prophet模型 Java代码 - 基于广度优先遍历实现迷宫路径搜索(搜索迷宫的最短路径信息) 便宜的ssl数字证书,可靠的ssl证书,低价的ssl证书原因 oracle启动监听服务时报错问题(亲测有效) xcodebuild自动打包,发布应用 Flutter——UI布局 《Spark The Definitive Guide》Chapter 4:结构化API预览 使用expect实现自动2步登录

上一篇:解决Python模块报错:ModuleNotFoundError: No module name '
下一篇:时间序列预测(一)—— 数据预处理

咨询·合作