JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://threejs.org/build/three.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script src="https://threejs.org/examples/js/loaders/GLTFLoader.js"></script>

CSS

body {
	  margin: 0;
}

JavaScript

var container;
var camera, scene, raycaster, renderer, controls;

var mouse = new THREE.Vector2(),
    INTERSECTED;
var radius = 100,
    theta = 0;
var model;

const mixers = [];
const clock = new THREE.Clock();

init();
animate();

function init() {

  container = document.createElement('div');
  document.body.appendChild(container);

  scene = new THREE.Scene();

  camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 10000);

  var light = new THREE.DirectionalLight(0xffffff, 1);
  light.position.set(1, 1, 1).normalize();
  scene.add(light);

  raycaster = new THREE.Raycaster();
  controls = new THREE.OrbitControls(camera, renderer);
  controls.autoRotate = true;
  controls.autoRotateSpeed = 2;
  controls.maxDistance = 200;
  controls.minDistance = 160;
  controls.maxPolarAngle = Math.PI / 2 * 1;

  renderer = new THREE.WebGLRenderer();
  renderer.setClearColor(0xf0f0f0);
  renderer.setPixelRatio(window.devicePixelRatio);
  renderer.setSize(window.innerWidth, window.innerHeight);
  document.body.appendChild(renderer.domElement);
  loadModels();

}

function loadModels() {

  const loader = new THREE.GLTFLoader();
  const onLoad = (gltf, position) => {
  
    const model = gltf.scene.children[0];
    model.position.copy(position);
    const animation = gltf.animations[0];
    const mixer = new THREE.AnimationMixer(model);
   // mixers.push(mixer);
   // const action = mixer.clipAction(animation);
  //  action.play();
    scene.add(model);
    
    

    function clicked( event ) {
    
    	mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
			mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
      raycaster.setFromCamera( mouse, camera );
    
    	var intersects = raycaster.intersectObject(model, true);
    
      console.log(intersects.length)

      if (intersects.length > 0) {
        var position = {
          x: controls.target.x,
          y: controls.target.y,
          z: controls.target.z
        };
    ...