three.js dev template - module

CSS

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

JavaScript

// Simple three.js example

import * as THREE from "https://threejs.org/build/three.module.js";
import { OrbitControls } from "https://threejs.org/examples/jsm/controls/OrbitControls.js";

var renderer, scene, camera, controls;

init();
animate();

function init() {

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

    scene = new THREE.Scene();
    
    camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 0.1, 100 );
    camera.position.set( 0, 0, 10 );

    controls = new OrbitControls( camera, renderer.domElement );
    
    var geometry = new THREE.BoxBufferGeometry();
    var material = new THREE.MeshBasicMaterial();
    
		var dummy = new THREE.Object3D();
		
		// instanced mesh 1
		
    var mesh1 = new THREE.InstancedMesh( geometry, material, 2 );
    scene.add( mesh1 );
		
		dummy.position.set( 2, 0, 0 );
		dummy.updateMatrix();
		mesh1.setMatrixAt( 0, dummy.matrix );
		
		dummy.position.set( 2, 2, 0 );
		dummy.updateMatrix();
		mesh1.setMatrixAt( 1, dummy.matrix );
		
			// instanced mesh 2
		
    var mesh2 = new THREE.InstancedMesh( geometry, material, 3 );
    scene.add( mesh2 );
		
		dummy.position.set( - 2, 0, 0 );
		dummy.updateMatrix();
		mesh2.setMatrixAt( 0, dummy.matrix );
		
		dummy.position.set( - 2, 2, 0 );
		dummy.updateMatrix();
		mesh2.setMatrixAt( 1, dummy.matrix );
		
		dummy.position.set( - 2, 4, 0 );
		dummy.updateMatrix();
		mesh2.setMatrixAt( 2, dummy.matrix );
		
		//
		
		//scene.add( new THREE.AxesHelper() );
    
}

function animate() {

    requestAnimationFrame( animate );
    
    renderer.render( scene, camera );

}