diff --git a/threejs/tests/webgl/webgl_animation_skinning_morph.ts b/threejs/tests/webgl/webgl_animation_skinning_morph.ts index f38376efb..7c65905ae 100644 --- a/threejs/tests/webgl/webgl_animation_skinning_morph.ts +++ b/threejs/tests/webgl/webgl_animation_skinning_morph.ts @@ -11,13 +11,15 @@ var SCREEN_HEIGHT = window.innerHeight; var FLOOR = -250; - var container, stats; + var container,stats; var camera, scene; var renderer; var mesh, helper; + var mixer; + var mouseX = 0, mouseY = 0; var windowHalfX = window.innerWidth / 2; @@ -25,51 +27,49 @@ var clock = new THREE.Clock(); - document.addEventListener('mousemove', onDocumentMouseMove, false); + document.addEventListener( 'mousemove', onDocumentMouseMove, false ); init(); animate(); function init() { - container = document.getElementById('container'); + container = document.getElementById( 'container' ); - camera = new THREE.PerspectiveCamera(30, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000); + camera = new THREE.PerspectiveCamera( 30, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 ); camera.position.z = 2200; scene = new THREE.Scene(); - scene.fog = new THREE.Fog(0xffffff, 2000, 10000); + scene.fog = new THREE.Fog( 0xffffff, 2000, 10000 ); - scene.add(camera); + scene.add( camera ); // GROUND - var geometry = new THREE.PlaneBufferGeometry(16000, 16000); - var material = new THREE.MeshPhongMaterial({ emissive: 0xbbbbbb }); + var geometry = new THREE.PlaneBufferGeometry( 16000, 16000 ); + var material = new THREE.MeshPhongMaterial( { emissive: 0x888888 } ); - var ground = new THREE.Mesh(geometry, material); - ground.position.set(0, FLOOR, 0); - ground.rotation.x = -Math.PI / 2; - scene.add(ground); + var ground = new THREE.Mesh( geometry, material ); + ground.position.set( 0, FLOOR, 0 ); + ground.rotation.x = -Math.PI/2; + scene.add( ground ); ground.receiveShadow = true; // LIGHTS - var ambient = new THREE.AmbientLight(0x222222); - scene.add(ambient); + scene.add( new THREE.HemisphereLight( 0x111111, 0x444444 ) ); - - var light = new THREE.DirectionalLight(0xebf3ff, 1.6); - light.position.set(0, 140, 500).multiplyScalar(1.1); - scene.add(light); + var light = new THREE.DirectionalLight( 0xebf3ff, 1.5 ); + light.position.set( 0, 140, 500 ).multiplyScalar( 1.1 ); + scene.add( light ); light.castShadow = true; light.shadowMapWidth = 1024; - light.shadowMapHeight = 2048; + light.shadowMapHeight = 1024; var d = 390; @@ -81,41 +81,35 @@ light.shadowCameraFar = 3500; //light.shadowCameraVisible = true; - // - - var light = new THREE.DirectionalLight(0x497f13, 1); - light.position.set(0, -1, 0); - scene.add(light); - // RENDERER - renderer = new THREE.WebGLRenderer({ antialias: true }); - renderer.setClearColor(scene.fog.color); - renderer.setPixelRatio(window.devicePixelRatio); - renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT); + renderer = new THREE.WebGLRenderer( { antialias: true } ); + renderer.setClearColor( scene.fog.color ); + renderer.setPixelRatio( window.devicePixelRatio ); + renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT ); renderer.domElement.style.position = "relative"; - container.appendChild(renderer.domElement); + container.appendChild( renderer.domElement ); renderer.gammaInput = true; renderer.gammaOutput = true; - renderer.shadowMapEnabled = true; + renderer.shadowMap.enabled = true; // STATS stats = new Stats(); - container.appendChild(stats.domElement); + container.appendChild( stats.domElement ); // var loader = new THREE.JSONLoader(); - loader.load("models/skinned/knight.js", function (geometry, materials) { + loader.load( "models/skinned/knight.js", function ( geometry, materials ) { - createScene(geometry, materials, 0, FLOOR, -300, 60) + createScene( geometry, materials, 0, FLOOR, -300, 60 ) - }); + } ); // GUI @@ -123,7 +117,7 @@ // - window.addEventListener('resize', onWindowResize, false); + window.addEventListener( 'resize', onWindowResize, false ); } @@ -135,30 +129,13 @@ camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); - renderer.setSize(window.innerWidth, window.innerHeight); + renderer.setSize( window.innerWidth, window.innerHeight ); } - function ensureLoop(animation) { + function createScene( geometry, materials, x, y, z, s ) { - for (var i = 0; i < animation.hierarchy.length; i++) { - - var bone = animation.hierarchy[i]; - - var first = bone.keys[0]; - var last = bone.keys[bone.keys.length - 1]; - - last.pos = first.pos; - last.rot = first.rot; - last.scl = first.scl; - - } - - } - - function createScene(geometry, materials, x, y, z, s) { - - ensureLoop(geometry.animation); + //ensureLoop( geometry.animation ); geometry.computeBoundingBox(); var bb = geometry.boundingBox; @@ -171,24 +148,15 @@ path + 'posz' + format, path + 'negz' + format ]; + for ( var i = 0; i < materials.length; i ++ ) { - //var envMap = THREE.ImageUtils.loadTextureCube( urls ); - - //var map = THREE.ImageUtils.loadTexture( "textures/UV_Grid_Sm.jpg" ); - - //var bumpMap = THREE.ImageUtils.generateDataTexture( 1, 1, new THREE.Color() ); - //var bumpMap = THREE.ImageUtils.loadTexture( "textures/water.jpg" ); - - for (var i = 0; i < materials.length; i++) { - - var m = materials[i]; + var m = materials[ i ]; m.skinning = true; m.morphTargets = true; - m.specular.setHSL(0, 0, 0.1); + m.specular.setHSL( 0, 0, 0.1 ); - m.color.setHSL(0.6, 0, 0.6); - m.ambient.copy(m.color); + m.color.setHSL( 0.6, 0, 0.6 ); //m.map = map; //m.envMap = envMap; @@ -198,47 +166,49 @@ //m.combine = THREE.MixOperation; //m.reflectivity = 0.75; - m.wrapAround = true; - } - mesh = new THREE.SkinnedMesh(geometry, new THREE.MeshFaceMaterial(materials)); - mesh.position.set(x, y - bb.min.y * s, z); - mesh.scale.set(s, s, s); - scene.add(mesh); + mesh = new THREE.SkinnedMesh( geometry, new THREE.MeshFaceMaterial( materials ) ); + mesh.position.set( x, y - bb.min.y * s, z ); + mesh.scale.set( s, s, s ); + scene.add( mesh ); mesh.castShadow = true; mesh.receiveShadow = true; - helper = new THREE.SkeletonHelper(mesh); + helper = new THREE.SkeletonHelper( mesh ); helper.material.linewidth = 3; helper.visible = false; - scene.add(helper); + scene.add( helper ); - var animation = new THREE.Animation(mesh, geometry.animation); - animation.play(); + var clipMorpher = THREE.AnimationClip.CreateFromMorphTargetSequence( 'facialExpressions', mesh.geometry.morphTargets, 3 ); + var clipBones = geometry.animations[0]; + + mixer = new THREE.AnimationMixer( mesh ); + mixer.addAction( new THREE.AnimationAction( clipMorpher ) ); + mixer.addAction( new THREE.AnimationAction( clipBones ) ); } function initGUI() { var API = { - 'show model': true, - 'show skeleton': false + 'show model' : true, + 'show skeleton' : false }; var gui = new dat.GUI(); - gui.add(API, 'show model').onChange(function () { mesh.visible = API['show model']; }); + gui.add( API, 'show model' ).onChange( function() { mesh.visible = API[ 'show model' ]; } ); - gui.add(API, 'show skeleton').onChange(function () { helper.visible = API['show skeleton']; }); + gui.add( API, 'show skeleton' ).onChange( function() { helper.visible = API[ 'show skeleton' ]; } ); } - function onDocumentMouseMove(event) { + function onDocumentMouseMove( event ) { - mouseX = (event.clientX - windowHalfX); - mouseY = (event.clientY - windowHalfY); + mouseX = ( event.clientX - windowHalfX ); + mouseY = ( event.clientY - windowHalfY ); } @@ -246,7 +216,7 @@ function animate() { - requestAnimationFrame(animate); + requestAnimationFrame( animate ); render(); stats.update(); @@ -257,38 +227,17 @@ var delta = 0.75 * clock.getDelta(); - camera.position.x += (mouseX - camera.position.x) * .05; - camera.position.y = THREE.Math.clamp(camera.position.y + (- mouseY - camera.position.y) * .05, 0, 1000); + camera.position.x += ( mouseX - camera.position.x ) * .05; + camera.position.y = THREE.Math.clamp( camera.position.y + ( - mouseY - camera.position.y ) * .05, 0, 1000 ); - camera.lookAt(scene.position); - - // update skinning - - THREE.AnimationHandler.update(delta); - - if (helper !== undefined) helper.update(); - - // update morphs - - if (mesh) { - - var time = Date.now() * 0.001; - - // mouth - - mesh.morphTargetInfluences[1] = (1 + Math.sin(4 * time)) / 2; - - // frown ? - - mesh.morphTargetInfluences[2] = (1 + Math.sin(2 * time)) / 2; - - // eyes - - mesh.morphTargetInfluences[3] = (1 + Math.cos(4 * time)) / 2; + camera.lookAt( scene.position ); + if( mixer ) { + mixer.update( delta ); + helper.update(); } - renderer.render(scene, camera); + renderer.render( scene, camera ); } } \ No newline at end of file diff --git a/threejs/tests/webgl/webgl_buffergeometry.ts b/threejs/tests/webgl/webgl_buffergeometry.ts index cedd78d9c..c01b0dfe6 100644 --- a/threejs/tests/webgl/webgl_buffergeometry.ts +++ b/threejs/tests/webgl/webgl_buffergeometry.ts @@ -8,7 +8,7 @@ // ------- - if (!Detector.webgl) Detector.addGetWebGLMessage(); + if ( ! Detector.webgl ) Detector.addGetWebGLMessage(); var container, stats; @@ -21,27 +21,27 @@ function init() { - container = document.getElementById('container'); + container = document.getElementById( 'container' ); // - camera = new THREE.PerspectiveCamera(27, window.innerWidth / window.innerHeight, 1, 3500); + camera = new THREE.PerspectiveCamera( 27, window.innerWidth / window.innerHeight, 1, 3500 ); camera.position.z = 2750; scene = new THREE.Scene(); - scene.fog = new THREE.Fog(0x050505, 2000, 3500); + scene.fog = new THREE.Fog( 0x050505, 2000, 3500 ); // - scene.add(new THREE.AmbientLight(0x444444)); + scene.add( new THREE.AmbientLight( 0x444444 ) ); - var light1 = new THREE.DirectionalLight(0xffffff, 0.5); - light1.position.set(1, 1, 1); - scene.add(light1); + var light1 = new THREE.DirectionalLight( 0xffffff, 0.5 ); + light1.position.set( 1, 1, 1 ); + scene.add( light1 ); - var light2 = new THREE.DirectionalLight(0xffffff, 1.5); - light2.position.set(0, -1, 0); - scene.add(light2); + var light2 = new THREE.DirectionalLight( 0xffffff, 1.5 ); + light2.position.set( 0, -1, 0 ); + scene.add( light2 ); // @@ -49,29 +49,14 @@ var geometry = new THREE.BufferGeometry(); - // break geometry into - // chunks of 21,845 triangles (3 unique vertices per triangle) - // for indices to fit into 16 bit integer number - // floor(2^16 / 3) = 21845 - - var chunkSize = 21845; - - var indices = new Uint16Array(triangles * 3); - - for (var i = 0; i < indices.length; i++) { - - indices[i] = i % (3 * chunkSize); - - } - - var positions = new Float32Array(triangles * 3 * 3); - var normals = new Float32Array(triangles * 3 * 3); - var colors = new Float32Array(triangles * 3 * 3); + var positions = new Float32Array( triangles * 3 * 3 ); + var normals = new Float32Array( triangles * 3 * 3 ); + var colors = new Float32Array( triangles * 3 * 3 ); var color = new THREE.Color(); - var n = 800, n2 = n / 2; // triangles spread in the cube - var d = 12, d2 = d / 2; // individual triangle size + var n = 800, n2 = n/2; // triangles spread in the cube + var d = 12, d2 = d/2; // individual triangle size var pA = new THREE.Vector3(); var pB = new THREE.Vector3(); @@ -80,7 +65,7 @@ var cb = new THREE.Vector3(); var ab = new THREE.Vector3(); - for (var i = 0; i < positions.length; i += 9) { + for ( var i = 0; i < positions.length; i += 9 ) { // positions @@ -100,27 +85,27 @@ var cy = y + Math.random() * d - d2; var cz = z + Math.random() * d - d2; - positions[i] = ax; - positions[i + 1] = ay; - positions[i + 2] = az; + positions[ i ] = ax; + positions[ i + 1 ] = ay; + positions[ i + 2 ] = az; - positions[i + 3] = bx; - positions[i + 4] = by; - positions[i + 5] = bz; + positions[ i + 3 ] = bx; + positions[ i + 4 ] = by; + positions[ i + 5 ] = bz; - positions[i + 6] = cx; - positions[i + 7] = cy; - positions[i + 8] = cz; + positions[ i + 6 ] = cx; + positions[ i + 7 ] = cy; + positions[ i + 8 ] = cz; // flat face normals - pA.set(ax, ay, az); - pB.set(bx, by, bz); - pC.set(cx, cy, cz); + pA.set( ax, ay, az ); + pB.set( bx, by, bz ); + pC.set( cx, cy, cz ); - cb.subVectors(pC, pB); - ab.subVectors(pA, pB); - cb.cross(ab); + cb.subVectors( pC, pB ); + ab.subVectors( pA, pB ); + cb.cross( ab ); cb.normalize(); @@ -128,91 +113,76 @@ var ny = cb.y; var nz = cb.z; - normals[i] = nx; - normals[i + 1] = ny; - normals[i + 2] = nz; + normals[ i ] = nx; + normals[ i + 1 ] = ny; + normals[ i + 2 ] = nz; - normals[i + 3] = nx; - normals[i + 4] = ny; - normals[i + 5] = nz; + normals[ i + 3 ] = nx; + normals[ i + 4 ] = ny; + normals[ i + 5 ] = nz; - normals[i + 6] = nx; - normals[i + 7] = ny; - normals[i + 8] = nz; + normals[ i + 6 ] = nx; + normals[ i + 7 ] = ny; + normals[ i + 8 ] = nz; // colors - var vx = (x / n) + 0.5; - var vy = (y / n) + 0.5; - var vz = (z / n) + 0.5; + var vx = ( x / n ) + 0.5; + var vy = ( y / n ) + 0.5; + var vz = ( z / n ) + 0.5; - color.setRGB(vx, vy, vz); + color.setRGB( vx, vy, vz ); - colors[i] = color.r; - colors[i + 1] = color.g; - colors[i + 2] = color.b; + colors[ i ] = color.r; + colors[ i + 1 ] = color.g; + colors[ i + 2 ] = color.b; - colors[i + 3] = color.r; - colors[i + 4] = color.g; - colors[i + 5] = color.b; + colors[ i + 3 ] = color.r; + colors[ i + 4 ] = color.g; + colors[ i + 5 ] = color.b; - colors[i + 6] = color.r; - colors[i + 7] = color.g; - colors[i + 8] = color.b; + colors[ i + 6 ] = color.r; + colors[ i + 7 ] = color.g; + colors[ i + 8 ] = color.b; } - geometry.addAttribute('index', new THREE.BufferAttribute(indices, 1)); - geometry.addAttribute('position', new THREE.BufferAttribute(positions, 3)); - geometry.addAttribute('normal', new THREE.BufferAttribute(normals, 3)); - geometry.addAttribute('color', new THREE.BufferAttribute(colors, 3)); - - var offsets = triangles / chunkSize; - - for (var i = 0; i < offsets; i++) { - - var offset = { - start: i * chunkSize * 3, - index: i * chunkSize * 3, - count: Math.min(triangles - (i * chunkSize), chunkSize) * 3 - }; - - geometry.offsets.push(offset); - - } + geometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) ); + geometry.addAttribute( 'normal', new THREE.BufferAttribute( normals, 3 ) ); + geometry.addAttribute( 'color', new THREE.BufferAttribute( colors, 3 ) ); geometry.computeBoundingSphere(); - var material = new THREE.MeshPhongMaterial({ + var material = new THREE.MeshPhongMaterial( { color: 0xaaaaaa, specular: 0xffffff, shininess: 250, side: THREE.DoubleSide, vertexColors: THREE.VertexColors - }); + } ); - mesh = new THREE.Mesh(geometry, material); - scene.add(mesh); + mesh = new THREE.Mesh( geometry, material ); + scene.add( mesh ); // - renderer = new THREE.WebGLRenderer({ antialias: false }); - renderer.setClearColor(scene.fog.color); - renderer.setPixelRatio(window.devicePixelRatio); - renderer.setSize(window.innerWidth, window.innerHeight); + renderer = new THREE.WebGLRenderer( { antialias: false } ); + renderer.setClearColor( scene.fog.color ); + renderer.setPixelRatio( window.devicePixelRatio ); + renderer.setSize( window.innerWidth, window.innerHeight ); renderer.gammaInput = true; renderer.gammaOutput = true; - container.appendChild(renderer.domElement); + container.appendChild( renderer.domElement ); // stats = new Stats(); stats.domElement.style.position = 'absolute'; stats.domElement.style.top = '0px'; - container.appendChild(stats.domElement); + container.appendChild( stats.domElement ); // - window.addEventListener('resize', onWindowResize, false); + window.addEventListener( 'resize', onWindowResize, false ); } @@ -221,7 +191,7 @@ camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); - renderer.setSize(window.innerWidth, window.innerHeight); + renderer.setSize( window.innerWidth, window.innerHeight ); } @@ -229,7 +199,7 @@ function animate() { - requestAnimationFrame(animate); + requestAnimationFrame( animate ); render(); stats.update(); @@ -243,7 +213,7 @@ mesh.rotation.x = time * 0.25; mesh.rotation.y = time * 0.5; - renderer.render(scene, camera); + renderer.render( scene, camera ); } } \ No newline at end of file diff --git a/threejs/tests/webgl/webgl_camera.ts b/threejs/tests/webgl/webgl_camera.ts index 4ebb7f7bb..a10a4ad0d 100644 --- a/threejs/tests/webgl/webgl_camera.ts +++ b/threejs/tests/webgl/webgl_camera.ts @@ -18,27 +18,27 @@ function init() { - container = document.createElement('div'); - document.body.appendChild(container); + container = document.createElement( 'div' ); + document.body.appendChild( container ); scene = new THREE.Scene(); // - camera = new THREE.PerspectiveCamera(50, 0.5 * SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000); + camera = new THREE.PerspectiveCamera( 50, 0.5 * SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 ); camera.position.z = 2500; - cameraPerspective = new THREE.PerspectiveCamera(50, 0.5 * SCREEN_WIDTH / SCREEN_HEIGHT, 150, 1000); + cameraPerspective = new THREE.PerspectiveCamera( 50, 0.5 * SCREEN_WIDTH / SCREEN_HEIGHT, 150, 1000 ); - cameraPerspectiveHelper = new THREE.CameraHelper(cameraPerspective); - scene.add(cameraPerspectiveHelper); + cameraPerspectiveHelper = new THREE.CameraHelper( cameraPerspective ); + scene.add( cameraPerspectiveHelper ); // - cameraOrtho = new THREE.OrthographicCamera(0.5 * SCREEN_WIDTH / - 2, 0.5 * SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, SCREEN_HEIGHT / - 2, 150, 1000); + cameraOrtho = new THREE.OrthographicCamera( 0.5 * SCREEN_WIDTH / - 2, 0.5 * SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, SCREEN_HEIGHT / - 2, 150, 1000 ); - cameraOrthoHelper = new THREE.CameraHelper(cameraOrtho); - scene.add(cameraOrthoHelper); + cameraOrthoHelper = new THREE.CameraHelper( cameraOrtho ); + scene.add( cameraOrthoHelper ); // @@ -51,72 +51,81 @@ cameraOrtho.rotation.y = Math.PI; cameraPerspective.rotation.y = Math.PI; - cameraRig = new THREE.Object3D(); + cameraRig = new THREE.Group(); - cameraRig.add(cameraPerspective); - cameraRig.add(cameraOrtho); + cameraRig.add( cameraPerspective ); + cameraRig.add( cameraOrtho ); - scene.add(cameraRig); + scene.add( cameraRig ); // - mesh = new THREE.Mesh(new THREE.SphereGeometry(100, 16, 8), new THREE.MeshBasicMaterial({ color: 0xffffff, wireframe: true })); - scene.add(mesh); + mesh = new THREE.Mesh( + new THREE.SphereBufferGeometry( 100, 16, 8 ), + new THREE.MeshBasicMaterial( { color: 0xffffff, wireframe: true } ) + ); + scene.add( mesh ); - var mesh2 = new THREE.Mesh(new THREE.SphereGeometry(50, 16, 8), new THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: true })); + var mesh2 = new THREE.Mesh( + new THREE.SphereBufferGeometry( 50, 16, 8 ), + new THREE.MeshBasicMaterial( { color: 0x00ff00, wireframe: true } ) + ); mesh2.position.y = 150; - mesh.add(mesh2); + mesh.add( mesh2 ); - var mesh3 = new THREE.Mesh(new THREE.SphereGeometry(5, 16, 8), new THREE.MeshBasicMaterial({ color: 0x0000ff, wireframe: true })); + var mesh3 = new THREE.Mesh( + new THREE.SphereBufferGeometry( 5, 16, 8 ), + new THREE.MeshBasicMaterial( { color: 0x0000ff, wireframe: true } ) + ); mesh3.position.z = 150; - cameraRig.add(mesh3); + cameraRig.add( mesh3 ); // var geometry = new THREE.Geometry(); - for (var i = 0; i < 10000; i++) { + for ( var i = 0; i < 10000; i ++ ) { var vertex = new THREE.Vector3(); - vertex.x = THREE.Math.randFloatSpread(2000); - vertex.y = THREE.Math.randFloatSpread(2000); - vertex.z = THREE.Math.randFloatSpread(2000); + vertex.x = THREE.Math.randFloatSpread( 2000 ); + vertex.y = THREE.Math.randFloatSpread( 2000 ); + vertex.z = THREE.Math.randFloatSpread( 2000 ); - geometry.vertices.push(vertex); + geometry.vertices.push( vertex ); } - var particles = new THREE.PointCloud(geometry, new THREE.PointCloudMaterial({ color: 0x888888 })); - scene.add(particles); + var particles = new THREE.Points( geometry, new THREE.PointsMaterial( { color: 0x888888 } ) ); + scene.add( particles ); // - renderer = new THREE.WebGLRenderer({ antialias: true }); - renderer.setPixelRatio(window.devicePixelRatio); - renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT); + renderer = new THREE.WebGLRenderer( { antialias: true } ); + renderer.setPixelRatio( window.devicePixelRatio ); + renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT ); renderer.domElement.style.position = "relative"; - container.appendChild(renderer.domElement); + container.appendChild( renderer.domElement ); renderer.autoClear = false; // stats = new Stats(); - container.appendChild(stats.domElement); + container.appendChild( stats.domElement ); // - window.addEventListener('resize', onWindowResize, false); - document.addEventListener('keydown', onKeyDown, false); + window.addEventListener( 'resize', onWindowResize, false ); + document.addEventListener( 'keydown', onKeyDown, false ); } // - function onKeyDown(event) { + function onKeyDown ( event ) { - switch (event.keyCode) { + switch( event.keyCode ) { case 79: /*O*/ @@ -134,16 +143,16 @@ } - }; + } // - function onWindowResize(event) { + function onWindowResize( event ) { SCREEN_WIDTH = window.innerWidth; SCREEN_HEIGHT = window.innerHeight; - renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT); + renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT ); camera.aspect = 0.5 * SCREEN_WIDTH / SCREEN_HEIGHT; camera.updateProjectionMatrix(); @@ -151,9 +160,9 @@ cameraPerspective.aspect = 0.5 * SCREEN_WIDTH / SCREEN_HEIGHT; cameraPerspective.updateProjectionMatrix(); - cameraOrtho.left = - 0.5 * SCREEN_WIDTH / 2; - cameraOrtho.right = 0.5 * SCREEN_WIDTH / 2; - cameraOrtho.top = SCREEN_HEIGHT / 2; + cameraOrtho.left = - 0.5 * SCREEN_WIDTH / 2; + cameraOrtho.right = 0.5 * SCREEN_WIDTH / 2; + cameraOrtho.top = SCREEN_HEIGHT / 2; cameraOrtho.bottom = - SCREEN_HEIGHT / 2; cameraOrtho.updateProjectionMatrix(); @@ -163,7 +172,7 @@ function animate() { - requestAnimationFrame(animate); + requestAnimationFrame( animate ); render(); stats.update(); @@ -175,16 +184,16 @@ var r = Date.now() * 0.0005; - mesh.position.x = 700 * Math.cos(r); - mesh.position.z = 700 * Math.sin(r); - mesh.position.y = 700 * Math.sin(r); + mesh.position.x = 700 * Math.cos( r ); + mesh.position.z = 700 * Math.sin( r ); + mesh.position.y = 700 * Math.sin( r ); - mesh.children[0].position.x = 70 * Math.cos(2 * r); - mesh.children[0].position.z = 70 * Math.sin(r); + mesh.children[ 0 ].position.x = 70 * Math.cos( 2 * r ); + mesh.children[ 0 ].position.z = 70 * Math.sin( r ); - if (activeCamera === cameraPerspective) { + if ( activeCamera === cameraPerspective ) { - cameraPerspective.fov = 35 + 30 * Math.sin(0.5 * r); + cameraPerspective.fov = 35 + 30 * Math.sin( 0.5 * r ); cameraPerspective.far = mesh.position.length(); cameraPerspective.updateProjectionMatrix(); @@ -205,19 +214,19 @@ } - cameraRig.lookAt(mesh.position); + cameraRig.lookAt( mesh.position ); renderer.clear(); activeHelper.visible = false; - renderer.setViewport(0, 0, SCREEN_WIDTH / 2, SCREEN_HEIGHT); - renderer.render(scene, activeCamera); + renderer.setViewport( 0, 0, SCREEN_WIDTH/2, SCREEN_HEIGHT ); + renderer.render( scene, activeCamera ); activeHelper.visible = true; - renderer.setViewport(SCREEN_WIDTH / 2, 0, SCREEN_WIDTH / 2, SCREEN_HEIGHT); - renderer.render(scene, camera); + renderer.setViewport( SCREEN_WIDTH/2, 0, SCREEN_WIDTH/2, SCREEN_HEIGHT ); + renderer.render( scene, camera ); } } \ No newline at end of file diff --git a/threejs/tests/webgl/webgl_interactive_raycasting_pointcloud.ts b/threejs/tests/webgl/webgl_interactive_raycasting_points.ts similarity index 76% rename from threejs/tests/webgl/webgl_interactive_raycasting_pointcloud.ts rename to threejs/tests/webgl/webgl_interactive_raycasting_points.ts index 980109f70..550d4b4b9 100644 --- a/threejs/tests/webgl/webgl_interactive_raycasting_pointcloud.ts +++ b/threejs/tests/webgl/webgl_interactive_raycasting_points.ts @@ -5,17 +5,17 @@ () => { // ------- variable definitions that does not exist in the original code. These are for typescript. - var material: THREE.SpriteMaterial; - var container: HTMLElement; - var pcBuffer: THREE.PointCloud; - var v: any; + var material:THREE.SpriteMaterial; + var container:HTMLElement; + var pcBuffer:THREE.Points; + var v:any; // ------- if (!Detector.webgl) Detector.addGetWebGLMessage(); var renderer, scene, camera, stats; var pointclouds; - var raycaster, intersects; + var raycaster; var mouse = new THREE.Vector2(); var intersection = null; var spheres = []; @@ -48,14 +48,14 @@ var u = i / width; var v = j / length; var x = u - 0.5; - var y = (Math.cos(u * Math.PI * 8) + Math.sin(v * Math.PI * 8)) / 20; + var y = ( Math.cos(u * Math.PI * 8) + Math.sin(v * Math.PI * 8) ) / 20; var z = v - 0.5; positions[3 * k] = x; positions[3 * k + 1] = y; positions[3 * k + 2] = z; - var intensity = (y + 0.1) * 5; + var intensity = ( y + 0.1 ) * 5; colors[3 * k] = color.r * intensity; colors[3 * k + 1] = color.g * intensity; colors[3 * k + 2] = color.b * intensity; @@ -78,8 +78,8 @@ var geometry = generatePointCloudGeometry(color, width, length); - var material = new THREE.PointCloudMaterial({ size: pointSize, vertexColors: THREE.VertexColors }); - var pointcloud = new THREE.PointCloud(geometry, material); + var material = new THREE.PointsMaterial({size: pointSize, vertexColors: THREE.VertexColors}); + var pointcloud = new THREE.Points(geometry, material); return pointcloud; @@ -104,10 +104,10 @@ } - geometry.addAttribute('index', new THREE.BufferAttribute(indices, 1)); + geometry.setIndex(new THREE.BufferAttribute(indices, 1)); - var material = new THREE.PointCloudMaterial({ size: pointSize, vertexColors: THREE.VertexColors }); - var pointcloud = new THREE.PointCloud(geometry, material); + var material = new THREE.PointsMaterial({size: pointSize, vertexColors: THREE.VertexColors}); + var pointcloud = new THREE.Points(geometry, material); return pointcloud; @@ -132,13 +132,11 @@ } - geometry.addAttribute('index', new THREE.BufferAttribute(indices, 1)); + geometry.setIndex(new THREE.BufferAttribute(indices, 1)); + geometry.addDrawCall(0, indices.length); - var offset = { start: 0, count: indices.length, index: 0 }; - geometry.offsets.push(offset); - - var material = new THREE.PointCloudMaterial({ size: pointSize, vertexColors: THREE.VertexColors }); - var pointcloud = new THREE.PointCloud(geometry, material); + var material = new THREE.PointsMaterial({size: pointSize, vertexColors: THREE.VertexColors}); + var pointcloud = new THREE.Points(geometry, material); return pointcloud; @@ -147,7 +145,6 @@ function generateRegularPointcloud(color, width, length) { var geometry = new THREE.Geometry(); - var numPoints = width * length; var colors = []; @@ -160,17 +157,17 @@ var u = i / width; var v = j / length; var x = u - 0.5; - var y = (Math.cos(u * Math.PI * 8) + Math.sin(v * Math.PI * 8)) / 20; + var y = ( Math.cos(u * Math.PI * 8) + Math.sin(v * Math.PI * 8) ) / 20; var z = v - 0.5; - var vec = new THREE.Vector3(x, y, z); + var v2 = new THREE.Vector3(x, y, z); - var intensity = (y + 0.1) * 7; + var intensity = ( y + 0.1 ) * 7; colors[3 * k] = color.r * intensity; colors[3 * k + 1] = color.g * intensity; colors[3 * k + 2] = color.b * intensity; - geometry.vertices.push(vec); - colors[k] = (color.clone().multiplyScalar(intensity)); + geometry.vertices.push(v2); + colors[k] = ( color.clone().multiplyScalar(intensity) ); k++; @@ -181,8 +178,8 @@ geometry.colors = colors; geometry.computeBoundingBox(); - var material = new THREE.PointCloudMaterial({ size: pointSize, vertexColors: THREE.VertexColors }); - var pointcloud = new THREE.PointCloud(geometry, material); + var material = new THREE.PointsMaterial({size: pointSize, vertexColors: THREE.VertexColors}); + var pointcloud = new THREE.Points(geometry, material); return pointcloud; @@ -190,7 +187,7 @@ function init() { - container = document.getElementById('container'); + var container = document.getElementById('container'); scene = new THREE.Scene(); @@ -202,7 +199,7 @@ // - pcBuffer = generatePointcloud(new THREE.Color(1, 0, 0), width, length); + var pcBuffer = generatePointcloud(new THREE.Color(1, 0, 0), width, length); pcBuffer.scale.set(10, 10, 10); pcBuffer.position.set(-5, 0, 5); scene.add(pcBuffer); @@ -227,7 +224,7 @@ // var sphereGeometry = new THREE.SphereGeometry(0.1, 32, 32); - var sphereMaterial = new THREE.MeshBasicMaterial({ color: 0xff0000, shading: THREE.FlatShading }); + var sphereMaterial = new THREE.MeshBasicMaterial({color: 0xff0000, shading: THREE.FlatShading}); for (var i = 0; i < 40; i++) { @@ -247,7 +244,7 @@ // raycaster = new THREE.Raycaster(); - raycaster.params.PointCloud.threshold = threshold; + raycaster.params.Points.threshold = threshold; // @@ -267,8 +264,8 @@ event.preventDefault(); - mouse.x = (event.clientX / window.innerWidth) * 2 - 1; - mouse.y = - (event.clientY / window.innerHeight) * 2 + 1; + mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1; + mouse.y = -( event.clientY / window.innerHeight ) * 2 + 1; } @@ -300,13 +297,13 @@ raycaster.setFromCamera(mouse, camera); var intersections = raycaster.intersectObjects(pointclouds); - intersection = (intersections.length) > 0 ? intersections[0] : null; + intersection = ( intersections.length ) > 0 ? intersections[0] : null; if (toggle > 0.02 && intersection !== null) { spheres[spheresIndex].position.copy(intersection.point); spheres[spheresIndex].scale.set(1, 1, 1); - spheresIndex = (spheresIndex + 1) % spheres.length; + spheresIndex = ( spheresIndex + 1 ) % spheres.length; toggle = 0; diff --git a/threejs/tests/webgl/webgl_lights_heimsphere.ts b/threejs/tests/webgl/webgl_lights_heimsphere.ts index a8cf0a7d1..fd2118e62 100644 --- a/threejs/tests/webgl/webgl_lights_heimsphere.ts +++ b/threejs/tests/webgl/webgl_lights_heimsphere.ts @@ -7,10 +7,11 @@ // ------- variable definitions that does not exist in the original code. These are for typescript. var morph: any; // ------- - if (!Detector.webgl) Detector.addGetWebGLMessage(); + + if ( ! Detector.webgl ) Detector.addGetWebGLMessage(); var camera, scene, renderer, dirLight, hemiLight; - var morphs = []; + var mixers = []; var stats; var clock = new THREE.Clock(); @@ -20,45 +21,45 @@ function init() { - var container = document.getElementById('container'); + var container = document.getElementById( 'container' ); - camera = new THREE.PerspectiveCamera(30, window.innerWidth / window.innerHeight, 1, 5000); - camera.position.set(0, 0, 250); + camera = new THREE.PerspectiveCamera( 30, window.innerWidth / window.innerHeight, 1, 5000 ); + camera.position.set( 0, 0, 250 ); scene = new THREE.Scene(); - scene.fog = new THREE.Fog(0xffffff, 1, 5000); - scene.fog.color.setHSL(0.6, 0, 1); + scene.fog = new THREE.Fog( 0xffffff, 1, 5000 ); + scene.fog.color.setHSL( 0.6, 0, 1 ); /* - controls = new THREE.TrackballControls( camera ); + controls = new THREE.TrackballControls( camera ); - controls.rotateSpeed = 1.0; - controls.zoomSpeed = 1.2; - controls.panSpeed = 0.8; + controls.rotateSpeed = 1.0; + controls.zoomSpeed = 1.2; + controls.panSpeed = 0.8; - controls.noZoom = false; - controls.noPan = false; + controls.noZoom = false; + controls.noPan = false; - controls.staticMoving = true; - controls.dynamicDampingFactor = 0.15; - */ + controls.staticMoving = true; + controls.dynamicDampingFactor = 0.15; + */ // LIGHTS - hemiLight = new THREE.HemisphereLight(0xffffff, 0xffffff, 0.6); - hemiLight.color.setHSL(0.6, 1, 0.6); - hemiLight.groundColor.setHSL(0.095, 1, 0.75); - hemiLight.position.set(0, 500, 0); - scene.add(hemiLight); + hemiLight = new THREE.HemisphereLight( 0xffffff, 0xffffff, 0.6 ); + hemiLight.color.setHSL( 0.6, 1, 0.6 ); + hemiLight.groundColor.setHSL( 0.095, 1, 0.75 ); + hemiLight.position.set( 0, 500, 0 ); + scene.add( hemiLight ); // - dirLight = new THREE.DirectionalLight(0xffffff, 1); - dirLight.color.setHSL(0.1, 1, 0.95); - dirLight.position.set(-1, 1.75, 1); - dirLight.position.multiplyScalar(50); - scene.add(dirLight); + dirLight = new THREE.DirectionalLight( 0xffffff, 1 ); + dirLight.color.setHSL( 0.1, 1, 0.95 ); + dirLight.position.set( -1, 1.75, 1 ); + dirLight.position.multiplyScalar( 50 ); + scene.add( dirLight ); dirLight.castShadow = true; @@ -74,108 +75,89 @@ dirLight.shadowCameraFar = 3500; dirLight.shadowBias = -0.0001; - dirLight.shadowDarkness = 0.35; //dirLight.shadowCameraVisible = true; // GROUND - var groundGeo = new THREE.PlaneBufferGeometry(10000, 10000); - var groundMat = new THREE.MeshPhongMaterial({ color: 0xffffff, specular: 0x050505 }); - groundMat.color.setHSL(0.095, 1, 0.75); + var groundGeo = new THREE.PlaneBufferGeometry( 10000, 10000 ); + var groundMat = new THREE.MeshPhongMaterial( { color: 0xffffff, specular: 0x050505 } ); + groundMat.color.setHSL( 0.095, 1, 0.75 ); - var ground = new THREE.Mesh(groundGeo, groundMat); - ground.rotation.x = -Math.PI / 2; + var ground = new THREE.Mesh( groundGeo, groundMat ); + ground.rotation.x = -Math.PI/2; ground.position.y = -33; - scene.add(ground); + scene.add( ground ); ground.receiveShadow = true; // SKYDOME - var vertexShader = document.getElementById('vertexShader').textContent; - var fragmentShader = document.getElementById('fragmentShader').textContent; + var vertexShader = document.getElementById( 'vertexShader' ).textContent; + var fragmentShader = document.getElementById( 'fragmentShader' ).textContent; var uniforms = { - topColor: { type: "c", value: new THREE.Color(0x0077ff) }, - bottomColor: { type: "c", value: new THREE.Color(0xffffff) }, - offset: { type: "f", value: 33 }, - exponent: { type: "f", value: 0.6 } - } - uniforms.topColor.value.copy(hemiLight.color); + topColor: { type: "c", value: new THREE.Color( 0x0077ff ) }, + bottomColor: { type: "c", value: new THREE.Color( 0xffffff ) }, + offset: { type: "f", value: 33 }, + exponent: { type: "f", value: 0.6 } + }; + uniforms.topColor.value.copy( hemiLight.color ); - scene.fog.color.copy(uniforms.bottomColor.value); + scene.fog.color.copy( uniforms.bottomColor.value ); - var skyGeo = new THREE.SphereGeometry(4000, 32, 15); - var skyMat = new THREE.ShaderMaterial({ vertexShader: vertexShader, fragmentShader: fragmentShader, uniforms: uniforms, side: THREE.BackSide }); + var skyGeo = new THREE.SphereGeometry( 4000, 32, 15 ); + var skyMat = new THREE.ShaderMaterial( { vertexShader: vertexShader, fragmentShader: fragmentShader, uniforms: uniforms, side: THREE.BackSide } ); - var sky = new THREE.Mesh(skyGeo, skyMat); - scene.add(sky); + var sky = new THREE.Mesh( skyGeo, skyMat ); + scene.add( sky ); // MODEL var loader = new THREE.JSONLoader(); - loader.load("models/animated/flamingo.js", function (geometry) { + loader.load( "models/animated/flamingo.js", function( geometry ) { - morphColorsToFaceColors(geometry); - geometry.computeMorphNormals(); - - var material = new THREE.MeshPhongMaterial({ color: 0xffffff, specular: 0xffffff, shininess: 20, morphTargets: true, morphNormals: true, vertexColors: THREE.FaceColors, shading: THREE.FlatShading }); - var meshAnim = new THREE.MorphAnimMesh(geometry, material); - - meshAnim.duration = 1000; + var material = new THREE.MeshPhongMaterial( { color: 0xffffff, specular: 0xffffff, shininess: 20, morphTargets: true, vertexColors: THREE.FaceColors, shading: THREE.FlatShading } ); + var mesh = new THREE.Mesh( geometry, material ); var s = 0.35; - meshAnim.scale.set(s, s, s); - meshAnim.position.y = 15; - meshAnim.rotation.y = -1; + mesh.scale.set( s, s, s ); + mesh.position.y = 15; + mesh.rotation.y = -1; - meshAnim.castShadow = true; - meshAnim.receiveShadow = true; + mesh.castShadow = true; + mesh.receiveShadow = true; - scene.add(meshAnim); - morphs.push(meshAnim); + scene.add( mesh ); - }); + var mixer = new THREE.AnimationMixer( mesh ); + mixer.addAction( new THREE.AnimationAction( geometry.animations[ 0 ] ).warpToDuration( 1 ) ); + mixers.push( mixer ); + + } ); // RENDERER - renderer = new THREE.WebGLRenderer({ antialias: true }); - renderer.setClearColor(scene.fog.color); - renderer.setPixelRatio(window.devicePixelRatio); - renderer.setSize(window.innerWidth, window.innerHeight); - container.appendChild(renderer.domElement); + renderer = new THREE.WebGLRenderer( { antialias: true } ); + renderer.setClearColor( scene.fog.color ); + renderer.setPixelRatio( window.devicePixelRatio ); + renderer.setSize( window.innerWidth, window.innerHeight ); + container.appendChild( renderer.domElement ); renderer.gammaInput = true; renderer.gammaOutput = true; - renderer.shadowMapEnabled = true; - renderer.shadowMapCullFace = THREE.CullFaceBack; + renderer.shadowMap.enabled = true; + renderer.shadowMap.cullFace = THREE.CullFaceBack; // STATS stats = new Stats(); - container.appendChild(stats.domElement); + container.appendChild( stats.domElement ); // - window.addEventListener('resize', onWindowResize, false); - document.addEventListener('keydown', onKeyDown, false); - - } - - function morphColorsToFaceColors(geometry) { - - if (geometry.morphColors && geometry.morphColors.length) { - - var colorMap = geometry.morphColors[0]; - - for (var i = 0; i < colorMap.colors.length; i++) { - - geometry.faces[i].color = colorMap.colors[i]; - - } - - } + window.addEventListener( 'resize', onWindowResize, false ); + document.addEventListener( 'keydown', onKeyDown, false ); } @@ -184,20 +166,20 @@ camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); - renderer.setSize(window.innerWidth, window.innerHeight); + renderer.setSize( window.innerWidth, window.innerHeight ); } - function onKeyDown(event) { + function onKeyDown ( event ) { - switch (event.keyCode) { + switch ( event.keyCode ) { - case 72: /*h*/ + case 72: // h hemiLight.visible = !hemiLight.visible; break; - case 68: /*d*/ + case 68: // d dirLight.visible = !dirLight.visible; break; @@ -210,7 +192,7 @@ function animate() { - requestAnimationFrame(animate); + requestAnimationFrame( animate ); render(); stats.update(); @@ -223,14 +205,13 @@ //controls.update(); - for (var i = 0; i < morphs.length; i++) { + for ( var i = 0; i < mixers.length; i ++ ) { - morph = morphs[i]; - morph.updateAnimation(1000 * delta); + mixers[ i ].update( delta ); } - renderer.render(scene, camera); + renderer.render( scene, camera ); } } diff --git a/threejs/tests/webgl/webgl_particles_billboards.ts b/threejs/tests/webgl/webgl_particles_billboards.ts deleted file mode 100644 index 96b77588c..000000000 --- a/threejs/tests/webgl/webgl_particles_billboards.ts +++ /dev/null @@ -1,147 +0,0 @@ -/// -/// - -// https://github.com/mrdoob/three.js/blob/master/examples/webgl_particles_billboards.html - -() => { - if (!Detector.webgl) Detector.addGetWebGLMessage(); - - var container, stats; - var camera, scene, renderer, particles, geometry, material, i, h, color, sprite, size; - var mouseX = 0, mouseY = 0; - - var windowHalfX = window.innerWidth / 2; - var windowHalfY = window.innerHeight / 2; - - init(); - animate(); - - function init() { - - container = document.createElement('div'); - document.body.appendChild(container); - - camera = new THREE.PerspectiveCamera(55, window.innerWidth / window.innerHeight, 2, 2000); - camera.position.z = 1000; - - scene = new THREE.Scene(); - scene.fog = new THREE.FogExp2(0x000000, 0.001); - - geometry = new THREE.Geometry(); - - sprite = THREE.ImageUtils.loadTexture("textures/sprites/disc.png"); - - for (i = 0; i < 10000; i++) { - - var vertex = new THREE.Vector3(); - vertex.x = 2000 * Math.random() - 1000; - vertex.y = 2000 * Math.random() - 1000; - vertex.z = 2000 * Math.random() - 1000; - - geometry.vertices.push(vertex); - - } - - material = new THREE.PointCloudMaterial({ size: 35, sizeAttenuation: false, map: sprite, alphaTest: 0.5, transparent: true }); - material.color.setHSL(1.0, 0.3, 0.7); - - particles = new THREE.PointCloud(geometry, material); - scene.add(particles); - - // - - renderer = new THREE.WebGLRenderer(); - renderer.setPixelRatio(window.devicePixelRatio); - renderer.setSize(window.innerWidth, window.innerHeight); - container.appendChild(renderer.domElement); - - // - - stats = new Stats(); - stats.domElement.style.position = 'absolute'; - stats.domElement.style.top = '0px'; - container.appendChild(stats.domElement); - - // - - document.addEventListener('mousemove', onDocumentMouseMove, false); - document.addEventListener('touchstart', onDocumentTouchStart, false); - document.addEventListener('touchmove', onDocumentTouchMove, false); - - // - - window.addEventListener('resize', onWindowResize, false); - - } - - function onWindowResize() { - - windowHalfX = window.innerWidth / 2; - windowHalfY = window.innerHeight / 2; - - camera.aspect = window.innerWidth / window.innerHeight; - camera.updateProjectionMatrix(); - - renderer.setSize(window.innerWidth, window.innerHeight); - - } - - function onDocumentMouseMove(event) { - - mouseX = event.clientX - windowHalfX; - mouseY = event.clientY - windowHalfY; - - } - - function onDocumentTouchStart(event) { - - if (event.touches.length == 1) { - - event.preventDefault(); - - mouseX = event.touches[0].pageX - windowHalfX; - mouseY = event.touches[0].pageY - windowHalfY; - - } - } - - function onDocumentTouchMove(event) { - - if (event.touches.length == 1) { - - event.preventDefault(); - - mouseX = event.touches[0].pageX - windowHalfX; - mouseY = event.touches[0].pageY - windowHalfY; - - } - - } - - // - - function animate() { - - requestAnimationFrame(animate); - - render(); - stats.update(); - - } - - function render() { - - var time = Date.now() * 0.00005; - - camera.position.x += (mouseX - camera.position.x) * 0.05; - camera.position.y += (- mouseY - camera.position.y) * 0.05; - - camera.lookAt(scene.position); - - h = (360 * (1.0 + time) % 360) / 360; - material.color.setHSL(h, 0.5, 0.5); - - renderer.render(scene, camera); - - } -} \ No newline at end of file diff --git a/threejs/tests/webgl/webgl_points_billboards.ts b/threejs/tests/webgl/webgl_points_billboards.ts new file mode 100644 index 000000000..37c41424b --- /dev/null +++ b/threejs/tests/webgl/webgl_points_billboards.ts @@ -0,0 +1,147 @@ +/// +/// + +// https://github.com/mrdoob/three.js/blob/master/examples/webgl_particles_billboards.html + +() => { + if ( ! Detector.webgl ) Detector.addGetWebGLMessage(); + + var container, stats; + var camera, scene, renderer, particles, geometry, material, i, h, color, sprite, size; + var mouseX = 0, mouseY = 0; + + var windowHalfX = window.innerWidth / 2; + var windowHalfY = window.innerHeight / 2; + + init(); + animate(); + + function init() { + + container = document.createElement( 'div' ); + document.body.appendChild( container ); + + camera = new THREE.PerspectiveCamera( 55, window.innerWidth / window.innerHeight, 2, 2000 ); + camera.position.z = 1000; + + scene = new THREE.Scene(); + scene.fog = new THREE.FogExp2( 0x000000, 0.001 ); + + geometry = new THREE.Geometry(); + + sprite = THREE.ImageUtils.loadTexture( "textures/sprites/disc.png" ); + + for ( i = 0; i < 10000; i ++ ) { + + var vertex = new THREE.Vector3(); + vertex.x = 2000 * Math.random() - 1000; + vertex.y = 2000 * Math.random() - 1000; + vertex.z = 2000 * Math.random() - 1000; + + geometry.vertices.push( vertex ); + + } + + material = new THREE.PointsMaterial( { size: 35, sizeAttenuation: false, map: sprite, alphaTest: 0.5, transparent: true } ); + material.color.setHSL( 1.0, 0.3, 0.7 ); + + particles = new THREE.Points( geometry, material ); + scene.add( particles ); + + // + + renderer = new THREE.WebGLRenderer(); + renderer.setPixelRatio( window.devicePixelRatio ); + renderer.setSize( window.innerWidth, window.innerHeight ); + container.appendChild( renderer.domElement ); + + // + + stats = new Stats(); + stats.domElement.style.position = 'absolute'; + stats.domElement.style.top = '0px'; + container.appendChild( stats.domElement ); + + // + + document.addEventListener( 'mousemove', onDocumentMouseMove, false ); + document.addEventListener( 'touchstart', onDocumentTouchStart, false ); + document.addEventListener( 'touchmove', onDocumentTouchMove, false ); + + // + + window.addEventListener( 'resize', onWindowResize, false ); + + } + + function onWindowResize() { + + windowHalfX = window.innerWidth / 2; + windowHalfY = window.innerHeight / 2; + + camera.aspect = window.innerWidth / window.innerHeight; + camera.updateProjectionMatrix(); + + renderer.setSize( window.innerWidth, window.innerHeight ); + + } + + function onDocumentMouseMove( event ) { + + mouseX = event.clientX - windowHalfX; + mouseY = event.clientY - windowHalfY; + + } + + function onDocumentTouchStart( event ) { + + if ( event.touches.length == 1 ) { + + event.preventDefault(); + + mouseX = event.touches[ 0 ].pageX - windowHalfX; + mouseY = event.touches[ 0 ].pageY - windowHalfY; + + } + } + + function onDocumentTouchMove( event ) { + + if ( event.touches.length == 1 ) { + + event.preventDefault(); + + mouseX = event.touches[ 0 ].pageX - windowHalfX; + mouseY = event.touches[ 0 ].pageY - windowHalfY; + + } + + } + + // + + function animate() { + + requestAnimationFrame( animate ); + + render(); + stats.update(); + + } + + function render() { + + var time = Date.now() * 0.00005; + + camera.position.x += ( mouseX - camera.position.x ) * 0.05; + camera.position.y += ( - mouseY - camera.position.y ) * 0.05; + + camera.lookAt( scene.position ); + + h = ( 360 * ( 1.0 + time ) % 360 ) / 360; + material.color.setHSL( h, 0.5, 0.5 ); + + renderer.render( scene, camera ); + + } +} \ No newline at end of file diff --git a/threejs/tests/webgl/webgl_sprites.ts b/threejs/tests/webgl/webgl_sprites.ts index c7e2d4f84..3ec84bba1 100644 --- a/threejs/tests/webgl/webgl_sprites.ts +++ b/threejs/tests/webgl/webgl_sprites.ts @@ -25,14 +25,14 @@ var width = window.innerWidth; var height = window.innerHeight; - camera = new THREE.PerspectiveCamera(60, width / height, 1, 2100); + camera = new THREE.PerspectiveCamera( 60, width / height, 1, 2100 ); camera.position.z = 1500; - cameraOrtho = new THREE.OrthographicCamera(- width / 2, width / 2, height / 2, - height / 2, 1, 10); + cameraOrtho = new THREE.OrthographicCamera( - width / 2, width / 2, height / 2, - height / 2, 1, 10 ); cameraOrtho.position.z = 10; scene = new THREE.Scene(); - scene.fog = new THREE.Fog(0x000000, 1500, 2100); + scene.fog = new THREE.Fog( 0x000000, 1500, 2100 ); sceneOrtho = new THREE.Scene(); @@ -41,93 +41,93 @@ var amount = 200; var radius = 500; - var mapA = THREE.ImageUtils.loadTexture("textures/sprite0.png", undefined, createHUDSprites); - var mapB = THREE.ImageUtils.loadTexture("textures/sprite1.png"); - mapC = THREE.ImageUtils.loadTexture("textures/sprite2.png"); + var mapA = THREE.ImageUtils.loadTexture( "textures/sprite0.png", undefined, createHUDSprites ); + var mapB = THREE.ImageUtils.loadTexture( "textures/sprite1.png" ); + mapC = THREE.ImageUtils.loadTexture( "textures/sprite2.png" ); group = new THREE.Group(); - var materialC = new THREE.SpriteMaterial({ map: mapC, color: 0xffffff, fog: true }); - var materialB = new THREE.SpriteMaterial({ map: mapB, color: 0xffffff, fog: true }); + var materialC = new THREE.SpriteMaterial( { map: mapC, color: 0xffffff, fog: true } ); + var materialB = new THREE.SpriteMaterial( { map: mapB, color: 0xffffff, fog: true } ); - for (var a = 0; a < amount; a++) { + for ( var a = 0; a < amount; a ++ ) { var x = Math.random() - 0.5; var y = Math.random() - 0.5; var z = Math.random() - 0.5; - if (z < 0) { + if ( z < 0 ) { material = materialB.clone(); } else { material = materialC.clone(); - material.color.setHSL(0.5 * Math.random(), 0.75, 0.5); - material.map.offset.set(-0.5, -0.5); - material.map.repeat.set(2, 2); + material.color.setHSL( 0.5 * Math.random(), 0.75, 0.5 ); + material.map.offset.set( -0.5, -0.5 ); + material.map.repeat.set( 2, 2 ); } - var sprite = new THREE.Sprite(material); + var sprite = new THREE.Sprite( material ); - sprite.position.set(x, y, z); + sprite.position.set( x, y, z ); sprite.position.normalize(); - sprite.position.multiplyScalar(radius); + sprite.position.multiplyScalar( radius ); - group.add(sprite); + group.add( sprite ); } - scene.add(group); + scene.add( group ); // renderer renderer = new THREE.WebGLRenderer(); - renderer.setPixelRatio(window.devicePixelRatio); - renderer.setSize(window.innerWidth, window.innerHeight); + renderer.setPixelRatio( window.devicePixelRatio ); + renderer.setSize( window.innerWidth, window.innerHeight ); renderer.autoClear = false; // To allow render overlay on top of sprited sphere - document.body.appendChild(renderer.domElement); + document.body.appendChild( renderer.domElement ); // - window.addEventListener('resize', onWindowResize, false); + window.addEventListener( 'resize', onWindowResize, false ); } - function createHUDSprites(texture) { + function createHUDSprites ( texture ) { - var material = new THREE.SpriteMaterial({ map: texture }); + var material = new THREE.SpriteMaterial( { map: texture } ); var width = material.map.image.width; var height = material.map.image.height; - spriteTL = new THREE.Sprite(material); - spriteTL.scale.set(width, height, 1); - sceneOrtho.add(spriteTL); + spriteTL = new THREE.Sprite( material ); + spriteTL.scale.set( width, height, 1 ); + sceneOrtho.add( spriteTL ); - spriteTR = new THREE.Sprite(material); - spriteTR.scale.set(width, height, 1); - sceneOrtho.add(spriteTR); + spriteTR = new THREE.Sprite( material ); + spriteTR.scale.set( width, height, 1 ); + sceneOrtho.add( spriteTR ); - spriteBL = new THREE.Sprite(material); - spriteBL.scale.set(width, height, 1); - sceneOrtho.add(spriteBL); + spriteBL = new THREE.Sprite( material ); + spriteBL.scale.set( width, height, 1 ); + sceneOrtho.add( spriteBL ); - spriteBR = new THREE.Sprite(material); - spriteBR.scale.set(width, height, 1); - sceneOrtho.add(spriteBR); + spriteBR = new THREE.Sprite( material ); + spriteBR.scale.set( width, height, 1 ); + sceneOrtho.add( spriteBR ); - spriteC = new THREE.Sprite(material); - spriteC.scale.set(width, height, 1); - sceneOrtho.add(spriteC); + spriteC = new THREE.Sprite( material ); + spriteC.scale.set( width, height, 1 ); + sceneOrtho.add( spriteC ); updateHUDSprites(); - }; + } - function updateHUDSprites() { + function updateHUDSprites () { var width = window.innerWidth / 2; var height = window.innerHeight / 2; @@ -137,13 +137,13 @@ var imageWidth = material.map.image.width / 2; var imageHeight = material.map.image.height / 2; - spriteTL.position.set(- width + imageWidth, height - imageHeight, 1); // top left - spriteTR.position.set(width - imageWidth, height - imageHeight, 1); // top right - spriteBL.position.set(- width + imageWidth, - height + imageHeight, 1); // bottom left - spriteBR.position.set(width - imageWidth, - height + imageHeight, 1); // bottom right - spriteC.position.set(0, 0, 1); // center + spriteTL.position.set( - width + imageWidth, height - imageHeight, 1 ); // top left + spriteTR.position.set( width - imageWidth, height - imageHeight, 1 ); // top right + spriteBL.position.set( - width + imageWidth, - height + imageHeight, 1 ); // bottom left + spriteBR.position.set( width - imageWidth, - height + imageHeight, 1 ); // bottom right + spriteC.position.set( 0, 0, 1 ); // center - }; + } function onWindowResize() { @@ -161,13 +161,13 @@ updateHUDSprites(); - renderer.setSize(window.innerWidth, window.innerHeight); + renderer.setSize( window.innerWidth, window.innerHeight ); } function animate() { - requestAnimationFrame(animate); + requestAnimationFrame( animate ); render(); } @@ -176,28 +176,28 @@ var time = Date.now() / 1000; - for (var i = 0, l = group.children.length; i < l; i++) { + for ( var i = 0, l = group.children.length; i < l; i ++ ) { - var sprite = group.children[i]; + var sprite = group.children[ i ]; var material = sprite.material; - var scale = Math.sin(time + sprite.position.x * 0.01) * 0.3 + 1.0; + var scale = Math.sin( time + sprite.position.x * 0.01 ) * 0.3 + 1.0; var imageWidth = 1; var imageHeight = 1; - if (material.map && material.map.image && material.map.image.width) { + if ( material.map && material.map.image && material.map.image.width ) { imageWidth = material.map.image.width; imageHeight = material.map.image.height; } - sprite.material.rotation += 0.1 * (i / l); - sprite.scale.set(scale * imageWidth, scale * imageHeight, 1.0); + sprite.material.rotation += 0.1 * ( i / l ); + sprite.scale.set( scale * imageWidth, scale * imageHeight, 1.0 ); - if (material.map !== mapC) { + if ( material.map !== mapC ) { - material.opacity = Math.sin(time + sprite.position.x * 0.01) * 0.4 + 0.6; + material.opacity = Math.sin( time + sprite.position.x * 0.01 ) * 0.4 + 0.6; } @@ -208,9 +208,9 @@ group.rotation.z = time * 1.0; renderer.clear(); - renderer.render(scene, camera); + renderer.render( scene, camera ); renderer.clearDepth(); - renderer.render(sceneOrtho, cameraOrtho); + renderer.render( sceneOrtho, cameraOrtho ); } } \ No newline at end of file diff --git a/threejs/three-tests.ts b/threejs/three-tests.ts index ff97df43f..2e9f37b10 100644 --- a/threejs/three-tests.ts +++ b/threejs/three-tests.ts @@ -33,14 +33,14 @@ THE SOFTWARE. /// /// /// -/// +/// /// /// /// /// /// /// -/// +/// /// /// /// diff --git a/threejs/three.d.ts b/threejs/three.d.ts index 433f17078..b01c38c63 100644 --- a/threejs/three.d.ts +++ b/threejs/three.d.ts @@ -82,6 +82,17 @@ declare module THREE { export var OneMinusDstColorFactor: BlendingSrcFactor; export var SrcAlphaSaturateFactor: BlendingSrcFactor; + // depth modes + export enum DepthModes { } + export var NeverDepth: DepthModes; + export var AlwaysDepth: DepthModes; + export var LessDepth: DepthModes; + export var LessEqualDepth: DepthModes; + export var EqualDepth: DepthModes; + export var GreaterEqualDepth: DepthModes; + export var GreaterDepth: DepthModes; + export var NotEqualDepth: DepthModes; + // TEXTURE CONSTANTS // Operations export enum Combine { } @@ -153,11 +164,213 @@ declare module THREE { export var RGBA_PVRTC_4BPPV1_Format: CompressedPixelFormat; export var RGBA_PVRTC_2BPPV1_Format: CompressedPixelFormat; + // Loop styles for AnimationAction + export enum AnimationActionLoopStyles { } + export var LoopOnce: AnimationActionLoopStyles; + export var LoopRepeat: AnimationActionLoopStyles; + export var LoopPingPong: AnimationActionLoopStyles; + // log handlers export function warn(message?: any, ...optionalParams: any[]): void; export function error(message?: any, ...optionalParams: any[]): void; export function log(message?: any, ...optionalParams: any[]): void; + // Animation //////////////////////////////////////////////////////////////////////////////////////// + export class AnimationAction { + constructor(clip: AnimationClip, startTime?: number, timeScale?: number, weight?: number, loop?: boolean); + + clip: AnimationClip + localRoot: Mesh; + startTime: number; + timeScale: number; + weight: number; + loop: AnimationActionLoopStyles; + loopCount: number; + enabled: boolean; + actionTime: number; + clipTime: number; + propertyBindings: PropertyBinding[]; + + setLocalRoot( localRoot: Mesh ): AnimationAction; + updateTime( clipDeltaTime: number ): number; + syncWith( action: AnimationAction ): AnimationAction; + warpToDuration( duration: number ): AnimationAction; + init( time: number ): AnimationAction; + update( clipDeltaTime: number ): any[]; + getTimeScaleAt( time: number ): number; + getWeightAt( time: number ): number; + } + + export class AnimationClip { + constructor( name: string, duration?: number, tracks?: KeyframeTrack[] ); + + name: string; + tracks: KeyframeTrack[]; + duration: number; + results: any[]; + + getAt(clipTime: number): any[]; + trim(): AnimationClip; + optimize(): AnimationClip; + + static CreateFromMorphTargetSequence( name: string, morphTargetSequence: MorphTarget[], fps: number ): AnimationClip; + findByName( clipArray: AnimationClip, name: string ): AnimationClip; + static CreateClipsFromMorphTargetSequences( morphTargets: MorphTarget[], fps: number ): AnimationClip[]; + parse( json: any ): AnimationClip; + parseAnimation( animation: any, bones: Bone[], nodeName: string ): AnimationClip; + } + + export class AnimationMixer { + constructor( root: any ); + + root: any; + time: number; + timeScale: number; + actions: AnimationAction; + propertyBindingMap: any; + + addAction( action: AnimationAction ): void; + removeAllActions(): AnimationMixer; + removeAction( action: AnimationAction ): AnimationMixer; + findActionByName( name: string ): AnimationAction; + play( action: AnimationAction, optionalFadeInDuration?: number ): AnimationMixer; + fadeOut( action: AnimationAction, duration: number ): AnimationMixer; + fadeIn( action: AnimationAction, duration: number ): AnimationMixer; + warp( action: AnimationAction, startTimeScale: NumberKeyframeTrack, endTimeScale: NumberKeyframeTrack, duration: number ): AnimationMixer; + crossFade( fadeOutAction: AnimationAction, fadeInAction: AnimationAction, duration: number, warp: boolean ): AnimationMixer; + update( deltaTime: number ): AnimationMixer; + } + + export var AnimationUtils: { + getEqualsFunc( exemplarValue: any ): boolean; + clone(exemplarValue: T): T; + lerp( a: any, b: any, alpha: number, interTrack: boolean ): any; + lerp_object( a: any, b: any, alpha: number ): any; + slerp_object( a: any, b: any, alpha: number ): any; + lerp_number( a: any, b: any, alpha: number ): any; + lerp_boolean( a: any, b: any, alpha: number ): any; + lerp_boolean_immediate( a: any, b: any, alpha: number ): any; + lerp_string( a: any, b: any, alpha: number ): any; + lerp_string_immediate( a: any, b: any, alpha: number ): any; + getLerpFunc( exemplarValue: any, interTrack: boolean ): Function; + }; + + export class KeyframeTrack { + constructor(name: string, keys: any[]); + + name: string; + keys: any[]; + lastIndex: number; + + getAt( time: number ): any; + shift( timeOffset: number ): KeyframeTrack; + scale( timeScale: number ): KeyframeTrack; + trim( startTime: number, endTime: number ): KeyframeTrack; + validate(): KeyframeTrack; + optimize(): KeyframeTrack; + + keyComparator(key0: KeyframeTrack, key1: KeyframeTrack): number; + parse( json: any ): KeyframeTrack; + GetTrackTypeForTypeName( typeName: string ): any; + } + + export class PropertyBinding { + constructor( rootNode: any, trackName: string ); + + rootNode: any; + trackName: string; + referenceCount: number; + originalValue: any; + directoryName: string; + nodeName: string; + objectName: string; + objectIndex: number; + propertyName: string; + propertyIndex: number; + node: any; + cumulativeValue: number; + cumulativeWeight: number; + + reset(): void; + accumulate( value: any, weight: number ): void; + unbind(): void; + bind(): void; + apply(): void; + parseTrackName( trackName: string ): any; + findNode( root: any, nodeName: string ): any; + } + + export class BooleanKeyframeTrack extends KeyframeTrack { + constructor(name: string, keys: any[]); + + result: any; + + setResult( value: any ): void; + lerpValues( value0: any, value1: any, alpha: number ): any; + compareValues( value0: any, value1: any ): boolean; + clone(): BooleanKeyframeTrack; + parse( json: any ): BooleanKeyframeTrack; + } + + export class ColorKeyframeTrack extends KeyframeTrack { + constructor(name: string, keys: any[]); + + result: any; + + setResult( value: any ): void; + lerpValues( value0: any, value1: any, alpha: number ): any; + compareValues( value0: any, value1: any ): boolean; + clone(): ColorKeyframeTrack; + parse( json: any ): ColorKeyframeTrack; + } + + export class NumberKeyframeTrack { + constructor(); + + result: any; + + setResult( value: any ): void; + lerpValues( value0: any, value1: any, alpha: number ): any; + compareValues( value0: any, value1: any ): boolean; + clone(): NumberKeyframeTrack; + parse( json: any ): NumberKeyframeTrack; + } + + export class QuaternionKeyframeTrack { + constructor(); + + result: any; + + setResult( value: any ): void; + lerpValues( value0: any, value1: any, alpha: number ): any; + compareValues( value0: any, value1: any ): boolean; + clone(): QuaternionKeyframeTrack; + parse( json: any ): QuaternionKeyframeTrack; + } + + export class StringKeyframeTrack { + constructor(); + + result: any; + + setResult( value: any ): void; + lerpValues( value0: any, value1: any, alpha: number ): any; + compareValues( value0: any, value1: any ): boolean; + clone(): StringKeyframeTrack; + parse( json: any ): StringKeyframeTrack; + } + + export class VectorKeyframeTrack { + constructor(); + + result: any; + + setResult( value: any ): void; + lerpValues( value0: any, value1: any, alpha: number ): any; + compareValues( value0: any, value1: any ): boolean; + clone(): VectorKeyframeTrack; + parse( json: any ): VectorKeyframeTrack; + } // Cameras //////////////////////////////////////////////////////////////////////////////////////// @@ -188,7 +401,8 @@ declare module THREE { */ lookAt(vector: Vector3): void; - clone(camera?: Camera): Camera; + clone(): Camera; + copy(camera?: Camera): Camera; } export class CubeCamera extends Object3D { @@ -256,8 +470,9 @@ declare module THREE { * Updates the camera projection matrix. Must be called after change of parameters. */ updateProjectionMatrix(): void; - clone(): OrthographicCamera; + copy( source: OrthographicCamera ): OrthographicCamera; + toJSON( meta?: any ): any; } /** @@ -352,60 +567,36 @@ declare module THREE { */ updateProjectionMatrix(): void; clone(): PerspectiveCamera; + copy( source: PerspectiveCamera ): PerspectiveCamera; + toJSON( meta?: any ): any; } // Core /////////////////////////////////////////////////////////////////////////////////////////////// - /** - * @see src/core/InterleavedBuffer.js - */ - export class InterleavedBuffer { - constructor(array: ArrayLike, stride: number); - array: ArrayLike; - stride: number; - dynamic: boolean; - updateRange: {offset:number, count:number}; - version: number; - length: number; - count: number; - needsUpdate: boolean; - - setDynamic(dynamic: boolean): InterleavedBuffer; - copy(source: InterleavedBuffer): void; - copyAt(index1: number, attribute: InterleavedBufferAttribute, index2: number): InterleavedBuffer; - set(value: ArrayLike, index: number): InterleavedBuffer; - clone(): InterleavedBuffer; - } - - /** - * @see src/core/InstancedInterleavedBuffer.js - */ - export class InstancedInterleavedBuffer extends InterleavedBuffer { - constructor(array: ArrayLike, stride: number, meshPerAttribute?: number); - meshPerAttribute: number; - copy(source: InstancedInterleavedBuffer): InstancedInterleavedBuffer; - } - /** * @see src/core/BufferAttribute.js */ export class BufferAttribute { constructor(array: ArrayLike, itemSize: number); // array parameter should be TypedArray. + uuid: string; array: ArrayLike; itemSize: number; dynamic: boolean; updateRange: {offset:number, count:number}; + version: number; + needsUpdate: boolean; /** Deprecated, use count instead */ length: number; count: number; setDynamic(dynamic: boolean): BufferAttribute; + clone(): BufferAttribute; copy(source: BufferAttribute): BufferAttribute; copyAt(index1: number, attribute: BufferAttribute, index2: number): BufferAttribute; copyArray(array: ArrayLike): BufferAttribute; - copyColorArray(colors: {r:number, g:number, b:number}[]): BufferAttribute; + copyColorsArray(colors: {r:number, g:number, b:number}[]): BufferAttribute; copyIndicesArray(indices: {a:number, b:number, c:number}[]): BufferAttribute; copyVector2sArray(vectors: {x:number, y:number}[]): BufferAttribute; copyVector3sArray(vectors: {x:number, y:number, z:number}[]): BufferAttribute; @@ -427,83 +618,47 @@ declare module THREE { // deprecated (are these actually deprecated?) export class Int8Attribute extends BufferAttribute{ - constructor(data: any, itemSize: number); + constructor(array: any, itemSize: number); } // deprecated export class Uint8Attribute extends BufferAttribute { - constructor(data: any, itemSize: number); + constructor(array: any, itemSize: number); } // deprecated export class Uint8ClampedAttribute extends BufferAttribute { - constructor(data: any, itemSize: number); + constructor(array: any, itemSize: number); } // deprecated export class Int16Attribute extends BufferAttribute { - constructor(data: any, itemSize: number); + constructor(array: any, itemSize: number); } // deprecated export class Uint16Attribute extends BufferAttribute { - constructor(data: any, itemSize: number); + constructor(array: any, itemSize: number); } // deprecated export class Int32Attribute extends BufferAttribute { - constructor(data: any, itemSize: number); + constructor(array: any, itemSize: number); } // deprecated export class Uint32Attribute extends BufferAttribute { - constructor(data: any, itemSize: number); + constructor(array: any, itemSize: number); } // deprecated export class Float32Attribute extends BufferAttribute { - constructor(data: any, itemSize: number); + constructor(array: any, itemSize: number); } // deprecated export class Float64Attribute extends BufferAttribute { - constructor(data: any, itemSize: number); - } - - /** - * @see src/core/InstancedBufferAttribute.js - */ - export class InstancedBufferAttribute extends BufferAttribute { - constructor(data: ArrayLike, itemSize: number, meshPerAttribute?: number); - meshPerAttribute: number; - copy(source: InstancedBufferAttribute): InstancedBufferAttribute; - } - - /** - * @see src/core/InterleavedBufferAttribute.js - */ - export class InterleavedBufferAttribute { - constructor(interleavedBuffer: InterleavedBuffer, itemSize: number, offset: number); - - uuid: string; - data: InterleavedBuffer; - itemSize: number; - offset: number; - /** Deprecated, use count instead */ - length: number; - count: number; - - getX(index: number): number; - setX(index: number, x: number): InterleavedBufferAttribute; - getY(index: number): number; - setY(index: number, y: number): InterleavedBufferAttribute; - getZ(index: number): number; - setZ(index: number, z: number): InterleavedBufferAttribute; - getW(index: number): number; - setW(index: number, z: number): InterleavedBufferAttribute; - setXY(index: number, x: number, y: number): InterleavedBufferAttribute; - setXYZ(index: number, x: number, y: number, z: number): InterleavedBufferAttribute; - setXYZW(index: number, x: number, y: number, z: number, w: number): InterleavedBufferAttribute; + constructor(array: any, itemSize: number); } /** @@ -528,17 +683,19 @@ declare module THREE { uuid: string; name: string; type: string; + index: BufferAttribute; attributes: BufferAttribute|InterleavedBufferAttribute[]; - /** Deprecated. Use groups instead. */ - drawcalls: { start: number; count: number; index: number; }[]; - /** Deprecated. Use groups instead. */ - offsets: { start: number; count: number; index: number; }[]; - groups: { start: number, count: number, materialIndex?: number }[]; + morphAttributes: any; + groups: {start: number, count: number, materialIndex?: number}[]; boundingBox: Box3; boundingSphere: BoundingSphere; + drawRange: { start: number, count: number }; - addIndex(index: BufferAttribute): void; - setIndex(index: BufferAttribute): void; + /** Deprecated. */ + addIndex( index: BufferAttribute ): void; + + getIndex(): BufferAttribute; + setIndex( index: BufferAttribute ): void; /** Deprecated. This overloaded method is deprecated. */ addAttribute(name: string, array: any, itemSize: number): any; @@ -546,11 +703,15 @@ declare module THREE { getAttribute(name: string): BufferAttribute|InterleavedBufferAttribute; removeAttribute(name: string): void; - setIndex(index: BufferAttribute): void; - getIndex(): BufferAttribute; + /** Deprecated. */ + drawcalls(): any; + /** Deprecated. */ + offsets(): any; /** Deprecated. Use addGroup */ - addDrawCall(start: number, count: number, index: number): void; + addDrawCall(start: number, count: number, index?: number): void; + /** Deprecated. */ + clearDrawCalls(): void; addGroup(start: number, count: number, materialIndex?: number): void; clearGroups(): void; @@ -575,6 +736,8 @@ declare module THREE { fromGeometry(geometry: Geometry, settings?: any): BufferGeometry; + fromDirectGeometry( geometry: DirectGeometry ): BufferGeometry; + /** * Computes bounding box of the geometry, updating Geometry.boundingBox attribute. * Bounding boxes aren't computed by default. They need to be explicitly computed, otherwise they are null. @@ -616,47 +779,15 @@ declare module THREE { dispatchEvent(event: { type: string; target: any; }): void; } - /** - * @see src/core/InstancedBufferGeometry.js - */ - export class InstancedBufferGeometry extends BufferGeometry { + export class Channels { constructor(); - groups: {start:number, count:number, instances:number}[]; - addGroup(start: number, count: number, instances: number): void; - copy(source: InstancedBufferGeometry): InstancedBufferGeometry; - } - /** - * @see src/core/DirectGeometry.js - */ - export class DirectGeometry { - constructor(); - id: number; - uuid: string; - name: string; - type: string; - indices: number[]; - vertices: Vector3[]; - normals: Vector3[]; - colors: Color[]; - uvs: Vector2[]; - uvs2: Vector2[]; - groups: {start: number, materialIndex: number}[]; - morphTargets: MorphTarget[]; - skinWeights: number[]; - skinIndices: number[]; - boundingBox: Box3; - boundingSphere: BoundingSphere; - verticesNeedUpdate: boolean; - normalsNeedUpdate: boolean; - colorsNeedUpdate: boolean; - uvsNeedUpdate: boolean; - groupsNeedUpdate: boolean; - computeBoundingBox(): void; - computeBoundingSphere(): void; - computeGroups(geometry: Geometry): void; - fromGeometry(geometry: Geometry): DirectGeometry; - dispose(): void; + mask: number; + + set( channel: number ): void; + enable( channel: number ): void; + toggle( channel: number ): void; + disable( channel: number ): void; } /** @@ -720,17 +851,44 @@ declare module THREE { } /** - * Deprecated. Use new THREE.BufferAttribute().setDynamic(true) instead. + * @see src/core/DirectGeometry.js */ - export class DynamicBufferAttribute extends BufferAttribute { - constructor(array: any, itemSize: number); + export class DirectGeometry { + constructor(); - updateRange: { - offset: number; - count: number; - } + id: number; + uuid: string; + name: string; + type: string; + indices: number[]; + vertices: Vector3[]; + normals: Vector3[]; + colors: Color[]; + uvs: Vector2[]; + uvs2: Vector2[]; + groups: {start: number, materialIndex: number}[]; + morphTargets: MorphTarget[]; + skinWeights: number[]; + skinIndices: number[]; + boundingBox: Box3; + boundingSphere: BoundingSphere; + verticesNeedUpdate: boolean; + normalsNeedUpdate: boolean; + colorsNeedUpdate: boolean; + uvsNeedUpdate: boolean; + groupsNeedUpdate: boolean; - clone(): DynamicBufferAttribute; + computeBoundingBox(): void; + computeBoundingSphere(): void; + computeGroups(geometry: Geometry): void; + fromGeometry(geometry: Geometry): DirectGeometry; + dispose(): void; + + // EventDispatcher mixins + addEventListener(type: string, listener: (event: any) => void ): void; + hasEventListener(type: string, listener: (event: any) => void): void; + removeEventListener(type: string, listener: (event: any) => void): void; + dispatchEvent(event: { type: string; target: any; }): void; } /** @@ -883,7 +1041,6 @@ declare module THREE { radius: number; } - /** * Base class for geometries * @@ -983,13 +1140,6 @@ declare module THREE { */ boundingSphere: BoundingSphere; - /** - * Set to true if attribute buffers will need to change in runtime (using "dirty" flags). - * Unless set to true internal typed arrays corresponding to buffers will be deleted once sent to GPU. - * Defaults to true. - */ - dynamic: boolean; - /** * Set to true if the vertices array has been updated. */ @@ -1010,11 +1160,6 @@ declare module THREE { */ normalsNeedUpdate: boolean; - /** - * Set to true if the tangents in the faces has been updated. - */ - tangentsNeedUpdate: boolean; - /** * Set to true if the colors array has been updated. */ @@ -1035,6 +1180,15 @@ declare module THREE { */ applyMatrix(matrix: Matrix4): void; + rotateX(angle: number): Geometry; + rotateY(angle: number): Geometry; + rotateZ(angle: number): Geometry; + + translate(x: number, y: number, z: number): Geometry; + scale(x: number, y: number, z: number): Geometry; + lookAt( vector: Vector3 ): void; + + fromBufferGeometry(geometry: BufferGeometry): Geometry; /** @@ -1042,6 +1196,8 @@ declare module THREE { */ center(): Vector3; + normalize(): Geometry; + /** * Computes face normals. */ @@ -1090,6 +1246,8 @@ declare module THREE { */ clone(): Geometry; + copy(source: Geometry): Geometry; + /** * Removes The object from memory. * Don't forget to call this method when you remove an geometry because it can cuase meomory leaks. @@ -1099,8 +1257,8 @@ declare module THREE { //These properties do not exist in a normal Geometry class, but if you use the instance that was passed by JSONLoader, it will be added. bones: Bone[]; - animation: AnimationData; - animations: AnimationData[]; + animation: AnimationClip; + animations: AnimationClip[]; // EventDispatcher mixins addEventListener(type: string, listener: (event: any) => void ): void; @@ -1109,6 +1267,89 @@ declare module THREE { dispatchEvent(event: { type: string; target: any; }): void; } + /** + * @see src/core/InstancedBufferAttribute.js + */ + export class InstancedBufferAttribute extends BufferAttribute { + constructor(data: ArrayLike, itemSize: number, meshPerAttribute?: number); + meshPerAttribute: number; + + clone(): InstancedBufferAttribute; + copy(source: InstancedBufferAttribute): InstancedBufferAttribute; + } + + /** + * @see src/core/InstancedBufferGeometry.js + */ + export class InstancedBufferGeometry extends BufferGeometry { + constructor(); + groups: {start:number, count:number, instances:number}[]; + addGroup(start: number, count: number, instances: number): void; + + clone(): InstancedBufferGeometry; + copy(source: InstancedBufferGeometry): InstancedBufferGeometry; + } + + /** + * @see src/core/InstancedInterleavedBuffer.js + */ + export class InstancedInterleavedBuffer extends InterleavedBuffer { + constructor(array: ArrayLike, stride: number, meshPerAttribute?: number); + meshPerAttribute: number; + + clone(): InstancedInterleavedBuffer; + copy(source: InstancedInterleavedBuffer): InstancedInterleavedBuffer; + } + + /** + * @see src/core/InterleavedBuffer.js + */ + export class InterleavedBuffer { + constructor(array: ArrayLike, stride: number); + array: ArrayLike; + stride: number; + dynamic: boolean; + updateRange: {offset:number, count:number}; + version: number; + length: number; + count: number; + needsUpdate: boolean; + + setDynamic(dynamic: boolean): InterleavedBuffer; + clone(): InterleavedBuffer; + copy(source: InterleavedBuffer): InterleavedBuffer; + copyAt(index1: number, attribute: InterleavedBufferAttribute, index2: number): InterleavedBuffer; + set(value: ArrayLike, index: number): InterleavedBuffer; + clone(): InterleavedBuffer; + } + + /** + * @see src/core/InterleavedBufferAttribute.js + */ + export class InterleavedBufferAttribute { + constructor(interleavedBuffer: InterleavedBuffer, itemSize: number, offset: number); + + uuid: string; + data: InterleavedBuffer; + itemSize: number; + offset: number; + /** Deprecated, use count instead */ + length: number; + count: number; + + getX(index: number): number; + setX(index: number, x: number): InterleavedBufferAttribute; + getY(index: number): number; + setY(index: number, y: number): InterleavedBufferAttribute; + getZ(index: number): number; + setZ(index: number, z: number): InterleavedBufferAttribute; + getW(index: number): number; + setW(index: number, z: number): InterleavedBufferAttribute; + setXY(index: number, x: number, y: number): InterleavedBufferAttribute; + setXYZ(index: number, x: number, y: number, z: number): InterleavedBufferAttribute; + setXYZW(index: number, x: number, y: number, z: number, w: number): InterleavedBufferAttribute; + } + /** * Base class for scene graph objects */ @@ -1137,6 +1378,8 @@ declare module THREE { */ parent: Object3D; + channels: Channels; + /** * Array with object's children. */ @@ -1167,6 +1410,10 @@ declare module THREE { */ scale: Vector3; + modelViewMatrix: { value: Matrix4 }; + + normalMatrix: { value: Matrix3 }; + /** * When this is set, then the rotationMatrix gets calculated every frame. */ @@ -1223,14 +1470,7 @@ declare module THREE { * */ static DefaultUp: Vector3; - static DefaultMatrixAutoUpdate: boolean; - - /** - * Order of axis for Euler angles. - */ - // deprecated - eulerOrder: string; - + static DefaultMatrixAutoUpdate: Vector3; /** * This updates the position, rotation and scale with the matrix. @@ -1364,11 +1604,8 @@ declare module THREE { getWorldScale(optionalTarget?: Vector3): Vector3; getWorldDirection(optionalTarget?: Vector3): Vector3; - /** - * Translates object along arbitrary axis by distance. - * @param distance Distance. - * @param axis Translation direction. - */ + raycast(raycaster: Raycaster, intersects: any): void; + traverse(callback: (object: Object3D) => any): void; traverseVisible(callback: (object: Object3D) => any): void; @@ -1385,14 +1622,16 @@ declare module THREE { */ updateMatrixWorld(force: boolean): void; - toJSON(): any; + toJSON(meta?: any): any; + + clone(recursive?: boolean): Object3D; /** * * @param object * @param recursive */ - clone(object?: Object3D, recursive?: boolean): Object3D; + copy(source: Object3D, recursive?: boolean): Object3D; // EventDispatcher mixins addEventListener(type: string, listener: (event: any) => void ): void; @@ -1410,13 +1649,11 @@ declare module THREE { } export interface RaycasterParameters { - Sprite?: any; Mesh?: any; - Points?: any; - /** Deprecated, use Points */ - PointCloud?: any; - LOD?: any; Line?: any; + LOD?: any; + Points?: any; + Sprite?: any; } export class Raycaster { @@ -1443,42 +1680,36 @@ declare module THREE { constructor(hex?: number); color: Color; + receiveShadow: boolean; - shadow: LightShadow; - - /** Deprecated, use shadow */ shadowCameraFov: number; - shadowCameraNear: number; - shadowCameraFar: number; shadowCameraLeft: number; shadowCameraRight: number; shadowCameraTop: number; shadowCameraBottom: number; + shadowCameraNear: number; + shadowCameraFar: number; shadowBias: number; shadowDarkness: number; shadowMapWidth: number; shadowMapHeight: number; - shadowMap: RenderTarget; - shadowMapSize: number; - shadowCamera: Camera; - shadowMatrix: Matrix4; - clone(light?: Light): Light; + clone(recursive?: boolean): Light; + copy( source: Light ): Light; + toJSON( meta: any ): any; } - + export class LightShadow { constructor(camera: Camera); - camera: THREE.Camera; - + camera: Camera; bias: number; darkness: number; + mapSize: Vector2; + map: RenderTarget; + matrix: Matrix4; - mapSize: THREE.Vector2; - - map: any; - matrix: THREE.Matrix4; - + copy(source: LightShadow): void; clone(): LightShadow; } @@ -1498,7 +1729,8 @@ declare module THREE { */ constructor(hex?: number); - clone(): AmbientLight; + clone(recursive?: boolean): AmbientLight; + copy(source: AmbientLight): AmbientLight; } /** @@ -1527,7 +1759,10 @@ declare module THREE { */ intensity: number; - clone(): DirectionalLight; + shadow: LightShadow; + + clone(recursive?: boolean): DirectionalLight; + copy(source: DirectionalLight): DirectionalLight; } export class HemisphereLight extends Light { @@ -1536,7 +1771,8 @@ declare module THREE { groundColor: Color; intensity: number; - clone(): HemisphereLight; + clone(recursive?: boolean): HemisphereLight; + copy(source: HemisphereLight): HemisphereLight; } /** @@ -1564,7 +1800,10 @@ declare module THREE { decay: number; - clone(): PointLight; + shadow: LightShadow; + + clone(recursive?: boolean): PointLight; + copy(source: PointLight): PointLight; } /** @@ -1605,7 +1844,10 @@ declare module THREE { decay: number; - clone(): SpotLight; + shadow: LightShadow; + + clone(recursive?: boolean): SpotLight; + copy(source: PointLight): SpotLight; } // Loaders ////////////////////////////////////////////////////////////////////////////////// @@ -1631,8 +1873,6 @@ declare module THREE { export class Loader { constructor(); - imageLoader: ImageLoader; - /** * Will be called when load starts. * The default is a function with empty body. @@ -1659,22 +1899,32 @@ declare module THREE { extractUrlBase(url: string): string; initMaterials(materials: Material[], texturePath: string): Material[]; - needsTangents(materials: Material[]): boolean; - createMaterial(m: Material, texturePath: string): boolean; + createMaterial(m: Material, texturePath: string, crossOrigin?: string): boolean; static Handlers: LoaderHandler; } - export interface LoaderHandler { - handlers: any[]; - add(regex: string, loader: Loader): void; - get(file: string): Loader; + export interface LoaderHandler{ + handlers:any[]; + add(regex:string, loader:Loader):void; + get(file: string):Loader; + } + + export class AnimationLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + load(url: string, onLoad: (animations: AnimationClip[]) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; + setCrossOrigin(crossOrigin: string): void; + parse(json: any, onLoad: (animations: AnimationClip[])=>void): void; } export class BinaryTextureLoader { - constructor(); + constructor(manager?: LoadingManager); + manager: LoadingManager; load(url: string, onLoad: (dataTexture: DataTexture) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; + setCrossOrigin(crossOrigin: string): void; } export class BufferGeometryLoader { @@ -1697,24 +1947,23 @@ declare module THREE { } export var Cache: Cache; - export class CompressedTextureLoader { - constructor(); + export class CompressedTextureLoader{ + constructor(manager?: LoadingManager); - load(url: string, onLoad: (bufferGeometry: BufferGeometry) => void, onError?: (event: any) => void): void; + manager: LoadingManager; + load(url: string, onLoad: (texture: CompressedTexture) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; + setCrossOrigin(crossOrigin: string): void; } - export class DataTextureLoader extends BinaryTextureLoader { - // alias for BinaryTextureLoader. + export class CubeTextureLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + load(url: string, onLoad: (texture: CubeTexture) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; + setCrossOrigin(crossOrigin: string): void; + } - /* - * GeometryLoader class is experimental, and it is not yet included in the compiled source code. - * - export class GeometryLoader { - - } - */ - /** * A loader for loading an image. * Unlike other loaders, this one emits events instead of using predefined callbacks. So if you're interested in getting notified when things happen, you need to add listeners to the object. @@ -1739,19 +1988,14 @@ declare module THREE { * A loader for loading objects in JSON format. */ export class JSONLoader extends Loader { - constructor(); - + constructor(manager?: LoadingManager); + manager: LoadingManager; withCredentials: boolean; - /** - * @param url - * @param callback. This function will be called with the loaded model as an instance of geometry when the load is completed. - * @param texturePath If not specified, textures will be assumed to be in the same folder as the Javascript model file. - */ - load(url: string, callback: (geometry: Geometry, materials: Material[]) => void , texturePath?: string): void; - - loadAjaxJSON(context: JSONLoader, url: string, callback: (geometry: Geometry, materials: Material[]) => void , texturePath?: string, callbackProgress?: (progress: Progress) => void ): void; + load(url: string, onLoad?: (geometry: Geometry, materials: Material[]) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; + setCrossOrigin(crossOrigin: string): void; + setTexturePath( value: string ): void; parse(json: any, texturePath?: string): { geometry: Geometry; materials?: Material[] }; } @@ -1783,16 +2027,19 @@ declare module THREE { itemStart(url: string): void; itemEnd(url: string): void; - + itemError(url: string): void; } export class MaterialLoader { constructor(manager?: LoadingManager); manager: LoadingManager; + textures: { [key:string]:Texture }; load(url: string, onLoad: (material: Material) => void): void; setCrossOrigin(crossOrigin: string): void; + setTextures(textures: { [key:string]:Texture }): void; + getTexture( name: string ):Texture; parse(json: any): Material; } @@ -1829,7 +2076,7 @@ declare module THREE { * * @param url */ - load(url: string, onLoad: (texture: Texture) => void): void; + load(url: string, onLoad: (texture: Texture) => void): Texture; setCrossOrigin(crossOrigin: string): void; } @@ -1841,9 +2088,10 @@ declare module THREE { responseType: string; crossOrigin: string; - load(url: string, onLoad?: (responseText: string) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; + load(url: string, onLoad?: (responseText: string) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): any; setResponseType(responseType: string): void; setCrossOrigin(crossOrigin: string): void; + setWithCredentials( withCredentials: string ): void; } // Materials ////////////////////////////////////////////////////////////////////////////////// @@ -1928,7 +2176,7 @@ declare module THREE { blendDstAlpha: number; blendEquationAlpha: number; - depthFunc: Function; + depthFunc: DepthModes; /** * Whether to have depth test enabled when rendering this material. Default is true. @@ -1943,6 +2191,8 @@ declare module THREE { colorWrite: boolean; + precision: any; + /** * Whether to use polygon offset. Default is false. This corresponds to the POLYGON_OFFSET_FILL WebGL feature. */ @@ -1980,8 +2230,9 @@ declare module THREE { needsUpdate: boolean; setValues(values: Object): void; - toJSON(): any; - clone(material?:Material): Material; + toJSON(meta?: any): any; + clone(): Material; + clone(source?:Material): Material; update(): void; dispose(): void; @@ -2012,6 +2263,7 @@ declare module THREE { fog: boolean; clone(): LineBasicMaterial; + copy(source: LineBasicMaterial): LineBasicMaterial; } export interface LineDashedMaterialParameters extends MaterialParameters { @@ -2036,6 +2288,7 @@ declare module THREE { fog: boolean; clone(): LineDashedMaterial; + copy(source: LineDashedMaterial): LineDashedMaterial; } /** @@ -2043,6 +2296,7 @@ declare module THREE { */ export interface MeshBasicMaterialParameters extends MaterialParameters{ color?: number; + opacity?: number; map?: Texture; aoMap?: Texture; aoMapIntensity?: number; @@ -2052,15 +2306,16 @@ declare module THREE { combine?: Combine; reflectivity?: number; refractionRatio?: number; - fog?: boolean; shading?: Shading; + blending?: Blending; + depthTest?: boolean; + depthWrite?: boolean; wireframe?: boolean; wireframeLinewidth?: number; - wireframeLinecap?: string; - wireframeLinejoin?: string; vertexColors?: Colors; skinning?: boolean; morphTargets?: boolean; + fog?: boolean; } export class MeshBasicMaterial extends Material { @@ -2087,6 +2342,7 @@ declare module THREE { morphTargets: boolean; clone(): MeshBasicMaterial; + copy(source: MeshBasicMaterial): MeshBasicMaterial; } export interface MeshDepthMaterialParameters extends MaterialParameters{ @@ -2101,21 +2357,13 @@ declare module THREE { wireframeLinewidth: number; clone(): MeshDepthMaterial; - } - - // MeshFaceMaterial does not inherit the Material class in the original code. However, it should treat as Material class. - // See tests/canvas/canvas_materials.ts. - export class MeshFaceMaterial extends Material { - constructor(materials?: Material[]); - materials: Material[]; - - toJSON(): any; - clone(): MeshFaceMaterial; + copy(source: MeshDepthMaterial): MeshDepthMaterial; } export interface MeshLambertMaterialParameters extends MaterialParameters{ color?: number; emissive?: number; + opacity?: number; map?: Texture; specularMap?: Texture; alphaMap?: Texture; @@ -2126,8 +2374,6 @@ declare module THREE { fog?: boolean; wireframe?: boolean; wireframeLinewidth?: number; - wireframeLinecap?: string; - wireframeLinejoin?: string; vertexColors?: Colors; skinning?: boolean; morphTargets?: boolean; @@ -2136,6 +2382,7 @@ declare module THREE { export class MeshLambertMaterial extends Material { constructor(parameters?: MeshLambertMaterialParameters); + color: Color; emissive: Color; map: Texture; @@ -2156,39 +2403,21 @@ declare module THREE { morphNormals: boolean; clone(): MeshLambertMaterial; + copy(source: MeshLambertMaterial): MeshLambertMaterial; } export interface MeshNormalMaterialParameters extends MaterialParameters{ - /** Line color in hexadecimal. Default is 0xffffff. */ - color?: number; - /** Sets the texture map. Default is null */ - map?: Texture; - /** Set light map. Default is null. */ - lightMap?: Texture; - /** Set specular map. Default is null. */ - specularMap?: Texture; - /** Set alpha map. Default is null. */ - alphaMap?: Texture; - /** Set env map. Default is null. */ - envMap?: Texture; - /** Define whether the material color is affected by global fog settings. Default is false. */ - fog?: boolean; - /** How the triangles of a curved surface are rendered. Default is THREE.SmoothShading. */ + opacity?: number; shading?: Shading; + blending?: Blending; + depthTest?: boolean; + depthWrite?: boolean; + /** Render geometry as wireframe. Default is false (i.e. render as smooth shaded). */ wireframe?: boolean; /** Controls wireframe thickness. Default is 1. */ wireframeLinewidth?: number; - /** Define appearance of line ends. Default is 'round'. */ - wireframeLinecap?: string; - /** Define appearance of line joints. Default is 'round'. */ - wireframeLinejoin?: string; - /** Define how the vertices gets colored. Default is THREE.NoColors. */ - vertexColors?: Colors; - /** Define whether the material uses skinning. Default is false. */ - skinning?: boolean; - /** Define whether the material uses morphTargets. Default is false. */ - morphTargets?: boolean; + } export class MeshNormalMaterial extends Material { @@ -2199,51 +2428,22 @@ declare module THREE { morphTargets: boolean; clone(): MeshNormalMaterial; + copy(source: MeshNormalMaterial): MeshNormalMaterial; } export interface MeshPhongMaterialParameters extends MaterialParameters { /** geometry color in hexadecimal. Default is 0xffffff. */ color?: number; - /** Sets the texture map. Default is null */ - map?: Texture; - /** Set light map. Default is null */ - lightMap?: Texture; - lightMapIntensity?: number; - - aoMap?: Texture; - aoMapIntensity?: number; - emissiveMap?: Texture; - - /** Set specular map. Default is null */ - specularMap?: Texture; - /** Set alpha map. Default is null */ - alphaMap?: Texture; - /** Set env map. Default is null */ - envMap?: Texture; - /** Define whether the material color is affected by global fog settings. Default is true */ - fog?: boolean; - /** Define shading type. Default is THREE.SmoothShading */ - shading?: Shading; - /** render geometry as wireframe. Default is false */ - wireframe?: string; - /** Line thickness. Default is 1. */ - wireframeLinewidth?: number; - /** Define appearance of line ends. Default is 'round' */ - wireframeLinecap?: string; - /** Define appearance of line joints. Default is 'round'. */ - wireframeLinejoin?: string; - /** Define how the vertices gets colored. Default is THREE.NoColors. */ - vertexColors?: Colors; - /** Define whether the material uses skinning. Default is false. */ - skinning?: boolean; - - /** Define whether the material uses morphTargets. Default is false. */ - morphTargets?: boolean; - emissive?: number; specular?: number; shininess?: number; - metal?: boolean; + opacity?: number; + map?: Texture; + lightMap?: Texture; + lightMapIntensity?: number; + aoMap?: Texture; + aoMapIntensity?: number; + emissiveMap?: Texture; bumpMap?: Texture; bumpScale?: number; normalMap?: Texture; @@ -2251,10 +2451,23 @@ declare module THREE { displacementMap?: Texture; displacementScale?: number; displacementBias?: number; + specularMap?: Texture; + alphaMap?: Texture; + envMap?: Texture; combine?: Combine; reflectivity?: number; refractionRatio?: number; + shading?: Shading; + blending?: Blending; + depthTest?: boolean; + depthWrite?: boolean; + wireframe?: string; + wireframeLinewidth?: number; + vertexColors?: Colors; + skinning?: boolean; + morphTargets?: boolean; morphNormals?: boolean; + fog?: boolean; } export class MeshPhongMaterial extends Material { @@ -2296,19 +2509,39 @@ declare module THREE { morphNormals: boolean; clone(): MeshPhongMaterial; + copy(source: MeshPhongMaterial): MeshPhongMaterial; } - export interface PointCloudMaterialParameters extends MaterialParameters{ + // MultiMaterial does not inherit the Material class in the original code. However, it should treat as Material class. + // See tests/canvas/canvas_materials.ts. + export class MultiMaterial extends Material { + constructor(materials?: Material[]); + materials: Material[]; + + toJSON(): any; + clone(): MultiMaterial; + } + + // deprecated + export class MeshFaceMaterial extends MultiMaterial { + + } + + export interface PointsMaterialParameters extends MaterialParameters{ color?: number; + opacity?: number; map?: Texture; size?: number; sizeAttenuation?: boolean; + blending?: Blending, + depthTest?: boolean; + depthWrite?: boolean; vertexColors?: Colors; fog?: boolean; } - export class PointCloudMaterial extends Material { - constructor(parameters?: PointCloudMaterialParameters); + export class PointsMaterial extends Material { + constructor(parameters?: PointsMaterialParameters); color: Color; map: Texture; @@ -2317,39 +2550,31 @@ declare module THREE { vertexColors: boolean; fog: boolean; - clone(): PointCloudMaterial; - } - - // deprecated - export class ParticleBasicMaterial extends PointCloudMaterial{ - - } - - // deprecated - export class ParticleSystemMaterial extends PointCloudMaterial{ - + clone(): PointsMaterial; + copy(source: PointsMaterial): PointsMaterial; } export class RawShaderMaterial extends ShaderMaterial { constructor(parameters?: ShaderMaterialParameters); - } export interface ShaderMaterialParameters extends MaterialParameters { defines?: any; uniforms?: any; - vertexShader?: string; fragmentShader?: string; + vertexShader?: string; shading?: Shading; - linewidth?: number; + blending?: Blending; + depthTest?: boolean; + depthWrite?: boolean; wireframe?: boolean; wireframeLinewidth?: number; - fog?: boolean; lights?: boolean; vertexColors?: Colors; skinning?: boolean; morphTargets?: boolean; morphNormals?: boolean; + fog?: boolean; } export class ShaderMaterial extends Material { @@ -2369,14 +2594,24 @@ declare module THREE { skinning: boolean; morphTargets: boolean; morphNormals: boolean; + derivatives: boolean; + defaultAttributeValues: any; + index0AttributeName: string; clone(): ShaderMaterial; + copy(source: ShaderMaterial): ShaderMaterial; + toJSON(meta: any): any; } export interface SpriteMaterialParameters extends MaterialParameters { color?: number; + opacity?: number; map?: Texture; - rotation?: number; + blending?: Blending; + depthTest?: boolean; + depthWrite?: boolean; + uvOffset?: Vector2; + uvScale?: Vector2; fog?: boolean; } @@ -2389,6 +2624,7 @@ declare module THREE { fog: boolean; clone(): SpriteMaterial; + copy(source: SpriteMaterial): SpriteMaterial; } // Math ////////////////////////////////////////////////////////////////////////////////// @@ -2402,6 +2638,7 @@ declare module THREE { set(min: Vector2, max: Vector2): Box2; setFromPoints(points: Vector2[]): Box2; setFromCenterAndSize(center: Vector2, size: Vector2): Box2; + clone(): Box2; copy(box: Box2): Box2; makeEmpty(): Box2; empty(): boolean; @@ -2420,7 +2657,6 @@ declare module THREE { union(box: Box2): Box2; translate(offset: Vector2): Box2; equals(box: Box2): boolean; - clone(): Box2; } export class Box3 { @@ -2433,6 +2669,7 @@ declare module THREE { setFromPoints(points: Vector3[]): Box3; setFromCenterAndSize(center: Vector3, size: Vector3): Box3; setFromObject(object: Object3D): Box3; + clone(): Box3; copy(box: Box3): Box3; makeEmpty(): Box3; empty(): boolean; @@ -2453,7 +2690,6 @@ declare module THREE { applyMatrix4(matrix: Matrix4): Box3; translate(offset: Vector3): Box3; equals(box: Box3): boolean; - clone(): Box3; } export interface HSL { @@ -2520,6 +2756,11 @@ declare module THREE { */ setStyle(style: string): Color; + /** + * Clones this color. + */ + clone(): Color; + /** * Copies given color. * @param color Color to copy. @@ -2575,13 +2816,8 @@ declare module THREE { multiplyScalar(s: number): Color; lerp(color: Color, alpha: number): Color; equals(color: Color): boolean; - fromArray(rgb: number[]): Color; + fromArray(rgb: number[], offset?: number): Color; toArray(array?: number[], offset?: number): number[]; - - /** - * Clones this color. - */ - clone(): Color; } export class ColorKeywords { @@ -2743,6 +2979,7 @@ declare module THREE { order: string; set(x: number, y: number, z: number, order?: string): Euler; + clone(): Euler; copy(euler: Euler): Euler; setFromRotationMatrix(m: Matrix4, order?: string, update?: boolean): Euler; setFromQuaternion(q:Quaternion, order?: string, update?: boolean): Euler; @@ -2753,8 +2990,6 @@ declare module THREE { toArray(array?: number[], offset?: number): number[]; toVector3(optionalResult?: Vector3): Vector3; onChange: () => void; - - clone(): Euler; } /** @@ -2769,14 +3004,13 @@ declare module THREE { planes: Plane[]; set(p0?: number, p1?: number, p2?: number, p3?: number, p4?: number, p5?: number): Frustum; + clone(): Frustum; copy(frustum: Frustum): Frustum; setFromMatrix(m: Matrix4): Frustum; intersectsObject(object: Object3D): boolean; intersectsSphere(sphere: Sphere): boolean; intersectsBox(box: Box3): boolean; containsPoint(point: Vector3): boolean; - clone(): Frustum; - } export class Line3 { @@ -2785,6 +3019,7 @@ declare module THREE { end: Vector3; set(start?: Vector3, end?: Vector3): Line3; + clone(): Line3; copy(line: Line3): Line3; center(optionalTarget?: Vector3): Vector3; delta(optionalTarget?: Vector3): Vector3; @@ -2795,7 +3030,6 @@ declare module THREE { closestPointToPoint(point: Vector3, clampToLine?: boolean, optionalTarget?: Vector3): Vector3; applyMatrix4(matrix: Matrix4): Line3; equals(line: Line3): boolean; - clone(): Line3; } interface Math { @@ -2804,12 +3038,12 @@ declare module THREE { /** * Clamps the x to be between a and b. * - * @param x Value to be clamped. - * @param a Minimum value - * @param b Maximum value. + * @param value Value to be clamped. + * @param min Minimum value + * @param max Maximum value. */ - clamp(x: number, a: number, b: number): number; - + clamp(value: number, min: number, max: number): number; + euclideanModulo( n: number, m: number ): number; /** * Linear mapping of x from range [a1, a2] to range [b1, b2]. @@ -2853,6 +3087,8 @@ declare module THREE { isPowerOfTwo(value: number): boolean; + nearestPowerOfTwo(value: number): number; + nextPowerOfTwo(value: number): number; } @@ -2925,8 +3161,10 @@ declare module THREE { set(n11: number, n12: number, n13: number, n21: number, n22: number, n23: number, n31: number, n32: number, n33: number): Matrix3; identity(): Matrix3; + clone(): Matrix3; copy(m: Matrix3): Matrix3; applyToVector3Array(array: number[], offset?: number, length?: number): number[]; + applyToBuffer( buffer: BufferAttribute, offset?: number, length?: number): BufferAttribute; multiplyScalar(s: number): Matrix3; determinant(): number; getInverse(matrix: Matrix3, throwOnInvertible?: boolean): Matrix3; @@ -2945,7 +3183,7 @@ declare module THREE { transposeIntoArray(r: number[]): number[]; fromArray(array: number[]): Matrix3; toArray(): number[]; - clone(): Matrix3; + } /** @@ -2986,13 +3224,9 @@ declare module THREE { * Resets this matrix to identity. */ identity(): Matrix4; - - /** - * Copies a matrix m into this matrix. - */ + clone(): Matrix4; copy(m: Matrix4): Matrix4; copyPosition(m: Matrix4): Matrix4; - extractBasis( xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): Matrix4; makeBasis( xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): Matrix4; @@ -3028,7 +3262,7 @@ declare module THREE { */ multiplyScalar(s: number): Matrix4; applyToVector3Array(array: number[], offset?: number, length?: number): number[]; - + applyToBuffer( buffer: BufferAttribute, offset?: number, length?: number): BufferAttribute; /** * Computes determinant of this matrix. * Based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm @@ -3127,12 +3361,9 @@ declare module THREE { * Creates an orthographic projection matrix. */ makeOrthographic(left: number, right: number, top: number, bottom: number, near: number, far: number): Matrix4; + equals( matrix: Matrix4 ): boolean; fromArray(array: number[]): Matrix4; toArray(): number[]; - /** - * Clones this matrix. - */ - clone(): Matrix4; } export class Plane { @@ -3145,6 +3376,7 @@ declare module THREE { setComponents(x: number, y: number, z: number, w: number): Plane; setFromNormalAndCoplanarPoint(normal: Vector3, point: Vector3): Plane; setFromCoplanarPoints(a: Vector3, b: Vector3, c: Vector3): Plane; + clone(): Plane; copy(plane: Plane): Plane; normalize(): Plane; negate(): Plane; @@ -3158,7 +3390,6 @@ declare module THREE { applyMatrix4(matrix: Matrix4, optionalNormalMatrix?: Matrix3): Plane; translate(offset: Vector3): Plane; equals(plane: Plane): boolean; - clone(): Plane; } /** @@ -3189,6 +3420,11 @@ declare module THREE { */ set(x: number, y: number, z: number, w: number): Quaternion; + /** + * Clones this quaternion. + */ + clone(): Quaternion; + /** * Copies values of q to this quaternion. */ @@ -3255,11 +3491,6 @@ declare module THREE { onChange: () => void; - /** - * Clones this quaternion. - */ - clone(): Quaternion; - /** * Adapted from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/. */ @@ -3273,6 +3504,7 @@ declare module THREE { direction: Vector3; set(origin: Vector3, direction: Vector3): Ray; + clone(): Ray; copy(ray: Ray): Ray; at(t: number, optionalTarget?: Vector3): Vector3; recast(t: number): Ray; @@ -3290,7 +3522,6 @@ declare module THREE { intersectTriangle(a: Vector3, b: Vector3, c: Vector3, backfaceCulling: boolean, optionalTarget?: Vector3): Vector3; applyMatrix4(matrix4: Matrix4): Ray; equals(ray: Ray): boolean; - clone(): Ray; } export class Sphere { @@ -3301,6 +3532,7 @@ declare module THREE { set(center: Vector3, radius: number): Sphere; setFromPoints(points: Vector3[], optionalCenter?: Vector3): Sphere; + clone(): Sphere; copy(sphere: Sphere): Sphere; empty(): boolean; containsPoint(point: Vector3): boolean; @@ -3311,8 +3543,6 @@ declare module THREE { applyMatrix4(matrix: Matrix4): Sphere; translate(offset: Vector3): Sphere; equals(sphere: Sphere): boolean; - - clone(): Sphere; } export interface SplineControlPoint { @@ -3377,6 +3607,7 @@ declare module THREE { set(a: Vector3, b: Vector3, c: Vector3): Triangle; setFromPointsAndIndices(points: Vector3[], i0: number, i1: number, i2: number): Triangle; + clone(): Triangle; copy(triangle: Triangle): Triangle; area(): number; midpoint(optionalTarget?: Vector3): Vector3; @@ -3385,7 +3616,6 @@ declare module THREE { barycoordFromPoint(point: Vector3, optionalTarget?: Vector3): Vector3; containsPoint(point: Vector3): boolean; equals(triangle: Triangle): boolean; - clone(): Triangle; static normal(a: Vector3, b: Vector3, c: Vector3, optionalTarget?: Vector3): Vector3; static barycoordFromPoint(point: Vector3, a: Vector3, b: Vector3, c: Vector3, optionalTarget: Vector3): Vector3; @@ -3515,6 +3745,9 @@ declare module THREE { x: number; y: number; + width: number; + height: number; + /** * Sets value of this vector. */ @@ -3539,7 +3772,10 @@ declare module THREE { * Gets a component of this vector. */ getComponent(index: number): number; - + /** + * Clones this vector. + */ + clone(): Vector2; /** * Copies value of v to this vector. */ @@ -3555,8 +3791,7 @@ declare module THREE { */ addScalar(s: number): Vector2; addVectors(a: Vector2, b: Vector2): Vector2; - addScaledVector(v: Vector2, s: number): Vector2; - + addScaledVector( v: Vector2, s: number ): Vector2; /** * Subtracts v from this vector. */ @@ -3571,7 +3806,7 @@ declare module THREE { /** * Multiplies this vector by scalar s. */ - multiplyScalar(s: number): Vector2; + multiplyScalar(scalar: number): Vector2; divide(v: Vector2): Vector2; /** @@ -3610,10 +3845,6 @@ declare module THREE { * Computes length of this vector. */ length(): number; - - /** - * Computes Manhattan length of this vector. - */ lengthManhattan(): number; /** @@ -3634,7 +3865,7 @@ declare module THREE { /** * Normalizes this vector and multiplies it by l. */ - setLength(l: number): Vector2; + setLength(length: number): Vector2; lerp(v: Vector2, alpha: number): Vector2; @@ -3651,12 +3882,7 @@ declare module THREE { fromAttribute( attribute: BufferAttribute, index: number, offset?: number): Vector2; - rotateAround(center: Vector2, angle: number): Vector2; - - /** - * Clones this vector. - */ - clone(): Vector2; + rotateAround( center: Vector2, angle: number ): Vector2; } /** @@ -3702,7 +3928,10 @@ declare module THREE { setComponent(index: number, value: number): void; getComponent(index: number): number; - + /** + * Clones this vector. + */ + clone(): Vector3; /** * Copies value of v to this vector. */ @@ -3719,6 +3948,7 @@ declare module THREE { * Sets this vector to a + b. */ addVectors(a: Vector3, b: Vector3): Vector3; + addScaledVector( v: Vector3, s: number ): Vector3; /** * Subtracts v from this vector. @@ -3841,11 +4071,6 @@ declare module THREE { toArray(xyz?: number[], offset?: number): number[]; fromAttribute( attribute: BufferAttribute, index: number, offset?: number): Vector3; - - /** - * Clones this vector. - */ - clone(): Vector3; } /** @@ -3887,7 +4112,10 @@ declare module THREE { setComponent(index: number, value: number): void; getComponent(index: number): number; - + /** + * Clones this vector. + */ + clone(): Vector4; /** * Copies value of v to this vector. */ @@ -3903,8 +4131,7 @@ declare module THREE { * Sets this vector to a + b. */ addVectors(a: Vector4, b: Vector4): Vector4; - addScaledVector(v: Vector4, s: number): Vector4; - + addScaledVector( v: Vector4, s: number ): Vector4; /** * Subtracts v from this vector. */ @@ -3978,7 +4205,7 @@ declare module THREE { /** * Normalizes this vector and multiplies it by l. */ - setLength(l: number): Vector4; + setLength(length: number): Vector4; /** * Linearly interpolate between this vector and v with alpha factor. @@ -3997,11 +4224,6 @@ declare module THREE { toArray(xyzw?: number[], offset?: number): number[]; fromAttribute( attribute: BufferAttribute, index: number, offset?: number): Vector4; - - /** - * Clones this vector. - */ - clone(): Vector4; } // Objects ////////////////////////////////////////////////////////////////////////////////// @@ -4010,12 +4232,30 @@ declare module THREE { constructor(skin: SkinnedMesh); skin: SkinnedMesh; + + clone(): Bone; + copy(source: Bone): Bone; } export class Group extends Object3D { constructor(); } + export class LOD extends Object3D { + constructor(); + + levels: any[]; + + addLevel(object: Object3D, distance?: number): void; + getObjectForDistance(distance: number): Object3D; + raycast(raycaster: Raycaster, intersects: any): void; + update(camera: Camera): void; + + clone(): LOD; + copy(source: LOD): LOD; + toJSON(meta: any): any; + } + export interface LensFlareProperty { texture: Texture; // Texture size: number; // size in pixels (-1 = use texture.width) @@ -4040,58 +4280,42 @@ declare module THREE { add(texture: Texture, size?: number, distance?: number, blending?: Blending, color?: Color): void; add(obj: Object3D): void; - updateLensFlares(): void; + + clone(): LensFlare; + copy(source: LensFlare): LensFlare; } export class Line extends Object3D { - constructor(geometry?: Geometry, material?: LineDashedMaterial, mode?: number); - constructor(geometry?: Geometry, material?: LineBasicMaterial, mode?: number); - constructor(geometry?: Geometry, material?: ShaderMaterial, mode?: number); - constructor(geometry?: BufferGeometry, material?: LineDashedMaterial, mode?: number); - constructor(geometry?: BufferGeometry, material?: LineBasicMaterial, mode?: number); - constructor(geometry?: BufferGeometry, material?: ShaderMaterial, mode?: number); + constructor( + geometry?: Geometry | BufferGeometry, + material?: LineDashedMaterial | LineBasicMaterial | ShaderMaterial, + mode?: number + ); geometry: Geometry|BufferGeometry; material: Material; // LineDashedMaterial or LineBasicMaterial or ShaderMaterial raycast(raycaster: Raycaster, intersects: any): void; - clone(object?: Line): Line; + clone(): Line; + copy(source: Line): Line; } export class LineSegments extends Line { - constructor(geometry?: Geometry, material?: LineDashedMaterial); - constructor(geometry?: Geometry, material?: LineBasicMaterial); - constructor(geometry?: Geometry, material?: ShaderMaterial); - constructor(geometry?: BufferGeometry, material?: LineDashedMaterial); - constructor(geometry?: BufferGeometry, material?: LineBasicMaterial); - constructor(geometry?: BufferGeometry, material?: ShaderMaterial); + constructor( + geometry?: Geometry | BufferGeometry, + material?: LineDashedMaterial | LineBasicMaterial | ShaderMaterial, + mode?: number + ); - geometry: Geometry|BufferGeometry; - material: Material; // LineDashedMaterial or LineBasicMaterial or ShaderMaterial - - raycast(raycaster: Raycaster, intersects: any): void; - clone(object?: LineSegments): LineSegments; + clone(): LineSegments; + copy(source: LineSegments): LineSegments; } enum LineMode{} var LineStrip: LineMode; var LinePieces: LineMode; - export class LOD extends Object3D { - constructor(); - - levels: any[]; - /** Deprecated, use levels instead */ - objects: any[]; - - addLevel(object: Object3D, distance?: number): void; - getObjectForDistance(distance: number): Object3D; - raycast(raycaster: Raycaster, intersects: any): void; - update(camera: Camera): void; - clone(object?: LOD): LOD; - } - export class Mesh extends Object3D { constructor(geometry?: Geometry, material?: Material); constructor(geometry?: BufferGeometry, material?: Material); @@ -4102,39 +4326,8 @@ declare module THREE { updateMorphTargets(): void; getMorphTargetIndexByName(name: string): number; raycast(raycaster: Raycaster, intersects: any): void; - clone(object?: Mesh): Mesh; - } - - export class MorphAnimMesh extends Mesh { - constructor(geometry?: Geometry, material?: MeshBasicMaterial); - constructor(geometry?: Geometry, material?: MeshDepthMaterial); - constructor(geometry?: Geometry, material?: MeshFaceMaterial); - constructor(geometry?: Geometry, material?: MeshLambertMaterial); - constructor(geometry?: Geometry, material?: MeshNormalMaterial); - constructor(geometry?: Geometry, material?: MeshPhongMaterial); - constructor(geometry?: Geometry, material?: ShaderMaterial); - - duration: number; // milliseconds - mirroredLoop: boolean; - time: number; - lastKeyframe: number; - currentKeyframe: number; - direction: number; - directionBackwards: boolean; - - startKeyframe: number; - endKeyframe: number; - length: number; - - setFrameRange(start: number, end: number): void; - setDirectionForward(): void; - setDirectionBackward(): void; - parseAnimations(): void; - setAnimationLabel(label: string, start: number, end: number): void; - playAnimation(label: string, fps: number): void; - updateAnimation(delta: number): void; - interpolateTargets( a: number, b: number, t: number ): void; - clone(object?: MorphAnimMesh): MorphAnimMesh; + clone(): Mesh; + copy(source: Mesh): Mesh; } /** @@ -4142,16 +4335,16 @@ declare module THREE { * * @see src/objects/ParticleSystem.js */ - export class PointCloud extends Object3D { + export class Points extends Object3D { /** * @param geometry An instance of Geometry. * @param material An instance of Material (optional). */ - constructor(geometry: Geometry, material?: PointCloudMaterial); - constructor(geometry: Geometry, material?: ShaderMaterial); - constructor(geometry: BufferGeometry, material?: PointCloudMaterial); - constructor(geometry: BufferGeometry, material?: ShaderMaterial); + constructor( + geometry: Geometry | BufferGeometry, + material?: PointsMaterial | ShaderMaterial + ); /** * An instance of Geometry, where each vertex designates the position of a particle in the system. @@ -4164,7 +4357,8 @@ declare module THREE { material: Material; raycast(raycaster: Raycaster, intersects: any): void; - clone(object?: PointCloud): PointCloud; + clone(): Points; + copy(source: Points): Points; } export class Skeleton { @@ -4183,6 +4377,7 @@ declare module THREE { pose(): void; update(): void; clone(): Skeleton; + } export class SkinnedMesh extends Mesh { @@ -4202,7 +4397,8 @@ declare module THREE { pose(): void; normalizeSkinWeights(): void; updateMatrixWorld(force?: boolean): void; - clone(object?: SkinnedMesh): SkinnedMesh; + clone(): SkinnedMesh; + copy(source?: SkinnedMesh): SkinnedMesh; skeleton: Skeleton; } @@ -4214,7 +4410,8 @@ declare module THREE { material: SpriteMaterial; raycast(raycaster: Raycaster, intersects: any): void; - clone(object?: Sprite): Sprite; + clone(): Sprite; + copy(source?: Sprite): Sprite; } @@ -4391,8 +4588,6 @@ declare module THREE { }; }; - shadowMap: WebGLShadowMap; - /** * Return the WebGL context. */ @@ -4518,24 +4713,7 @@ declare module THREE { setRenderTarget(renderTarget: RenderTarget): void; readRenderTargetPixels( renderTarget: RenderTarget, x: number, y: number, width: number, height: number, buffer: any ): void; } - - export interface WebGLCapabilities { - getMaxPrecision(precision: string): string; - precision: string; - logarithmicDepthBuffer: boolean; - maxTextures: number; - maxVertexTextures: number; - maxTextureSize: number; - maxCubemapSize: number; - maxAttributes: number; - maxVertexUniforms: number; - maxVaryings: number; - maxFragmentUniforms: number; - vertexTextures: boolean; - floatFragmentTextures: boolean; - floatVertexTextures: boolean; - } - + export interface RenderTarget { } @@ -4554,6 +4732,7 @@ declare module THREE { export class WebGLRenderTarget implements RenderTarget { constructor(width: number, height: number, options?: WebGLRenderTargetOptions); + uuid: string; width: number; height: number; wrapS: Wrapping; @@ -4572,6 +4751,7 @@ declare module THREE { setSize(width: number, height: number): void; clone(): WebGLRenderTarget; + copy(source: WebGLRenderTarget): WebGLRenderTarget; dispose(): void; @@ -4593,27 +4773,33 @@ declare module THREE { [name: string]: string; common: string; + alphamap_fragment: string; alphamap_pars_fragment: string; alphatest_fragment: string; + aomap_fragment: string; + aomap_pars_fragment: string; + begin_vertex: string; + beginnormal_vertex: string; bumpmap_pars_fragment: string; color_fragment: string; color_pars_fragment: string; color_pars_vertex: string; color_vertex: string; - default_vertex: string; defaultnormal_vertex: string; + displacementmap_pars_vertex: string; + displacementmap_vertex: string; + emissivemap_fragment: string; + emissivemap_pars_fragment: string; envmap_fragment: string; envmap_pars_fragment: string; envmap_pars_vertex: string; envmap_vertex: string; fog_fragment: string; fog_pars_fragment: string; - + hemilight_fragment: string; lightmap_fragment: string; lightmap_pars_fragment: string; - lightmap_pars_vertex: string; - lightmap_vertex: string; lights_lambert_pars_vertex: string; lights_lambert_vertex: string; lights_phong_fragment: string; @@ -4627,14 +4813,14 @@ declare module THREE { logdepthbuf_vertex: string; map_fragment: string; map_pars_fragment: string; - map_pars_vertex: string; map_particle_fragment: string; map_particle_pars_fragment: string; - map_vertex: string; morphnormal_vertex: string; morphtarget_pars_vertex: string; morphtarget_vertex: string; + normal_phong_fragment: string; normalmap_pars_fragment: string; + project_vertex: string; shadowmap_fragment: string; shadowmap_pars_fragment: string; shadowmap_pars_vertex: string; @@ -4645,6 +4831,12 @@ declare module THREE { skinnormal_vertex: string; specularmap_fragment: string; specularmap_pars_fragment: string; + uv2_pars_fragment: string; + uv2_pars_vertex: string; + uv2_vertex: string; + uv_pars_fragment: string; + uv_pars_vertex: string; + uv_vertex: string; worldpos_vertex: string; } @@ -4673,11 +4865,15 @@ declare module THREE { export var UniformsLib: { common: any; - bump: any; + aomap: any; + lightmap: any; + emissivemap: any; + bumpmap: any; normalmap: any; + displacementmap: any; fog: any; lights: any; - particle: any; + points: any; shadowmap: any; }; @@ -4687,13 +4883,73 @@ declare module THREE { }; // Renderers / WebGL ///////////////////////////////////////////////////////////////////// - export class WebGLExtensions { - constructor(gl: WebGLRenderingContext); + export class WebGLBufferRenderer{ + constructor(_gl: any, extensions: any, _infoRender: any); // WebGLRenderingContext + + setMode( value: any ): void; + render( start: any, count: any ): void; + renderInstances( geometry: any ): void; + } + + export class WebGLCapabilities{ + constructor(gl: any, extensions: any, parameters: any); // WebGLRenderingContext + + getMaxPrecision: any; + precision: any; + maxTextures: any; + maxVertexTextures: any; + maxTextureSize: any; + maxCubemapSize: any; + maxAttributes: any; + maxVertexUniforms: any; + maxVaryings: any; + maxFragmentUniforms: any; + vertexTextures: any; + floatFragmentTextures: any; + floatVertexTextures: any; + } + + export class WebGLExtensions{ + constructor(gl: any); // WebGLRenderingContext get(name: string): any; } - export class WebGLProgram { + interface WebGLGeometriesInstance { + new (gl: any, properties: any, info: any): void; + get( object: any ): any; + } + interface WebGLGeometriesStatic{ + (_gl: any, extensions: any, _infoRender: any): WebGLGeometriesInstance; + } + export var WebGLGeometries: WebGLGeometriesStatic; + + + interface WebGLIndexedBufferRendererInstance { + new (gl: any, properties: any, info: any): void; + setMode( value: any ): void; + setIndex( index: any ): void; + render( start: any, count: any ): void; + renderInstances( geometry: any ): void; + } + interface WebGLIndexedBufferRendererStatic{ + (_gl: any, extensions: any, _infoRender: any): WebGLIndexedBufferRendererInstance; + } + export var WebGLIndexedBufferRenderer: WebGLIndexedBufferRendererStatic; + + + interface WebGLObjectsInstance { + new (gl: any, properties: any, info: any): void; + getAttributeBuffer( attribute: any ): any; + getWireframeAttribute(geometry: any): any; + update(object: any): void; + } + interface WebGLObjectsStatic{ + (gl: any, properties: any, info: any): WebGLObjectsInstance; + } + export var WebGLObjects: WebGLObjectsStatic; + + export class WebGLProgram{ constructor(renderer: WebGLRenderer, code: string, material: ShaderMaterial, parameters: WebGLRendererParameters); getUniforms(): any; @@ -4712,44 +4968,82 @@ declare module THREE { fragmentShader: WebGLShader; } - export class WebGLShader { - constructor(gl: WebGLRenderingContext, type: string, string: string); + interface WebGLProgramsInstance { + new (renderer: WebGLRenderer, capabilities: any): void; + + getParameters( material: any, lights: any, fog: any, object: any ): any[]; + getProgramCode( material: any, parameters: any ): any; + acquireProgram( material: any, parameters: any, code: any ): any; + releaseProgram( program: any ): void; + } + interface WebGLProgramsStatic{ + (): WebGLProgramsInstance; + } + export var WebGLPrograms: WebGLProgramsStatic; + + interface WebGLPropertiesInstance { + new (): void; + + get(object: any): any; + delete(object: any): void; + clear(): void; + } + interface WebGLPropertiesStatic{ + (): WebGLPropertiesInstance; + } + export var WebGLProperties: WebGLPropertiesStatic; + + export class WebGLShader{ + constructor(gl: any, type: string, string: string); } - interface WebGLStateInstance { - new(gl: WebGLRenderingContext, paramThreeToGL: Function): void; + interface WebGLShadowMapInstance{ + new ( _renderer: Renderer, _lights: any[], _objects: any[] ): void; + + enabled: boolean; + autoUpdate: boolean; + needsUpdate: boolean; + type: ShadowMapType; + cullFace: CullFace; + + render( scene: Scene ): void; + } + interface WebGLShadowMapStatic{ + ( _renderer: Renderer, _lights: any[], _objects: any[] ): WebGLStateInstance; + } + export var WebGLShadowMap: WebGLShadowMapStatic; + + interface WebGLStateInstance{ + new ( gl: any, extensions: any, paramThreeToGL: Function ): void; + init(): void; initAttributes(): void; enableAttribute(attribute: string): void; + enableAttributeAndDivisor( attribute: string, meshPerAttribute: any, extension: any ): void; disableUnusedAttributes(): void; - setBlending(blending: number, blendEquation: number, blendSrc: number, blendDst: number, blendEquationAlpha: number, blendSrcAlpha: number, blendDstAlpha: number): void; - setDepthTest(depthTest: number): void; - setDepthWrite(depthWrite: number): void; - setColorWrite(colorWrite: number): void; - setDoubleSided(doubleSided: number): void; - setFlipSided(flipSided: number): void; - setLineWidth(width: number): void; + enable( id: string ): void; + disable( id: string ): void; + getCompressedTextureFormats(): any; + setBlending( blending: number, blendEquation: number, blendSrc: number, blendDst: number, blendEquationAlpha: number, blendSrcAlpha: number, blendDstAlpha: number ): void; + setDepthFunc( func: Function): void; + setDepthTest( depthTest: number ): void; + setDepthWrite( depthWrite: number ): void; + setColorWrite( colorWrite: number ): void; + setFlipSided( flipSided: number ): void; + setLineWidth( width: number ): void; setPolygonOffset(polygonoffset: number, factor: number, units: number): void; + setScissorTest( scissorTest: boolean ): void; + activeTexture( webglSlot: any ): void; + bindTexture( webglType: any, webglTexture: any ): void; + compressedTexImage2D(): void; + texImage2D(): void; reset(): void; } - interface WebGLStateStatic { - (gl: WebGLRenderingContext, paramThreeToGL: Function): WebGLStateInstance; + interface WebGLStateStatic{ + ( gl: any, extensions: any, paramThreeToGL: Function ): WebGLStateInstance; } export var WebGLState: WebGLStateStatic; - interface WebGLTexturesInstance{ - new (webgglcontext: any): WebGLTexturesInstance; - - get(texture: Texture): any; // it will return result of gl.createTexture(). - create(texture: Texture): any; // it will return result of gl.createTexture(). - delete(texture: Texture): void; - } - interface WebGLTexturesStatic{ - (webgglcontext: any): WebGLTexturesInstance; - } - export var WebGLTextures: WebGLTexturesStatic; - - // Renderers / WebGL / Plugins ///////////////////////////////////////////////////////////////////// export interface RendererPlugin { init(renderer: WebGLRenderer): void; @@ -4763,18 +5057,6 @@ declare module THREE { render(scene: Scene, camera: Camera, viewportWidth: number, viewportHeight: number): void; } - export class WebGLShadowMap implements RendererPlugin { - constructor(); - - enabled: boolean; - type: ShadowMapType; - cullFace: CullFace; - - init(renderer: Renderer): void; - render(scene: Scene, camera: Camera): void; - update(scene: Scene, camera: Camera): void; - } - export class SpritePlugin implements RendererPlugin { constructor(); @@ -4853,13 +5135,13 @@ declare module THREE { overrideMaterial: Material; autoUpdate: boolean; - clone(): Scene; + copy(source: Scene): Scene; } // Textures ///////////////////////////////////////////////////////////////////// export class CanvasTexture extends Texture { constructor( - canvas?: HTMLCanvasElement, + canvas: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, mapping?: Mapping, wrapS?: Wrapping, wrapT?: Wrapping, @@ -4869,6 +5151,8 @@ declare module THREE { type?: TextureDataType, anisotropy?: number ); + + needsUpdate: boolean; } export class CompressedTexture extends Texture { @@ -4890,8 +5174,6 @@ declare module THREE { mipmaps: ImageData[]; flipY: boolean; generateMipmaps: boolean; - - clone(): CompressedTexture; } export class CubeTexture extends Texture { @@ -4909,7 +5191,7 @@ declare module THREE { images: any[]; - clone(texture?: CubeTexture): CubeTexture; + copy(source: CubeTexture): CubeTexture; } export class DataTexture extends Texture { @@ -4928,8 +5210,10 @@ declare module THREE { ); image: { data: ImageData; width: number; height: number; }; - - clone(): DataTexture; + magFilter: TextureFilter; + minFilter: TextureFilter; + flipY: boolean; + generateMipmaps: boolean; } export class Texture { @@ -4965,15 +5249,17 @@ declare module THREE { premultiplyAlpha: boolean; flipY: boolean; unpackAlignment: number; + version: number; needsUpdate: boolean; onUpdate: () => void; static DEFAULT_IMAGE: any; static DEFAULT_MAPPING: any; clone(): Texture; - update(): void; - toJSON(): any; + copy(source: Texture): Texture; + toJSON(meta: any): any; dispose(): void; + transformUv( uv: Vector ): void; // EventDispatcher mixins addEventListener(type: string, listener: (event: any) => void ): void; @@ -4999,50 +5285,27 @@ declare module THREE { } // Extras ///////////////////////////////////////////////////////////////////// - - export interface TypefaceData { - familyName: string; - cssFontWeight: string; - cssFontStyle: string; + export var CurveUtils: { + tangentQuadraticBezier(t: number, p0: number, p1: number, p2: number): number; + tangentCubicBezier(t: number, p0: number, p1: number, p2: number, p3: number): number; + tangentSpline(t: number, p0: number, p1: number, p2: number, p3: number): number; + interpolate(p0: number, p1: number, p2: number, p3: number, t: number): number; } - export var FontUtils: { - faces: { [weight: string]: { [style: string]: Face3; }; }; - face: string; - weight: string; - style: string; - size: number; - divisions: number; - - getFace(): Face3; - loadFace(data: TypefaceData): TypefaceData; - drawText(text: string): { paths: Path[]; offset: number; }; - extractGlyphPoints(c: string, face: Face3, scale: number, offset: number, path: Path): { offset: number; path: Path; }; - - generateShapes(text: string, parameters?: { size?: number; curveSegments?: number; font?: string; weight?: string; style?: string; }): Shape[]; - Triangulate: { - (contour: Vector2[], indices: boolean): Vector2[]; - area(contour: Vector2[]): number; - }; - }; - - export var GeometryUtils: { - // DEPRECATED - merge(geometry1: Geometry, object2: Mesh, materialIndexOffset?: number): void; - - // DEPRECATED - merge(geometry1: Geometry, object2: Geometry, materialIndexOffset?: number): void; - - // DEPRECATED - center(geometry: Geometry): Vector3; - }; - + // deprecated. export var ImageUtils: { crossOrigin: string; + // deprecated. loadTexture(url: string, mapping?: Mapping, onLoad?: (texture: Texture) => void, onError?: (message: string) => void): Texture; + + // deprecated. loadTextureCube(array: string[], mapping?: Mapping, onLoad?: (texture: Texture) => void , onError?: (message: string) => void ): Texture; + + // deprecated. getNormalMap(image: HTMLImageElement, depth?: number): HTMLCanvasElement; + + // deprecated. generateDataTexture(width: number, height: number, color: Color): DataTexture; }; @@ -5052,100 +5315,15 @@ declare module THREE { attach(child: Object3D, scene: Scene, parent: Object3D): void; }; - // Extras / Animation ///////////////////////////////////////////////////////////////////// - - export interface KeyFrame { - pos: number[]; - rot: number[]; - scl: number[]; - time: number; - } - - export interface KeyFrames { - keys: KeyFrame[]; - parent: number; - } - - export interface AnimationData { - JIT: number; - fps: number; - hierarchy: KeyFrames[]; - length: number; - name: string; - } - - export class Animation { - constructor(root: Mesh, data: AnimationData); - - root: Mesh; - data: AnimationData; - hierarchy: Bone[]; - currentTime: number; - timeScale: number; - isPlaying: boolean; - loop: boolean; - weight: number; - interpolationType: number; - - play(startTime?: number, weight?: number): void; - stop(): void; - reset(): void; - resetBlendWeights(): void; - update(delta: number): void; - getNextKeyWith(type: string, h: number, key: number): KeyFrame; - getPrevKeyWith(type: string, h: number, key: number): KeyFrame; - } - - export var AnimationHandler: { - LINEAR: number; - CATMULLROM: number; - CATMULLROM_FORWARD: number; - - animations: any[]; - - init(data: AnimationData): AnimationData; - parse(root: Mesh): Object3D[]; - play(animation: Animation): void; - stop(animation: Animation): void; - update(deltaTimeMS: number): void; + export var ShapeUtils: { + area( contour: number[] ): number; + triangulate( contour: number[], indices: boolean ): number[]; + triangulateShape( contour: number[], holes: any[] ): number[]; + isClockWise( pts: number[] ): boolean; + b2( t: number, p0: number, p1: number, p2: number ): number; + b3( t: number, p0: number, p1: number, p2: number, p3: number ): number; }; - export class KeyFrameAnimation { - constructor(data: any); - - root: Mesh; - data: AnimationData; - hierarchy: KeyFrames[]; - currentTime: number; - timeScale: number; - isPlaying: boolean; - isPaused: boolean; - loop: boolean; - - play(startTime?: number): void; - stop(): void; - update(delta: number): void; - getNextKeyWith(type: string, h: number, key: number): KeyFrame; - getPrevKeyWith(type: string, h: number, key: number): KeyFrame; - } - - export class MorphAnimation { - constructor(mesh: Mesh); - - mesh: Mesh; - frames: number; - currentTime: number; - duration: number; - loop: boolean; - lastFrame: number; - currentFrame: number; - isPlaying: boolean; - - play(): void; - pause(): void; - update(delta: number): void; - } - // Extras / Audio ///////////////////////////////////////////////////////////////////// export class Audio extends Object3D { @@ -5157,16 +5335,28 @@ declare module THREE { panner: PannerNode; autoplay: boolean; startTime: number; + playbackRate: number; isPlaying: boolean; load(file: string): Audio; play(): void; pause(): void; stop(): void; + connect(): void; + disconnect(): void; + setFilter(value: any): void; + getFilter(): any; + setPlaybackRate(value: number): void; + getPlaybackRate(): number; + setLoop(value: boolean): void; + getLoop(): boolean; setRefDistance(value: number): void; + getRefDistance(): number; setRolloffFactor(value: number): void; + getRolloffFactor(): number; setVolume(value: number): void; + getVolume(): number; updateMatrixWorld(force?: boolean): void; } @@ -5265,28 +5455,17 @@ declare module THREE { constructor(); curves: Curve[]; - bends: Path[]; autoClose: boolean; add(curve: Curve): void; checkConnection(): boolean; closePath(): void; + getPoint(t: number): T; getLength(): number; getCurveLengths(): number[]; - getBoundingBox(): BoundingBox; createPointsGeometry(divisions: number): Geometry; createSpacedPointsGeometry(divisions: number): Geometry; createGeometry(points: T[]): Geometry; - addWrapPath(bendpath: Path): void; - getTransformedPoints(segments: number, bends?: Path[]): T[]; - getTransformedSpacedPoints(segments: number, bends?: Path[]): T[]; - getWrapPoints(oldPts: T[], path: Path): T[]; - } - - export class Gyroscope extends Object3D { - constructor(); - - updateMatrixWorld(force?: boolean): void; } export enum PathActions { @@ -5338,28 +5517,21 @@ declare module THREE { extrude(options?: any): ExtrudeGeometry; makeGeometry(options?: any): ShapeGeometry; getPointsHoles(divisions: number): Vector2[][]; - getSpacedPointsHoles(divisions: number): Vector2[][]; extractAllPoints(divisions: number): { shape: Vector2[]; holes: Vector2[][]; }; extractPoints(divisions: number): Vector2[]; - extractAllSpacedPoints(divisions: Vector2): { - shape: Vector2[]; - holes: Vector2[][]; - }; } // Extras / Curves ///////////////////////////////////////////////////////////////////// export class ArcCurve extends EllipseCurve { - constructor(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number); + constructor(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean ); } export class CatmullRomCurve3 extends Curve { - constructor(points?: Vector3[]); - - points: Vector3[]; + constructor(); } export class ClosedSplineCurve3 extends Curve { @@ -5457,9 +5629,11 @@ declare module THREE { heightSegments: number; depthSegments: number; }; + + clone(): BoxGeometry; } - export class CircleBufferGeometry extends BufferGeometry { + export class CircleBufferGeometry extends Geometry { constructor(radius?: number, segments?: number, thetaStart?: number, thetaLength?: number); parameters: { @@ -5468,6 +5642,8 @@ declare module THREE { thetaStart: number; thetaLength: number; }; + + clone(): CircleBufferGeometry; } export class CircleGeometry extends Geometry { @@ -5479,6 +5655,8 @@ declare module THREE { thetaStart: number; thetaLength: number; }; + + clone(): CircleGeometry; } // deprecated @@ -5506,6 +5684,8 @@ declare module THREE { thetaStart: number; thetaLength: number; }; + + clone(): CylinderGeometry; } export class DodecahedronGeometry extends Geometry { @@ -5515,10 +5695,14 @@ declare module THREE { radius: number; detail: number; }; + + clone(): DodecahedronGeometry; } export class EdgesGeometry extends BufferGeometry { - constructor(geometry: Geometry|BufferGeometry, thresholdAngle?: number); + constructor(geometry: BufferGeometry, thresholdAngle: number); + + clone(): EdgesGeometry; } export class ExtrudeGeometry extends Geometry { @@ -5536,6 +5720,8 @@ declare module THREE { export class IcosahedronGeometry extends PolyhedronGeometry { constructor(radius: number, detail: number); + + clone(): IcosahedronGeometry; } export class LatheGeometry extends Geometry { @@ -5551,6 +5737,8 @@ declare module THREE { export class OctahedronGeometry extends PolyhedronGeometry { constructor(radius: number, detail: number); + + clone(): OctahedronGeometry; } export class ParametricGeometry extends Geometry { @@ -5572,6 +5760,8 @@ declare module THREE { widthSegments: number; heightSegments: number; }; + + clone(): PlaneBufferGeometry; } export class PlaneGeometry extends Geometry { @@ -5583,6 +5773,8 @@ declare module THREE { widthSegments: number; heightSegments: number; }; + + clone(): PlaneGeometry; } export class PolyhedronGeometry extends Geometry { @@ -5594,6 +5786,8 @@ declare module THREE { radius: number; detail: number; }; + + clone(): PolyhedronGeometry; } export class RingGeometry extends Geometry { @@ -5607,6 +5801,8 @@ declare module THREE { thetaStart: number; thetaLength: number; }; + + clone(): RingGeometry; } export class ShapeGeometry extends Geometry { @@ -5618,21 +5814,21 @@ declare module THREE { addShape(shape: Shape, options?: any): void; } - interface SphereParameters { - radius: number; - widthSegments: number; - heightSegments: number; - phiStart: number; - phiLength: number; - thetaStart: number; - thetaLength: number; - } export class SphereBufferGeometry extends BufferGeometry { constructor(radius: number, widthSegments?: number, heightSegments?: number, phiStart?: number, phiLength?: number, thetaStart?: number, thetaLength?: number); - parameters: SphereParameters; + parameters: { + radius: number; + widthSegments: number; + heightSegments: number; + phiStart: number; + phiLength: number; + thetaStart: number; + thetaLength: number; + }; + clone(): SphereBufferGeometry; } /** @@ -5652,27 +5848,21 @@ declare module THREE { */ constructor(radius: number, widthSegments?: number, heightSegments?: number, phiStart?: number, phiLength?: number, thetaStart?: number, thetaLength?: number); - parameters: SphereParameters; + parameters: { + radius: number; + widthSegments: number; + heightSegments: number; + phiStart: number; + phiLength: number; + thetaStart: number; + thetaLength: number; + }; } export class TetrahedronGeometry extends PolyhedronGeometry { constructor(radius?: number, detail?: number); - } - export interface TextGeometryParameters { - size?: number; // size of the text - height?: number; // thickness to extrude text - curveSegments?: number; // number of points on the curves - font?: string; // font name - weight?: string; // font weight (normal, bold) - style?: string; // font style (normal, italics) - bevelEnabled?: boolean; // turn on bevel - bevelThickness?: number; // how deep into text bevel goes - bevelSize?: number; // how far from text outline is bevel - } - - export class TextGeometry extends ExtrudeGeometry { - constructor(text: string, TextGeometryParameters?: TextGeometryParameters); + clone(): TetrahedronGeometry; } export class TorusGeometry extends Geometry { @@ -5685,6 +5875,8 @@ declare module THREE { tubularSegments: number; arc: number; }; + + clone(): TorusGeometry; } export class TorusKnotGeometry extends Geometry { @@ -5699,6 +5891,8 @@ declare module THREE { q: number; heightScale: number; }; + + clone(): TorusKnotGeometry; } @@ -5719,10 +5913,13 @@ declare module THREE { static NoTaper(u?: number): number; static SinusoidalTaper(u: number): number; + static FrenetFrames(path: Path, segments: number, closed: boolean): void; + + clone(): TubeGeometry; } - export class WireframeGeometry extends BufferGeometry { - constructor(geometry: Geometry|BufferGeometry); + export class WireframeGeometry extends BufferGeometry{ + constructor(geometry: Geometry | BufferGeometry); } // Extras / Helpers ///////////////////////////////////////////////////////////////////// @@ -5738,7 +5935,7 @@ declare module THREE { setColor(hex: number): void; } - export class AxisHelper extends Line { + export class AxisHelper extends LineSegments { constructor(size?: number); } @@ -5751,13 +5948,13 @@ declare module THREE { update(): void; } - export class BoxHelper extends Line { + export class BoxHelper extends LineSegments { constructor(object?: Object3D); update(object?: Object3D): void; } - export class CameraHelper extends Line { + export class CameraHelper extends LineSegments { constructor(camera: Camera); camera: Camera; @@ -5777,22 +5974,21 @@ declare module THREE { update(): void; } - export class EdgesHelper extends Line { + export class EdgesHelper extends LineSegments { constructor(object: Object3D, hex?: number, thresholdAngle?: number); } - export class FaceNormalsHelper extends Line { + export class FaceNormalsHelper extends LineSegments { constructor(object: Object3D, size?: number, hex?: number, linewidth?: number); object: Object3D; size: number; - normalMatrix: Matrix3; update(object?: Object3D): void; } - export class GridHelper extends Line { + export class GridHelper extends LineSegments { constructor(size: number, step: number); color1: Color; @@ -5820,7 +6016,7 @@ declare module THREE { update(): void; } - export class SkeletonHelper extends Line { + export class SkeletonHelper extends LineSegments { constructor(bone: Object3D); bones: Bone[]; @@ -5840,17 +6036,7 @@ declare module THREE { update(): void; } - export class VertexNormalsHelper extends Line { - constructor(object: Object3D, size?: number, hex?: number, linewidth?: number); - - object: Object3D; - size: number; - normalMatrix: Matrix3; - - update(object?: Object3D): void; - } - - export class VertexTangentsHelper extends Line { + export class VertexNormalsHelper extends LineSegments { constructor(object: Object3D, size?: number, hex?: number, linewidth?: number); object: Object3D; @@ -5859,7 +6045,7 @@ declare module THREE { update(object?: Object3D): void; } - export class WireframeHelper extends Line { + export class WireframeHelper extends LineSegments { constructor(object: Object3D, hex?: number); } @@ -5870,13 +6056,12 @@ declare module THREE { constructor(material: Material); material: Material; - - render(renderCallback: Function): void; + render(renderCallback:Function): void; } export interface MorphBlendMeshAnimation { - startFrame: number; - endFrame: number; + start: number; + end: number; length: number; fps: number; duration: number;