首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SceneKit-渲染视频

SceneKit-渲染视频

作者头像
酷走天涯
发布2018-09-14 15:06:58
1.4K0
发布2018-09-14 15:06:58
举报

渲染普通视频

本节学习目标
  • 使用SceneKit如何播放视频

scenekit 播放视频的方式有很多种,今天我就给大家介绍一种最简单的播放视频的方式

  • 使用的技术

要用到SpriteKit框架中的一个类SKVideoNode,这个类主要用来在2D游戏中渲染视频的,今天我们就借助这个类,实现在3D场景中播放视频

  • 效果如下

Scenekit_11.gif

实现步骤

1.第一步 创建工程(略)

2.第二步 导入两个游戏框架

import SceneKit
import SpriteKit

3.第三步 创建游戏专用视图

 let scnView = SCNView(frame: self.view.bounds);
 scnView.scene = SCNScene()
 self.view.addSubview(scnView);

4.第四步 创建一个摄像机

 let cameraNode = SCNNode()
 cameraNode.camera = SCNCamera()
 cameraNode.camera?.automaticallyAdjustsZRange = true;// 自动调节可视范围
 cameraNode.position = SCNVector3Make(0, 0, 10);
 scnView.scene?.rootNode.addChildNode(cameraNode);

5.第五步 创建一个节点并绑定一个平面几何对象

  let boxNode = SCNNode()
 let plane = SCNPlane(width: 16, height: 9)
  boxNode.geometry = plane;
  boxNode.geometry?.firstMaterial?.isDoubleSided = true
  boxNode.position = SCNVector3Make(0, 0, -30);
  scnView.scene?.rootNode.addChildNode(boxNode);

6.第六步 创建一个2D游戏场景和一个播放视频的对象

  let url = Bundle.main.url(forResource: "123-pad", withExtension: "mp4")
  let videoNode = SKVideoNode(url: url!)
  videoNode.size = CGSize(width: 1600, height: 900)
  videoNode.position = CGPoint(x: videoNode.size.width/2, y: videoNode.size.height/2)
  videoNode.zRotation = CGFloat(M_PI)
  let skScene = SKScene()
  skScene.addChild(videoNode)
  skScene.size = videoNode.size

经验:

1.视频添加到项目中的时候,使用右击->add File to 的方式添加文件 2.指定视频节点的大小 videoNode.size 3.指定2d场景的大小,这个一般和视频节点大小保持一致,如果你有特殊要求,可以根据要求设置 4.videoNode.zRotation = CGFloat(M_PI)注意,这点非常重要,一定要将视频节点旋转180度,否则渲染出来的画面会颠倒。

7.第七步 给平面体设置渲染内容

plane.firstMaterial?.diffuse.contents = skScene

8.第八步 播放视频

videoNode.play()

9.第十步 打开摄像头控制查看效果

scnView.allowsCameraControl = true;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.03.04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 渲染普通视频
    • 本节学习目标
      • 实现步骤
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档