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

}