2016-09-13 14 views
2

어떻게 SceneKit의 SCN 프로그램에 비디오 입력을 연결할 수 있습니까? SCN 프로그램 - 비디오 입력

사용자 지정 프로그램을 사용하지 않고, 내가 할 수있는 :

SKScene에 비디오를 렌더링하고 SCNMaterial에 대한 입력으로 사용
func set(video player: AVPlayer, on node: SCNNode) { 
    let size = player.currentItem!.asset.tracks(
     withMediaType: AVMediaTypeVideo).first!.naturalSize 
    let videoNode = SKVideoNode(avPlayer: player) 
    videoNode.position = CGPoint(x: size.width/2, y: size.height/2) 
    videoNode.size = size 
    let canvasScene = SKScene() 
    canvasScene.size = size 
    canvasScene.addChild(videoNode) 

    let material = SCNMaterial() 
    material.diffuse.contents = canvasScene 
    node.geometry?.materials = [material] 
} 

.

노드에 SCNProgram을 사용하고 싶지만 플레이어 입력을 첨부 할 수 없습니다. 솔루션에서 SKScene 중간 렌더링을 사용하지 않더라도 괜찮습니다. 그것이 없으면 할 수 있다면 실제로 더 좋은 것으로 들립니다.

+1

OpenGL 태그에 태그가 추가 된 이유는 무엇입니까? 질문과 관련된 OpenGL이 있습니까? – thokra

+0

일반적으로 버퍼 바인딩, 특히 비디오와 관련된 많은 그래픽 작업이 있습니다. 현재이 코드 스 니펫을보고 있습니다 : https://github.com/asymptotik/asymptotik-rnd-scenekit-kaleidoscope/blob/01b58ed87a33c6353a398ab0bf77686e2ec96644/Atk_Rnd_VisualToys/VideoCaptureBuffer.swift#L121-L218 많은 OpenGL 용어를 사용합니다. 하지만 더 적절한 태그가 있다고 생각한다면, lmk – Guig

답변

1

을 사용해 보셨습니까? CALayer의 하위 클래스입니까? SCNMaterialProperty의 contents 속성에 CALayer를 공급할 수 있습니다.

+0

소리가 잘 들린다. 시도해 보자. – Guig

+0

불행히도, 애플은 이런 식으로 작동하지 않을 것이라고 생각하지 않는다. http://www.openradar.me/22805939 – Guig

관련 문제