SCNView
用来展示3D SceneKit内容的视图。
概览
在MACOS中,SCNView继承自NSView,在iOS中,SCNView继承自UIView,用来展示SceneKit框架中的内容。你可以通过代码"initWithFrame:options:"或者拖拽xib创建。
有关SceneKit视图的重要方法和属性,请参阅SCNScenneRenderer协议。你也可以通过用SCNRenderer类把SceneKit内容提交到Metal命令队列或OpenGL上下文中,或者在MACOS系统下把SceneKit内容提交给SCNLayer类来实现渲染展示。
SCNSceneRenderer协议为所有的SceneKit渲染类定义了通用功能。
属性
- scene: SCNScene类实例对象,场景的接收者
@property(nonatomic, retain, nullable) SCNScene *scene;
- rendersContinuously:BOOL值,是否跟着屏幕刷新而刷新渲染,默认值为NO
@property(nonatomic, assign) BOOL rendersContinuously;
- defaultCameraController:SCNCameraController,默认摄像头控制器,只读,当allowsCameraControl设为YES时,自动生成。本质就是控制相机的位置。
@property(nonnull, nonatomic, readonly) SCNCameraController* defaultCameraController
- allowsCameraControl:BOOL值,是否允许操控摄像机,默认值为NO
@property(nonatomic, assign)
BOOL allowsCameraControl:BOOL;
通过改变摄像机的位置来改变渲染图像,不会对场景中的真实图形作出更改。
当设为YES时,你就可以实现:
* 1指拖动绕着整个场景旋转摄像头;
* 2指拖动沿X或Y轴移动摄像头
* 3指在竖直方向拖动,来使摄像头前进后退(可以简单理解为3指在Y轴方向移动,使得摄像头在Z轴方向移动)
* 双击切换至场景中的下一个摄像头
* 2指旋转手势将摄像头沿Z轴翻滚
* 2指捏合手势改变摄像头的视角
- cameraControlConfiguration:描述相机如何控制的描述对象。控制包括摄像头的切换、移动、飞行模式速度、拖拽灵敏度、旋转灵敏度等
@property(nonatomic, readonly) id <SCNCameraControlConfiguration> cameraControlConfiguration
- preferredFramesPerSecond:期望帧率,实际帧率只是接近期望帧率,不一定等于期望帧率。默认值为0,代表等于屏幕的刷新帧率
@property(nonatomic) NSInteger preferredFramesPerSecond
- antialiasingMode:反锯齿模式,枚举类型。
@property(nonatomic) SCNAntialiasingMode antialiasingMode
- eaglContext:OpenGL上下文,用在OpenGL渲染时,使用Metal渲染时,此属性设置无效。
@property(nonatomic, retain, nullable) EAGLContext *eaglContext
方法
- 初始化
- (instancetype)initWithFrame:(CGRect)frame options:(nullable NSDictionary<NSString *, id> *)options
options:可选项字典,提供了3个可配置的可选项
1. SCNPreferredRenderingAPIKey:
首选的渲染API,也就是首选用什么框架来渲染,有OpenGL、Metal两个框架可选;
对应的值为SCNRenderingAPI枚举封包的NSNumber;
SCNRenderingAPI枚举的定义在协议SCNSceneRenderer中。
2. SCNPreferredDeviceKey
首选的Metal渲染设备,仅在用Metal框架渲染的情况下有效;
对应的值的类型为 id <MTLDevice>
3. SCNPreferLowPowerDeviceKey
指定渲染是否首选低功耗的Metal设备;
对应的值的类型为BOOL封包的NSNumber
- 缩略图
-(UIImage *)snapshot;
- 场景播放控制
* 播放 play:
* 暂停 pause:
* 停止 stop: