Невозможно предварительно просмотреть сцену SwiftUI Canvas с RealityKit - PullRequest
0 голосов
/ 01 ноября 2019

Я только создаю новое свойство RealityKit. Xcode не сможет предварительно просмотреть холст SwiftUI. Но он может успешно построить.

  1. Я создаю приложение по Xcode.
  2. Выберите Приложение дополненной реальности и установите для пользователя Интерфейс SwiftUI .
  3. Проект может работать нормально.
import SwiftUI
import RealityKit

struct ContentView : View {
    var body: some View {
        return VStack {
            Text("123")
            ARViewContainer().edgesIgnoringSafeArea(.all)
        }
    }
}

struct ARViewContainer: UIViewRepresentable {

    func makeUIView(context: Context) -> ARView {

        let arView = ARView(frame: .zero)

        // Load the "Box" scene from the "Experience" Reality File
        let boxAnchor = try! Experience.loadBox()

        // Add the box anchor to the scene
        arView.scene.anchors.append(boxAnchor)

        return arView

    }

    func updateUIView(_ uiView: ARView, context: Context) {}

}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif
Я создаю новое свойство RealityKit только в функции makeUIView.
let test: AnchoringComponent.Target.Alignment = .horizontal
Проект не может предварительно просмотреть холст и появляется ошибка

«Выравнивание» не относится к типу элемента «AnchoringComponent.Target»

enter image description here

Проект все еще может скомпилироваться успешно. enter image description here

Я так растерялся, что встретил. Кто-нибудь встречал такую ​​же проблему?

1 Ответ

1 голос
/ 02 ноября 2019

Вам нужно решить несколько проблем :

  1. Вы не можете использовать anchoring component в iOS Simulator или SwiftUI Canvas Preview , поскольку его можно использовать только для закрепления виртуального контента на поверхностях реального мира. Так что для приложений AR нет симулятора .

Якоря RealityKit бесполезны в режиме симулятора iOS и режиме предварительного просмотра SwiftUI.

// Use it only for compiled AR app, not simulated...

let _: AnchoringComponent.Target.Alignment = .horizontal

Не толькоякоря бесполезны в iOS Simulator Mode и SwiftUI Preview Mode, но также и в других сессионно-ориентированных свойствах (включая ARView.session), подобных тем, которые вы видите на рисунке:

enter image description here

Измените .backgroundColor в ARView на любой другой желаемый. Цвет по умолчанию иногда не позволяет вам увидеть сцену RealityKit. Выглядит как ошибка.
func makeUIView(context: Context) -> ARView {

    let arView = ARView(frame: .zero)
    let boxAnchor = try! Experience.loadBox()
    boxAnchor.steelBox?.scale = SIMD3(5, 5, 5)
    boxAnchor.steelBox?.orientation = simd_quatf(angle: Float.pi/4, axis: SIMD3(1,1,0))

    arView.backgroundColor = .orange

    arView.scene.anchors.append(boxAnchor)
    return arView
}

А вот что вы можете увидеть в области предварительного просмотра SwiftUI:

enter image description here

И, конечно, вы должны дать Camera Permission перед использованием приложения AR. И не имеет значения, что вы используете: Storyboard или SwiftUI.

Вам нужно добавить Camera Usage Description свойство и arkit строка в info.plist файле:

enter image description here

Версия XML выглядит следующим образом:

/*  info.plist


<key>NSCameraUsageDescription</key>
    <string>Camera access for AR experience</string>

<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>armv7</string>
    <string>arkit</string>
</array>

*/

После исправления этих проблем приложениекомпилируется и работает как положено (без ошибок):

enter image description here

...