2016-10-30 58 views
0

我正在使用three.js r73。我具有與這樣的線顯示的視頻幀的片段着色器:three.js:捕捉視頻幀供以後使用

gl_FragColor = texture2D(iChannel0, uv); 

我想另一均勻(說iChannel1)以包含在一些早期的點所顯示的視頻幀。 (然後,我會在iChannel0和iChannel1之間做一些遮罩來做運動捕捉/邊緣檢測等)。

我已經嘗試過各種方法,但沒有運氣。

我想我需要在JavaScript中克隆視頻紋理,然後將其分配給iChannel1,但我不知道如何捕獲幀。

我想我可以捕獲畫布的內容,但畫布上可能還有其他噪點,我不想要。我真的希望視頻畫面不是畫布。也通過畫布捕獲似乎非常迂迴。我覺得我只是缺少一些API調用來捕獲當前視頻幀,以便我可以製作iChannel1將使用的紋理。

我看着UniformsUtils,但似乎也沒有辦法。

回答

0

我在發佈我的問題後不久發現了一種方法。 D'哦。

這裏順便說一下,以供將來參考:

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

注意iChannel1需求這是正確初始化工作。類似這樣的作品:

var pathToSubtractionTexture = 'aStillImage.jpg'; 
(new THREE.TextureLoader()).load(pathToSubtractionTexture, function (texture) { 
    that.uniforms.iChannel1.value = texture; 
});