JSFiddle - React, Tailwind, and code Playground
by mqdevWG
CSS
body{
overflow: hidden;
margin: 0;
}
JavaScript
console.clear();
import * as THREE from "https://cdn.jsdelivr.net/npm/three@0.127.0/build/three.module.js";
import {
OrbitControls
} from "https://cdn.jsdelivr.net/npm/three@0.127.0/examples/jsm/controls/OrbitControls.js";
let scene = new THREE.Scene();
let camera = new THREE.PerspectiveCamera(60, innerWidth / innerHeight, 1, 1000);
camera.position.set(0, 0, 20);
let renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setSize(innerWidth, innerHeight);
renderer.setClearColor(0x255255255);
document.body.appendChild(renderer.domElement);
let controls = new OrbitControls(camera, renderer.domElement);
let gXY = new THREE.PlaneGeometry(1, 1, 6, 3);
ToQuads(gXY);
let mXY = new THREE.LineBasicMaterial({color: "white"});
let grXY = new THREE.LineSegments(gXY, mXY);
grXY.scale.set(10, 10, 1);
grXY.position.set(0, 0, -2);
scene.add(grXY);
let gXZ = new THREE.PlaneGeometry(1, 1, 6, 10);
ToQuads(gXZ);
let mXZ = new THREE.LineBasicMaterial({color: "white"});
let grXZ = new THREE.LineSegments(gXZ, mXZ);
grXZ.scale.set(10, 4, 1);
grXZ.rotation.x = Math.PI * -0.5;
grXZ.position.set(0, -5, 0);
scene.add(grXZ);
let gYZ = new THREE.PlaneGeometry(1, 1, 3, 10);
ToQuads(gYZ);
let mYZ = new THREE.LineBasicMaterial({color: "white"});
let grYZ = new THREE.LineSegments(gYZ, mYZ);
grYZ.scale.set(10, 4, 1);
grYZ.rotation.x = Math.PI * -0.5;
grYZ.rotation.y = Math.PI / 2;
grYZ.position.set(-5, 0, 0);
scene.add(grYZ);
renderer.setAnimationLoop(_ => {
renderer.render(scene, camera);
})
function ToQuads(g) {
let p = g.parameters;
let segmentsX = (g.type == "TorusBufferGeometry" ? p.tubularSegments : p.radialSegments) || p.widthSegments || p.thetaSegments || (p.points.length - 1) || 1;
let segmentsY = (g.type == "TorusBufferGeometry" ? p.radialSegments : p.tubularSegments) || p.heightSegments || p.phiSegments || p.segments || 1;
let indices = [];
for (let i = 0; i < segmentsY + 1; i++) {
let index11 = 0;
let index12 = 0;
for (let j = 0; j <...