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";
var renderer, scene, camera, controls;
init();
animate();
function init() {
// renderer
renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.setPixelRatio( window.devicePixelRatio );
document.body.appendChild( renderer.domElement );
// scene
scene = new THREE.Scene();
// camera
camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 10000 );
camera.position.set( 0, 0, 5 );
var texture = new THREE.TextureLoader().load( 'https://threejs.org/examples/textures/uv_grid_opengl.jpg');
texture.wrapS = texture.wrapT = THREE.RepeatWrapping; // <=========
texture.offset.set( 0.5, 0 ); // <=========
texture.repeat.set( 0.25, 1 ); // <=========
var nring1=32; // <=========
var nring2=8; // <=========
var geometry = new THREE.RingGeometry( 0.5, 2, nring1, nring2); // <=========
for(var yi=0; yi<nring2; yi++)
{
var u0=yi/nring2;
var u1=(yi+1)/nring2;
for(var xi=0; xi<nring1; xi++)
{
var fi=2*(xi+nring1*yi);
var v0=xi/nring1;
var v1=(xi+1)/nring1;
geometry.faceVertexUvs[0][fi][0].x=u0; geometry.faceVertexUvs[0][fi][0].y=v0;
geometry.faceVertexUvs[0][fi][1].x=u1; geometry.faceVertexUvs[0][fi][1].y=v0;
geometry.faceVertexUvs[0][fi][2].x=u0; geometry.faceVertexUvs[0][fi][2].y=v1;
fi++;
geometry.faceVertexUvs[0][fi][0].x=u1; geometry.faceVertexUvs[0][fi][0].y=v0;
geometry.faceVertexUvs[0][fi][1].x=u1; geometry.faceVertexUvs[0][fi][1].y=v1;
geometry.faceVertexUvs[0][fi][2].x=u0; geometry.faceVertexUvs[0][fi][2].y=v1;
}
}
var material = new THREE.MeshBasicMaterial( { map: texture } );
// mesh
var mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );
}
function animate() {
requestAnimationFrame( animate );
renderer.render( scene,...