我有一个非常基本的测试场景设置:一个摄像头,默认照明和一个缓慢旋转的立方体。
我正在尝试将视频添加为多维数据集的纹理,并且已按照示例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
显示但不显示视频。
我有什么遗失的东西吗?或者这实际上是不可能的?