Ich versuche ein Video als Textur zu einem primitiven Zylinder für ein VR-Projekt mit Hilfe von Scenekit abzubilden: ein SKVideoNode eingebettet in einem SKScene als Textur für ein SceneKit SCNTube-Objekt, und ich kann einfach kein Video als Standbild anzeigen lassen. SPIELPLATZ Code unten sollte erzeugen Video Zylinder abgebildet bewegen, aber die Zuordnung funktioniert nicht:SKVideoNode (eingebettet in SKScene) als Textur für für Szene Kit Knoten funktioniert nicht
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
"Mapping funktioniert nicht"? -> ganz schwarz? hast du versucht, die Breite des SKScene auf 1024 zu setzen? Haben Sie versucht, den GL Renderer zu erzwingen (siehe Einstellungen für den SCNView Interface Builder)? – Toyos
Ganz schwarz, auch wenn skscene auf 1024 eingestellt ist. Audio spielt, also weiß ich, dass der Film spielt, aber keine Zuordnung der Textur zur Oberfläche – jglasse
Interface Builder? Ich erzeuge die Ansicht von Grund auf im Code. – jglasse