JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://threejs.org/build/three.min.js"></script>
CSS
body {
margin: 0;
overflow: hidden;
}
JavaScript
var camera, scene, renderer;
var geometry, material, mesh, p, mx,my,cur;
var vector = new THREE.Vector3();
init();
animate();
function init() {
camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.z = 500;
p = new THREE.Projector();
scene = new THREE.Scene();
geometry = new THREE.CubeGeometry(200, 200, 200);
var cg = new THREE.SphereGeometry(20);
material = new THREE.MeshBasicMaterial({
color: 0xff0000,
wireframe: true
});
mesh = new THREE.Mesh(geometry, material);
cur = new THREE.Mesh(cg, material);
scene.add(mesh);
scene.add(cur);
renderer = new THREE.CanvasRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
document.addEventListener( 'mousemove', function(e){
mx = e.x;
my = e.y;
}, false );
}
function animate() {
// note: three.js includes requestAnimationFrame shim
requestAnimationFrame(animate);
vector.set( ( mx / window.innerWidth ) * 2 - 1, - ( my / window.innerHeight ) * 2 + 1, 0.999 );
p.unprojectVector( vector, camera );
cur.position.copy( vector );
mesh.position.x += 1;
mesh.rotation.y += 0.00;
// camera.rotation.x += 0.01
renderer.render(scene, camera);
}