JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/108/three.js"></script>
<script src='https://stemkoski.github.io/Three.js/js/OrbitControls.js'></script>
<script src='https://stemkoski.github.io/Three.js/js/THREEx.KeyboardState.js'></script>
<script src='https://stemkoski.github.io/Three.js/js/THREEx.FullScreen.js'></script>
<script src='https://stemkoski.github.io/Three.js/js/THREEx.WindowResize.js'></script>
<script src='https://stemkoski.github.io/Three.js/fonts/helvetiker_bold.typeface.js'></script>
CSS
body {
margin: 0;
}
canvas {
display: block;
}
JavaScript
var scene, camera, renderer, controls;
var keyboard = new THREEx.KeyboardState();
var clock = new THREE.Clock();
//polygon points array
var polygonPoints = [{"x":-317.8337097167969,"y":283.7328186035156,"z":0},{"x":324.4554748535156,"y":290.35455322265625,"z":0},{"x":364.1678161621094,"y":-173.14523315429688,"z":0},{"x":-36.41810989379883,"y":191.02955627441406,"z":0},{"x":-374.10302734375,"y":-83.75933837890625,"z":0},{"x":-370.8056335449219,"y":273.8002624511719,"z":0},{"x":-370.8056335449219,"y":273.8002624511719,"z":0},{"x":-370.8056335449219,"y":273.8002624511719,"z":0},{"x":-317.8337097167969,"y":283.7328186035156,"z":0}];
var binPaneSize = { x: 50, y: 30 };
var binPaneOffset = {x:5,y:5};
// custom global variables
var cube;
scene = new THREE.Scene();
var SCREEN_WIDTH = window.innerWidth, SCREEN_HEIGHT = window.innerHeight;
// camera attributes
var VIEW_ANGLE = 45, ASPECT = SCREEN_WIDTH / SCREEN_HEIGHT, NEAR = 0.1, FAR = 20000;
// set up camera
camera = new THREE.PerspectiveCamera( VIEW_ANGLE, ASPECT, NEAR, FAR);
// add the camera to the scene
scene.add(camera);
camera.position.set(0,150,400);
camera.lookAt(scene.position);
camera.position.z = 500;
camera.up.set( 0, 0, 1 );
renderer = new THREE.WebGLRenderer( {antialias:true} );
renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
document.body.appendChild(renderer.domElement);
// automatically resize renderer
THREEx.WindowResize(renderer, camera);
// toggle full-screen on given key press
THREEx.FullScreen.bindKey({ charCode : 'm'.charCodeAt(0) });
controls = new THREE.OrbitControls( camera, renderer.domElement );
var light = new THREE.PointLight(0xffffff);
light.position.set(0,0,0);
scene.add(light);
gridGround = new THREE.GridHelper(1000, 30, 0x3f3f3f, 0x3f3f3f);
gridGround.rotation.x = Math.PI / 2;
scene.add(gridGround);
drawbinsInPolygon();
// fog must be added to scene before first render
scene.fog = new THREE.FogExp2( 0x9999ff, 0.00025 );
(function...