three.js ~ example ~ Mr.doob

2012-01-05 ~

HTML

<script src="https://cdn.skypack.dev/three@137"></script>

JavaScript

import * as THREE from 'https://cdn.skypack.dev/three@0.137.5'

var camera, scene, renderer, geometry, material, mesh;

init();
animate();

function init() {

    scene = new THREE.Scene();

    camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 1000);
    camera.position.set(15, 9, 15);
    scene.add(camera);

    geometry = new THREE.DodecahedronGeometry(1, 0);
    material = new THREE.MeshNormalMaterial();
    
    const dummy = new THREE.Object3D()
    const inst = new THREE.InstancedMesh(geometry, material, 1000)
    
    for (let i = 0; i < 1000; i++) {
    	dummy.position.set(-100 + i, 0, -100 + i)
	    dummy.updateMatrixWorld(true)
      
      inst.setMatrixAt(i, dummy.matrixWorld)
    }
    
    inst.instanceMatrix.needsUpdate = true
 
 		scene.add(inst)

    mesh = new THREE.Mesh(geometry, material);
    scene.add(mesh);

    renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    renderer.shadowMap.enabled = true

    document.body.appendChild(renderer.domElement);

}

function animate() {

    requestAnimationFrame(animate);
    render();

}

function render() {

    renderer.render(scene, camera);

}

(function(){var script=document.createElement('script');script.onload=function(){var stats=new Stats();document.body.appendChild(stats.dom);requestAnimationFrame(function loop(){stats.update();requestAnimationFrame(loop)});};script.src='//mrdoob.github.io/stats.js/build/stats.min.js';document.head.appendChild(script);})() //