<!DOCTYPE html> <html lang="en"> <head> <title>three.js misc - ubiquity - test2</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> <style> body { background-color: #000; margin: 0px; overflow: hidden; } </style> </head> <body> <script src="../build/three.min.js"></script> <script src="js/renderers/Projector.js"></script> <script src="js/renderers/CanvasRenderer.js"></script> <script src="js/libs/stats.min.js"></script> <div id='container1' style='float: left '></div> <div id='container2' style='float: right'></div> <script> var stats; var camera, scene; var canvasRenderer, webglRenderer; var mesh; var texture, texture1, texture2, texture3; init(); animate(); function init() { var width = window.innerWidth / 2 - 2; var height = window.innerHeight; camera = new THREE.PerspectiveCamera( 70, width / height, 1, 4000 ); camera.position.z = 2000; scene = new THREE.Scene(); // MESH - Repeat Pattern texture = THREE.ImageUtils.loadTexture( 'textures/UV_Grid_Sm.jpg' ); texture.wrapS = THREE.RepeatWrapping; texture.wrapT = THREE.RepeatWrapping; var geometry = new THREE.BoxGeometry( 150, 150, 150, 4, 4, 4 ); var material = new THREE.MeshBasicMaterial( { map: texture, overdraw: 0.5 } ); mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); // SPRITES - from Sprite Sheet texture1 = THREE.ImageUtils.loadTexture( 'textures/UV_Grid_Sm.jpg', undefined, function() { texture1.wrapS = THREE.ClampToEdgeWrapping; texture1.wrapT = THREE.ClampToEdgeWrapping; for ( var i = 0; i < 20; i ++ ) { var tex = texture1.clone(); tex.needsUpdate = true; // cloning does not set this tex.offset.x = 0.1 * THREE.Math.randInt( 0, 7 ); tex.offset.y = 0.1 * THREE.Math.randInt( 0, 7 ); tex.repeat.x = 0.1 * THREE.Math.randInt( 1, 3 ); tex.repeat.y = 0.1 * THREE.Math.randInt( 1, 3 ); var material = new THREE.SpriteMaterial( { map: tex } ); material.rotation = 0.5 * Math.PI * ( Math.random() - 0.5 ); var sprite = new THREE.Sprite( material ); sprite.position.x = Math.random() * 1000 - 500; sprite.position.y = Math.random() * 1000 - 500; sprite.position.z = Math.random() * 1000 - 500; sprite.scale.set( 96, 96, 1 ); scene.add( sprite ); } } ); // SPRITES - Repeat Pattern texture2 = THREE.ImageUtils.loadTexture( 'textures/sprite0.jpg' ); texture2.wrapS = THREE.RepeatWrapping; texture2.wrapT = THREE.RepeatWrapping; for ( var i = 0; i < 20; i ++ ) { var material = new THREE.SpriteMaterial( { map: texture2, opacity: 0.7 } ); var sprite = new THREE.Sprite( material ); sprite.material.rotation = 0.5 * Math.PI * ( Math.random() - 0.5 ); sprite.position.x = Math.random() * 1000 - 500; sprite.position.y = Math.random() * 1000 - 500; sprite.position.z = Math.random() * 1000 - 500; sprite.scale.set( 64, 64, 1 ); scene.add( sprite ); } // SPRITES - PNG texture3 = THREE.ImageUtils.loadTexture( 'textures/sprite1.png' ); texture3.wrapS = THREE.ClampToEdgeWrapping; texture3.wrapT = THREE.ClampToEdgeWrapping; for ( var i = 0; i < 20; i ++ ) { var material = new THREE.SpriteMaterial( { map: texture3 } ); material.rotation = 2 * Math.PI * ( Math.random() - 0.5 ); var sprite = new THREE.Sprite( material ); sprite.position.x = Math.random() * 1000 - 500; sprite.position.y = Math.random() * 1000 - 500; sprite.position.z = Math.random() * 1000 - 500; sprite.scale.set( 64, 64, 1 ); scene.add( sprite ); } // canvasRenderer = new THREE.CanvasRenderer(); canvasRenderer.setClearColor( 0xf0f0f0 ); canvasRenderer.setPixelRatio( window.devicePixelRatio ); canvasRenderer.setSize( width, height ); var container1 = document.getElementById( 'container1' ); container1.appendChild( canvasRenderer.domElement ); webglRenderer = new THREE.WebGLRenderer( { antialias: true } ); webglRenderer.setClearColor( 0xf0f0f0 ); webglRenderer.setPixelRatio( window.devicePixelRatio ); webglRenderer.setSize( width, height ); var container2 = document.getElementById( 'container2' ); container2.appendChild( webglRenderer.domElement ); stats = new Stats(); stats.domElement.style.position = 'absolute'; stats.domElement.style.top = '0px'; document.body.appendChild( stats.domElement ); // window.addEventListener( 'resize', onWindowResize, false ); } function onWindowResize() { var width = window.innerWidth / 2 - 2; var height = window.innerHeight; camera.aspect = width / height; camera.updateProjectionMatrix(); canvasRenderer.setSize( width, height ); webglRenderer.setSize( width, height ); } // function animate() { requestAnimationFrame( animate ); render(); stats.update(); } function render() { var time = performance.now() * 0.0001; camera.position.x = Math.sin( time ) * 500; camera.position.z = Math.cos( time ) * 500; camera.lookAt( scene.position ); // texture.repeat.x = Math.sin( time ) * 0.5 + 1.0; texture.repeat.y = Math.cos( time ) * 0.5 + 1.0; texture.offset.x = Math.sin( time ) * 0.5 + 0.5; texture.offset.y = Math.cos( time ) * 0.5 + 0.5; mesh.rotation.x = time * 2; mesh.rotation.y = time * 4; // texture2.repeat.x = Math.sin( time ) + 1.25; texture2.repeat.y = Math.sin( time ) + 1.25; texture2.offset.x = Math.sin( time ); texture2.offset.y = Math.cos( time ); // canvasRenderer.render( scene, camera ); webglRenderer.render( scene, camera ); } </script> </body> </html>