JSFiddle - React, Tailwind, and code Playground
CSS
body {
overflow: hidden;
}
JavaScript
var camera, scene, renderer;
var geometry, material, mesh, p, mx,my,unp,cur;
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);
unp = p.unprojectVector(new THREE.Vector3( mx - (window.innerWidth/2), (window.innerHeight/2)-my, 0), camera)
//console.log(unp)
cur.position.x = unp.x;
cur.position.y = unp.y;
cur.position.z = unp.z/10;
mesh.position.x += 1;
mesh.rotation.y += 0.00;
// camera.rotation.x += 0.01
renderer.render(scene, camera);
}