JSFiddle - React, Tailwind, and code Playground

by wisegorilla

HTML

<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style id="compiled-css" type="text/css">
      body {<!-- w w  w. d  e  mo2  s . c o m-->
   background-color: #000;
   margin: 0px;
   overflow: hidden;
}
    
  </style>
</head>
<body>
    <script src="https://threejs.org/build/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
    <script type='text/javascript'>
  </script>
</body>
</html>

JavaScript

// three.js: multiple materials on a single mesh
let renderer, scene, camera;
init();
render();
function init() {
   // renderer
   renderer = new THREE.WebGLRenderer( { antialias: true } );
   renderer.setPixelRatio( window.devicePixelRatio );
   renderer.setClearColor( 0x000000, 0.0 );
   renderer.setSize( window.innerWidth, window.innerHeight );
   document.body.appendChild( renderer.domElement );
   // scene
   scene = new THREE.Scene();
   // camera
   camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 1000 );
   camera.position.set( 15, 20, 30 );
   scene.add( camera );
   // controls
   let controls = new THREE.OrbitControls( camera, renderer.domElement );
   controls.addEventListener( 'change', render );
   controls.minDistance = 10;
   controls.maxDistance = 50;
/* // ambient
  scene.add( new THREE.AmbientLight( 0xffffff, 0.1 ) ); */
  // light
  let light = new THREE.PointLight( 0xffffff, 1 );
  camera.add( light );
   // geometry
  let geometry = new THREE.PlaneGeometry( 10, 10 );
   geometry.clearGroups();
   geometry.addGroup( 0, Infinity, 0 );
   geometry.addGroup( 0, Infinity, 1 );
   geometry.addGroup( 0, Infinity, 2 );
   geometry.addGroup( 0, Infinity, 3 );
   // textures
   let loader = new THREE.TextureLoader();
   let splodge = loader.load( 'https://threejs.org/examples/textures/decal/decal-diffuse.png', render );
  let cat = loader.load('https://images.unsplash.com/photo-1518791841217-8f162f1e1131?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1950&q=80.jpeg', render)
   // materials
   let catMat = new THREE.MeshPhongMaterial( {
      map: cat,
   } );
   let splodgeMat = new THREE.MeshPhongMaterial( {
      map: splodge,
      alphaTest: 0.5,
   } );
   let materials = [ catMat,splodgeMat ];
   // mesh
   mesh = new THREE.Mesh( geometry, materials );
   scene.add( mesh );
}
function render() {
   renderer.render( scene, camera );
}