HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – SKVideoNode(嵌入在SKScene中)作为Scene Kit Node无法正常工作的纹理大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试通过使用Scenekit将视频作为纹理映射到VR项目的原始圆柱体:一个嵌入在SKScene中的SKVideoNode作为SceneKit SCNTube对象的纹理,我只是无法将视频显示为静止图像会.下面的PLayground代码生成映射到柱面的移动视频,但映射不起作用:

编辑:在上市结束时添加单行修复.以下代码应该工作

import UIKit
import SceneKit      // for 3D mapping
import SpriteKit     // for SKVideoNode
import QuartzCore    // for basic animation
import XCPlayground  // for live preview
import AVFoundation  // for video playBACk ENGIne

// create a scene view with an empty scene
var sceneView = SCNView(frame: CGRect(x: 0,y: 0,width: 300,height: 300))
var scene = SCNScene()
sceneView.scene = scene


// start a live preview of that view
XCPShowView("The Scene View",view: sceneView)

// default lighTing
sceneView.autoenablesDefaultLighTing = true

// a geometry object
var tube = SCNTube(innerRadius: 1.99,outerRadius: 2,height: 3)
var tubeNode = SCNNode(geometry: tubE)
scene.rootNode.addChildNode(tubeNodE)

// video scene


let urlStr = NSBundle.mainBundle().pathForresource("sample",ofType: "mp4")
let url = NSURL(fileURLWithPath: urlStr!)

let asset = AVURLAsset(URL: url,options: nil)
let playerItem = AVPlayerItem(asset: asset)
let player = AVPlayer(playerItem: playerItem)
let videoNode = SKVideoNode(AVPlayer: player)
let spritescene = SKScene(size: CGSize(width: 1211,height: 431))



videoNode.size.width=spritescene.size.width
videoNode.size.height=spritescene.size.height
spritescene.addChild(videoNodE)


// configure the geometry object

var myImage = UIImage.init(named: "BandImage.jpeg")

tube.firstMaterial?.diffuse.contents  = spritescene


// set a rotation axis (no anglE) to be able to
// use a nicer keypath below and avoid needing
// to wrap it in an NSValue
tubeNode.rotation = SCNVector4(x: 0.0,y: 1.0,z: 0.0,w: 0.0)

// animate the rotation of the torus
var spin = CABasicAnimation(keyPath: "rotation.w") // only animate the angle
spin.toValue = 2.0*M_PI
spin.duration = 3
spin.repeatCount = HUGE // for infinity
tubeNode.addAnimation(spin,forKey: "spin around")

// starts the video,solving the issue
    sceneView.playing = true

解决方法

我已经在github上发布了我的代码(以及一些示例全景内容)给任何想要有一个工作示例代码或者有兴趣在开源全景视频播放器上进行协作的人:

https://github.com/jglasse/OSVR

事实证明,它似乎模拟器(和游乐场)不支持功能.将上面的代码移动到项目并在设备上运行,我终于让它工作了.

故事的寓意是 – 如果您使用SKVideoNodes作为Scenekit的纹理,请使用实际设备进行测试.

大佬总结

以上是大佬教程为你收集整理的ios – SKVideoNode(嵌入在SKScene中)作为Scene Kit Node无法正常工作的纹理全部内容,希望文章能够帮你解决ios – SKVideoNode(嵌入在SKScene中)作为Scene Kit Node无法正常工作的纹理所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。