RealityKit–无法加载Arview(找到无)

发布于 2025-02-03 03:17:40 字数 1231 浏览 4 评论 0原文

我有Arview and Experience.RCProject文件,我试图在VC中打开,但问题是我的屏幕黑色。为什么?

import RealityKit
import UIKit
import ARKit

class ArVC: UIViewController, ARSCNViewDelegate {
    
    lazy var sceneView: ARSCNView = {
        let sceneView = ARSCNView()
        sceneView.delegate = self
        return sceneView
    }()
    
    var arView: ARView = {
        let arView = ARView()
        let boxAnchor = try! Experience.loadBox()
        arView.scene.anchors.append(boxAnchor)
        return arView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .clear
    }
    
    func createView() {
        self.view.addSubview(sceneView)
        self.view.addSubview(self.sceneView)
        self.sceneView.snp.makeConstraints { make in
            make.centerY.centerX.equalToSuperview()
        }
        
        view.subviews.forEach {
            $0.translatesAutoresizingMaskIntoConstraints = false
        }
        
        self.sceneView.addSubview(self.arView)
        self.arView.snp.makeConstraints { make in
            make.centerX.centerY.equalToSuperview()
        }
    }
}

还有哪些其他选项可以以编程方式设置Arview?谢谢。

I have ARView and Experience.rcproject file that I am trying to open in my VC, but problem is my screen black. Why?

import RealityKit
import UIKit
import ARKit

class ArVC: UIViewController, ARSCNViewDelegate {
    
    lazy var sceneView: ARSCNView = {
        let sceneView = ARSCNView()
        sceneView.delegate = self
        return sceneView
    }()
    
    var arView: ARView = {
        let arView = ARView()
        let boxAnchor = try! Experience.loadBox()
        arView.scene.anchors.append(boxAnchor)
        return arView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .clear
    }
    
    func createView() {
        self.view.addSubview(sceneView)
        self.view.addSubview(self.sceneView)
        self.sceneView.snp.makeConstraints { make in
            make.centerY.centerX.equalToSuperview()
        }
        
        view.subviews.forEach {
            $0.translatesAutoresizingMaskIntoConstraints = false
        }
        
        self.sceneView.addSubview(self.arView)
        self.arView.snp.makeConstraints { make in
            make.centerX.centerY.equalToSuperview()
        }
    }
}

What other options are there to set ARView programmatically? Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一桥轻雨一伞开 2025-02-10 03:17:40

该测试代码可以解决问题。如果您要从头开始构建AR项目(通过选择简单的iOS应用模板,而不是ARKIT模板),请确保添加私密性 - 相机用法描述所需的设备功能(项目0 = ARKIT) ) in info.plist 文件。

import RealityKit
import UIKit

class ViewController: UIViewController {
    
    var arView: ARView = {
        let arView = ARView(frame: .zero)
        let boxAnchor = try! Experience.loadBox()
        arView.scene.anchors.append(boxAnchor)
        return arView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .red
        
        self.view.addSubview(self.arView)
            
        NSLayoutConstraint.activate([
            arView.topAnchor.constraint(equalTo: self.view.topAnchor),
            arView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
            arView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
            arView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor)
        ])
        self.view.subviews.forEach {
            $0.translatesAutoresizingMaskIntoConstraints = false
        }
    }
}

另外,我注意到您添加了两次casteview

This test code does the trick. If you're building AR project from scratch (by choosing simple iOS App template, not ARKit template), make sure you added Privacy - Camera Usage Description and Required device capabilities (Item 0 = ARKit) in info.plist file.

import RealityKit
import UIKit

class ViewController: UIViewController {
    
    var arView: ARView = {
        let arView = ARView(frame: .zero)
        let boxAnchor = try! Experience.loadBox()
        arView.scene.anchors.append(boxAnchor)
        return arView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .red
        
        self.view.addSubview(self.arView)
            
        NSLayoutConstraint.activate([
            arView.topAnchor.constraint(equalTo: self.view.topAnchor),
            arView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
            arView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
            arView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor)
        ])
        self.view.subviews.forEach {
            $0.translatesAutoresizingMaskIntoConstraints = false
        }
    }
}

Also I've noticed you added sceneView twice.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文