ARKit: поместите модель USDZ в плоскость, добавив привязку, но она всегда над моей головой
Я новичок в ARKit и делаю небольшой проект добавить объект в самолет.
Я следую за шагом в демонстрационном проекте Apple: управление 3D-взаимодействием и пользовательским интерфейсом в дополненной реальности.
Если я загружаю модель scn (или dae, obj) и помещаю ее в плоскость, использую add anchor, это отлично работает.
Но когда я изменяю, используйте модель 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 ответ
По умолчанию масштаб WheelBarrow.usdz
Файл огромен.
ht tps:https://stackru.com/images/bbf600d93f57bfe35eb309c988d191ba06437b78.png
Вам необходимо уменьшить модель до значения 0,025 (для всех трех осей):
wheelBarrowNode.scale = SCNVector3(x: 0.025, y: 0.025, z: 0.025)
ht tps:https://stackru.com/images/e2578c66fa110d9268cfba264814482c5377db85.png
Надеюсь это поможет.