three.js dev template - module

CSS

body {
	margin: 0;
	background-color: #000;
	color: #fff;
	font-family: Monospace;
	font-size: 13px;
	line-height: 24px;
	overscroll-behavior: none;
}

a {
	color: #ff0;
	text-decoration: none;
}

a:hover {
	text-decoration: underline;
}

button {
	cursor: pointer;
	text-transform: uppercase;
}

canvas {
	display: block;
}

#info {
	position: absolute;
	top: 0px;
	width: 100%;
	padding: 10px;
	box-sizing: border-box;
	text-align: center;
	-moz-user-select: none;
	-webkit-user-select: none;
	-ms-user-select: none;
	user-select: none;
	pointer-events: none;
	z-index: 1; /* TODO Solve this in HTML */
}

a, button, input, select {
	pointer-events: auto;
}

JavaScript

import * as THREE from 'https://unpkg.com/three@0.115.0/build/three.module.js';
import { OrbitControls } from 'https://unpkg.com/three@0.115.0/examples/jsm/controls/OrbitControls.js';
import { FBXLoader } from 'https://unpkg.com/three@0.115.0/examples/jsm/loaders/FBXLoader.js';

var scene, camera, controls, raycaster, mouse, renderer, materials;

init();
animate();

function init() {

	scene = new THREE.Scene();

	camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 2000);
	camera.position.z = 10;

	var skyColor = 0xB1E1FF;  // light blue
	var groundColor = 0xB97A20;  // brownish orange
	var intensity = 0.4;
	var light = new THREE.HemisphereLight(skyColor, groundColor, intensity);
	scene.add(light);

	var color = 0xFFFFFF;
	var intensity = 0.8;
	var light = new THREE.DirectionalLight(color, intensity);
	light.position.set(5, 10, 2);
	scene.add(light);
	scene.add(light.target);

	renderer = new THREE.WebGLRenderer( { antialias: true } );
	renderer.setSize(window.innerWidth, window.innerHeight);
	document.body.appendChild(renderer.domElement);

	controls = new OrbitControls(camera, renderer.domElement);
	raycaster = new THREE.Raycaster();
	mouse = new THREE.Vector2();

	var fbxLoader = new FBXLoader();
	fbxLoader.load('https://threejs.org/examples/models/fbx/stanford-bunny.fbx', function (object) {
		object.scale.multiplyScalar( 0.0001 );
		scene.add(object);
	});

	window.addEventListener('click', onClick, false);
	window.addEventListener('resize', onWindowResize, false);
}

function onWindowResize() {
	camera.aspect = window.innerWidth / window.innerHeight;
	camera.updateProjectionMatrix();
	renderer.setSize(window.innerWidth, window.innerHeight);
}

function onClick() {
	event.preventDefault();

	mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
	mouse.y = - (event.clientY / window.innerHeight) * 2 + 1;

	raycaster.setFromCamera(mouse, camera);

	var intersects = raycaster.intersectObjects(scene.children, true);

	if...