无法使用RealityKit场景预览SwiftUI画布

时间:2019-11-01 00:30:47

标签: swift augmented-reality swiftui arkit realitykit

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

  1. 我通过Xcode创建应用。
  2. 选择增强现实应用程序,并将用户 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'的成员类型

enter image description here

  1. 该项目仍然可以成功编译。 enter image description here

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

1 个答案:

答案 0 :(得分:1)

您必须解决几个问题

  
      
  1. 您不能在iOS模拟器或 SwiftUI Canvas Preview 中使用anchoring component ,因为它只能用于将虚拟内容固定为真实内容。世界表面。 因此,没有适用于AR应用的模拟器
  2.   

RealityKit锚在iOS模拟器模式和SwiftUI Canvas预览模式下无用。

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

let _: AnchoringComponent.Target.Alignment = .horizontal

不仅锚在iOS Simulator ModeSwiftUI Preview Mode中是无用的,而且其他面向会话的属性(包括ARView.session)也无用,例如您在图片上看到的:< / p>

enter image description here

  
      
  1. 将ARView中的.backgroundColor更改为其他任何所需的值。默认颜色有时使您无法看到RealityKit场景。看起来像个错误。
  2.   
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

  
      
  1. 当然,在使用AR应用程序之前,您必须给Camera Permission。不管您使用什么:Storyboard或SwiftUI。
  2.   

您需要在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