JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://rawgit.com/kovacsv/JSModeler/master/build/three.min.js"></script>
<script src="https://rawgit.com/kovacsv/JSModeler/master/build/jsmodeler.js"></script>
<script src="https://rawgit.com/kovacsv/JSModeler/master/build/jsmodeler.ext.three.js"></script>
<script src="https://rawgit.com/kovacsv/JSModeler/master/build/lib/three.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div>
  <button>select and rotate</button>
</div>

<br>three:
<br>
<canvas id="three" width="800" height="300"></canvas>

JavaScript

function GetBodyAndMaterials() {
  var materials = new JSM.MaterialSet();
  materials.AddMaterial(new JSM.Material({
    ambient: 0xcc0000,
    diffuse: 0xcc0000
  }));
  materials.AddMaterial(new JSM.Material({
    ambient: 0x0000cc,
    diffuse: 0x0000cc
  }));
  var body = new JSM.GenerateCuboid(0.5, 0.5, 0.5);

  var vert0 = body.AddVertex(new JSM.BodyVertex(new JSM.Coord(0, 0, 0)));
  var vert1 = body.AddVertex(new JSM.BodyVertex(new JSM.Coord(1, 0, 0)));
  var vert2 = body.AddVertex(new JSM.BodyVertex(new JSM.Coord(1, 1, 0)));
  var vert3 = body.AddVertex(new JSM.BodyVertex(new JSM.Coord(0, 1, 0)));

  var vert4 = body.AddVertex(new JSM.BodyVertex(new JSM.Coord(0, 0, 1)));
  var vert5 = body.AddVertex(new JSM.BodyVertex(new JSM.Coord(1, 0, 1)));
  var vert6 = body.AddVertex(new JSM.BodyVertex(new JSM.Coord(1, 1, 1)));
  var vert7 = body.AddVertex(new JSM.BodyVertex(new JSM.Coord(0, 1, 1)));
  body.AddPoint(new JSM.BodyPoint(vert4));
  body.AddPoint(new JSM.BodyPoint(vert5));
  body.AddPoint(new JSM.BodyPoint(vert6));
  body.AddPoint(new JSM.BodyPoint(vert7));


  body.GetPolygon(1).SetMaterialIndex(0);
  body.GetPolygon(2).SetMaterialIndex(1);

  return [body, materials];
}


function LoadThree() {
  var viewerSettings = {
    cameraEyePosition: [1.0, 3.0, 2.0],
    cameraCenterPosition: [0.0, 0.0, 0.0],
    cameraUpVector: [0, 0, 1]
  };
  viewer = new JSM.ThreeViewer();
  if (!viewer.Start(document.getElementById('three'), viewerSettings)) {
    alert('error (three)');
  }
  var bodyAndMaterials = GetBodyAndMaterials();
  var meshes = JSM.ConvertBodyToThreeMeshes(bodyAndMaterials[0], bodyAndMaterials[1])
  viewer.AddMeshes(meshes);
  viewer.FitInWindow();
  viewer.Draw();
}

$('button').click(function() {
  var meshesFound = [];
  viewer.scene.traverse(function(current) {
    if (current instanceof THREE.Mesh) {
        meshesFound.push(current);
    }
  });
  if (meshesFound.length > 0) {
    var new_material = new THREE.MeshBasicMaterial({
      color:...