Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 阿基特:通过添加锚将USDZ模型放置到飞机上,但它总是在我的头顶上方_Swift_Augmented Reality_Arkit_Usdz_Aranchor - Fatal编程技术网

Swift 阿基特:通过添加锚将USDZ模型放置到飞机上,但它总是在我的头顶上方

Swift 阿基特:通过添加锚将USDZ模型放置到飞机上,但它总是在我的头顶上方,swift,augmented-reality,arkit,usdz,aranchor,Swift,Augmented Reality,Arkit,Usdz,Aranchor,我是ARKit的新手,做一个小项目,将对象添加到平面 我将遵循苹果演示项目中的步骤:在增强现实中处理3D交互和UI控件 如果我加载scn模型(或dae、obj)并放置在平面中,请使用“添加锚定”,它将工作得非常完美 但当我改变时,使用USDZ模型(从苹果下载)来加载并将其放在我的头上。我更改使用添加子节点和设置位置,但不工作,结果与添加锚点相同 // Test add usdz object guard let url = Bundle.main.url(forResource:

我是ARKit的新手,做一个小项目,将对象添加到平面

我将遵循苹果演示项目中的步骤:在增强现实中处理3D交互和UI控件

如果我加载scn模型(或dae、obj)并放置在平面中,请使用“添加锚定”,它将工作得非常完美

但当我改变时,使用USDZ模型(从苹果下载)来加载并将其放在我的头上。我更改使用添加子节点和设置位置,但不工作,结果与添加锚点相同

    // Test add usdz object
    guard let url = Bundle.main.url(forResource: "wheelbarrow", withExtension: "usdz"),
        let object = VirtualObject(url: url) else {
            print("Error usdz file")
            return
    }

    // Add Child Node not working
    //        let object = obj.clone()
    //        object.load()
    //        object.position = focusSquare.position
    //        sceneView.scene.rootNode.addChildNode(object)

    self.virtualObjectLoader.loadVirtualObject(object, loadedHandler: { [weak self] loadedObject in
        do {
            print("Load Virtual Object:\(object.referenceURL.absoluteString)")
            let scene = try SCNScene(url: object.referenceURL, options: nil)
            self?.sceneView.prepare([scene], completionHandler: { _ in
                DispatchQueue.main.async {
                    self?.placeVirtualObject(loadedObject)
                    loadedObject.isHidden = false
                }
            })
        } catch {
            print("Error: \(error)")
            fatalError("Failed to load SCNScene from object.referenceURL")
        }
    })

默认情况下,
WheelBarrow.usdz
文件的规模很大

您需要将模型缩小到0.025的值(对于所有三个轴):


希望这有帮助。

谢谢。我还有个问题吗?scn和usdz更好,应该在场景中使用usdz,或者在快速查看中使用usdz更好。昨天我阅读了文档和样本ARKit 3.0以及样本Apple中仍然使用的scn:在增强现实中处理3D交互和UI控件
usdz
是Pixar提供的3D几何体和相应纹理的文件格式。SceneKit还支持
dae
abc
obj
文件格式
SCN
是一个SceneKit的场景文件,您的应用程序的所有几何体都应该在其中
wheelBarrowNode.scale = SCNVector3(x: 0.025, y: 0.025, z: 0.025)