文本提纲:
- SCNView是什么
- SCNView主要功能
- SCNView用法示例
SCNView是什么
SCNView是显示3D模型对象的视图,继承自UIView。
在渲染过程过中,视图模型常常会出现锯齿边缘。这是因为模型是由多边形组成的,当显卡运算频率不够高,或者显存不够大的时候,“多边形”绘制速度比较慢,就会出现锯齿。此外,当画面增大、解析度增高,锯齿也会变得更明显。
我们可以通过设置抗锯齿属性来适当平衡体验和视觉效果,因为锯齿越少,游戏的性能越差。总之,渲染涉及大量的运算,开发时需特别留意。
SCNView主要功能
- 设置场景渲染的帧率
- 屏幕截屏
- 开始和暂停游戏
- 抗锯齿
- 控制摄像机
- 显示性能统计菜单(Debug常用)
- 执行渲染方式(OpenGL/Metal)
SCNView用法示例
import UIKit
import SceneKit
class ViewController2: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 创建SCNView视图
let scnview = SCNView.init(frame: view.bounds)
scnview.backgroundColor = UIColor.black
// 创建场景,默认是nil
scnview.scene = SCNScene()
// 允许操纵摄像机,这样用户就可以改变视角的位置和方向
scnview.allowsCameraControl = true
view.addSubview(scnview)
// 创建一个立体几何模型
let box = SCNBox.init(width: 1, height: 1, length: 1, chamferRadius: 0)
// 设置外表
box.firstMaterial?.diffuse.contents = UIImage.init(named: "1")
// 添加到节点上
let boxNode = SCNNode.init(geometry: box)
scnview.scene?.rootNode.addChildNode(boxNode)
}
}
其他功能
// 截屏
let image = sceneView.snapshot()
// 设置游戏帧率
sceneView.preferredFramesPerSecond = 30
// 打开统计菜单
sceneView.showsStatistics = true
以下两个结合ARKit使用
// 显示坐标系
sceneView.debugOptions = ARSCNDebugOptions.showWorldOrigin
// 显示特征点
sceneView.debugOptions = ARSCNDebugOptions.showFeaturePoints