three.js dev template - module

by adilrabbani

HTML

<script type="importmap">
	{
		"imports": {
			"three": "https://unpkg.com/three/build/three.module.js",
      "three/addons/": "https://unpkg.com/three/examples/jsm/",
      "three/addons": "https://unpkg.com/three/examples/jsm/utils/"
		}
	}
</script>

CSS

body {
	margin: 0px;
}

JavaScript

import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
import { GeometryUtils } from 'three/addons/utils/' 

let mesh, renderer, scene, camera, controls;

init();

function init() {

    // renderer
    renderer = new THREE.WebGLRenderer();
    renderer.setSize( window.innerWidth, window.innerHeight );
    renderer.setPixelRatio( window.devicePixelRatio );
    renderer.setAnimationLoop( animate );
    document.body.appendChild( renderer.domElement );

    // scene
    scene = new THREE.Scene();
    
    // camera
    camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 10000 );
    camera.position.set( - 40, 0, 60 );

    // controls
    controls = new OrbitControls( camera, renderer.domElement );
    
    // ambient
    scene.add( new THREE.AmbientLight( 0x222222 ) );
    
    // light
    const light = new THREE.DirectionalLight( 0xffffff, 1 );
    light.position.set( 20,20, 0 );
    scene.add( light );
    
   const positions = [];
				const colors = [];

				const points = GeometryUtils.hilbert3D( new THREE.Vector3( 0, 0, 0 ), 20.0, 1, 0, 1, 2, 3, 4, 5, 6, 7 );

				const spline = new THREE.CatmullRomCurve3( points );
				const divisions = Math.round( 12 * points.length );
				const point = new THREE.Vector3();
				const color = new THREE.Color();

				for ( let i = 0, l = divisions; i < l; i ++ ) {

					const t = i / l;

					spline.getPoint( t, point );
					positions.push( point.x, point.y, point.z );

					color.setHSL( t, 1.0, 0.5, THREE.SRGBColorSpace );
					colors.push( color.r, color.g, color.b );

				}


				// Line2 ( LineGeometry, LineMaterial )

				const geometry = new LineGeometry();
				geometry.setPositions( positions );
				geometry.setColors( colors );

				matLine = new LineMaterial( {

					color: 0xffffff,
					linewidth: 5, // in world units with size attenuation, pixels otherwise
					vertexColors: true,

					dashed: false,
					alphaToCoverage:...