JSFiddle - React, Tailwind, and code Playground

HTML

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">

	<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/three@0.138.3/build/three.min.js"></script>
  <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/three@0.138.3/examples/js/utils/BufferGeometryUtils.js"></script>
	<script type="text/javascript" src="https://test.lyke.be/data.js"></script>

</head>

<body>
	<div id='canvas'></div>
</body>

</html>

CSS

body {    
    margin: 0 !important;
    padding: 0 !important;
}

JavaScript

var animationSpeed = 0.0035
var cameraRotateSpeed = Math.PI * 0.002
var cnt = 1
var dirLight0
var geom
var geomXYZ
var hemisphereLight0
var incr = false
var materialPhong
var rotateObject = true
var scene, renderer, camera

setupScene()
init();

function setupScene() {
	scene = new THREE.Scene();
	scene.background = new THREE.Color(0xababab);

	renderer = new THREE.WebGLRenderer({ antialias: true });
	renderer.setSize(window.innerWidth - 0, window.innerHeight - 0);
	renderer.setPixelRatio(window.devicePixelRatio);
	renderer.shadowMap.enabled = true;
	renderer.shadowMap.type = THREE.PCFSoftShadowMap;

	document.body.appendChild(renderer.domElement);
}

function init() {

	var completeSceneAfterLoading=function(){
		
		materialPhong = new THREE.MeshPhongMaterial();
		materialPhong.color.setHex(0x0d0d0d);
		materialPhong.emissive.setHex(0x0f0f0f);
		materialPhong.emissiveIntensity = 0.75;
		materialPhong.specular.setHex(0x070707);
		materialPhong.shininess = 30
		materialPhong.side = THREE.DoubleSide
		materialPhong.needsUpdate = true

		mesh = new THREE.Mesh(geom);
		mesh.material = materialPhong;

		mesh.receiveShadow = true;
		mesh.castShadow = true;

		scene.add(mesh);

		camera = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, 1, 10000);
		camera.position.x = 0;
		camera.position.y = 3;
		camera.position.z = 6;
		camera.lookAt(mesh.position);



		dirLight0 = new THREE.DirectionalLight(0xddddddd, 2.5);
		dirLight0.position.x = 1;
		dirLight0.position.y = 4;
		dirLight0.position.z = 6;
		dirLight0.castShadow = false;
		scene.add(dirLight0);
		
		animate()
	}

	geom = new THREE.BufferGeometry()
	geom.setFromPoints(pts)
  geom = THREE.BufferGeometryUtils.mergeVertices( geom );
	geom.computeVertexNormals()
	geom.rotateX(-Math.PI / 2);
	
	completeSceneAfterLoading()

};

function animate() {

	requestAnimationFrame(animate);
	renderer.render(scene, camera);

	if (rotateObject) {
		mesh.rotation.y += animationSpeed;
	}
}