ARKit: поместите модель USDZ в плоскость, добавив привязку, но она всегда над моей головой - PullRequest
3 голосов
/ 05 июня 2019

Я новичок в ARKit и выполняю небольшой проект по добавлению объекта в плоскость.

Я следую за шагом в демонстрационном проекте Apple: обработка 3D-взаимодействий и элементов управления пользовательским интерфейсом в дополненной реальности.

Если я загружаю модель scn (или dae, obj) и помещаю ее в плоскость, то использую якорь, она отлично работает.

Но когда я меняю, используйте модель USDZ (скачать от Apple), чтобы загрузить и поместить ее над головой. Я изменил использование добавить дочерний узел и установить положение, но не работает, тот же результат, что и добавить привязку.

    // 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")
        }
    })

1 Ответ

1 голос
/ 05 июня 2019

По умолчанию масштаб файла WheelBarrow.usdz огромен.

enter image description here

Вам необходимо уменьшить модель до значения 0,025 (для всех трех осей):

wheelBarrowNode.scale = SCNVector3(x: 0.025, y: 0.025, z: 0.025)

enter image description here

Надеюсь, это поможет.

...