因此,会话委托允许我获得一个包含相机图像+一些细节的帧。但是我怎么能从RealityKit那里得到类似的东西呢?就像一帧渲染的物体+没有背景的阴影?
我想用金属做我自己的帧后渲染。因此,让realityKit呈现漂亮的网格,然后自己调整结果框架&呈现到我自己的表面。
问候大流士
发布于 2022-02-06 07:14:28
TLDR
可以向RealityKit的ARView:arView.session.delegate = sessionDelegate添加会话委托
SwiftUI
下面是如何使用SwiftUI实现会话委托的方法:
class SessionDelegate<ARContainer: UIViewRepresentable>: NSObject, ARSessionDelegate {
var arVC: ARContainer
var arGameView : ARView?
init(_ control: ARContainer) {
self.arVC = control
}
func setARView(_ arView: ARView){
arGameView = arView // get access the arView
}
func session(_ session: ARSession, didUpdate anchors : [ARAnchor]) {}
func session(_ session: ARSession, didUpdate frame: ARFrame) {
print("frame", frame)
}
func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {}
func session(_ session: ARSession, didRemove anchors: [ARAnchor]) {}
}通过UIViewRepresentable函数使您的委托对您的makeCoordinator可用:
struct CameraARContainer: UIViewRepresentable {
func makeCoordinator() -> SessionDelegate<Self>{
SessionDelegate<Self>(self)
}
func makeUIView(context: Context) -> ARView {
let arView = ARGameView(frame: .zero)
arView.session.delegate = context.coordinator
context.coordinator.setARView(arView)
return arView
}
func updateUIView(_ uiView: ARView, context: Context) {}
}https://stackoverflow.com/questions/68211033
复制相似问题