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 dummy = new THREE.Object3D();
// instanced mesh 1
var mesh1 = new THREE.InstancedMesh( geometry, new THREE.MeshBasicMaterial(), 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, new THREE.MeshBasicMaterial(), 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 );
}