class SCNCamera : NSObject
A set of camera attributes that can be attached to a node to provide a point of view for displaying the scene.
一组摄影机属性,可以附加到节点以提供用于显示场景的视点。
专业名词解析
FOV 视场(Field Of View)
viewing Frustum 查看平截头体
要显示场景,必须指定一个节点,其摄像机属性包含一个摄像机对象作为视点。
包含摄像机的SCNNode对象定义了一个视点,即摄像机的位置和方向。相机的视线方向始终沿节点本地坐标系的负z轴。要将相机指向场景的不同部分,请使用包含相机的节点的position,rotation或transform属性。 (或者,要确保即使镜头移动了某个场景,相机也始终指向场景中的特定元素,请将SCNLookAtConstraint对象附加到包含相机的节点上。)
从其视角看,SCNCamera对象本身定义了渲染场景的形状以及部分外观。默认情况下,摄影机定义透视投影,您可以使用“调整摄影机透视”中列出的属性(如下所示)控制其视场(FOV)和近及远可见性限制。
convenience init(mdlCamera: MDLCamera)
Creates a camera from the specified Model I/O camera object.
通过 Model I/O 相机 创建一个相机
var name: String? { get set }
相机的名字
var zNear: Double { get set }
近的
相机的深度极限。 可动画的。
接近值确定相机和可见表面之间的最小距离。 如果某个表面比此距离更接近相机,则该表面将被修剪并且不会出现。 接近值不能为零。 默认的接近值是1.0。
var zFar: Double { get set }
远的
相机的深度极限。 可动画的。
far值确定相机和可见表面之间的最大距离。 如果某个表面距离摄像机的距离比此距离更远,则该表面将被修剪并且不会出现。 默认的far值为100.0。
var automaticallyAdjustsZRange: Bool { get set }
一个布尔值,它确定相机是否自动调整其zNear和zFar深度限制。
var fieldOfView: CGFloat { get set }
摄像机的垂直或水平视角。
projectionDirection属性确定此fieldOfView属性是测量相机的垂直视角还是水平视角,SceneKit会自动计算另一个方向的视角,以匹配显示场景的视图的纵横比。 例如,以纵向显示在16:9显示屏上的全屏显示为60的fieldOfView和默认的SCNCameraProjectionDirection.vertical投影,其垂直视角为60°,水平视角为33.75°。
您可以选择使用此fieldOfView属性直接指定视角,或使用sensorHeight和focusLength属性指定对物理相机建模的角度。 设置fieldOfView属性会导致SceneKit自动重新计算focusLength值,而设置sensorHeight或focusLength属性会重新计算fieldOfView。
var focalLength: CGFloat { get set }
相机的焦距,以毫米为单位。
sensorHeight和focusLength属性使用对物理摄像头设备建模的术语来确定摄像头的水平和垂直视角。 (或者,您可以直接通过fieldOfView属性使用视角。)例如,默认传感器高度为24 mm,默认焦距为50 mm,垂直视场为60°。
设置fieldOfView属性会导致SceneKit自动重新计算focusLength值,而设置sensorHeight或focusLength属性会重新计算fieldOfView。
var sensorHeight: CGFloat { get set }
相机成像平面的垂直尺寸,以毫米为单位。
sensorHeight和focusLength属性使用对物理摄像头设备建模的术语来确定摄像头的水平和垂直视角。 (或者,您可以直接通过fieldOfView属性使用视角。)例如,默认传感器高度为24 mm,默认焦距为50 mm,垂直视场为60°。
设置fieldOfView属性会导致SceneKit自动重新计算focusLength值,而设置sensorHeight或focusLength属性会重新计算fieldOfView。
var projectionDirection: SCNCameraProjectionDirection { get set }
用于确定视野或正交比例尺的轴。
case vertical = 0
case horizontal = 1
fieldOfView属性测量由这个projectionDirection属性确定的单个主方向上的视角。 对于另一个方向,SceneKit会根据呈现场景的视图的纵横比自动调整视野。
例如,使用SCNCameraProjectionDirection.vertical的默认投影方向,将fieldOfView设置为60会导致垂直视角为60°。 如果场景以4:3的纵横比出现在显示屏上,则水平视角为80°。 但是,如果场景出现在16:9显示屏上,则水平视角为106°。
此属性对正交投影的缩放具有类似的影响。 orthographicScale属性测量在projectionDirection属性方向上的比例因子,SceneKit根据宽高比自动在另一个方向上计算比例因子。
var projectionTransform: SCNMatrix4 { get set }
相机的投影变换。
此转换表示摄像机所有几何属性的组合:投影类型(透视或正交),视野,深度限制和正交比例(如果适用)。 SceneKit使用此转换在渲染和处理事件时将摄影机节点的坐标空间中的点转换为渲染器的2D空间。
如果您的应用需要出于其他目的在视图和渲染器坐标之间进行转换,则可以直接使用此转换。 另外,如果您计算自己的投影变换矩阵,则可以设置此属性以覆盖由相机的几何属性合成的变换。
var usesOrthographicProjection: Bool { get set }
一个布尔值,确定相机是否使用正投影。
此属性的默认值为false,用于指定透视投影。 在透视投影中,距离摄像机更近的相等大小的对象看起来比距离较远的对象大。
将此属性的值设置为true以指定正交投影。 在正交投影中,大小相等的对象将显示大小相同,而不管距相机的距离如何。
要控制正交摄影机的放大倍数,请使用其orthographicScale属性。
var orthographicScale: Double { get set }
指定使用正交投影时相机的放大倍数。
var categoryBitMask: Int { get set }
定义此摄像机所属类别的遮罩。
可以将场景中的每个摄像机和每个节点分配给一个或多个类别,每个类别对应于位掩码中的一位。 您可以定义应用中使用的掩码值。 当SceneKit渲染场景时,它使用逐位AND操作将每个节点的categoryBitMask属性与pointOfView相机的属性进行比较。 如果结果为非零值,则SceneKit会渲染节点的内容。 使用此属性可使场景中的某些节点仅对某些摄影机可见。
默认掩码设置了所有位,这意味着相机可以看到所有类别的节点。
var wantsDepthOfField: Bool { get set }
A Boolean value that determines whether SceneKit renders depth-of-field blur effects for the camera.
一个布尔值,该值确定SceneKit是否为相机渲染景深模糊效果。
var fStop: CGFloat { get set }
The physical camera aperture simulated by SceneKit for depth-of-field effects. Animatable.
SceneKit为景深效果模拟的物理相机光圈。 可动画的。
F档号描述了物理相机成像系统的聚光区域,通常表示为包括相机焦距ƒ的比率的分母,例如ƒ/ 2或ƒ/ 5.6。 分母越大表示光圈越小,则允许较少的光从相机镜头穿过到成像平面(传感器或胶片),分母越小表示光圈越大,可以使更多的光通过。
SceneKit使用光圈测量来模拟景深模糊效果(也称为散景),近似于物理相机产生的效果。 较大的fStop数(或光圈分母)使大部分场景聚焦,极近或远的深度则显示出轻微的模糊。 较小的数字只会导致焦点出现在较窄的深度范围内,而其余场景的模糊效果则更为明显。 fStop的默认值为5.6。
var apertureBladeCount: Int { get set }
SceneKit为景深效果模拟的物理相机光圈叶片的数量。
var focalBlurSampleCount: Int { get set }
SceneKit用于创建景深模糊效果的像素样本数。
启用wantsDepthOfField设置后,SceneKit使用对图像中多个点进行采样的模糊滤镜来渲染景深模糊(也称为bokeh)效果。 对大量点进行采样会以更高的性能成本产生更高质量的视觉效果,反之亦然。 默认样本数为25。
var motionBlurIntensity: CGFloat { get set }
A factor that determines the intensity of motion blur effects. Animatable.
一个决定运动模糊效果强度的因素。 可动画的。
var wantsHDR: Bool { get set }
HDR
一个布尔值,该值确定SceneKit是否将高动态范围(HDR)后处理效果应用于场景。
var exposureOffset: CGFloat { get set }
曝光补偿
对数偏差可调整SceneKit的色调映射操作的结果,使可见场景变亮或变暗。
var averageGray: CGFloat { get set }
平均灰色
用作色调映射曲线中点的亮度级别。
var whitePoint: CGFloat { get set }
用作色调映射曲线上限的亮度级别。
var minimumExposure: CGFloat { get set }
色调映射中使用的最小曝光值。
var maximumExposure: CGFloat { get set }
色调映射中使用的最大曝光值。
网友评论