semi-isometric

by notchris

CSS

body {
	background-color: #000;
	margin: 0px;
	overflow: hidden;

}

* {
  outline: 0 !important;
}

JavaScript

import * as THREE from "https://threejs.org/build/three.module.js";

import {
  OrbitControls
} from 'https://unpkg.com/three@0.116.1/examples/jsm/controls/OrbitControls.js'

function GridBoxGeometry(geometry, independent) {
  if (!(geometry instanceof THREE.BoxBufferGeometry)) {
    console.log("GridBoxGeometry: the parameter 'geometry' has to be of the type THREE.BoxBufferGeometry");
    return geometry;
  }
  independent = independent !== undefined ? independent : false;

  let newGeometry = new THREE.BoxBufferGeometry();
  let position = geometry.attributes.position;
  newGeometry.attributes.position = independent === false ? position : position.clone();

  let segmentsX = geometry.parameters.widthSegments || 1;
  let segmentsY = geometry.parameters.heightSegments || 1;
  let segmentsZ = geometry.parameters.depthSegments || 1;

  let startIndex = 0;
  let indexSide1 = indexSide(segmentsZ, segmentsY, startIndex);
  startIndex += (segmentsZ + 1) * (segmentsY + 1);
  let indexSide2 = indexSide(segmentsZ, segmentsY, startIndex);
  startIndex += (segmentsZ + 1) * (segmentsY + 1);
  let indexSide3 = indexSide(segmentsX, segmentsZ, startIndex);
  startIndex += (segmentsX + 1) * (segmentsZ + 1);
  let indexSide4 = indexSide(segmentsX, segmentsZ, startIndex);
  startIndex += (segmentsX + 1) * (segmentsZ + 1);
  let indexSide5 = indexSide(segmentsX, segmentsY, startIndex);
  startIndex += (segmentsX + 1) * (segmentsY + 1);
  let indexSide6 = indexSide(segmentsX, segmentsY, startIndex);

  let fullIndices = [];
  fullIndices = fullIndices.concat(indexSide1);
  fullIndices = fullIndices.concat(indexSide2);
  fullIndices = fullIndices.concat(indexSide3);
  fullIndices = fullIndices.concat(indexSide4);
  fullIndices = fullIndices.concat(indexSide5);
  fullIndices = fullIndices.concat(indexSide6);

  newGeometry.setIndex(fullIndices);

  function indexSide(x, y, shift) {
    let indices = [];
    for (let i = 0; i < y + 1; i++) {
      let index11 = 0;
      let index12 =...