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...