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);

}