JSFiddle - React, Tailwind, and code Playground
by Nick Hulea
HTML
<html><head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head><body>
<script src="https://raw.github.com/mrdoob/three.js/master/build/three.min.js"></script>
<script src="https://raw.github.com/mrdoob/three.js/master/examples/js/libs/stats.min.js"> </script>
<div id="up" style="position:absolute;z-index:500000;left:100px;top:20px;" class="nav">up</div>
<div id="down" style="position:absolute;z-index:500000;left:100px;top:40px;" class="nav">down</div>
<div id="left" style="position:absolute;z-index:500000;left:100px;top:60px;" class="nav">left</div>
<div id="right" style="position:absolute;z-index:500000;left:100px;top:80px;" class="nav">right</div>
<div id="test" style="position:absolute;z-index:500000;left:100px;top:100px;"> </div>
</body>
</html>
JavaScript
var cubeGeo;
var materials = [];
var container, stats;
var camera, scene, renderer;
var cube, plane;
var targetRotation = 0;
var targetRotationOnMouseDown = 0;
var mouseX = 0;
var mouseXOnMouseDown = 0;
var windowHalfX = window.innerWidth / 2;
var windowHalfY = window.innerHeight / 2;
init();
animate();
function init() {
container = document.createElement( 'div' );
document.body.appendChild( container );
var info = document.createElement( 'div' );
info.style.position = 'absolute';
info.style.top = '10px';
info.style.width = '100%';
info.style.textAlign = 'center';
info.innerHTML = 'Drag to spin the cube';
container.appendChild( info );
camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 1000 );
camera.position.y = 150;
camera.position.z = 500;
scene = new THREE.Scene();
// add subtle ambient lighting
var ambientLight = new THREE.AmbientLight(0x333333);
scene.add(ambientLight);
// add directional light source
var directionalLight = new THREE.DirectionalLight(0x888888);
directionalLight.position.set(1, 1, 1).normalize();
scene.add(directionalLight);
// Cube
for ( var i = 0; i < 6; i ++ ) {
var img = new Image();
img.src = '/img/logo.png';
var tex = new THREE.Texture(img);
img.tex = tex;
img.onload = function() { this.tex.needsUpdate = true; };
var mat = new THREE.MeshLambertMaterial({map: tex});
materials.push(mat);
}
cubeGeo = new THREE.CubeGeometry(200,200,200,1,1,1);
cubeGeo.uvsNeedUpdate = true;
cubeGeo.dynamic = true;
cube = new THREE.Mesh(...