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;