gpt4 book ai didi

cifilter - 我可以将 CIFilter 应用于 ARkit 相机源吗?

转载 作者:行者123 更新时间:2023-12-04 20:31:40 26 4
gpt4 key购买 nike

我正在尝试对 ARSCNView 中的相机实时 Steam 图像应用模糊效果。我检查了 WWDC 视频。他们只提到了使用 Metal 进行自定义渲染,但我在网上没有找到任何完整的示例。知道怎么做吗?

更新 1
我试图将过滤器应用于背景。它显示不正确的方向。我怎样才能解决这个问题?

let bg=self.session.currentFrame?.capturedImage

if(bg != nil){
let context = CIContext()
let filter:CIFilter=CIFilter(name:"CIColorInvert")!
let image:CIImage=CIImage(cvPixelBuffer: bg!)
filter.setValue(image, forKey: kCIInputImageKey)
let result=filter.outputImage!
self.sceneView.scene.background.contents = context.createCGImage(result, from: result.extent)

}

最佳答案

我找到了一个很好的解决方案,即简单地将相应的几何变换应用于 background每当设备方向改变时的属性:

func session(_ session: ARSession, didUpdate frame: ARFrame) {
let image = CIImage(cvPixelBuffer: frame.capturedImage)
filter.setValue(image, forKey: kCIInputImageKey)

let context = CIContext()
if let result = filter.outputImage,
let cgImage = context.createCGImage(result, from: result.extent) {

sceneView.scene.background.contents = cgImage
if let transform = currentScreenTransform() {
sceneView.scene.background.contentsTransform = transform
}
}
}

private func currentScreenTransform() -> SCNMatrix4? {
switch UIDevice.current.orientation {
case .landscapeLeft:
return SCNMatrix4Identity
case .landscapeRight:
return SCNMatrix4MakeRotation(.pi, 0, 0, 1)
case .portrait:
return SCNMatrix4MakeRotation(.pi / 2, 0, 0, 1)
case .portraitUpsideDown:
return SCNMatrix4MakeRotation(-.pi / 2, 0, 0, 1)
default:
return nil
}
}

请务必调用 UIDevice.current.beginGeneratingDeviceOrientationNotifications()在您的 viewDidLoad先说方法。

关于cifilter - 我可以将 CIFilter 应用于 ARkit 相机源吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44624937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com