带CALayer的SCNNode几何材质

时间:2015-11-10 23:34:59

标签: objective-c avplayer scenekit

我有一个非常基本的测试场景设置:一个摄像头,默认照明和一个缓慢旋转的立方体。

我正在尝试将视频添加为多维数据集的纹理,并且已按照示例here进行操作。

以下是应该添加AVPlayerLayer作为节点几何体材质的特定代码块:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"testVid" withExtension:@"mp4"];
AVAsset *asset = [AVAsset assetWithURL:url];
if (!asset.playable) {
    NSLog(@"Err 1");
    return;
}
AVPlayerItem *item = [[AVPlayerItem alloc] initWithAsset:asset];
AVPlayerLayer *layer = [[AVPlayerLayer alloc] init];
layer.player = [AVPlayer playerWithPlayerItem:item];
layer.player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
[layer.player play];
layer.videoGravity = AVLayerVideoGravityResizeAspectFill;
layer.frame = CGRectMake(0, 0, 600, 800);

CALayer *backLayer = [CALayer layer];
backLayer.backgroundColor = [[UIColor blackColor] CGColor];
backLayer.frame = CGRectMake(0, 0, 600, 800);
[backLayer addSublayer:layer];

self.cubeNode.geometry.firstMaterial.diffuse.contents = backLayer;
//[self.sceneView.layer addSublayer:backLayer];

如果我将图层添加到UIView(请参阅注释掉的行),那么我可以很好地播放。但是,如果我将它添加到节点,我只会得到一个黑色旋转立方体(即backLayer显示但不显示视频。

我有什么遗失的东西吗?或者这实际上是不可能的?

0 个答案:

没有答案