[英]SceneKit – Camera does not see a model when rendering in SwiftUI
我有一个 USDZ model 导入到 SceneKit 场景图时显示正常,如果我将预览设置为从相机角度显示它在帧中。 但是,当我在模拟器或设备上通过 SwiftUI 预览运行它时,它不会呈现。 我已经打开了模拟器上的相机控制来查看场景,它根本没有渲染而不是超出框架。
import SceneKit
struct HomeScreen: View {
private var userDefaults: UserDefaults?
var scene = SCNScene(named: "MyScene.scn")
var cameraNode: SCNNode? {
scene?.rootNode.childNode(withName: "camera", recursively: false)
}
var body: some View {
VStack {
SceneView(
scene: scene,
pointOfView: cameraNode,
options: [.allowsCameraControl]
)
}
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
HomeScreen()
}
}
使用 SwiftUI 的 SceneView 加载.scn
model 就这么简单。 Model 以平截头体为中心。
如果您不使用.autoenablesDefaultLighting
选项,则背景将不可见。
import SwiftUI
import SceneKit
struct ContentView: View {
var scene = SCNScene(named: "art.scnassets/ship.scn")
var options: SceneView.Options = [.autoenablesDefaultLighting,
.allowsCameraControl ]
var body: some View {
ZStack {
SceneView(scene: scene, options: options)
.ignoresSafeArea()
}
}
}
.usdz
模型也以 SceneKit 的相机视锥为中心。 但是,在SceneKit + SwiftUI
或SceneKit + UIKit
中,您必须为.usdz
模型打开照明。
var scene = SCNScene(named: "gramophone.usdz")
var options: SceneView.Options = [.autoenablesDefaultLighting,
.allowsCameraControl ]
var body: some View {
ZStack {
SceneView(scene: scene, options: options).ignoresSafeArea()
let _ = scene?.background.contents = UIColor.black
}
}
如果您的 model 呈现在屏幕中心之外,则该框架中可能存在另一个不可见节点。 或者型号的 pivot 点偏移。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.