JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://threejs.org/build/three.js"></script>

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

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

	<script src="https://threejs.org/examples/js/WebGL.js"></script>
	<script src="https://threejs.org/examples/js/utils/SkeletonUtils.js"></script>

JavaScript

let container, player, stats, clock;
let camera, scene, renderer, model, face;

const MODELS = [{ name: "RobotExpressive" }];
let numLoadedModels = 0;
const LoadedModels = [];
            
class Player {

    constructor( scene, model ){
       
        this.model = new THREE.SkeletonUtils.clone( model.scene );
        scene.add(this.model);

        this.states = [ 'Idle', 'Walking', 'Running', 'Dance', 'Death', 'Sitting', 'Standing' ];
        this.emotes = [ 'Jump', 'Yes', 'No', 'Wave', 'Punch', 'ThumbsUp' ];
        this.animations = {};
        this.mixer = new THREE.AnimationMixer( model.scene );

        for ( let i = 0; i < model.animations.length; i ++ ) {
        let clip = model.animations[ i ];

        let action = this.mixer.clipAction( clip );
     
        this.animations[clip.name] = action;
        if ( this.emotes.indexOf( clip.name ) >= 0 || this.states.indexOf( clip.name ) >= 4 ) {
            action.clampWhenFinished = true;
            action.loop = THREE.LoopOnce;
        }
      }

    }
};


init();
animate();

function init() {

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

camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 0.25, 100 );
camera.position.set( - 5, 3, 10 );
camera.lookAt( new THREE.Vector3( 0, 2, 0 ) );

scene = new THREE.Scene();
scene.background = new THREE.Color( 0xe0e0e0 );
scene.fog = new THREE.Fog( 0xe0e0e0, 20, 100 );

clock = new THREE.Clock();

// lights

var light = new THREE.HemisphereLight( 0xffffff, 0x444444 );
light.position.set( 0, 20, 0 );
scene.add( light );

light = new THREE.DirectionalLight( 0xffffff );
light.position.set( 0, 20, 10 );
scene.add( light );

// ground

var mesh = new THREE.Mesh( new THREE.PlaneBufferGeometry( 2000, 2000 ), new THREE.MeshPhongMaterial( { color: 0x999999, depthWrite: false } ) );
mesh.rotation.x = - Math.PI / 2;
scene.add( mesh );

var grid = new THREE.GridHelper( 200, 40, 0x000000, 0x000000...