0

我只创建了 RealityKit 的一个新属性。Xcode 将无法预览 SwiftUI 画布。但它可以成功构建。

  1. 我通过 Xcode 创建应用程序。
  2. 选择Augmented Reality App并将 User Interface 设置为 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
  1. 我只在 makeUIView 函数中创建 RealityKit 的一个新属性。
let test: AnchoringComponent.Target.Alignment = .horizontal
  1. 项目无法预览画布并出现错误

    “Alignment”不是“AnchoringComponent.Target”的成员类型

在此处输入图像描述

  1. 该项目仍然可以编译成功。 在此处输入图像描述

我很困惑我遇到了什么。有没有人遇到同样的问题?

4

1 回答 1

1

您必须解决几个问题

  1. 您不能anchoring component 在 iOS SimulatorSwiftUI Canvas Preview中使用,因为它只能用于将虚拟内容固定到现实世界表面。所以没有 AR 应用程序的模拟器

RealityKit Anchors 在 iOS Simulator 模式和 SwiftUI Canvas Preview 模式下无用。

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

let _: AnchoringComponent.Target.Alignment = .horizontal

不仅锚点没用,iOS Simulator Mode其他SwiftUI Preview Mode面向会话的属性(包括 ARView.session)也无用,例如您可以在图片上看到的属性:

在此处输入图像描述

  1. 将 ARView更改.backgroundColor为任何其他想要的。默认颜色有时不允许您看到 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 预览区看到以下内容:

在此处输入图像描述

  1. 而且,当然,您必须Camera Permission在使用 AR 应用程序之前提供一个。使用什么并不重要:Storyboard 或 SwiftUI。

您需要在文件中添加Camera Usage Description属性和arkit字符串info.plist

在此处输入图像描述

XML 版本如下所示:

/*  info.plist


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

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

*/

修复这些问题后,应用程序按预期编译和工作(没有任何错误):

在此处输入图像描述

于 2019-11-01T22:00:10.257 回答