three.js dev template - module
HTML
<!-- Import maps polyfill -->
<!-- Remove this when import maps will be widely supported -->
<script async src="https://unpkg.com/es-module-shims@1.3.6/dist/es-module-shims.js"></script>
<script type="importmap">
{
"imports": {
"three": "https://unpkg.com/three@0.157/build/three.module.js",
"three/addons/": "https://unpkg.com/three@0.157/examples/jsm/"
}
}
</script>
<canvas id="canvas"></canvas>
CSS
body {
margin: 0px;
}
JavaScript
import * as THREE from 'three'
import {OrbitControls} from 'three/addons/controls/OrbitControls.js'
const canvas = document.getElementById('canvas')
var renderer = new THREE.WebGLRenderer({
canvas,
antialias: true
});
renderer.setClearColor(0x4581b5);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, 0.1, 3000);
camera.position.set(0, 0, 50);
scene.add(camera);
var light = new THREE.AmbientLight('white', 1.5);
scene.add(light);
var light2 = new THREE.PointLight('white', 2500);
camera.add(light2);
var geometry = new THREE.PlaneGeometry(100, 100);
var material = new THREE.MeshStandardMaterial({
map: new THREE.TextureLoader().load("https://docs.lume.io/textures/stone-brick-wall/diff_2k.jpg"),
bumpMap: new THREE.TextureLoader().load("https://docs.lume.io/textures/stone-brick-wall/disp_2k.png"),
roughness: 0.1,
metalness: 0.2,
bumpScale: 0.1
});
material.map.colorSpace = THREE.SRGBColorSpace;
var mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
const controls = new OrbitControls(camera, canvas)
requestAnimationFrame(render);
function render() {
renderer.render(scene, camera);
requestAnimationFrame(render);
}
window.addEventListener('resize', onResize, false);
function onResize() {
//changes the size of the canavs and updates it
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}