three.js dev template
by Kearnan Kelly
HTML
<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/examples/js/controls/OrbitControls.js"></script>
CSS
body {
background-color: #000;
margin: 0px;
overflow: hidden;
}
JavaScript
// Simple three.js example
var meshStandard, meshCustom, renderer, scene, camera, controls;
init();
animate();
function init() {
// renderer
renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
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, 40);
// controls
//controls = THREE.OrbitControls( camera );
// light
var light = new THREE.DirectionalLight( 0xffffff, 1 );
light.position.set( 20,20, 0 );
scene.add( light )
// geometry
var geometry = new THREE.SphereGeometry(5, 64, 16);
// material
var material = new THREE.MeshStandardMaterial( {
color: 0x00ffff,
roughness: 0,
metalness: 1
} );
// mesh
meshStandard = new THREE.Mesh( geometry, material );
meshStandard.position.x = -10;
scene.add( meshStandard );
var genCubeUrls = function (prefix, postfix) {
return [
prefix + 'px' + postfix, prefix + 'nx' + postfix,
prefix + 'py' + postfix, prefix + 'ny' + postfix,
prefix + 'pz' + postfix, prefix + 'nz' + postfix
];
};
var jpgUrls = genCubeUrls('https://rawgit.com/mrdoob/three.js/dev/examples/textures/cube/skybox/', '.jpg');
var loader = new THREE.CubeTextureLoader();
loader.load(jpgUrls,function(tex){
//scene.background = tex;
var vertexShader = [
"varying vec3 vWorldPosition;",
"#include <common>",
"void main() {",
"vWorldPosition = transformDirection( position, modelMatrix );",
"#include <begin_vertex>",
//"#include <project_vertex>",
"vec4 mvPosition = vec4( transformed, 1.0 );",
"gl_Position =projectionMatrix * mvPosition;",
"gl_Position.z = gl_Position.w;", // set z to camera.far
"}"
].join("\n");
var...