JSFiddle - React, Tailwind, and code Playground

by Victor

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/93/three.min.js"></script>

CSS

body { margin: 0; background: orange;}
canvas { width: 50vh; height: 50vh ;
background: orange;
overflow: hidden;
fill: transparent;
}

JavaScript

//  get random
    const getRandom = function (min, max) {
        return Math.random() * (max - min) + min;
    };
        const colors = ['0x6b60e0','0x1db750'];
   const random_item = items => {
  
return items[Math.floor(Math.random()*items.length)];
     
};
/* setip */
      var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );

var renderer = new THREE.WebGLRenderer( { antialias: true});
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );

/* elements */
camera.position.z = 0;

/* rendering */
for (var i = 0; i < 200; i++){
  var newColor = random_item(colors);
  var geometry = new THREE.CircleGeometry( getRandom(0.03, 0.15), 500 );
 
  var material = new THREE.MeshBasicMaterial( { color:  newColor, shading: THREE.SmoothShading });
  var circle = new THREE.Mesh( geometry, material );
   circle.geometry.mergeVertices(); circle.geometry.computeVertexNormals();
circle.geometry.computeFaceNormals();  
  circle.geometry.mergeVertices()
  circle.geometry.computeVertexNormals();
  circle.geometry.computeVertexNormals(true);

  circle.position.x = getRandom(-5,5);
  circle.position.y = getRandom(-5,5);
  circle.position.z = getRandom(-20,0);
  /* circle.material.color = random_item(color) */;
  circle.material.color.setHex( newColor );
  scene.add( circle );
};

var geometry = new THREE.CircleGeometry(1,10 );
var material = new THREE.MeshBasicMaterial( { color: '0x00ff00', transparent: true, opacity: '0.5' });
var scaryCircle = new THREE.Mesh( geometry, material );
/* circle.material.color = random_item(color) */
/* scaryCircle.material.color.setHex( ne ) */
scaryCircle.position.z = -10;
/* scene.add( scaryCircle ); */


/* 
var light = new THREE.PointLight( 0xff0000, 1, 100 );
light.position.set( 50, 50, 50 );
light.position.z = -10;
light.castShadow = true;            // default false

scene.add( light );
 */
 
  // create custom...