Texture to DataTexture
HTML
<script src="https://github.com/mrdoob/three.js/raw/master/build/three.min.js"></script>
<div id="container"></div>
<video id="video"></video>
CSS
#video {
display: none;
}
JavaScript
var texture = null;
var renderer = null;
var scene = null;
var camera = null;
var video = null;
var time = null;
var sprites = [];
var frames = [];
var framesNum = 4;
var videoWidth = 128;
var videoHeight = 96;
var context = null;
$(function() {
init();
animate();
});
function init() { /* renderer */
var WIDTH = 1024;
var HEIGHT = 480;
renderer = new THREE.WebGLRenderer();
renderer.setSize(WIDTH, HEIGHT);
var $container = $('#container');
$container.append(renderer.domElement);
/* scene */
scene = new THREE.Scene();
/* camera */
var NEAR = 0.1;
var FAR = 10000;
camera = new THREE.OrthographicCamera(-10, 10, 10, -10, NEAR, FAR);
camera.position.z = 300;
scene.add(camera);
/* texture from webcam */
video = $('#video').get(0);
video.width = videoWidth;
video.height = videoHeight;
video.autoplay = true;
video.style.opacity = 1;
texture = new THREE.Texture(video);
var canvas = document.createElement("canvas");
var group = new THREE.Object3D();
/* sprites */
for (var i = 0; i != framesNum; ++i) { /* instantiate texture */
var frame = new THREE.Texture(texture); /* instantiate sprite */
var sprite = new THREE.Sprite({
map: frame
});
sprite.position.set(videoWidth / 2 + videoWidth * (i % 4), videoHeight / 2 + videoHeight * (Math.floor(i / 4)), 0);
sprites[i] = sprite;
frames[i] = frame;
group.add(sprite);
}
scene.add(group);
/* initialize webcam */
initWebcam();
}
/**
* called by requestAnimationFrame
*/
function animate() {
requestAnimationFrame(animate);
var now = new Date().getTime();
var dt = now - (time || now);
time = now;
onFrame(dt / 1000);
renderer.render(scene, camera);
}
/**
* updates sprites' map textures 1 become 0, 2 become 1...
* (called every second)
*/
function rotateFrames() {
for (var i = 0; i !=...