我的目标是使用在真实环境中呈现2D动画角色ARKit.动画角色是视频的一部分,在视频的以下快照中显示:
使用代码完全显示视频本身没有任何问题:
func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? {
guard let urlString = Bundle.main.path(forResource: "resourceName", ofType: "mp4") else { return nil }
let url = URL(fileURLWithPath: urlString)
let asset = AVAsset(url: url)
let item = AVPlayerItem(asset: asset)
let player = AVPlayer(playerItem: item)
let videoNode = SKVideoNode(avPlayer: player)
videoNode.size = CGSize(width: 200.0, height: 150.0)
videoNode.anchorPoint = CGPoint(x: 0.5, y: 0.0)
return videoNode
}
Run Code Online (Sandbox Code Playgroud)
此代码的结果显示在以下应用程序的屏幕截图中,如预期:
但正如你所看到的,角色的背景并不是很好,所以我需要让它消失,以便创造出实际上站在水平面上的角色的幻觉.我试图通过对视频产生色度键效果来实现这一点.
我对色度键效果的处理方法是创建基于的自定义过滤器"CIColorCube" CIFilter,然后使用过滤器对视频应用AVVideoComposition.
首先,是创建过滤器的代码:
func RGBtoHSV(r : …Run Code Online (Sandbox Code Playgroud)