2016-10-30 15 views
0

私はthree.js r73を使用しています。私はこのようなラインでビデオフレームを表示するフラグメントシェーダがありますthree.js:後で使うためにビデオフレームをキャプチャする

gl_FragColor = texture2D(iChannel0, uv); 

を私はいくつかの早い時点で表示されたビデオ・フレームを含むように(iChannel1を言う)別の制服をしたいと思います。 (次に、iChannel0とiChannel1の間でいくつかのマスキングを行い、モーションキャプチャ/エッジ検出などを行います)。

私はこれにさまざまなアプローチを試みましたが、運はありません。

私は何とかjavascriptでビデオテクスチャをクローンし、それをiChannel1に割り当てる必要があると思いますが、フレームをキャプチャする方法はわかりません。

私はキャンバスのコンテンツをキャプチャできると思いますが、私が望まないキャンバスには他のノイズがあるかもしれません。私は真にビデオフレームをキャンバスではないと思っています。また、キャンバスキャプチャを経由することは非常にロータリーなようです。 iChannel1が使用するテクスチャを作ることができるように、現在のビデオフレームをキャプチャするAPI呼び出しが不足しているような気がします。

私はUniformsUtilsを見ましたが、それはどちらかというとやっていないようです。

答えて

0

質問を投稿した直後にこれを行う方法が見つかりました。 D'oh。ここで

は、今後の参考のために、方法です:iChannel1は仕事にこれを正しく初期化する必要が

if (timeToCaptureFrame) { 
    that.uniforms.iChannel1.value.image = that.uniforms.iChannel0.value.image; 
    that.uniforms.iChannel1.value.needsUpdate = true; 
} 

注意。このようなもの:

var pathToSubtractionTexture = 'aStillImage.jpg'; 
(new THREE.TextureLoader()).load(pathToSubtractionTexture, function (texture) { 
    that.uniforms.iChannel1.value = texture; 
}); 
関連する問題