JSFiddle - React, Tailwind, and code Playground

by Bai Shiuan Huang

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/84/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stats.js/r16/Stats.min.js"></script>

<div id='div1'>
  <input id='rangeName' value='RANGE' readonly= 'true'>
  <input type="range" id='myRange' min="1" max="100" value="50">
  <br>
  <br>
  <input id='radioName' value='RADIO' readonly= 'true'>
  <br>
  <input type=radio id='radio1' class='gclass' name='g' value='cylinder' checked> cylinder
  <br>
  <input type=radio id='radio1' class='gclass' name='g' value='box'> box
  <br>
  <br>
  <input id='checkName' value='CHECK' readonly= 'true'>
  <br>
  <input type=checkbox id='checkbox1' checked> rotate
  <br>

</div>
<div id='div2'>
  <button id='button1'>Hide AxisHelper</button>
  <input id='input1' size="10px" value=0 readonly=t rue>
</div>

CSS

body {
  overflow: hidden;
}

#div1 {
  position: absolute;
  top: 10vh;
  left: 10vw;
  color: white;
}

#div2 {
  position: absolute;
  top: 90vh;
  left: 30vw;
}

#button1 {
  width: 150px;
}

#input1 {
  color: white;
  background-color: transparent;
  border: 0px;
  font-size: 30px;
  height: 40px;
  width: 90px;
}

#rangeName {
  color: yellow;
  background-color: transparent;
  border: 0px;
  width: 50px;
}

#radioName {
  color: yellow;
  background-color: transparent;
  border: 0px;
  width: 50px;
}

#checkName {
  color: yellow;
  background-color: transparent;
  border: 0px;
  width: 50px;
}

JavaScript

var renderer, camera, controls, scenevar, cylin, box;
var angle = 0;
var turn = true;
init();
animate();

function init() {

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

  camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 1000);
  camera.position.y = 200;
  camera.position.z = 150;

  controls = new THREE.OrbitControls(camera, renderer.domElement);

  scene = new THREE.Scene();

  stats = new Stats();
  stats.domElement.style.position = 'absolute';
  stats.domElement.style.bottom = '5px';
  stats.domElement.style.left = '10px';
  stats.domElement.style.zIndex = 100;
  document.body.appendChild(stats.domElement);

  var gridXZ = new THREE.GridHelper(100, 10, 'red', 'lightgreen');
  var axes = new THREE.AxisHelper(10);
  scene.add(axes);
  scene.add(gridXZ);



  $("#button1").click(function() {
    if (axes.visible) {
      axes.visible = false;
      $("#button1").text("Show AxisHelper");
    } else {
      axes.visible = true;
      $("#button1").text("Hide AxisHelper");
    }
  });

  window.addEventListener('resize', onWindowResize, false);

  box = new THREE.Mesh(new THREE.BoxGeometry(100, 10, 10), new THREE.MeshNormalMaterial());


  cylin = new THREE.Object3D();
  cylin.add(makeCylinder());
  scene.add(cylin);

}

function makeCylinder() {
  var geometry = new THREE.CylinderGeometry(5, 5, 100, 32);
  var material = new THREE.MeshNormalMaterial();
  var cyl = new THREE.Mesh(geometry, material);
  cyl.rotation.z = Math.PI / 2;
  return cyl;
}


function onWindowResize() {
  var width = window.innerWidth;
  var height = window.innerHeight;
  camera.aspect = width / height;
  camera.updateProjectionMatrix();
  renderer.setSize(width, height);
}

function animate() {
  controls.update();
  stats.update();
  renderer.render(scene, camera);
  if...