diff --git a/notNeededPackages.json b/notNeededPackages.json
index 08f12e0071..6974f783f2 100644
--- a/notNeededPackages.json
+++ b/notNeededPackages.json
@@ -2202,6 +2202,12 @@
"sourceRepoURL": "https://github.com/terser-js/terser",
"asOfVersion": "3.12.0"
},
+ {
+ "libraryName": "three.js",
+ "typingsPackageName": "three",
+ "sourceRepoURL": "https://github.com/mrdoob/three.js",
+ "asOfVersion": "0.103.0"
+ },
{
"libraryName": "time-span",
"typingsPackageName": "time-span",
diff --git a/types/aframe/index.d.ts b/types/aframe/index.d.ts
index 67257c6f65..eb28f8e5bf 100644
--- a/types/aframe/index.d.ts
+++ b/types/aframe/index.d.ts
@@ -235,7 +235,6 @@ export interface Scene extends Entity {
behaviors: Behavior[];
camera: THREE.Camera;
canvas: HTMLCanvasElement;
- effect: THREE.VREffect;
isMobile: boolean;
object3D: THREE.Scene;
renderer: THREE.WebGLRenderer;
diff --git a/types/aframe/package.json b/types/aframe/package.json
new file mode 100644
index 0000000000..815d98a16c
--- /dev/null
+++ b/types/aframe/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "three": "^0.103.0"
+ }
+}
diff --git a/types/openjscad/package.json b/types/openjscad/package.json
new file mode 100644
index 0000000000..815d98a16c
--- /dev/null
+++ b/types/openjscad/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "three": "^0.103.0"
+ }
+}
diff --git a/types/physijs/package.json b/types/physijs/package.json
new file mode 100644
index 0000000000..59f9ced61b
--- /dev/null
+++ b/types/physijs/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "@types/three": "^0.93.28"
+ }
+}
diff --git a/types/physijs/test/body.ts b/types/physijs/test/body.ts
index d046880099..6a6d70cdd4 100644
--- a/types/physijs/test/body.ts
+++ b/types/physijs/test/body.ts
@@ -5,11 +5,9 @@ Physijs.scripts.ammo = 'examples/js/ammo.js';
var initScene, render, applyForce, setMousePosition, mouse_position,
ground_material, box_material,
- projector, renderer, render_stats, physics_stats, scene, ground, light, camera, box, boxes = [];
+ renderer, render_stats, physics_stats, scene, ground, light, camera, box, boxes = [];
initScene = function() {
- projector = new THREE.Projector;
-
renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMapEnabled = true;
@@ -135,7 +133,7 @@ setMousePosition = function(evt) {
-((evt.clientY / renderer.dom.clientHeight) * 2 - 1),
.5
);
- projector.unprojectVector(vector, camera);
+ vector.unproject(camera);
vector.sub(camera.position).normalize();
var coefficient = (box.position.y - camera.position.y) / vector.y
diff --git a/types/physijs/test/constraints_car.ts b/types/physijs/test/constraints_car.ts
index aa08737fb0..66adc18b82 100644
--- a/types/physijs/test/constraints_car.ts
+++ b/types/physijs/test/constraints_car.ts
@@ -5,12 +5,10 @@ Physijs.scripts.ammo = 'examples/js/ammo.js';
var initScene, render,
ground_material, car_material, wheel_material, wheel_geometry,
- projector, renderer, render_stats, physics_stats, scene, ground_geometry, ground, light, camera,
+ renderer, render_stats, physics_stats, scene, ground_geometry, ground, light, camera,
car: any = {};
initScene = function() {
- projector = new THREE.Projector;
-
renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.shadowMapEnabled = true;
diff --git a/types/physijs/test/jenga.ts b/types/physijs/test/jenga.ts
index 039b05d5f6..f8404b0b4b 100644
--- a/types/physijs/test/jenga.ts
+++ b/types/physijs/test/jenga.ts
@@ -158,7 +158,6 @@ createTower = (function() {
initEventHandling = (function() {
var _vector = new THREE.Vector3,
- projector = new THREE.Projector(),
handleMouseDown, handleMouseMove, handleMouseUp;
handleMouseDown = function( evt ) {
@@ -170,7 +169,7 @@ initEventHandling = (function() {
1
);
- projector.unprojectVector( _vector, camera );
+ _vector.unproject( camera );
ray = new THREE.Raycaster( camera.position, _vector.sub( camera.position ).normalize() );
intersections = ray.intersectObjects( blocks );
@@ -203,7 +202,7 @@ initEventHandling = (function() {
-( evt.clientY / window.innerHeight ) * 2 + 1,
1
);
- projector.unprojectVector( _vector, camera );
+ _vector.unproject( camera );
ray = new THREE.Raycaster( camera.position, _vector.sub( camera.position ).normalize() );
intersection = ray.intersectObject( intersect_plane );
diff --git a/types/physijs/test/vehicle.ts b/types/physijs/test/vehicle.ts
index 37f32279a8..5e9bebb700 100644
--- a/types/physijs/test/vehicle.ts
+++ b/types/physijs/test/vehicle.ts
@@ -9,12 +9,10 @@ Physijs.scripts.ammo = 'examples/js/ammo.js';
var initScene, render,
ground_material, box_material,
- projector, renderer, render_stats, physics_stats, scene, ground, light, camera,
+ renderer, render_stats, physics_stats, scene, ground, light, camera,
vehicle_body, vehicle;
initScene = function() {
- projector = new THREE.Projector;
-
renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.shadowMapEnabled = true;
diff --git a/types/three-tds-loader/package.json b/types/three-tds-loader/package.json
new file mode 100644
index 0000000000..815d98a16c
--- /dev/null
+++ b/types/three-tds-loader/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "three": "^0.103.0"
+ }
+}
diff --git a/types/three/detector.d.ts b/types/three/detector.d.ts
deleted file mode 100644
index 0c6f0f4fc3..0000000000
--- a/types/three/detector.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export var canvas: boolean;
-export var webgl: boolean;
-export var workers: boolean;
-export var fileapi: boolean;
-export function getWebGLErrorMessage(): HTMLElement;
-export function addGetWebGLMessage(parameters?: {id?: string; parent?: HTMLElement}): void;
-
-export as namespace Detector;
diff --git a/types/three/index.d.ts b/types/three/index.d.ts
deleted file mode 100644
index ac754b4575..0000000000
--- a/types/three/index.d.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-// Type definitions for three.js 0.93
-// Project: https://threejs.org
-// Definitions by: Kon ,
-// Satoru Kimura ,
-// Florent Poujol ,
-// HouChunlei ,
-// Ivo ,
-// David Asmuth ,
-// Brandon Roberge,
-// Qinsi ZHU ,
-// Toshiya Nakakura ,
-// Stefan Profanter ,
-// Edmund Fokschaner ,
-// Roelof Jooste ,
-// Apurva Ojas ,
-// Tiger Oakes ,
-// Methuselah96
-// Dilip Ramirez
-// Julian Strecker
-// Zhang Hao
-// Konstantin Lukaschenko
-// Daniel Yim
-// Saransh Kataria
-// Philippe Suter
-// Definitions: https://github.com//DefinitelyTyped
-// TypeScript Version: 2.8
-
-export * from './three-core';
-
-export * from './three-canvasrenderer';
-export * from './three-colladaLoader';
-export * from './three-copyshader';
-export * from './three-css3drenderer';
-export * from './three-ctmloader';
-export * from './three-ddsloader';
-export * from './three-tdsloader';
-export * from './three-dragcontrols';
-export * from './three-editorcontrols';
-export * from './three-effectcomposer';
-export * from './three-examples';
-export * from './three-fbxloader';
-export * from './three-FirstPersonControls';
-export * from './three-gltfexporter';
-export * from './three-gltfloader';
-export * from './three-lensflare';
-export * from './three-mapcontrols';
-export * from './three-maskpass';
-export * from './three-mtlloader';
-export * from './three-objloader';
-export * from './three-octree';
-export * from './three-orbitcontrols';
-export * from './three-orthographictrackballcontrols';
-export * from './three-outlinepass';
-export * from './three-projector';
-export * from './three-renderpass';
-export * from './three-shaderpass';
-export * from './three-smaapass';
-export * from './three-ssaapass';
-export * from './three-filmpass';
-export * from './three-tgaloader';
-export * from './three-trackballcontrols';
-export * from './three-transformcontrols';
-export * from './three-unrealbloompass';
-export * from './three-vrcontrols';
-export * from './three-vreffect';
-
-export as namespace THREE;
diff --git a/types/three/test/canvas/canvas_camera_orthographic.ts b/types/three/test/canvas/canvas_camera_orthographic.ts
deleted file mode 100644
index 2beabf21f9..0000000000
--- a/types/three/test/canvas/canvas_camera_orthographic.ts
+++ /dev/null
@@ -1,141 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/canvas_camera_orthographic.html
-
-() => {
- var container: HTMLDivElement, stats: Stats;
- var camera: THREE.OrthographicCamera, scene: THREE.Scene, renderer: THREE.CanvasRenderer;
-
- init();
- animate();
-
- function init() {
-
- container = document.createElement('div');
- document.body.appendChild(container);
-
- var info = document.createElement('div');
- info.style.position = 'absolute';
- info.style.top = '10px';
- info.style.width = '100%';
- info.style.textAlign = 'center';
- info.innerHTML = 'three.js - orthographic view';
- container.appendChild(info);
-
- camera = new THREE.OrthographicCamera(window.innerWidth / - 2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / - 2, - 500, 1000);
- camera.position.x = 200;
- camera.position.y = 100;
- camera.position.z = 200;
-
- scene = new THREE.Scene();
-
- // Grid
-
- var size = 500, step = 50;
-
- var geometry = new THREE.Geometry();
-
- for (var i = - size; i <= size; i += step) {
-
- geometry.vertices.push(new THREE.Vector3(- size, 0, i));
- geometry.vertices.push(new THREE.Vector3(size, 0, i));
-
- geometry.vertices.push(new THREE.Vector3(i, 0, - size));
- geometry.vertices.push(new THREE.Vector3(i, 0, size));
-
- }
-
- var material = new THREE.LineBasicMaterial({ color: 0x000000, opacity: 0.2 });
-
- var line = new THREE.Line(geometry, material, THREE.LinePieces);
- scene.add(line);
-
- // Cubes
-
- var geometry2 = new THREE.BoxGeometry(50, 50, 50);
- var material2 = new THREE.MeshLambertMaterial({ color: 0xffffff, overdraw: 0.5 });
-
- for (var i = 0; i < 100; i++) {
-
- var cube = new THREE.Mesh(geometry2, material2);
-
- cube.scale.y = Math.floor(Math.random() * 2 + 1);
-
- cube.position.x = Math.floor((Math.random() * 1000 - 500) / 50) * 50 + 25;
- cube.position.y = (cube.scale.y * 50) / 2;
- cube.position.z = Math.floor((Math.random() * 1000 - 500) / 50) * 50 + 25;
-
- scene.add(cube);
-
- }
-
- // Lights
-
- var ambientLight = new THREE.AmbientLight(Math.random() * 0x10);
- scene.add(ambientLight);
-
- var directionalLight = new THREE.DirectionalLight(Math.random() * 0xffffff);
- directionalLight.position.x = Math.random() - 0.5;
- directionalLight.position.y = Math.random() - 0.5;
- directionalLight.position.z = Math.random() - 0.5;
- directionalLight.position.normalize();
- scene.add(directionalLight);
-
- var directionalLight = new THREE.DirectionalLight(Math.random() * 0xffffff);
- directionalLight.position.x = Math.random() - 0.5;
- directionalLight.position.y = Math.random() - 0.5;
- directionalLight.position.z = Math.random() - 0.5;
- directionalLight.position.normalize();
- scene.add(directionalLight);
-
- renderer = new THREE.CanvasRenderer();
- renderer.setClearColor(0xf0f0f0);
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- container.appendChild(renderer.domElement);
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild(stats.dom);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- camera.left = window.innerWidth / - 2;
- camera.right = window.innerWidth / 2;
- camera.top = window.innerHeight / 2;
- camera.bottom = window.innerHeight / - 2;
-
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- render();
- stats.update();
-
- }
-
- function render() {
-
- var timer = Date.now() * 0.0001;
-
- camera.position.x = Math.cos(timer) * 200;
- camera.position.z = Math.sin(timer) * 200;
- camera.lookAt(scene.position);
-
- renderer.render(scene, camera);
-
- }
-}
\ No newline at end of file
diff --git a/types/three/test/canvas/canvas_geometry_cube.ts b/types/three/test/canvas/canvas_geometry_cube.ts
deleted file mode 100644
index 767ece34b0..0000000000
--- a/types/three/test/canvas/canvas_geometry_cube.ts
+++ /dev/null
@@ -1,184 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/canvas_geometry_cube.html
-
-() => {
- var container: HTMLDivElement, stats: Stats;
-
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.CanvasRenderer;
-
- var cube: THREE.Mesh, plane: THREE.Mesh;
-
- var targetRotation = 0;
- var targetRotationOnMouseDown = 0;
-
- var mouseX = 0;
- var mouseXOnMouseDown = 0;
-
- var windowHalfX = window.innerWidth / 2;
- var windowHalfY = window.innerHeight / 2;
-
- init();
- animate();
-
- function init() {
-
- container = document.createElement('div');
- document.body.appendChild(container);
-
- var info = document.createElement('div');
- info.style.position = 'absolute';
- info.style.top = '10px';
- info.style.width = '100%';
- info.style.textAlign = 'center';
- info.innerHTML = 'Drag to spin the cube';
- container.appendChild(info);
-
- camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 1000);
- camera.position.y = 150;
- camera.position.z = 500;
-
- scene = new THREE.Scene();
-
- // Cube
-
- var geometry = new THREE.BoxGeometry(200, 200, 200);
-
- for (var i = 0; i < geometry.faces.length; i += 2) {
-
- var hex = Math.random() * 0xffffff;
- geometry.faces[i].color.setHex(hex);
- geometry.faces[i + 1].color.setHex(hex);
-
- }
-
- var material = new THREE.MeshBasicMaterial({ vertexColors: THREE.FaceColors, overdraw: 0.5 });
-
- cube = new THREE.Mesh(geometry, material);
- cube.position.y = 150;
- scene.add(cube);
-
- // Plane
-
- var geometry2 = new THREE.PlaneBufferGeometry(200, 200);
- geometry2.applyMatrix(new THREE.Matrix4().makeRotationX(- Math.PI / 2));
-
- var material = new THREE.MeshBasicMaterial({ color: 0xe0e0e0, overdraw: 0.5 });
-
- plane = new THREE.Mesh(geometry2, material);
- scene.add(plane);
-
- renderer = new THREE.CanvasRenderer();
- renderer.setClearColor(0xf0f0f0);
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- container.appendChild(renderer.domElement);
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild(stats.dom);
-
- document.addEventListener('mousedown', onDocumentMouseDown, 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 onDocumentMouseDown(event: MouseEvent) {
-
- event.preventDefault();
-
- document.addEventListener('mousemove', onDocumentMouseMove, false);
- document.addEventListener('mouseup', onDocumentMouseUp, false);
- document.addEventListener('mouseout', onDocumentMouseOut, false);
-
- mouseXOnMouseDown = event.clientX - windowHalfX;
- targetRotationOnMouseDown = targetRotation;
-
- }
-
- function onDocumentMouseMove(event: MouseEvent) {
-
- mouseX = event.clientX - windowHalfX;
-
- targetRotation = targetRotationOnMouseDown + (mouseX - mouseXOnMouseDown) * 0.02;
-
- }
-
- function onDocumentMouseUp(event: MouseEvent) {
-
- document.removeEventListener('mousemove', onDocumentMouseMove, false);
- document.removeEventListener('mouseup', onDocumentMouseUp, false);
- document.removeEventListener('mouseout', onDocumentMouseOut, false);
-
- }
-
- function onDocumentMouseOut(event: MouseEvent) {
-
- document.removeEventListener('mousemove', onDocumentMouseMove, false);
- document.removeEventListener('mouseup', onDocumentMouseUp, false);
- document.removeEventListener('mouseout', onDocumentMouseOut, false);
-
- }
-
- function onDocumentTouchStart(event: TouchEvent) {
-
- if (event.touches.length === 1) {
-
- event.preventDefault();
-
- mouseXOnMouseDown = event.touches[0].pageX - windowHalfX;
- targetRotationOnMouseDown = targetRotation;
-
- }
-
- }
-
- function onDocumentTouchMove(event: TouchEvent) {
-
- if (event.touches.length === 1) {
-
- event.preventDefault();
-
- mouseX = event.touches[0].pageX - windowHalfX;
- targetRotation = targetRotationOnMouseDown + (mouseX - mouseXOnMouseDown) * 0.05;
-
- }
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- render();
- stats.update();
-
- }
-
- function render() {
-
- plane.rotation.y = cube.rotation.y += (targetRotation - cube.rotation.y) * 0.05;
- renderer.render(scene, camera);
-
- }
-}
\ No newline at end of file
diff --git a/types/three/test/canvas/canvas_interactive_cubes_tween.ts b/types/three/test/canvas/canvas_interactive_cubes_tween.ts
deleted file mode 100644
index 46a5da4a90..0000000000
--- a/types/three/test/canvas/canvas_interactive_cubes_tween.ts
+++ /dev/null
@@ -1,161 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/canvas_interactive_cubes_tween.html
-
-() => {
- var container: HTMLDivElement, stats: Stats;
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.CanvasRenderer;
-
- var raycaster: THREE.Raycaster;
- var mouse: THREE.Vector2;
-
- init();
- animate();
-
- function init() {
-
- container = document.createElement('div');
- document.body.appendChild(container);
-
- var info = document.createElement('div');
- info.style.position = 'absolute';
- info.style.top = '10px';
- info.style.width = '100%';
- info.style.textAlign = 'center';
- info.innerHTML = 'three.js - clickable objects';
- container.appendChild(info);
-
- camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 10000);
- camera.position.y = 300;
- camera.position.z = 500;
-
- scene = new THREE.Scene();
-
- var geometry = new THREE.BoxGeometry(100, 100, 100);
-
- for (var i = 0; i < 20; i++) {
-
- var object = new THREE.Mesh(geometry, new THREE.MeshBasicMaterial({ color: Math.random() * 0xffffff, opacity: 0.5 }));
- object.position.x = Math.random() * 800 - 400;
- object.position.y = Math.random() * 800 - 400;
- object.position.z = Math.random() * 800 - 400;
- object.scale.x = Math.random() * 2 + 1;
- object.scale.y = Math.random() * 2 + 1;
- object.scale.z = Math.random() * 2 + 1;
- object.rotation.x = Math.random() * 2 * Math.PI;
- object.rotation.y = Math.random() * 2 * Math.PI;
- object.rotation.z = Math.random() * 2 * Math.PI;
- scene.add(object);
-
- }
-
- //
-
- raycaster = new THREE.Raycaster();
- mouse = new THREE.Vector2();
-
- renderer = new THREE.CanvasRenderer();
- renderer.setClearColor(0xf0f0f0);
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- container.appendChild(renderer.domElement);
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild(stats.dom);
-
- document.addEventListener('mousedown', onDocumentMouseDown, false);
- document.addEventListener('touchstart', onDocumentTouchStart, false);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- function onDocumentTouchStart(event: TouchEvent) {
-
- event.preventDefault();
- let usurpedEvent = event as any;
- usurpedEvent.clientX = event.touches[0].clientX;
- usurpedEvent.clientY = event.touches[0].clientY;
- onDocumentMouseDown(usurpedEvent);
-
- }
-
- function onDocumentMouseDown(event: MouseEvent) {
-
- event.preventDefault();
-
- mouse.x = (event.clientX / renderer.domElement.width) * 2 - 1;
- mouse.y = - (event.clientY / renderer.domElement.height) * 2 + 1;
-
- raycaster.setFromCamera(mouse, camera);
-
- var intersects = raycaster.intersectObjects(scene.children);
-
- if (intersects.length > 0) {
-
- new TWEEN.Tween(intersects[0].object.position).to({
- x: Math.random() * 800 - 400,
- y: Math.random() * 800 - 400,
- z: Math.random() * 800 - 400
- }, 2000)
- .easing(TWEEN.Easing.Elastic.Out).start();
-
- new TWEEN.Tween(intersects[0].object.rotation).to({
- x: Math.random() * 2 * Math.PI,
- y: Math.random() * 2 * Math.PI,
- z: Math.random() * 2 * Math.PI
- }, 2000)
- .easing(TWEEN.Easing.Elastic.Out).start();
-
- }
-
- /*
- // Parse all the faces
- for ( var i in intersects ) {
-
- intersects[ i ].face.material[ 0 ].color.setHex( Math.random() * 0xffffff | 0x80000000 );
-
- }
- */
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- render();
- stats.update();
-
- }
-
- var radius = 600;
- var theta = 0;
-
- function render() {
-
- TWEEN.update();
-
- theta += 0.1;
-
- camera.position.x = radius * Math.sin(THREE.Math.degToRad(theta));
- camera.position.y = radius * Math.sin(THREE.Math.degToRad(theta));
- camera.position.z = radius * Math.cos(THREE.Math.degToRad(theta));
- camera.lookAt(scene.position);
-
- renderer.render(scene, camera);
-
- }
-}
\ No newline at end of file
diff --git a/types/three/test/canvas/canvas_lights_pointlights.ts b/types/three/test/canvas/canvas_lights_pointlights.ts
deleted file mode 100644
index 55e91d27c8..0000000000
--- a/types/three/test/canvas/canvas_lights_pointlights.ts
+++ /dev/null
@@ -1,109 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/canvas_lights_pointlights.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
- // -------
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.CanvasRenderer,
- light1: THREE.PointLight, light2: THREE.PointLight, light3: THREE.PointLight,
- loader: THREE.JSONLoader, mesh: THREE.Mesh;
-
- init();
- animate();
-
- function init() {
-
- var container = document.getElementById('container');
-
- camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 1000);
- camera.position.set(0, - 6, 100);
-
- scene = new THREE.Scene();
-
- scene.add(new THREE.AmbientLight(0x00020));
-
- light1 = new THREE.PointLight(0xff0040, 1, 50);
- scene.add(light1);
-
- light2 = new THREE.PointLight(0x0040ff, 1, 50);
- scene.add(light2);
-
- light3 = new THREE.PointLight(0x80ff80, 1, 50);
- scene.add(light3);
-
- var PI2 = Math.PI * 2;
- var program = function (context: CanvasRenderingContext2D) {
-
- context.beginPath();
- context.arc(0, 0, 0.5, 0, PI2, true);
- context.fill();
-
- }
-
- var sprite = new THREE.Sprite(new THREE.SpriteCanvasMaterial({ color: 0xff0040, program: program }));
- light1.add(sprite);
-
- var sprite = new THREE.Sprite(new THREE.SpriteCanvasMaterial({ color: 0x0040ff, program: program }));
- light2.add(sprite);
-
- var sprite = new THREE.Sprite(new THREE.SpriteCanvasMaterial({ color: 0x80ff80, program: program }));
- light3.add(sprite);
-
- loader = new THREE.JSONLoader();
- loader.load('obj/WaltHeadLo.js', function (geometry) {
-
- mesh = new THREE.Mesh(geometry, new THREE.MeshLambertMaterial({ color: 0xffffff, overdraw: 0.5 }));
- scene.add(mesh);
-
- });
-
- renderer = new THREE.CanvasRenderer();
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- container.appendChild(renderer.domElement);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame(animate);
- render();
-
- }
-
- function render() {
-
- var time = Date.now() * 0.0005;
-
- if (mesh) mesh.rotation.y -= 0.01;
-
- light1.position.x = Math.sin(time * 0.7) * 30;
- light1.position.y = Math.cos(time * 0.5) * 40;
- light1.position.z = Math.cos(time * 0.3) * 30;
-
- light2.position.x = Math.cos(time * 0.3) * 30;
- light2.position.y = Math.sin(time * 0.5) * 40;
- light2.position.z = Math.sin(time * 0.7) * 30;
-
- light3.position.x = Math.sin(time * 0.7) * 30;
- light3.position.y = Math.cos(time * 0.3) * 40;
- light3.position.z = Math.sin(time * 0.5) * 30;
-
- renderer.render(scene, camera);
-
- }
-}
\ No newline at end of file
diff --git a/types/three/test/canvas/canvas_materials.ts b/types/three/test/canvas/canvas_materials.ts
deleted file mode 100644
index dd0ebbf601..0000000000
--- a/types/three/test/canvas/canvas_materials.ts
+++ /dev/null
@@ -1,204 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/canvas_materials.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
- var container: HTMLDivElement, stats: Stats;
-
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.CanvasRenderer, objects: THREE.Mesh[];
- var pointLight: THREE.PointLight;
-
- init();
- animate();
-
- function init() {
-
- container = document.createElement('div');
- document.body.appendChild(container);
-
- camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 2000);
- camera.position.set(0, 200, 800);
-
- scene = new THREE.Scene();
-
- // Grid
-
- var size = 500, step = 100;
-
- var geometry = new THREE.Geometry();
-
- for (var i = - size; i <= size; i += step) {
-
- geometry.vertices.push(new THREE.Vector3(- size, - 120, i));
- geometry.vertices.push(new THREE.Vector3(size, - 120, i));
-
- geometry.vertices.push(new THREE.Vector3(i, - 120, - size));
- geometry.vertices.push(new THREE.Vector3(i, - 120, size));
-
- }
-
- var material = new THREE.LineBasicMaterial({ color: 0xffffff, opacity: 0.2 });
-
- var line = new THREE.Line(geometry, material, THREE.LinePieces);
- scene.add(line);
-
- // Spheres
-
- var geometry2 = new THREE.SphereGeometry(100, 14, 7);
-
- type MeshMaterial = THREE.MeshBasicMaterial | THREE.MeshFaceMaterial | THREE.MeshLambertMaterial | THREE.MeshDepthMaterial | THREE.MeshNormalMaterial;
-
- var materials: MeshMaterial[] = [
-
- new THREE.MeshBasicMaterial({ color: 0x00ffff, wireframe: true, side: THREE.DoubleSide }),
- new THREE.MeshBasicMaterial({ color: 0xff0000, blending: THREE.AdditiveBlending }),
- new THREE.MeshLambertMaterial({ color: 0xffffff, overdraw: 0.5 }),
- new THREE.MeshLambertMaterial({ color: 0xffffff, overdraw: 0.5 }),
- new THREE.MeshDepthMaterial({ overdraw: 0.5 }),
- new THREE.MeshNormalMaterial({ overdraw: 0.5 }),
- new THREE.MeshBasicMaterial({ map: THREE.ImageUtils.loadTexture('textures/land_ocean_ice_cloud_2048.jpg') }),
- new THREE.MeshBasicMaterial({ envMap: THREE.ImageUtils.loadTexture('textures/envmap.png', THREE.SphericalReflectionMapping), overdraw: 0.5 })
-
- ];
-
- for (var i = 0, l = geometry2.faces.length; i < l; i++) {
-
- var face = geometry2.faces[i];
- if (Math.random() > 0.5) face.materialIndex = Math.floor(Math.random() * materials.length);
-
- }
-
- materials.push(new THREE.MeshFaceMaterial(materials));
-
- objects = [];
-
- for (var i = 0, l = materials.length; i < l; i++) {
-
- var sphere = new THREE.Mesh(geometry, materials[i]);
-
- sphere.position.x = (i % 5) * 200 - 400;
- sphere.position.z = Math.floor(i / 5) * 200 - 200;
-
- sphere.rotation.x = Math.random() * 200 - 100;
- sphere.rotation.y = Math.random() * 200 - 100;
- sphere.rotation.z = Math.random() * 200 - 100;
-
- objects.push(sphere);
-
- scene.add(sphere);
-
- }
-
- var PI2 = Math.PI * 2;
- var program = function (context: CanvasRenderingContext2D) {
-
- context.beginPath();
- context.arc(0, 0, 0.5, 0, PI2, true);
- context.fill();
-
- }
-
- // Lights
-
- scene.add(new THREE.AmbientLight(Math.random() * 0x202020));
-
- var directionalLight = new THREE.DirectionalLight(Math.random() * 0xffffff);
- directionalLight.position.x = Math.random() - 0.5;
- directionalLight.position.y = Math.random() - 0.5;
- directionalLight.position.z = Math.random() - 0.5;
- directionalLight.position.normalize();
- scene.add(directionalLight);
-
- pointLight = new THREE.PointLight(0xffffff, 1);
- scene.add(pointLight);
-
- var sprite = new THREE.Sprite(new THREE.SpriteCanvasMaterial({ color: 0xffffff, program: program }));
- sprite.scale.set(8, 8, 8);
- pointLight.add(sprite);
-
- renderer = new THREE.CanvasRenderer();
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- container.appendChild(renderer.domElement);
-
- var debugCanvas = document.createElement('canvas');
- debugCanvas.width = 512;
- debugCanvas.height = 512;
- debugCanvas.style.position = 'absolute';
- debugCanvas.style.top = '0px';
- debugCanvas.style.left = '0px';
-
- container.appendChild(debugCanvas);
-
- var debugContext = debugCanvas.getContext('2d');
- debugContext.setTransform(1, 0, 0, 1, 256, 256);
- debugContext.strokeStyle = '#000000';
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild(stats.dom);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- function loadImage(path: string) {
-
- var image = document.createElement('img');
- var texture = new THREE.Texture(image, THREE.UVMapping)
-
- image.onload = function () { texture.needsUpdate = true; };
- image.src = path;
-
- return texture;
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- render();
- stats.update();
-
- }
-
- function render() {
-
- var timer = Date.now() * 0.0001;
-
- camera.position.x = Math.cos(timer) * 1000;
- camera.position.z = Math.sin(timer) * 1000;
- camera.lookAt(scene.position);
-
- for (var i = 0, l = objects.length; i < l; i++) {
-
- var object = objects[i];
-
- object.rotation.x += 0.01;
- object.rotation.y += 0.005;
-
- }
-
- pointLight.position.x = Math.sin(timer * 7) * 300;
- pointLight.position.y = Math.cos(timer * 5) * 400;
- pointLight.position.z = Math.cos(timer * 3) * 300;
-
- renderer.render(scene, camera);
-
- }
-
-}
diff --git a/types/three/test/canvas/canvas_particles_floor.ts b/types/three/test/canvas/canvas_particles_floor.ts
deleted file mode 100644
index 00d97b8e30..0000000000
--- a/types/three/test/canvas/canvas_particles_floor.ts
+++ /dev/null
@@ -1,129 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/canvas_particles_floor.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
- // -------
- var SEPARATION = 100;
- var AMOUNTX = 50;
- var AMOUNTY = 50;
-
- var container: HTMLDivElement, stats: Stats;
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.CanvasRenderer, particle: THREE.Sprite;
- 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(75, window.innerWidth / window.innerHeight, 1, 10000);
- camera.position.z = 1000;
-
- scene = new THREE.Scene();
-
- var material = new THREE.SpriteMaterial();
-
- for (var ix = 0; ix < AMOUNTX; ix++) {
-
- for (var iy = 0; iy < AMOUNTY; iy++) {
-
- particle = new THREE.Sprite(material);
- particle.scale.y = 20;
- particle.position.x = ix * SEPARATION - ((AMOUNTX * SEPARATION) / 2);
- particle.position.z = iy * SEPARATION - ((AMOUNTY * SEPARATION) / 2);
- scene.add(particle);
-
- }
-
- }
-
- renderer = new THREE.CanvasRenderer();
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- container.appendChild(renderer.domElement);
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild(stats.dom);
-
- 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: MouseEvent) {
-
- mouseX = event.clientX - windowHalfX;
- mouseY = event.clientY - windowHalfY;
- }
-
- function onDocumentTouchStart(event: TouchEvent) {
-
- if (event.touches.length > 1) {
-
- event.preventDefault();
-
- mouseX = event.touches[0].pageX - windowHalfX;
- mouseY = event.touches[0].pageY - windowHalfY;
- }
- }
-
- function onDocumentTouchMove(event: TouchEvent) {
-
- 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() {
-
- camera.position.x += (mouseX - camera.position.x) * .05;
- camera.position.y += (- mouseY - camera.position.y) * .05;
- camera.lookAt(scene.position);
-
- renderer.render(scene, camera);
-
- }
-}
\ No newline at end of file
diff --git a/types/three/test/css3d/css3d_periodictable.ts b/types/three/test/css3d/css3d_periodictable.ts
deleted file mode 100644
index 40a29a1ea5..0000000000
--- a/types/three/test/css3d/css3d_periodictable.ts
+++ /dev/null
@@ -1,357 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/css3d_periodictable.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
- // -------
- var table = [
- "H", "Hydrogen", "1.00794", 1, 1,
- "He", "Helium", "4.002602", 18, 1,
- "Li", "Lithium", "6.941", 1, 2,
- "Be", "Beryllium", "9.012182", 2, 2,
- "B", "Boron", "10.811", 13, 2,
- "C", "Carbon", "12.0107", 14, 2,
- "N", "Nitrogen", "14.0067", 15, 2,
- "O", "Oxygen", "15.9994", 16, 2,
- "F", "Fluorine", "18.9984032", 17, 2,
- "Ne", "Neon", "20.1797", 18, 2,
- "Na", "Sodium", "22.98976...", 1, 3,
- "Mg", "Magnesium", "24.305", 2, 3,
- "Al", "Aluminium", "26.9815386", 13, 3,
- "Si", "Silicon", "28.0855", 14, 3,
- "P", "Phosphorus", "30.973762", 15, 3,
- "S", "Sulfur", "32.065", 16, 3,
- "Cl", "Chlorine", "35.453", 17, 3,
- "Ar", "Argon", "39.948", 18, 3,
- "K", "Potassium", "39.948", 1, 4,
- "Ca", "Calcium", "40.078", 2, 4,
- "Sc", "Scandium", "44.955912", 3, 4,
- "Ti", "Titanium", "47.867", 4, 4,
- "V", "Vanadium", "50.9415", 5, 4,
- "Cr", "Chromium", "51.9961", 6, 4,
- "Mn", "Manganese", "54.938045", 7, 4,
- "Fe", "Iron", "55.845", 8, 4,
- "Co", "Cobalt", "58.933195", 9, 4,
- "Ni", "Nickel", "58.6934", 10, 4,
- "Cu", "Copper", "63.546", 11, 4,
- "Zn", "Zinc", "65.38", 12, 4,
- "Ga", "Gallium", "69.723", 13, 4,
- "Ge", "Germanium", "72.63", 14, 4,
- "As", "Arsenic", "74.9216", 15, 4,
- "Se", "Selenium", "78.96", 16, 4,
- "Br", "Bromine", "79.904", 17, 4,
- "Kr", "Krypton", "83.798", 18, 4,
- "Rb", "Rubidium", "85.4678", 1, 5,
- "Sr", "Strontium", "87.62", 2, 5,
- "Y", "Yttrium", "88.90585", 3, 5,
- "Zr", "Zirconium", "91.224", 4, 5,
- "Nb", "Niobium", "92.90628", 5, 5,
- "Mo", "Molybdenum", "95.96", 6, 5,
- "Tc", "Technetium", "(98)", 7, 5,
- "Ru", "Ruthenium", "101.07", 8, 5,
- "Rh", "Rhodium", "102.9055", 9, 5,
- "Pd", "Palladium", "106.42", 10, 5,
- "Ag", "Silver", "107.8682", 11, 5,
- "Cd", "Cadmium", "112.411", 12, 5,
- "In", "Indium", "114.818", 13, 5,
- "Sn", "Tin", "118.71", 14, 5,
- "Sb", "Antimony", "121.76", 15, 5,
- "Te", "Tellurium", "127.6", 16, 5,
- "I", "Iodine", "126.90447", 17, 5,
- "Xe", "Xenon", "131.293", 18, 5,
- "Cs", "Caesium", "132.9054", 1, 6,
- "Ba", "Barium", "132.9054", 2, 6,
- "La", "Lanthanum", "138.90547", 4, 9,
- "Ce", "Cerium", "140.116", 5, 9,
- "Pr", "Praseodymium", "140.90765", 6, 9,
- "Nd", "Neodymium", "144.242", 7, 9,
- "Pm", "Promethium", "(145)", 8, 9,
- "Sm", "Samarium", "150.36", 9, 9,
- "Eu", "Europium", "151.964", 10, 9,
- "Gd", "Gadolinium", "157.25", 11, 9,
- "Tb", "Terbium", "158.92535", 12, 9,
- "Dy", "Dysprosium", "162.5", 13, 9,
- "Ho", "Holmium", "164.93032", 14, 9,
- "Er", "Erbium", "167.259", 15, 9,
- "Tm", "Thulium", "168.93421", 16, 9,
- "Yb", "Ytterbium", "173.054", 17, 9,
- "Lu", "Lutetium", "174.9668", 18, 9,
- "Hf", "Hafnium", "178.49", 4, 6,
- "Ta", "Tantalum", "180.94788", 5, 6,
- "W", "Tungsten", "183.84", 6, 6,
- "Re", "Rhenium", "186.207", 7, 6,
- "Os", "Osmium", "190.23", 8, 6,
- "Ir", "Iridium", "192.217", 9, 6,
- "Pt", "Platinum", "195.084", 10, 6,
- "Au", "Gold", "196.966569", 11, 6,
- "Hg", "Mercury", "200.59", 12, 6,
- "Tl", "Thallium", "204.3833", 13, 6,
- "Pb", "Lead", "207.2", 14, 6,
- "Bi", "Bismuth", "208.9804", 15, 6,
- "Po", "Polonium", "(209)", 16, 6,
- "At", "Astatine", "(210)", 17, 6,
- "Rn", "Radon", "(222)", 18, 6,
- "Fr", "Francium", "(223)", 1, 7,
- "Ra", "Radium", "(226)", 2, 7,
- "Ac", "Actinium", "(227)", 4, 10,
- "Th", "Thorium", "232.03806", 5, 10,
- "Pa", "Protactinium", "231.0588", 6, 10,
- "U", "Uranium", "238.02891", 7, 10,
- "Np", "Neptunium", "(237)", 8, 10,
- "Pu", "Plutonium", "(244)", 9, 10,
- "Am", "Americium", "(243)", 10, 10,
- "Cm", "Curium", "(247)", 11, 10,
- "Bk", "Berkelium", "(247)", 12, 10,
- "Cf", "Californium", "(251)", 13, 10,
- "Es", "Einstenium", "(252)", 14, 10,
- "Fm", "Fermium", "(257)", 15, 10,
- "Md", "Mendelevium", "(258)", 16, 10,
- "No", "Nobelium", "(259)", 17, 10,
- "Lr", "Lawrencium", "(262)", 18, 10,
- "Rf", "Rutherfordium", "(267)", 4, 7,
- "Db", "Dubnium", "(268)", 5, 7,
- "Sg", "Seaborgium", "(271)", 6, 7,
- "Bh", "Bohrium", "(272)", 7, 7,
- "Hs", "Hassium", "(270)", 8, 7,
- "Mt", "Meitnerium", "(276)", 9, 7,
- "Ds", "Darmstadium", "(281)", 10, 7,
- "Rg", "Roentgenium", "(280)", 11, 7,
- "Cn", "Copernicium", "(285)", 12, 7,
- "Uut", "Unutrium", "(284)", 13, 7,
- "Fl", "Flerovium", "(289)", 14, 7,
- "Uup", "Ununpentium", "(288)", 15, 7,
- "Lv", "Livermorium", "(293)", 16, 7,
- "Uus", "Ununseptium", "(294)", 17, 7,
- "Uuo", "Ununoctium", "(294)", 18, 7
- ];
-
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.CSS3DRenderer;
- var controls: THREE.TrackballControls;
-
- var objects: THREE.CSS3DObject[] = [];
- class Targets {
- constructor() {}
- public table: THREE.Object3D[] = [];
- public sphere: THREE.Object3D[] = [];
- public helix: THREE.Object3D[] = [];
- public grid: THREE.Object3D[] = [];
- }
- let targets = new Targets();
-
- init();
- animate();
-
- function init() {
-
- camera = new THREE.PerspectiveCamera(40, window.innerWidth / window.innerHeight, 1, 10000);
- camera.position.z = 3000;
-
- scene = new THREE.Scene();
-
- // table
-
- for (var i = 0; i < table.length; i += 5) {
-
- var element = document.createElement('div');
- element.className = 'element';
- element.style.backgroundColor = 'rgba(0,127,127,' + (Math.random() * 0.5 + 0.25) + ')';
-
- var number = document.createElement('div');
- number.className = 'number';
- number.textContent = ((i / 5) + 1).toString();
- element.appendChild(number);
-
- var symbol = document.createElement('div');
- symbol.className = 'symbol';
- symbol.textContent = table[i].toString();
- element.appendChild(symbol);
-
- var details = document.createElement('div');
- details.className = 'details';
- details.innerHTML = table[i + 1] + '
' + table[i + 2];
- element.appendChild(details);
-
- var cssobject = new THREE.CSS3DObject(element);
- cssobject.position.x = Math.random() * 4000 - 2000;
- cssobject.position.y = Math.random() * 4000 - 2000;
- cssobject.position.z = Math.random() * 4000 - 2000;
- scene.add(cssobject);
-
- objects.push(cssobject);
-
- //
-
- var object = new THREE.Object3D();
- object.position.x = ((table[i + 3] as number) * 140) - 1330;
- object.position.y = - ((table[i + 4] as number) * 180) + 990;
-
- targets.table.push(object);
-
- }
-
- // sphere
-
- var vector = new THREE.Vector3();
-
- for (var i = 0, l = objects.length; i < l; i++) {
-
- var phi = Math.acos(-1 + (2 * i) / l);
- var theta = Math.sqrt(l * Math.PI) * phi;
-
- var object = new THREE.Object3D();
-
- object.position.x = 800 * Math.cos(theta) * Math.sin(phi);
- object.position.y = 800 * Math.sin(theta) * Math.sin(phi);
- object.position.z = 800 * Math.cos(phi);
-
- vector.copy(object.position).multiplyScalar(2);
-
- object.lookAt(vector);
-
- targets.sphere.push(object);
-
- }
-
- // helix
-
- var vector = new THREE.Vector3();
-
- for (var i = 0, l = objects.length; i < l; i++) {
-
- var phi = i * 0.175 + Math.PI;
-
- var object = new THREE.Object3D();
-
- object.position.x = 900 * Math.sin(phi);
- object.position.y = - (i * 8) + 450;
- object.position.z = 900 * Math.cos(phi);
-
- vector.x = object.position.x * 2;
- vector.y = object.position.y;
- vector.z = object.position.z * 2;
-
- object.lookAt(vector);
-
- targets.helix.push(object);
-
- }
-
- // grid
-
- for (var i = 0; i < objects.length; i++) {
-
- var object = new THREE.Object3D();
-
- object.position.x = ((i % 5) * 400) - 800;
- object.position.y = (- (Math.floor(i / 5) % 5) * 400) + 800;
- object.position.z = (Math.floor(i / 25)) * 1000 - 2000;
-
- targets.grid.push(object);
-
- }
-
- //
-
- renderer = new THREE.CSS3DRenderer();
- renderer.setSize(window.innerWidth, window.innerHeight);
- renderer.domElement.style.position = 'absolute';
- document.getElementById('container').appendChild(renderer.domElement);
-
- //
-
- controls = new THREE.TrackballControls(camera, renderer.domElement);
- controls.rotateSpeed = 0.5;
- controls.minDistance = 500;
- controls.maxDistance = 6000;
- controls.addEventListener('change', render);
-
- var button = document.getElementById('table');
- button.addEventListener('click', function (event: MouseEvent) {
-
- transform(targets.table, 2000);
-
- }, false);
-
- var button = document.getElementById('sphere');
- button.addEventListener('click', function (event: MouseEvent) {
-
- transform(targets.sphere, 2000);
-
- }, false);
-
- var button = document.getElementById('helix');
- button.addEventListener('click', function (event: MouseEvent) {
-
- transform(targets.helix, 2000);
-
- }, false);
-
- var button = document.getElementById('grid');
- button.addEventListener('click', function (event: MouseEvent) {
-
- transform(targets.grid, 2000);
-
- }, false);
-
- transform(targets.table, 2000);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function transform(targets: THREE.Object3D[], duration: number) {
-
- TWEEN.removeAll();
-
- for (var i = 0; i < objects.length; i++) {
-
- var object = objects[i];
- var target = targets[i];
-
- new TWEEN.Tween(object.position)
- .to({ x: target.position.x, y: target.position.y, z: target.position.z }, Math.random() * duration + duration)
- .easing(TWEEN.Easing.Exponential.InOut)
- .start();
-
- new TWEEN.Tween(object.rotation)
- .to({ x: target.rotation.x, y: target.rotation.y, z: target.rotation.z }, Math.random() * duration + duration)
- .easing(TWEEN.Easing.Exponential.InOut)
- .start();
-
- }
-
- new TWEEN.Tween(this)
- .to({}, duration * 2)
- .onUpdate(render)
- .start();
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- render();
-
- }
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- TWEEN.update();
-
- controls.update();
-
- }
-
- function render() {
-
- renderer.render(scene, camera);
-
- }
-}
diff --git a/types/three/test/css3d/css3d_sprites.ts b/types/three/test/css3d/css3d_sprites.ts
deleted file mode 100644
index bd59334c36..0000000000
--- a/types/three/test/css3d/css3d_sprites.ts
+++ /dev/null
@@ -1,186 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/css3d_sprites.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
-
- // -------
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.CSS3DRenderer;
- var controls: THREE.TrackballControls;
-
- var particlesTotal = 512;
- var positions: number[] = [];
- var objects: THREE.CSS3DSprite[] = [];
- var current = 0;
-
- init();
- animate();
-
- function init() {
-
- camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 5000);
- camera.position.set(600, 400, 1500);
- camera.lookAt(new THREE.Vector3());
-
- scene = new THREE.Scene();
-
- var image = document.createElement('img');
- image.addEventListener('load', function(event: Event) {
-
- for (var i = 0; i < particlesTotal; i++) {
-
- var object = new THREE.CSS3DSprite(image.cloneNode());
- object.position.x = Math.random() * 4000 - 2000;
- object.position.y = Math.random() * 4000 - 2000;
- object.position.z = Math.random() * 4000 - 2000;
- scene.add(object);
-
- objects.push(object);
-
- }
-
- transition();
-
- }, false);
- image.src = 'textures/sprite.png';
-
- // Plane
-
- var amountX = 16;
- var amountZ = 32;
- var separation = 150;
- var offsetX = ((amountX - 1) * separation) / 2;
- var offsetZ = ((amountZ - 1) * separation) / 2;
-
- for (var i = 0; i < particlesTotal; i++) {
-
- var x = (i % amountX) * separation;
- var z = Math.floor(i / amountX) * separation;
- var y = (Math.sin(x * 0.5) + Math.sin(z * 0.5)) * 200;
-
- positions.push(x - offsetX, y, z - offsetZ);
-
- }
-
- // Cube
-
- var amount = 8;
- var separation = 150;
- var offset = ((amount - 1) * separation) / 2;
-
- for (var i = 0; i < particlesTotal; i++) {
-
- var x = (i % amount) * separation;
- var y = Math.floor((i / amount) % amount) * separation;
- var z = Math.floor(i / (amount * amount)) * separation;
-
- positions.push(x - offset, y - offset, z - offset);
-
- }
-
- // Random
-
- for (var i = 0; i < particlesTotal; i++) {
-
- positions.push(
- Math.random() * 4000 - 2000,
- Math.random() * 4000 - 2000,
- Math.random() * 4000 - 2000
- );
-
- }
-
- // Sphere
-
- var radius = 750;
-
- for (var i = 0; i < particlesTotal; i++) {
-
- var phi = Math.acos(-1 + (2 * i) / particlesTotal);
- var theta = Math.sqrt(particlesTotal * Math.PI) * phi;
-
- positions.push(
- radius * Math.cos(theta) * Math.sin(phi),
- radius * Math.sin(theta) * Math.sin(phi),
- radius * Math.cos(phi)
- );
-
- }
-
- //
-
- renderer = new THREE.CSS3DRenderer();
- renderer.setSize(window.innerWidth, window.innerHeight);
- renderer.domElement.style.position = 'absolute';
- document.getElementById('container').appendChild(renderer.domElement);
-
- //
-
- controls = new THREE.TrackballControls(camera, renderer.domElement);
- controls.rotateSpeed = 0.5;
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- function transition() {
-
- var offset = current * particlesTotal * 3;
- var duration = 2000;
-
- for (var i = 0, j = offset; i < particlesTotal;) {
-
- var object = objects[i];
-
- new TWEEN.Tween(object.position)
- .to({
- x: positions[j],
- y: positions[j + 1],
- z: positions[j + 2]
- }, Math.random() * duration + duration)
- .easing(TWEEN.Easing.Exponential.InOut)
- .start();
- i++ ;
- j += 3;
- }
-
- new TWEEN.Tween(this)
- .to({}, duration * 3)
- .onComplete(transition)
- .start();
-
- current = (current + 1) % 4;
-
- }
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- TWEEN.update();
- controls.update();
-
- var time = performance.now();
-
- for (var i = 0, l = objects.length; i < l; i++) {
-
- var object = objects[i];
- var scale = Math.sin((Math.floor(object.position.x) + time) * 0.002) * 0.3 + 1;
- object.scale.set(scale, scale, scale);
-
- }
-
- renderer.render(scene, camera);
-
- }
-}
diff --git a/types/three/test/docs/scenes/bones_browser.ts b/types/three/test/docs/scenes/bones_browser.ts
deleted file mode 100644
index 116af826d8..0000000000
--- a/types/three/test/docs/scenes/bones_browser.ts
+++ /dev/null
@@ -1,139 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/docs/scenes/bones-browser.html
-
-() => {
- var scene: THREE.Scene;
- var camera: THREE.PerspectiveCamera;
- var renderer: THREE.WebGLRenderer;
- var orbit: THREE.OrbitControls;
- var lights: THREE.Light[];
- var mesh: THREE.SkinnedMesh;
- var bones: THREE.Bone[];
- var skeletonHelper: THREE.SkeletonHelper;
- var state = {
- animateBones: false
- };
- function initScene() {
- scene = new THREE.Scene();
- camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 200);
- camera.position.z = 30;
- camera.position.y = 30;
- renderer = new THREE.WebGLRenderer({ antialias: true });
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- renderer.setClearColor(0x000000, 1);
- document.body.appendChild(renderer.domElement);
- orbit = new THREE.OrbitControls(camera, renderer.domElement);
- orbit.enableZoom = false;
- lights = [];
- lights[0] = new THREE.PointLight(0xffffff, 1, 0);
- lights[1] = new THREE.PointLight(0xffffff, 1, 0);
- lights[2] = new THREE.PointLight(0xffffff, 1, 0);
- lights[0].position.set(0, 200, 0);
- lights[1].position.set(100, 200, 100);
- lights[2].position.set(- 100, - 200, - 100);
- scene.add(lights[0]);
- scene.add(lights[1]);
- scene.add(lights[2]);
- window.addEventListener('resize', function () {
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
- renderer.setSize(window.innerWidth, window.innerHeight);
- }, false);
- initBones();
- }
- function createGeometry(sizing: any) {
- var geometry = new THREE.CylinderBufferGeometry(
- 5, // radiusTop
- 5, // radiusBottom
- sizing.height, // height
- 8, // radiusSegments
- sizing.segmentCount * 3, // heightSegments
- true // openEnded
- );
-
- var position = geometry.attributes.position as THREE.BufferAttribute;
-
- var vertex = new THREE.Vector3();
-
- var skinIndices = [];
- var skinWeights = [];
-
- for (var i = 0; i < position.count; i++) {
- vertex.fromBufferAttribute(position, i);
-
- var y = (vertex.y + sizing.halfHeight);
-
- var skinIndex = Math.floor(y / sizing.segmentHeight);
- var skinWeight = (y % sizing.segmentHeight) / sizing.segmentHeight;
-
- skinIndices.push(skinIndex, skinIndex + 1, 0, 0);
- skinWeights.push(1 - skinWeight, skinWeight, 0, 0);
- }
-
- geometry.addAttribute('skinIndex', new THREE.Uint16BufferAttribute(skinIndices, 4));
- geometry.addAttribute('skinWeight', new THREE.Float32BufferAttribute(skinWeights, 4));
-
- return geometry;
- }
- function createBones(sizing: any) {
- bones = [];
- var prevBone = new THREE.Bone();
- bones.push(prevBone);
- prevBone.position.y = - sizing.halfHeight;
- for (var i = 0; i < sizing.segmentCount; i++) {
- var bone = new THREE.Bone();
- bone.position.y = sizing.segmentHeight;
- bones.push(bone);
- prevBone.add(bone);
- prevBone = bone;
- }
- return bones;
- }
- function createMesh(geometry: THREE.BufferGeometry, bones: THREE.Bone[]) {
- var material = new THREE.MeshPhongMaterial({
- skinning: true,
- color: 0x156289,
- emissive: 0x072534,
- side: THREE.DoubleSide,
- flatShading: true
- });
- var mesh = new THREE.SkinnedMesh(geometry, material);
- var skeleton = new THREE.Skeleton(bones);
- mesh.add(bones[0]);
- mesh.bind(skeleton);
- skeletonHelper = new THREE.SkeletonHelper(mesh);
- (skeletonHelper.material as THREE.LineBasicMaterial).linewidth = 2;
- scene.add(skeletonHelper);
- return mesh;
- }
- function initBones() {
- var segmentHeight = 8;
- var segmentCount = 4;
- var height = segmentHeight * segmentCount;
- var halfHeight = height * 0.5;
- var sizing = {
- segmentHeight: segmentHeight,
- segmentCount: segmentCount,
- height: height,
- halfHeight: halfHeight
- };
- var geometry = createGeometry(sizing);
- var bones = createBones(sizing);
- mesh = createMesh(geometry, bones);
- mesh.scale.multiplyScalar(1);
- scene.add(mesh);
- }
- function render() {
- requestAnimationFrame(render);
- var time = Date.now() * 0.001;
- //Wiggle the bones
- if (state.animateBones) {
- for (var i = 0; i < mesh.skeleton.bones.length; i++) {
- mesh.skeleton.bones[i].rotation.z = Math.sin(time) * 2 / mesh.skeleton.bones.length;
- }
- }
- renderer.render(scene, camera);
- }
- initScene();
- render();
-}
diff --git a/types/three/test/examples/controls/vrcontrols.ts b/types/three/test/examples/controls/vrcontrols.ts
deleted file mode 100644
index 2dbc5817da..0000000000
--- a/types/three/test/examples/controls/vrcontrols.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-var _vrControls = new THREE.VRControls(new THREE.Camera());
-
-_vrControls.update();
-
-_vrControls.scale = 25;
-
-window.addEventListener("keydown", (ev) => {
- if (ev.keyCode == "R".charCodeAt(0)) {
- _vrControls.zeroSensor();
- }
-});
-
-window.addEventListener("touchstart", (ev) => {
- _vrControls.zeroSensor();
-});
diff --git a/types/three/test/examples/ctm/ctmloader.ts b/types/three/test/examples/ctm/ctmloader.ts
deleted file mode 100644
index 68e4e28fc0..0000000000
--- a/types/three/test/examples/ctm/ctmloader.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-let _ctmloader = new THREE.CTMLoader();
-_ctmloader.load('https://github.com/mrdoob/three.js/blob/master/examples/models/ctm/ben.ctm', (geo: any) => {
- console.log(geo.position);
-});
-
diff --git a/types/three/test/examples/detector.ts b/types/three/test/examples/detector.ts
deleted file mode 100644
index 6260f34300..0000000000
--- a/types/three/test/examples/detector.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-() => {
- if ( !Detector.canvas || !Detector.webgl || !Detector.workers || !Detector.fileapi ){
- var errorElement = Detector.getWebGLErrorMessage();
- Detector.addGetWebGLMessage();
- }
-}
\ No newline at end of file
diff --git a/types/three/test/examples/effects/vreffect.ts b/types/three/test/examples/effects/vreffect.ts
deleted file mode 100644
index 9205f3e1f1..0000000000
--- a/types/three/test/examples/effects/vreffect.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-var _vrEffect: THREE.VREffect;
-
-_vrEffect = new THREE.VREffect(new THREE.WebGLRenderer({antialias: true}), function (error) {
- if (error) {
- this._stats.classList.add("error");
- this._stats.innerHTML = "WebVR API not supported";
- this._vrAvailable = false;
- }
-});
-
-_vrEffect.setSize(100, 100);
-_vrEffect.render(new THREE.Scene(), new THREE.Camera());
-_vrEffect.setFullScreen(true);
diff --git a/types/three/test/examples/exporters/gltf-exporter.ts b/types/three/test/examples/exporters/gltf-exporter.ts
deleted file mode 100644
index 2a6e6f508e..0000000000
--- a/types/three/test/examples/exporters/gltf-exporter.ts
+++ /dev/null
@@ -1,511 +0,0 @@
-() => {
- var container: HTMLElement;
- var camera: THREE.PerspectiveCamera,
- material: THREE.MeshStandardMaterial,
- object: THREE.Object3D,
- scene1: THREE.Scene,
- renderer: THREE.WebGLRenderer;
- var gridHelper: THREE.GridHelper,
- sphere: THREE.Object3D,
- waltHead: THREE.Object3D;
-
- var gltfExporter = new THREE.GLTFExporter();
-
- var options = {
- trs: true,
- onlyVisible: true,
- truncateDrawRange: true,
- binary: true,
- forceIndices: true,
- forcePowerOfTwoTextures: true
- };
- // gltfExporter.parse(
- // scene1,
- // function(result) {
- // if (result instanceof ArrayBuffer) {
- // saveArrayBuffer(result, "scene.glb");
- // } else {
- // var output = JSON.stringify(result, null, 2);
- // console.log(output);
- // saveString(output, "scene.gltf");
- // }
- // },
- // options
- // );
-
- var link = document.createElement("a");
- link.style.display = "none";
- document.body.appendChild(link); // Firefox workaround, see #6594
-
- // function save(blob, filename) {
- // link.href = URL.createObjectURL(blob);
- // link.download = filename;
- // link.click();
-
- // // URL.revokeObjectURL( url ); breaks Firefox...
- // }
-
- // function saveString(text, filename) {
- // save(new Blob([text], { type: "text/plain" }), filename);
- // }
-
- // function saveArrayBuffer(buffer, filename) {
- // save(
- // new Blob([buffer], { type: "application/octet-stream" }),
- // filename
- // );
- // }
-
- if (!Detector.webgl) Detector.addGetWebGLMessage();
-
- init();
- animate();
-
- function init() {
- container = document.createElement("div");
- document.body.appendChild(container);
-
- scene1 = new THREE.Scene();
- scene1.name = "Scene1";
-
- // ---------------------------------------------------------------------
- // Perspective Camera
- // ---------------------------------------------------------------------
- camera = new THREE.PerspectiveCamera(
- 45,
- window.innerWidth / window.innerHeight,
- 1,
- 2000
- );
- camera.position.set(600, 400, 0);
-
- camera.name = "PerspectiveCamera";
- scene1.add(camera);
-
- // ---------------------------------------------------------------------
- // Ambient light
- // ---------------------------------------------------------------------
- var light = new THREE.AmbientLight(0xffffff, 0.2);
- light.name = "AmbientLight";
- scene1.add(light);
-
- // ---------------------------------------------------------------------
- // DirectLight
- // ---------------------------------------------------------------------
- light = new THREE.DirectionalLight(0xffffff, 1);
- light.position.set(1, 1, 0);
- light.name = "DirectionalLight";
- scene1.add(light);
-
- // ---------------------------------------------------------------------
- // Grid
- // ---------------------------------------------------------------------
- gridHelper = new THREE.GridHelper(2000, 20);
- gridHelper.position.y = -50;
- gridHelper.name = "Grid";
- scene1.add(gridHelper);
-
- // ---------------------------------------------------------------------
- // Axes
- // ---------------------------------------------------------------------
- var axes = new THREE.AxesHelper(500);
- axes.name = "AxesHelper";
- scene1.add(axes);
-
- // ---------------------------------------------------------------------
- // Simple geometry with basic material
- // ---------------------------------------------------------------------
- // Icosahedron
- var mapGrid = new THREE.TextureLoader().load("textures/UV_Grid_Sm.jpg");
- mapGrid.wrapS = mapGrid.wrapT = THREE.RepeatWrapping;
- var material = new THREE.MeshBasicMaterial({
- color: 0xffffff,
- map: mapGrid
- });
-
- object = new THREE.Mesh(new THREE.IcosahedronGeometry(75, 0), material);
- object.position.set(-200, 0, 200);
- object.name = "Icosahedron";
- scene1.add(object);
-
- // Octahedron
- material = new THREE.MeshBasicMaterial({
- color: 0x0000ff,
- wireframe: true
- });
- object = new THREE.Mesh(new THREE.OctahedronGeometry(75, 1), material);
- object.position.set(0, 0, 200);
- object.name = "Octahedron";
- scene1.add(object);
-
- // Tetrahedron
- material = new THREE.MeshBasicMaterial({
- color: 0xff0000,
- transparent: true,
- opacity: 0.5
- });
-
- object = new THREE.Mesh(new THREE.TetrahedronGeometry(75, 0), material);
- object.position.set(200, 0, 200);
- object.name = "Tetrahedron";
- scene1.add(object);
-
- // ---------------------------------------------------------------------
- // Buffered geometry primitives
- // ---------------------------------------------------------------------
- // Sphere
- sphere = new THREE.Mesh(
- new THREE.SphereBufferGeometry(70, 10, 10),
- new THREE.MeshStandardMaterial({
- color: 0xffff00,
- metalness: 0.5,
- roughness: 1.0,
- flatShading: true
- })
- );
- sphere.position.set(0, 0, 0);
- sphere.name = "Sphere";
- scene1.add(sphere);
-
- // Cylinder
- object = new THREE.Mesh(
- new THREE.CylinderBufferGeometry(10, 80, 100),
- new THREE.MeshStandardMaterial({
- color: 0xff00ff,
- flatShading: true
- })
- );
- object.position.set(200, 0, 0);
- object.name = "Cylinder";
- scene1.add(object);
-
- // TorusKnot
- object = new THREE.Mesh(
- new THREE.TorusKnotGeometry(50, 15, 40, 10),
- new THREE.MeshStandardMaterial({
- color: 0xff0000,
- roughness: 1
- })
- );
- object.position.set(-200, 0, 0);
- object.name = "Cylinder";
- scene1.add(object);
-
- // ---------------------------------------------------------------------
- // Hierarchy
- // ---------------------------------------------------------------------
- var mapWood = new THREE.TextureLoader().load(
- "textures/hardwood2_diffuse.jpg"
- );
-
- object = new THREE.Mesh(
- new THREE.BoxBufferGeometry(40, 100, 100),
- new THREE.MeshStandardMaterial({
- map: mapWood,
- side: THREE.DoubleSide
- })
- );
- object.position.set(-200, 0, 400);
- object.name = "Cube";
- scene1.add(object);
-
- var object2 = new THREE.Mesh(
- new THREE.BoxBufferGeometry(40, 40, 40, 2, 2, 2),
- material
- );
- object2.position.set(0, 0, 50);
- object2.rotation.set(0, 45, 0);
- object2.name = "SubCube";
- object.add(object2);
-
- // ---------------------------------------------------------------------
- // Groups
- // ---------------------------------------------------------------------
- var group1 = new THREE.Group();
- group1.name = "Group";
- scene1.add(group1);
-
- var group2 = new THREE.Group();
- group2.name = "subGroup";
- group2.position.set(0, 50, 0);
- group1.add(group2);
-
- object2 = new THREE.Mesh(
- new THREE.BoxBufferGeometry(30, 30, 30),
- material
- );
- object2.name = "Cube in group";
- object2.position.set(0, 0, 400);
- group2.add(object2);
-
- // ---------------------------------------------------------------------
- // Triangle Strip
- // ---------------------------------------------------------------------
- var geometry = new THREE.BufferGeometry();
- var positions = new Float32Array([
- 0,
- 0,
- 0,
- 0,
- 80,
- 0,
- 80,
- 0,
- 0,
- 80,
- 80,
- 0,
- 80,
- 0,
- 80,
- 80,
- 80,
- 80
- ]);
-
- var colors = new Float32Array([
- 1,
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 1
- ]);
-
- geometry.addAttribute(
- "position",
- new THREE.BufferAttribute(positions, 3)
- );
- geometry.addAttribute("color", new THREE.BufferAttribute(colors, 3));
- object = new THREE.Mesh(
- geometry,
- new THREE.MeshBasicMaterial({
- side: THREE.DoubleSide,
- vertexColors: THREE.VertexColors
- })
- );
- object.position.set(140, -40, -250);
- // object.setDrawMode(THREE.TriangleStripDrawMode);
- object.name = "Custom buffered";
- object.userData = { data: "customdata", list: [1, 2, 3, 4] };
-
- scene1.add(object);
-
- // ---------------------------------------------------------------------
- // Line Strip
- // ---------------------------------------------------------------------
- var geometry = new THREE.BufferGeometry();
- var numPoints = 100;
- var positions = new Float32Array(numPoints * 3);
-
- for (var i = 0; i < numPoints; i++) {
- positions[i * 3] = i;
- positions[i * 3 + 1] = Math.sin(i / 2) * 20;
- positions[i * 3 + 2] = 0;
- }
-
- geometry.addAttribute(
- "position",
- new THREE.BufferAttribute(positions, 3)
- );
- object = new THREE.Line(
- geometry,
- new THREE.LineBasicMaterial({ color: 0xffff00 })
- );
- object.position.set(-50, 0, -200);
- scene1.add(object);
-
- // ---------------------------------------------------------------------
- // Buffer geometry truncated (DrawRange)
- // ---------------------------------------------------------------------
- var geometry = new THREE.BufferGeometry();
- var numElements = 6;
- var outOfRange = 3;
-
- var positions = new Float32Array((numElements + outOfRange) * 3);
- var colors = new Float32Array((numElements + outOfRange) * 3);
-
- positions.set([
- 0,
- 0,
- 0,
- 0,
- 80,
- 0,
- 80,
- 0,
- 0,
- 80,
- 0,
- 0,
- 0,
- 80,
- 0,
- 80,
- 80,
- 0
- ]);
-
- colors.set([1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1]);
-
- geometry.addAttribute(
- "position",
- new THREE.BufferAttribute(positions, 3)
- );
- geometry.addAttribute("color", new THREE.BufferAttribute(colors, 3));
- geometry.setDrawRange(0, numElements);
-
- object = new THREE.Mesh(
- geometry,
- new THREE.MeshBasicMaterial({
- side: THREE.DoubleSide,
- vertexColors: THREE.VertexColors
- })
- );
- object.name = "Custom buffered truncated";
- object.position.set(340, -40, -200);
-
- scene1.add(object);
-
- // ---------------------------------------------------------------------
- // Points
- // ---------------------------------------------------------------------
- var numPoints = 100;
- var pointsArray = new Float32Array(numPoints * 3);
- for (var i = 0; i < numPoints; i++) {
- pointsArray[3 * i] = -50 + Math.random() * 100;
- pointsArray[3 * i + 1] = Math.random() * 100;
- pointsArray[3 * i + 2] = -50 + Math.random() * 100;
- }
-
- var pointsGeo = new THREE.BufferGeometry();
- pointsGeo.addAttribute(
- "position",
- new THREE.BufferAttribute(pointsArray, 3)
- );
-
- var pointsMaterial = new THREE.PointsMaterial({
- color: 0xffff00,
- size: 5
- });
- var points = new THREE.Points(pointsGeo, pointsMaterial);
- points.name = "Points";
- points.position.set(-200, 0, -200);
- scene1.add(points);
-
- // ---------------------------------------------------------------------
- // Ortho camera
- // ---------------------------------------------------------------------
- var cameraOrtho = new THREE.OrthographicCamera(
- window.innerWidth / -2,
- window.innerWidth / 2,
- window.innerHeight / 2,
- window.innerHeight / -2,
- 0.1,
- 10
- );
- scene1.add(cameraOrtho);
- cameraOrtho.name = "OrthographicCamera";
-
- material = new THREE.MeshLambertMaterial({
- color: 0xffff00,
- side: THREE.DoubleSide
- });
-
- object = new THREE.Mesh(
- new THREE.CircleGeometry(50, 20, 0, Math.PI * 2),
- material
- );
- object.position.set(200, 0, -400);
- scene1.add(object);
-
- object = new THREE.Mesh(
- new THREE.RingGeometry(10, 50, 20, 5, 0, Math.PI * 2),
- material
- );
- object.position.set(0, 0, -400);
- scene1.add(object);
-
- object = new THREE.Mesh(
- new THREE.CylinderGeometry(25, 75, 100, 40, 5),
- material
- );
- object.position.set(-200, 0, -400);
- scene1.add(object);
-
- // ---------------------------------------------------------------------
- // Big red box hidden just for testing `onlyVisible` option
- // ---------------------------------------------------------------------
- material = new THREE.MeshBasicMaterial({
- color: 0xff0000
- });
- object = new THREE.Mesh(
- new THREE.BoxBufferGeometry(200, 200, 200),
- material
- );
- object.position.set(0, 0, 0);
- object.name = "CubeHidden";
- object.visible = false;
- scene1.add(object);
-
- // ---------------------------------------------------------------------
- //
- //
- var loader = new THREE.OBJLoader();
- loader.load("models/obj/walt/WaltHead.obj", function(obj) {
- waltHead = obj;
- waltHead.scale.multiplyScalar(1.5);
- waltHead.position.set(400, 0, 0);
- scene1.add(waltHead);
- });
-
- //
-
- renderer = new THREE.WebGLRenderer({ antialias: true });
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- container.appendChild(renderer.domElement);
-
- //
-
- window.addEventListener("resize", onWindowResize, false);
- }
-
- function onWindowResize() {
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
- }
-
- //
-
- function animate() {
- requestAnimationFrame(animate);
-
- render();
- }
-
- function render() {
- var timer = Date.now() * 0.0001;
-
- camera.position.x = Math.cos(timer) * 800;
- camera.position.z = Math.sin(timer) * 800;
-
- camera.lookAt(scene1.position);
- renderer.render(scene1, camera);
- }
-};
diff --git a/types/three/test/examples/loaders/tdsloader.ts b/types/three/test/examples/loaders/tdsloader.ts
deleted file mode 100644
index 72666d4003..0000000000
--- a/types/three/test/examples/loaders/tdsloader.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as THREE from '../../../index'
-
-const onSuccess = (object3D: THREE.Object3D) => {};
-const onProgress = (progress: ProgressEvent) => {};
-const onError = (event: ErrorEvent) => {};
-
-() => {
- new THREE.TDSLoader(THREE).load(
- 'folder/file.3ds',
- onSuccess,
- onProgress,
- onError
- );
-}
\ No newline at end of file
diff --git a/types/three/test/examples/loaders/webgl_loader_obj_mtl.ts b/types/three/test/examples/loaders/webgl_loader_obj_mtl.ts
deleted file mode 100644
index 3f11216c5a..0000000000
--- a/types/three/test/examples/loaders/webgl_loader_obj_mtl.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_loader_obj_mtl.html
-
-() => {
-
- var container: HTMLElement;
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer;
- 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( 45, window.innerWidth / window.innerHeight, 1, 2000 );
- camera.position.z = 250;
- // scene
- scene = new THREE.Scene();
- var ambient = new THREE.AmbientLight( 0x444444 );
- scene.add( ambient );
- var directionalLight = new THREE.DirectionalLight( 0xffeedd );
- directionalLight.position.set( 0, 0, 1 ).normalize();
- scene.add( directionalLight );
- // model
- var onProgress = function ( xhr: ProgressEvent ) {
- if ( xhr.lengthComputable ) {
- var percentComplete = xhr.loaded / xhr.total * 100;
- console.log( Math.round(percentComplete) + '% downloaded' );
- }
- };
- var onError = function ( xhr: ErrorEvent ) { };
- THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
- var mtlLoader: THREE.MTLLoader = new THREE.MTLLoader();
- mtlLoader.setPath( 'obj/male02/' );
- mtlLoader.load( 'male02_dds.mtl', function( materials: THREE.MaterialCreator ) {
- materials.preload();
- var objLoader: THREE.OBJLoader = new THREE.OBJLoader();
- objLoader.setMaterials( materials );
- objLoader.setPath( 'obj/male02/' );
- objLoader.load( 'male02.obj', function ( object: THREE.Object3D ) {
- object.position.y = - 95;
- scene.add( object );
- }, onProgress, onError );
- });
-
- renderer = new THREE.WebGLRenderer();
- renderer.setPixelRatio( window.devicePixelRatio );
- renderer.setSize( window.innerWidth, window.innerHeight );
- container.appendChild( renderer.domElement );
- document.addEventListener( 'mousemove', onDocumentMouseMove, 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: MouseEvent ) {
- mouseX = ( event.clientX - windowHalfX ) / 2;
- mouseY = ( event.clientY - windowHalfY ) / 2;
- }
-
- //
- function animate() {
- requestAnimationFrame( animate );
- render();
- }
-
- function render() {
- camera.position.x += ( mouseX - camera.position.x ) * .05;
- camera.position.y += ( - mouseY - camera.position.y ) * .05;
- camera.lookAt( scene.position );
- renderer.render( scene, camera );
- }
-
-}
diff --git a/types/three/test/examples/octree.ts b/types/three/test/examples/octree.ts
deleted file mode 100644
index d37ef7ba75..0000000000
--- a/types/three/test/examples/octree.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-let _octree = new THREE.Octree({
- underferred: false,
- depthMax: Infinity,
- objectsThreshold: 8,
- overlapPct: 0.15,
-});
-
-console.log(_octree.getDepthEnd());
-
diff --git a/types/three/test/math/test_unit_math.ts b/types/three/test/math/test_unit_math.ts
deleted file mode 100644
index 30e8691843..0000000000
--- a/types/three/test/math/test_unit_math.ts
+++ /dev/null
@@ -1,3586 +0,0 @@
-declare function test(desc: string, body: () => void): void;
-declare function ok(cond: any, desc?: string): void;
-declare function deepEqual(a: T, b: T, desc?: string): void;
-declare function equal(a: T, b: T, desc?: string): void;
-
-// https://github.com/mrdoob/three.js/tree/master/test/unit/src/math
-
-()=>{
- // -------------------------------------------- Constants
- var x = 2;
- var y = 3;
- var z = 4;
- var w = 5;
-
- var negInf2 = new THREE.Vector2( -Infinity, -Infinity );
- var posInf2 = new THREE.Vector2( Infinity, Infinity );
-
- var zero2 = new THREE.Vector2();
- var one2 = new THREE.Vector2( 1, 1 );
- var two2 = new THREE.Vector2( 2, 2 );
-
- var negInf3 = new THREE.Vector3( -Infinity, -Infinity, -Infinity );
- var posInf3 = new THREE.Vector3( Infinity, Infinity, Infinity );
-
- var zero3 = new THREE.Vector3();
- var one3 = new THREE.Vector3( 1, 1, 1 );
- var two3 = new THREE.Vector3( 2, 2, 2 );
-
- // -------------------------------------------- Box2
- test( "constructor", function() {
- var a = new THREE.Box2();
- ok( a.min.equals( posInf2 ), "Passed!" );
- ok( a.max.equals( negInf2 ), "Passed!" );
-
- a = new THREE.Box2( zero2.clone(), zero2.clone() );
- ok( a.min.equals( zero2 ), "Passed!" );
- ok( a.max.equals( zero2 ), "Passed!" );
-
- a = new THREE.Box2( zero2.clone(), one2.clone() );
- ok( a.min.equals( zero2 ), "Passed!" );
- ok( a.max.equals( one2 ), "Passed!" );
- });
-
- test( "copy", function() {
- var a = new THREE.Box2( zero2.clone(), one2.clone() );
- var b = new THREE.Box2().copy( a );
- ok( b.min.equals( zero2 ), "Passed!" );
- ok( b.max.equals( one2 ), "Passed!" );
-
- // ensure that it is a true copy
- a.min = zero2;
- a.max = one2;
- ok( b.min.equals( zero2 ), "Passed!" );
- ok( b.max.equals( one2 ), "Passed!" );
- });
-
- test( "set", function() {
- var a = new THREE.Box2();
-
- a.set( zero2, one2 );
- ok( a.min.equals( zero2 ), "Passed!" );
- ok( a.max.equals( one2 ), "Passed!" );
- });
-
- test( "setFromPoints", function() {
- var a = new THREE.Box2();
-
- a.setFromPoints( [ zero2, one2, two2 ] );
- ok( a.min.equals( zero2 ), "Passed!" );
- ok( a.max.equals( two2 ), "Passed!" );
-
- a.setFromPoints( [ one2 ] );
- ok( a.min.equals( one2 ), "Passed!" );
- ok( a.max.equals( one2 ), "Passed!" );
-
- a.setFromPoints( [] );
- ok( a.empty(), "Passed!" );
- });
-
- test( "empty/makeEmpty", function() {
- var a = new THREE.Box2();
-
- ok( a.empty(), "Passed!" );
-
- var a = new THREE.Box2( zero2.clone(), one2.clone() );
- ok( ! a.empty(), "Passed!" );
-
- a.makeEmpty();
- ok( a.empty(), "Passed!" );
- });
-
- test( "center", function() {
- var a = new THREE.Box2( zero2.clone(), zero2.clone() );
- var center = new THREE.Vector2();
-
- ok( a.getCenter(center).equals( zero2 ), "Passed!" );
-
- a = new THREE.Box2( zero2, one2 );
- var midpoint = one2.clone().multiplyScalar( 0.5 );
- ok( a.getCenter(center).equals( midpoint ), "Passed!" );
- });
-
- test( "size", function() {
- var a = new THREE.Box2( zero2.clone(), zero2.clone() );
- var size = new THREE.Vector2();
-
- ok( a.getSize(size).equals( zero2 ), "Passed!" );
-
- a = new THREE.Box2( zero2.clone(), one2.clone() );
- ok( a.getSize(size).equals( one2 ), "Passed!" );
- });
-
- test( "expandByPoint", function() {
- var a = new THREE.Box2( zero2.clone(), zero2.clone() );
- var size = new THREE.Vector2();
-
- a.expandByPoint( zero2 );
- ok( a.getSize(size).equals( zero2 ), "Passed!" );
-
- a.expandByPoint( one2 );
- ok( a.getSize(size).equals( one2 ), "Passed!" );
-
- a.expandByPoint( one2.clone().negate() );
- ok( a.getSize(size).equals( one2.clone().multiplyScalar( 2 ) ), "Passed!" );
- ok( a.getCenter(new THREE.Vector2()).equals( zero2 ), "Passed!" );
- });
-
- test( "expandByVector", function() {
- var a = new THREE.Box2( zero2.clone(), zero2.clone() );
- var size = new THREE.Vector2();
-
- a.expandByVector( zero2 );
- ok( a.getSize(size).equals( zero2 ), "Passed!" );
-
- a.expandByVector( one2 );
- ok( a.getSize(size).equals( one2.clone().multiplyScalar( 2 ) ), "Passed!" );
- ok( a.getCenter(new THREE.Vector2()).equals( zero2 ), "Passed!" );
- });
-
- test( "expandByScalar", function() {
- var a = new THREE.Box2( zero2.clone(), zero2.clone() );
- var size = new THREE.Vector2();
-
- a.expandByScalar( 0 );
- ok( a.getSize(size).equals( zero2 ), "Passed!" );
-
- a.expandByScalar( 1 );
- ok( a.getSize(size).equals( one2.clone().multiplyScalar( 2 ) ), "Passed!" );
- ok( a.getCenter(new THREE.Vector2()).equals( zero2 ), "Passed!" );
- });
-
- test( "containsPoint", function() {
- var a = new THREE.Box2( zero2.clone(), zero2.clone() );
-
- ok( a.containsPoint( zero2 ), "Passed!" );
- ok( ! a.containsPoint( one2 ), "Passed!" );
-
- a.expandByScalar( 1 );
- ok( a.containsPoint( zero2 ), "Passed!" );
- ok( a.containsPoint( one2 ), "Passed!" );
- ok( a.containsPoint( one2.clone().negate() ), "Passed!" );
- });
-
- test( "containsBox", function() {
- var a = new THREE.Box2( zero2.clone(), zero2.clone() );
- var b = new THREE.Box2( zero2.clone(), one2.clone() );
- var c = new THREE.Box2( one2.clone().negate(), one2.clone() );
-
- ok( a.containsBox( a ), "Passed!" );
- ok( ! a.containsBox( b ), "Passed!" );
- ok( ! a.containsBox( c ), "Passed!" );
-
- ok( b.containsBox( a ), "Passed!" );
- ok( c.containsBox( a ), "Passed!" );
- ok( ! b.containsBox( c ), "Passed!" );
- });
-
- test( "getParameter", function() {
- var a = new THREE.Box2( zero2.clone(), one2.clone() );
- var b = new THREE.Box2( one2.clone().negate(), one2.clone() );
-
- ok( a.getParameter( new THREE.Vector2( 0, 0 ) ).equals( new THREE.Vector2( 0, 0 ) ), "Passed!" );
- ok( a.getParameter( new THREE.Vector2( 1, 1 ) ).equals( new THREE.Vector2( 1, 1 ) ), "Passed!" );
-
- ok( b.getParameter( new THREE.Vector2( -1, -1 ) ).equals( new THREE.Vector2( 0, 0 ) ), "Passed!" );
- ok( b.getParameter( new THREE.Vector2( 0, 0 ) ).equals( new THREE.Vector2( 0.5, 0.5 ) ), "Passed!" );
- ok( b.getParameter( new THREE.Vector2( 1, 1 ) ).equals( new THREE.Vector2( 1, 1 ) ), "Passed!" );
- });
-
- test( "clampPoint", function() {
- var a = new THREE.Box2( zero2.clone(), zero2.clone() );
- var b = new THREE.Box2( one2.clone().negate(), one2.clone() );
- var target = new THREE.Vector2();
-
- ok( a.clampPoint( new THREE.Vector2( 0, 0 ), target ).equals( new THREE.Vector2( 0, 0 ) ), "Passed!" );
- ok( a.clampPoint( new THREE.Vector2( 1, 1 ), target ).equals( new THREE.Vector2( 0, 0 ) ), "Passed!" );
- ok( a.clampPoint( new THREE.Vector2( -1, -1 ), target ).equals( new THREE.Vector2( 0, 0 ) ), "Passed!" );
-
- ok( b.clampPoint( new THREE.Vector2( 2, 2 ), target ).equals( new THREE.Vector2( 1, 1 ) ), "Passed!" );
- ok( b.clampPoint( new THREE.Vector2( 1, 1 ), target ).equals( new THREE.Vector2( 1, 1 ) ), "Passed!" );
- ok( b.clampPoint( new THREE.Vector2( 0, 0 ), target ).equals( new THREE.Vector2( 0, 0 ) ), "Passed!" );
- ok( b.clampPoint( new THREE.Vector2( -1, -1 ), target ).equals( new THREE.Vector2( -1, -1 ) ), "Passed!" );
- ok( b.clampPoint( new THREE.Vector2( -2, -2 ), target ).equals( new THREE.Vector2( -1, -1 ) ), "Passed!" );
- });
-
- test( "distanceToPoint", function() {
- var a = new THREE.Box2( zero2.clone(), zero2.clone() );
- var b = new THREE.Box2( one2.clone().negate(), one2.clone() );
-
- ok( a.distanceToPoint( new THREE.Vector2( 0, 0 ) ) == 0, "Passed!" );
- ok( a.distanceToPoint( new THREE.Vector2( 1, 1 ) ) == Math.sqrt( 2 ), "Passed!" );
- ok( a.distanceToPoint( new THREE.Vector2( -1, -1 ) ) == Math.sqrt( 2 ), "Passed!" );
-
- ok( b.distanceToPoint( new THREE.Vector2( 2, 2 ) ) == Math.sqrt( 2 ), "Passed!" );
- ok( b.distanceToPoint( new THREE.Vector2( 1, 1 ) ) == 0, "Passed!" );
- ok( b.distanceToPoint( new THREE.Vector2( 0, 0 ) ) == 0, "Passed!" );
- ok( b.distanceToPoint( new THREE.Vector2( -1, -1 ) ) == 0, "Passed!" );
- ok( b.distanceToPoint( new THREE.Vector2( -2, -2 ) ) == Math.sqrt( 2 ), "Passed!" );
- });
-
- test( "intersectsBox", function() {
- var a = new THREE.Box2( zero2.clone(), zero2.clone() );
- var b = new THREE.Box2( zero2.clone(), one2.clone() );
- var c = new THREE.Box2( one2.clone().negate(), one2.clone() );
-
- ok( a.intersectsBox( a ), "Passed!" );
- ok( a.intersectsBox( b ), "Passed!" );
- ok( a.intersectsBox( c ), "Passed!" );
-
- ok( b.intersectsBox( a ), "Passed!" );
- ok( c.intersectsBox( a ), "Passed!" );
- ok( b.intersectsBox( c ), "Passed!" );
-
- b.translate( new THREE.Vector2( 2, 2 ) );
- ok( ! a.intersectsBox( b ), "Passed!" );
- ok( ! b.intersectsBox( a ), "Passed!" );
- ok( ! b.intersectsBox( c ), "Passed!" );
- });
-
- test( "intersect", function() {
- var a = new THREE.Box2( zero2.clone(), zero2.clone() );
- var b = new THREE.Box2( zero2.clone(), one2.clone() );
- var c = new THREE.Box2( one2.clone().negate(), one2.clone() );
-
- ok( a.clone().intersect( a ).equals( a ), "Passed!" );
- ok( a.clone().intersect( b ).equals( a ), "Passed!" );
- ok( b.clone().intersect( b ).equals( b ), "Passed!" );
- ok( a.clone().intersect( c ).equals( a ), "Passed!" );
- ok( b.clone().intersect( c ).equals( b ), "Passed!" );
- ok( c.clone().intersect( c ).equals( c ), "Passed!" );
- });
-
- test( "union", function() {
- var a = new THREE.Box2( zero2.clone(), zero2.clone() );
- var b = new THREE.Box2( zero2.clone(), one2.clone() );
- var c = new THREE.Box2( one2.clone().negate(), one2.clone() );
-
- ok( a.clone().union( a ).equals( a ), "Passed!" );
- ok( a.clone().union( b ).equals( b ), "Passed!" );
- ok( a.clone().union( c ).equals( c ), "Passed!" );
- ok( b.clone().union( c ).equals( c ), "Passed!" );
- });
-
- test( "translate", function() {
- var a = new THREE.Box2( zero2.clone(), zero2.clone() );
- var b = new THREE.Box2( zero2.clone(), one2.clone() );
- var c = new THREE.Box2( one2.clone().negate(), one2.clone() );
- var d = new THREE.Box2( one2.clone().negate(), zero2.clone() );
-
- ok( a.clone().translate( one2 ).equals( new THREE.Box2( one2, one2 ) ), "Passed!" );
- ok( a.clone().translate( one2 ).translate( one2.clone().negate() ).equals( a ), "Passed!" );
- ok( d.clone().translate( one2 ).equals( b ), "Passed!" );
- ok( b.clone().translate( one2.clone().negate() ).equals( d ), "Passed!" );
- });
-
- // -------------------------------------------- Box3
- test( "constructor", function() {
- var a = new THREE.Box3();
- ok( a.min.equals( posInf3 ), "Passed!" );
- ok( a.max.equals( negInf3 ), "Passed!" );
-
- a = new THREE.Box3( zero3.clone(), zero3.clone() );
- ok( a.min.equals( zero3 ), "Passed!" );
- ok( a.max.equals( zero3 ), "Passed!" );
-
- a = new THREE.Box3( zero3.clone(), one3.clone() );
- ok( a.min.equals( zero3 ), "Passed!" );
- ok( a.max.equals( one3 ), "Passed!" );
- });
-
- test( "copy", function() {
- var a = new THREE.Box3( zero3.clone(), one3.clone() );
- var b = new THREE.Box3().copy( a );
- ok( b.min.equals( zero3 ), "Passed!" );
- ok( b.max.equals( one3 ), "Passed!" );
-
- // ensure that it is a true copy
- a.min = zero3;
- a.max = one3;
- ok( b.min.equals( zero3 ), "Passed!" );
- ok( b.max.equals( one3 ), "Passed!" );
- });
-
- test( "set", function() {
- var a = new THREE.Box3();
-
- a.set( zero3, one3 );
- ok( a.min.equals( zero3 ), "Passed!" );
- ok( a.max.equals( one3 ), "Passed!" );
- });
-
- test( "setFromPoints", function() {
- var a = new THREE.Box3();
-
- a.setFromPoints( [ zero3, one3, two3 ] );
- ok( a.min.equals( zero3 ), "Passed!" );
- ok( a.max.equals( two3 ), "Passed!" );
-
- a.setFromPoints( [ one3 ] );
- ok( a.min.equals( one3 ), "Passed!" );
- ok( a.max.equals( one3 ), "Passed!" );
-
- a.setFromPoints( [] );
- ok( a.empty(), "Passed!" );
- });
-
- test( "empty/makeEmpty", function() {
- var a = new THREE.Box3();
-
- ok( a.empty(), "Passed!" );
-
- var a = new THREE.Box3( zero3.clone(), one3.clone() );
- ok( ! a.empty(), "Passed!" );
-
- a.makeEmpty();
- ok( a.empty(), "Passed!" );
- });
-
- test( "center", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var center = new THREE.Vector3();
-
- ok( a.getCenter(center).equals( zero3 ), "Passed!" );
-
- a = new THREE.Box3( zero3.clone(), one3.clone() );
- var midpoint = one3.clone().multiplyScalar( 0.5 );
- ok( a.getCenter(center).equals( midpoint ), "Passed!" );
- });
-
- test( "size", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var size = new THREE.Vector3();
-
- ok( a.getSize(size).equals( zero3 ), "Passed!" );
-
- a = new THREE.Box3( zero3.clone(), one3.clone() );
- ok( a.getSize(size).equals( one3 ), "Passed!" );
- });
-
- test( "expandByPoint", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var size = new THREE.Vector3();
-
- a.expandByPoint( zero3 );
- ok( a.getSize(size).equals( zero3 ), "Passed!" );
-
- a.expandByPoint( one3 );
- ok( a.getSize(size).equals( one3 ), "Passed!" );
-
- a.expandByPoint( one3.clone().negate() );
- ok( a.getSize(size).equals( one3.clone().multiplyScalar( 2 ) ), "Passed!" );
- ok( a.getCenter(new THREE.Vector3()).equals( zero3 ), "Passed!" );
- });
-
- test( "expandByVector", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var size = new THREE.Vector3();
-
- a.expandByVector( zero3 );
- ok( a.getSize(size).equals( zero3 ), "Passed!" );
-
- a.expandByVector( one3 );
- ok( a.getSize(size).equals( one3.clone().multiplyScalar( 2 ) ), "Passed!" );
- ok( a.getCenter(new THREE.Vector3()).equals( zero3 ), "Passed!" );
- });
-
- test( "expandByScalar", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var size = new THREE.Vector3();
-
- a.expandByScalar( 0 );
- ok( a.getSize(size).equals( zero3 ), "Passed!" );
-
- a.expandByScalar( 1 );
- ok( a.getSize(size).equals( one3.clone().multiplyScalar( 2 ) ), "Passed!" );
- ok( a.getCenter(new THREE.Vector3()).equals( zero3 ), "Passed!" );
- });
-
- test( "containsPoint", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
-
- ok( a.containsPoint( zero3 ), "Passed!" );
- ok( ! a.containsPoint( one3 ), "Passed!" );
-
- a.expandByScalar( 1 );
- ok( a.containsPoint( zero3 ), "Passed!" );
- ok( a.containsPoint( one3 ), "Passed!" );
- ok( a.containsPoint( one3.clone().negate() ), "Passed!" );
- });
-
- test( "containsBox", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var b = new THREE.Box3( zero3.clone(), one3.clone() );
- var c = new THREE.Box3( one3.clone().negate(), one3.clone() );
-
- ok( a.containsBox( a ), "Passed!" );
- ok( ! a.containsBox( b ), "Passed!" );
- ok( ! a.containsBox( c ), "Passed!" );
-
- ok( b.containsBox( a ), "Passed!" );
- ok( c.containsBox( a ), "Passed!" );
- ok( ! b.containsBox( c ), "Passed!" );
- });
-
- test( "getParameter", function() {
- var a = new THREE.Box3( zero3.clone(), one3.clone() );
- var b = new THREE.Box3( one3.clone().negate(), one3.clone() );
-
- ok( a.getParameter( new THREE.Vector3( 0, 0, 0 ) ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
- ok( a.getParameter( new THREE.Vector3( 1, 1, 1 ) ).equals( new THREE.Vector3( 1, 1, 1 ) ), "Passed!" );
-
- ok( b.getParameter( new THREE.Vector3( -1, -1, -1 ) ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
- ok( b.getParameter( new THREE.Vector3( 0, 0, 0 ) ).equals( new THREE.Vector3( 0.5, 0.5, 0.5 ) ), "Passed!" );
- ok( b.getParameter( new THREE.Vector3( 1, 1, 1 ) ).equals( new THREE.Vector3( 1, 1, 1 ) ), "Passed!" );
- });
-
- test( "clampPoint", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var b = new THREE.Box3( one3.clone().negate(), one3.clone() );
- var target = new THREE.Vector3();
-
- ok( a.clampPoint( new THREE.Vector3( 0, 0, 0 ), target ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
- ok( a.clampPoint( new THREE.Vector3( 1, 1, 1 ), target ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
- ok( a.clampPoint( new THREE.Vector3( -1, -1, -1 ), target ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
-
- ok( b.clampPoint( new THREE.Vector3( 2, 2, 2 ), target ).equals( new THREE.Vector3( 1, 1, 1 ) ), "Passed!" );
- ok( b.clampPoint( new THREE.Vector3( 1, 1, 1 ), target ).equals( new THREE.Vector3( 1, 1, 1 ) ), "Passed!" );
- ok( b.clampPoint( new THREE.Vector3( 0, 0, 0 ), target ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
- ok( b.clampPoint( new THREE.Vector3( -1, -1, -1 ), target ).equals( new THREE.Vector3( -1, -1, -1 ) ), "Passed!" );
- ok( b.clampPoint( new THREE.Vector3( -2, -2, -2 ), target ).equals( new THREE.Vector3( -1, -1, -1 ) ), "Passed!" );
- });
-
- test( "distanceToPoint", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var b = new THREE.Box3( one3.clone().negate(), one3.clone() );
-
- ok( a.distanceToPoint( new THREE.Vector3( 0, 0, 0 ) ) == 0, "Passed!" );
- ok( a.distanceToPoint( new THREE.Vector3( 1, 1, 1 ) ) == Math.sqrt( 3 ), "Passed!" );
- ok( a.distanceToPoint( new THREE.Vector3( -1, -1, -1 ) ) == Math.sqrt( 3 ), "Passed!" );
-
- ok( b.distanceToPoint( new THREE.Vector3( 2, 2, 2 ) ) == Math.sqrt( 3 ), "Passed!" );
- ok( b.distanceToPoint( new THREE.Vector3( 1, 1, 1 ) ) == 0, "Passed!" );
- ok( b.distanceToPoint( new THREE.Vector3( 0, 0, 0 ) ) == 0, "Passed!" );
- ok( b.distanceToPoint( new THREE.Vector3( -1, -1, -1 ) ) == 0, "Passed!" );
- ok( b.distanceToPoint( new THREE.Vector3( -2, -2, -2 ) ) == Math.sqrt( 3 ), "Passed!" );
- });
-
- test( "distanceToPoint", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var b = new THREE.Box3( one3.clone().negate(), one3.clone() );
-
- ok( a.distanceToPoint( new THREE.Vector3( 0, 0, 0 ) ) == 0, "Passed!" );
- ok( a.distanceToPoint( new THREE.Vector3( 1, 1, 1 ) ) == Math.sqrt( 3 ), "Passed!" );
- ok( a.distanceToPoint( new THREE.Vector3( -1, -1, -1 ) ) == Math.sqrt( 3 ), "Passed!" );
-
- ok( b.distanceToPoint( new THREE.Vector3( 2, 2, 2 ) ) == Math.sqrt( 3 ), "Passed!" );
- ok( b.distanceToPoint( new THREE.Vector3( 1, 1, 1 ) ) == 0, "Passed!" );
- ok( b.distanceToPoint( new THREE.Vector3( 0, 0, 0 ) ) == 0, "Passed!" );
- ok( b.distanceToPoint( new THREE.Vector3( -1, -1, -1 ) ) == 0, "Passed!" );
- ok( b.distanceToPoint( new THREE.Vector3( -2, -2, -2 ) ) == Math.sqrt( 3 ), "Passed!" );
- });
-
- test( "intersectsBox", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var b = new THREE.Box3( zero3.clone(), one3.clone() );
- var c = new THREE.Box3( one3.clone().negate(), one3.clone() );
-
- ok( a.intersectsBox( a ), "Passed!" );
- ok( a.intersectsBox( b ), "Passed!" );
- ok( a.intersectsBox( c ), "Passed!" );
-
- ok( b.intersectsBox( a ), "Passed!" );
- ok( c.intersectsBox( a ), "Passed!" );
- ok( b.intersectsBox( c ), "Passed!" );
-
- b.translate( new THREE.Vector3( 2, 2, 2 ) );
- ok( ! a.intersectsBox( b ), "Passed!" );
- ok( ! b.intersectsBox( a ), "Passed!" );
- ok( ! b.intersectsBox( c ), "Passed!" );
- });
-
- test( "getBoundingSphere", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var b = new THREE.Box3( zero3.clone(), one3.clone() );
- var c = new THREE.Box3( one3.clone().negate(), one3.clone() );
- var target = new THREE.Sphere();
-
- ok( a.getBoundingSphere( target ).equals( new THREE.Sphere( zero3, 0 ) ), "Passed!" );
- ok( b.getBoundingSphere( target ).equals( new THREE.Sphere( one3.clone().multiplyScalar( 0.5 ), Math.sqrt( 3 ) * 0.5 ) ), "Passed!" );
- ok( c.getBoundingSphere( target ).equals( new THREE.Sphere( zero3, Math.sqrt( 12 ) * 0.5 ) ), "Passed!" );
- });
-
- test( "intersect", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var b = new THREE.Box3( zero3.clone(), one3.clone() );
- var c = new THREE.Box3( one3.clone().negate(), one3.clone() );
-
- ok( a.clone().intersect( a ).equals( a ), "Passed!" );
- ok( a.clone().intersect( b ).equals( a ), "Passed!" );
- ok( b.clone().intersect( b ).equals( b ), "Passed!" );
- ok( a.clone().intersect( c ).equals( a ), "Passed!" );
- ok( b.clone().intersect( c ).equals( b ), "Passed!" );
- ok( c.clone().intersect( c ).equals( c ), "Passed!" );
- });
-
- test( "union", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var b = new THREE.Box3( zero3.clone(), one3.clone() );
- var c = new THREE.Box3( one3.clone().negate(), one3.clone() );
-
- ok( a.clone().union( a ).equals( a ), "Passed!" );
- ok( a.clone().union( b ).equals( b ), "Passed!" );
- ok( a.clone().union( c ).equals( c ), "Passed!" );
- ok( b.clone().union( c ).equals( c ), "Passed!" );
- });
-
- var compareBox = function ( a: THREE.Box3, b: THREE.Box3, threshold?: number ) {
- threshold = threshold || 0.0001;
- return ( a.min.distanceTo( b.min ) < threshold &&
- a.max.distanceTo( b.max ) < threshold );
- };
-
- test( "applyMatrix4", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var b = new THREE.Box3( zero3.clone(), one3.clone() );
- var c = new THREE.Box3( one3.clone().negate(), one3.clone() );
- var d = new THREE.Box3( one3.clone().negate(), zero3.clone() );
-
- var m = new THREE.Matrix4().makeTranslation( 1, -2, 1 );
- var t1 = new THREE.Vector3( 1, -2, 1 );
-
- ok( compareBox( a.clone().applyMatrix4( m ), a.clone().translate( t1 ) ), "Passed!" );
- ok( compareBox( b.clone().applyMatrix4( m ), b.clone().translate( t1 ) ), "Passed!" );
- ok( compareBox( c.clone().applyMatrix4( m ), c.clone().translate( t1 ) ), "Passed!" );
- ok( compareBox( d.clone().applyMatrix4( m ), d.clone().translate( t1 ) ), "Passed!" );
- });
-
- test( "translate", function() {
- var a = new THREE.Box3( zero3.clone(), zero3.clone() );
- var b = new THREE.Box3( zero3.clone(), one3.clone() );
- var c = new THREE.Box3( one3.clone().negate(), one3.clone() );
- var d = new THREE.Box3( one3.clone().negate(), zero3.clone() );
-
- ok( a.clone().translate( one3 ).equals( new THREE.Box3( one3, one3 ) ), "Passed!" );
- ok( a.clone().translate( one3 ).translate( one3.clone().negate() ).equals( a ), "Passed!" );
- ok( d.clone().translate( one3 ).equals( b ), "Passed!" );
- ok( b.clone().translate( one3.clone().negate() ).equals( d ), "Passed!" );
- });
-
- // -------------------------------------------- Color
- test( "constructor", function(){
- var c = new THREE.Color();
- ok( c.r, "Red: " + c.r );
- ok( c.g, "Green: " + c.g );
- ok( c.b, "Blue: " + c.b );
- });
-
- test( "rgb constructor", function(){
- var c = new THREE.Color( 1, 1, 1 );
- ok( c.r == 1, "Passed" );
- ok( c.g == 1, "Passed" );
- ok( c.b == 1, "Passed" );
- });
-
- test( "copyHex", function(){
- var c = new THREE.Color();
- var c2 = new THREE.Color(0xF5FFFA);
- c.copy(c2);
- ok(c.getHex() == c2.getHex(), "Hex c: " + c.getHex() + " Hex c2: " + c2.getHex());
- });
-
- test( "copyColorString", function(){
- var c = new THREE.Color();
- var c2 = new THREE.Color('ivory');
- c.copy(c2);
- ok(c.getHex() == c2.getHex(), "Hex c: " + c.getHex() + " Hex c2: " + c2.getHex());
- });
-
- test( "setRGB", function(){
- var c = new THREE.Color();
- c.setRGB(1, 0.2, 0.1);
- ok( c.r == 1, "Red: " + c.r );
- ok( c.g == 0.2, "Green: " + c.g );
- ok( c.b == 0.1, "Blue: " + c.b );
- });
-
- test( "copyGammaToLinear", function(){
- var c = new THREE.Color();
- var c2 = new THREE.Color();
- c2.setRGB(0.3, 0.5, 0.9);
- c.copyGammaToLinear(c2);
- ok( c.r == 0.09, "Red c: " + c.r + " Red c2: " + c2.r);
- ok( c.g == 0.25, "Green c: " + c.g + " Green c2: " + c2.g);
- ok( c.b == 0.81, "Blue c: " + c.b + " Blue c2: " + c2.b);
- });
-
- test( "copyLinearToGamma", function(){
- var c = new THREE.Color();
- var c2 = new THREE.Color();
- c2.setRGB(0.09, 0.25, 0.81);
- c.copyLinearToGamma(c2);
- ok( c.r == 0.3, "Red c: " + c.r + " Red c2: " + c2.r);
- ok( c.g == 0.5, "Green c: " + c.g + " Green c2: " + c2.g);
- ok( c.b == 0.9, "Blue c: " + c.b + " Blue c2: " + c2.b);
- });
-
-
- test( "convertGammaToLinear", function(){
- var c = new THREE.Color();
- c.setRGB(0.3, 0.5, 0.9);
- c.convertGammaToLinear();
- ok( c.r == 0.09, "Red: " + c.r );
- ok( c.g == 0.25, "Green: " + c.g );
- ok( c.b == 0.81, "Blue: " + c.b );
- });
-
-
- test( "convertLinearToGamma", function(){
- var c = new THREE.Color();
- c.setRGB(4, 9, 16);
- c.convertLinearToGamma();
- ok( c.r == 2, "Red: " + c.r );
- ok( c.g == 3, "Green: " + c.g );
- ok( c.b == 4, "Blue: " + c.b );
- });
-
- test("setWithNum", function(){
- var c = new THREE.Color();
- c.set(0xFF0000);
- ok( c.r == 1, "Red: " + c.r );
- ok( c.g === 0, "Green: " + c.g );
- ok( c.b === 0, "Blue: " + c.b );
- });
-
-
- test( "setWithString", function(){
- var c = new THREE.Color();
- c.set('silver');
- ok(c.getHex() == 0xC0C0C0, "Hex c: " + c.getHex());
- });
-
-
- test( "clone", function(){
- var c = new THREE.Color('teal');
- var c2 = c.clone();
- ok(c2.getHex() == 0x008080, "Hex c2: " + c2.getHex());
- });
-
- test( "lerp", function(){
- var c = new THREE.Color();
- var c2 = new THREE.Color();
- c.setRGB(0, 0, 0);
- c.lerp(c2, 0.2);
- ok( c.r == 0.2, "Red: " + c.r );
- ok( c.g == 0.2, "Green: " + c.g );
- ok( c.b == 0.2, "Blue: " + c.b );
-
- });
-
-
- test( "setStyleRGBRed", function(){
- var c = new THREE.Color();
- c.setStyle('rgb(255,0,0)');
- ok( c.r == 1, "Red: " + c.r );
- ok( c.g === 0, "Green: " + c.g );
- ok( c.b === 0, "Blue: " + c.b );
- });
-
- test( "setStyleRGBRedWithSpaces", function(){
- var c = new THREE.Color();
- c.setStyle('rgb(255, 0, 0)');
- ok( c.r == 1, "Red: " + c.r );
- ok( c.g === 0, "Green: " + c.g );
- ok( c.b === 0, "Blue: " + c.b );
- });
-
- test( "setStyleRGBPercent", function(){
- var c = new THREE.Color();
- c.setStyle('rgb(100%,50%,10%)');
- ok( c.r == 1, "Red: " + c.r );
- ok( c.g == 0.5, "Green: " + c.g );
- ok( c.b == 0.1, "Blue: " + c.b );
- });
-
- test( "setStyleRGBPercentWithSpaces", function(){
- var c = new THREE.Color();
- c.setStyle('rgb(100%,50%,10%)');
- ok( c.r == 1, "Red: " + c.r );
- ok( c.g == 0.5, "Green: " + c.g );
- ok( c.b == 0.1, "Blue: " + c.b );
- });
-
- test( "setStyleHexSkyBlue", function(){
- var c = new THREE.Color();
- c.setStyle('#87CEEB');
- ok(c.getHex() == 0x87CEEB, "Hex c: " + c.getHex());
- });
-
- test( "setStyleHex2Olive", function(){
- var c = new THREE.Color();
- c.setStyle('#F00');
- ok(c.getHex() == 0xFF0000, "Hex c: " + c.getHex());
- });
-
- test( "setStyleColorName", function(){
- var c = new THREE.Color();
- c.setStyle('powderblue');
- ok(c.getHex() == 0xB0E0E6, "Hex c: " + c.getHex());
- });
-
-
- test( "getHex", function(){
- var c = new THREE.Color('red');
- var res = c.getHex();
- ok( res == 0xFF0000, "Hex: " + res );
- });
-
- test( "setHex", function(){
- var c = new THREE.Color();
- c.setHex(0xFA8072);
- ok( c.getHex() == 0xFA8072, "Hex: " + c.getHex());
- });
-
- test( "getHexString", function(){
- var c = new THREE.Color('tomato');
- var res = c.getHexString();
- ok( res == 'ff6347', "Hex: " + res );
- });
-
- test( "getStyle", function(){
- var c = new THREE.Color('plum');
- var res = c.getStyle();
- ok( res == 'rgb(221,160,221)', "style: " + res );
- });
-
- test( "getHSL", function () {
- var c = new THREE.Color( 0x80ffff );
- var hsl = c.getHSL( { h: 0, s: 0, l: 0 } );
-
- ok( hsl.h == 0.5, "hue: " + hsl.h );
- ok( hsl.s == 1.0, "saturation: " + hsl.s );
- ok( (Math.round(parseFloat(hsl.l.toString())*100)/100) == 0.75, "lightness: " + hsl.l );
- });
-
- test( "setHSL", function () {
- var c = new THREE.Color();
- c.setHSL(0.75, 1.0, 0.25);
- var hsl = c.getHSL( { h: 0, s: 0, l: 0 } );
-
- ok( hsl.h == 0.75, "hue: " + hsl.h );
- ok( hsl.s == 1.00, "saturation: " + hsl.s );
- ok( hsl.l == 0.25, "lightness: " + hsl.l );
- });
-
- // -------------------------------------------- Euler
-
- var eulerZero = new THREE.Euler( 0, 0, 0, "XYZ" );
- var eulerAxyz = new THREE.Euler( 1, 0, 0, "XYZ" );
- var eulerAzyx = new THREE.Euler( 0, 1, 0, "ZYX" );
-
- var matrixEquals4 = function( a: THREE.Matrix4, b: THREE.Matrix4 ) {
- var tolerance = 0.0001;
- if( a.elements.length != b.elements.length ) {
- return false;
- }
- for( var i = 0, il = a.elements.length; i < il; i ++ ) {
- var delta = a.elements[i] - b.elements[i];
- if( delta > tolerance ) {
- return false;
- }
- }
- return true;
- };
-
- var eulerEquals = function (a: THREE.Euler, b: THREE.Euler, tolerance?: number) {
- tolerance = tolerance || 0.0001;
- var diff = Math.abs(a.x - b.x) + Math.abs(a.y - b.y) + Math.abs(a.z - b.z);
- return (diff < tolerance);
- };
-
-
- var quatEquals = function (a: THREE.Quaternion, b: THREE.Quaternion, tolerance?: number) {
- tolerance = tolerance || 0.0001;
- var diff = Math.abs(a.x - b.x) + Math.abs(a.y - b.y) + Math.abs(a.z - b.z) + Math.abs(a.w - b.w);
- return (diff < tolerance);
- };
-
-
- test( "constructor/equals", function() {
- var a = new THREE.Euler();
- ok( a.equals( eulerZero ), "Passed!" );
- ok( ! a.equals( eulerAxyz ), "Passed!" );
- ok( ! a.equals( eulerAzyx ), "Passed!" );
- });
-
- test( "clone/copy/equals", function() {
- var a = eulerAxyz.clone();
- ok( a.equals( eulerAxyz ), "Passed!" );
- ok( ! a.equals( eulerZero ), "Passed!" );
- ok( ! a.equals( eulerAzyx ), "Passed!" );
-
- a.copy( eulerAzyx );
- ok( a.equals( eulerAzyx ), "Passed!" );
- ok( ! a.equals( eulerAxyz ), "Passed!" );
- ok( ! a.equals( eulerZero ), "Passed!" );
-
- });
-
- test("set/setFromVector3/toVector3", function () {
- var a = new THREE.Euler();
-
- a.set( 0, 1, 0, "ZYX" );
- ok( a.equals( eulerAzyx ), "Passed!" );
- ok( ! a.equals( eulerAxyz ), "Passed!" );
- ok(!a.equals(eulerZero), "Passed!");
-
- var vec = new THREE.Vector3(0, 1, 0);
-
- var b = new THREE.Euler().setFromVector3(vec, "ZYX");
- console.log(a, b);
- ok(a.equals(b), "Passed!");
-
- var c = b.toVector3();
- console.log(c, vec);
- ok(c.equals(vec), "Passed!");
- });
-
- test( "Quaternion.setFromEuler/Euler.fromQuaternion", function() {
- var testValues = [ eulerZero, eulerAxyz, eulerAzyx ];
- for( var i = 0; i < testValues.length; i ++ ) {
- var v = testValues[i];
- var q = new THREE.Quaternion().setFromEuler( v );
-
- var v2 = new THREE.Euler().setFromQuaternion( q, v.order );
- var q2 = new THREE.Quaternion().setFromEuler( v2 );
- ok(quatEquals(q, q2), "Passed!");
- }
- });
-
-
- test( "Matrix4.setFromEuler/Euler.fromRotationMatrix", function() {
- var testValues = [ eulerZero, eulerAxyz, eulerAzyx ];
- for( var i = 0; i < testValues.length; i ++ ) {
- var v = testValues[i];
- var m = new THREE.Matrix4().makeRotationFromEuler( v );
-
- var v2 = new THREE.Euler().setFromRotationMatrix( m, v.order );
- var m2 = new THREE.Matrix4().makeRotationFromEuler( v2 );
- ok( matrixEquals4( m, m2 ), "Passed!" );
- }
- });
-
- test( "reorder", function() {
- var testValues = [ eulerZero, eulerAxyz, eulerAzyx ];
- for( var i = 0; i < testValues.length; i ++ ) {
- var v = testValues[i];
- var q = new THREE.Quaternion().setFromEuler( v );
-
- v.reorder( 'YZX' );
- var q2 = new THREE.Quaternion().setFromEuler( v );
- ok(quatEquals(q, q2), "Passed!");
-
- v.reorder( 'ZXY' );
- var q3 = new THREE.Quaternion().setFromEuler( v );
- ok(quatEquals(q, q3), "Passed!");
- }
- });
-
- test("gimbalLocalQuat", function () {
- // known problematic quaternions
- var q1 = new THREE.Quaternion(0.5207769385244341, -0.4783214164122354, 0.520776938524434, 0.47832141641223547);
- var q2 = new THREE.Quaternion(0.11284905712620674, 0.6980437630368944, -0.11284905712620674, 0.6980437630368944);
-
- var eulerOrder = "ZYX";
-
- // create Euler directly from a Quaternion
- var eViaQ1 = new THREE.Euler().setFromQuaternion(q1, eulerOrder); // there is likely a bug here
-
- // create Euler from Quaternion via an intermediate Matrix4
- var mViaQ1 = new THREE.Matrix4().makeRotationFromQuaternion(q1);
- var eViaMViaQ1 = new THREE.Euler().setFromRotationMatrix(mViaQ1, eulerOrder);
-
- // the results here are different
- ok(eulerEquals(eViaQ1, eViaMViaQ1), "Passed!"); // this result is correct
-
- });
-
- // -------------------------------------------- Frustum
-
- var unit3 = new THREE.Vector3( 1, 0, 0 );
-
- var planeEquals = function ( a: THREE.Plane, b: THREE.Plane, tolerance: number ) {
- tolerance = tolerance || 0.0001;
- if( a.normal.distanceTo( b.normal ) > tolerance ) {
- return false;
- }
- if( Math.abs( a.constant - b.constant ) > tolerance ) {
- return false;
- }
- return true;
- };
-
- test( "constructor", function() {
- var a = new THREE.Frustum();
-
- ok( a.planes !== undefined, "Passed!" );
- ok( a.planes.length === 6, "Passed!" );
-
- var pDefault = new THREE.Plane();
- for( var i = 0; i < 6; i ++ ) {
- ok( a.planes[i].equals( pDefault ), "Passed!" );
- }
-
- var p0 = new THREE.Plane( unit3, -1 );
- var p1 = new THREE.Plane( unit3, 1 );
- var p2 = new THREE.Plane( unit3, 2 );
- var p3 = new THREE.Plane( unit3, 3 );
- var p4 = new THREE.Plane( unit3, 4 );
- var p5 = new THREE.Plane( unit3, 5 );
-
- a = new THREE.Frustum( p0, p1, p2, p3, p4, p5 );
- ok( a.planes[0].equals( p0 ), "Passed!" );
- ok( a.planes[1].equals( p1 ), "Passed!" );
- ok( a.planes[2].equals( p2 ), "Passed!" );
- ok( a.planes[3].equals( p3 ), "Passed!" );
- ok( a.planes[4].equals( p4 ), "Passed!" );
- ok( a.planes[5].equals( p5 ), "Passed!" );
- });
-
- test( "copy", function() {
-
- var p0 = new THREE.Plane( unit3, -1 );
- var p1 = new THREE.Plane( unit3, 1 );
- var p2 = new THREE.Plane( unit3, 2 );
- var p3 = new THREE.Plane( unit3, 3 );
- var p4 = new THREE.Plane( unit3, 4 );
- var p5 = new THREE.Plane( unit3, 5 );
-
- var b = new THREE.Frustum( p0, p1, p2, p3, p4, p5 );
- var a = new THREE.Frustum().copy( b );
- ok( a.planes[0].equals( p0 ), "Passed!" );
- ok( a.planes[1].equals( p1 ), "Passed!" );
- ok( a.planes[2].equals( p2 ), "Passed!" );
- ok( a.planes[3].equals( p3 ), "Passed!" );
- ok( a.planes[4].equals( p4 ), "Passed!" );
- ok( a.planes[5].equals( p5 ), "Passed!" );
-
- // ensure it is a true copy by modifying source
- b.planes[0] = p1;
- ok( a.planes[0].equals( p0 ), "Passed!" );
- });
-
- test( "setFromMatrix/makeOrthographic/containsPoint", function() {
- var m = new THREE.Matrix4().makeOrthographic( -1, 1, -1, 1, 1, 100 )
- var a = new THREE.Frustum().setFromMatrix( m );
-
- ok( ! a.containsPoint( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( 0, 0, -50 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( 0, 0, -1.001 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( -1, -1, -1.001 ) ), "Passed!" );
- ok( ! a.containsPoint( new THREE.Vector3( -1.1, -1.1, -1.001 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( 1, 1, -1.001 ) ), "Passed!" );
- ok( ! a.containsPoint( new THREE.Vector3( 1.1, 1.1, -1.001 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( 0, 0, -100 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( -1, -1, -100 ) ), "Passed!" );
- ok( ! a.containsPoint( new THREE.Vector3( -1.1, -1.1, -100.1 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( 1, 1, -100 ) ), "Passed!" );
- ok( ! a.containsPoint( new THREE.Vector3( 1.1, 1.1, -100.1 ) ), "Passed!" );
- ok( ! a.containsPoint( new THREE.Vector3( 0, 0, -101 ) ), "Passed!" );
-
- });
-
- test( "setFromMatrix/makeFrustum/containsPoint", function() {
- var m = new THREE.Matrix4().makePerspective( -1, 1, -1, 1, 1, 100 )
- var a = new THREE.Frustum().setFromMatrix( m );
-
- ok( ! a.containsPoint( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( 0, 0, -50 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( 0, 0, -1.001 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( -1, -1, -1.001 ) ), "Passed!" );
- ok( ! a.containsPoint( new THREE.Vector3( -1.1, -1.1, -1.001 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( 1, 1, -1.001 ) ), "Passed!" );
- ok( ! a.containsPoint( new THREE.Vector3( 1.1, 1.1, -1.001 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( 0, 0, -99.999 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( -99.999, -99.999, -99.999 ) ), "Passed!" );
- ok( ! a.containsPoint( new THREE.Vector3( -100.1, -100.1, -100.1 ) ), "Passed!" );
- ok( a.containsPoint( new THREE.Vector3( 99.999, 99.999, -99.999 ) ), "Passed!" );
- ok( ! a.containsPoint( new THREE.Vector3( 100.1, 100.1, -100.1 ) ), "Passed!" );
- ok( ! a.containsPoint( new THREE.Vector3( 0, 0, -101 ) ), "Passed!" );
- });
-
- test( "setFromMatrix/makeFrustum/intersectsSphere", function() {
- var m = new THREE.Matrix4().makePerspective( -1, 1, -1, 1, 1, 100 )
- var a = new THREE.Frustum().setFromMatrix( m );
-
- ok( ! a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 0, 0, 0 ), 0 ) ), "Passed!" );
- ok( ! a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 0, 0, 0 ), 0.9 ) ), "Passed!" );
- ok( a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 0, 0, 0 ), 1.1 ) ), "Passed!" );
- ok( a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 0, 0, -50 ), 0 ) ), "Passed!" );
- ok( a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 0, 0, -1.001 ), 0 ) ), "Passed!" );
- ok( a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( -1, -1, -1.001 ), 0 ) ), "Passed!" );
- ok( ! a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( -1.1, -1.1, -1.001 ), 0 ) ), "Passed!" );
- ok( a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( -1.1, -1.1, -1.001 ), 0.5 ) ), "Passed!" );
- ok( a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 1, 1, -1.001 ), 0 ) ), "Passed!" );
- ok( ! a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 1.1, 1.1, -1.001 ), 0 ) ), "Passed!" );
- ok( a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 1.1, 1.1, -1.001 ), 0.5 ) ), "Passed!" );
- ok( a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 0, 0, -99.999 ), 0 ) ), "Passed!" );
- ok( a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( -99.999, -99.999, -99.999 ), 0 ) ), "Passed!" );
- ok( ! a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( -100.1, -100.1, -100.1 ), 0 ) ), "Passed!" );
- ok( a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( -100.1, -100.1, -100.1 ), 0.5 ) ), "Passed!" );
- ok( a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 99.999, 99.999, -99.999 ), 0 ) ), "Passed!" );
- ok( ! a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 100.1, 100.1, -100.1 ), 0 ) ), "Passed!" );
- ok( a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 100.1, 100.1, -100.1 ), 0.2 ) ), "Passed!" );
- ok( ! a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 0, 0, -101 ), 0 ) ), "Passed!" );
- ok( a.intersectsSphere( new THREE.Sphere( new THREE.Vector3( 0, 0, -101 ), 1.1 ) ), "Passed!" );
- });
-
- test( "clone", function() {
-
- var p0 = new THREE.Plane( unit3, -1 );
- var p1 = new THREE.Plane( unit3, 1 );
- var p2 = new THREE.Plane( unit3, 2 );
- var p3 = new THREE.Plane( unit3, 3 );
- var p4 = new THREE.Plane( unit3, 4 );
- var p5 = new THREE.Plane( unit3, 5 );
-
- var b = new THREE.Frustum( p0, p1, p2, p3, p4, p5 );
- var a = b.clone();
- ok( a.planes[0].equals( p0 ), "Passed!" );
- ok( a.planes[1].equals( p1 ), "Passed!" );
- ok( a.planes[2].equals( p2 ), "Passed!" );
- ok( a.planes[3].equals( p3 ), "Passed!" );
- ok( a.planes[4].equals( p4 ), "Passed!" );
- ok( a.planes[5].equals( p5 ), "Passed!" );
-
- // ensure it is a true copy by modifying source
- a.planes[0].copy( p1 );
- ok( b.planes[0].equals( p0 ), "Passed!" );
- });
-
- // -------------------------------------------- Line3
-
- test( "constructor/equals", function() {
- var a = new THREE.Line3();
- ok( a.start.equals( zero3 ), "Passed!" );
- ok( a.end.equals( zero3 ), "Passed!" );
-
- a = new THREE.Line3( two3.clone(), one3.clone() );
- ok( a.start.equals( two3 ), "Passed!" );
- ok( a.end.equals( one3 ), "Passed!" );
- });
-
- test( "copy/equals", function() {
- var a = new THREE.Line3( zero3.clone(), one3.clone() );
- var b = new THREE.Line3().copy( a );
- ok( b.start.equals( zero3 ), "Passed!" );
- ok( b.end.equals( one3 ), "Passed!" );
-
- // ensure that it is a true copy
- a.start = zero3;
- a.end = one3;
- ok( b.start.equals( zero3 ), "Passed!" );
- ok( b.end.equals( one3 ), "Passed!" );
- });
-
- test( "set", function() {
- var a = new THREE.Line3();
-
- a.set( one3, one3 );
- ok( a.start.equals( one3 ), "Passed!" );
- ok( a.end.equals( one3 ), "Passed!" );
- });
-
- test( "at", function() {
- var a = new THREE.Line3( one3.clone(), new THREE.Vector3( 1, 1, 2 ) );
- var target = new THREE.Vector3();
-
- ok( a.at( -1, target ).distanceTo( new THREE.Vector3( 1, 1, 0 ) ) < 0.0001, "Passed!" );
- ok( a.at( 0, target ).distanceTo( one3.clone() ) < 0.0001, "Passed!" );
- ok( a.at( 1, target ).distanceTo( new THREE.Vector3( 1, 1, 2 ) ) < 0.0001, "Passed!" );
- ok( a.at( 2, target ).distanceTo( new THREE.Vector3( 1, 1, 3 ) ) < 0.0001, "Passed!" );
- });
-
- test( "closestPointToPoint/closestPointToPointParameter", function() {
- var a = new THREE.Line3( one3.clone(), new THREE.Vector3( 1, 1, 2 ) );
- var target = new THREE.Vector3();
-
- // nearby the ray
- ok( a.closestPointToPointParameter( zero3.clone(), true ) == 0, "Passed!" );
- var b1 = a.closestPointToPoint( zero3.clone(), true, target );
- ok( b1.distanceTo( new THREE.Vector3( 1, 1, 1 ) ) < 0.0001, "Passed!" );
-
- // nearby the ray
- ok( a.closestPointToPointParameter( zero3.clone(), false ) == -1, "Passed!" );
- var b2 = a.closestPointToPoint( zero3.clone(), false, target );
- ok( b2.distanceTo( new THREE.Vector3( 1, 1, 0 ) ) < 0.0001, "Passed!" );
-
- // nearby the ray
- ok( a.closestPointToPointParameter( new THREE.Vector3( 1, 1, 5 ), true ) == 1, "Passed!" );
- var b = a.closestPointToPoint( new THREE.Vector3( 1, 1, 5 ), true, target );
- ok( b.distanceTo( new THREE.Vector3( 1, 1, 2 ) ) < 0.0001, "Passed!" );
-
- // exactly on the ray
- ok( a.closestPointToPointParameter( one3.clone(), true ) == 0, "Passed!" );
- var c = a.closestPointToPoint( one3.clone(), true, target );
- ok( c.distanceTo( one3.clone() ) < 0.0001, "Passed!" );
- });
-
- // -------------------------------------------- Matrix3
-
- var matrixEquals3 = function( a: THREE.Matrix, b: THREE.Matrix, tolerance?: number ) {
- tolerance = tolerance || 0.0001;
- if( a.elements.length != b.elements.length ) {
- return false;
- }
- for( var i = 0, il = a.elements.length; i < il; i ++ ) {
- var delta = a.elements[i] - b.elements[i];
- if( delta > tolerance ) {
- return false;
- }
- }
- return true;
- };
-
-
- var toMatrix4 = function( m3: THREE.Matrix3 ) {
- var result = new THREE.Matrix4();
- var re = result.elements;
- var me = m3.elements;
- re[0] = me[0];
- re[1] = me[1];
- re[2] = me[2];
- re[4] = me[3];
- re[5] = me[4];
- re[6] = me[5];
- re[8] = me[6];
- re[9] = me[7];
- re[10] = me[8];
-
- return result;
- };
-
- test( "constructor", function() {
- var a = new THREE.Matrix3();
- ok( a.determinant() == 1, "Passed!" );
-
- var b = new THREE.Matrix3();
- b.set(0, 1, 2, 3, 4, 5, 6, 7, 8);
- ok( b.elements[0] == 0 );
- ok( b.elements[1] == 3 );
- ok( b.elements[2] == 6 );
- ok( b.elements[3] == 1 );
- ok( b.elements[4] == 4 );
- ok( b.elements[5] == 7 );
- ok( b.elements[6] == 2 );
- ok( b.elements[7] == 5 );
- ok( b.elements[8] == 8 );
-
- ok( ! matrixEquals3( a, b ), "Passed!" );
- });
-
- test( "copy", function() {
- var a = new THREE.Matrix3();
- a.set(0, 1, 2, 3, 4, 5, 6, 7, 8);
- var b = new THREE.Matrix3().copy( a );
-
- ok( matrixEquals3( a, b ), "Passed!" );
-
- // ensure that it is a true copy
- a.elements[0] = 2;
- ok( ! matrixEquals3( a, b ), "Passed!" );
- });
-
- test( "set", function() {
- var b = new THREE.Matrix3();
- ok( b.determinant() == 1, "Passed!" );
-
- b.set( 0, 1, 2, 3, 4, 5, 6, 7, 8 );
- ok( b.elements[0] == 0 );
- ok( b.elements[1] == 3 );
- ok( b.elements[2] == 6 );
- ok( b.elements[3] == 1 );
- ok( b.elements[4] == 4 );
- ok( b.elements[5] == 7 );
- ok( b.elements[6] == 2 );
- ok( b.elements[7] == 5 );
- ok( b.elements[8] == 8 );
- });
-
- test( "identity", function() {
- var b = new THREE.Matrix3();
- b.set(0, 1, 2, 3, 4, 5, 6, 7, 8);
- ok( b.elements[0] == 0 );
- ok( b.elements[1] == 3 );
- ok( b.elements[2] == 6 );
- ok( b.elements[3] == 1 );
- ok( b.elements[4] == 4 );
- ok( b.elements[5] == 7 );
- ok( b.elements[6] == 2 );
- ok( b.elements[7] == 5 );
- ok( b.elements[8] == 8 );
-
- var a = new THREE.Matrix3();
- ok( ! matrixEquals3( a, b ), "Passed!" );
-
- b.identity();
- ok( matrixEquals3( a, b ), "Passed!" );
- });
-
- test( "multiplyScalar", function() {
- var b = new THREE.Matrix3();
- b.set(0, 1, 2, 3, 4, 5, 6, 7, 8);
- ok( b.elements[0] == 0 );
- ok( b.elements[1] == 3 );
- ok( b.elements[2] == 6 );
- ok( b.elements[3] == 1 );
- ok( b.elements[4] == 4 );
- ok( b.elements[5] == 7 );
- ok( b.elements[6] == 2 );
- ok( b.elements[7] == 5 );
- ok( b.elements[8] == 8 );
-
- b.multiplyScalar( 2 );
- ok( b.elements[0] == 0*2 );
- ok( b.elements[1] == 3*2 );
- ok( b.elements[2] == 6*2 );
- ok( b.elements[3] == 1*2 );
- ok( b.elements[4] == 4*2 );
- ok( b.elements[5] == 7*2 );
- ok( b.elements[6] == 2*2 );
- ok( b.elements[7] == 5*2 );
- ok( b.elements[8] == 8*2 );
- });
-
- test( "determinant", function() {
- var a = new THREE.Matrix3();
- ok( a.determinant() == 1, "Passed!" );
-
- a.elements[0] = 2;
- ok( a.determinant() == 2, "Passed!" );
-
- a.elements[0] = 0;
- ok( a.determinant() == 0, "Passed!" );
-
- // calculated via http://www.euclideanspace.com/maths/algebra/matrix/functions/determinant/threeD/index.htm
- a.set( 2, 3, 4, 5, 13, 7, 8, 9, 11 );
- ok( a.determinant() == -73, "Passed!" );
- });
-
-
- test( "getInverse", function() {
- var identity = new THREE.Matrix4();
- var a = new THREE.Matrix4();
- var b = new THREE.Matrix3();
- b.set(0, 0, 0, 0, 0, 0, 0, 0, 0);
- var c = new THREE.Matrix4();
- c.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-
- ok( ! matrixEquals3( a, b ), "Passed!" );
- b.getInverse( a, false );
- ok( matrixEquals3( b, new THREE.Matrix3() ), "Passed!" );
-
- try {
- b.getInverse( c, true );
- ok( false, "Passed!" ); // should never get here.
- }
- catch( err ) {
- ok( true, "Passed!" );
- }
-
- var testMatrices = [
- new THREE.Matrix4().makeRotationX( 0.3 ),
- new THREE.Matrix4().makeRotationX( -0.3 ),
- new THREE.Matrix4().makeRotationY( 0.3 ),
- new THREE.Matrix4().makeRotationY( -0.3 ),
- new THREE.Matrix4().makeRotationZ( 0.3 ),
- new THREE.Matrix4().makeRotationZ( -0.3 ),
- new THREE.Matrix4().makeScale( 1, 2, 3 ),
- new THREE.Matrix4().makeScale( 1/8, 1/2, 1/3 )
- ];
-
- for( var i = 0, il = testMatrices.length; i < il; i ++ ) {
- var m = testMatrices[i];
- var mInverse3 = new THREE.Matrix3().getInverse( m );
-
- var mInverse = toMatrix4( mInverse3 );
-
- // the determinant of the inverse should be the reciprocal
- ok( Math.abs( m.determinant() * mInverse3.determinant() - 1 ) < 0.0001, "Passed!" );
- ok( Math.abs( m.determinant() * mInverse.determinant() - 1 ) < 0.0001, "Passed!" );
-
- var mProduct = new THREE.Matrix4().multiplyMatrices( m, mInverse );
- ok( Math.abs( mProduct.determinant() - 1 ) < 0.0001, "Passed!" );
- ok( matrixEquals3( mProduct, identity ), "Passed!" );
- }
- });
-
- test( "transpose", function() {
- var a = new THREE.Matrix3();
- var b = a.clone().transpose();
- ok( matrixEquals3( a, b ), "Passed!" );
-
- b = new THREE.Matrix3();
- b.set(0, 1, 2, 3, 4, 5, 6, 7, 8);
- var c = b.clone().transpose();
- ok( ! matrixEquals3( b, c ), "Passed!" );
- c.transpose();
- ok( matrixEquals3( b, c ), "Passed!" );
- });
-
- test( "clone", function() {
- var a = new THREE.Matrix3();
- a.set(0, 1, 2, 3, 4, 5, 6, 7, 8);
- var b = a.clone();
-
- ok( matrixEquals3( a, b ), "Passed!" );
-
- // ensure that it is a true copy
- a.elements[0] = 2;
- ok( ! matrixEquals3( a, b ), "Passed!" );
- });
-
- // -------------------------------------------- Matrix4
-
- test( "constructor", function() {
- var a = new THREE.Matrix4();
- ok( a.determinant() == 1, "Passed!" );
-
- var b = new THREE.Matrix4();
- b.set(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
- ok( b.elements[0] == 0 );
- ok( b.elements[1] == 4 );
- ok( b.elements[2] == 8 );
- ok( b.elements[3] == 12 );
- ok( b.elements[4] == 1 );
- ok( b.elements[5] == 5 );
- ok( b.elements[6] == 9 );
- ok( b.elements[7] == 13 );
- ok( b.elements[8] == 2 );
- ok( b.elements[9] == 6 );
- ok( b.elements[10] == 10 );
- ok( b.elements[11] == 14 );
- ok( b.elements[12] == 3 );
- ok( b.elements[13] == 7 );
- ok( b.elements[14] == 11 );
- ok( b.elements[15] == 15 );
-
- ok( ! matrixEquals4( a, b ), "Passed!" );
- });
-
- test( "copy", function() {
- var a = new THREE.Matrix4();
- a.set(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
- var b = new THREE.Matrix4().copy( a );
-
- ok( matrixEquals4( a, b ), "Passed!" );
-
- // ensure that it is a true copy
- a.elements[0] = 2;
- ok( ! matrixEquals4( a, b ), "Passed!" );
- });
-
- test( "set", function() {
- var b = new THREE.Matrix4();
- ok( b.determinant() == 1, "Passed!" );
-
- b.set( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 );
- ok( b.elements[0] == 0 );
- ok( b.elements[1] == 4 );
- ok( b.elements[2] == 8 );
- ok( b.elements[3] == 12 );
- ok( b.elements[4] == 1 );
- ok( b.elements[5] == 5 );
- ok( b.elements[6] == 9 );
- ok( b.elements[7] == 13 );
- ok( b.elements[8] == 2 );
- ok( b.elements[9] == 6 );
- ok( b.elements[10] == 10 );
- ok( b.elements[11] == 14 );
- ok( b.elements[12] == 3 );
- ok( b.elements[13] == 7 );
- ok( b.elements[14] == 11 );
- ok( b.elements[15] == 15 );
- });
-
- test( "identity", function() {
- var b = new THREE.Matrix4();
- b.set(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
- ok( b.elements[0] == 0 );
- ok( b.elements[1] == 4 );
- ok( b.elements[2] == 8 );
- ok( b.elements[3] == 12 );
- ok( b.elements[4] == 1 );
- ok( b.elements[5] == 5 );
- ok( b.elements[6] == 9 );
- ok( b.elements[7] == 13 );
- ok( b.elements[8] == 2 );
- ok( b.elements[9] == 6 );
- ok( b.elements[10] == 10 );
- ok( b.elements[11] == 14 );
- ok( b.elements[12] == 3 );
- ok( b.elements[13] == 7 );
- ok( b.elements[14] == 11 );
- ok( b.elements[15] == 15 );
-
- var a = new THREE.Matrix4();
- ok( ! matrixEquals4( a, b ), "Passed!" );
-
- b.identity();
- ok( matrixEquals4( a, b ), "Passed!" );
- });
-
- test( "multiplyScalar", function() {
- var b = new THREE.Matrix4();
- b.set(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
- ok( b.elements[0] == 0 );
- ok( b.elements[1] == 4 );
- ok( b.elements[2] == 8 );
- ok( b.elements[3] == 12 );
- ok( b.elements[4] == 1 );
- ok( b.elements[5] == 5 );
- ok( b.elements[6] == 9 );
- ok( b.elements[7] == 13 );
- ok( b.elements[8] == 2 );
- ok( b.elements[9] == 6 );
- ok( b.elements[10] == 10 );
- ok( b.elements[11] == 14 );
- ok( b.elements[12] == 3 );
- ok( b.elements[13] == 7 );
- ok( b.elements[14] == 11 );
- ok( b.elements[15] == 15 );
-
- b.multiplyScalar( 2 );
- ok( b.elements[0] == 0*2 );
- ok( b.elements[1] == 4*2 );
- ok( b.elements[2] == 8*2 );
- ok( b.elements[3] == 12*2 );
- ok( b.elements[4] == 1*2 );
- ok( b.elements[5] == 5*2 );
- ok( b.elements[6] == 9*2 );
- ok( b.elements[7] == 13*2 );
- ok( b.elements[8] == 2*2 );
- ok( b.elements[9] == 6*2 );
- ok( b.elements[10] == 10*2 );
- ok( b.elements[11] == 14*2 );
- ok( b.elements[12] == 3*2 );
- ok( b.elements[13] == 7*2 );
- ok( b.elements[14] == 11*2 );
- ok( b.elements[15] == 15*2 );
- });
-
- test( "determinant", function() {
- var a = new THREE.Matrix4();
- ok( a.determinant() == 1, "Passed!" );
-
- a.elements[0] = 2;
- ok( a.determinant() == 2, "Passed!" );
-
- a.elements[0] = 0;
- ok( a.determinant() == 0, "Passed!" );
-
- // calculated via http://www.euclideanspace.com/maths/algebra/matrix/functions/determinant/fourD/index.htm
- a.set( 2, 3, 4, 5, -1, -21, -3, -4, 6, 7, 8, 10, -8, -9, -10, -12 );
- ok( a.determinant() == 76, "Passed!" );
- });
-
- test( "getInverse", function() {
- var identity = new THREE.Matrix4();
-
- var a = new THREE.Matrix4();
- var b = new THREE.Matrix4().set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
- var c = new THREE.Matrix4().set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-
- ok( ! matrixEquals4( a, b ), "Passed!" );
- b.getInverse( a, false );
- ok( matrixEquals4( b, new THREE.Matrix4() ), "Passed!" );
-
- try {
- b.getInverse( c, true );
- ok( false, "Passed!" ); // should never get here.
- }
- catch( err ) {
- ok( true, "Passed!" );
- }
-
- var testMatrices = [
- new THREE.Matrix4().makeRotationX( 0.3 ),
- new THREE.Matrix4().makeRotationX( -0.3 ),
- new THREE.Matrix4().makeRotationY( 0.3 ),
- new THREE.Matrix4().makeRotationY( -0.3 ),
- new THREE.Matrix4().makeRotationZ( 0.3 ),
- new THREE.Matrix4().makeRotationZ( -0.3 ),
- new THREE.Matrix4().makeScale( 1, 2, 3 ),
- new THREE.Matrix4().makeScale( 1/8, 1/2, 1/3 ),
- new THREE.Matrix4().makePerspective( -1, 1, -1, 1, 1, 1000 ),
- new THREE.Matrix4().makePerspective( -16, 16, -9, 9, 0.1, 10000 ),
- new THREE.Matrix4().makeTranslation( 1, 2, 3 )
- ];
-
- for( var i = 0, il = testMatrices.length; i < il; i ++ ) {
- var m = testMatrices[i];
-
- var mInverse = new THREE.Matrix4().getInverse( m );
- var mSelfInverse = m.clone();
- mSelfInverse.getInverse( mSelfInverse );
-
-
- // self-inverse should the same as inverse
- ok( matrixEquals4( mSelfInverse, mInverse ), "Passed!" );
-
- // the determinant of the inverse should be the reciprocal
- ok( Math.abs( m.determinant() * mInverse.determinant() - 1 ) < 0.0001, "Passed!" );
-
- var mProduct = new THREE.Matrix4().multiplyMatrices( m, mInverse );
-
- // the determinant of the identity matrix is 1
- ok( Math.abs( mProduct.determinant() - 1 ) < 0.0001, "Passed!" );
- ok( matrixEquals4( mProduct, identity ), "Passed!" );
- }
- });
-
- test("makeBasis/extractBasis", function () {
- var identityBasis = [new THREE.Vector3(1, 0, 0), new THREE.Vector3(0, 1, 0), new THREE.Vector3(0, 0, 1)];
- var a = new THREE.Matrix4().makeBasis(identityBasis[0], identityBasis[1], identityBasis[2]);
- var identity = new THREE.Matrix4();
- ok(matrixEquals4(a, identity), "Passed!");
-
- var testBases = [[new THREE.Vector3(0, 1, 0), new THREE.Vector3(-1, 0, 0), new THREE.Vector3(0, 0, 1)]];
- for (var i = 0; i < testBases.length; i++) {
- var testBasis = testBases[i];
- var b = new THREE.Matrix4().makeBasis(testBasis[0], testBasis[1], testBasis[2]);
- var outBasis = [new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3()];
- b.extractBasis(outBasis[0], outBasis[1], outBasis[2]);
- // check what goes in, is what comes out.
- for (var j = 0; j < outBasis.length; j++) {
- console.log(outBasis[j], testBasis[j]);
- ok(outBasis[j].equals(testBasis[j]), "Passed!");
- }
-
- // get the basis out the hard war
- for (var j = 0; j < identityBasis.length; j++) {
- outBasis[j].copy(identityBasis[j]);
- outBasis[j].applyMatrix4(b);
- }
- // did the multiply method of basis extraction work?
- for (var j = 0; j < outBasis.length; j++) {
- ok(outBasis[j].equals(testBasis[j]), "Passed!");
- }
- }
- });
-
- test( "transpose", function() {
- var a = new THREE.Matrix4();
- var b = a.clone().transpose();
- ok( matrixEquals4( a, b ), "Passed!" );
-
- b = new THREE.Matrix4();
- b.set(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
- var c = b.clone().transpose();
- ok( ! matrixEquals4( b, c ), "Passed!" );
- c.transpose();
- ok( matrixEquals4( b, c ), "Passed!" );
- });
-
- test( "clone", function() {
- var a = new THREE.Matrix4();
- a.set(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
- var b = a.clone();
-
- ok( matrixEquals4( a, b ), "Passed!" );
-
- // ensure that it is a true copy
- a.elements[0] = 2;
- ok( ! matrixEquals4( a, b ), "Passed!" );
- });
-
-
- test( "compose/decompose", function() {
- var tValues = [
- new THREE.Vector3(),
- new THREE.Vector3( 3, 0, 0 ),
- new THREE.Vector3( 0, 4, 0 ),
- new THREE.Vector3( 0, 0, 5 ),
- new THREE.Vector3( -6, 0, 0 ),
- new THREE.Vector3( 0, -7, 0 ),
- new THREE.Vector3( 0, 0, -8 ),
- new THREE.Vector3( -2, 5, -9 ),
- new THREE.Vector3( -2, -5, -9 )
- ];
-
- var sValues = [
- new THREE.Vector3( 1, 1, 1 ),
- new THREE.Vector3( 2, 2, 2 ),
- new THREE.Vector3( 1, -1, 1 ),
- new THREE.Vector3( -1, 1, 1 ),
- new THREE.Vector3( 1, 1, -1 ),
- new THREE.Vector3( 2, -2, 1 ),
- new THREE.Vector3( -1, 2, -2 ),
- new THREE.Vector3( -1, -1, -1 ),
- new THREE.Vector3( -2, -2, -2 )
- ];
-
- var rValues = [
- new THREE.Quaternion(),
- new THREE.Quaternion().setFromEuler( new THREE.Euler( 1, 1, 0 ) ),
- new THREE.Quaternion().setFromEuler( new THREE.Euler( 1, -1, 1 ) ),
- new THREE.Quaternion( 0, 0.9238795292366128, 0, 0.38268342717215614 )
- ];
-
-
- for( var ti = 0; ti < tValues.length; ti ++ ) {
- for( var si = 0; si < sValues.length; si ++ ) {
- for( var ri = 0; ri < rValues.length; ri ++ ) {
- var t = tValues[ti];
- var s = sValues[si];
- var r = rValues[ri];
-
- var m = new THREE.Matrix4().compose( t, r, s );
- var t2 = new THREE.Vector3();
- var r2 = new THREE.Quaternion();
- var s2 = new THREE.Vector3();
-
- m.decompose( t2, r2, s2 );
-
- var m2 = new THREE.Matrix4().compose( t2, r2, s2 );
-
- var matrixIsSame = matrixEquals4( m, m2 );
- /* debug code
- if( ! matrixIsSame ) {
- console.log( t, s, r );
- console.log( t2, s2, r2 );
- console.log( m, m2 );
- }*/
- ok( matrixEquals4( m, m2 ), "Passed!" );
-
- }
- }
- }
- });
-
- // -------------------------------------------- Plane
-
- var comparePlane = function ( a: THREE.Plane, b: THREE.Plane, threshold?: number ) {
- threshold = threshold || 0.0001;
- return ( a.normal.distanceTo( b.normal ) < threshold &&
- Math.abs( a.constant - b.constant ) < threshold );
- };
-
-
- test( "constructor", function() {
- var a = new THREE.Plane();
- ok( a.normal.x == 1, "Passed!" );
- ok( a.normal.y == 0, "Passed!" );
- ok( a.normal.z == 0, "Passed!" );
- ok( a.constant == 0, "Passed!" );
-
- a = new THREE.Plane( one3.clone(), 0 );
- ok( a.normal.x == 1, "Passed!" );
- ok( a.normal.y == 1, "Passed!" );
- ok( a.normal.z == 1, "Passed!" );
- ok( a.constant == 0, "Passed!" );
-
- a = new THREE.Plane( one3.clone(), 1 );
- ok( a.normal.x == 1, "Passed!" );
- ok( a.normal.y == 1, "Passed!" );
- ok( a.normal.z == 1, "Passed!" );
- ok( a.constant == 1, "Passed!" );
- });
-
- test( "copy", function() {
- var a = new THREE.Plane( new THREE.Vector3( x, y, z ), w );
- var b = new THREE.Plane().copy( a );
- ok( b.normal.x == x, "Passed!" );
- ok( b.normal.y == y, "Passed!" );
- ok( b.normal.z == z, "Passed!" );
- ok( b.constant == w, "Passed!" );
-
- // ensure that it is a true copy
- a.normal.x = 0;
- a.normal.y = -1;
- a.normal.z = -2;
- a.constant = -3;
- ok( b.normal.x == x, "Passed!" );
- ok( b.normal.y == y, "Passed!" );
- ok( b.normal.z == z, "Passed!" );
- ok( b.constant == w, "Passed!" );
- });
-
- test( "set", function() {
- var a = new THREE.Plane();
- ok( a.normal.x == 1, "Passed!" );
- ok( a.normal.y == 0, "Passed!" );
- ok( a.normal.z == 0, "Passed!" );
- ok( a.constant == 0, "Passed!" );
-
- var b = a.clone().set( new THREE.Vector3( x, y, z ), w );
- ok( b.normal.x == x, "Passed!" );
- ok( b.normal.y == y, "Passed!" );
- ok( b.normal.z == z, "Passed!" );
- ok( b.constant == w, "Passed!" );
- });
-
- test( "setComponents", function() {
- var a = new THREE.Plane();
- ok( a.normal.x == 1, "Passed!" );
- ok( a.normal.y == 0, "Passed!" );
- ok( a.normal.z == 0, "Passed!" );
- ok( a.constant == 0, "Passed!" );
-
- var b = a.clone().setComponents( x, y, z , w );
- ok( b.normal.x == x, "Passed!" );
- ok( b.normal.y == y, "Passed!" );
- ok( b.normal.z == z, "Passed!" );
- ok( b.constant == w, "Passed!" );
- });
-
- test( "setFromNormalAndCoplanarPoint", function() {
- var normal = one3.clone().normalize();
- var a = new THREE.Plane().setFromNormalAndCoplanarPoint( normal, zero3 );
-
- ok( a.normal.equals( normal ), "Passed!" );
- ok( a.constant == 0, "Passed!" );
- });
-
- test( "normalize", function() {
- var a = new THREE.Plane( new THREE.Vector3( 2, 0, 0 ), 2 );
-
- a.normalize();
- ok( a.normal.length() == 1, "Passed!" );
- ok( a.normal.equals( new THREE.Vector3( 1, 0, 0 ) ), "Passed!" );
- ok( a.constant == 1, "Passed!" );
- });
-
- test( "negate/distanceToPoint", function() {
- var a = new THREE.Plane( new THREE.Vector3( 2, 0, 0 ), -2 );
-
- a.normalize();
- ok( a.distanceToPoint( new THREE.Vector3( 4, 0, 0 ) ) === 3, "Passed!" );
- ok( a.distanceToPoint( new THREE.Vector3( 1, 0, 0 ) ) === 0, "Passed!" );
-
- a.negate();
- ok( a.distanceToPoint( new THREE.Vector3( 4, 0, 0 ) ) === -3, "Passed!" );
- ok( a.distanceToPoint( new THREE.Vector3( 1, 0, 0 ) ) === 0, "Passed!" );
- });
-
- test( "distanceToPoint", function() {
- var a = new THREE.Plane( new THREE.Vector3( 2, 0, 0 ), -2 );
-
- a.normalize();
- ok( a.distanceToPoint( a.projectPoint( zero3.clone(), new THREE.Vector3() ) ) === 0, "Passed!" );
- ok( a.distanceToPoint( new THREE.Vector3( 4, 0, 0 ) ) === 3, "Passed!" );
- });
-
- test( "distanceToSphere", function() {
- var a = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), 0 );
-
- var b = new THREE.Sphere( new THREE.Vector3( 2, 0, 0 ), 1 );
-
- ok( a.distanceToSphere( b ) === 1, "Passed!" );
-
- a.set( new THREE.Vector3( 1, 0, 0 ), 2 );
- ok( a.distanceToSphere( b ) === 3, "Passed!" );
- a.set( new THREE.Vector3( 1, 0, 0 ), -2 );
- ok( a.distanceToSphere( b ) === -1, "Passed!" );
- });
-
- test( "isInterestionLine/intersectLine", function() {
- var a = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), 0 );
- var target = new THREE.Vector3();
-
- var l1 = new THREE.Line3( new THREE.Vector3( -10, 0, 0 ), new THREE.Vector3( 10, 0, 0 ) );
- ok( a.intersectsLine( l1 ), "Passed!" );
- ok( a.intersectLine( l1, target ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
-
- a = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), -3 );
-
- ok( a.intersectsLine( l1 ), "Passed!" );
- ok( a.intersectLine( l1, target ).equals( new THREE.Vector3( 3, 0, 0 ) ), "Passed!" );
-
-
- a = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), -11 );
-
- ok( ! a.intersectsLine( l1 ), "Passed!" );
- ok( a.intersectLine( l1, target ) === undefined, "Passed!" );
-
- a = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), 11 );
-
- ok( ! a.intersectsLine( l1 ), "Passed!" );
- ok( a.intersectLine( l1, target ) === undefined, "Passed!" );
-
- });
-
- test( "projectPoint", function() {
- var a = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), 0 );
- var target = new THREE.Vector3();
-
- ok( a.projectPoint( new THREE.Vector3( 10, 0, 0 ), target ).equals( zero3 ), "Passed!" );
- ok( a.projectPoint( new THREE.Vector3( -10, 0, 0 ), target ).equals( zero3 ), "Passed!" );
-
- a = new THREE.Plane( new THREE.Vector3( 0, 1, 0 ), -1 );
- ok( a.projectPoint( new THREE.Vector3( 0, 0, 0 ), target ).equals( new THREE.Vector3( 0, 1, 0 ) ), "Passed!" );
- ok( a.projectPoint( new THREE.Vector3( 0, 1, 0 ), target ).equals( new THREE.Vector3( 0, 1, 0 ) ), "Passed!" );
-
- });
-
- test( "orthoPoint", function() {
- var a = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), 0 );
- var target = new THREE.Vector3();
-
- ok( a.orthoPoint( new THREE.Vector3( 10, 0, 0 ), target ).equals( new THREE.Vector3( 10, 0, 0 ) ), "Passed!" );
- ok( a.orthoPoint( new THREE.Vector3( -10, 0, 0 ), target ).equals( new THREE.Vector3( -10, 0, 0 ) ), "Passed!" );
- });
-
- test( "coplanarPoint", function() {
- var a = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), 0 );
- ok( a.distanceToPoint( a.coplanarPoint( new THREE.Vector3() ) ) === 0, "Passed!" );
-
- a = new THREE.Plane( new THREE.Vector3( 0, 1, 0 ), -1 );
- ok( a.distanceToPoint( a.coplanarPoint( new THREE.Vector3() ) ) === 0, "Passed!" );
- });
-
- test( "applyMatrix4/translate", function() {
-
- var a = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), 0 );
-
- var m = new THREE.Matrix4();
- m.makeRotationZ( Math.PI * 0.5 );
-
- ok( comparePlane( a.clone().applyMatrix4( m ), new THREE.Plane( new THREE.Vector3( 0, 1, 0 ), 0 ) ), "Passed!" );
-
- a = new THREE.Plane( new THREE.Vector3( 0, 1, 0 ), -1 );
- ok( comparePlane( a.clone().applyMatrix4( m ), new THREE.Plane( new THREE.Vector3( -1, 0, 0 ), -1 ) ), "Passed!" );
-
- m.makeTranslation( 1, 1, 1 );
- ok( comparePlane( a.clone().applyMatrix4( m ), a.clone().translate( new THREE.Vector3( 1, 1, 1 ) ) ), "Passed!" );
- });
-
- // -------------------------------------------- Quaternion
-
- var orders = [ 'XYZ', 'YXZ', 'ZXY', 'ZYX', 'YZX', 'XZY' ];
- var eulerAngles = new THREE.Euler( 0.1, -0.3, 0.25 );
-
-
-
- var qSub = function ( a: THREE.Quaternion, b: THREE.Quaternion ) {
- var result = new THREE.Quaternion();
- result.copy( a );
-
- result.x -= b.x;
- result.y -= b.y;
- result.z -= b.z;
- result.w -= b.w;
-
- return result;
-
- };
-
- test( "constructor", function() {
- var a = new THREE.Quaternion();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
- ok( a.z == 0, "Passed!" );
- ok( a.w == 1, "Passed!" );
-
- a = new THREE.Quaternion( x, y, z, w );
- ok( a.x === x, "Passed!" );
- ok( a.y === y, "Passed!" );
- ok( a.z === z, "Passed!" );
- ok( a.w === w, "Passed!" );
- });
-
- test( "copy", function() {
- var a = new THREE.Quaternion( x, y, z, w );
- var b = new THREE.Quaternion().copy( a );
- ok( b.x == x, "Passed!" );
- ok( b.y == y, "Passed!" );
- ok( b.z == z, "Passed!" );
- ok( b.w == w, "Passed!" );
-
- // ensure that it is a true copy
- a.x = 0;
- a.y = -1;
- a.z = 0;
- a.w = -1;
- ok( b.x == x, "Passed!" );
- ok( b.y == y, "Passed!" );
- });
-
- test( "set", function() {
- var a = new THREE.Quaternion();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
- ok( a.z == 0, "Passed!" );
- ok( a.w == 1, "Passed!" );
-
- a.set( x, y, z, w );
- ok( a.x == x, "Passed!" );
- ok( a.y == y, "Passed!" );
- ok( a.z === z, "Passed!" );
- ok( a.w === w, "Passed!" );
- });
-
- test( "setFromAxisAngle", function() {
-
- // TODO: find cases to validate.
- ok( true, "Passed!" );
-
- var zero = new THREE.Quaternion();
-
- var a = new THREE.Quaternion().setFromAxisAngle( new THREE.Vector3( 1, 0, 0 ), 0 );
- ok( a.equals( zero ), "Passed!" );
- a = new THREE.Quaternion().setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), 0 );
- ok( a.equals( zero ), "Passed!" );
- a = new THREE.Quaternion().setFromAxisAngle( new THREE.Vector3( 0, 0, 1 ), 0 );
- ok( a.equals( zero ), "Passed!" );
-
- var b1 = new THREE.Quaternion().setFromAxisAngle( new THREE.Vector3( 1, 0, 0 ), Math.PI );
- ok( ! a.equals( b1 ), "Passed!" );
- var b2 = new THREE.Quaternion().setFromAxisAngle( new THREE.Vector3( 1, 0, 0 ), -Math.PI );
- ok( ! a.equals( b2 ), "Passed!" );
-
- b1.multiply( b2 );
- ok( a.equals( b1 ), "Passed!" );
- });
-
-
- test( "setFromEuler/setFromQuaternion", function() {
-
- var angles = [ new THREE.Vector3( 1, 0, 0 ), new THREE.Vector3( 0, 1, 0 ), new THREE.Vector3( 0, 0, 1 ) ];
-
- // ensure euler conversion to/from Quaternion matches.
- for( var i = 0; i < orders.length; i ++ ) {
- for( var j = 0; j < angles.length; j ++ ) {
- var eulers2 = new THREE.Euler().setFromQuaternion( new THREE.Quaternion().setFromEuler( new THREE.Euler( angles[j].x, angles[j].y, angles[j].z, orders[i] ) ), orders[i] );
- var newAngle = new THREE.Vector3( eulers2.x, eulers2.y, eulers2.z );
- ok( newAngle.distanceTo( angles[j] ) < 0.001, "Passed!" );
- }
- }
-
- });
-
- test( "setFromEuler/setFromRotationMatrix", function() {
-
- // ensure euler conversion for Quaternion matches that of Matrix4
- for( var i = 0; i < orders.length; i ++ ) {
- var q = new THREE.Quaternion().setFromEuler( eulerAngles, false );
- var m = new THREE.Matrix4().makeRotationFromEuler( eulerAngles );
- var q2 = new THREE.Quaternion().setFromRotationMatrix( m );
-
- ok( qSub( q, q2 ).length() < 0.001, "Passed!" );
- }
-
- });
-
- test( "normalize/length/lengthSq", function() {
- var a = new THREE.Quaternion( x, y, z, w );
- var b = new THREE.Quaternion( -x, -y, -z, -w );
-
- ok( a.length() != 1, "Passed!");
- ok( a.lengthSq() != 1, "Passed!");
- a.normalize();
- ok( a.length() == 1, "Passed!");
- ok( a.lengthSq() == 1, "Passed!");
-
- a.set( 0, 0, 0, 0 );
- ok( a.lengthSq() == 0, "Passed!");
- ok( a.length() == 0, "Passed!");
- a.normalize();
- ok( a.lengthSq() == 1, "Passed!");
- ok( a.length() == 1, "Passed!");
- });
-
- test( "inverse/conjugate", function() {
- var a = new THREE.Quaternion( x, y, z, w );
-
- // TODO: add better validation here.
-
- var b = a.clone().conjugate();
-
- ok( a.x == -b.x, "Passed!" );
- ok( a.y == -b.y, "Passed!" );
- ok( a.z == -b.z, "Passed!" );
- ok( a.w == b.w, "Passed!" );
- });
-
-
- test( "multiplyQuaternions/multiply", function() {
-
- var angles = [ new THREE.Euler( 1, 0, 0 ), new THREE.Euler( 0, 1, 0 ), new THREE.Euler( 0, 0, 1 ) ];
-
- var q1 = new THREE.Quaternion().setFromEuler( angles[0], false );
- var q2 = new THREE.Quaternion().setFromEuler( angles[1], false );
- var q3 = new THREE.Quaternion().setFromEuler( angles[2], false );
-
- var q = new THREE.Quaternion().multiplyQuaternions( q1, q2 ).multiply( q3 );
-
- var m1 = new THREE.Matrix4().makeRotationFromEuler( angles[0] );
- var m2 = new THREE.Matrix4().makeRotationFromEuler( angles[1] );
- var m3 = new THREE.Matrix4().makeRotationFromEuler( angles[2] );
-
- var m = new THREE.Matrix4().multiplyMatrices( m1, m2 ).multiply( m3 );
-
- var qFromM = new THREE.Quaternion().setFromRotationMatrix( m );
-
- ok( qSub( q, qFromM ).length() < 0.001, "Passed!" );
- });
-
- test( "multiplyVector3", function() {
-
- var angles = [ new THREE.Euler( 1, 0, 0 ), new THREE.Euler( 0, 1, 0 ), new THREE.Euler( 0, 0, 1 ) ];
-
- // ensure euler conversion for Quaternion matches that of Matrix4
- for( var i = 0; i < orders.length; i ++ ) {
- for( var j = 0; j < angles.length; j ++ ) {
- var q = new THREE.Quaternion().setFromEuler( angles[j], false );
- var m = new THREE.Matrix4().makeRotationFromEuler( angles[j] );
-
- var v0 = new THREE.Vector3(1, 0, 0);
- var qv = v0.clone().applyQuaternion( q );
- var mv = v0.clone().applyMatrix4( m );
-
- ok( qv.distanceTo( mv ) < 0.001, "Passed!" );
- }
- }
-
- });
-
- test( "equals", function() {
- var a = new THREE.Quaternion( x, y, z, w );
- var b = new THREE.Quaternion( -x, -y, -z, -w );
-
- ok( a.x != b.x, "Passed!" );
- ok( a.y != b.y, "Passed!" );
-
- ok( ! a.equals( b ), "Passed!" );
- ok( ! b.equals( a ), "Passed!" );
-
- a.copy( b );
- ok( a.x == b.x, "Passed!" );
- ok( a.y == b.y, "Passed!" );
-
- ok( a.equals( b ), "Passed!" );
- ok( b.equals( a ), "Passed!" );
- });
-
- // -------------------------------------------- Ray
-
- test( "constructor/equals", function() {
- var a = new THREE.Ray();
- ok( a.origin.equals( zero3 ), "Passed!" );
- ok( a.direction.equals( zero3 ), "Passed!" );
-
- a = new THREE.Ray( two3.clone(), one3.clone() );
- ok( a.origin.equals( two3 ), "Passed!" );
- ok( a.direction.equals( one3 ), "Passed!" );
- });
-
- test( "copy/equals", function() {
- var a = new THREE.Ray( zero3.clone(), one3.clone() );
- var b = new THREE.Ray().copy( a );
- ok( b.origin.equals( zero3 ), "Passed!" );
- ok( b.direction.equals( one3 ), "Passed!" );
-
- // ensure that it is a true copy
- a.origin = zero3;
- a.direction = one3;
- ok( b.origin.equals( zero3 ), "Passed!" );
- ok( b.direction.equals( one3 ), "Passed!" );
- });
-
- test( "set", function() {
- var a = new THREE.Ray();
-
- a.set( one3, one3 );
- ok( a.origin.equals( one3 ), "Passed!" );
- ok( a.direction.equals( one3 ), "Passed!" );
- });
-
- test( "at", function() {
- var a = new THREE.Ray( one3.clone(), new THREE.Vector3( 0, 0, 1 ) );
- var target = new THREE.Vector3();
-
- ok( a.at( 0, target ).equals( one3 ), "Passed!" );
- ok( a.at( -1, target ).equals( new THREE.Vector3( 1, 1, 0 ) ), "Passed!" );
- ok( a.at( 1, target ).equals( new THREE.Vector3( 1, 1, 2 ) ), "Passed!" );
- });
-
- test( "recast/clone", function() {
- var a = new THREE.Ray( one3.clone(), new THREE.Vector3( 0, 0, 1 ) );
-
- ok( a.recast( 0 ).equals( a ), "Passed!" );
-
- var b = a.clone();
- ok( b.recast( -1 ).equals( new THREE.Ray( new THREE.Vector3( 1, 1, 0 ), new THREE.Vector3( 0, 0, 1 ) ) ), "Passed!" );
-
- var c = a.clone();
- ok( c.recast( 1 ).equals( new THREE.Ray( new THREE.Vector3( 1, 1, 2 ), new THREE.Vector3( 0, 0, 1 ) ) ), "Passed!" );
-
- var d = a.clone();
- var e = d.clone().recast( 1 );
- ok( d.equals( a ), "Passed!" );
- ok( ! e.equals( d ), "Passed!" );
- ok( e.equals( c ), "Passed!" );
- });
-
- test( "closestPointToPoint", function() {
- var a = new THREE.Ray( one3.clone(), new THREE.Vector3( 0, 0, 1 ) );
- var target = new THREE.Vector3();
-
- // behind the ray
- var b = a.closestPointToPoint( zero3, target );
- ok( b.equals( one3 ), "Passed!" );
-
- // front of the ray
- var c = a.closestPointToPoint( new THREE.Vector3( 0, 0, 50 ), target );
- ok( c.equals( new THREE.Vector3( 1, 1, 50 ) ), "Passed!" );
-
- // exactly on the ray
- var d = a.closestPointToPoint( one3, target );
- ok( d.equals( one3 ), "Passed!" );
- });
-
- test( "distanceToPoint", function() {
- var a = new THREE.Ray( one3.clone(), new THREE.Vector3( 0, 0, 1 ) );
-
- // behind the ray
- var b = a.distanceToPoint( zero3 );
- ok( b === Math.sqrt( 3 ), "Passed!" );
-
- // front of the ray
- var c = a.distanceToPoint( new THREE.Vector3( 0, 0, 50 ) );
- ok( c === Math.sqrt( 2 ), "Passed!" );
-
- // exactly on the ray
- var d = a.distanceToPoint( one3 );
- ok( d === 0, "Passed!" );
- });
-
- test( "intersectsSphere", function() {
- var a = new THREE.Ray( one3.clone(), new THREE.Vector3( 0, 0, 1 ) );
- var b = new THREE.Sphere( zero3, 0.5 );
- var c = new THREE.Sphere( zero3, 1.5 );
- var d = new THREE.Sphere( one3, 0.1 );
- var e = new THREE.Sphere( two3, 0.1 );
- var f = new THREE.Sphere( two3, 1 );
-
- ok( ! a.intersectsSphere( b ), "Passed!" );
- ok( ! a.intersectsSphere( c ), "Passed!" );
- ok( a.intersectsSphere( d ), "Passed!" );
- ok( ! a.intersectsSphere( e ), "Passed!" );
- ok( ! a.intersectsSphere( f ), "Passed!" );
- });
-
- test( "intersectSphere", function() {
-
- var TOL = 0.0001;
-
- // ray a0 origin located at ( 0, 0, 0 ) and points outward in negative-z direction
- var a0 = new THREE.Ray( zero3.clone(), new THREE.Vector3( 0, 0, -1 ) );
- // ray a1 origin located at ( 1, 1, 1 ) and points left in negative-x direction
- var a1 = new THREE.Ray( one3.clone(), new THREE.Vector3( -1, 0, 0 ) );
- var target = new THREE.Vector3();
-
- // sphere (radius of 2) located behind ray a0, should result in null
- var b = new THREE.Sphere( new THREE.Vector3( 0, 0, 3 ), 2 );
- ok( a0.intersectSphere( b, target ) === null, "Passed!" );
-
- // sphere (radius of 2) located in front of, but too far right of ray a0, should result in null
- var b = new THREE.Sphere( new THREE.Vector3( 3, 0, -1 ), 2 );
- ok( a0.intersectSphere( b, target ) === null, "Passed!" );
-
- // sphere (radius of 2) located below ray a1, should result in null
- var b = new THREE.Sphere( new THREE.Vector3( 1, -2, 1 ), 2 );
- ok( a1.intersectSphere( b, target ) === null, "Passed!" );
-
- // sphere (radius of 1) located to the left of ray a1, should result in intersection at 0, 1, 1
- var b = new THREE.Sphere( new THREE.Vector3( -1, 1, 1 ), 1 );
- ok( a1.intersectSphere( b, target ).distanceTo( new THREE.Vector3( 0, 1, 1 ) ) < TOL, "Passed!" );
-
- // sphere (radius of 1) located in front of ray a0, should result in intersection at 0, 0, -1
- var b = new THREE.Sphere( new THREE.Vector3( 0, 0, -2 ), 1 );
- ok( a0.intersectSphere( b, target ).distanceTo( new THREE.Vector3( 0, 0, -1 ) ) < TOL, "Passed!" );
-
- // sphere (radius of 2) located in front & right of ray a0, should result in intersection at 0, 0, -1, or left-most edge of sphere
- var b = new THREE.Sphere( new THREE.Vector3( 2, 0, -1 ), 2 );
- ok( a0.intersectSphere( b, target ).distanceTo( new THREE.Vector3( 0, 0, -1 ) ) < TOL, "Passed!" );
-
- // same situation as above, but move the sphere a fraction more to the right, and ray a0 should now just miss
- var b = new THREE.Sphere( new THREE.Vector3( 2.01, 0, -1 ), 2 );
- ok( a0.intersectSphere( b, target ) === null, "Passed!" );
-
- // following tests are for situations where the ray origin is inside the sphere
-
- // sphere (radius of 1) center located at ray a0 origin / sphere surrounds the ray origin, so the first intersect point 0, 0, 1,
- // is behind ray a0. Therefore, second exit point on back of sphere will be returned: 0, 0, -1
- // thus keeping the intersection point always in front of the ray.
- var b = new THREE.Sphere( zero3.clone(), 1 );
- ok( a0.intersectSphere( b, target ).distanceTo( new THREE.Vector3( 0, 0, -1 ) ) < TOL, "Passed!" );
-
- // sphere (radius of 4) center located behind ray a0 origin / sphere surrounds the ray origin, so the first intersect point 0, 0, 5,
- // is behind ray a0. Therefore, second exit point on back of sphere will be returned: 0, 0, -3
- // thus keeping the intersection point always in front of the ray.
- var b = new THREE.Sphere( new THREE.Vector3( 0, 0, 1 ), 4 );
- ok( a0.intersectSphere( b, target ).distanceTo( new THREE.Vector3( 0, 0, -3 ) ) < TOL, "Passed!" );
-
- // sphere (radius of 4) center located in front of ray a0 origin / sphere surrounds the ray origin, so the first intersect point 0, 0, 3,
- // is behind ray a0. Therefore, second exit point on back of sphere will be returned: 0, 0, -5
- // thus keeping the intersection point always in front of the ray.
- var b = new THREE.Sphere( new THREE.Vector3( 0, 0, -1 ), 4 );
- ok( a0.intersectSphere( b, target ).distanceTo( new THREE.Vector3( 0, 0, -5 ) ) < TOL, "Passed!" );
-
- });
-
- test( "intersectsPlane", function() {
- var a = new THREE.Ray( one3.clone(), new THREE.Vector3( 0, 0, 1 ) );
-
- // parallel plane in front of the ray
- var b = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 0, 0, 1 ), one3.clone().sub( new THREE.Vector3( 0, 0, -1 ) ) );
- ok( a.intersectsPlane( b ), "Passed!" );
-
- // parallel plane coincident with origin
- var c = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 0, 0, 1 ), one3.clone().sub( new THREE.Vector3( 0, 0, 0 ) ) );
- ok( a.intersectsPlane( c ), "Passed!" );
-
- // parallel plane behind the ray
- var d = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 0, 0, 1 ), one3.clone().sub( new THREE.Vector3( 0, 0, 1 ) ) );
- ok( ! a.intersectsPlane( d ), "Passed!" );
-
- // perpendical ray that overlaps exactly
- var e = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 1, 0, 0 ), one3 );
- ok( a.intersectsPlane( e ), "Passed!" );
-
- // perpendical ray that doesn't overlap
- var f = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 1, 0, 0 ), zero3 );
- ok( ! a.intersectsPlane( f ), "Passed!" );
- });
-
- test( "intersectPlane", function() {
- var a = new THREE.Ray( one3.clone(), new THREE.Vector3( 0, 0, 1 ) );
- var target = new THREE.Vector3();
-
- // parallel plane behind
- var b = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 0, 0, 1 ), new THREE.Vector3( 1, 1, -1 ) );
- ok( a.intersectPlane( b, target ) === null, "Passed!" );
-
- // parallel plane coincident with origin
- var c = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 0, 0, 1 ), new THREE.Vector3( 1, 1, 0 ) );
- ok( a.intersectPlane( c, target ) === null, "Passed!" );
-
- // parallel plane infront
- var d = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 0, 0, 1 ), new THREE.Vector3( 1, 1, 1 ) );
- ok( a.intersectPlane( d, target ).equals( a.origin ), "Passed!" );
-
- // perpendical ray that overlaps exactly
- var e = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 1, 0, 0 ), one3 );
- ok( a.intersectPlane( e, target ).equals( a.origin ), "Passed!" );
-
- // perpendical ray that doesn't overlap
- var f = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 1, 0, 0 ), zero3 );
- ok( a.intersectPlane( f, target ) === null, "Passed!" );
- });
-
-
- test( "applyMatrix4", function() {
- var a = new THREE.Ray( one3.clone(), new THREE.Vector3( 0, 0, 1 ) );
- var m = new THREE.Matrix4();
-
- ok( a.clone().applyMatrix4( m ).equals( a ), "Passed!" );
-
- a = new THREE.Ray( zero3.clone(), new THREE.Vector3( 0, 0, 1 ) );
- m.makeRotationZ( Math.PI );
- ok( a.clone().applyMatrix4( m ).equals( a ), "Passed!" );
-
- m.makeRotationX( Math.PI );
- var b = a.clone();
- b.direction.negate();
- var a2 = a.clone().applyMatrix4( m );
- ok( a2.origin.distanceTo( b.origin ) < 0.0001, "Passed!" );
- ok( a2.direction.distanceTo( b.direction ) < 0.0001, "Passed!" );
-
- a.origin = new THREE.Vector3( 0, 0, 1 );
- b.origin = new THREE.Vector3( 0, 0, -1 );
- var a2 = a.clone().applyMatrix4( m );
- ok( a2.origin.distanceTo( b.origin ) < 0.0001, "Passed!" );
- ok( a2.direction.distanceTo( b.direction ) < 0.0001, "Passed!" );
- });
-
-
- test( "distanceSqToSegment", function() {
- var a = new THREE.Ray( one3.clone(), new THREE.Vector3( 0, 0, 1 ) );
- var ptOnLine = new THREE.Vector3();
- var ptOnSegment = new THREE.Vector3();
-
- //segment in front of the ray
- var v0 = new THREE.Vector3( 3, 5, 50 );
- var v1 = new THREE.Vector3( 50, 50, 50 ); // just a far away point
- var distSqr = a.distanceSqToSegment( v0, v1, ptOnLine, ptOnSegment );
-
- ok( ptOnSegment.distanceTo( v0 ) < 0.0001, "Passed!" );
- ok( ptOnLine.distanceTo( new THREE.Vector3(1, 1, 50) ) < 0.0001, "Passed!" );
- // ((3-1) * (3-1) + (5-1) * (5-1) = 4 + 16 = 20
- ok( Math.abs( distSqr - 20 ) < 0.0001, "Passed!" );
-
- //segment behind the ray
- v0 = new THREE.Vector3( -50, -50, -50 ); // just a far away point
- v1 = new THREE.Vector3( -3, -5, -4 );
- distSqr = a.distanceSqToSegment( v0, v1, ptOnLine, ptOnSegment );
-
- ok( ptOnSegment.distanceTo( v1 ) < 0.0001, "Passed!" );
- ok( ptOnLine.distanceTo( one3 ) < 0.0001, "Passed!" );
- // ((-3-1) * (-3-1) + (-5-1) * (-5-1) + (-4-1) + (-4-1) = 16 + 36 + 25 = 77
- ok( Math.abs( distSqr - 77 ) < 0.0001, "Passed!" );
-
- //exact intersection between the ray and the segment
- v0 = new THREE.Vector3( -50, -50, -50 );
- v1 = new THREE.Vector3( 50, 50, 50 );
- distSqr = a.distanceSqToSegment( v0, v1, ptOnLine, ptOnSegment );
-
- ok( ptOnSegment.distanceTo( one3 ) < 0.0001, "Passed!" );
- ok( ptOnLine.distanceTo( one3 ) < 0.0001, "Passed!" );
- ok( distSqr < 0.0001, "Passed!" );
- });
-
- test( "intersectBox", function() {
-
- var TOL = 0.0001;
-
- var box = new THREE.Box3( new THREE.Vector3( -1, -1, -1 ), new THREE.Vector3( 1, 1, 1 ) );
- var target = new THREE.Vector3();
-
- var a = new THREE.Ray( new THREE.Vector3( -2, 0, 0 ), new THREE.Vector3( 1, 0, 0) );
- //ray should intersect box at -1,0,0
- ok( a.intersectsBox(box) === true, "Passed!" );
- ok( a.intersectBox(box, target).distanceTo( new THREE.Vector3( -1, 0, 0 ) ) < TOL, "Passed!" );
-
- var b = new THREE.Ray( new THREE.Vector3( -2, 0, 0 ), new THREE.Vector3( -1, 0, 0) );
- //ray is point away from box, it should not intersect
- ok( b.intersectsBox(box) === false, "Passed!" );
- ok( b.intersectBox(box, target) === null, "Passed!" );
-
- var c = new THREE.Ray( new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 1, 0, 0) );
- // ray is inside box, should return exit point
- ok( c.intersectsBox(box) === true, "Passed!" );
- ok( c.intersectBox(box, target).distanceTo( new THREE.Vector3( 1, 0, 0 ) ) < TOL, "Passed!" );
-
- var d = new THREE.Ray( new THREE.Vector3( 0, 2, 1 ), new THREE.Vector3( 0, -1, -1).normalize() );
- //tilted ray should intersect box at 0,1,0
- ok( d.intersectsBox(box) === true, "Passed!" );
- ok( d.intersectBox(box, target).distanceTo( new THREE.Vector3( 0, 1, 0 ) ) < TOL, "Passed!" );
-
- var e = new THREE.Ray( new THREE.Vector3( 1, -2, 1 ), new THREE.Vector3( 0, 1, 0).normalize() );
- //handle case where ray is coplanar with one of the boxes side - box in front of ray
- ok( e.intersectsBox(box) === true, "Passed!" );
- ok( e.intersectBox(box, target).distanceTo( new THREE.Vector3( 1, -1, 1 ) ) < TOL, "Passed!" );
-
- var f = new THREE.Ray( new THREE.Vector3( 1, -2, 0 ), new THREE.Vector3( 0, -1, 0).normalize() );
- //handle case where ray is coplanar with one of the boxes side - box behind ray
- ok( f.intersectsBox(box) === false, "Passed!" );
- ok( f.intersectBox(box, target) == null, "Passed!" );
-
- });
-
- // -------------------------------------------- Sphere
- test( "constructor", function() {
- var a = new THREE.Sphere();
- ok( a.center.equals( zero3 ), "Passed!" );
- ok( a.radius == 0, "Passed!" );
-
- a = new THREE.Sphere( one3.clone(), 1 );
- ok( a.center.equals( one3 ), "Passed!" );
- ok( a.radius == 1, "Passed!" );
- });
-
- test( "copy", function() {
- var a = new THREE.Sphere( one3.clone(), 1 );
- var b = new THREE.Sphere().copy( a );
-
- ok( b.center.equals( one3 ), "Passed!" );
- ok( b.radius == 1, "Passed!" );
-
- // ensure that it is a true copy
- a.center = zero3;
- a.radius = 0;
- ok( b.center.equals( one3 ), "Passed!" );
- ok( b.radius == 1, "Passed!" );
- });
-
- test( "set", function() {
- var a = new THREE.Sphere();
- ok( a.center.equals( zero3 ), "Passed!" );
- ok( a.radius == 0, "Passed!" );
-
- a.set( one3, 1 );
- ok( a.center.equals( one3 ), "Passed!" );
- ok( a.radius == 1, "Passed!" );
- });
-
- test( "empty", function() {
- var a = new THREE.Sphere();
- ok( a.empty(), "Passed!" );
-
- a.set( one3, 1 );
- ok( ! a.empty(), "Passed!" );
- });
-
- test( "containsPoint", function() {
- var a = new THREE.Sphere( one3.clone(), 1 );
-
- ok( ! a.containsPoint( zero3 ), "Passed!" );
- ok( a.containsPoint( one3 ), "Passed!" );
- });
-
- test( "distanceToPoint", function() {
- var a = new THREE.Sphere( one3.clone(), 1 );
-
- ok( ( a.distanceToPoint( zero3 ) - 0.7320 ) < 0.001, "Passed!" );
- ok( a.distanceToPoint( one3 ) === -1, "Passed!" );
- });
-
- test( "intersectsSphere", function() {
- var a = new THREE.Sphere( one3.clone(), 1 );
- var b = new THREE.Sphere( zero3.clone(), 1 );
- var c = new THREE.Sphere( zero3.clone(), 0.25 );
-
- ok( a.intersectsSphere( b ) , "Passed!" );
- ok( ! a.intersectsSphere( c ) , "Passed!" );
- });
-
- test( "clampPoint", function() {
- var a = new THREE.Sphere( one3.clone(), 1 );
- var target = new THREE.Vector3();
-
- ok( a.clampPoint( new THREE.Vector3( 1, 1, 3 ), target ).equals( new THREE.Vector3( 1, 1, 2 ) ), "Passed!" );
- ok( a.clampPoint( new THREE.Vector3( 1, 1, -3 ), target ).equals( new THREE.Vector3( 1, 1, 0 ) ), "Passed!" );
- });
-
- test( "getBoundingBox", function() {
- var a = new THREE.Sphere( one3.clone(), 1 );
- var target = new THREE.Box3();
-
- ok( a.getBoundingBox( target ).equals( new THREE.Box3( zero3, two3 ) ), "Passed!" );
-
- a.set( zero3, 0 )
- ok( a.getBoundingBox( target ).equals( new THREE.Box3( zero3, zero3 ) ), "Passed!" );
- });
-
- test( "applyMatrix4", function() {
- var a = new THREE.Sphere( one3.clone(), 1 );
-
- var m = new THREE.Matrix4().makeTranslation( 1, -2, 1 );
-
- ok( a.clone().applyMatrix4( m ).getBoundingBox( new THREE.Box3() ).equals( a.getBoundingBox( new THREE.Box3() ).applyMatrix4( m ) ), "Passed!" );
- });
-
- test( "translate", function() {
- var a = new THREE.Sphere( one3.clone(), 1 );
-
- a.translate( one3.clone().negate() );
- ok( a.center.equals( zero3 ), "Passed!" );
- });
-
- // -------------------------------------------- Triangle
-
- test( "constructor", function() {
- var a = new THREE.Triangle();
- ok( a.a.equals( zero3 ), "Passed!" );
- ok( a.b.equals( zero3 ), "Passed!" );
- ok( a.c.equals( zero3 ), "Passed!" );
-
- a = new THREE.Triangle( one3.clone().negate(), one3.clone(), two3.clone() );
- ok( a.a.equals( one3.clone().negate() ), "Passed!" );
- ok( a.b.equals( one3 ), "Passed!" );
- ok( a.c.equals( two3 ), "Passed!" );
- });
-
- test( "copy", function() {
- var a = new THREE.Triangle( one3.clone().negate(), one3.clone(), two3.clone() );
- var b = new THREE.Triangle().copy( a );
- ok( b.a.equals( one3.clone().negate() ), "Passed!" );
- ok( b.b.equals( one3 ), "Passed!" );
- ok( b.c.equals( two3 ), "Passed!" );
-
- // ensure that it is a true copy
- a.a = one3;
- a.b = zero3;
- a.c = zero3;
- ok( b.a.equals( one3.clone().negate() ), "Passed!" );
- ok( b.b.equals( one3 ), "Passed!" );
- ok( b.c.equals( two3 ), "Passed!" );
- });
-
- test( "setFromPointsAndIndices", function() {
- var a = new THREE.Triangle();
-
- var points = [ one3, one3.clone().negate(), two3 ];
- a.setFromPointsAndIndices( points, 1, 0, 2 );
- ok( a.a.equals( one3.clone().negate() ), "Passed!" );
- ok( a.b.equals( one3 ), "Passed!" );
- ok( a.c.equals( two3 ), "Passed!" );
-
- });
-
- test( "set", function() {
- var a = new THREE.Triangle();
-
- a.set( one3.clone().negate(), one3, two3 );
- ok( a.a.equals( one3.clone().negate() ), "Passed!" );
- ok( a.b.equals( one3 ), "Passed!" );
- ok( a.c.equals( two3 ), "Passed!" );
-
- });
-
- test( "getArea", function() {
- var a = new THREE.Triangle();
-
- ok( a.getArea() == 0, "Passed!" );
-
- a = new THREE.Triangle( new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 1, 0, 0 ), new THREE.Vector3( 0, 1, 0 ) );
- ok( a.getArea() == 0.5, "Passed!" );
-
- a = new THREE.Triangle( new THREE.Vector3( 2, 0, 0 ), new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 0, 0, 2 ) );
- ok( a.getArea() == 2, "Passed!" );
-
- // colinear triangle.
- a = new THREE.Triangle( new THREE.Vector3( 2, 0, 0 ), new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 3, 0, 0 ) );
- ok( a.getArea() == 0, "Passed!" );
- });
-
- test( "getMidpoint", function() {
- var a = new THREE.Triangle();
- var target = new THREE.Vector3();
-
- ok( a.getMidpoint( target ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
-
- a = new THREE.Triangle( new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 1, 0, 0 ), new THREE.Vector3( 0, 1, 0 ) );
- ok( a.getMidpoint( target ).equals( new THREE.Vector3( 1/3, 1/3, 0 ) ), "Passed!" );
-
- a = new THREE.Triangle( new THREE.Vector3( 2, 0, 0 ), new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 0, 0, 2 ) );
- ok( a.getMidpoint( target ).equals( new THREE.Vector3( 2/3, 0, 2/3 ) ), "Passed!" );
- });
-
- test( "getNormal", function() {
- var a = new THREE.Triangle();
- var target = new THREE.Vector3();
-
- ok( a.getNormal( target ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
-
- a = new THREE.Triangle( new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 1, 0, 0 ), new THREE.Vector3( 0, 1, 0 ) );
- ok( a.getNormal( target ).equals( new THREE.Vector3( 0, 0, 1 ) ), "Passed!" );
-
- a = new THREE.Triangle( new THREE.Vector3( 2, 0, 0 ), new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 0, 0, 2 ) );
- ok( a.getNormal( target ).equals( new THREE.Vector3( 0, 1, 0 ) ), "Passed!" );
- });
-
- test( "getPlane", function() {
- var a = new THREE.Triangle();
- var target = new THREE.Vector3();
-
- // artificial normal is created in this case.
- ok( a.getPlane( target ).distanceToPoint( a.a ) == 0, "Passed!" );
- ok( a.getPlane( target ).distanceToPoint( a.b ) == 0, "Passed!" );
- ok( a.getPlane( target ).distanceToPoint( a.c ) == 0, "Passed!" );
- ok( a.getPlane( target ).normal.equals( a.getNormal( new THREE.Vector3() ) ), "Passed!" );
-
- a = new THREE.Triangle( new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 1, 0, 0 ), new THREE.Vector3( 0, 1, 0 ) );
- ok( a.getPlane( target ).distanceToPoint( a.a ) == 0, "Passed!" );
- ok( a.getPlane( target ).distanceToPoint( a.b ) == 0, "Passed!" );
- ok( a.getPlane( target ).distanceToPoint( a.c ) == 0, "Passed!" );
- ok( a.getPlane( target ).normal.equals( a.getNormal( new THREE.Vector3() ) ), "Passed!" );
-
- a = new THREE.Triangle( new THREE.Vector3( 2, 0, 0 ), new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 0, 0, 2 ) );
- ok( a.getPlane( target ).distanceToPoint( a.a ) == 0, "Passed!" );
- ok( a.getPlane( target ).distanceToPoint( a.b ) == 0, "Passed!" );
- ok( a.getPlane( target ).distanceToPoint( a.c ) == 0, "Passed!" );
- ok( a.getPlane( target ).normal.clone().normalize().equals( a.getNormal( new THREE.Vector3() ) ), "Passed!" );
- });
-
- test( "getBarycoord", function() {
- var a = new THREE.Triangle();
- var target = new THREE.Vector3();
-
- var bad = new THREE.Vector3( -2, -1, -1 );
-
- ok( a.getBarycoord( a.a, target ).equals( bad ), "Passed!" );
- ok( a.getBarycoord( a.b, target ).equals( bad ), "Passed!" );
- ok( a.getBarycoord( a.c, target ).equals( bad ), "Passed!" );
-
- a = new THREE.Triangle( new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 1, 0, 0 ), new THREE.Vector3( 0, 1, 0 ) );
- ok( a.getBarycoord( a.a, target ).equals( new THREE.Vector3( 1, 0, 0 ) ), "Passed!" );
- ok( a.getBarycoord( a.b, target ).equals( new THREE.Vector3( 0, 1, 0 ) ), "Passed!" );
- ok( a.getBarycoord( a.c, target ).equals( new THREE.Vector3( 0, 0, 1 ) ), "Passed!" );
- ok( a.getBarycoord( a.getMidpoint( new THREE.Vector3() ), target ).distanceTo( new THREE.Vector3( 1/3, 1/3, 1/3 ) ) < 0.0001, "Passed!" );
-
- a = new THREE.Triangle( new THREE.Vector3( 2, 0, 0 ), new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 0, 0, 2 ) );
- ok( a.getBarycoord( a.a, target ).equals( new THREE.Vector3( 1, 0, 0 ) ), "Passed!" );
- ok( a.getBarycoord( a.b, target ).equals( new THREE.Vector3( 0, 1, 0 ) ), "Passed!" );
- ok( a.getBarycoord( a.c, target ).equals( new THREE.Vector3( 0, 0, 1 ) ), "Passed!" );
- ok( a.getBarycoord( a.getMidpoint( new THREE.Vector3() ), target ).distanceTo( new THREE.Vector3( 1/3, 1/3, 1/3 ) ) < 0.0001, "Passed!" );
- });
-
- test( "containsPoint", function() {
- var a = new THREE.Triangle();
-
- ok( ! a.containsPoint( a.a ), "Passed!" );
- ok( ! a.containsPoint( a.b ), "Passed!" );
- ok( ! a.containsPoint( a.c ), "Passed!" );
-
- a = new THREE.Triangle( new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 1, 0, 0 ), new THREE.Vector3( 0, 1, 0 ) );
- ok( a.containsPoint( a.a ), "Passed!" );
- ok( a.containsPoint( a.b ), "Passed!" );
- ok( a.containsPoint( a.c ), "Passed!" );
- ok( a.containsPoint( a.getMidpoint( new THREE.Vector3() ) ), "Passed!" );
- ok( ! a.containsPoint( new THREE.Vector3( -1, -1, -1 ) ), "Passed!" );
-
- a = new THREE.Triangle( new THREE.Vector3( 2, 0, 0 ), new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 0, 0, 2 ) );
- ok( a.containsPoint( a.a ), "Passed!" );
- ok( a.containsPoint( a.b ), "Passed!" );
- ok( a.containsPoint( a.c ), "Passed!" );
- ok( a.containsPoint( a.getMidpoint( new THREE.Vector3() ) ), "Passed!" );
- ok( ! a.containsPoint( new THREE.Vector3( -1, -1, -1 ) ), "Passed!" );
- });
-
- // -------------------------------------------- Vector2
- test( "constructor", function() {
- var a = new THREE.Vector2();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
-
- a = new THREE.Vector2( x, y );
- ok( a.x === x, "Passed!" );
- ok( a.y === y, "Passed!" );
- });
-
- test( "copy", function() {
- var a = new THREE.Vector2( x, y );
- var b = new THREE.Vector2().copy( a );
- ok( b.x == x, "Passed!" );
- ok( b.y == y, "Passed!" );
-
- // ensure that it is a true copy
- a.x = 0;
- a.y = -1;
- ok( b.x == x, "Passed!" );
- ok( b.y == y, "Passed!" );
- });
-
- test( "set", function() {
- var a = new THREE.Vector2();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
-
- a.set( x, y );
- ok( a.x == x, "Passed!" );
- ok( a.y == y, "Passed!" );
- });
-
- test( "setX,setY", function() {
- var a = new THREE.Vector2();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
-
- a.setX( x );
- a.setY( y );
- ok( a.x == x, "Passed!" );
- ok( a.y == y, "Passed!" );
- });
-
- test( "setComponent,getComponent", function() {
- var a = new THREE.Vector2();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
-
- a.setComponent( 0, 1 );
- a.setComponent( 1, 2 );
- ok( a.getComponent( 0 ) == 1, "Passed!" );
- ok( a.getComponent( 1 ) == 2, "Passed!" );
- });
-
- test( "add", function() {
- var a = new THREE.Vector2( x, y );
- var b = new THREE.Vector2( -x, -y );
-
- a.add( b );
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
-
- var c = new THREE.Vector2().addVectors( b, b );
- ok( c.x == -2*x, "Passed!" );
- ok( c.y == -2*y, "Passed!" );
- });
-
- test( "sub", function() {
- var a = new THREE.Vector2( x, y );
- var b = new THREE.Vector2( -x, -y );
-
- a.sub( b );
- ok( a.x == 2*x, "Passed!" );
- ok( a.y == 2*y, "Passed!" );
-
- var c = new THREE.Vector2().subVectors( a, a );
- ok( c.x == 0, "Passed!" );
- ok( c.y == 0, "Passed!" );
- });
-
- test( "multiply/divide", function() {
- var a = new THREE.Vector2( x, y );
- var b = new THREE.Vector2( -x, -y );
-
- a.multiplyScalar( -2 );
- ok( a.x == x*-2, "Passed!" );
- ok( a.y == y*-2, "Passed!" );
-
- b.multiplyScalar( -2 );
- ok( b.x == 2*x, "Passed!" );
- ok( b.y == 2*y, "Passed!" );
-
- a.divideScalar( -2 );
- ok( a.x == x, "Passed!" );
- ok( a.y == y, "Passed!" );
-
- b.divideScalar( -2 );
- ok( b.x == -x, "Passed!" );
- ok( b.y == -y, "Passed!" );
- });
-
- test( "applyMatrix3", function () {
- var a = new THREE.Vector2( x, y );
- var m = new THREE.Matrix3().set( 2, 3, 5, 7, 11, 13, 17, 19, 23 );
-
- a.applyMatrix3( m );
- ok( a.x == 18, "Passed!" );
- ok( a.y == 60, "Passed!" );
- });
-
- test( "min/max/clamp", function() {
- var a = new THREE.Vector2( x, y );
- var b = new THREE.Vector2( -x, -y );
- var c = new THREE.Vector2();
-
- c.copy( a ).min( b );
- ok( c.x == -x, "Passed!" );
- ok( c.y == -y, "Passed!" );
-
- c.copy( a ).max( b );
- ok( c.x == x, "Passed!" );
- ok( c.y == y, "Passed!" );
-
- c.set( -2*x, 2*y );
- c.clamp( b, a );
- ok( c.x == -x, "Passed!" );
- ok( c.y == y, "Passed!" );
-
- c.set(-2*x, 2*x);
- c.clampScalar( -x, x );
- equal( c.x, -x, "scalar clamp x" );
- equal( c.y, x, "scalar clamp y" );
- });
-
- test( "rounding", function() {
- deepEqual( new THREE.Vector2( -0.1, 0.1 ).floor(), new THREE.Vector2( -1, 0 ), "floor .1" );
- deepEqual( new THREE.Vector2( -0.5, 0.5 ).floor(), new THREE.Vector2( -1, 0 ), "floor .5" );
- deepEqual( new THREE.Vector2( -0.9, 0.9 ).floor(), new THREE.Vector2( -1, 0 ), "floor .9" );
-
- deepEqual( new THREE.Vector2( -0.1, 0.1 ).ceil(), new THREE.Vector2( 0, 1 ), "ceil .1" );
- deepEqual( new THREE.Vector2( -0.5, 0.5 ).ceil(), new THREE.Vector2( 0, 1 ), "ceil .5" );
- deepEqual( new THREE.Vector2( -0.9, 0.9 ).ceil(), new THREE.Vector2( 0, 1 ), "ceil .9" );
-
- deepEqual( new THREE.Vector2( -0.1, 0.1 ).round(), new THREE.Vector2( 0, 0 ), "round .1" );
- deepEqual( new THREE.Vector2( -0.5, 0.5 ).round(), new THREE.Vector2( 0, 1 ), "round .5" );
- deepEqual( new THREE.Vector2( -0.9, 0.9 ).round(), new THREE.Vector2( -1, 1 ), "round .9" );
-
- deepEqual( new THREE.Vector2( -0.1, 0.1 ).roundToZero(), new THREE.Vector2( 0, 0 ), "roundToZero .1" );
- deepEqual( new THREE.Vector2( -0.5, 0.5 ).roundToZero(), new THREE.Vector2( 0, 0 ), "roundToZero .5" );
- deepEqual( new THREE.Vector2( -0.9, 0.9 ).roundToZero(), new THREE.Vector2( 0, 0 ), "roundToZero .9" );
- deepEqual( new THREE.Vector2( -1.1, 1.1 ).roundToZero(), new THREE.Vector2( -1, 1 ), "roundToZero 1.1" );
- deepEqual( new THREE.Vector2( -1.5, 1.5 ).roundToZero(), new THREE.Vector2( -1, 1 ), "roundToZero 1.5" );
- deepEqual( new THREE.Vector2( -1.9, 1.9 ).roundToZero(), new THREE.Vector2( -1, 1 ), "roundToZero 1.9" );
- });
-
- test( "negate", function() {
- var a = new THREE.Vector2( x, y );
-
- a.negate();
- ok( a.x == -x, "Passed!" );
- ok( a.y == -y, "Passed!" );
- });
-
- test( "dot", function() {
- var a = new THREE.Vector2( x, y );
- var b = new THREE.Vector2( -x, -y );
- var c = new THREE.Vector2();
-
- var result = a.dot( b );
- ok( result == (-x*x-y*y), "Passed!" );
-
- result = a.dot( c );
- ok( result == 0, "Passed!" );
- });
-
- test( "length/lengthSq", function() {
- var a = new THREE.Vector2( x, 0 );
- var b = new THREE.Vector2( 0, -y );
- var c = new THREE.Vector2();
-
- ok( a.length() == x, "Passed!" );
- ok( a.lengthSq() == x*x, "Passed!" );
- ok( b.length() == y, "Passed!" );
- ok( b.lengthSq() == y*y, "Passed!" );
- ok( c.length() == 0, "Passed!" );
- ok( c.lengthSq() == 0, "Passed!" );
-
- a.set( x, y );
- ok( a.length() == Math.sqrt( x*x + y*y ), "Passed!" );
- ok( a.lengthSq() == ( x*x + y*y ), "Passed!" );
- });
-
- test( "normalize", function() {
- var a = new THREE.Vector2( x, 0 );
- var b = new THREE.Vector2( 0, -y );
- var c = new THREE.Vector2();
-
- a.normalize();
- ok( a.length() == 1, "Passed!" );
- ok( a.x == 1, "Passed!" );
-
- b.normalize();
- ok( b.length() == 1, "Passed!" );
- ok( b.y == -1, "Passed!" );
- });
-
- test( "distanceTo/distanceToSquared", function() {
- var a = new THREE.Vector2( x, 0 );
- var b = new THREE.Vector2( 0, -y );
- var c = new THREE.Vector2();
-
- ok( a.distanceTo( c ) == x, "Passed!" );
- ok( a.distanceToSquared( c ) == x*x, "Passed!" );
-
- ok( b.distanceTo( c ) == y, "Passed!" );
- ok( b.distanceToSquared( c ) == y*y, "Passed!" );
- });
-
- test( "setLength", function() {
- var a = new THREE.Vector2( x, 0 );
-
- ok( a.length() == x, "Passed!" );
- a.setLength( y );
- ok( a.length() == y, "Passed!" );
-
- a = new THREE.Vector2( 0, 0 );
- ok( a.length() == 0, "Passed!" );
- a.setLength( y );
- ok( a.length() == 0, "Passed!" );
- });
-
- test( "lerp/clone", function() {
- var a = new THREE.Vector2( x, 0 );
- var b = new THREE.Vector2( 0, -y );
-
- ok( a.lerp( a, 0 ).equals( a.lerp( a, 0.5 ) ), "Passed!" );
- ok( a.lerp( a, 0 ).equals( a.lerp( a, 1 ) ), "Passed!" );
-
- ok( a.clone().lerp( b, 0 ).equals( a ), "Passed!" );
-
- ok( a.clone().lerp( b, 0.5 ).x == x*0.5, "Passed!" );
- ok( a.clone().lerp( b, 0.5 ).y == -y*0.5, "Passed!" );
-
- ok( a.clone().lerp( b, 1 ).equals( b ), "Passed!" );
- });
-
- test( "equals", function() {
- var a = new THREE.Vector2( x, 0 );
- var b = new THREE.Vector2( 0, -y );
-
- ok( a.x != b.x, "Passed!" );
- ok( a.y != b.y, "Passed!" );
-
- ok( ! a.equals( b ), "Passed!" );
- ok( ! b.equals( a ), "Passed!" );
-
- a.copy( b );
- ok( a.x == b.x, "Passed!" );
- ok( a.y == b.y, "Passed!" );
-
- ok( a.equals( b ), "Passed!" );
- ok( b.equals( a ), "Passed!" );
- });
-
- test( "fromBufferAttribute", function() {
- var a = new THREE.Vector2();
- var attr = new THREE.BufferAttribute( new Float32Array( [ 1, 2, 3, 4 ] ), 2 );
-
- a.fromBufferAttribute( attr, 0 );
- ok( a.x == 1, "Passed!" );
- ok( a.y == 2, "Passed!" );
- });
-
- // -------------------------------------------- Vector3
- test( "constructor", function() {
- var a = new THREE.Vector3();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
- ok( a.z == 0, "Passed!" );
-
- a = new THREE.Vector3( x, y, z );
- ok( a.x === x, "Passed!" );
- ok( a.y === y, "Passed!" );
- ok( a.z === z, "Passed!" );
- });
-
- test( "copy", function() {
- var a = new THREE.Vector3( x, y, z );
- var b = new THREE.Vector3().copy( a );
- ok( b.x == x, "Passed!" );
- ok( b.y == y, "Passed!" );
- ok( b.z == z, "Passed!" );
-
- // ensure that it is a true copy
- a.x = 0;
- a.y = -1;
- a.z = -2;
- ok( b.x == x, "Passed!" );
- ok( b.y == y, "Passed!" );
- ok( b.z == z, "Passed!" );
- });
-
- test( "set", function() {
- var a = new THREE.Vector3();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
- ok( a.z == 0, "Passed!" );
-
- a.set( x, y, z );
- ok( a.x == x, "Passed!" );
- ok( a.y == y, "Passed!" );
- ok( a.z == z, "Passed!" );
- });
-
- test( "setX,setY,setZ", function() {
- var a = new THREE.Vector3();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
- ok( a.z == 0, "Passed!" );
-
- a.setX( x );
- a.setY( y );
- a.setZ( z );
-
- ok( a.x == x, "Passed!" );
- ok( a.y == y, "Passed!" );
- ok( a.z == z, "Passed!" );
- });
-
- test( "setComponent,getComponent", function() {
- var a = new THREE.Vector3();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
- ok( a.z == 0, "Passed!" );
-
- a.setComponent( 0, 1 );
- a.setComponent( 1, 2 );
- a.setComponent( 2, 3 );
- ok( a.getComponent( 0 ) == 1, "Passed!" );
- ok( a.getComponent( 1 ) == 2, "Passed!" );
- ok( a.getComponent( 2 ) == 3, "Passed!" );
- });
-
- test( "add", function() {
- var a = new THREE.Vector3( x, y, z );
- var b = new THREE.Vector3( -x, -y, -z );
-
- a.add( b );
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
- ok( a.z == 0, "Passed!" );
-
- var c = new THREE.Vector3().addVectors( b, b );
- ok( c.x == -2*x, "Passed!" );
- ok( c.y == -2*y, "Passed!" );
- ok( c.z == -2*z, "Passed!" );
- });
-
- test( "sub", function() {
- var a = new THREE.Vector3( x, y, z );
- var b = new THREE.Vector3( -x, -y, -z );
-
- a.sub( b );
- ok( a.x == 2*x, "Passed!" );
- ok( a.y == 2*y, "Passed!" );
- ok( a.z == 2*z, "Passed!" );
-
- var c = new THREE.Vector3().subVectors( a, a );
- ok( c.x == 0, "Passed!" );
- ok( c.y == 0, "Passed!" );
- ok( c.z == 0, "Passed!" );
- });
-
- test( "multiply/divide", function() {
- var a = new THREE.Vector3( x, y, z );
- var b = new THREE.Vector3( -x, -y, -z );
-
- a.multiplyScalar( -2 );
- ok( a.x == x*-2, "Passed!" );
- ok( a.y == y*-2, "Passed!" );
- ok( a.z == z*-2, "Passed!" );
-
- b.multiplyScalar( -2 );
- ok( b.x == 2*x, "Passed!" );
- ok( b.y == 2*y, "Passed!" );
- ok( b.z == 2*z, "Passed!" );
-
- a.divideScalar( -2 );
- ok( a.x == x, "Passed!" );
- ok( a.y == y, "Passed!" );
- ok( a.z == z, "Passed!" );
-
- b.divideScalar( -2 );
- ok( b.x == -x, "Passed!" );
- ok( b.y == -y, "Passed!" );
- ok( b.z == -z, "Passed!" );
- });
-
- test( "min/max/clamp", function() {
- var a = new THREE.Vector3( x, y, z );
- var b = new THREE.Vector3( -x, -y, -z );
- var c = new THREE.Vector3();
-
- c.copy( a ).min( b );
- ok( c.x == -x, "Passed!" );
- ok( c.y == -y, "Passed!" );
- ok( c.z == -z, "Passed!" );
-
- c.copy( a ).max( b );
- ok( c.x == x, "Passed!" );
- ok( c.y == y, "Passed!" );
- ok( c.z == z, "Passed!" );
-
- c.set( -2*x, 2*y, -2*z );
- c.clamp( b, a );
- ok( c.x == -x, "Passed!" );
- ok( c.y == y, "Passed!" );
- ok( c.z == -z, "Passed!" );
- });
-
- test( "negate", function() {
- var a = new THREE.Vector3( x, y, z );
-
- a.negate();
- ok( a.x == -x, "Passed!" );
- ok( a.y == -y, "Passed!" );
- ok( a.z == -z, "Passed!" );
- });
-
- test( "dot", function() {
- var a = new THREE.Vector3( x, y, z );
- var b = new THREE.Vector3( -x, -y, -z );
- var c = new THREE.Vector3();
-
- var result = a.dot( b );
- ok( result == (-x*x-y*y-z*z), "Passed!" );
-
- result = a.dot( c );
- ok( result == 0, "Passed!" );
- });
-
- test( "length/lengthSq", function() {
- var a = new THREE.Vector3( x, 0, 0 );
- var b = new THREE.Vector3( 0, -y, 0 );
- var c = new THREE.Vector3( 0, 0, z );
- var d = new THREE.Vector3();
-
- ok( a.length() == x, "Passed!" );
- ok( a.lengthSq() == x*x, "Passed!" );
- ok( b.length() == y, "Passed!" );
- ok( b.lengthSq() == y*y, "Passed!" );
- ok( c.length() == z, "Passed!" );
- ok( c.lengthSq() == z*z, "Passed!" );
- ok( d.length() == 0, "Passed!" );
- ok( d.lengthSq() == 0, "Passed!" );
-
- a.set( x, y, z );
- ok( a.length() == Math.sqrt( x*x + y*y + z*z ), "Passed!" );
- ok( a.lengthSq() == ( x*x + y*y + z*z ), "Passed!" );
- });
-
- test( "normalize", function() {
- var a = new THREE.Vector3( x, 0, 0 );
- var b = new THREE.Vector3( 0, -y, 0 );
- var c = new THREE.Vector3( 0, 0, z );
-
- a.normalize();
- ok( a.length() == 1, "Passed!" );
- ok( a.x == 1, "Passed!" );
-
- b.normalize();
- ok( b.length() == 1, "Passed!" );
- ok( b.y == -1, "Passed!" );
-
- c.normalize();
- ok( c.length() == 1, "Passed!" );
- ok( c.z == 1, "Passed!" );
- });
-
- test( "distanceTo/distanceToSquared", function() {
- var a = new THREE.Vector3( x, 0, 0 );
- var b = new THREE.Vector3( 0, -y, 0 );
- var c = new THREE.Vector3( 0, 0, z );
- var d = new THREE.Vector3();
-
- ok( a.distanceTo( d ) == x, "Passed!" );
- ok( a.distanceToSquared( d ) == x*x, "Passed!" );
-
- ok( b.distanceTo( d ) == y, "Passed!" );
- ok( b.distanceToSquared( d ) == y*y, "Passed!" );
-
- ok( c.distanceTo( d ) == z, "Passed!" );
- ok( c.distanceToSquared( d ) == z*z, "Passed!" );
- });
-
- test( "setLength", function() {
- var a = new THREE.Vector3( x, 0, 0 );
-
- ok( a.length() == x, "Passed!" );
- a.setLength( y );
- ok( a.length() == y, "Passed!" );
-
- a = new THREE.Vector3( 0, 0, 0 );
- ok( a.length() == 0, "Passed!" );
- a.setLength( y );
- ok( a.length() == 0, "Passed!" );
-
- });
-
- test( "projectOnVector", function() {
- var a = new THREE.Vector3( 1, 0, 0 );
- var b = new THREE.Vector3();
- var normal = new THREE.Vector3( 10, 0, 0 );
-
- ok( b.copy( a ).projectOnVector( normal ).equals( new THREE.Vector3( 1, 0, 0 ) ), "Passed!" );
-
- a.set( 0, 1, 0 );
- ok( b.copy( a ).projectOnVector( normal ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
-
- a.set( 0, 0, -1 );
- ok( b.copy( a ).projectOnVector( normal ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
-
- a.set( -1, 0, 0 );
- ok( b.copy( a ).projectOnVector( normal ).equals( new THREE.Vector3( -1, 0, 0 ) ), "Passed!" );
-
- });
-
- test( "projectOnPlane", function() {
- var a = new THREE.Vector3( 1, 0, 0 );
- var b = new THREE.Vector3();
- var normal = new THREE.Vector3( 1, 0, 0 );
-
- ok( b.copy( a ).projectOnPlane( normal ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
-
- a.set( 0, 1, 0 );
- ok( b.copy( a ).projectOnPlane( normal ).equals( new THREE.Vector3( 0, 1, 0 ) ), "Passed!" );
-
- a.set( 0, 0, -1 );
- ok( b.copy( a ).projectOnPlane( normal ).equals( new THREE.Vector3( 0, 0, -1 ) ), "Passed!" );
-
- a.set( -1, 0, 0 );
- ok( b.copy( a ).projectOnPlane( normal ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
-
- });
-
- test( "reflect", function() {
- var a = new THREE.Vector3();
- var normal = new THREE.Vector3( 0, 1, 0 );
- var b = new THREE.Vector3();
-
- a.set( 0, -1, 0 );
- ok( b.copy( a ).reflect( normal ).equals( new THREE.Vector3( 0, 1, 0 ) ), "Passed!" );
-
- a.set( 1, -1, 0 );
- ok( b.copy( a ).reflect( normal ).equals( new THREE.Vector3( 1, 1, 0 ) ), "Passed!" );
-
- a.set( 1, -1, 0 );
- normal.set( 0, -1, 0 );
- ok( b.copy( a ).reflect( normal ).equals( new THREE.Vector3( 1, 1, 0 ) ), "Passed!" );
- });
-
- test( "angleTo", function() {
- var a = new THREE.Vector3( 0, -0.18851655680720186, 0.9820700116639124 );
- var b = new THREE.Vector3( 0, 0.18851655680720186, -0.9820700116639124 );
-
- equal( a.angleTo( a ), 0 );
- equal( a.angleTo( b ), Math.PI );
-
- var x = new THREE.Vector3( 1, 0, 0 );
- var y = new THREE.Vector3( 0, 1, 0 );
- var z = new THREE.Vector3( 0, 0, 1 );
-
- equal( x.angleTo( y ), Math.PI / 2 );
- equal( x.angleTo( z ), Math.PI / 2 );
- equal( z.angleTo( x ), Math.PI / 2 );
-
- ok( Math.abs( x.angleTo( new THREE.Vector3( 1, 1, 0 ) ) - ( Math.PI / 4 ) ) < 0.0000001 );
- });
-
- test( "lerp/clone", function() {
- var a = new THREE.Vector3( x, 0, z );
- var b = new THREE.Vector3( 0, -y, 0 );
-
- ok( a.lerp( a, 0 ).equals( a.lerp( a, 0.5 ) ), "Passed!" );
- ok( a.lerp( a, 0 ).equals( a.lerp( a, 1 ) ), "Passed!" );
-
- ok( a.clone().lerp( b, 0 ).equals( a ), "Passed!" );
-
- ok( a.clone().lerp( b, 0.5 ).x == x*0.5, "Passed!" );
- ok( a.clone().lerp( b, 0.5 ).y == -y*0.5, "Passed!" );
- ok( a.clone().lerp( b, 0.5 ).z == z*0.5, "Passed!" );
-
- ok( a.clone().lerp( b, 1 ).equals( b ), "Passed!" );
- });
-
- test( "equals", function() {
- var a = new THREE.Vector3( x, 0, z );
- var b = new THREE.Vector3( 0, -y, 0 );
-
- ok( a.x != b.x, "Passed!" );
- ok( a.y != b.y, "Passed!" );
- ok( a.z != b.z, "Passed!" );
-
- ok( ! a.equals( b ), "Passed!" );
- ok( ! b.equals( a ), "Passed!" );
-
- a.copy( b );
- ok( a.x == b.x, "Passed!" );
- ok( a.y == b.y, "Passed!" );
- ok( a.z == b.z, "Passed!" );
-
- ok( a.equals( b ), "Passed!" );
- ok( b.equals( a ), "Passed!" );
- });
-
- // -------------------------------------------- Vector4
- test( "constructor", function() {
- var a = new THREE.Vector4();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
- ok( a.z == 0, "Passed!" );
- ok( a.w == 1, "Passed!" );
-
- a = new THREE.Vector4( x, y, z, w );
- ok( a.x === x, "Passed!" );
- ok( a.y === y, "Passed!" );
- ok( a.z === z, "Passed!" );
- ok( a.w === w, "Passed!" );
- });
-
- test( "copy", function() {
- var a = new THREE.Vector4( x, y, z, w );
- var b = new THREE.Vector4().copy( a );
- ok( b.x == x, "Passed!" );
- ok( b.y == y, "Passed!" );
- ok( b.z == z, "Passed!" );
- ok( b.w == w, "Passed!" );
-
- // ensure that it is a true copy
- a.x = 0;
- a.y = -1;
- a.z = -2;
- a.w = -3;
- ok( b.x == x, "Passed!" );
- ok( b.y == y, "Passed!" );
- ok( b.z == z, "Passed!" );
- ok( b.w == w, "Passed!" );
- });
-
- test( "set", function() {
- var a = new THREE.Vector4();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
- ok( a.z == 0, "Passed!" );
- ok( a.w == 1, "Passed!" );
-
- a.set( x, y, z, w );
- ok( a.x == x, "Passed!" );
- ok( a.y == y, "Passed!" );
- ok( a.z == z, "Passed!" );
- ok( a.w == w, "Passed!" );
- });
-
- test( "setX,setY,setZ,setW", function() {
- var a = new THREE.Vector4();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
- ok( a.z == 0, "Passed!" );
- ok( a.w == 1, "Passed!" );
-
- a.setX( x );
- a.setY( y );
- a.setZ( z );
- a.setW( w );
-
- ok( a.x == x, "Passed!" );
- ok( a.y == y, "Passed!" );
- ok( a.z == z, "Passed!" );
- ok( a.w == w, "Passed!" );
- });
-
- test( "setComponent,getComponent", function() {
- var a = new THREE.Vector4();
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
- ok( a.z == 0, "Passed!" );
- ok( a.w == 1, "Passed!" );
-
- a.setComponent( 0, 1 );
- a.setComponent( 1, 2 );
- a.setComponent( 2, 3 );
- a.setComponent( 3, 4 );
- ok( a.getComponent( 0 ) == 1, "Passed!" );
- ok( a.getComponent( 1 ) == 2, "Passed!" );
- ok( a.getComponent( 2 ) == 3, "Passed!" );
- ok( a.getComponent( 3 ) == 4, "Passed!" );
- });
-
- test( "add", function() {
- var a = new THREE.Vector4( x, y, z, w );
- var b = new THREE.Vector4( -x, -y, -z, -w );
-
- a.add( b );
- ok( a.x == 0, "Passed!" );
- ok( a.y == 0, "Passed!" );
- ok( a.z == 0, "Passed!" );
- ok( a.w == 0, "Passed!" );
-
- var c = new THREE.Vector4().addVectors( b, b );
- ok( c.x == -2*x, "Passed!" );
- ok( c.y == -2*y, "Passed!" );
- ok( c.z == -2*z, "Passed!" );
- ok( c.w == -2*w, "Passed!" );
- });
-
- test( "sub", function() {
- var a = new THREE.Vector4( x, y, z, w );
- var b = new THREE.Vector4( -x, -y, -z, -w );
-
- a.sub( b );
- ok( a.x == 2*x, "Passed!" );
- ok( a.y == 2*y, "Passed!" );
- ok( a.z == 2*z, "Passed!" );
- ok( a.w == 2*w, "Passed!" );
-
- var c = new THREE.Vector4().subVectors( a, a );
- ok( c.x == 0, "Passed!" );
- ok( c.y == 0, "Passed!" );
- ok( c.z == 0, "Passed!" );
- ok( c.w == 0, "Passed!" );
- });
-
- test( "multiply/divide", function() {
- var a = new THREE.Vector4( x, y, z, w );
- var b = new THREE.Vector4( -x, -y, -z, -w );
-
- a.multiplyScalar( -2 );
- ok( a.x == x*-2, "Passed!" );
- ok( a.y == y*-2, "Passed!" );
- ok( a.z == z*-2, "Passed!" );
- ok( a.w == w*-2, "Passed!" );
-
- b.multiplyScalar( -2 );
- ok( b.x == 2*x, "Passed!" );
- ok( b.y == 2*y, "Passed!" );
- ok( b.z == 2*z, "Passed!" );
- ok( b.w == 2*w, "Passed!" );
-
- a.divideScalar( -2 );
- ok( a.x == x, "Passed!" );
- ok( a.y == y, "Passed!" );
- ok( a.z == z, "Passed!" );
- ok( a.w == w, "Passed!" );
-
- b.divideScalar( -2 );
- ok( b.x == -x, "Passed!" );
- ok( b.y == -y, "Passed!" );
- ok( b.z == -z, "Passed!" );
- ok( b.w == -w, "Passed!" );
- });
-
- test( "min/max/clamp", function() {
- var a = new THREE.Vector4( x, y, z, w );
- var b = new THREE.Vector4( -x, -y, -z, -w );
- var c = new THREE.Vector4();
-
- c.copy( a ).min( b );
- ok( c.x == -x, "Passed!" );
- ok( c.y == -y, "Passed!" );
- ok( c.z == -z, "Passed!" );
- ok( c.w == -w, "Passed!" );
-
- c.copy( a ).max( b );
- ok( c.x == x, "Passed!" );
- ok( c.y == y, "Passed!" );
- ok( c.z == z, "Passed!" );
- ok( c.w == w, "Passed!" );
-
- c.set( -2*x, 2*y, -2*z, 2*w );
- c.clamp( b, a );
- ok( c.x == -x, "Passed!" );
- ok( c.y == y, "Passed!" );
- ok( c.z == -z, "Passed!" );
- ok( c.w == w, "Passed!" );
- });
-
- test( "negate", function() {
- var a = new THREE.Vector4( x, y, z, w );
-
- a.negate();
- ok( a.x == -x, "Passed!" );
- ok( a.y == -y, "Passed!" );
- ok( a.z == -z, "Passed!" );
- ok( a.w == -w, "Passed!" );
- });
-
- test( "dot", function() {
- var a = new THREE.Vector4( x, y, z, w );
- var b = new THREE.Vector4( -x, -y, -z, -w );
- var c = new THREE.Vector4( 0, 0, 0, 0 );
-
- var result = a.dot( b );
- ok( result == (-x*x-y*y-z*z-w*w), "Passed!" );
-
- result = a.dot( c );
- ok( result == 0, "Passed!" );
- });
-
- test( "length/lengthSq", function() {
- var a = new THREE.Vector4( x, 0, 0, 0 );
- var b = new THREE.Vector4( 0, -y, 0, 0 );
- var c = new THREE.Vector4( 0, 0, z, 0 );
- var d = new THREE.Vector4( 0, 0, 0, w );
- var e = new THREE.Vector4( 0, 0, 0, 0 );
-
- ok( a.length() == x, "Passed!" );
- ok( a.lengthSq() == x*x, "Passed!" );
- ok( b.length() == y, "Passed!" );
- ok( b.lengthSq() == y*y, "Passed!" );
- ok( c.length() == z, "Passed!" );
- ok( c.lengthSq() == z*z, "Passed!" );
- ok( d.length() == w, "Passed!" );
- ok( d.lengthSq() == w*w, "Passed!" );
- ok( e.length() == 0, "Passed!" );
- ok( e.lengthSq() == 0, "Passed!" );
-
- a.set( x, y, z, w );
- ok( a.length() == Math.sqrt( x*x + y*y + z*z + w*w ), "Passed!" );
- ok( a.lengthSq() == ( x*x + y*y + z*z + w*w ), "Passed!" );
- });
-
- test( "normalize", function() {
- var a = new THREE.Vector4( x, 0, 0, 0 );
- var b = new THREE.Vector4( 0, -y, 0, 0 );
- var c = new THREE.Vector4( 0, 0, z, 0 );
- var d = new THREE.Vector4( 0, 0, 0, -w );
-
- a.normalize();
- ok( a.length() == 1, "Passed!" );
- ok( a.x == 1, "Passed!" );
-
- b.normalize();
- ok( b.length() == 1, "Passed!" );
- ok( b.y == -1, "Passed!" );
-
- c.normalize();
- ok( c.length() == 1, "Passed!" );
- ok( c.z == 1, "Passed!" );
-
- d.normalize();
- ok( d.length() == 1, "Passed!" );
- ok( d.w == -1, "Passed!" );
- });
-
- /*
- test( "distanceTo/distanceToSquared", function() {
- var a = new THREE.Vector4( x, 0, 0, 0 );
- var b = new THREE.Vector4( 0, -y, 0, 0 );
- var c = new THREE.Vector4( 0, 0, z, 0 );
- var d = new THREE.Vector4( 0, 0, 0, -w );
- var e = new THREE.Vector4();
-
- ok( a.distanceTo( e ) == x, "Passed!" );
- ok( a.distanceToSquared( e ) == x*x, "Passed!" );
-
- ok( b.distanceTo( e ) == y, "Passed!" );
- ok( b.distanceToSquared( e ) == y*y, "Passed!" );
-
- ok( c.distanceTo( e ) == z, "Passed!" );
- ok( c.distanceToSquared( e ) == z*z, "Passed!" );
-
- ok( d.distanceTo( e ) == w, "Passed!" );
- ok( d.distanceToSquared( e ) == w*w, "Passed!" );
- });
- */
-
-
- test( "setLength", function() {
- var a = new THREE.Vector4( x, 0, 0, 0 );
-
- ok( a.length() == x, "Passed!" );
- a.setLength( y );
- ok( a.length() == y, "Passed!" );
-
- a = new THREE.Vector4( 0, 0, 0, 0 );
- ok( a.length() == 0, "Passed!" );
- a.setLength( y );
- ok( a.length() == 0, "Passed!" );
- });
-
- test( "lerp/clone", function() {
- var a = new THREE.Vector4( x, 0, z, 0 );
- var b = new THREE.Vector4( 0, -y, 0, -w );
-
- ok( a.lerp( a, 0 ).equals( a.lerp( a, 0.5 ) ), "Passed!" );
- ok( a.lerp( a, 0 ).equals( a.lerp( a, 1 ) ), "Passed!" );
-
- ok( a.clone().lerp( b, 0 ).equals( a ), "Passed!" );
-
- ok( a.clone().lerp( b, 0.5 ).x == x*0.5, "Passed!" );
- ok( a.clone().lerp( b, 0.5 ).y == -y*0.5, "Passed!" );
- ok( a.clone().lerp( b, 0.5 ).z == z*0.5, "Passed!" );
- ok( a.clone().lerp( b, 0.5 ).w == -w*0.5, "Passed!" );
-
- ok( a.clone().lerp( b, 1 ).equals( b ), "Passed!" );
- });
-
- test( "equals", function() {
- var a = new THREE.Vector4( x, 0, z, 0 );
- var b = new THREE.Vector4( 0, -y, 0, -w );
-
- ok( a.x != b.x, "Passed!" );
- ok( a.y != b.y, "Passed!" );
- ok( a.z != b.z, "Passed!" );
- ok( a.w != b.w, "Passed!" );
-
- ok( ! a.equals( b ), "Passed!" );
- ok( ! b.equals( a ), "Passed!" );
-
- a.copy( b );
- ok( a.x == b.x, "Passed!" );
- ok( a.y == b.y, "Passed!" );
- ok( a.z == b.z, "Passed!" );
- ok( a.w == b.w, "Passed!" );
-
- ok( a.equals( b ), "Passed!" );
- ok( b.equals( a ), "Passed!" );
- });
-
- test( "setAxisAngleFromRotationMatrix", function() {
- var TOL = 1e-9;
-
- // not sure what to do here since THREE.Vector4().setAxisAngleFromRotationMatrix() only accept Matrix3s
- /*var r = new THREE.Matrix4().makeRotationZ(Math.PI / 2);
- var v = new THREE.Vector4().setAxisAngleFromRotationMatrix(r);
-
- ok( v.x == 0, "Passed!" );
- ok( v.y == 0, "Passed!" );
- ok( v.z == 1, "Passed!" );
- ok( Math.abs(v.w - Math.PI / 2) < TOL, "Passed!" );*/
- });
-};
diff --git a/types/three/test/references.ts b/types/three/test/references.ts
deleted file mode 100644
index d966799943..0000000000
--- a/types/three/test/references.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-// References used by tests
-
-///
-///
-///
diff --git a/types/three/test/webgl/webgl_animation_cloth.ts b/types/three/test/webgl/webgl_animation_cloth.ts
deleted file mode 100644
index 0c0ec76ace..0000000000
--- a/types/three/test/webgl/webgl_animation_cloth.ts
+++ /dev/null
@@ -1,290 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_animation_cloth.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
- var cloth: any;
- var clothFunction: any;
- var ballPosition: any;
- var ballSize: any;
- var windStrength: any;
- var windForce: any;
- var simulate: Function;
- // -------
-
- /* testing cloth simulation */
- var pinsFormation: number[][] = [];
- var pins: number[] = [6];
-
- pinsFormation.push(pins);
-
- pins = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
- pinsFormation.push(pins);
-
- pins = [0];
- pinsFormation.push(pins);
-
- pins = []; // cut the rope ;)
- pinsFormation.push(pins);
-
- pins = [0, cloth.w]; // classic 2 pins
- pinsFormation.push(pins);
-
- pins = pinsFormation[1];
-
-
- function togglePins() {
-
- pins = pinsFormation[~~(Math.random() * pinsFormation.length)];
-
- }
-
- if (!Detector.webgl) Detector.addGetWebGLMessage();
-
- var container: HTMLElement;
- var stats: Stats;
- var camera: THREE.PerspectiveCamera;
- var scene: THREE.Scene;
- var renderer: THREE.WebGLRenderer;
- var clothGeometry: THREE.ParametricGeometry;
- var sphere: THREE.Mesh;
- var object: THREE.Mesh;
- var arrow: THREE.ArrowHelper;
- var light: THREE.DirectionalLight;
- var rotate = true;
-
- init();
- animate();
-
- function init() {
-
- container = document.createElement('div');
- document.body.appendChild(container);
-
- // scene
-
- scene = new THREE.Scene();
-
- scene.fog = new THREE.Fog(0xcce0ff, 500, 10000);
-
- // camera
-
- camera = new THREE.PerspectiveCamera(30, window.innerWidth / window.innerHeight, 1, 10000);
- camera.position.y = 50;
- camera.position.z = 1500;
- scene.add(camera);
-
- // lights
-
- scene.add(new THREE.AmbientLight(0x666666));
-
- light = new THREE.DirectionalLight(0xdfebff, 1.75);
- light.position.set(50, 200, 100);
- light.position.multiplyScalar(1.3);
-
- light.castShadow = true;
- //light.shadowCameraVisible = true;
-
- light.shadowMapWidth = 1024;
- light.shadowMapHeight = 1024;
-
- var d = 300;
-
- light.shadowCameraLeft = -d;
- light.shadowCameraRight = d;
- light.shadowCameraTop = d;
- light.shadowCameraBottom = -d;
-
- light.shadowCameraFar = 1000;
- //light.shadowDarkness = 0.5;
-
- scene.add(light);
-
- // cloth material
-
- var clothTexture = THREE.ImageUtils.loadTexture('textures/patterns/circuit_pattern.png');
- clothTexture.wrapS = clothTexture.wrapT = THREE.RepeatWrapping;
- clothTexture.anisotropy = 16;
-
- var clothMaterial = new THREE.MeshPhongMaterial({ alphaTest: 0.5, color: 0xffffff, specular: 0x030303, emissive: 0x111111, shininess: 10, map: clothTexture, side: THREE.DoubleSide });
-
- // cloth geometry
- clothGeometry = new THREE.ParametricGeometry(clothFunction, cloth.w, cloth.h);
- //clothGeometry.dynamic = true;
- clothGeometry.computeFaceNormals();
-
- var uniforms = { texture: { value: clothTexture } };
- var vertexShader = document.getElementById('vertexShaderDepth').textContent;
- var fragmentShader = document.getElementById('fragmentShaderDepth').textContent;
-
- // cloth mesh
-
- object = new THREE.Mesh(clothGeometry, clothMaterial);
- object.position.set(0, 0, 0);
- object.castShadow = true;
- object.receiveShadow = true;
- scene.add(object);
-
- //object.customDepthMaterial = new THREE.ShaderMaterial({ uniforms: uniforms, vertexShader: vertexShader, fragmentShader: fragmentShader });
-
- // sphere
-
- var ballGeo = new THREE.SphereGeometry(ballSize, 20, 20);
- var ballMaterial = new THREE.MeshPhongMaterial({ color: 0xffffff });
-
- sphere = new THREE.Mesh(ballGeo, ballMaterial);
- sphere.castShadow = true;
- sphere.receiveShadow = true;
- scene.add(sphere);
-
- // arrow
-
- arrow = new THREE.ArrowHelper(new THREE.Vector3(0, 1, 0), new THREE.Vector3(0, 0, 0), 50, 0xff0000);
- arrow.position.set(-200, 0, -200);
- // scene.add( arrow );
-
- // ground
-
- var groundTexture = THREE.ImageUtils.loadTexture("textures/terrain/grasslight-big.jpg");
- groundTexture.wrapS = groundTexture.wrapT = THREE.RepeatWrapping;
- groundTexture.repeat.set(25, 25);
- groundTexture.anisotropy = 16;
-
- var groundMaterial = new THREE.MeshPhongMaterial({ color: 0xffffff, specular: 0x111111, map: groundTexture });
-
- var mesh = new THREE.Mesh(new THREE.PlaneBufferGeometry(20000, 20000), groundMaterial);
- mesh.position.y = -250;
- mesh.rotation.x = - Math.PI / 2;
- mesh.receiveShadow = true;
- scene.add(mesh);
-
- // poles
-
- var poleGeo = new THREE.BoxGeometry(5, 375, 5);
- var poleMat = new THREE.MeshPhongMaterial({ color: 0xffffff, specular: 0x111111, shininess: 100 });
-
- var mesh = new THREE.Mesh(poleGeo, poleMat);
- mesh.position.x = -125;
- mesh.position.y = -62;
- mesh.receiveShadow = true;
- mesh.castShadow = true;
- scene.add(mesh);
-
- var mesh = new THREE.Mesh(poleGeo, poleMat);
- mesh.position.x = 125;
- mesh.position.y = -62;
- mesh.receiveShadow = true;
- mesh.castShadow = true;
- scene.add(mesh);
-
- var mesh = new THREE.Mesh(new THREE.BoxGeometry(255, 5, 5), poleMat);
- mesh.position.y = -250 + 750 / 2;
- mesh.position.x = 0;
- mesh.receiveShadow = true;
- mesh.castShadow = true;
- scene.add(mesh);
-
- var gg = new THREE.BoxGeometry(10, 10, 10);
- var mesh = new THREE.Mesh(gg, poleMat);
- mesh.position.y = -250;
- mesh.position.x = 125;
- mesh.receiveShadow = true;
- mesh.castShadow = true;
- scene.add(mesh);
-
- var mesh = new THREE.Mesh(gg, poleMat);
- mesh.position.y = -250;
- mesh.position.x = -125;
- mesh.receiveShadow = true;
- mesh.castShadow = true;
- scene.add(mesh);
-
- //
-
- renderer = new THREE.WebGLRenderer({ antialias: true });
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- renderer.setClearColor(scene.fog.color);
-
- container.appendChild(renderer.domElement);
-
- renderer.gammaInput = true;
- renderer.gammaOutput = true;
-
- renderer.shadowMapEnabled = true;
-
- //
-
- stats = new Stats();
- container.appendChild(stats.dom);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- sphere.visible = !true
-
- }
-
- //
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- var time = Date.now();
-
- windStrength = Math.cos(time / 7000) * 20 + 40;
- windForce.set(Math.sin(time / 2000), Math.cos(time / 3000), Math.sin(time / 1000)).normalize().multiplyScalar(windStrength);
- arrow.setLength(windStrength);
- arrow.setDirection(windForce);
-
- simulate(time);
- render();
- stats.update();
-
- }
-
- function render() {
-
- var timer = Date.now() * 0.0002;
-
- var p = cloth.particles;
-
- for (var i = 0, il = p.length; i < il; i++) {
-
- clothGeometry.vertices[i].copy(p[i].position);
-
- }
-
- clothGeometry.computeFaceNormals();
- clothGeometry.computeVertexNormals();
-
- clothGeometry.normalsNeedUpdate = true;
- clothGeometry.verticesNeedUpdate = true;
-
- sphere.position.copy(ballPosition);
-
- if (rotate) {
-
- camera.position.x = Math.cos(timer) * 1500;
- camera.position.z = Math.sin(timer) * 1500;
-
- }
-
- camera.lookAt(scene.position);
-
- renderer.render(scene, camera);
-
- }
-}
\ No newline at end of file
diff --git a/types/three/test/webgl/webgl_animation_skinning_morph.ts b/types/three/test/webgl/webgl_animation_skinning_morph.ts
deleted file mode 100644
index e9129084ba..0000000000
--- a/types/three/test/webgl/webgl_animation_skinning_morph.ts
+++ /dev/null
@@ -1,209 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_animation_skinning_morph.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
- interface WEBGL {
- isWebGLAvailable(): boolean;
-
- isWebGL2Available(): boolean;
-
- getWebGLErrorMessage(): HTMLDivElement;
-
- getWebGL2ErrorMessage(): HTMLDivElement;
-
- getErrorMessage(version: 1 | 2): HTMLDivElement;
- }
-
- var WEBGL: WEBGL;
- // -------
-
- if (WEBGL.isWebGLAvailable() === false) {
- document.body.appendChild(WEBGL.getWebGLErrorMessage());
- }
- var container: HTMLElement
- var stats: Stats;
- var clock: THREE.Clock;
- var gui: dat.GUI;
- var mixer: THREE.AnimationMixer;
- var actions: { [name: string]: THREE.AnimationAction };
- var activeAction: THREE.AnimationAction;
- var previousAction: THREE.AnimationAction;
-
- var camera: THREE.PerspectiveCamera;
- var scene: THREE.Scene;
- var renderer: THREE.WebGLRenderer;
- var model: THREE.Scene;
- var face: THREE.Mesh;
-
- type Emote = 'Jump' | 'Yes' | 'No' | 'Wave' | 'Punch' | 'ThumbsUp';
-
- var api: { [name in Emote]?: () => void; } & { state: string; } = {state: 'Walking'};
-
- init();
- animate();
-
- function init() {
- container = document.createElement('div');
- document.body.appendChild(container);
-
- camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.25, 100);
- camera.position.set(-5, 3, 10);
- camera.lookAt(new THREE.Vector3(0, 2, 0));
-
- scene = new THREE.Scene();
- scene.background = new THREE.Color(0xe0e0e0);
- scene.fog = new THREE.Fog(0xe0e0e0, 20, 100);
-
- clock = new THREE.Clock();
-
- // lights
- var light: THREE.Light = new THREE.HemisphereLight(0xffffff, 0x444444);
- light.position.set(0, 20, 0);
- scene.add(light);
-
- light = new THREE.DirectionalLight(0xffffff);
- light.position.set(0, 20, 10);
- scene.add(light);
-
- // ground
- var mesh = new THREE.Mesh(new THREE.PlaneBufferGeometry(2000, 2000), new THREE.MeshPhongMaterial({
- color: 0x999999,
- depthWrite: false
- }));
- mesh.rotation.x = -Math.PI / 2;
- scene.add(mesh);
-
- var grid = new THREE.GridHelper(200, 40, 0x000000, 0x000000);
- (grid.material as THREE.LineBasicMaterial).opacity = 0.2;
- (grid.material as THREE.LineBasicMaterial).transparent = true;
- scene.add(grid);
-
- // model
- var loader = new THREE.GLTFLoader();
- loader.load('models/gltf/RobotExpressive/RobotExpressive.glb', function (gltf) {
- model = gltf.scene;
- scene.add(model);
-
- createGUI(model, gltf.animations);
- }, undefined, function (e) {
- console.error(e);
- });
-
- renderer = new THREE.WebGLRenderer({antialias: true});
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- renderer.gammaOutput = true;
- renderer.gammaFactor = 2.2;
- container.appendChild(renderer.domElement);
-
- window.addEventListener('resize', onWindowResize, false);
-
- // stats
- stats = new Stats();
- container.appendChild(stats.dom);
- }
-
- function createGUI(model: THREE.Scene, animations: THREE.AnimationClip[]) {
- var states = ['Idle', 'Walking', 'Running', 'Dance', 'Death', 'Sitting', 'Standing'];
- var emotes: Emote[] = ['Jump', 'Yes', 'No', 'Wave', 'Punch', 'ThumbsUp'];
-
- gui = new dat.GUI();
-
- mixer = new THREE.AnimationMixer(model);
-
- actions = {};
-
- for (var i = 0; i < animations.length; i++) {
- var clip = animations[i];
- var action = mixer.clipAction(clip);
- actions[clip.name] = action;
-
- if (emotes.indexOf(clip.name as Emote) >= 0 || states.indexOf(clip.name) >= 4) {
- action.clampWhenFinished = true;
- action.loop = THREE.LoopOnce;
- }
- }
-
- // states
- var statesFolder = gui.addFolder('States');
-
- var clipCtrl = statesFolder.add(api, 'state').options(states);
-
- clipCtrl.onChange(function () {
- fadeToAction(api.state, 0.5);
- });
-
- statesFolder.open();
-
- // emotes
- var emoteFolder = gui.addFolder('Emote');
-
- function createEmoteCallback(name: Emote) {
- api[name] = function () {
- fadeToAction(name, 0.2);
- mixer.addEventListener('finished', restoreState);
- };
-
- emoteFolder.add(api, name);
- }
-
- function restoreState() {
- mixer.removeEventListener('finished', restoreState);
-
- fadeToAction(api.state, 0.2);
- }
-
- for (var i = 0; i < emotes.length; i++) {
- createEmoteCallback(emotes[i]);
- }
-
- emoteFolder.open();
-
- // expressions
- face = model.getObjectByName('Head_2') as THREE.Mesh;
-
- var expressions = Object.keys(face.morphTargetDictionary);
- var expressionFolder = gui.addFolder('Expressions');
-
- for (var i = 0; i < expressions.length; i++) {
- expressionFolder.add(face.morphTargetInfluences, i.toString(), 0, 1, 0.01).name(expressions[i]);
- }
-
- activeAction = actions['Walking'];
- activeAction.play();
-
- expressionFolder.open();
- }
-
- function fadeToAction(name: string, duration: number) {
- previousAction = activeAction;
- activeAction = actions[name];
-
- if (previousAction !== activeAction) {
- previousAction.fadeOut(duration);
- }
-
- activeAction
- .reset()
- .setEffectiveTimeScale(1)
- .setEffectiveWeight(1)
- .fadeIn(duration)
- .play();
- }
-
- function onWindowResize() {
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
- }
-
- //
- function animate() {
- var dt = clock.getDelta();
- if (mixer) mixer.update(dt);
- requestAnimationFrame(animate);
- renderer.render(scene, camera);
- stats.update();
- }
-}
diff --git a/types/three/test/webgl/webgl_buffergeometry.ts b/types/three/test/webgl/webgl_buffergeometry.ts
deleted file mode 100644
index 0d4f1ee5dd..0000000000
--- a/types/three/test/webgl/webgl_buffergeometry.ts
+++ /dev/null
@@ -1,217 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_buffergeometry.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
-
- // -------
-
- if ( ! Detector.webgl ) Detector.addGetWebGLMessage();
-
-var container: HTMLElement;
- var stats: Stats;
- var camera: THREE.PerspectiveCamera;
- var scene: THREE.Scene;
- var renderer: THREE.WebGLRenderer;
- var mesh: THREE.Mesh;
-
- init();
- animate();
-
- function init() {
-
- container = document.getElementById( 'container' );
-
- //
-
- 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.add( new THREE.AmbientLight( 0x444444 ) );
-
- 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 triangles = 160000;
-
- var geometry = new THREE.BufferGeometry();
-
- 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 pA = new THREE.Vector3();
- var pB = new THREE.Vector3();
- var pC = new THREE.Vector3();
-
- var cb = new THREE.Vector3();
- var ab = new THREE.Vector3();
-
- for ( var i = 0; i < positions.length; i += 9 ) {
-
- // positions
-
- var x = Math.random() * n - n2;
- var y = Math.random() * n - n2;
- var z = Math.random() * n - n2;
-
- var ax = x + Math.random() * d - d2;
- var ay = y + Math.random() * d - d2;
- var az = z + Math.random() * d - d2;
-
- var bx = x + Math.random() * d - d2;
- var by = y + Math.random() * d - d2;
- var bz = z + Math.random() * d - d2;
-
- var cx = x + Math.random() * d - d2;
- 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 + 3 ] = bx;
- positions[ i + 4 ] = by;
- positions[ i + 5 ] = bz;
-
- 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 );
-
- cb.subVectors( pC, pB );
- ab.subVectors( pA, pB );
- cb.cross( ab );
-
- cb.normalize();
-
- var nx = cb.x;
- var ny = cb.y;
- var nz = cb.z;
-
- 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 + 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;
-
- color.setRGB( vx, vy, vz );
-
- 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 + 6 ] = color.r;
- colors[ i + 7 ] = color.g;
- colors[ i + 8 ] = color.b;
-
- }
-
- 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( {
- color: 0xaaaaaa, specular: 0xffffff, shininess: 250,
- side: THREE.DoubleSide, vertexColors: THREE.VertexColors
- } );
-
- 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.gammaInput = true;
- renderer.gammaOutput = true;
-
- container.appendChild( renderer.domElement );
-
- //
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild( stats.dom );
-
- //
-
- window.addEventListener( 'resize', onWindowResize, false );
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize( window.innerWidth, window.innerHeight );
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame( animate );
-
- render();
- stats.update();
-
- }
-
- function render() {
-
- var time = Date.now() * 0.001;
-
- mesh.rotation.x = time * 0.25;
- mesh.rotation.y = time * 0.5;
-
- renderer.render( scene, camera );
-
- }
-}
\ No newline at end of file
diff --git a/types/three/test/webgl/webgl_camera.ts b/types/three/test/webgl/webgl_camera.ts
deleted file mode 100644
index 804aba771f..0000000000
--- a/types/three/test/webgl/webgl_camera.ts
+++ /dev/null
@@ -1,234 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_camera.html
-
-() => {
- var SCREEN_WIDTH = window.innerWidth;
- var SCREEN_HEIGHT = window.innerHeight;
-
- var container: HTMLElement;
- var stats: Stats;
- var camera: THREE.PerspectiveCamera;
- var scene: THREE.Scene;
- var renderer: THREE.WebGLRenderer;
- var mesh: THREE.Mesh;
-
- var cameraRig: THREE.Group, activeCamera: THREE.PerspectiveCamera | THREE.OrthographicCamera, activeHelper: THREE.CameraHelper;
- var cameraPerspective: THREE.PerspectiveCamera, cameraOrtho: THREE.OrthographicCamera;
- var cameraPerspectiveHelper: THREE.CameraHelper, cameraOrthoHelper: THREE.CameraHelper;
-
- init();
- animate();
-
- function init() {
-
- 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.position.z = 2500;
-
- cameraPerspective = new THREE.PerspectiveCamera( 50, 0.5 * SCREEN_WIDTH / SCREEN_HEIGHT, 150, 1000 );
-
- 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 );
-
- cameraOrthoHelper = new THREE.CameraHelper( cameraOrtho );
- scene.add( cameraOrthoHelper );
-
- //
-
- activeCamera = cameraPerspective;
- activeHelper = cameraPerspectiveHelper;
-
-
- // counteract different front orientation of cameras vs rig
-
- cameraOrtho.rotation.y = Math.PI;
- cameraPerspective.rotation.y = Math.PI;
-
- cameraRig = new THREE.Group();
-
- cameraRig.add( cameraPerspective );
- cameraRig.add( cameraOrtho );
-
- scene.add( cameraRig );
-
- //
-
- 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.SphereBufferGeometry( 50, 16, 8 ),
- new THREE.MeshBasicMaterial( { color: 0x00ff00, wireframe: true } )
- );
- mesh2.position.y = 150;
- mesh.add( mesh2 );
-
- 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 );
-
- //
-
- var geometry = new THREE.Geometry();
-
- 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 );
-
- geometry.vertices.push( vertex );
-
- }
-
- 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.domElement.style.position = "relative";
- container.appendChild( renderer.domElement );
-
- renderer.autoClear = false;
-
- //
-
- stats = new Stats();
- container.appendChild( stats.dom );
-
- //
-
- window.addEventListener( 'resize', onWindowResize, false );
- document.addEventListener( 'keydown', onKeyDown, false );
-
- }
-
- //
-
- function onKeyDown ( event: KeyboardEvent ) {
-
- switch( event.keyCode ) {
-
- case 79: /*O*/
-
- activeCamera = cameraOrtho;
- activeHelper = cameraOrthoHelper;
-
- break;
-
- case 80: /*P*/
-
- activeCamera = cameraPerspective;
- activeHelper = cameraPerspectiveHelper;
-
- break;
-
- }
-
- }
-
- //
-
- function onWindowResize( event: Event ) {
-
- SCREEN_WIDTH = window.innerWidth;
- SCREEN_HEIGHT = window.innerHeight;
-
- renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
-
- camera.aspect = 0.5 * SCREEN_WIDTH / SCREEN_HEIGHT;
- camera.updateProjectionMatrix();
-
- 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.bottom = - SCREEN_HEIGHT / 2;
- cameraOrtho.updateProjectionMatrix();
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame( animate );
-
- render();
- stats.update();
-
- }
-
-
- function render() {
-
- 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.children[ 0 ].position.x = 70 * Math.cos( 2 * r );
- mesh.children[ 0 ].position.z = 70 * Math.sin( r );
-
- if ( activeCamera === cameraPerspective ) {
-
- cameraPerspective.fov = 35 + 30 * Math.sin( 0.5 * r );
- cameraPerspective.far = mesh.position.length();
- cameraPerspective.updateProjectionMatrix();
-
- cameraPerspectiveHelper.update();
- cameraPerspectiveHelper.visible = true;
-
- cameraOrthoHelper.visible = false;
-
- } else {
-
- cameraOrtho.far = mesh.position.length();
- cameraOrtho.updateProjectionMatrix();
-
- cameraOrthoHelper.update();
- cameraOrthoHelper.visible = true;
-
- cameraPerspectiveHelper.visible = false;
-
- }
-
- cameraRig.lookAt( mesh.position );
-
- renderer.clear();
-
- activeHelper.visible = false;
-
- 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 );
-
- }
-}
\ No newline at end of file
diff --git a/types/three/test/webgl/webgl_custom_attributes.ts b/types/three/test/webgl/webgl_custom_attributes.ts
deleted file mode 100644
index c3a5bc6a36..0000000000
--- a/types/three/test/webgl/webgl_custom_attributes.ts
+++ /dev/null
@@ -1,122 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_custom_attributes.html
-
-() => {
- if (!Detector.webgl) Detector.addGetWebGLMessage();
-
- var renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.PerspectiveCamera, stats: Stats;
-
- var sphere: THREE.Mesh, uniforms: { amplitude: { type: string; value: number; }; color: { type: string; value: THREE.Color; }; texture: { type: string; value: THREE.Texture; }; };
-
- var displacement: Float32Array, noise: Float32Array;
-
- init();
- animate();
-
- function init() {
-
- camera = new THREE.PerspectiveCamera(30, window.innerWidth / window.innerHeight, 1, 10000);
- camera.position.z = 300;
-
- scene = new THREE.Scene();
-
- uniforms = {
-
- amplitude: { type: "f", value: 1.0 },
- color: { type: "c", value: new THREE.Color(0xff2200) },
- texture: { type: "t", value: THREE.ImageUtils.loadTexture("textures/water.jpg") },
-
- };
-
- uniforms.texture.value.wrapS = uniforms.texture.value.wrapT = THREE.RepeatWrapping;
-
- var shaderMaterial = new THREE.ShaderMaterial({
-
- uniforms: uniforms,
- vertexShader: document.getElementById('vertexshader').textContent,
- fragmentShader: document.getElementById('fragmentshader').textContent
-
- });
-
-
- var radius = 50, segments = 128, rings = 64;
-
- var geometry = new THREE.SphereBufferGeometry( radius, segments, rings );
-
- displacement = new Float32Array( geometry.getAttribute('position').count );
- noise = new Float32Array( geometry.getAttribute('position').count );
-
- for ( var i = 0; i < displacement.length; i ++ ) {
-
- noise[ i ] = Math.random() * 5;
-
- }
-
- geometry.addAttribute( 'displacement', new THREE.BufferAttribute( displacement, 1 ) );
-
- sphere = new THREE.Mesh(geometry, shaderMaterial);
- scene.add(sphere);
-
- renderer = new THREE.WebGLRenderer();
- renderer.setClearColor(0x050505);
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- var container = document.getElementById('container');
- container.appendChild(renderer.domElement);
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild(stats.dom);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- render();
- stats.update();
-
- }
-
- function render() {
-
- var time = Date.now() * 0.01;
-
- sphere.rotation.y = sphere.rotation.z = 0.01 * time;
-
- uniforms.amplitude.value = 2.5 * Math.sin(sphere.rotation.y * 0.125);
- uniforms.color.value.offsetHSL(0.0005, 0, 0);
-
- for ( var i = 0; i < displacement.length; i ++ ) {
-
- displacement[ i ] = Math.sin( 0.1 * i + time );
-
- noise[ i ] += 0.5 * ( 0.5 - Math.random() );
- noise[ i ] = THREE.Math.clamp( noise[ i ], -5, 5 );
-
- displacement[ i ] += noise[ i ];
-
- }
-
- ((sphere.geometry as THREE.BufferGeometry).getAttribute('displacement')as THREE.BufferAttribute).needsUpdate = true;
-
- renderer.render(scene, camera);
-
- }
-
-}
\ No newline at end of file
diff --git a/types/three/test/webgl/webgl_geometries.ts b/types/three/test/webgl/webgl_geometries.ts
deleted file mode 100644
index d239d1ca3c..0000000000
--- a/types/three/test/webgl/webgl_geometries.ts
+++ /dev/null
@@ -1,179 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_geometries.html
-
-() => {
- if (!Detector.webgl) Detector.addGetWebGLMessage();
-
- var container: HTMLDivElement, stats: Stats;
-
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer;
-
- init();
- animate();
-
- function init() {
-
- container = document.createElement('div');
- document.body.appendChild(container);
-
- camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 2000);
- camera.position.y = 400;
-
- scene = new THREE.Scene();
-
- var light: THREE.DirectionalLight, object: THREE.Mesh | THREE.AxesHelper | THREE.ArrowHelper;
-
- scene.add(new THREE.AmbientLight(0x404040));
-
- light = new THREE.DirectionalLight(0xffffff);
- light.position.set(0, 1, 0);
- scene.add(light);
-
- var map = THREE.ImageUtils.loadTexture('textures/UV_Grid_Sm.jpg');
- map.wrapS = map.wrapT = THREE.RepeatWrapping;
- map.anisotropy = 16;
-
- var material = new THREE.MeshLambertMaterial({ map: map, side: THREE.DoubleSide });
-
- //
-
- object = new THREE.Mesh(new THREE.SphereGeometry(75, 20, 10), material);
- object.position.set(-400, 0, 200);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.IcosahedronGeometry(75, 1), material);
- object.position.set(-200, 0, 200);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.OctahedronGeometry(75, 2), material);
- object.position.set(0, 0, 200);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.TetrahedronGeometry(75, 0), material);
- object.position.set(200, 0, 200);
- scene.add(object);
-
- //
-
- object = new THREE.Mesh(new THREE.PlaneGeometry(100, 100, 4, 4), material);
- object.position.set(-400, 0, 0);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.BoxGeometry(100, 100, 100, 4, 4, 4), material);
- object.position.set(-200, 0, 0);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.CircleGeometry(50, 20, 0, Math.PI * 2), material);
- object.position.set(0, 0, 0);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.RingGeometry(10, 50, 20, 5, 0, Math.PI * 2), material);
- object.position.set(200, 0, 0);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.CylinderGeometry(25, 75, 100, 40, 5), material);
- object.position.set(400, 0, 0);
- scene.add(object);
-
- //
-
- var points: THREE.Vector2[] = [];
-
- for (var i = 0; i < 50; i++) {
-
- points.push(new THREE.Vector2(Math.sin(i * 0.2) * Math.sin(i * 0.1) * 15 + 50, 0));
-
- }
-
- object = new THREE.Mesh(new THREE.LatheGeometry(points, 20), material);
- object.position.set(-400, 0, -200);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.TorusGeometry(50, 20, 20, 20), material);
- object.position.set(-200, 0, -200);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.TorusKnotGeometry(50, 10, 50, 20), material);
- object.position.set(0, 0, -200);
- scene.add(object);
-
-
- object = new THREE.Mesh(
- new THREE.ParametricGeometry(
- (u:number, v:number, dest:THREE.Vector3):void => {
- dest.set(u, v, 0);
- },
- 25,
- 25
- )
- );
-
- object = new THREE.AxesHelper(50);
- object.position.set(200, 0, -200);
- scene.add(object);
-
- object = new THREE.ArrowHelper(new THREE.Vector3(0, 1, 0), new THREE.Vector3(0, 0, 0), 50);
- object.position.set(400, 0, -200);
- scene.add(object);
-
- //
-
- renderer = new THREE.WebGLRenderer({ antialias: true });
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- container.appendChild(renderer.domElement);
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild(stats.dom);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- render();
- stats.update();
-
- }
-
- function render() {
-
- var timer = Date.now() * 0.0001;
-
- camera.position.x = Math.cos(timer) * 800;
- camera.position.z = Math.sin(timer) * 800;
-
- camera.lookAt(scene.position);
-
- for (var i = 0, l = scene.children.length; i < l; i++) {
-
- var object = scene.children[i];
-
- object.rotation.x = timer * 5;
- object.rotation.y = timer * 2.5;
-
- }
-
- renderer.render(scene, camera);
-
- }
-
-}
diff --git a/types/three/test/webgl/webgl_geometries_with_context.ts b/types/three/test/webgl/webgl_geometries_with_context.ts
deleted file mode 100644
index 20e18f715a..0000000000
--- a/types/three/test/webgl/webgl_geometries_with_context.ts
+++ /dev/null
@@ -1,185 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_geometries.html
-
-() => {
- if (!Detector.webgl) Detector.addGetWebGLMessage();
-
- var container: HTMLDivElement, stats: Stats;
-
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer;
-
- init();
- animate();
-
- function init() {
-
- container = document.createElement('div');
- document.body.appendChild(container);
-
- camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 2000);
- camera.position.y = 400;
-
- scene = new THREE.Scene();
-
- var light: THREE.DirectionalLight, object: THREE.Mesh | THREE.AxesHelper | THREE.ArrowHelper;
-
- scene.add(new THREE.AmbientLight(0x404040));
-
- light = new THREE.DirectionalLight(0xffffff);
- light.position.set(0, 1, 0);
- scene.add(light);
-
- var map = THREE.ImageUtils.loadTexture('textures/UV_Grid_Sm.jpg');
- map.wrapS = map.wrapT = THREE.RepeatWrapping;
- map.anisotropy = 16;
-
- var material = new THREE.MeshLambertMaterial({ map: map, side: THREE.DoubleSide });
-
- //
-
- object = new THREE.Mesh(new THREE.SphereGeometry(75, 20, 10), material);
- object.position.set(-400, 0, 200);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.IcosahedronGeometry(75, 1), material);
- object.position.set(-200, 0, 200);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.OctahedronGeometry(75, 2), material);
- object.position.set(0, 0, 200);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.TetrahedronGeometry(75, 0), material);
- object.position.set(200, 0, 200);
- scene.add(object);
-
- //
-
- object = new THREE.Mesh(new THREE.PlaneGeometry(100, 100, 4, 4), material);
- object.position.set(-400, 0, 0);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.BoxGeometry(100, 100, 100, 4, 4, 4), material);
- object.position.set(-200, 0, 0);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.CircleGeometry(50, 20, 0, Math.PI * 2), material);
- object.position.set(0, 0, 0);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.RingGeometry(10, 50, 20, 5, 0, Math.PI * 2), material);
- object.position.set(200, 0, 0);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.CylinderGeometry(25, 75, 100, 40, 5), material);
- object.position.set(400, 0, 0);
- scene.add(object);
-
- //
-
- var points: THREE.Vector2[] = [];
-
- for (var i = 0; i < 50; i++) {
-
- points.push(new THREE.Vector2(Math.sin(i * 0.2) * Math.sin(i * 0.1) * 15 + 50, 0));
-
- }
-
- object = new THREE.Mesh(new THREE.LatheGeometry(points, 20), material);
- object.position.set(-400, 0, -200);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.TorusGeometry(50, 20, 20, 20), material);
- object.position.set(-200, 0, -200);
- scene.add(object);
-
- object = new THREE.Mesh(new THREE.TorusKnotGeometry(50, 10, 50, 20), material);
- object.position.set(0, 0, -200);
- scene.add(object);
-
-
- object = new THREE.Mesh(
- new THREE.ParametricGeometry(
- (u:number, v:number, dest:THREE.Vector3):void => {
- dest.set(u, v, 0);
- },
- 25,
- 25
- )
- );
-
- object = new THREE.AxesHelper(50);
- object.position.set(200, 0, -200);
- scene.add(object);
-
- object = new THREE.ArrowHelper(new THREE.Vector3(0, 1, 0), new THREE.Vector3(0, 0, 0), 50);
- object.position.set(400, 0, -200);
- scene.add(object);
-
- //
- /*
- * Inserting a new Canvas' WebGL rendering context
- * (https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext)
- */
- const canvas = document.createElement('canvas');
- const gl = canvas.getContext('webgl');
-
- renderer = new THREE.WebGLRenderer({ antialias: true, context: gl });
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- container.appendChild(renderer.domElement);
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild(stats.dom);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- render();
- stats.update();
-
- }
-
- function render() {
-
- var timer = Date.now() * 0.0001;
-
- camera.position.x = Math.cos(timer) * 800;
- camera.position.z = Math.sin(timer) * 800;
-
- camera.lookAt(scene.position);
-
- for (var i = 0, l = scene.children.length; i < l; i++) {
-
- var object = scene.children[i];
-
- object.rotation.x = timer * 5;
- object.rotation.y = timer * 2.5;
-
- }
-
- renderer.render(scene, camera);
-
- }
-
-}
diff --git a/types/three/test/webgl/webgl_helpers.ts b/types/three/test/webgl/webgl_helpers.ts
deleted file mode 100644
index bbb9d72040..0000000000
--- a/types/three/test/webgl/webgl_helpers.ts
+++ /dev/null
@@ -1,96 +0,0 @@
-
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_helpers.html
-
-() => {
- var scene: THREE.Scene, renderer: THREE.WebGLRenderer;
- var camera: THREE.PerspectiveCamera, light: THREE.PointLight;
-
- init();
- animate();
-
- function init() {
-
- renderer = new THREE.WebGLRenderer();
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- document.body.appendChild(renderer.domElement);
-
- //
-
- camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 1000);
- camera.position.z = 400;
-
- scene = new THREE.Scene();
-
- light = new THREE.PointLight();
- light.position.set(200, 100, 150);
- scene.add(light);
-
- scene.add(new THREE.PointLightHelper(light, 5));
-
- var gridHelper = new THREE.GridHelper(200, 10);
- gridHelper.setColors(0x0000ff, 0x808080);
- gridHelper.position.y = - 150;
- scene.add(gridHelper);
-
- var plane = new THREE.Plane(new THREE.Vector3(1, 1, 0.2), 3);
- var planeHelper = new THREE.PlaneHelper(plane, 1, 0xffff00);
- scene.add(planeHelper);
-
- var loader = new THREE.JSONLoader();
- loader.load('obj/leeperrysmith/LeePerrySmith.js', function (geometry, materials) {
-
- var material = new THREE.MeshLambertMaterial();
-
- var mesh = new THREE.Mesh(geometry, material);
- mesh.scale.multiplyScalar(50);
- scene.add(mesh);
-
- scene.add(new THREE.FaceNormalsHelper(mesh, 10));
- scene.add(new THREE.VertexNormalsHelper(mesh, 10));
-
- var helper = new THREE.WireframeHelper(mesh);
- var wireframeMaterial = helper.material as THREE.Material;
- wireframeMaterial.depthTest = false;
- wireframeMaterial.opacity = 0.25;
- wireframeMaterial.transparent = true;
- scene.add(helper);
-
- scene.add(new THREE.BoxHelper(mesh));
-
- });
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- var time = - performance.now() * 0.0003;
-
- camera.position.x = 400 * Math.cos(time);
- camera.position.z = 400 * Math.sin(time);
- camera.lookAt(scene.position);
-
- light.position.x = Math.sin(time * 1.7) * 300;
- light.position.y = Math.cos(time * 1.5) * 400;
- light.position.z = Math.cos(time * 1.3) * 300;
-
- renderer.render(scene, camera);
-
- }
-
-}
diff --git a/types/three/test/webgl/webgl_interactive_cubes.ts b/types/three/test/webgl/webgl_interactive_cubes.ts
deleted file mode 100644
index 87a9796813..0000000000
--- a/types/three/test/webgl/webgl_interactive_cubes.ts
+++ /dev/null
@@ -1,149 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_interactive_cubes.html
-
-() => {
- var container: HTMLDivElement, stats: Stats;
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, raycaster: THREE.Raycaster, renderer: THREE.WebGLRenderer;
-
- var mouse = new THREE.Vector2(), INTERSECTED: THREE.Mesh | null;
- var radius = 100, theta = 0;
-
- init();
- animate();
-
- function init() {
-
- container = document.createElement('div');
- document.body.appendChild(container);
-
- var info = document.createElement('div');
- info.style.position = 'absolute';
- info.style.top = '10px';
- info.style.width = '100%';
- info.style.textAlign = 'center';
- info.innerHTML = 'three.js webgl - interactive cubes';
- container.appendChild(info);
-
- camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 10000);
-
- scene = new THREE.Scene();
-
- var light = new THREE.DirectionalLight(0xffffff, 1);
- light.position.set(1, 1, 1).normalize();
- scene.add(light);
-
- var geometry = new THREE.BoxGeometry(20, 20, 20);
-
- for (var i = 0; i < 2000; i++) {
-
- var object = new THREE.Mesh(geometry, new THREE.MeshLambertMaterial({ color: Math.random() * 0xffffff }));
-
- object.position.x = Math.random() * 800 - 400;
- object.position.y = Math.random() * 800 - 400;
- object.position.z = Math.random() * 800 - 400;
-
- object.rotation.x = Math.random() * 2 * Math.PI;
- object.rotation.y = Math.random() * 2 * Math.PI;
- object.rotation.z = Math.random() * 2 * Math.PI;
-
- object.scale.x = Math.random() + 0.5;
- object.scale.y = Math.random() + 0.5;
- object.scale.z = Math.random() + 0.5;
-
- scene.add(object);
-
- }
-
- raycaster = new THREE.Raycaster();
-
- renderer = new THREE.WebGLRenderer();
- renderer.setClearColor(0xf0f0f0);
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- renderer.sortObjects = false;
- container.appendChild(renderer.domElement);
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild(stats.dom);
-
- document.addEventListener('mousemove', onDocumentMouseMove, false);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- function onDocumentMouseMove(event: MouseEvent) {
-
- event.preventDefault();
-
- mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
- mouse.y = - (event.clientY / window.innerHeight) * 2 + 1;
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- render();
- stats.update();
-
- }
-
- let INTERSECTED_currentHex = 0;
-
- function render() {
-
- theta += 0.1;
-
- camera.position.x = radius * Math.sin(THREE.Math.degToRad(theta));
- camera.position.y = radius * Math.sin(THREE.Math.degToRad(theta));
- camera.position.z = radius * Math.cos(THREE.Math.degToRad(theta));
- camera.lookAt(scene.position);
-
- camera.updateMatrixWorld(false);
-
- // find intersections
-
- raycaster.setFromCamera(mouse, camera);
-
- var intersects = raycaster.intersectObjects(scene.children);
-
- if (intersects.length > 0) {
-
- if (INTERSECTED != intersects[0].object) {
-
- if (INTERSECTED) (INTERSECTED.material as THREE.MeshLambertMaterial).emissive.setHex(INTERSECTED_currentHex);
-
- INTERSECTED = intersects[0].object as THREE.Mesh;
- INTERSECTED_currentHex = (INTERSECTED.material as THREE.MeshLambertMaterial).emissive.getHex();
- (INTERSECTED.material as THREE.MeshLambertMaterial).emissive.setHex(0xff0000);
-
- }
-
- } else {
-
- if (INTERSECTED) (INTERSECTED.material as THREE.MeshLambertMaterial).emissive.setHex(INTERSECTED_currentHex);
-
- INTERSECTED = null;
-
- }
-
- renderer.render(scene, camera);
-
- }
-}
\ No newline at end of file
diff --git a/types/three/test/webgl/webgl_interactive_raycasting_points.ts b/types/three/test/webgl/webgl_interactive_raycasting_points.ts
deleted file mode 100644
index 7f6f163a28..0000000000
--- a/types/three/test/webgl/webgl_interactive_raycasting_points.ts
+++ /dev/null
@@ -1,316 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_sprites.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
- var material:THREE.SpriteMaterial;
- var container:HTMLElement;
- var pcBuffer:THREE.Points;
- var v:any;
- // -------
-
- if (!Detector.webgl) Detector.addGetWebGLMessage();
-
- var renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.PerspectiveCamera, stats: Stats;
- var pointclouds: THREE.Points[];
- var raycaster: THREE.Raycaster;
- var mouse = new THREE.Vector2();
- var intersection: THREE.Intersection | null = null;
- var spheres: THREE.Mesh[] = [];
- var spheresIndex = 0;
- var clock: THREE.Clock;
-
- var threshold = 0.1;
- var pointSize = 0.05;
- var width = 150;
- var length = 150;
- var rotateY = new THREE.Matrix4().makeRotationY(0.005);
-
- init();
- animate();
-
- function generatePointCloudGeometry(color: THREE.Color, width: number, length: number) {
-
- var geometry = new THREE.BufferGeometry();
- var numPoints = width * length;
-
- var positions = new Float32Array(numPoints * 3);
- var colors = new Float32Array(numPoints * 3);
-
- var k = 0;
-
- for (var i = 0; i < width; i++) {
-
- for (var j = 0; j < length; j++) {
-
- 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 z = v - 0.5;
-
- positions[3 * k] = x;
- positions[3 * k + 1] = y;
- positions[3 * k + 2] = z;
-
- 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;
-
- k++;
-
- }
-
- }
-
- geometry.addAttribute('position', new THREE.BufferAttribute(positions, 3));
- geometry.addAttribute('color', new THREE.BufferAttribute(colors, 3));
- geometry.computeBoundingBox();
-
- return geometry;
-
- }
-
- function generatePointcloud(color: THREE.Color, width: number, length: number) {
-
- var geometry = generatePointCloudGeometry(color, width, length);
-
- var material = new THREE.PointsMaterial({size: pointSize, vertexColors: THREE.VertexColors});
- var pointcloud = new THREE.Points(geometry, material);
-
- return pointcloud;
-
- }
-
- function generateIndexedPointcloud(color: THREE.Color, width: number, length: number) {
-
- var geometry = generatePointCloudGeometry(color, width, length);
- var numPoints = width * length;
- var indices = new Uint16Array(numPoints);
-
- var k = 0;
-
- for (var i = 0; i < width; i++) {
-
- for (var j = 0; j < length; j++) {
-
- indices[k] = k;
- k++;
-
- }
-
- }
-
- geometry.setIndex(new THREE.BufferAttribute(indices, 1));
-
- var material = new THREE.PointsMaterial({size: pointSize, vertexColors: THREE.VertexColors});
- var pointcloud = new THREE.Points(geometry, material);
-
- return pointcloud;
-
- }
-
- function generateIndexedWithOffsetPointcloud(color: THREE.Color, width: number, length: number) {
-
- var geometry = generatePointCloudGeometry(color, width, length);
- var numPoints = width * length;
- var indices = new Uint16Array(numPoints);
-
- var k = 0;
-
- for (var i = 0; i < width; i++) {
-
- for (var j = 0; j < length; j++) {
-
- indices[k] = k;
- k++;
-
- }
-
- }
-
- geometry.setIndex(new THREE.BufferAttribute(indices, 1));
- geometry.addDrawCall(0, indices.length);
-
- var material = new THREE.PointsMaterial({size: pointSize, vertexColors: THREE.VertexColors});
- var pointcloud = new THREE.Points(geometry, material);
-
- return pointcloud;
-
- }
-
- function generateRegularPointcloud(color: THREE.Color, width: number, length: number) {
-
- var geometry = new THREE.Geometry();
-
- var colors: THREE.Color[] = [];
-
- var k = 0;
-
- for (var i = 0; i < width; i++) {
-
- for (var j = 0; j < length; j++) {
-
- 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 z = v - 0.5;
- var v2 = new THREE.Vector3(x, y, z);
- geometry.vertices.push(v2);
- var intensity = ( y + 0.1 ) * 7;
- colors[k] = ( color.clone().multiplyScalar(intensity) );
- k++;
-
- }
-
- }
-
- geometry.colors = colors;
- geometry.computeBoundingBox();
-
- var material = new THREE.PointsMaterial({size: pointSize, vertexColors: THREE.VertexColors});
- var pointcloud = new THREE.Points(geometry, material);
-
- return pointcloud;
-
- }
-
- function init() {
-
- var container = document.getElementById('container');
-
- scene = new THREE.Scene();
-
- clock = new THREE.Clock();
-
- camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000);
- camera.applyMatrix(new THREE.Matrix4().makeTranslation(0, 0, 20));
- camera.applyMatrix(new THREE.Matrix4().makeRotationX(-0.5));
-
- //
-
- 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);
-
- var pcIndexed = generateIndexedPointcloud(new THREE.Color(0, 1, 0), width, length);
- pcIndexed.scale.set(10, 10, 10);
- pcIndexed.position.set(5, 0, 5);
- scene.add(pcIndexed);
-
- var pcIndexedOffset = generateIndexedWithOffsetPointcloud(new THREE.Color(0, 1, 1), width, length);
- pcIndexedOffset.scale.set(10, 10, 10);
- pcIndexedOffset.position.set(5, 0, -5);
- scene.add(pcIndexedOffset);
-
- var pcRegular = generateRegularPointcloud(new THREE.Color(1, 0, 1), width, length);
- pcRegular.scale.set(10, 10, 10);
- pcRegular.position.set(-5, 0, -5);
- scene.add(pcRegular);
-
- pointclouds = [pcBuffer, pcIndexed, pcIndexedOffset, pcRegular];
-
- //
-
- var sphereGeometry = new THREE.SphereGeometry(0.1, 32, 32);
- var sphereMaterial = new THREE.MeshBasicMaterial({color: 0xff0000, flatShading: true});
-
- for (var i = 0; i < 40; i++) {
-
- var sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
- scene.add(sphere);
- spheres.push(sphere);
-
- }
-
- //
-
- renderer = new THREE.WebGLRenderer();
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- container.appendChild(renderer.domElement);
-
- //
-
- raycaster = new THREE.Raycaster();
- raycaster.params.Points.threshold = threshold;
-
- //
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild(stats.dom);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
- document.addEventListener('mousemove', onDocumentMouseMove, false);
-
- }
-
- function onDocumentMouseMove(event: MouseEvent) {
-
- event.preventDefault();
-
- mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
- mouse.y = -( event.clientY / window.innerHeight ) * 2 + 1;
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- render();
- stats.update();
-
- }
-
- var toggle = 0;
-
- function render() {
-
- camera.applyMatrix(rotateY);
- camera.updateMatrixWorld(false);
-
- raycaster.setFromCamera(mouse, camera);
-
- var intersections = raycaster.intersectObjects(pointclouds);
- 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;
-
- toggle = 0;
-
- }
-
- for (var i = 0; i < spheres.length; i++) {
-
- var sphere = spheres[i];
- sphere.scale.multiplyScalar(0.98);
- sphere.scale.clampScalar(0.01, 1);
-
- }
-
- toggle += clock.getDelta();
-
- renderer.render(scene, camera);
-
- }
-}
diff --git a/types/three/test/webgl/webgl_lensflares.ts b/types/three/test/webgl/webgl_lensflares.ts
deleted file mode 100644
index e07329e539..0000000000
--- a/types/three/test/webgl/webgl_lensflares.ts
+++ /dev/null
@@ -1,167 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_lensflares.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
- var controls: any;
- // -------
-
- var container: HTMLDivElement, stats: Stats;
-
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer;
-
- var clock = new THREE.Clock();
-
- init();
- animate();
-
- function init() {
-
- container = document.createElement('div');
- document.body.appendChild(container);
-
- // camera
-
- camera = new THREE.PerspectiveCamera(40, window.innerWidth / window.innerHeight, 1, 15000);
- camera.position.z = 250;
-
- controls = new THREE.FlyControls(camera);
-
- controls.movementSpeed = 2500;
- controls.domElement = container;
- controls.rollSpeed = Math.PI / 6;
- controls.autoForward = false;
- controls.dragToLook = false
-
- // scene
-
- scene = new THREE.Scene();
- scene.fog = new THREE.Fog(0x000000, 3500, 15000);
- scene.fog.color.setHSL(0.51, 0.4, 0.01);
-
- // world
-
- var s = 250;
-
- var cube = new THREE.BoxGeometry(s, s, s);
- var material = new THREE.MeshPhongMaterial({ color: 0xffffff, specular: 0xffffff, shininess: 50 });
-
-
- for (var i = 0; i < 3000; i++) {
-
- var mesh = new THREE.Mesh(cube, material);
-
- mesh.position.x = 8000 * (2.0 * Math.random() - 1.0);
- mesh.position.y = 8000 * (2.0 * Math.random() - 1.0);
- mesh.position.z = 8000 * (2.0 * Math.random() - 1.0);
-
- mesh.rotation.x = Math.random() * Math.PI;
- mesh.rotation.y = Math.random() * Math.PI;
- mesh.rotation.z = Math.random() * Math.PI;
-
- mesh.matrixAutoUpdate = false;
- mesh.updateMatrix();
-
- scene.add(mesh);
-
- }
-
-
- // lights
-
- var ambient = new THREE.AmbientLight(0xffffff);
- ambient.color.setHSL(0.1, 0.3, 0.2);
- scene.add(ambient);
-
-
- var dirLight = new THREE.DirectionalLight(0xffffff, 0.125);
- dirLight.position.set(0, -1, 0).normalize();
- scene.add(dirLight);
-
- dirLight.color.setHSL(0.1, 0.7, 0.5);
-
- // lens flares
-
- var textureFlare0 = THREE.ImageUtils.loadTexture("textures/lensflare/lensflare0.png");
- var textureFlare2 = THREE.ImageUtils.loadTexture("textures/lensflare/lensflare2.png");
- var textureFlare3 = THREE.ImageUtils.loadTexture("textures/lensflare/lensflare3.png");
-
- addLight(0.55, 0.9, 0.5, 5000, 0, -1000);
- addLight(0.08, 0.8, 0.5, 0, 0, -1000);
- addLight(0.995, 0.5, 0.9, 5000, 5000, -1000);
-
- function addLight(h: number, s: number, l: number, x: number, y: number, z: number) {
-
- var light = new THREE.PointLight(0xffffff, 1.5, 4500);
- light.color.setHSL(h, s, l);
- light.position.set(x, y, z);
- scene.add(light);
-
- var flareColor = new THREE.Color(0xffffff);
- flareColor.setHSL(h, s, l + 0.5);
-
- var lensFlare = new THREE.LensFlare();
-
- lensFlare.addElement(new THREE.LensFlareElement(textureFlare2, 512, 0.0));
- lensFlare.addElement(new THREE.LensFlareElement(textureFlare3, 512, 0.0));
-
- lensFlare.position.copy(light.position);
-
- scene.add(lensFlare);
-
- }
-
- // renderer
-
- renderer = new THREE.WebGLRenderer({ antialias: true, alpha: 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;
-
- // stats
-
- stats = new Stats();
- container.appendChild(stats.dom);
-
- // events
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- //
-
- function onWindowResize(event: Event) {
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- render();
- stats.update();
-
- }
-
- function render() {
-
- var delta = clock.getDelta();
-
- controls.update(delta);
- renderer.render(scene, camera);
-
- }
-}
diff --git a/types/three/test/webgl/webgl_lights_hemisphere.ts b/types/three/test/webgl/webgl_lights_hemisphere.ts
deleted file mode 100644
index c0daf3773f..0000000000
--- a/types/three/test/webgl/webgl_lights_hemisphere.ts
+++ /dev/null
@@ -1,213 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_lights_hemisphere.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
- var morph: any;
- // -------
-
- if ( ! Detector.webgl ) Detector.addGetWebGLMessage();
-
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer, dirLight: THREE.DirectionalLight, hemiLight: THREE.HemisphereLight;
- var mixers: THREE.AnimationMixer[] = [];
- var stats: Stats;
-
- var clock = new THREE.Clock();
-
- init();
- animate();
-
- function init() {
-
- var container = document.getElementById( 'container' );
-
- 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 );
-
- /*
- controls = new THREE.TrackballControls( camera );
-
- controls.rotateSpeed = 1.0;
- controls.zoomSpeed = 1.2;
- controls.panSpeed = 0.8;
-
- controls.noZoom = false;
- controls.noPan = false;
-
- 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 );
-
- //
-
- 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;
-
- dirLight.shadowMapWidth = 2048;
- dirLight.shadowMapHeight = 2048;
-
- var d = 50;
-
- dirLight.shadowCameraLeft = -d;
- dirLight.shadowCameraRight = d;
- dirLight.shadowCameraTop = d;
- dirLight.shadowCameraBottom = -d;
-
- dirLight.shadowCameraFar = 3500;
- dirLight.shadowBias = -0.0001;
- //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 ground = new THREE.Mesh( groundGeo, groundMat );
- ground.rotation.x = -Math.PI/2;
- ground.position.y = -33;
- scene.add( ground );
-
- ground.receiveShadow = true;
-
- // SKYDOME
-
- var vertexShader = document.getElementById( 'vertexShader' ).textContent;
- var fragmentShader = document.getElementById( 'fragmentShader' ).textContent;
- var uniforms = {
- topColor: { value: new THREE.Color( 0x0077ff ) },
- bottomColor: { value: new THREE.Color( 0xffffff ) },
- offset: { value: 33 },
- exponent: { value: 0.6 }
- };
- uniforms.topColor.value.copy( hemiLight.color );
-
- 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 sky = new THREE.Mesh( skyGeo, skyMat );
- scene.add( sky );
-
- // MODEL
-
- var loader = new THREE.JSONLoader();
-
- loader.load( "models/animated/flamingo.js", function( geometry ) {
-
- var material = new THREE.MeshPhongMaterial( { color: 0xffffff, specular: 0xffffff, shininess: 20, morphTargets: true, vertexColors: THREE.FaceColors, flatShading: true } );
- var mesh = new THREE.Mesh( geometry, material );
-
- var s = 0.35;
- mesh.scale.set( s, s, s );
- mesh.position.y = 15;
- mesh.rotation.y = -1;
-
- mesh.castShadow = true;
- mesh.receiveShadow = true;
-
- scene.add( mesh );
-
- var mixer = new THREE.AnimationMixer( mesh );
- 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.gammaInput = true;
- renderer.gammaOutput = true;
-
- renderer.shadowMap.enabled = true;
- renderer.shadowMap.cullFace = THREE.CullFaceBack;
-
- // STATS
-
- stats = new Stats();
- container.appendChild( stats.dom );
-
- //
-
- window.addEventListener( 'resize', onWindowResize, false );
- document.addEventListener( 'keydown', onKeyDown, false );
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize( window.innerWidth, window.innerHeight );
-
- }
-
- function onKeyDown ( event: KeyboardEvent ) {
-
- switch ( event.keyCode ) {
-
- case 72: // h
-
- hemiLight.visible = !hemiLight.visible;
- break;
-
- case 68: // d
-
- dirLight.visible = !dirLight.visible;
- break;
-
- }
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame( animate );
-
- render();
- stats.update();
-
- }
-
- function render() {
-
- var delta = clock.getDelta();
-
- //controls.update();
-
- for ( var i = 0; i < mixers.length; i ++ ) {
-
- mixers[ i ].update( delta );
-
- }
-
- renderer.render( scene, camera );
-
- }
-}
diff --git a/types/three/test/webgl/webgl_lines_colors.ts b/types/three/test/webgl/webgl_lines_colors.ts
deleted file mode 100644
index c7d68849f2..0000000000
--- a/types/three/test/webgl/webgl_lines_colors.ts
+++ /dev/null
@@ -1,211 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_lines_colors.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
- var hilbert3D: any;
- var stats: Stats;
- // -------
-
- if (!Detector.webgl) Detector.addGetWebGLMessage();
-
- var effectFXAA: THREE.ShaderPass;
-
- var mouseX = 0, mouseY = 0,
-
- windowHalfX = window.innerWidth / 2,
- windowHalfY = window.innerHeight / 2,
-
- camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer, material: THREE.LineBasicMaterial, composer: THREE.EffectComposer;
-
- init();
- animate();
-
- function init() {
-
- var i: number, container: HTMLDivElement;
-
- container = document.createElement('div');
- document.body.appendChild(container);
-
- camera = new THREE.PerspectiveCamera(33, window.innerWidth / window.innerHeight, 1, 10000);
- camera.position.z = 700;
-
- scene = new THREE.Scene();
-
- renderer = new THREE.WebGLRenderer({ antialias: false });
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- renderer.autoClear = false;
-
- container.appendChild(renderer.domElement);
-
- var geometry = new THREE.Geometry(),
- geometry2 = new THREE.Geometry(),
- geometry3 = new THREE.Geometry(),
- points = hilbert3D(new THREE.Vector3(0, 0, 0), 200.0, 2, 0, 1, 2, 3, 4, 5, 6, 7),
- colors: THREE.Color[] = [],
- colors2: THREE.Color[] = [],
- colors3: THREE.Color[] = [];
-
- for (i = 0; i < points.length; i++) {
-
- geometry.vertices.push(points[i]);
-
- colors[i] = new THREE.Color(0xffffff);
- colors[i].setHSL(0.6, 1.0, Math.max(0, (200 - points[i].x) / 400) * 0.5 + 0.5);
-
- colors2[i] = new THREE.Color(0xffffff);
- colors2[i].setHSL(0.3, 1.0, Math.max(0, (200 + points[i].x) / 400) * 0.5);
-
- colors3[i] = new THREE.Color(0xffffff);
- colors3[i].setHSL(i / points.length, 1.0, 0.5);
-
- }
-
- geometry2.vertices = geometry3.vertices = geometry.vertices;
-
- geometry.colors = colors;
- geometry2.colors = colors2;
- geometry3.colors = colors3;
-
- // lines
-
- material = new THREE.LineBasicMaterial({ color: 0xffffff, opacity: 1, linewidth: 3, vertexColors: THREE.VertexColors });
-
- var line: THREE.Line, scale = 0.3, d = 225;
- var parameters : [THREE.LineBasicMaterial, number, [number, number, number], THREE.Geometry][] = [
- [material, scale * 1.5, [-d, 0, 0], geometry],
- [material, scale * 1.5, [0, 0, 0], geometry2],
- [material, scale * 1.5, [d, 0, 0], geometry3]
- ];
-
- for (const p of parameters) {
- line = new THREE.Line(p[3], p[0]);
- line.scale.x = line.scale.y = line.scale.z = p[1];
- line.position.x = p[2][0];
- line.position.y = p[2][1];
- line.position.z = p[2][2];
- scene.add(line);
- }
-
- //
-
- stats = new Stats();
- //container.appendChild( stats.domElement );
-
- //
-
- document.addEventListener('mousemove', onDocumentMouseMove, false);
- document.addEventListener('touchstart', onDocumentTouchStart, false);
- document.addEventListener('touchmove', onDocumentTouchMove, false);
-
- //
-
- var renderModel = new THREE.RenderPass(scene, camera);
- var effectBloom = new THREE.BloomPass(1.3);
- var effectCopy = new THREE.ShaderPass(THREE.CopyShader);
-
- effectFXAA = new THREE.ShaderPass(THREE.FXAAShader);
-
- var width = window.innerWidth || 2;
- var height = window.innerHeight || 2;
-
- effectFXAA.uniforms['resolution'].value.set(1 / width, 1 / height);
-
- effectCopy.renderToScreen = true;
-
- composer = new THREE.EffectComposer(renderer);
-
- composer.addPass(renderModel);
- composer.addPass(effectFXAA);
- composer.addPass(effectBloom);
- composer.addPass(effectCopy);
-
- //
-
- 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);
-
- effectFXAA.uniforms['resolution'].value.set(1 / window.innerWidth, 1 / window.innerHeight);
-
- composer.reset();
-
- }
-
- //
-
- function onDocumentMouseMove(event: MouseEvent) {
-
- mouseX = event.clientX - windowHalfX;
- mouseY = event.clientY - windowHalfY;
-
- }
-
- function onDocumentTouchStart(event: TouchEvent) {
-
- if (event.touches.length > 1) {
-
- event.preventDefault();
-
- mouseX = event.touches[0].pageX - windowHalfX;
- mouseY = event.touches[0].pageY - windowHalfY;
-
- }
-
- }
-
- function onDocumentTouchMove(event: TouchEvent) {
-
- 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() {
-
- camera.position.x += (mouseX - camera.position.x) * .05;
- camera.position.y += (- mouseY + 200 - camera.position.y) * .05;
-
- camera.lookAt(scene.position);
-
- var time = Date.now() * 0.0005;
-
- for (var i = 0; i < scene.children.length; i++) {
-
- var object = scene.children[i];
- if (object instanceof THREE.Line) object.rotation.y = time * (i % 2 ? 1 : -1);
-
- }
-
- renderer.clear();
- composer.render();
-
- }
-}
diff --git a/types/three/test/webgl/webgl_loader_awd.ts b/types/three/test/webgl/webgl_loader_awd.ts
deleted file mode 100644
index d1752056fa..0000000000
--- a/types/three/test/webgl/webgl_loader_awd.ts
+++ /dev/null
@@ -1,111 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_loader_awd.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
-
- // -------
-
- if (!Detector.webgl) Detector.addGetWebGLMessage();
-
- var container: HTMLDivElement, stats: Stats;
-
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer, controls: THREE.OrbitControls;
- var pointLight: THREE.PointLight;
- var trunk: THREE.Object3D;
-
- var loader = new THREE.AWDLoader();
-
- loader.materialFactory = createMaterial;
- loader.load('./models/awd/simple/simple.awd', function (_trunk: THREE.Object3D) {
-
- trunk = _trunk;
-
- init();
- render();
-
- });
-
-
- function createMaterial(name: string) {
- console.log( name );
- var mat = new THREE.MeshPhongMaterial({
- color: 0xaaaaaa,
- shininess: 20
- });
- return mat;
- }
-
-
- function init() {
-
- container = document.createElement('div');
- document.body.appendChild(container);
-
- camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 2000);
- camera.position.set(70, 50, -100);
-
- controls = new THREE.OrbitControls(camera);
-
- scene = new THREE.Scene();
-
-
- // Add the AWD SCENE
-
- scene.add(trunk);
-
-
- // Lights
-
- scene.add(new THREE.AmbientLight(0x606060));
-
- var directionalLight = new THREE.DirectionalLight(/*Math.random() * 0xffffff*/0xeeeeee);
- directionalLight.position.set(.2, -1, .2);
- directionalLight.position.normalize();
- scene.add(directionalLight);
-
- pointLight = new THREE.PointLight(0xffffff, .6);
- scene.add(pointLight);
-
- renderer = new THREE.WebGLRenderer();
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- container.appendChild(renderer.domElement);
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild(stats.dom);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
-
-
- function render() {
-
- requestAnimationFrame(render);
-
- var timer = Date.now() * 0.0005;
-
- pointLight.position.x = Math.sin(timer * 4) * 3000;
- pointLight.position.y = 600
- pointLight.position.z = Math.cos(timer * 4) * 3000;
-
- renderer.render(scene, camera);
-
- stats.update();
-
- }
-}
diff --git a/types/three/test/webgl/webgl_materials.ts b/types/three/test/webgl/webgl_materials.ts
deleted file mode 100644
index 68235c5e5c..0000000000
--- a/types/three/test/webgl/webgl_materials.ts
+++ /dev/null
@@ -1,240 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_materials.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
- // -------
-
- if (!Detector.webgl) Detector.addGetWebGLMessage();
-
- var container: HTMLDivElement, stats: Stats;
-
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer, objects: THREE.Mesh[];
- var particleLight: THREE.Mesh;
- var materials: (THREE.MeshBasicMaterial |
- THREE.MeshPhongMaterial |
- THREE.MeshNormalMaterial |
- THREE.MeshLambertMaterial |
- THREE.MeshFaceMaterial |
- THREE.MeshDepthMaterial)[] = [];
-
- init();
- animate();
-
- function init() {
-
- container = document.createElement('div');
- document.body.appendChild(container);
-
- camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 2000);
- camera.position.set(0, 200, 800);
-
- scene = new THREE.Scene();
-
- // Grid
-
- var line_material = new THREE.LineBasicMaterial({ color: 0x303030 }),
- geometry = new THREE.Geometry(),
- floor = -75, step = 25;
-
- for (var i = 0; i <= 40; i++) {
-
- geometry.vertices.push(new THREE.Vector3(- 500, floor, i * step - 500));
- geometry.vertices.push(new THREE.Vector3(500, floor, i * step - 500));
-
- geometry.vertices.push(new THREE.Vector3(i * step - 500, floor, -500));
- geometry.vertices.push(new THREE.Vector3(i * step - 500, floor, 500));
-
- }
-
- var line = new THREE.Line(geometry, line_material, THREE.LinePieces);
- scene.add(line);
-
- // Materials
-
- var texture = new THREE.Texture(generateTexture());
- texture.needsUpdate = true;
-
- materials.push(new THREE.MeshLambertMaterial({ map: texture, transparent: true }));
- materials.push(new THREE.MeshLambertMaterial({ color: 0xdddddd }));
- materials.push(new THREE.MeshPhongMaterial({ color: 0xdddddd, specular: 0x009900, shininess: 30, flatShading: true }));
- materials.push(new THREE.MeshNormalMaterial());
- materials.push(new THREE.MeshBasicMaterial({ color: 0xffaa00, transparent: true, blending: THREE.AdditiveBlending }));
- //materials.push( new THREE.MeshBasicMaterial( { color: 0xff0000, blending: THREE.SubtractiveBlending } ) );
-
- materials.push(new THREE.MeshLambertMaterial({ color: 0xdddddd }));
- materials.push(new THREE.MeshPhongMaterial({ color: 0xdddddd, specular: 0x009900, shininess: 30, flatShading: false, map: texture, transparent: true }));
- materials.push(new THREE.MeshNormalMaterial({}));
- materials.push(new THREE.MeshBasicMaterial({ color: 0xffaa00, wireframe: true }));
-
- materials.push(new THREE.MeshDepthMaterial());
-
- materials.push(new THREE.MeshLambertMaterial({ color: 0x666666, emissive: 0xff0000 }));
- materials.push(new THREE.MeshPhongMaterial({ color: 0x000000, specular: 0x666666, emissive: 0xff0000, shininess: 10, flatShading: false, opacity: 0.9, transparent: true }));
-
- materials.push(new THREE.MeshBasicMaterial({ map: texture, transparent: true }));
-
- // Spheres geometry
-
- var geometry_smooth = new THREE.SphereGeometry(70, 32, 16);
- var geometry_flat = new THREE.SphereGeometry(70, 32, 16);
- var geometry_pieces = new THREE.SphereGeometry(70, 32, 16); // Extra geometry to be broken down for MeshFaceMaterial
-
- for (var i = 0, l = geometry_pieces.faces.length; i < l; i++) {
-
- var face = geometry_pieces.faces[i];
- face.materialIndex = Math.floor(Math.random() * materials.length);
-
- }
-
- // isn't used.
- // geometry_pieces.materials = materials;
-
- materials.push(new THREE.MeshFaceMaterial(materials));
-
- objects = [];
-
- var sphere: THREE.Mesh, geometry: THREE.Geometry;
-
- for (var i = 0, l = materials.length; i < l; i++) {
-
- let material = materials[i];
-
- geometry = material instanceof THREE.MeshFaceMaterial ? geometry_pieces :
- (material.flatShading ? geometry_flat : geometry_smooth);
-
- sphere = new THREE.Mesh(geometry, material);
-
- sphere.position.x = (i % 4) * 200 - 400;
- sphere.position.z = Math.floor(i / 4) * 200 - 200;
-
- sphere.rotation.x = Math.random() * 200 - 100;
- sphere.rotation.y = Math.random() * 200 - 100;
- sphere.rotation.z = Math.random() * 200 - 100;
-
- objects.push(sphere);
-
- scene.add(sphere);
-
- }
-
- particleLight = new THREE.Mesh(new THREE.SphereGeometry(4, 8, 8), new THREE.MeshBasicMaterial({ color: 0xffffff }));
- scene.add(particleLight);
-
- // Lights
-
- scene.add(new THREE.AmbientLight(0x111111));
-
- var directionalLight = new THREE.DirectionalLight( /*Math.random() * */ 0xffffff, 0.125);
-
- directionalLight.position.x = Math.random() - 0.5;
- directionalLight.position.y = Math.random() - 0.5;
- directionalLight.position.z = Math.random() - 0.5;
-
- directionalLight.position.normalize();
-
- scene.add(directionalLight);
-
- var pointLight = new THREE.PointLight(0xffffff, 1);
- particleLight.add(pointLight);
-
- //
-
- renderer = new THREE.WebGLRenderer({ antialias: true });
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- container.appendChild(renderer.domElement);
-
- //
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
-
- container.appendChild(stats.dom);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- function generateTexture() {
-
- var canvas = document.createElement('canvas');
- canvas.width = 256;
- canvas.height = 256;
-
- var context = canvas.getContext('2d');
- var image = context.getImageData(0, 0, 256, 256);
-
- var x = 0, y = 0;
-
- for (var i = 0, j = 0, l = image.data.length; i < l;) {
-
- x = j % 256;
- y = x == 0 ? y + 1 : y;
-
- image.data[i] = 255;
- image.data[i + 1] = 255;
- image.data[i + 2] = 255;
- image.data[i + 3] = Math.floor(x ^ y);
- i += 4;
- j++;
-
- }
-
- context.putImageData(image, 0, 0);
-
- return canvas;
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- render();
- stats.update();
-
- }
-
- function render() {
-
- var timer = 0.0001 * Date.now();
-
- camera.position.x = Math.cos(timer) * 1000;
- camera.position.z = Math.sin(timer) * 1000;
-
- camera.lookAt(scene.position);
-
- for (var i = 0, l = objects.length; i < l; i++) {
-
- var object = objects[i];
-
- object.rotation.x += 0.01;
- object.rotation.y += 0.005;
-
- }
-
- (materials[materials.length - 3] as THREE.MeshPhongMaterial).emissive.setHSL(0.54, 1, 0.35 * (0.5 + 0.5 * Math.sin(35 * timer)));
- (materials[materials.length - 4] as THREE.MeshLambertMaterial).emissive.setHSL(0.04, 1, 0.35 * (0.5 + 0.5 * Math.cos(35 * timer)));
-
- particleLight.position.x = Math.sin(timer * 7) * 300;
- particleLight.position.y = Math.cos(timer * 5) * 400;
- particleLight.position.z = Math.cos(timer * 3) * 300;
-
- renderer.render(scene, camera);
-
- }
-}
diff --git a/types/three/test/webgl/webgl_morphtargets.ts b/types/three/test/webgl/webgl_morphtargets.ts
deleted file mode 100644
index 4dda732da7..0000000000
--- a/types/three/test/webgl/webgl_morphtargets.ts
+++ /dev/null
@@ -1,126 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_morphtargets.html
-
-() => {
- if (!Detector.webgl) Detector.addGetWebGLMessage();
-
- var container: HTMLDivElement;
-
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer;
-
- var mouseX = 0, mouseY = 0;
-
- var mesh: THREE.Mesh;
- var windowHalfX = window.innerWidth / 2;
- var windowHalfY = window.innerHeight / 2;
-
- document.addEventListener('mousemove', onDocumentMouseMove, false);
-
- init();
- animate();
-
- function init() {
-
- container = document.createElement('div');
- document.body.appendChild(container);
-
- camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 15000);
- camera.position.z = 500;
-
- scene = new THREE.Scene();
- scene.fog = new THREE.Fog(0x000000, 1, 15000);
-
- var light = new THREE.PointLight(0xff2200);
- light.position.set(100, 100, 100);
- scene.add(light);
-
- var amblight = new THREE.AmbientLight(0x111111);
- scene.add(amblight);
-
-
- var geometry = new THREE.BoxGeometry(100, 100, 100);
- var material = new THREE.MeshLambertMaterial({ color: 0xffffff, morphTargets: true });
-
- // construct 8 blend shapes
-
- for (var i = 0; i < geometry.vertices.length; i++) {
-
- var vertices: THREE.Vector3[] = [];
-
- for (var v = 0; v < geometry.vertices.length; v++) {
-
- vertices.push(geometry.vertices[v].clone());
-
- if (v === i) {
-
- vertices[vertices.length - 1].x *= 2;
- vertices[vertices.length - 1].y *= 2;
- vertices[vertices.length - 1].z *= 2;
-
- }
-
- }
-
- geometry.morphTargets.push({ name: "target" + i, vertices: vertices });
-
- }
-
- mesh = new THREE.Mesh(geometry, material);
-
- scene.add(mesh);
-
- //
-
- renderer = new THREE.WebGLRenderer();
- renderer.setClearColor(0x222222);
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- renderer.sortObjects = false;
- container.appendChild(renderer.domElement);
-
- //
-
- 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: MouseEvent) {
-
- mouseX = (event.clientX - windowHalfX);
- mouseY = (event.clientY - windowHalfY) * 2;
-
- }
-
- function animate() {
-
- requestAnimationFrame(animate);
- render();
-
- }
-
- function render() {
-
- mesh.rotation.y += 0.01;
-
- //mesh.morphTargetInfluences[ 0 ] = Math.sin( mesh.rotation.y ) * 0.5 + 0.5;
-
- //camera.position.x += ( mouseX - camera.position.x ) * .005;
- camera.position.y += (- mouseY - camera.position.y) * .01;
-
- camera.lookAt(scene.position);
-
- renderer.render(scene, camera);
-
- }
-}
\ No newline at end of file
diff --git a/types/three/test/webgl/webgl_points_billboards.ts b/types/three/test/webgl/webgl_points_billboards.ts
deleted file mode 100644
index 06fefa6744..0000000000
--- a/types/three/test/webgl/webgl_points_billboards.ts
+++ /dev/null
@@ -1,153 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_particles_billboards.html
-
-() => {
- if ( ! Detector.webgl ) Detector.addGetWebGLMessage();
-
- var container: HTMLDivElement, stats: Stats;
- var camera: THREE.PerspectiveCamera,
- scene: THREE.Scene,
- renderer: THREE.WebGLRenderer,
- particles: THREE.Points,
- geometry: THREE.Geometry,
- material: THREE.PointsMaterial,
- i: number,
- h: number,
- color: THREE.Color,
- sprite: THREE.Texture;
- 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.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild( stats.dom );
-
- //
-
- 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: MouseEvent ) {
-
- mouseX = event.clientX - windowHalfX;
- mouseY = event.clientY - windowHalfY;
-
- }
-
- function onDocumentTouchStart( event: TouchEvent ) {
-
- if ( event.touches.length == 1 ) {
-
- event.preventDefault();
-
- mouseX = event.touches[ 0 ].pageX - windowHalfX;
- mouseY = event.touches[ 0 ].pageY - windowHalfY;
-
- }
- }
-
- function onDocumentTouchMove( event: TouchEvent ) {
-
- 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/types/three/test/webgl/webgl_postprocessing.ts b/types/three/test/webgl/webgl_postprocessing.ts
deleted file mode 100644
index dff5ec5592..0000000000
--- a/types/three/test/webgl/webgl_postprocessing.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_postprocessing.html
-
-() => {
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer, composer: THREE.EffectComposer;
- var object: THREE.Object3D, light: THREE.DirectionalLight;
-
- init();
- animate();
-
- function init() {
-
- renderer = new THREE.WebGLRenderer();
- renderer.setPixelRatio(window.devicePixelRatio);
- renderer.setSize(window.innerWidth, window.innerHeight);
- document.body.appendChild(renderer.domElement);
-
- //
-
- camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 1000);
- camera.position.z = 400;
-
- scene = new THREE.Scene();
- scene.fog = new THREE.Fog(0x000000, 1, 1000);
-
- object = new THREE.Object3D();
- scene.add(object);
-
- var geometry = new THREE.SphereGeometry(1, 4, 4);
- var material = new THREE.MeshPhongMaterial({ color: 0xffffff, flatShading: true });
-
- for (var i = 0; i < 100; i++) {
-
- var mesh = new THREE.Mesh(geometry, material);
- mesh.position.set(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5).normalize();
- mesh.position.multiplyScalar(Math.random() * 400);
- mesh.rotation.set(Math.random() * 2, Math.random() * 2, Math.random() * 2);
- mesh.scale.x = mesh.scale.y = mesh.scale.z = Math.random() * 50;
- object.add(mesh);
-
- }
-
- scene.add(new THREE.AmbientLight(0x222222));
-
- light = new THREE.DirectionalLight(0xffffff);
- light.position.set(1, 1, 1);
- scene.add(light);
-
- // postprocessing
-
- composer = new THREE.EffectComposer(renderer);
- composer.addPass(new THREE.RenderPass(scene, camera));
-
- var effect = new THREE.ShaderPass(THREE.DotScreenShader);
- effect.uniforms['scale'].value = 4;
- composer.addPass(effect);
-
- var effect = new THREE.ShaderPass(THREE.RGBShiftShader);
- effect.uniforms['amount'].value = 0.0015;
- effect.renderToScreen = true;
- composer.addPass(effect);
-
- //
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- camera.aspect = window.innerWidth / window.innerHeight;
- camera.updateProjectionMatrix();
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- }
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- object.rotation.x += 0.005;
- object.rotation.y += 0.01;
-
- composer.render();
-
- }
-}
diff --git a/types/three/test/webgl/webgl_shader.ts b/types/three/test/webgl/webgl_shader.ts
deleted file mode 100644
index 4a954d36ac..0000000000
--- a/types/three/test/webgl/webgl_shader.ts
+++ /dev/null
@@ -1,84 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_shader.html
-
-() => {
- if (!Detector.webgl) Detector.addGetWebGLMessage();
-
- var container: HTMLElement, stats: Stats;
-
- var camera: THREE.Camera, scene: THREE.Scene, renderer: THREE.WebGLRenderer;
-
- var uniforms: { time: { type: string; value: number; }; resolution: { type: string; value: THREE.Vector2; }; };
-
- init();
- animate();
-
- function init() {
-
- container = document.getElementById('container');
-
- camera = new THREE.Camera();
- camera.position.z = 1;
-
- scene = new THREE.Scene();
-
- var geometry = new THREE.PlaneBufferGeometry(2, 2);
-
- uniforms = {
- time: { type: "f", value: 1.0 },
- resolution: { type: "v2", value: new THREE.Vector2() }
- };
-
- var material = new THREE.ShaderMaterial({
-
- uniforms: uniforms,
- vertexShader: document.getElementById('vertexShader').textContent,
- fragmentShader: document.getElementById('fragmentShader').textContent
-
- });
-
- var mesh = new THREE.Mesh(geometry, material);
- scene.add(mesh);
-
- renderer = new THREE.WebGLRenderer();
- renderer.setPixelRatio(window.devicePixelRatio);
- container.appendChild(renderer.domElement);
-
- stats = new Stats();
- stats.dom.style.position = 'absolute';
- stats.dom.style.top = '0px';
- container.appendChild(stats.dom);
-
- onWindowResize();
-
- window.addEventListener('resize', onWindowResize, false);
-
- }
-
- function onWindowResize() {
-
- renderer.setSize(window.innerWidth, window.innerHeight);
-
- uniforms.resolution.value.x = renderer.domElement.width;
- uniforms.resolution.value.y = renderer.domElement.height;
-
- }
-
- //
-
- function animate() {
-
- requestAnimationFrame(animate);
-
- render();
- stats.update();
-
- }
-
- function render() {
-
- uniforms.time.value += 0.05;
-
- renderer.render(scene, camera);
-
- }
-}
\ No newline at end of file
diff --git a/types/three/test/webgl/webgl_sprites.ts b/types/three/test/webgl/webgl_sprites.ts
deleted file mode 100644
index 30ad890a65..0000000000
--- a/types/three/test/webgl/webgl_sprites.ts
+++ /dev/null
@@ -1,213 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/webgl_sprites.html
-
-() => {
- // ------- variable definitions that does not exist in the original code. These are for typescript.
- var material: THREE.SpriteMaterial;
- // -------
-
- var camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer;
- var cameraOrtho: THREE.OrthographicCamera, sceneOrtho: THREE.Scene;
-
- var spriteTL: THREE.Sprite, spriteTR: THREE.Sprite, spriteBL: THREE.Sprite, spriteBR: THREE.Sprite, spriteC: THREE.Sprite;
-
- var mapC: THREE.Texture;
-
- var group: THREE.Group;
-
- init();
- animate();
-
- function init() {
-
- var width = window.innerWidth;
- var height = window.innerHeight;
-
- 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.position.z = 10;
-
- scene = new THREE.Scene();
- scene.fog = new THREE.Fog( 0x000000, 1500, 2100 );
-
- sceneOrtho = new THREE.Scene();
-
- // create sprites
-
- 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" );
-
- 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 } );
-
- 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 ) {
-
- 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 );
-
- }
-
- var sprite = new THREE.Sprite( material );
-
- sprite.position.set( x, y, z );
- sprite.position.normalize();
- sprite.position.multiplyScalar( radius );
-
- group.add( sprite );
-
- }
-
- scene.add( group );
-
- // renderer
-
- renderer = new THREE.WebGLRenderer();
- 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 );
-
- //
-
- window.addEventListener( 'resize', onWindowResize, false );
-
- }
-
- function createHUDSprites ( texture: THREE.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 );
-
- 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 );
-
- 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 );
-
- updateHUDSprites();
-
- }
-
- function updateHUDSprites () {
-
- var width = window.innerWidth / 2;
- var height = window.innerHeight / 2;
-
- var material = spriteTL.material as THREE.SpriteMaterial;
-
- 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
-
- }
-
- function onWindowResize() {
-
- var width = window.innerWidth;
- var height = window.innerHeight;
-
- camera.aspect = width / height;
- camera.updateProjectionMatrix();
-
- cameraOrtho.left = - width / 2;
- cameraOrtho.right = width / 2;
- cameraOrtho.top = height / 2;
- cameraOrtho.bottom = - height / 2;
- cameraOrtho.updateProjectionMatrix();
-
- updateHUDSprites();
-
- renderer.setSize( window.innerWidth, window.innerHeight );
-
- }
-
- function animate() {
-
- requestAnimationFrame( animate );
- render();
-
- }
-
- function render() {
-
- var time = Date.now() / 1000;
-
- for ( var i = 0, l = group.children.length; i < l; i ++ ) {
-
- var sprite = group.children[ i ] as THREE.Sprite;
- var material = sprite.material as THREE.SpriteMaterial;
- 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 ) {
-
- imageWidth = material.map.image.width;
- imageHeight = material.map.image.height;
-
- }
-
- material.rotation += 0.1 * ( i / l );
- sprite.scale.set( scale * imageWidth, scale * imageHeight, 1.0 );
-
- if ( material.map !== mapC ) {
-
- material.opacity = Math.sin( time + sprite.position.x * 0.01 ) * 0.4 + 0.6;
-
- }
-
- }
-
- group.rotation.x = time * 0.5;
- group.rotation.y = time * 0.75;
- group.rotation.z = time * 1.0;
-
- renderer.clear();
- renderer.render( scene, camera );
- renderer.clearDepth();
- renderer.render( sceneOrtho, cameraOrtho );
-
- }
-}
diff --git a/types/three/test/webvr/webvr.ts b/types/three/test/webvr/webvr.ts
deleted file mode 100644
index dfc8576f59..0000000000
--- a/types/three/test/webvr/webvr.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-// WebVRManager support
-
-() => {
- const renderer = new THREE.WebGLRenderer();
- renderer.vr.enabled = true;
- const camera = new THREE.PerspectiveCamera();
- const vrCamera = renderer.vr.getCamera(camera);
- const display: VRDisplay = renderer.vr.getDevice();
- renderer.vr.setDevice(display);
- const obj = new THREE.Object3D();
- renderer.vr.setPoseTarget(obj);
- renderer.vr.dispose();
-
- const scene = new THREE.Scene();
- const render = function() {
- renderer.render(scene, camera);
- }
- renderer.animate(render);
-}
diff --git a/types/three/three-FirstPersonControls.d.ts b/types/three/three-FirstPersonControls.d.ts
deleted file mode 100644
index d662a063d0..0000000000
--- a/types/three/three-FirstPersonControls.d.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { Camera, Object3D, Vector3 } from "./three-core";
-
-export class FirstPersonControls {
- constructor(object: Camera, domElement?: HTMLElement);
-
- object: Object3D;
- target: Vector3;
- domElement: HTMLCanvasElement | HTMLDocument;
- enabled: boolean;
- movementSpeed: number;
- lookSpeed: number;
- noFly: boolean;
- lookVertical: boolean;
- autoForward: boolean;
- activeLook: boolean;
- heightSpeed: boolean;
- heightCoef: number;
- heightMin: number;
- heightMax: number;
- constrainVertical: boolean;
- verticalMin: number;
- verticalMax: number;
- autoSpeedFactor: number;
- mouseX: number;
- mouseY: number;
- lat: number;
- lon: number;
- phi: number;
- theta: number;
- moveForward: boolean;
- moveBackward: boolean;
- moveLeft: boolean;
- moveRight: boolean;
- freeze: boolean;
- mouseDragOn: boolean;
-
- update(delta: number): void;
-
- dispose(): void;
-}
diff --git a/types/three/three-canvasrenderer.d.ts b/types/three/three-canvasrenderer.d.ts
deleted file mode 100644
index cace13dd34..0000000000
--- a/types/three/three-canvasrenderer.d.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-import {
- Camera,
- Color,
- Material,
- MaterialParameters,
- Renderer,
- Scene
-} from "./three-core";
-
-export interface SpriteCanvasMaterialParameters extends MaterialParameters {
- color?: number;
- program?: (context: CanvasRenderingContext2D, color: Color) => void;
-}
-
-export class SpriteCanvasMaterial extends Material {
- constructor(parameters?: SpriteCanvasMaterialParameters);
-
- color: Color;
-
- program(context: CanvasRenderingContext2D, color: Color): void;
-}
-
-export interface CanvasRendererParameters {
- canvas?: HTMLCanvasElement;
- devicePixelRatio?: number;
- alpha?: boolean;
-}
-
-export class CanvasRenderer implements Renderer {
- constructor(parameters?: CanvasRendererParameters);
-
- domElement: HTMLCanvasElement;
- autoClear: boolean;
- sortObjects: boolean;
- sortElements: boolean;
- info: {render: {vertices: number; faces: number;};};
-
- supportsVertexTextures(): void;
-
- setFaceCulling(): void;
-
- getPixelRatio(): number;
-
- setPixelRatio(value: number): void;
-
- setSize(width: number, height: number, updateStyle?: boolean): void;
-
- setViewport(x: number, y: number, width: number, height: number): void;
-
- setScissor(): void;
-
- enableScissorTest(): void;
-
- setClearColor(color: Color | string | number, opacity?: number): void;
-
- // setClearColor(color: string, opacity?: number): void;
- // setClearColor(color: number, opacity?: number): void;
-
- setClearColorHex(hex: number, alpha?: number): void;
-
- getClearColor(): Color;
-
- getClearAlpha(): number;
-
- getMaxAnisotropy(): number;
-
- clear(): void;
-
- clearColor(): void;
-
- clearDepth(): void;
-
- clearStencil(): void;
-
- render(scene: Scene, camera: Camera): void;
-}
diff --git a/types/three/three-colladaLoader.d.ts b/types/three/three-colladaLoader.d.ts
deleted file mode 100644
index a614d6c580..0000000000
--- a/types/three/three-colladaLoader.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import {
- Scene
-} from "./three-core";
-
-export interface ColladaLoaderReturnType {
-}
-
-export class ColladaModel {
- animations: any[];
- kinematics: any;
- scene: Scene;
- library: any;
-}
-export class ColladaLoader {
- constructor();
-
- load(url: string, onLoad: (model: ColladaModel) => void, onProgress?: (request: ProgressEvent) => void, onError?:(event: ErrorEvent) => void): void;
- setCrossOrigin(value: any): void;
- parse(text: string): ColladaModel;
-}
\ No newline at end of file
diff --git a/types/three/three-copyshader.d.ts b/types/three/three-copyshader.d.ts
deleted file mode 100644
index 3ee7e82d7e..0000000000
--- a/types/three/three-copyshader.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import { Shader } from "./three-core";
-export var CopyShader: Shader;
diff --git a/types/three/three-core.d.ts b/types/three/three-core.d.ts
deleted file mode 100755
index d018d3241d..0000000000
--- a/types/three/three-core.d.ts
+++ /dev/null
@@ -1,7823 +0,0 @@
-export const REVISION: string;
-
-// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.button
-export enum MOUSE { LEFT, MIDDLE, RIGHT }
-
-// GL STATE CONSTANTS
-export enum CullFace { }
-export const CullFaceNone: CullFace;
-export const CullFaceBack: CullFace;
-export const CullFaceFront: CullFace;
-export const CullFaceFrontBack: CullFace;
-
-export enum FrontFaceDirection { }
-export const FrontFaceDirectionCW: FrontFaceDirection;
-export const FrontFaceDirectionCCW: FrontFaceDirection;
-
-// Shadowing Type
-export enum ShadowMapType { }
-export const BasicShadowMap: ShadowMapType;
-export const PCFShadowMap: ShadowMapType;
-export const PCFSoftShadowMap: ShadowMapType;
-
-// MATERIAL CONSTANTS
-
-// side
-export enum Side { }
-export const FrontSide: Side;
-export const BackSide: Side;
-export const DoubleSide: Side;
-
-// shading
-export enum Shading { }
-export const FlatShading: Shading;
-export const SmoothShading: Shading;
-
-// colors
-export enum Colors { }
-export const NoColors: Colors;
-export const FaceColors: Colors;
-export const VertexColors: Colors;
-
-// blending modes
-export enum Blending { }
-export const NoBlending: Blending;
-export const NormalBlending: Blending;
-export const AdditiveBlending: Blending;
-export const SubtractiveBlending: Blending;
-export const MultiplyBlending: Blending;
-export const CustomBlending: Blending;
-
-// custom blending equations
-// (numbers start from 100 not to clash with other
-// mappings to OpenGL constants defined in Texture.js)
-export enum BlendingEquation { }
-export const AddEquation: BlendingEquation;
-export const SubtractEquation: BlendingEquation;
-export const ReverseSubtractEquation: BlendingEquation;
-export const MinEquation: BlendingEquation;
-export const MaxEquation: BlendingEquation;
-
-// custom blending destination factors
-export enum BlendingDstFactor { }
-export const ZeroFactor: BlendingDstFactor;
-export const OneFactor: BlendingDstFactor;
-export const SrcColorFactor: BlendingDstFactor;
-export const OneMinusSrcColorFactor: BlendingDstFactor;
-export const SrcAlphaFactor: BlendingDstFactor;
-export const OneMinusSrcAlphaFactor: BlendingDstFactor;
-export const DstAlphaFactor: BlendingDstFactor;
-export const OneMinusDstAlphaFactor: BlendingDstFactor;
-export const DstColorFactor: BlendingDstFactor;
-export const OneMinusDstColorFactor: BlendingDstFactor;
-
-// custom blending src factors
-export enum BlendingSrcFactor { }
-export const SrcAlphaSaturateFactor: BlendingSrcFactor;
-
-// depth modes
-export enum DepthModes { }
-export const NeverDepth: DepthModes;
-export const AlwaysDepth: DepthModes;
-export const LessDepth: DepthModes;
-export const LessEqualDepth: DepthModes;
-export const EqualDepth: DepthModes;
-export const GreaterEqualDepth: DepthModes;
-export const GreaterDepth: DepthModes;
-export const NotEqualDepth: DepthModes;
-
-// TEXTURE CONSTANTS
-// Operations
-export enum Combine { }
-export const MultiplyOperation: Combine;
-export const MixOperation: Combine;
-export const AddOperation: Combine;
-
-// Tone Mapping modes
-export enum ToneMapping { }
-export const NoToneMapping: ToneMapping;
-export const LinearToneMapping: ToneMapping;
-export const ReinhardToneMapping: ToneMapping;
-export const Uncharted2ToneMapping: ToneMapping;
-export const CineonToneMapping: ToneMapping;
-
-// Mapping modes
-export enum Mapping { }
-export const UVMapping: Mapping;
-export const CubeReflectionMapping: Mapping;
-export const CubeRefractionMapping: Mapping;
-export const EquirectangularReflectionMapping: Mapping;
-export const EquirectangularRefractionMapping: Mapping;
-export const SphericalReflectionMapping: Mapping;
-export const CubeUVReflectionMapping: Mapping;
-export const CubeUVRefractionMapping: Mapping;
-
-// Wrapping modes
-export enum Wrapping { }
-export const RepeatWrapping: Wrapping;
-export const ClampToEdgeWrapping: Wrapping;
-export const MirroredRepeatWrapping: Wrapping;
-
-// Filters
-export enum TextureFilter { }
-export const NearestFilter: TextureFilter;
-export const NearestMipMapNearestFilter: TextureFilter;
-export const NearestMipMapLinearFilter: TextureFilter;
-export const LinearFilter: TextureFilter;
-export const LinearMipMapNearestFilter: TextureFilter;
-export const LinearMipMapLinearFilter: TextureFilter;
-
-// Data types
-export enum TextureDataType { }
-export const UnsignedByteType: TextureDataType;
-export const ByteType: TextureDataType;
-export const ShortType: TextureDataType;
-export const UnsignedShortType: TextureDataType;
-export const IntType: TextureDataType;
-export const UnsignedIntType: TextureDataType;
-export const FloatType: TextureDataType;
-export const HalfFloatType: TextureDataType;
-
-// Pixel types
-export enum PixelType { }
-export const UnsignedShort4444Type: PixelType;
-export const UnsignedShort5551Type: PixelType;
-export const UnsignedShort565Type: PixelType;
-export const UnsignedInt248Type: PixelType;
-
-// Pixel formats
-export enum PixelFormat { }
-export const AlphaFormat: PixelFormat;
-export const RGBFormat: PixelFormat;
-export const RGBAFormat: PixelFormat;
-export const LuminanceFormat: PixelFormat;
-export const LuminanceAlphaFormat: PixelFormat;
-export const RGBEFormat: PixelFormat;
-export const DepthFormat: PixelFormat;
-export const DepthStencilFormat: PixelFormat;
-
-// Compressed texture formats
-// DDS / ST3C Compressed texture formats
-export enum CompressedPixelFormat { }
-export const RGB_S3TC_DXT1_Format: CompressedPixelFormat;
-export const RGBA_S3TC_DXT1_Format: CompressedPixelFormat;
-export const RGBA_S3TC_DXT3_Format: CompressedPixelFormat;
-export const RGBA_S3TC_DXT5_Format: CompressedPixelFormat;
-
-// PVRTC compressed texture formats
-export const RGB_PVRTC_4BPPV1_Format: CompressedPixelFormat;
-export const RGB_PVRTC_2BPPV1_Format: CompressedPixelFormat;
-export const RGBA_PVRTC_4BPPV1_Format: CompressedPixelFormat;
-export const RGBA_PVRTC_2BPPV1_Format: CompressedPixelFormat;
-
-// ETC compressed texture formats
-export const RGB_ETC1_Format: CompressedPixelFormat;
-
-// Loop styles for AnimationAction
-export enum AnimationActionLoopStyles { }
-export const LoopOnce: AnimationActionLoopStyles;
-export const LoopRepeat: AnimationActionLoopStyles;
-export const LoopPingPong: AnimationActionLoopStyles;
-
-// Interpolation
-export enum InterpolationModes { }
-export const InterpolateDiscrete: InterpolationModes;
-export const InterpolateLinear: InterpolationModes;
-export const InterpolateSmooth: InterpolationModes;
-
-// Interpolant ending modes
-export enum InterpolationEndingModes { }
-export const ZeroCurvatureEnding: InterpolationEndingModes;
-export const ZeroSlopeEnding: InterpolationEndingModes;
-export const WrapAroundEnding: InterpolationEndingModes;
-
-// Triangle Draw modes
-export enum TrianglesDrawModes { }
-export const TrianglesDrawMode: TrianglesDrawModes;
-export const TriangleStripDrawMode: TrianglesDrawModes;
-export const TriangleFanDrawMode: TrianglesDrawModes;
-
-// Texture Encodings
-export enum TextureEncoding { }
-export const LinearEncoding: TextureEncoding;
-export const sRGBEncoding: TextureEncoding;
-export const GammaEncoding: TextureEncoding;
-export const RGBEEncoding: TextureEncoding;
-export const LogLuvEncoding: TextureEncoding;
-export const RGBM7Encoding: TextureEncoding;
-export const RGBM16Encoding: TextureEncoding;
-export const RGBDEncoding: TextureEncoding;
-
-// Depth packing strategies
-export enum DepthPackingStrategies { }
-export const BasicDepthPacking: DepthPackingStrategies;
-export const RGBADepthPacking: DepthPackingStrategies;
-
-// 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;
-
-// typed array parameters
-type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array;
-
-// Animation ////////////////////////////////////////////////////////////////////////////////////////
-
-export class AnimationAction {
- loop: AnimationActionLoopStyles;
- time: number;
- timeScale: number;
- weight: number;
- repetitions: number;
- paused: boolean;
- enabled: boolean;
- clampWhenFinished: boolean;
- zeroSlopeAtStart: boolean;
- zeroSlopeAtEnd: boolean;
-
- play(): AnimationAction;
- stop(): AnimationAction;
- reset(): AnimationAction;
- isRunning(): boolean;
- isScheduled(): boolean;
- startAt(time: number): AnimationAction;
- setLoop(mode: AnimationActionLoopStyles, repetitions: number): AnimationAction;
- setEffectiveWeight(weight: number): AnimationAction;
- getEffectiveWeight(): number;
- fadeIn(duration: number): AnimationAction;
- fadeOut(duration: number): AnimationAction;
- crossFadeFrom(fadeOutAction: AnimationAction, duration: number, warp: boolean): AnimationAction;
- crossFadeTo(fadeInAction: AnimationAction, duration: number, warp: boolean): AnimationAction;
- stopFading(): AnimationAction;
- setEffectiveTimeScale(timeScale: number): AnimationAction;
- getEffectiveTimeScale(): number;
- setDuration(duration: number): AnimationAction;
- syncWith(action: AnimationAction): AnimationAction;
- halt(duration: number): AnimationAction;
- warp(statTimeScale: number, endTimeScale: number, duration: number): AnimationAction;
- stopWarping(): AnimationAction;
- getMixer(): AnimationMixer;
- getClip(): AnimationClip;
- getRoot(): any;
-}
-
-export class AnimationClip {
- constructor( name?: string, duration?: number, tracks?: KeyframeTrack[] );
-
- name: string;
- tracks: KeyframeTrack[];
- duration: number;
- uuid: string;
- results: any[];
-
- resetDuration(): void;
- trim(): AnimationClip;
- optimize(): AnimationClip;
-
- static CreateFromMorphTargetSequence( name: string, morphTargetSequence: MorphTarget[], fps: number, noLoop: boolean ): AnimationClip;
- static findByName( clipArray: AnimationClip[], name: string ): AnimationClip;
- static CreateClipsFromMorphTargetSequences( morphTargets: MorphTarget[], fps: number, noLoop: boolean ): AnimationClip[];
- static parse( json: any ): AnimationClip;
- static parseAnimation( animation: any, bones: Bone[], nodeName: string ): AnimationClip;
- static toJSON(): any;
-}
-
-export class AnimationMixer extends EventDispatcher {
- constructor(root: any);
-
- time: number;
- timeScale: number;
-
- clipAction(clip: AnimationClip, root?: any): AnimationAction;
- existingAction(clip: AnimationClip, root?: any): AnimationAction;
- stopAllAction(): AnimationMixer;
- update(deltaTime: number): AnimationMixer;
- getRoot(): any;
- uncacheClip(clip: AnimationClip): void;
- uncacheRoot(root: any): void;
- uncacheAction(clip: AnimationClip, root?: any): void;
-}
-
-export class AnimationObjectGroup {
- constructor(...args: any[]);
-
- uuid: string;
- stats: {
- bindingsPerObject: number;
- objects: {
- total: number;
- inUse: number;
- }
- };
-
- add(...args: any[]): void;
- remove(...args: any[]): void;
- uncache(...args: any[]): void;
-}
-
-export namespace AnimationUtils {
- export function arraySlice(array: any, from: number, to: number): any;
- export function convertArray(array: any, type: any, forceClone: boolean): any;
- export function isTypedArray(object: any): boolean;
- export function getKeyFrameOrder(times: number): number[];
- export function sortedArray(values: any[], stride: number, order: number[]): any[];
- export function flattenJSON(jsonKeys: string[], times: any[], values: any[], valuePropertyName: string): void;
-}
-
-export class KeyframeTrack {
- constructor(name: string, times: any[], values: any[], interpolation?: InterpolationModes);
-
- name: string;
- times: any[];
- values: any[];
-
- ValueTypeName: string;
- TimeBufferType: Float32Array;
- ValueBufferType: Float32Array;
-
- DefaultInterpolation: InterpolationModes;
-
- InterpolantFactoryMethodDiscrete(result: any): DiscreteInterpolant;
- InterpolantFactoryMethodLinear(result: any): LinearInterpolant;
- InterpolantFactoryMethodSmooth(result: any): CubicInterpolant;
-
- setInterpolation(interpolation: InterpolationModes): void;
- getInterpolation(): InterpolationModes;
-
- getValuesize(): number;
-
- shift( timeOffset: number ): KeyframeTrack;
- scale( timeScale: number ): KeyframeTrack;
- trim( startTime: number, endTime: number ): KeyframeTrack;
- validate(): boolean;
- optimize(): KeyframeTrack;
-
- static parse(json: any): KeyframeTrack;
- static toJSON(track: KeyframeTrack): any;
-}
-
-export class PropertyBinding {
- constructor(rootNode: any, path: string, parsedPath?: any);
-
- path: string;
- parsedPath: any;
- node: any;
- rootNode: any;
-
- getValue(targetArray: any, offset: number): any;
- setValue(sourceArray: any, offset: number): void;
- bind(): void;
- unbind(): void;
-
- BindingType: { [bindingType: string]: number };
- Versioning: { [versioning: string]: number };
-
- GetterByBindingType: Function[];
- SetterByBindingTypeAndVersioning: Array;
-
- static create(root: any, path: any, parsedPath?: any): PropertyBinding|PropertyBinding.Composite;
- static parseTrackName(trackName: string): any;
- static findNode(root: any, nodeName: string): any;
-}
-
-export namespace PropertyBinding {
- export class Composite {
- constructor(targetGroup: any, path: any, parsedPath?: any);
-
- getValue(array: any, offset: number): any;
- setValue(array: any, offset: number): void;
- bind(): void;
- unbind(): void;
- }
-}
-
-export class PropertyMixer {
- constructor(binding: any, typeName: string, valueSize: number);
-
- binding: any;
- valueSize: number;
- buffer: any;
- cumulativeWeight: number;
- useCount: number;
- referenceCount: number;
-
- accumulate(accuIndex: number, weight: number): void;
- apply(accuIndex: number): void;
- saveOriginalState(): void;
- restoreOriginalState(): void;
-}
-
-export class BooleanKeyframeTrack extends KeyframeTrack {
- constructor(name: string, times: any[], values: any[]);
-}
-
-export class ColorKeyframeTrack extends KeyframeTrack {
- constructor(name: string, times: any[], values: any[], interpolation?: InterpolationModes);
-}
-
-export class NumberKeyframeTrack extends KeyframeTrack {
- constructor(name: string, times: any[], values: any[], interpolation?: InterpolationModes);
-}
-
-export class QuaternionKeyframeTrack extends KeyframeTrack {
- constructor(name: string, times: any[], values: any[], interpolation?: InterpolationModes);
-}
-
-export class StringKeyframeTrack extends KeyframeTrack {
- constructor(name: string, times: any[], values: any[], interpolation?: InterpolationModes);
-}
-
-export class VectorKeyframeTrack extends KeyframeTrack {
- constructor(name: string, times: any[], values: any[], interpolation?: InterpolationModes);
-}
-
-// Cameras ////////////////////////////////////////////////////////////////////////////////////////
-
-/**
- * Abstract base class for cameras. This class should always be inherited when you build a new camera.
- */
-export class Camera extends Object3D {
- /**
- * This constructor sets following properties to the correct type: matrixWorldInverse, projectionMatrix and projectionMatrixInverse.
- */
- constructor();
-
- /**
- * This is the inverse of matrixWorld. MatrixWorld contains the Matrix which has the world transform of the Camera.
- */
- matrixWorldInverse: Matrix4;
-
- /**
- * This is the matrix which contains the projection.
- */
- projectionMatrix: Matrix4;
-
- isCamera: true;
-
- copy(source: Camera, recursive?: boolean): this;
-
- getWorldDirection(target: Vector3): Vector3;
-
- updateMatrixWorld(force: boolean): void;
-
-}
-
-export class CubeCamera extends Object3D {
- constructor(near?: number, far?: number, cubeResolution?: number);
-
- type: "CubeCamera";
-
- renderTarget: WebGLRenderTargetCube;
-
- /**
- * @deprecated Use {@link CubeCamera#update .update()} instead
- */
- updateCubeMap(renderer: Renderer, scene: Scene): void;
-
- update(renderer: WebGLRenderer, scene: Scene): void;
-}
-
-/**
- * Camera with orthographic projection
- *
- * @example
- * var camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 );
- * scene.add( camera );
- *
- * @see src/cameras/OrthographicCamera.js
- */
-export class OrthographicCamera extends Camera {
- /**
- * @param left Camera frustum left plane.
- * @param right Camera frustum right plane.
- * @param top Camera frustum top plane.
- * @param bottom Camera frustum bottom plane.
- * @param near Camera frustum near plane.
- * @param far Camera frustum far plane.
- */
- constructor(left: number, right: number, top: number, bottom: number, near?: number, far?: number);
-
- type: "OrthographicCamera";
-
- isOrthographicCamera: true;
-
- zoom: number;
- view: null | {
- enabled: boolean,
- fullWidth: number,
- fullHeight: number,
- offsetX: number,
- offsetY: number,
- width: number,
- height: number
- };
-
- /**
- * Camera frustum left plane.
- */
- left: number;
-
- /**
- * Camera frustum right plane.
- */
- right: number;
-
- /**
- * Camera frustum top plane.
- */
- top: number;
-
- /**
- * Camera frustum bottom plane.
- */
- bottom: number;
-
- /**
- * Camera frustum near plane.
- */
- near: number;
-
- /**
- * Camera frustum far plane.
- */
- far: number;
-
- /**
- * Updates the camera projection matrix. Must be called after change of parameters.
- */
- updateProjectionMatrix(): void;
- setViewOffset(fullWidth: number, fullHeight: number, offsetX: number, offsetY: number, width: number, height: number): void;
- clearViewOffset(): void;
- toJSON(meta?: any): any;
-}
-
-/**
- * Camera with perspective projection.
- *
- * # example
- * var camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );
- * scene.add( camera );
- *
- * @source https://github.com/mrdoob/three.js/blob/master/src/cameras/PerspectiveCamera.js
- */
-export class PerspectiveCamera extends Camera {
- /**
- * @param fov Camera frustum vertical field of view. Default value is 50.
- * @param aspect Camera frustum aspect ratio. Default value is 1.
- * @param near Camera frustum near plane. Default value is 0.1.
- * @param far Camera frustum far plane. Default value is 2000.
- */
- constructor(fov?: number, aspect?: number, near?: number, far?: number);
-
- type: "PerspectiveCamera";
-
- isPerspectiveCamera: true;
-
- zoom: number;
-
- /**
- * Camera frustum vertical field of view, from bottom to top of view, in degrees.
- */
- fov: number;
-
- /**
- * Camera frustum aspect ratio, window width divided by window height.
- */
- aspect: number;
-
- /**
- * Camera frustum near plane.
- */
- near: number;
-
- /**
- * Camera frustum far plane.
- */
- far: number;
-
- focus: number;
- view: null | {
- enabled: boolean,
- fullWidth: number,
- fullHeight: number,
- offsetX: number,
- offsetY: number,
- width: number,
- height: number
- };
- filmGauge: number;
- filmOffset: number;
-
- setFocalLength(focalLength: number): void;
- getFocalLength(): number;
- getEffectiveFOV(): number;
- getFilmWidth(): number;
- getFilmHeight(): number;
-
- /**
- * Sets an offset in a larger frustum. This is useful for multi-window or multi-monitor/multi-machine setups.
- * For example, if you have 3x2 monitors and each monitor is 1920x1080 and the monitors are in grid like this:
- *
- * +---+---+---+
- * | A | B | C |
- * +---+---+---+
- * | D | E | F |
- * +---+---+---+
- *
- * then for each monitor you would call it like this:
- *
- * var w = 1920;
- * var h = 1080;
- * var fullWidth = w * 3;
- * var fullHeight = h * 2;
- *
- * // A
- * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );
- * // B
- * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );
- * // C
- * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );
- * // D
- * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );
- * // E
- * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );
- * // F
- * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); Note there is no reason monitors have to be the same size or in a grid.
- *
- * @param fullWidth full width of multiview setup
- * @param fullHeight full height of multiview setup
- * @param x horizontal offset of subcamera
- * @param y vertical offset of subcamera
- * @param width width of subcamera
- * @param height height of subcamera
- */
- setViewOffset(fullWidth: number, fullHeight: number, x: number, y: number, width: number, height: number): void;
- clearViewOffset(): void;
-
- /**
- * Updates the camera projection matrix. Must be called after change of parameters.
- */
- updateProjectionMatrix(): void;
- toJSON(meta?: any): any;
-
- /**
- * @deprecated Use {@link PerspectiveCamera#setFocalLength .setFocalLength()} and {@link PerspectiveCamera#filmGauge .filmGauge} instead.
- */
- setLens(focalLength: number, frameHeight?: number): void;
-}
-
-export class StereoCamera extends Camera {
- constructor();
-
- type: "StereoCamera";
-
- aspect: number;
- eyeSep: number;
- cameraL: PerspectiveCamera;
- cameraR: PerspectiveCamera;
-
- update(camera: PerspectiveCamera): void;
-}
-
-export class ArrayCamera extends PerspectiveCamera {
- constructor(cameras?: PerspectiveCamera[]);
-
- cameras: PerspectiveCamera[];
- isArrayCamera: true;
-}
-
-// Core ///////////////////////////////////////////////////////////////////////////////////////////////
-
-/**
- * @see src/core/BufferAttribute.js
- */
-export class BufferAttribute {
- constructor(array: ArrayLike, itemSize: number, normalized?: boolean); // array parameter should be TypedArray.
-
- uuid: string;
- array: ArrayLike;
- itemSize: number;
- dynamic: boolean;
- updateRange: {offset: number, count: number};
- version: number;
- normalized: boolean;
- needsUpdate: boolean;
- count: number;
- onUpload: Function;
-
- setArray(array?: ArrayBufferView): void;
- setDynamic(dynamic: boolean): BufferAttribute;
- clone(): this;
- copy(source: BufferAttribute): this;
- copyAt(index1: number, attribute: BufferAttribute, index2: number): BufferAttribute;
- copyArray(array: ArrayLike): BufferAttribute;
- copyColorsArray(colors: {r: number, g: number, b: number}[]): BufferAttribute;
- copyVector2sArray(vectors: {x: number, y: number}[]): BufferAttribute;
- copyVector3sArray(vectors: {x: number, y: number, z: number}[]): BufferAttribute;
- copyVector4sArray(vectors: {x: number, y: number, z: number, w: number}[]): BufferAttribute;
- set(value: ArrayLike|ArrayBufferView, offset?: number): BufferAttribute;
- getX(index: number): number;
- setX(index: number, x: number): BufferAttribute;
- getY(index: number): number;
- setY(index: number, y: number): BufferAttribute;
- getZ(index: number): number;
- setZ(index: number, z: number): BufferAttribute;
- getW(index: number): number;
- setW(index: number, z: number): BufferAttribute;
- setXY(index: number, x: number, y: number): BufferAttribute;
- setXYZ(index: number, x: number, y: number, z: number): BufferAttribute;
- setXYZW(index: number, x: number, y: number, z: number, w: number): BufferAttribute;
- /**
- * @deprecated Use {@link BufferAttribute#count .count} instead.
- */
- length: number;
-}
-
-/**
- * @deprecated THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.
- */
-export class Int8Attribute extends BufferAttribute {
- constructor(array: any, itemSize: number);
-}
-
-/**
- * @deprecated THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.
- */
-export class Uint8Attribute extends BufferAttribute {
- constructor(array: any, itemSize: number);
-}
-
-/**
- * @deprecated THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.
- */
-export class Uint8ClampedAttribute extends BufferAttribute {
- constructor(array: any, itemSize: number);
-}
-
-/**
- * @deprecated THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.
- */
-export class Int16Attribute extends BufferAttribute {
- constructor(array: any, itemSize: number);
-}
-
-/**
- * @deprecated THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.
- */
-export class Uint16Attribute extends BufferAttribute {
- constructor(array: any, itemSize: number);
-}
-
-/**
- * @deprecated THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.
- */
-export class Int32Attribute extends BufferAttribute {
- constructor(array: any, itemSize: number);
-}
-
-/**
- * @deprecated THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.
- */
-export class Uint32Attribute extends BufferAttribute {
- constructor(array: any, itemSize: number);
-}
-
-/**
- * @deprecated THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.
- */
-export class Float32Attribute extends BufferAttribute {
- constructor(array: any, itemSize: number);
-}
-
-/**
- * @deprecated THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.
- */
-export class Float64Attribute extends BufferAttribute {
- constructor(array: any, itemSize: number);
-}
-
-export class Int8BufferAttribute extends BufferAttribute {
- constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number, normalized?: boolean);
-}
-
-export class Uint8BufferAttribute extends BufferAttribute {
- constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number, normalized?: boolean);
-}
-
-export class Uint8ClampedBufferAttribute extends BufferAttribute {
- constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number, normalized?: boolean);
-}
-
-export class Int16BufferAttribute extends BufferAttribute {
- constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number, normalized?: boolean);
-}
-
-export class Uint16BufferAttribute extends BufferAttribute {
- constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number, normalized?: boolean);
-}
-
-export class Int32BufferAttribute extends BufferAttribute {
- constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number, normalized?: boolean);
-}
-
-export class Uint32BufferAttribute extends BufferAttribute {
- constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number, normalized?: boolean);
-}
-
-export class Float32BufferAttribute extends BufferAttribute {
- constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number, normalized?: boolean);
-}
-
-export class Float64BufferAttribute extends BufferAttribute {
- constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number, normalized?: boolean);
-}
-
-/**
- * @deprecated Use {@link BufferAttribute#setDynamic THREE.BufferAttribute().setDynamic( true )} instead.
- */
-export class DynamicBufferAttribute extends BufferAttribute {}
-
-/**
- * This is a superefficent class for geometries because it saves all data in buffers.
- * It reduces memory costs and cpu cycles. But it is not as easy to work with because of all the nessecary buffer calculations.
- * It is mainly interesting when working with static objects.
- *
- * @see src/core/BufferGeometry.js
- */
-export class BufferGeometry extends EventDispatcher {
- /**
- * This creates a new BufferGeometry. It also sets several properties to an default value.
- */
- constructor();
-
- static MaxIndex: number;
-
- /**
- * Unique number of this buffergeometry instance
- */
- id: number;
- uuid: string;
- name: string;
- type: string;
- index: BufferAttribute;
- attributes: {
- [name: string]: BufferAttribute|InterleavedBufferAttribute;
- };
- morphAttributes: any;
- groups: {start: number, count: number, materialIndex?: number}[];
- boundingBox: Box3;
- boundingSphere: Sphere;
- drawRange: { start: number, count: number };
- userData: {[key: string]: any};
-
- getIndex(): BufferAttribute;
- setIndex( index: BufferAttribute|number[] ): void;
-
- addAttribute(name: string, attribute: BufferAttribute|InterleavedBufferAttribute): BufferGeometry;
-
- getAttribute(name: string): BufferAttribute|InterleavedBufferAttribute;
- removeAttribute(name: string): BufferGeometry;
-
- addGroup(start: number, count: number, materialIndex?: number): void;
- clearGroups(): void;
-
- setDrawRange(start: number, count: number): void;
-
- /**
- * Bakes matrix transform directly into vertex coordinates.
- */
- applyMatrix(matrix: Matrix4): BufferGeometry;
-
- rotateX(angle: number): BufferGeometry;
- rotateY(angle: number): BufferGeometry;
- rotateZ(angle: number): BufferGeometry;
- translate(x: number, y: number, z: number): BufferGeometry;
- scale(x: number, y: number, z: number): BufferGeometry;
- lookAt(v: Vector3): void;
-
- center(): BufferGeometry;
-
- setFromObject(object: Object3D): BufferGeometry;
- setFromPoints(points: Vector3[]|Vector2[]): BufferGeometry;
- updateFromObject(object: Object3D): void;
-
- 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.
- */
- computeBoundingBox(): void;
-
- /**
- * Computes bounding sphere of the geometry, updating Geometry.boundingSphere attribute.
- * Bounding spheres aren't' computed by default. They need to be explicitly computed, otherwise they are null.
- */
- computeBoundingSphere(): void;
-
- /**
- * Computes vertex normals by averaging face normals.
- */
- computeVertexNormals(): void;
-
- merge(geometry: BufferGeometry, offset: number): BufferGeometry;
- normalizeNormals(): void;
-
- toNonIndexed(): BufferGeometry;
-
- toJSON(): any;
- clone(): this;
- copy(source: BufferGeometry): this;
-
- /**
- * Disposes the object from memory.
- * You need to call this when you want the bufferGeometry removed while the application is running.
- */
- dispose(): void;
-
- /**
- * @deprecated Use {@link BufferGeometry#groups .groups} instead.
- */
- drawcalls: any;
-
- /**
- * @deprecated Use {@link BufferGeometry#groups .groups} instead.
- */
- offsets: any;
-
- /**
- * @deprecated Use {@link BufferGeometry#setIndex .setIndex()} instead.
- */
- addIndex(index: any): void;
-
- /**
- * @deprecated Use {@link BufferGeometry#addGroup .addGroup()} instead.
- */
- addDrawCall(start: any, count: any, indexOffset?: any): void;
-
- /**
- * @deprecated Use {@link BufferGeometry#clearGroups .clearGroups()} instead.
- */
- clearDrawCalls(): void;
-
- addAttribute(name: any, array: any, itemSize: any): any;
-}
-
-/**
- * Object for keeping track of time.
- *
- * @see src/core/Clock.js
- */
-export class Clock {
- /**
- * @param autoStart Automatically start the clock.
- */
- constructor(autoStart?: boolean);
-
- /**
- * If set, starts the clock automatically when the first update is called.
- */
- autoStart: boolean;
-
- /**
- * When the clock is running, It holds the starttime of the clock.
- * This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
- */
- startTime: number;
-
- /**
- * When the clock is running, It holds the previous time from a update.
- * This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
- */
- oldTime: number;
-
- /**
- * When the clock is running, It holds the time elapsed between the start of the clock to the previous update.
- * This parameter is in seconds of three decimal places.
- */
- elapsedTime: number;
-
- /**
- * This property keeps track whether the clock is running or not.
- */
- running: boolean;
-
- /**
- * Starts clock.
- */
- start(): void;
-
- /**
- * Stops clock.
- */
- stop(): void;
-
- /**
- * Get the seconds passed since the clock started.
- */
- getElapsedTime(): number;
-
- /**
- * Get the seconds passed since the last call to this method.
- */
- getDelta(): number;
-}
-
-/**
- * @see src/core/DirectGeometry.js
- */
-export class DirectGeometry extends EventDispatcher {
- 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: Vector4[];
- skinIndices: Vector4[];
- boundingBox: Box3;
- boundingSphere: Sphere;
- verticesNeedUpdate: boolean;
- normalsNeedUpdate: boolean;
- colorsNeedUpdate: boolean;
- uvsNeedUpdate: boolean;
- groupsNeedUpdate: boolean;
-
- computeBoundingBox(): void;
- computeBoundingSphere(): void;
- computeGroups(geometry: Geometry): void;
- fromGeometry(geometry: Geometry): DirectGeometry;
- dispose(): void;
-
- // EventDispatcher mixins
- addEventListener(type: string, listener: (event: Event) => void ): void;
- hasEventListener(type: string, listener: (event: Event) => void): boolean;
- removeEventListener(type: string, listener: (event: Event) => void): void;
- dispatchEvent(event: { type: string; [attachment: string]: any; }): void;
-}
-
-
-/**
- * JavaScript events for custom objects
- *
- * # Example
- * var Car = function () {
- *
- * EventDispatcher.call( this );
- * this.start = function () {
- *
- * this.dispatchEvent( { type: 'start', message: 'vroom vroom!' } );
- *
- * };
- *
- * };
- *
- * var car = new Car();
- * car.addEventListener( 'start', function ( event ) {
- *
- * alert( event.message );
- *
- * } );
- * car.start();
- *
- * @source src/core/EventDispatcher.js
- */
-export class EventDispatcher {
-
- /**
- * Creates eventDispatcher object. It needs to be call with '.call' to add the functionality to an object.
- */
- constructor();
-
- /**
- * Adds a listener to an event type.
- * @param type The type of event to listen to.
- * @param listener The function that gets called when the event is fired.
- */
- addEventListener(type: string, listener: (event: Event) => void ): void;
-
- /**
- * Checks if listener is added to an event type.
- * @param type The type of event to listen to.
- * @param listener The function that gets called when the event is fired.
- */
- hasEventListener(type: string, listener: (event: Event) => void): boolean;
-
- /**
- * Removes a listener from an event type.
- * @param type The type of the listener that gets removed.
- * @param listener The listener function that gets removed.
- */
- removeEventListener(type: string, listener: (event: Event) => void): void;
-
- /**
- * Fire an event type.
- * @param type The type of event that gets fired.
- */
- dispatchEvent(event: { type: string; [attachment: string]: any; }): void;
-}
-
-export interface Event {
- type: string;
- target?: any;
- [attachment: string]: any;
-}
-
-/**
- * Triangle face.
- *
- * # Example
- * var normal = new THREE.Vector3( 0, 1, 0 );
- * var color = new THREE.Color( 0xffaa00 );
- * var face = new THREE.Face3( 0, 1, 2, normal, color, 0 );
- *
- * @source https://github.com/mrdoob/three.js/blob/master/src/core/Face3.js
- */
-export class Face3 {
- /**
- * @param a Vertex A index.
- * @param b Vertex B index.
- * @param c Vertex C index.
- * @param normal Face normal or array of vertex normals.
- * @param color Face color or array of vertex colors.
- * @param materialIndex Material index.
- */
- constructor(a: number, b: number, c: number, normal?: Vector3, color?: Color, materialIndex?: number);
- constructor(a: number, b: number, c: number, normal?: Vector3, vertexColors?: Color[], materialIndex?: number);
- constructor(a: number, b: number, c: number, vertexNormals?: Vector3[], color?: Color, materialIndex?: number);
- constructor(a: number, b: number, c: number, vertexNormals?: Vector3[], vertexColors?: Color[], materialIndex?: number);
-
- /**
- * Vertex A index.
- */
- a: number;
-
- /**
- * Vertex B index.
- */
- b: number;
-
- /**
- * Vertex C index.
- */
- c: number;
-
- /**
- * Face normal.
- */
- normal: Vector3;
-
- /**
- * Array of 4 vertex normals.
- */
- vertexNormals: Vector3[];
-
- /**
- * Face color.
- */
- color: Color;
-
- /**
- * Array of 4 vertex normals.
- */
- vertexColors: Color[];
-
- /**
- * Material index (points to {@link Geometry.materials}).
- */
- materialIndex: number;
-
- clone(): this;
- copy(source: Face3): this;
-}
-
-/**
- * @deprecated Use {@link Face3} instead.
- */
-export class Face4 extends Face3 {}
-
-export interface MorphTarget {
- name: string;
- vertices: Vector3[];
-}
-
-export interface MorphColor {
- name: string;
- colors: Color[];
-}
-
-export interface MorphNormals {
- name: string;
- normals: Vector3[];
-}
-
-export let GeometryIdCount: number;
-
-/**
- * Base class for geometries
- *
- * # Example
- * var geometry = new THREE.Geometry();
- * geometry.vertices.push( new THREE.Vector3( -10, 10, 0 ) );
- * geometry.vertices.push( new THREE.Vector3( -10, -10, 0 ) );
- * geometry.vertices.push( new THREE.Vector3( 10, -10, 0 ) );
- * geometry.faces.push( new THREE.Face3( 0, 1, 2 ) );
- * geometry.computeBoundingSphere();
- *
- * @see https://github.com/mrdoob/three.js/blob/master/src/core/Geometry.js
- */
-export class Geometry extends EventDispatcher {
- constructor();
-
- /**
- * Unique number of this geometry instance
- */
- id: number;
-
- uuid: string;
-
- /**
- * Name for this geometry. Default is an empty string.
- */
- name: string;
-
- type: string;
-
- /**
- * The array of vertices hold every position of points of the model.
- * To signal an update in this array, Geometry.verticesNeedUpdate needs to be set to true.
- */
- vertices: Vector3[];
-
- /**
- * Array of vertex colors, matching number and order of vertices.
- * Used in ParticleSystem, Line and Ribbon.
- * Meshes use per-face-use-of-vertex colors embedded directly in faces.
- * To signal an update in this array, Geometry.colorsNeedUpdate needs to be set to true.
- */
- colors: Color[];
-
- /**
- * Array of triangles or/and quads.
- * The array of faces describe how each vertex in the model is connected with each other.
- * To signal an update in this array, Geometry.elementsNeedUpdate needs to be set to true.
- */
- faces: Face3[];
-
- /**
- * Array of face UV layers.
- * Each UV layer is an array of UV matching order and number of vertices in faces.
- * To signal an update in this array, Geometry.uvsNeedUpdate needs to be set to true.
- */
- faceVertexUvs: Vector2[][][];
-
- /**
- * Array of morph targets. Each morph target is a Javascript object:
- *
- * { name: "targetName", vertices: [ new THREE.Vector3(), ... ] }
- *
- * Morph vertices match number and order of primary vertices.
- */
- morphTargets: MorphTarget[];
-
- /**
- * Array of morph normals. Morph normals have similar structure as morph targets, each normal set is a Javascript object:
- *
- * morphNormal = { name: "NormalName", normals: [ new THREE.Vector3(), ... ] }
- */
- morphNormals: MorphNormals[];
-
- /**
- * Array of skinning weights, matching number and order of vertices.
- */
- skinWeights: Vector4[];
-
- /**
- * Array of skinning indices, matching number and order of vertices.
- */
- skinIndices: Vector4[];
-
- /**
- *
- */
- lineDistances: number[];
-
- /**
- * Bounding box.
- */
- boundingBox: Box3;
-
- /**
- * Bounding sphere.
- */
- boundingSphere: Sphere;
-
- /**
- * Set to true if the vertices array has been updated.
- */
- verticesNeedUpdate: boolean;
-
- /**
- * Set to true if the faces array has been updated.
- */
- elementsNeedUpdate: boolean;
-
- /**
- * Set to true if the uvs array has been updated.
- */
- uvsNeedUpdate: boolean;
-
- /**
- * Set to true if the normals array has been updated.
- */
- normalsNeedUpdate: boolean;
-
- /**
- * Set to true if the colors array has been updated.
- */
- colorsNeedUpdate: boolean;
-
- /**
- * Set to true if the linedistances array has been updated.
- */
- lineDistancesNeedUpdate: boolean;
-
- /**
- *
- */
- groupsNeedUpdate: boolean;
-
- /**
- * Bakes matrix transform directly into vertex coordinates.
- */
- applyMatrix(matrix: Matrix4): Geometry;
-
- 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;
-
- center(): Geometry;
-
- normalize(): Geometry;
-
- /**
- * Computes face normals.
- */
- computeFaceNormals(): void;
-
- /**
- * Computes vertex normals by averaging face normals.
- * Face normals must be existing / computed beforehand.
- */
- computeVertexNormals(areaWeighted?: boolean): void;
-
- /**
- * Compute vertex normals, but duplicating face normals.
- */
- computeFlatVertexNormals(): void;
-
- /**
- * Computes morph normals.
- */
- computeMorphNormals(): void;
-
- /**
- * Computes bounding box of the geometry, updating {@link Geometry.boundingBox} attribute.
- */
- computeBoundingBox(): void;
-
- /**
- * Computes bounding sphere of the geometry, updating Geometry.boundingSphere attribute.
- * Neither bounding boxes or bounding spheres are computed by default. They need to be explicitly computed, otherwise they are null.
- */
- computeBoundingSphere(): void;
-
- merge(geometry: Geometry, matrix?: Matrix, materialIndexOffset?: number): void;
-
- mergeMesh(mesh: Mesh): void;
-
- /**
- * Checks for duplicate vertices using hashmap.
- * Duplicated vertices are removed and faces' vertices are updated.
- */
- mergeVertices(): number;
-
- setFromPoints(points: Array | Array): this;
-
- sortFacesByMaterialIndex(): void;
-
- toJSON(): any;
-
- /**
- * Creates a new clone of the Geometry.
- */
- clone(): this;
-
- copy(source: Geometry): this;
-
- /**
- * Removes The object from memory.
- * Don't forget to call this method when you remove an geometry because it can cuase meomory leaks.
- */
- dispose(): void;
-
-
- // 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: AnimationClip;
- animations: AnimationClip[];
-
- // EventDispatcher mixins
- addEventListener(type: string, listener: (event: Event) => void ): void;
- hasEventListener(type: string, listener: (event: Event) => void): boolean;
- removeEventListener(type: string, listener: (event: Event) => void): void;
- dispatchEvent(event: { type: string; [attachment: string]: any; }): void;
-}
-
-/**
- * @see examples/js/BufferGeometryUtils.js
- */
-export namespace BufferGeometryUtils {
- export function mergeBufferGeometries(geometries: BufferGeometry[]): BufferGeometry;
- export function computeTangents(geometry: BufferGeometry): null;
- export function mergeBufferAttributes(attributes: BufferAttribute[]): BufferAttribute;
-}
-
-/**
- * @deprecated
- */
-export namespace GeometryUtils {
- /**
- * @deprecated Use {@link Geometry#merge geometry.merge( geometry2, matrix, materialIndexOffset )} instead.
- */
- export function merge(geometry1: any, geometry2: any, materialIndexOffset?: any): any;
- /**
- * @deprecated Use {@link Geometry#center geometry.center()} instead.
- */
- export function center(geometry: any): any;
-}
-
-/**
- * @see src/core/InstancedBufferAttribute.js
- */
-export class InstancedBufferAttribute extends BufferAttribute {
- constructor(data: ArrayLike, itemSize: number, meshPerAttribute?: number);
-
- meshPerAttribute: number;
-}
-
-/**
- * @see src/core/InstancedBufferGeometry.js
- */
-export class InstancedBufferGeometry extends BufferGeometry {
- constructor();
-
- groups: {start: number, count: number, instances: number}[];
- maxInstancedCount: number;
-
- addGroup(start: number, count: number, instances: number): void;
-}
-
-/**
- * @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;
-
- setArray(array?: ArrayBufferView): void;
- setDynamic(dynamic: boolean): InterleavedBuffer;
- clone(): this;
- copy(source: InterleavedBuffer): this;
- copyAt(index1: number, attribute: InterleavedBufferAttribute, index2: number): InterleavedBuffer;
- set(value: ArrayLike, index: number): InterleavedBuffer;
-}
-
-/**
- * @see src/core/InstancedInterleavedBuffer.js
- */
-export class InstancedInterleavedBuffer extends InterleavedBuffer {
- constructor(array: ArrayLike, stride: number, meshPerAttribute?: number);
-
- meshPerAttribute: number;
-}
-
-/**
- * @see src/core/InterleavedBufferAttribute.js
- */
-export class InterleavedBufferAttribute {
- constructor(interleavedBuffer: InterleavedBuffer, itemSize: number, offset: number, normalized?: boolean);
-
- uuid: string;
- data: InterleavedBuffer;
- itemSize: number;
- offset: number;
- count: number;
- normalized: boolean;
- array: any[];
-
- 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;
- /**
- * @deprecated Use {@link InterleavedBufferAttribute#count .count} instead.
- */
- length: number;
-}
-
-export let Object3DIdCount: number;
-
-/**
- * Base class for scene graph objects
- */
-export class Object3D extends EventDispatcher {
- constructor();
-
- /**
- * Unique number of this object instance.
- */
- id: number;
-
- /**
- *
- */
- uuid: string;
-
- /**
- * Optional name of the object (doesn't need to be unique).
- */
- name: string;
-
- type: string;
-
- /**
- * Object's parent in the scene graph.
- */
- parent: Object3D | null;
-
- /**
- * Array with object's children.
- */
- children: Object3D[];
-
- /**
- * Up direction.
- */
- up: Vector3;
-
- /**
- * Object's local position.
- */
- position: Vector3;
-
- /**
- * Object's local rotation (Euler angles), in radians.
- */
- rotation: Euler;
-
- /**
- * Global rotation.
- */
- quaternion: Quaternion;
-
- /**
- * Object's local scale.
- */
- scale: Vector3;
-
- modelViewMatrix: Matrix4;
-
- normalMatrix: Matrix3;
-
- /**
- * Local transform.
- */
- matrix: Matrix4;
-
- /**
- * The global transform of the object. If the Object3d has no parent, then it's identical to the local transform.
- */
- matrixWorld: Matrix4;
-
- /**
- * When this is set, it calculates the matrix of position, (rotation or quaternion) and scale every frame and also recalculates the matrixWorld property.
- */
- matrixAutoUpdate: boolean;
-
- /**
- * When this is set, it calculates the matrixWorld in that frame and resets this property to false.
- */
- matrixWorldNeedsUpdate: boolean;
-
- layers: Layers;
- /**
- * Object gets rendered if true.
- */
- visible: boolean;
-
- /**
- * Gets rendered into shadow map.
- */
- castShadow: boolean;
-
- /**
- * Material gets baked in shadow receiving.
- */
- receiveShadow: boolean;
-
- /**
- * When this is set, it checks every frame if the object is in the frustum of the camera. Otherwise the object gets drawn every frame even if it isn't visible.
- */
- frustumCulled: boolean;
-
- renderOrder: number;
-
- /**
- * An object that can be used to store custom data about the Object3d. It should not hold references to functions as these will not be cloned.
- */
- userData: {[key: string]: any};
-
- /**
- * Used to check whether this or derived classes are Object3Ds. Default is true.
- * You should not change this, as it is used internally for optimisation.
- */
- isObject3D: true;
-
- /**
- * Calls before rendering object
- */
- onBeforeRender: (renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: Geometry | BufferGeometry,
- material: Material, group: Group) => void;
-
- /**
- * Calls after rendering object
- */
- onAfterRender: (renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: Geometry | BufferGeometry,
- material: Material, group: Group) => void;
-
-
- static DefaultUp: Vector3;
- static DefaultMatrixAutoUpdate: boolean;
-
- /**
- * This updates the position, rotation and scale with the matrix.
- */
- applyMatrix(matrix: Matrix4): void;
-
- applyQuaternion(quaternion: Quaternion): this;
-
- /**
- *
- */
- setRotationFromAxisAngle(axis: Vector3, angle: number): void;
-
- /**
- *
- */
- setRotationFromEuler(euler: Euler): void;
-
- /**
- *
- */
- setRotationFromMatrix(m: Matrix4): void;
-
- /**
- *
- */
- setRotationFromQuaternion(q: Quaternion): void;
-
- /**
- * Rotate an object along an axis in object space. The axis is assumed to be normalized.
- * @param axis A normalized vector in object space.
- * @param angle The angle in radians.
- */
- rotateOnAxis(axis: Vector3, angle: number): this;
-
- /**
- * Rotate an object along an axis in world space. The axis is assumed to be normalized. Method Assumes no rotated parent.
- * @param axis A normalized vector in object space.
- * @param angle The angle in radians.
- */
- rotateOnWorldAxis(axis: Vector3, angle: number): this;
-
- /**
- *
- * @param angle
- */
- rotateX(angle: number): this;
-
- /**
- *
- * @param angle
- */
- rotateY(angle: number): this;
-
- /**
- *
- * @param angle
- */
- rotateZ(angle: number): this;
-
- /**
- * @param axis A normalized vector in object space.
- * @param distance The distance to translate.
- */
- translateOnAxis(axis: Vector3, distance: number): this;
-
- /**
- * Translates object along x axis by distance.
- * @param distance Distance.
- */
- translateX(distance: number): this;
-
- /**
- * Translates object along y axis by distance.
- * @param distance Distance.
- */
- translateY(distance: number): this;
-
- /**
- * Translates object along z axis by distance.
- * @param distance Distance.
- */
- translateZ(distance: number): this;
-
- /**
- * Updates the vector from local space to world space.
- * @param vector A local vector.
- */
- localToWorld(vector: Vector3): Vector3;
-
- /**
- * Updates the vector from world space to local space.
- * @param vector A world vector.
- */
- worldToLocal(vector: Vector3): Vector3;
-
- /**
- * Rotates object to face point in space.
- * @param vector A world vector to look at.
- */
- lookAt(vector: Vector3 | number, y?: number, z?: number): void;
-
- /**
- * Adds object as child of this object.
- */
- add(...object: Object3D[]): this;
-
- /**
- * Removes object as child of this object.
- */
- remove(...object: Object3D[]): this;
-
- /**
- * Searches through the object's children and returns the first with a matching id.
- * @param id Unique number of the object instance
- */
- getObjectById(id: number): Object3D | undefined;
-
- /**
- * Searches through the object's children and returns the first with a matching name.
- * @param name String to match to the children's Object3d.name property.
- */
- getObjectByName(name: string): Object3D | undefined;
-
- getObjectByProperty( name: string, value: string ): Object3D | undefined;
-
- getWorldPosition(target: Vector3): Vector3;
- getWorldQuaternion(target: Quaternion): Quaternion;
- getWorldScale(target: Vector3): Vector3;
- getWorldDirection(target: Vector3): Vector3;
-
- raycast(raycaster: Raycaster, intersects: Intersection[]): void;
-
- traverse(callback: (object: Object3D) => any): void;
-
- traverseVisible(callback: (object: Object3D) => any): void;
-
- traverseAncestors(callback: (object: Object3D) => any): void;
-
- /**
- * Updates local transform.
- */
- updateMatrix(): void;
-
- /**
- * Updates global transform of the object and its children.
- */
- updateMatrixWorld(force: boolean): void;
-
- updateWorldMatrix(updateParents: boolean, updateChildren: boolean): void;
-
- toJSON(meta?: { geometries: any, materials: any, textures: any, images: any }): any;
-
- clone(recursive?: boolean): this;
-
- /**
- *
- * @param object
- * @param recursive
- */
- copy(source: Object3D, recursive?: boolean): this;
-}
-
-export interface Intersection {
- distance: number;
- distanceToRay?: number;
- point: Vector3;
- index?: number;
- face?: Face3 | null;
- faceIndex?: number;
- object: Object3D;
- uv?: Vector2;
-}
-
-export interface RaycasterParameters {
- Mesh?: any;
- Line?: any;
- LOD?: any;
- Points?: { threshold: number };
- Sprite?: any;
-}
-
-export class Raycaster {
- /**
- * This creates a new raycaster object.
- * @param origin The origin vector where the ray casts from.
- * @param direction The direction vector that gives direction to the ray. Should be normalized.
- * @param near All results returned are further away than near. Near can't be negative. Default value is 0.
- * @param far All results returned are closer then far. Far can't be lower then near . Default value is Infinity.
- */
- constructor(origin?: Vector3, direction?: Vector3, near?: number, far?: number);
-
- /** The Ray used for the raycasting. */
- ray: Ray;
-
- /**
- * The near factor of the raycaster. This value indicates which objects can be discarded based on the
- * distance. This value shouldn't be negative and should be smaller than the far property.
- */
- near: number;
-
- /**
- * The far factor of the raycaster. This value indicates which objects can be discarded based on the
- * distance. This value shouldn't be negative and should be larger than the near property.
- */
- far: number;
-
- params: RaycasterParameters;
-
- /**
- * The precision factor of the raycaster when intersecting Line objects.
- */
- linePrecision: number;
-
- /**
- * Updates the ray with a new origin and direction.
- * @param origin The origin vector where the ray casts from.
- * @param direction The normalized direction vector that gives direction to the ray.
- */
- set(origin: Vector3, direction: Vector3): void;
-
- /**
- * Updates the ray with a new origin and direction.
- * @param coords 2D coordinates of the mouse, in normalized device coordinates (NDC)---X and Y components should be between -1 and 1.
- * @param camera camera from which the ray should originate
- */
- setFromCamera(coords: { x: number; y: number; }, camera: Camera ): void;
-
- /**
- * Checks all intersection between the ray and the object with or without the descendants. Intersections are returned sorted by distance, closest first.
- * @param object The object to check for intersection with the ray.
- * @param recursive If true, it also checks all descendants. Otherwise it only checks intersecton with the object. Default is false.
- * @param optionalTarget (optional) target to set the result. Otherwise a new Array is instantiated. If set, you must clear this array prior to each call (i.e., array.length = 0;).
- */
- intersectObject(object: Object3D, recursive?: boolean, optionalTarget?: Intersection[]): Intersection[];
-
- /**
- * Checks all intersection between the ray and the objects with or without the descendants. Intersections are returned sorted by distance, closest first. Intersections are of the same form as those returned by .intersectObject.
- * @param objects The objects to check for intersection with the ray.
- * @param recursive If true, it also checks all descendants of the objects. Otherwise it only checks intersecton with the objects. Default is false.
- * @param optionalTarget (optional) target to set the result. Otherwise a new Array is instantiated. If set, you must clear this array prior to each call (i.e., array.length = 0;).
- */
- intersectObjects(objects: Object3D[], recursive?: boolean, optionalTarget?: Intersection[]): Intersection[];
-}
-
-export class Layers {
- constructor();
-
- mask: number;
-
- set(channel: number): void;
- enable(channel: number): void;
- toggle(channel: number): void;
- disable(channel: number): void;
- test(layers: Layers): boolean;
-}
-
-export class Font {
- constructor(jsondata: any);
-
- data: string;
-
- generateShapes(text: string, size: number, divisions: number): any[];
-}
-
-// Lights //////////////////////////////////////////////////////////////////////////////////
-
-/**
- * Abstract base class for lights.
- */
-export class Light extends Object3D {
- constructor(hex?: number|string, intensity?: number);
-
- color: Color;
- intensity: number;
- receiveShadow: boolean;
- shadow: LightShadow;
- /**
- * @deprecated Use shadow.camera.fov instead.
- */
- shadowCameraFov: any;
- /**
- * @deprecated Use shadow.camera.left instead.
- */
- shadowCameraLeft: any;
- /**
- * @deprecated Use shadow.camera.right instead.
- */
- shadowCameraRight: any;
- /**
- * @deprecated Use shadow.camera.top instead.
- */
- shadowCameraTop: any;
- /**
- * @deprecated Use shadow.camera.bottom instead.
- */
- shadowCameraBottom: any;
- /**
- * @deprecated Use shadow.camera.near instead.
- */
- shadowCameraNear: any;
- /**
- * @deprecated Use shadow.camera.far instead.
- */
- shadowCameraFar: any;
- /**
- * @deprecated Use shadow.bias instead.
- */
- shadowBias: any;
- /**
- * @deprecated Use shadow.mapSize.width instead.
- */
- shadowMapWidth: any;
- /**
- * @deprecated Use shadow.mapSize.height instead.
- */
- shadowMapHeight: any;
-}
-
-export class LightShadow {
- constructor(camera: Camera);
-
- camera: Camera;
- bias: number;
- radius: number;
- mapSize: Vector2;
- map: RenderTarget;
- matrix: Matrix4;
-
- copy(source: LightShadow): this;
- clone(recursive?: boolean): this;
- toJSON(): any;
-}
-
-/**
- * This light's color gets applied to all the objects in the scene globally.
- *
- * # example
- * var light = new THREE.AmbientLight( 0x404040 ); // soft white light
- * scene.add( light );
- *
- * @source https://github.com/mrdoob/three.js/blob/master/src/lights/AmbientLight.js
- */
-export class AmbientLight extends Light {
- /**
- * This creates a Ambientlight with a color.
- * @param color Numeric value of the RGB component of the color or a Color instance.
- */
- constructor(color?: Color | string | number, intensity?: number);
-
- castShadow: boolean;
-}
-
-/**
- * Affects objects using MeshLambertMaterial or MeshPhongMaterial.
- *
- * @example
- * // White directional light at half intensity shining from the top.
- * var directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );
- * directionalLight.position.set( 0, 1, 0 );
- * scene.add( directionalLight );
- *
- * @see src/lights/DirectionalLight.js
- */
-export class DirectionalLight extends Light {
- constructor(color?: Color | string | number, intensity?: number);
-
- /**
- * Target used for shadow camera orientation.
- */
- target: Object3D;
-
- /**
- * Light's intensity.
- * Default — 1.0.
- */
- intensity: number;
-
- shadow: DirectionalLightShadow;
-}
-
-export class DirectionalLightShadow extends LightShadow {
- camera: OrthographicCamera;
-}
-
-export class HemisphereLight extends Light {
- constructor(skyColor?: Color | string | number, groundColor?: Color | string | number, intensity?: number);
-
- skyColor: Color;
- groundColor: Color;
- intensity: number;
-}
-
-/**
- * Affects objects using {@link MeshLambertMaterial} or {@link MeshPhongMaterial}.
- *
- * @example
- * var light = new THREE.PointLight( 0xff0000, 1, 100 );
- * light.position.set( 50, 50, 50 );
- * scene.add( light );
- */
-export class PointLight extends Light {
- constructor(color?: Color | string | number, intensity?: number, distance?: number, decay?: number);
-
- /*
- * Light's intensity.
- * Default - 1.0.
- */
- intensity: number;
-
- /**
- * If non-zero, light will attenuate linearly from maximum intensity at light position down to zero at distance.
- * Default — 0.0.
- */
- distance: number;
-
- decay: number;
- shadow: PointLightShadow;
- power: number;
-}
-
-export class PointLightShadow extends LightShadow {
- camera: PerspectiveCamera;
-}
-
-/**
- * A point light that can cast shadow in one direction.
- */
-export class SpotLight extends Light {
- constructor(color?: Color | string | number, intensity?: number, distance?: number, angle?: number, exponent?: number, decay?: number);
-
- /**
- * Spotlight focus points at target.position.
- * Default position — (0,0,0).
- */
- target: Object3D;
-
- /**
- * Light's intensity.
- * Default — 1.0.
- */
- intensity: number;
-
- /**
- * If non-zero, light will attenuate linearly from maximum intensity at light position down to zero at distance.
- * Default — 0.0.
- */
- distance: number;
-
- /*
- * Maximum extent of the spotlight, in radians, from its direction.
- * Default — Math.PI/2.
- */
- angle: number;
-
- /**
- * Rapidity of the falloff of light from its target direction.
- * Default — 10.0.
- */
- exponent: number;
-
- decay: number;
- shadow: SpotLightShadow;
- power: number;
- penumbra: number;
-}
-
-export class SpotLightShadow extends LightShadow {
- camera: PerspectiveCamera;
- update(light: Light): void;
-}
-
-// Loaders //////////////////////////////////////////////////////////////////////////////////
-
-/**
- * Base class for implementing loaders.
- *
- * Events:
- * load
- * Dispatched when the image has completed loading
- * content — loaded image
- *
- * error
- *
- * Dispatched when the image can't be loaded
- * message — error message
- */
-export class Loader {
- constructor();
-
- /**
- * Will be called when load starts.
- * The default is a function with empty body.
- */
- onLoadStart: () => void;
-
- /**
- * Will be called while load progresses.
- * The default is a function with empty body.
- */
- onLoadProgress: () => void;
-
- /**
- * Will be called when load completes.
- * The default is a function with empty body.
- */
- onLoadComplete: () => void;
-
- /**
- * default — null.
- * If set, assigns the crossOrigin attribute of the image to the value of crossOrigin, prior to starting the load.
- */
- crossOrigin: string;
-
- /**
- * @deprecated Use THREE.LoaderUtils.extractUrlBase() instead.
- */
- extractUrlBase(url: string): string;
- initMaterials(materials: Material[], texturePath: string): Material[];
- createMaterial(m: Material, texturePath: string, crossOrigin?: string): boolean;
-
- static Handlers: LoaderHandler;
-}
-
-/**
-* Interface for all loaders
-* CompressedTextureLoader don't extends Loader class, but have load method
-*/
-export interface AnyLoader {
- load(url: string, onLoad?: (result: any) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): any;
-}
-
-export interface LoaderHandler {
- handlers: (RegExp | AnyLoader)[];
-
- add(regex: RegExp, loader: AnyLoader): void;
- get(file: string): AnyLoader | null;
-}
-
-export class FileLoader {
- constructor(manager?: LoadingManager);
-
- manager: LoadingManager;
- mimeType: MimeType;
- path: string;
- responseType: string;
- withCredentials: string;
-
- load(url: string, onLoad?: (response: string | ArrayBuffer) => void, onProgress?: (request: ProgressEvent) => void, onError?:(event: ErrorEvent) => void): any;
- setMimeType(mimeType: MimeType): FileLoader;
- setPath(path: string) : FileLoader;
- setResponseType(responseType: string) : FileLoader;
- setWithCredentials(value: string): FileLoader;
- setRequestHeader(value: {[header: string]: string}): FileLoader;
-}
-
-export class FontLoader {
- constructor(manager?: LoadingManager);
-
- manager: LoadingManager;
-
- load(url: string, onLoad?: (responseFont: Font) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void;
- parse(json: any): Font;
-}
-
-/**
- * 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.
- */
-export class ImageLoader {
- constructor(manager?: LoadingManager);
-
- manager: LoadingManager;
- crossOrigin: string;
- withCredentials: string;
- path: string;
-
- /**
- * Begin loading from url
- * @param url
- */
- load(url: string, onLoad?: (image: HTMLImageElement) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): HTMLImageElement;
- setCrossOrigin(crossOrigin: string): ImageLoader;
- setWithCredentials(value: string): ImageLoader;
- setPath(value: string): ImageLoader;
-}
-
-/**
- * A loader for loading objects in JSON format.
- */
-export class JSONLoader extends Loader {
- constructor(manager?: LoadingManager);
-
- manager: LoadingManager;
- withCredentials: boolean;
-
- load(url: string, onLoad?: (geometry: Geometry, materials: Material[]) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void;
- setTexturePath( value: string ): void;
- parse(json: any, texturePath?: string): { geometry: Geometry; materials?: Material[] };
-}
-
-/**
- * Handles and keeps track of loaded and pending data.
- */
-export class LoadingManager {
- constructor(onLoad?: () => void, onProgress?: (url: string, loaded: number, total: number) => void, onError?: (url: string) => void);
-
- onStart?: (url: string, loaded: number, total: number) => void;
-
- /**
- * Will be called when load starts.
- * The default is a function with empty body.
- */
- onLoad: () => void;
-
- /**
- * Will be called while load progresses.
- * The default is a function with empty body.
- */
- onProgress: (item: any, loaded: number, total: number) => void;
-
- /**
- * Will be called when each element in the scene completes loading.
- * The default is a function with empty body.
- */
- onError: (url: string) => void;
-
- /**
- * If provided, the callback will be passed each resource URL before a request is sent.
- * The callback may return the original URL, or a new URL to override loading behavior.
- * This behavior can be used to load assets from .ZIP files, drag-and-drop APIs, and Data URIs.
- * @param callback URL modifier callback. Called with url argument, and must return resolvedURL.
- */
- setURLModifier(callback?: (url: string) => string): void;
-
- /**
- * Given a URL, uses the URL modifier callback (if any) and returns a resolved URL.
- * If no URL modifier is set, returns the original URL.
- * @param url the url to load
- */
- resolveURL(url: string): string;
-
- itemStart(url: string): void;
- itemEnd(url: string): void;
- itemError(url: string): void;
-}
-
-export const DefaultLoadingManager: LoadingManager;
-
-export class BufferGeometryLoader {
- constructor(manager?: LoadingManager);
-
- manager: LoadingManager;
-
- load(url: string, onLoad: (bufferGeometry: BufferGeometry) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void;
- parse(json: any): BufferGeometry;
-}
-
-export class MaterialLoader {
- constructor(manager?: LoadingManager);
-
- manager: LoadingManager;
- textures: { [key: string]: Texture };
-
- load(url: string, onLoad: (material: Material) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: Error | ErrorEvent) => void): void;
- setTextures(textures: { [key: string]: Texture }): void;
- getTexture(name: string): Texture;
- parse(json: any): Material;
-}
-
-export class ObjectLoader {
- constructor(manager?: LoadingManager);
-
- manager: LoadingManager;
- texturePass: string;
- crossOrigin: string;
-
- load(url: string, onLoad?: (object: Object3D) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: Error | ErrorEvent) => void): void;
- setTexturePath( value: string ): void;
- setCrossOrigin(crossOrigin: string): void;
- parse(json: any, onLoad?: (object: Object3D) => void): T;
- parseGeometries(json: any): any[]; // Array of BufferGeometry or Geometry or Geometry2.
- parseMaterials(json: any, textures: Texture[]): Material[]; // Array of Classes that inherits from Matrial.
- parseAnimations(json: any): AnimationClip[];
- parseImages(json: any, onLoad: () => void): { [key: string]: HTMLImageElement };
- parseTextures(json: any, images: any): Texture[];
- parseObject(data: any, geometries: any[], materials: Material[]): T;
-}
-
-/**
- * Class for loading a texture.
- * 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.
- */
-export class TextureLoader {
- constructor(manager?: LoadingManager);
-
- manager: LoadingManager;
- crossOrigin: string;
- withCredentials: string;
- path: string;
-
- /**
- * Begin loading from url
- *
- * @param url
- */
- load(url: string, onLoad?: (texture: Texture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Texture;
- setCrossOrigin(crossOrigin: string): TextureLoader;
- setWithCredentials(value: string): TextureLoader;
- setPath(path: string): TextureLoader;
-}
-
-export class CubeTextureLoader {
- constructor(manager?: LoadingManager);
-
- manager: LoadingManager;
- crossOrigin: string;
- path?: string;
-
- load(urls: Array, onLoad?: (texture: CubeTexture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): CubeTexture;
- setCrossOrigin(crossOrigin: string): this;
- setPath(path: string): this;
-}
-
-export class DataTextureLoader {
- constructor(manager?: LoadingManager);
-
- manager: LoadingManager;
-
- load(url: string, onLoad: (dataTexture: DataTexture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void;
-}
-
-/**
- * @deprecated since 0.84.0. Use {@link DataTextureLoader} (renamed)
- */
-export class BinaryTextureLoader extends DataTextureLoader {}
-
-export class CompressedTextureLoader {
- constructor(manager?: LoadingManager);
-
- manager: LoadingManager;
- path: string;
-
- load(url: string, onLoad: (texture: CompressedTexture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void;
- setPath(path: string): CompressedTextureLoader;
-}
-
-export class AudioLoader {
- constructor(manager?: LoadingManager);
-
- load(url: string, onLoad: Function, onPrgress: Function, onError: Function): void;
-}
-
-export namespace Cache {
- export let enabled: boolean;
- export let files: any;
-
- export function add(key: string, file: any): void;
- export function get(key: string): any;
- export function remove(key: string): void;
- export function clear(): void;
-}
-
-export class LoaderUtils {
- static decodeText(array: TypedArray): string;
- static extractUrlBase(url: string): string;
-}
-
-// Materials //////////////////////////////////////////////////////////////////////////////////
-export let MaterialIdCount: number;
-
-export interface MaterialParameters {
- alphaTest?: number;
- blendDst?: BlendingDstFactor;
- blendDstAlpha?: number;
- blendEquation?: BlendingEquation;
- blendEquationAlpha?: number;
- blending?: Blending;
- blendSrc?: BlendingSrcFactor | BlendingDstFactor;
- blendSrcAlpha?: number;
- clipIntersection?: boolean;
- clippingPlanes?: Plane[];
- clipShadows?: boolean;
- colorWrite?: boolean;
- depthFunc?: DepthModes;
- depthTest?: boolean;
- depthWrite?: boolean;
- fog?: boolean;
- lights?: boolean;
- name?: string;
- opacity?: number;
- overdraw?: number;
- polygonOffset?: boolean;
- polygonOffsetFactor?: number;
- polygonOffsetUnits?: number;
- precision?: 'highp' | 'mediump' | 'lowp' | null;
- premultipliedAlpha?: boolean;
- dithering?: boolean;
- flatShading?: boolean;
- side?: Side;
- transparent?: boolean;
- vertexColors?: Colors;
- visible?: boolean;
-}
-
-/**
- * Materials describe the appearance of objects. They are defined in a (mostly) renderer-independent way, so you don't have to rewrite materials if you decide to use a different renderer.
- */
-export class Material extends EventDispatcher {
- constructor();
-
- /**
- * Sets the alpha value to be used when running an alpha test. Default is 0.
- */
- alphaTest: number;
-
- /**
- * Blending destination. It's one of the blending mode constants defined in Three.js. Default is {@link OneMinusSrcAlphaFactor}.
- */
- blendDst: BlendingDstFactor;
-
- /**
- * The tranparency of the .blendDst. Default is null.
- */
- blendDstAlpha: number | null;
-
- /**
- * Blending equation to use when applying blending. It's one of the constants defined in Three.js. Default is {@link AddEquation}.
- */
- blendEquation: BlendingEquation;
-
- /**
- * The tranparency of the .blendEquation. Default is null.
- */
- blendEquationAlpha: number | null;
-
- /**
- * Which blending to use when displaying objects with this material. Default is {@link NormalBlending}.
- */
- blending: Blending;
-
- /**
- * Blending source. It's one of the blending mode constants defined in Three.js. Default is {@link SrcAlphaFactor}.
- */
- blendSrc: BlendingSrcFactor | BlendingDstFactor;
-
- /**
- * The tranparency of the .blendSrc. Default is null.
- */
- blendSrcAlpha: number | null;
-
- /**
- * Changes the behavior of clipping planes so that only their intersection is clipped, rather than their union. Default is false.
- */
- clipIntersection: boolean;
-
- /**
- * User-defined clipping planes specified as THREE.Plane objects in world space. These planes apply to the objects this material is attached to. Points in space whose signed distance to the plane is negative are clipped (not rendered). See the WebGL / clipping /intersection example. Default is null.
- */
- clippingPlanes: any;
-
- /**
- * Defines whether to clip shadows according to the clipping planes specified on this material. Default is false.
- */
- clipShadows: boolean;
-
- /**
- * Whether to render the material's color. This can be used in conjunction with a mesh's .renderOrder property to create invisible objects that occlude other objects. Default is true.
- */
- colorWrite: boolean;
-
- /**
- * Which depth function to use. Default is {@link LessEqualDepth}. See the depth mode constants for all possible values.
- */
- depthFunc: DepthModes;
-
- /**
- * Whether to have depth test enabled when rendering this material. Default is true.
- */
- depthTest: boolean;
-
- /**
- * Whether rendering this material has any effect on the depth buffer. Default is true.
- * When drawing 2D overlays it can be useful to disable the depth writing in order to layer several things together without creating z-index artifacts.
- */
- depthWrite: boolean;
-
- /**
- * Whether the material is affected by fog. Default is true.
- */
- fog: boolean;
-
- /**
- * Unique number of this material instance.
- */
- id: number;
-
- /**
- * Used to check whether this or derived classes are materials. Default is true.
- * You should not change this, as it used internally for optimisation.
- */
- isMaterial: boolean;
-
- /**
- * Whether the material is affected by lights. Default is true.
- */
- lights: boolean;
-
- /**
- * Material name. Default is an empty string.
- */
- name: string;
-
- /**
- * Specifies that the material needs to be updated, WebGL wise. Set it to true if you made changes that need to be reflected in WebGL.
- * This property is automatically set to true when instancing a new material.
- */
- needsUpdate: boolean;
-
- /**
- * Opacity. Default is 1.
- */
- opacity: number;
-
- /**
- * Enables/disables overdraw. If greater than zero, polygons are drawn slightly bigger in order to fix antialiasing gaps when using the CanvasRenderer. Default is 0.
- */
- overdraw: number;
-
- /**
- * Whether to use polygon offset. Default is false. This corresponds to the POLYGON_OFFSET_FILL WebGL feature.
- */
- polygonOffset: boolean;
-
- /**
- * Sets the polygon offset factor. Default is 0.
- */
- polygonOffsetFactor: number;
-
- /**
- * Sets the polygon offset units. Default is 0.
- */
- polygonOffsetUnits: number;
-
- /**
- * Override the renderer's default precision for this material. Can be "highp", "mediump" or "lowp". Defaults is null.
- */
- precision: 'highp' | 'mediump' | 'lowp' | null;
-
- /**
- * Whether to premultiply the alpha (transparency) value. See WebGL / Materials / Transparency for an example of the difference. Default is false.
- */
- premultipliedAlpha: boolean;
-
- /**
- * Whether to apply dithering to the color to remove the appearance of banding. Default is false.
- */
- dithering: boolean;
-
- /**
- * Define whether the material is rendered with flat shading. Default is false.
- */
- flatShading: boolean;
-
- /**
- * Defines which of the face sides will be rendered - front, back or both.
- * Default is THREE.FrontSide. Other options are THREE.BackSide and THREE.DoubleSide.
- */
- side: Side;
-
- /**
- * Defines whether this material is transparent. This has an effect on rendering as transparent objects need special treatment and are rendered after non-transparent objects.
- * When set to true, the extent to which the material is transparent is controlled by setting it's .opacity property.
- * Default is false.
- */
- transparent: boolean;
-
- /**
- * Value is the string 'Material'. This shouldn't be changed, and can be used to find all objects of this type in a scene.
- */
- type: string;
-
- /**
- * UUID of this material instance. This gets automatically assigned, so this shouldn't be edited.
- */
- uuid: string;
-
- /**
- * Defines whether vertex coloring is used. Default is THREE.NoColors. Other options are THREE.VertexColors and THREE.FaceColors.
- */
- vertexColors: Colors;
-
- /**
- * Defines whether this material is visible. Default is true.
- */
- visible: boolean;
-
- /**
- * An object that can be used to store custom data about the Material. It should not hold references to functions as these will not be cloned.
- */
- userData: any;
-
- /**
- * Return a new material with the same parameters as this material.
- */
- clone(): this;
-
- /**
- * Copy the parameters from the passed material into this material.
- * @param material
- */
- copy(material: Material): this;
-
- /**
- * This disposes the material. Textures of a material don't get disposed. These needs to be disposed by {@link Texture}.
- */
- dispose(): void;
-
- /**
- * Sets the properties based on the values.
- * @param values A container with parameters.
- */
- setValues(values: MaterialParameters): void;
-
- /**
- * Convert the material to three.js JSON format.
- * @param meta Object containing metadata such as textures or images for the material.
- */
- toJSON(meta?: any): any;
-
- /**
- * Call .dispatchEvent ( { type: 'update' }) on the material.
- */
- update(): void;
-
-}
-
-export interface LineBasicMaterialParameters extends MaterialParameters {
- color?: Color | string | number;
- linewidth?: number;
- linecap?: string;
- linejoin?: string;
-}
-
-export class LineBasicMaterial extends Material {
- constructor(parameters?: LineBasicMaterialParameters);
-
- color: Color;
- linewidth: number;
- linecap: string;
- linejoin: string;
-
- setValues(parameters: LineBasicMaterialParameters): void;
-}
-
-export interface LineDashedMaterialParameters extends MaterialParameters {
- color?: Color | string | number;
- linewidth?: number;
- scale?: number;
- dashSize?: number;
- gapSize?: number;
-}
-
-export class LineDashedMaterial extends LineBasicMaterial {
- constructor(parameters?: LineDashedMaterialParameters);
-
- scale: number;
- dashSize: number;
- gapSize: number;
- isLineDashedMaterial: boolean;
-
- setValues(parameters: LineDashedMaterialParameters): void;
-}
-
-/**
- * parameters is an object with one or more properties defining the material's appearance.
- */
-export interface MeshBasicMaterialParameters extends MaterialParameters {
- color?: Color | string | number;
- opacity?: number;
- map?: Texture;
- aoMap?: Texture;
- aoMapIntensity?: number;
- specularMap?: Texture;
- alphaMap?: Texture;
- envMap?: Texture;
- combine?: Combine;
- reflectivity?: number;
- refractionRatio?: number;
- wireframe?: boolean;
- wireframeLinewidth?: number;
- wireframeLinecap?: string;
- wireframeLinejoin?: string;
- skinning?: boolean;
- morphTargets?: boolean;
-}
-
-export class MeshBasicMaterial extends Material {
- constructor(parameters?: MeshBasicMaterialParameters);
-
- color: Color;
- map: Texture | null;
- aoMap: Texture | null;
- aoMapIntensity: number;
- specularMap: Texture | null;
- alphaMap: Texture | null;
- envMap: Texture | null;
- combine: Combine;
- reflectivity: number;
- refractionRatio: number;
- wireframe: boolean;
- wireframeLinewidth: number;
- wireframeLinecap: string;
- wireframeLinejoin: string;
- skinning: boolean;
- morphTargets: boolean;
-
- setValues(parameters: MeshBasicMaterialParameters): void;
-}
-
-export interface MeshDepthMaterialParameters extends MaterialParameters {
- wireframe?: boolean;
- wireframeLinewidth?: number;
-}
-
-export class MeshDepthMaterial extends Material {
- constructor(parameters?: MeshDepthMaterialParameters);
-
- wireframe: boolean;
- wireframeLinewidth: number;
- depthPacking: DepthPackingStrategies;
-
- setValues(parameters: MeshDepthMaterialParameters): void;
-}
-
-export interface MeshLambertMaterialParameters extends MaterialParameters {
- color?: Color | string | number;
- emissive?: Color | string | number;
- emissiveIntensity?: number;
- emissiveMap?: Texture;
- map?: Texture;
- lightMap?: Texture;
- lightMapIntensity?: number;
- aoMap?: Texture;
- aoMapIntensity?: number;
- specularMap?: Texture;
- alphaMap?: Texture;
- envMap?: Texture;
- combine?: Combine;
- reflectivity?: number;
- refractionRatio?: number;
- wireframe?: boolean;
- wireframeLinewidth?: number;
- wireframeLinecap?: string;
- wireframeLinejoin?: string;
- skinning?: boolean;
- morphTargets?: boolean;
- morphNormals?: boolean;
-}
-
-export class MeshLambertMaterial extends Material {
- constructor(parameters?: MeshLambertMaterialParameters);
-
- color: Color;
- emissive: Color;
- emissiveIntensity: number;
- emissiveMap: Texture | null;
- map: Texture | null;
- lightMap: Texture | null;
- lightMapIntensity: number;
- aoMap: Texture | null;
- aoMapIntensity: number;
- specularMap: Texture | null;
- alphaMap: Texture | null;
- envMap: Texture | null;
- combine: Combine;
- reflectivity: number;
- refractionRatio: number;
- wireframe: boolean;
- wireframeLinewidth: number;
- wireframeLinecap: string;
- wireframeLinejoin: string;
- skinning: boolean;
- morphTargets: boolean;
- morphNormals: boolean;
-
- setValues(parameters: MeshLambertMaterialParameters): void;
-}
-
-export interface MeshStandardMaterialParameters extends MaterialParameters {
- color?: Color | string | number;
- roughness?: number;
- metalness?: number;
- map?: Texture;
- lightMap?: Texture;
- lightMapIntensity?: number;
- aoMap?: Texture;
- aoMapIntensity?: number;
- emissive?: Color | string | number;
- emissiveIntensity?: number;
- emissiveMap?: Texture;
- bumpMap?: Texture;
- bumpScale?: number;
- normalMap?: Texture;
- normalScale?: Vector2;
- displacementMap?: Texture;
- displacementScale?: number;
- displacementBias?: number;
- roughnessMap?: Texture;
- metalnessMap?: Texture;
- alphaMap?: Texture;
- envMap?: Texture;
- envMapIntensity?: number;
- refractionRatio?: number;
- wireframe?: boolean;
- wireframeLinewidth?: number;
- skinning?: boolean;
- morphTargets?: boolean;
- morphNormals?: boolean;
-}
-
-export class MeshStandardMaterial extends Material {
- constructor(parameters?: MeshStandardMaterialParameters);
-
- defines: any;
- color: Color;
- roughness: number;
- metalness: number;
- map: Texture | null;
- lightMap: Texture | null;
- lightMapIntensity: number;
- aoMap: Texture | null;
- aoMapIntensity: number;
- emissive: Color;
- emissiveIntensity: number;
- emissiveMap: Texture | null;
- bumpMap: Texture | null;
- bumpScale: number;
- normalMap: Texture | null;
- normalScale: number;
- displacementMap: Texture | null;
- displacementScale: number;
- displacementBias: number;
- roughnessMap: Texture | null;
- metalnessMap: Texture | null;
- alphaMap: Texture | null;
- envMap: Texture | null;
- envMapIntensity: number;
- refractionRatio: number;
- wireframe: boolean;
- wireframeLinewidth: number;
- skinning: boolean;
- morphTargets: boolean;
- morphNormals: boolean;
-
- setValues(parameters: MeshStandardMaterialParameters): void;
-}
-
-export interface MeshNormalMaterialParameters extends MaterialParameters {
- /** Render geometry as wireframe. Default is false (i.e. render as smooth shaded). */
- wireframe?: boolean;
- /** Controls wireframe thickness. Default is 1. */
- wireframeLinewidth?: number;
- morphTargets?: boolean;
-}
-
-export class MeshNormalMaterial extends Material {
- constructor(parameters?: MeshNormalMaterialParameters);
-
- wireframe: boolean;
- wireframeLinewidth: number;
- morphTargets: boolean;
-
- setValues(parameters: MeshNormalMaterialParameters): void;
-}
-
-export interface MeshPhongMaterialParameters extends MaterialParameters {
- /** geometry color in hexadecimal. Default is 0xffffff. */
- color?: Color | string | number;
- specular?: Color | string | number;
- shininess?: number;
- opacity?: number;
- map?: Texture;
- lightMap?: Texture;
- lightMapIntensity?: number;
- aoMap?: Texture;
- aoMapIntensity?: number;
- emissive?: Color | string | number;
- emissiveIntensity?: number;
- emissiveMap?: Texture;
- bumpMap?: Texture;
- bumpScale?: number;
- normalMap?: Texture;
- normalScale?: Vector2;
- displacementMap?: Texture;
- displacementScale?: number;
- displacementBias?: number;
- specularMap?: Texture;
- alphaMap?: Texture;
- envMap?: Texture;
- combine?: Combine;
- reflectivity?: number;
- refractionRatio?: number;
- wireframe?: boolean;
- wireframeLinewidth?: number;
- wireframeLinecap?: string;
- wireframeLinejoin?: string;
- skinning?: boolean;
- morphTargets?: boolean;
- morphNormals?: boolean;
-}
-
-export class MeshPhongMaterial extends Material {
- constructor(parameters?: MeshPhongMaterialParameters);
-
- color: Color;
- specular: Color;
- shininess: number;
- map: Texture | null;
- lightMap: Texture | null;
- lightMapIntensity: number;
- aoMap: Texture | null;
- aoMapIntensity: number;
- emissive: Color;
- emissiveIntensity: number;
- emissiveMap: Texture | null;
- bumpMap: Texture | null;
- bumpScale: number;
- normalMap: Texture | null;
- normalScale: Vector2;
- displacementMap: Texture | null;
- displacementScale: number;
- displacementBias: number;
- specularMap: Texture | null;
- alphaMap: Texture | null;
- envMap: Texture | null;
- combine: Combine;
- reflectivity: number;
- refractionRatio: number;
- wireframe: boolean;
- wireframeLinewidth: number;
- wireframeLinecap: string;
- wireframeLinejoin: string;
- skinning: boolean;
- morphTargets: boolean;
- morphNormals: boolean;
- /**
- * @deprecated Use {@link MeshStandardMaterial THREE.MeshStandardMaterial} instead.
- */
- metal: boolean;
-
- setValues(parameters: MeshPhongMaterialParameters): void;
-}
-
-export interface MeshPhysicalMaterialParameters extends MeshStandardMaterialParameters {
- reflectivity?: number;
- clearCoat?: number;
- clearCoatRoughness?: number;
-}
-
-export class MeshPhysicalMaterial extends MeshStandardMaterial {
- constructor(parameters: MeshPhysicalMaterialParameters);
-
- defines: any;
- reflectivity: number;
- clearCoat: number;
- clearCoatRoughness: number;
-}
-
-// MultiMaterial does not inherit the Material class in the original code. However, it should treat as Material class.
-// See tests/canvas/canvas_materials.ts.
-/**
- * @deprecated Use an Array instead.
- */
-export class MultiMaterial extends Material {
- constructor(materials?: Material[]);
-
- isMultiMaterial: true;
-
- materials: Material[];
-
- toJSON(meta: any): any;
-
-}
-
-/**
- * @deprecated Use {@link MultiMaterial} instead.
- */
-export class MeshFaceMaterial extends MultiMaterial {}
-
-export interface PointsMaterialParameters extends MaterialParameters {
- color?: Color | string | number;
- map?: Texture;
- size?: number;
- sizeAttenuation?: boolean;
-}
-
-export class PointsMaterial extends Material {
- constructor(parameters?: PointsMaterialParameters);
-
- color: Color;
- map: Texture | null;
- size: number;
- sizeAttenuation: boolean;
-
- setValues(parameters: PointsMaterialParameters): void;
-}
-
-/**
- * @deprecated Use {@link PointsMaterial THREE.PointsMaterial} instead
- */
-export class PointCloudMaterial extends PointsMaterial {}
-/**
- * @deprecated Use {@link PointsMaterial THREE.PointsMaterial} instead
- */
-export class ParticleBasicMaterial extends PointsMaterial {}
-/**
- * @deprecated Use {@link PointsMaterial THREE.PointsMaterial} instead
- */
-export class ParticleSystemMaterial extends PointsMaterial {}
-
-export interface ShaderMaterialParameters extends MaterialParameters {
- defines?: any;
- uniforms?: any;
- vertexShader?: string;
- fragmentShader?: string;
- linewidth?: number;
- wireframe?: boolean;
- wireframeLinewidth?: number;
- lights?: boolean;
- clipping?: boolean;
- skinning?: boolean;
- morphTargets?: boolean;
- morphNormals?: boolean;
-}
-
-export class ShaderMaterial extends Material {
- constructor(parameters?: ShaderMaterialParameters);
-
- defines: any;
- uniforms: { [uniform: string]: IUniform };
- vertexShader: string;
- fragmentShader: string;
- linewidth: number;
- wireframe: boolean;
- wireframeLinewidth: number;
- lights: boolean;
- clipping: boolean;
- skinning: boolean;
- morphTargets: boolean;
- morphNormals: boolean;
- /**
- * @deprecated Use {@link ShaderMaterial#extensions.derivatives extensions.derivatives} instead.
- */
- derivatives: any;
- extensions: { derivatives: boolean; fragDepth: boolean; drawBuffers: boolean; shaderTextureLOD: boolean };
- defaultAttributeValues: any;
- index0AttributeName: string | undefined;
-
- setValues(parameters: ShaderMaterialParameters): void;
- toJSON(meta: any): any;
-}
-
-export class RawShaderMaterial extends ShaderMaterial {
- constructor(parameters?: ShaderMaterialParameters);
-}
-
-export interface SpriteMaterialParameters extends MaterialParameters {
- color?: Color | string | number;
- map?: Texture;
- rotation?: number;
-}
-
-export class SpriteMaterial extends Material {
- constructor(parameters?: SpriteMaterialParameters);
-
- color: Color;
- map: Texture | null;
- rotation: number;
- isSpriteMaterial: true;
-
- setValues(parameters: SpriteMaterialParameters): void;
- copy(source: SpriteMaterial): this;
-}
-
-export class ShadowMaterial extends ShaderMaterial {
- constructor(parameters?: ShaderMaterialParameters);
-}
-
-// Math //////////////////////////////////////////////////////////////////////////////////
-
-export class Box2 {
- constructor(min?: Vector2, max?: Vector2);
-
- max: Vector2;
- min: Vector2;
-
- set(min: Vector2, max: Vector2): Box2;
- setFromPoints(points: Vector2[]): Box2;
- setFromCenterAndSize(center: Vector2, size: Vector2): Box2;
- clone(): this;
- copy(box: Box2): this;
- makeEmpty(): Box2;
- isEmpty(): boolean;
- getCenter(target: Vector2): Vector2;
- getSize(target: Vector2): Vector2;
- expandByPoint(point: Vector2): Box2;
- expandByVector(vector: Vector2): Box2;
- expandByScalar(scalar: number): Box2;
- containsPoint(point: Vector2): boolean;
- containsBox(box: Box2): boolean;
- getParameter(point: Vector2): Vector2;
- intersectsBox(box: Box2): boolean;
- clampPoint(point: Vector2, target: Vector2): Vector2;
- distanceToPoint(point: Vector2): number;
- intersect(box: Box2): Box2;
- union(box: Box2): Box2;
- translate(offset: Vector2): Box2;
- equals(box: Box2): boolean;
- /**
- * @deprecated Use {@link Box2#isEmpty .isEmpty()} instead.
- */
- empty(): any;
- /**
- * @deprecated Use {@link Box2#intersectsBox .intersectsBox()} instead.
- */
- isIntersectionBox(b: any): any;
-}
-
-export class Box3 {
- constructor(min?: Vector3, max?: Vector3);
-
- max: Vector3;
- min: Vector3;
-
- set(min: Vector3, max: Vector3): this;
- setFromArray(array: ArrayLike): this;
- setFromPoints(points: Vector3[]): this;
- setFromCenterAndSize(center: Vector3, size: Vector3): this;
- setFromObject(object: Object3D): this;
- clone(): this;
- copy(box: Box3): this;
- makeEmpty(): this;
- isEmpty(): boolean;
- getCenter(target: Vector3): Vector3;
- getSize(target: Vector3): Vector3;
- expandByPoint(point: Vector3): this;
- expandByVector(vector: Vector3): this;
- expandByScalar(scalar: number): this;
- expandByObject(object: Object3D): this;
- containsPoint(point: Vector3): boolean;
- containsBox(box: Box3): boolean;
- getParameter(point: Vector3): Vector3;
- intersectsBox(box: Box3): boolean;
- intersectsSphere(sphere: Sphere): boolean;
- intersectsPlane(plane: Plane): boolean;
- clampPoint(point: Vector3, target: Vector3): Vector3;
- distanceToPoint(point: Vector3): number;
- getBoundingSphere(target: Sphere): Sphere;
- intersect(box: Box3): this;
- union(box: Box3): this;
- applyMatrix4(matrix: Matrix4): this;
- translate(offset: Vector3): this;
- equals(box: Box3): boolean;
- /**
- * @deprecated Use {@link Box3#isEmpty .isEmpty()} instead.
- */
- empty(): any;
- /**
- * @deprecated Use {@link Box3#intersectsBox .intersectsBox()} instead.
- */
- isIntersectionBox(b: any): any;
- /**
- * @deprecated Use {@link Box3#intersectsSphere .intersectsSphere()} instead.
- */
- isIntersectionSphere(s: any): any;
-}
-
-export interface HSL {
- h: number;
- s: number;
- l: number;
-}
-
-/**
- * Represents a color. See also {@link ColorUtils}.
- *
- * @example
- * var color = new THREE.Color( 0xff0000 );
- *
- * @see src/math/Color.js
- */
-export class Color {
- constructor(color?: Color|string|number);
- constructor(r: number, g: number, b: number);
-
- /**
- * Red channel value between 0 and 1. Default is 1.
- */
- r: number;
-
- /**
- * Green channel value between 0 and 1. Default is 1.
- */
- g: number;
-
- /**
- * Blue channel value between 0 and 1. Default is 1.
- */
- b: number;
-
- set(color: Color): Color;
- set(color: number): Color;
- set(color: string): Color;
- setScalar(scalar: number): Color;
- setHex(hex: number): Color;
-
- /**
- * Sets this color from RGB values.
- * @param r Red channel value between 0 and 1.
- * @param g Green channel value between 0 and 1.
- * @param b Blue channel value between 0 and 1.
- */
- setRGB(r: number, g: number, b: number): Color;
-
- /**
- * Sets this color from HSL values.
- * Based on MochiKit implementation by Bob Ippolito.
- *
- * @param h Hue channel value between 0 and 1.
- * @param s Saturation value channel between 0 and 1.
- * @param l Value channel value between 0 and 1.
- */
- setHSL(h: number, s: number, l: number): Color;
-
- /**
- * Sets this color from a CSS context style string.
- * @param contextStyle Color in CSS context style format.
- */
- setStyle(style: string): Color;
-
- /**
- * Clones this color.
- */
- clone(): this;
-
- /**
- * Copies given color.
- * @param color Color to copy.
- */
- copy(color: Color): this;
-
- /**
- * Copies given color making conversion from gamma to linear space.
- * @param color Color to copy.
- */
- copyGammaToLinear(color: Color, gammaFactor?: number): Color;
-
- /**
- * Copies given color making conversion from linear to gamma space.
- * @param color Color to copy.
- */
- copyLinearToGamma(color: Color, gammaFactor?: number): Color;
-
- /**
- * Converts this color from gamma to linear space.
- */
- convertGammaToLinear(): Color;
-
- /**
- * Converts this color from linear to gamma space.
- */
- convertLinearToGamma(): Color;
-
- /**
- * Returns the hexadecimal value of this color.
- */
- getHex(): number;
-
- /**
- * Returns the string formated hexadecimal value of this color.
- */
- getHexString(): string;
-
- getHSL(target: HSL): HSL;
-
- /**
- * Returns the value of this color in CSS context style.
- * Example: rgb(r, g, b)
- */
- getStyle(): string;
-
- offsetHSL(h: number, s: number, l: number): this;
-
- add(color: Color): this;
- addColors(color1: Color, color2: Color): this;
- addScalar(s: number): this;
- sub(color: Color): this;
- multiply(color: Color): this;
- multiplyScalar(s: number): this;
- lerp(color: Color, alpha: number): this;
- lerpHSL(color: Color, alpha: number): this;
- equals(color: Color): boolean;
- fromArray(rgb: number[], offset?: number): this;
- toArray(array?: number[], offset?: number): number[];
- toArray(xyz: ArrayLike, offset?: number): ArrayLike;
-}
-
-export namespace ColorKeywords {
- export const aliceblue: number;
- export const antiquewhite: number;
- export const aqua: number;
- export const aquamarine: number;
- export const azure: number;
- export const beige: number;
- export const bisque: number;
- export const black: number;
- export const blanchedalmond: number;
- export const blue: number;
- export const blueviolet: number;
- export const brown: number;
- export const burlywood: number;
- export const cadetblue: number;
- export const chartreuse: number;
- export const chocolate: number;
- export const coral: number;
- export const cornflowerblue: number;
- export const cornsilk: number;
- export const crimson: number;
- export const cyan: number;
- export const darkblue: number;
- export const darkcyan: number;
- export const darkgoldenrod: number;
- export const darkgray: number;
- export const darkgreen: number;
- export const darkgrey: number;
- export const darkkhaki: number;
- export const darkmagenta: number;
- export const darkolivegreen: number;
- export const darkorange: number;
- export const darkorchid: number;
- export const darkred: number;
- export const darksalmon: number;
- export const darkseagreen: number;
- export const darkslateblue: number;
- export const darkslategray: number;
- export const darkslategrey: number;
- export const darkturquoise: number;
- export const darkviolet: number;
- export const deeppink: number;
- export const deepskyblue: number;
- export const dimgray: number;
- export const dimgrey: number;
- export const dodgerblue: number;
- export const firebrick: number;
- export const floralwhite: number;
- export const forestgreen: number;
- export const fuchsia: number;
- export const gainsboro: number;
- export const ghostwhite: number;
- export const gold: number;
- export const goldenrod: number;
- export const gray: number;
- export const green: number;
- export const greenyellow: number;
- export const grey: number;
- export const honeydew: number;
- export const hotpink: number;
- export const indianred: number;
- export const indigo: number;
- export const ivory: number;
- export const khaki: number;
- export const lavender: number;
- export const lavenderblush: number;
- export const lawngreen: number;
- export const lemonchiffon: number;
- export const lightblue: number;
- export const lightcoral: number;
- export const lightcyan: number;
- export const lightgoldenrodyellow: number;
- export const lightgray: number;
- export const lightgreen: number;
- export const lightgrey: number;
- export const lightpink: number;
- export const lightsalmon: number;
- export const lightseagreen: number;
- export const lightskyblue: number;
- export const lightslategray: number;
- export const lightslategrey: number;
- export const lightsteelblue: number;
- export const lightyellow: number;
- export const lime: number;
- export const limegreen: number;
- export const linen: number;
- export const magenta: number;
- export const maroon: number;
- export const mediumaquamarine: number;
- export const mediumblue: number;
- export const mediumorchid: number;
- export const mediumpurple: number;
- export const mediumseagreen: number;
- export const mediumslateblue: number;
- export const mediumspringgreen: number;
- export const mediumturquoise: number;
- export const mediumvioletred: number;
- export const midnightblue: number;
- export const mintcream: number;
- export const mistyrose: number;
- export const moccasin: number;
- export const navajowhite: number;
- export const navy: number;
- export const oldlace: number;
- export const olive: number;
- export const olivedrab: number;
- export const orange: number;
- export const orangered: number;
- export const orchid: number;
- export const palegoldenrod: number;
- export const palegreen: number;
- export const paleturquoise: number;
- export const palevioletred: number;
- export const papayawhip: number;
- export const peachpuff: number;
- export const peru: number;
- export const pink: number;
- export const plum: number;
- export const powderblue: number;
- export const purple: number;
- export const red: number;
- export const rosybrown: number;
- export const royalblue: number;
- export const saddlebrown: number;
- export const salmon: number;
- export const sandybrown: number;
- export const seagreen: number;
- export const seashell: number;
- export const sienna: number;
- export const silver: number;
- export const skyblue: number;
- export const slateblue: number;
- export const slategray: number;
- export const slategrey: number;
- export const snow: number;
- export const springgreen: number;
- export const steelblue: number;
- export const tan: number;
- export const teal: number;
- export const thistle: number;
- export const tomato: number;
- export const turquoise: number;
- export const violet: number;
- export const wheat: number;
- export const white: number;
- export const whitesmoke: number;
- export const yellow: number;
- export const yellowgreen: number;
-}
-
-export class Euler {
- constructor(x?: number, y?: number, z?: number, order?: string);
-
- x: number;
- y: number;
- z: number;
- order: string;
- onChangeCallback: Function;
-
- set(x: number, y: number, z: number, order?: string): Euler;
- clone(): this;
- copy(euler: Euler): this;
- setFromRotationMatrix(m: Matrix4, order?: string, update?: boolean): Euler;
- setFromQuaternion(q: Quaternion, order?: string, update?: boolean): Euler;
- setFromVector3( v: Vector3, order?: string ): Euler;
- reorder(newOrder: string): Euler;
- equals(euler: Euler): boolean;
- fromArray(xyzo: any[]): Euler;
- toArray(array?: number[], offset?: number): number[];
- toVector3(optionalResult?: Vector3): Vector3;
- onChange(callback: Function): this;
-
- static RotationOrders: string[];
- static DefaultOrder: string;
-}
-
-/**
- * Frustums are used to determine what is inside the camera's field of view. They help speed up the rendering process.
- */
-export class Frustum {
- constructor(p0?: Plane, p1?: Plane, p2?: Plane, p3?: Plane, p4?: Plane, p5?: Plane);
-
- /**
- * Array of 6 vectors.
- */
- planes: Plane[];
-
- set(p0?: number, p1?: number, p2?: number, p3?: number, p4?: number, p5?: number): Frustum;
- clone(): this;
- copy(frustum: Frustum): this;
- setFromMatrix(m: Matrix4): Frustum;
- intersectsObject(object: Object3D): boolean;
- intersectsObject(sprite: Sprite): boolean;
- intersectsSphere(sphere: Sphere): boolean;
- intersectsBox(box: Box3): boolean;
- containsPoint(point: Vector3): boolean;
-}
-
-export class Line3 {
- constructor(start?: Vector3, end?: Vector3);
-
- start: Vector3;
- end: Vector3;
-
- set(start?: Vector3, end?: Vector3): Line3;
- clone(): this;
- copy(line: Line3): this;
- getCenter(target: Vector3): Vector3;
- delta(target: Vector3): Vector3;
- distanceSq(): number;
- distance(): number;
- at(t: number, target: Vector3): Vector3;
- closestPointToPointParameter(point: Vector3, clampToLine?: boolean): number;
- closestPointToPoint(point: Vector3, clampToLine: boolean, target: Vector3): Vector3;
- applyMatrix4(matrix: Matrix4): Line3;
- equals(line: Line3): boolean;
-}
-
-/**
- *
- * @see src/math/Math.js
- */
-export namespace Math {
- export const DEG2RAD: number;
- export const RAD2DEG: number;
-
- export function generateUUID(): string;
-
- /**
- * Clamps the x to be between a and b.
- *
- * @param value Value to be clamped.
- * @param min Minimum value
- * @param max Maximum value.
- */
- export function clamp(value: number, min: number, max: number): number;
- export function euclideanModulo( n: number, m: number ): number;
-
- /**
- * Linear mapping of x from range [a1, a2] to range [b1, b2].
- *
- * @param x Value to be mapped.
- * @param a1 Minimum value for range A.
- * @param a2 Maximum value for range A.
- * @param b1 Minimum value for range B.
- * @param b2 Maximum value for range B.
- */
- export function mapLinear(x: number, a1: number, a2: number, b1: number, b2: number): number;
-
- export function smoothstep(x: number, min: number, max: number): number;
-
- export function smootherstep(x: number, min: number, max: number): number;
-
- /**
- * Random float from 0 to 1 with 16 bits of randomness.
- * Standard Math.random() creates repetitive patterns when applied over larger space.
- *
- * @deprecated Use {@link Math#random Math.random()}
- */
- export function random16(): number;
-
- /**
- * Random integer from low to high interval.
- */
- export function randInt(low: number, high: number): number;
-
- /**
- * Random float from low to high interval.
- */
- export function randFloat(low: number, high: number): number;
-
- /**
- * Random float from - range / 2 to range / 2 interval.
- */
- export function randFloatSpread(range: number): number;
-
- export function degToRad(degrees: number): number;
-
- export function radToDeg(radians: number): number;
-
- export function isPowerOfTwo(value: number): boolean;
-
- /**
- * Returns a value linearly interpolated from two known points based
- * on the given interval - t = 0 will return x and t = 1 will return y.
- *
- * @param x Start point.
- * @param y End point.
- * @param t interpolation factor in the closed interval [0, 1]
- * @return {number}
- */
- export function lerp (x: number, y: number, t: number): number;
-
- /**
- * @deprecated Use {@link Math#floorPowerOfTwo .floorPowerOfTwo()}
- */
- export function nearestPowerOfTwo(value: number): number;
-
- /**
- * @deprecated Use {@link Math#ceilPowerOfTwo .ceilPowerOfTwo()}
- */
- export function nextPowerOfTwo(value: number): number;
-
- export function floorPowerOfTwo(value: number): number;
-
- export function ceilPowerOfTwo(value: number): number;
-
-}
-
-/**
- * ( interface Matrix<T> )
- */
-export interface Matrix {
- /**
- * Float32Array with matrix values.
- */
- elements: Float32Array;
-
- /**
- * identity():T;
- */
- identity(): Matrix;
-
- /**
- * copy(m:T):T;
- */
- copy(m: this): this;
-
- /**
- * multiplyScalar(s:number):T;
- */
- multiplyScalar(s: number): Matrix;
-
- determinant(): number;
-
- /**
- * getInverse(matrix:T, throwOnInvertible?:boolean):T;
- */
- getInverse(matrix: Matrix, throwOnInvertible?: boolean): Matrix;
-
- /**
- * transpose():T;
- */
- transpose(): Matrix;
-
- /**
- * clone():T;
- */
- clone(): this;
-}
-
-/**
- * ( class Matrix3 implements Matrix<Matrix3> )
- */
-export class Matrix3 implements Matrix {
- /**
- * Creates an identity matrix.
- */
- constructor();
-
- /**
- * Float32Array with matrix values.
- */
- elements: Float32Array;
-
- set(n11: number, n12: number, n13: number, n21: number, n22: number, n23: number, n31: number, n32: number, n33: number): Matrix3;
- identity(): Matrix3;
- clone(): this;
- copy(m: Matrix3): this;
- setFromMatrix4(m: Matrix4): Matrix3;
-
- /**
- * @deprecated Use {@link Matrix3#applyToBufferAttribute matrix3.applyToBufferAttribute( attribute )} instead.
- */
- applyToBuffer(buffer: BufferAttribute, offset?: number, length?: number): BufferAttribute;
-
- applyToBufferAttribute(attribute: BufferAttribute): BufferAttribute;
-
- multiplyScalar(s: number): Matrix3;
- determinant(): number;
- getInverse(matrix: Matrix3, throwOnDegenerate?: boolean): Matrix3;
-
- /**
- * Transposes this matrix in place.
- */
- transpose(): Matrix3;
- getNormalMatrix(matrix4: Matrix4): Matrix3;
-
- /**
- * Transposes this matrix into the supplied array r, and returns itself.
- */
- transposeIntoArray(r: number[]): number[];
- fromArray(array: number[], offset?: number): Matrix3;
- toArray(): number[];
-
- /**
- * Multiplies this matrix by m.
- */
- multiply(m: Matrix3): Matrix3;
-
- premultiply(m: Matrix3): Matrix3;
-
- /**
- * Sets this matrix to a x b.
- */
- multiplyMatrices(a: Matrix3, b: Matrix3): Matrix3;
-
- /**
- * @deprecated Use {@link Vector3.applyMatrix3 vector.applyMatrix3( matrix )} instead.
- */
- multiplyVector3(vector: Vector3): any;
-
- /**
- * @deprecated This method has been removed completely.
- */
- multiplyVector3Array(a: any): any;
- getInverse(matrix: Matrix4, throwOnDegenerate?: boolean): Matrix3;
-
- /**
- * @deprecated Use {@link Matrix3#toArray .toArray()} instead.
- */
- flattenToArrayOffset(array: number[], offset: number): number[];
-}
-
-/**
- * A 4x4 Matrix.
- *
- * @example
- * // Simple rig for rotating around 3 axes
- * var m = new THREE.Matrix4();
- * var m1 = new THREE.Matrix4();
- * var m2 = new THREE.Matrix4();
- * var m3 = new THREE.Matrix4();
- * var alpha = 0;
- * var beta = Math.PI;
- * var gamma = Math.PI/2;
- * m1.makeRotationX( alpha );
- * m2.makeRotationY( beta );
- * m3.makeRotationZ( gamma );
- * m.multiplyMatrices( m1, m2 );
- * m.multiply( m3 );
- */
-export class Matrix4 implements Matrix {
- constructor();
-
- /**
- * Float32Array with matrix values.
- */
- elements: Float32Array;
-
- /**
- * Sets all fields of this matrix.
- */
- set(n11: number, n12: number, n13: number, n14: number, n21: number, n22: number, n23: number, n24: number, n31: number, n32: number, n33: number, n34: number, n41: number, n42: number, n43: number, n44: number): Matrix4;
-
- /**
- * Resets this matrix to identity.
- */
- identity(): Matrix4;
- clone(): this;
- copy(m: Matrix4): this;
- copyPosition(m: Matrix4): Matrix4;
- extractBasis( xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): Matrix4;
- makeBasis( xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): Matrix4;
-
- /**
- * Copies the rotation component of the supplied matrix m into this matrix rotation component.
- */
- extractRotation(m: Matrix4): Matrix4;
- makeRotationFromEuler(euler: Euler): Matrix4;
- makeRotationFromQuaternion(q: Quaternion): Matrix4;
- /**
- * Constructs a rotation matrix, looking from eye towards center with defined up vector.
- */
- lookAt(eye: Vector3, target: Vector3, up: Vector3): Matrix4;
-
- /**
- * Multiplies this matrix by m.
- */
- multiply(m: Matrix4): Matrix4;
-
- premultiply(m: Matrix4): Matrix4;
-
- /**
- * Sets this matrix to a x b.
- */
- multiplyMatrices(a: Matrix4, b: Matrix4): Matrix4;
-
- /**
- * Sets this matrix to a x b and stores the result into the flat array r.
- * r can be either a regular Array or a TypedArray.
- *
- * @deprecated This method has been removed completely.
- */
- multiplyToArray(a: Matrix4, b: Matrix4, r: number[]): Matrix4;
-
- /**
- * Multiplies this matrix by s.
- */
- multiplyScalar(s: number): Matrix4;
-
- /**
- * @deprecated Use {@link Matrix4#applyToBufferAttribute matrix4.applyToBufferAttribute( attribute )} instead.
- */
- applyToBuffer( buffer: BufferAttribute, offset?: number, length?: number): BufferAttribute;
-
- applyToBufferAttribute(attribute: BufferAttribute): BufferAttribute;
-
- /**
- * Computes determinant of this matrix.
- * Based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm
- */
- determinant(): number;
-
- /**
- * Transposes this matrix.
- */
- transpose(): Matrix4;
-
- /**
- * Sets the position component for this matrix from vector v.
- */
- setPosition(v: Vector3): Matrix4;
-
- /**
- * Sets this matrix to the inverse of matrix m.
- * Based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm.
- */
- getInverse(m: Matrix4, throwOnDegeneratee?: boolean): Matrix4;
-
- /**
- * Multiplies the columns of this matrix by vector v.
- */
- scale(v: Vector3): Matrix4;
-
- getMaxScaleOnAxis(): number;
- /**
- * Sets this matrix as translation transform.
- */
- makeTranslation(x: number, y: number, z: number): Matrix4;
-
- /**
- * Sets this matrix as rotation transform around x axis by theta radians.
- *
- * @param theta Rotation angle in radians.
- */
- makeRotationX(theta: number): Matrix4;
-
- /**
- * Sets this matrix as rotation transform around y axis by theta radians.
- *
- * @param theta Rotation angle in radians.
- */
- makeRotationY(theta: number): Matrix4;
-
- /**
- * Sets this matrix as rotation transform around z axis by theta radians.
- *
- * @param theta Rotation angle in radians.
- */
- makeRotationZ(theta: number): Matrix4;
-
- /**
- * Sets this matrix as rotation transform around axis by angle radians.
- * Based on http://www.gamedev.net/reference/articles/article1199.asp.
- *
- * @param axis Rotation axis.
- * @param theta Rotation angle in radians.
- */
- makeRotationAxis(axis: Vector3, angle: number): Matrix4;
-
- /**
- * Sets this matrix as scale transform.
- */
- makeScale(x: number, y: number, z: number): Matrix4;
-
- /**
- * Sets this matrix to the transformation composed of translation, rotation and scale.
- */
- compose(translation: Vector3, rotation: Quaternion, scale: Vector3): Matrix4;
-
- /**
- * Decomposes this matrix into the translation, rotation and scale components.
- * If parameters are not passed, new instances will be created.
- */
- decompose(translation?: Vector3, rotation?: Quaternion, scale?: Vector3): Object[]; // [Vector3, Quaternion, Vector3]
-
- /**
- * Creates a frustum matrix.
- */
- makePerspective(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4;
-
- /**
- * Creates a perspective projection matrix.
- */
- makePerspective(fov: number, aspect: number, near: number, far: number): Matrix4;
-
- /**
- * 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[], offset?: number): Matrix4;
- toArray(): number[];
-
- /**
- * @deprecated Use {@link Matrix4#copyPosition .copyPosition()} instead.
- */
- extractPosition(m: Matrix4): Matrix4;
-
- /**
- * @deprecated Use {@link Matrix4#makeRotationFromQuaternion .makeRotationFromQuaternion()} instead.
- */
- setRotationFromQuaternion(q: Quaternion): Matrix4;
-
- /**
- * @deprecated Use {@link Vector3#applyMatrix4 vector.applyMatrix4( matrix )} instead.
- */
- multiplyVector3(v: any): any;
-
- /**
- * @deprecated Use {@link Vector4#applyMatrix4 vector.applyMatrix4( matrix )} instead.
- */
- multiplyVector4(v: any): any;
-
- /**
- * @deprecated This method has been removed completely.
- */
- multiplyVector3Array(array: number[]): number[];
-
- /**
- * @deprecated Use {@link Vector3#transformDirection Vector3.transformDirection( matrix )} instead.
- */
- rotateAxis(v: any): void;
-
- /**
- * @deprecated Use {@link Vector3#applyMatrix4 vector.applyMatrix4( matrix )} instead.
- */
- crossVector(v: any): void;
-
- /**
- * @deprecated Use {@link Matrix4#toArray .toArray()} instead.
- */
- flattenToArrayOffset(array: number[], offset: number): number[];
-}
-
-export class Plane {
- constructor(normal?: Vector3, constant?: number);
-
- normal: Vector3;
- constant: number;
-
- set(normal: Vector3, constant: number): Plane;
- 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(): this;
- copy(plane: Plane): this;
- normalize(): Plane;
- negate(): Plane;
- distanceToPoint(point: Vector3): number;
- distanceToSphere(sphere: Sphere): number;
- projectPoint(point: Vector3, target: Vector3): Vector3;
- orthoPoint(point: Vector3, target: Vector3): Vector3;
- intersectLine(line: Line3, target: Vector3): Vector3;
- intersectsLine(line: Line3): boolean;
- intersectsBox(box: Box3): boolean;
- coplanarPoint(target: Vector3): Vector3;
- applyMatrix4(matrix: Matrix4, optionalNormalMatrix?: Matrix3): Plane;
- translate(offset: Vector3): Plane;
- equals(plane: Plane): boolean;
-
- /**
- * @deprecated Use {@link Plane#intersectsLine .intersectsLine()} instead.
- */
- isIntersectionLine(l: any): any;
-}
-
-export class Spherical {
- constructor(radius?: number, phi?: number, theta?: number);
-
- radius: number;
- phi: number;
- theta: number;
-
- set(radius: number, phi: number, theta: number): Spherical;
- clone(): this;
- copy(other: Spherical): this;
- makeSafe(): void;
- setFromVector3(vec3: Vector3): Spherical;
-}
-
-export class Cylindrical {
- constructor(radius?: number, theta?: number, y?: number);
-
- radius: number;
- theta: number;
- y: number;
-
- clone(): this;
- copy(other: Cylindrical): this;
- set(radius: number, theta: number, y: number): this;
- setFromVector3(vec3: Vector3): this;
-}
-
-/**
- * Implementation of a quaternion. This is used for rotating things without incurring in the dreaded gimbal lock issue, amongst other advantages.
- *
- * @example
- * var quaternion = new THREE.Quaternion();
- * quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 );
- * var vector = new THREE.Vector3( 1, 0, 0 );
- * vector.applyQuaternion( quaternion );
- */
-export class Quaternion {
- /**
- * @param x x coordinate
- * @param y y coordinate
- * @param z z coordinate
- * @param w w coordinate
- */
- constructor(x?: number, y?: number, z?: number, w?: number);
-
- x: number;
- y: number;
- z: number;
- w: number;
-
- /**
- * Sets values of this quaternion.
- */
- set(x: number, y: number, z: number, w: number): Quaternion;
-
- /**
- * Clones this quaternion.
- */
- clone(): this;
-
- /**
- * Copies values of q to this quaternion.
- */
- copy(q: Quaternion): this;
-
- /**
- * Sets this quaternion from rotation specified by Euler angles.
- */
- setFromEuler(euler: Euler, update?: boolean): Quaternion;
-
- /**
- * Sets this quaternion from rotation specified by axis and angle.
- * Adapted from http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm.
- * Axis have to be normalized, angle is in radians.
- */
- setFromAxisAngle(axis: Vector3, angle: number): Quaternion;
-
- /**
- * Sets this quaternion from rotation component of m. Adapted from http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm.
- */
- setFromRotationMatrix(m: Matrix4): Quaternion;
- setFromUnitVectors(vFrom: Vector3, vTo: Vector3): Quaternion;
- /**
- * Inverts this quaternion.
- */
- inverse(): Quaternion;
-
- conjugate(): Quaternion;
- dot(v: Quaternion): number;
- lengthSq(): number;
-
- /**
- * Computes length of this quaternion.
- */
- length(): number;
-
- /**
- * Normalizes this quaternion.
- */
- normalize(): Quaternion;
-
- /**
- * Multiplies this quaternion by b.
- */
- multiply(q: Quaternion): Quaternion;
- premultiply(q: Quaternion): Quaternion;
-
- /**
- * Sets this quaternion to a x b
- * Adapted from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm.
- */
- multiplyQuaternions(a: Quaternion, b: Quaternion): Quaternion;
-
-
- slerp(qb: Quaternion, t: number): Quaternion;
- equals(v: Quaternion): boolean;
- fromArray(n: number[]): Quaternion;
- toArray(): number[];
-
- fromArray(xyzw: number[], offset?: number): Quaternion;
- toArray(xyzw?: number[], offset?: number): number[];
-
- onChange(callback: Function): Quaternion;
- onChangeCallback: Function;
-
- /**
- * Adapted from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/.
- */
- static slerp(qa: Quaternion, qb: Quaternion, qm: Quaternion, t: number): Quaternion;
-
- static slerpFlat(dst: number[], dstOffset: number, src0: number[], srcOffset: number, src1: number[], stcOffset1: number, t: number): Quaternion;
-
- /**
- * @deprecated Use {@link Vector#applyQuaternion vector.applyQuaternion( quaternion )} instead.
- */
- multiplyVector3(v: any): any;
-}
-
-export class Ray {
- constructor(origin?: Vector3, direction?: Vector3);
-
- origin: Vector3;
- direction: Vector3;
-
- set(origin: Vector3, direction: Vector3): Ray;
- clone(): this;
- copy(ray: Ray): this;
- at(t: number, target: Vector3): Vector3;
- lookAt(v: Vector3): Vector3;
- recast(t: number): Ray;
- closestPointToPoint(point: Vector3, target: Vector3): Vector3;
- distanceToPoint(point: Vector3): number;
- distanceSqToPoint(point: Vector3): number;
- distanceSqToSegment(v0: Vector3, v1: Vector3, optionalPointOnRay?: Vector3, optionalPointOnSegment?: Vector3): number;
- intersectSphere(sphere: Sphere, target: Vector3): Vector3;
- intersectsSphere(sphere: Sphere): boolean;
- distanceToPlane(plane: Plane): number;
- intersectPlane(plane: Plane, target: Vector3): Vector3;
- intersectsPlane(plane: Plane): boolean;
- intersectBox(box: Box3, target: Vector3): Vector3;
- intersectsBox(box: Box3): boolean;
- intersectTriangle(a: Vector3, b: Vector3, c: Vector3, backfaceCulling: boolean, target: Vector3): Vector3;
- applyMatrix4(matrix4: Matrix4): Ray;
- equals(ray: Ray): boolean;
-
- /**
- * @deprecated Use {@link Ray#intersectsBox .intersectsBox()} instead.
- */
- isIntersectionBox(b: any): any;
-
- /**
- * @deprecated Use {@link Ray#intersectsPlane .intersectsPlane()} instead.
- */
- isIntersectionPlane(p: any): any;
-
- /**
- * @deprecated Use {@link Ray#intersectsSphere .intersectsSphere()} instead.
- */
- isIntersectionSphere(s: any): any;
-}
-
-export class Sphere {
- constructor(center?: Vector3, radius?: number);
-
- center: Vector3;
- radius: number;
-
- set(center: Vector3, radius: number): Sphere;
- setFromPoints(points: Vector3[], optionalCenter?: Vector3): Sphere;
- clone(): this;
- copy(sphere: Sphere): this;
- empty(): boolean;
- containsPoint(point: Vector3): boolean;
- distanceToPoint(point: Vector3): number;
- intersectsSphere(sphere: Sphere): boolean;
- intersectsBox(box: Box3): boolean;
- intersectsPlane(plane: Plane): boolean;
- clampPoint(point: Vector3, target: Vector3): Vector3;
- getBoundingBox(target: Box3): Box3;
- applyMatrix4(matrix: Matrix4): Sphere;
- translate(offset: Vector3): Sphere;
- equals(sphere: Sphere): boolean;
-}
-
-export interface SplineControlPoint {
- x: number;
- y: number;
- z: number;
-}
-
-export class Triangle {
- constructor(a?: Vector3, b?: Vector3, c?: Vector3);
-
- a: Vector3;
- b: Vector3;
- c: Vector3;
-
- set(a: Vector3, b: Vector3, c: Vector3): Triangle;
- setFromPointsAndIndices(points: Vector3[], i0: number, i1: number, i2: number): Triangle;
- clone(): this;
- copy(triangle: Triangle): this;
- getArea(): number;
- getMidpoint(target: Vector3): Vector3;
- getNormal(target: Vector3): Vector3;
- getPlane(target: Vector3): Plane;
- getBarycoord(point: Vector3, target: Vector3): Vector3;
- containsPoint(point: Vector3): boolean;
- closestPointToPoint(point: Vector3, target: Vector3): Vector3;
- equals(triangle: Triangle): boolean;
-
- static getNormal(a: Vector3, b: Vector3, c: Vector3, target: Vector3): Vector3;
- static getBarycoord(point: Vector3, a: Vector3, b: Vector3, c: Vector3, target: Vector3): Vector3;
- static containsPoint(point: Vector3, a: Vector3, b: Vector3, c: Vector3): boolean;
-}
-
-/**
- * ( interface Vector<T> )
- *
- * Abstract interface of Vector2, Vector3 and Vector4.
- * Currently the members of Vector is NOT type safe because it accepts different typed vectors.
- * Those definitions will be changed when TypeScript innovates Generics to be type safe.
- *
- * @example
- * var v:THREE.Vector = new THREE.Vector3();
- * v.addVectors(new THREE.Vector2(0, 1), new THREE.Vector2(2, 3)); // invalid but compiled successfully
- */
-export interface Vector {
- setComponent(index: number, value: number): this;
-
- getComponent(index: number): number;
-
- set(...args: number[]): this;
-
- setScalar(scalar: number): this;
-
- /**
- * copy(v:T):T;
- */
- copy(v: Vector): this;
-
- /**
- * NOTE: The second argument is deprecated.
- *
- * add(v:T):T;
- */
- add(v: Vector, w?: Vector): this;
-
- /**
- * addVectors(a:T, b:T):T;
- */
- addVectors(a: Vector, b: Vector): this;
-
- addScaledVector(vector: Vector, scale: number): this;
-
- /**
- * Adds the scalar value s to this vector's values.
- */
- addScalar(scalar: number): this;
-
- /**
- * sub(v:T):T;
- */
- sub(v: Vector): this;
-
- /**
- * subVectors(a:T, b:T):T;
- */
- subVectors(a: Vector, b: Vector): this;
-
- /**
- * multiplyScalar(s:number):T;
- */
- multiplyScalar(s: number): this;
-
- /**
- * divideScalar(s:number):T;
- */
- divideScalar(s: number): this;
-
- /**
- * negate():T;
- */
- negate(): this;
-
- /**
- * dot(v:T):T;
- */
- dot(v: Vector): number;
-
- /**
- * lengthSq():number;
- */
- lengthSq(): number;
-
- /**
- * length():number;
- */
- length(): number;
-
- /**
- * normalize():T;
- */
- normalize(): this;
-
- /**
- * NOTE: Vector4 doesn't have the property.
- *
- * distanceTo(v:T):number;
- */
- distanceTo?(v: Vector): number;
-
- /**
- * NOTE: Vector4 doesn't have the property.
- *
- * distanceToSquared(v:T):number;
- */
- distanceToSquared?(v: Vector): number;
-
- /**
- * setLength(l:number):T;
- */
- setLength(l: number): this;
-
- /**
- * lerp(v:T, alpha:number):T;
- */
- lerp(v: Vector, alpha: number): this;
-
- /**
- * equals(v:T):boolean;
- */
- equals(v: Vector): boolean;
-
- /**
- * clone():T;
- */
- clone(): this;
-}
-
-/**
- * 2D vector.
- *
- * ( class Vector2 implements Vector )
- */
-export class Vector2 implements Vector {
- constructor(x?: number, y?: number);
-
- x: number;
- y: number;
- width: number;
- height: number;
- isVector2: true;
-
- /**
- * Sets value of this vector.
- */
- set(x: number, y: number): this;
-
- /**
- * Sets the x and y values of this vector both equal to scalar.
- */
- setScalar(scalar: number): this;
-
- /**
- * Sets X component of this vector.
- */
- setX(x: number): this;
-
- /**
- * Sets Y component of this vector.
- */
- setY(y: number): this;
-
- /**
- * Sets a component of this vector.
- */
- setComponent(index: number, value: number): this;
-
- /**
- * Gets a component of this vector.
- */
- getComponent(index: number): number;
-
- /**
- * Returns a new Vector2 instance with the same `x` and `y` values.
- */
- clone(): this;
-
- /**
- * Copies value of v to this vector.
- */
- copy(v: Vector2): this;
-
- /**
- * Adds v to this vector.
- */
- add(v: Vector2, w?: Vector2): this;
-
- /**
- * Adds the scalar value s to this vector's x and y values.
- */
- addScalar(s: number): this;
-
- /**
- * Sets this vector to a + b.
- */
- addVectors(a: Vector2, b: Vector2): this;
-
- /**
- * Adds the multiple of v and s to this vector.
- */
- addScaledVector(v: Vector2, s: number): this;
-
- /**
- * Subtracts v from this vector.
- */
- sub(v: Vector2): this;
-
- /**
- * Subtracts s from this vector's x and y components.
- */
- subScalar(s: number): this;
-
- /**
- * Sets this vector to a - b.
- */
- subVectors(a: Vector2, b: Vector2): this;
-
- /**
- * Multiplies this vector by v.
- */
- multiply(v: Vector2): this;
-
- /**
- * Multiplies this vector by scalar s.
- */
- multiplyScalar(scalar: number): this;
-
- /**
- * Divides this vector by v.
- */
- divide(v: Vector2): this;
-
- /**
- * Divides this vector by scalar s.
- * Set vector to ( 0, 0 ) if s == 0.
- */
- divideScalar(s: number): this;
-
- /**
- * Multiplies this vector (with an implicit 1 as the 3rd component) by m.
- */
- applyMatrix3(m: Matrix3): this;
-
- /**
- * If this vector's x or y value is greater than v's x or y value, replace that value with the corresponding min value.
- */
- min(v: Vector2): this;
-
- /**
- * If this vector's x or y value is less than v's x or y value, replace that value with the corresponding max value.
- */
- max(v: Vector2): this;
-
- /**
- * If this vector's x or y value is greater than the max vector's x or y value, it is replaced by the corresponding value.
- * If this vector's x or y value is less than the min vector's x or y value, it is replaced by the corresponding value.
- * @param min the minimum x and y values.
- * @param max the maximum x and y values in the desired range.
- */
- clamp(min: Vector2, max: Vector2): this;
-
- /**
- * If this vector's x or y values are greater than the max value, they are replaced by the max value.
- * If this vector's x or y values are less than the min value, they are replaced by the min value.
- * @param min the minimum value the components will be clamped to.
- * @param max the maximum value the components will be clamped to.
- */
- clampScalar(min: number, max: number): this;
-
- /**
- * If this vector's length is greater than the max value, it is replaced by the max value.
- * If this vector's length is less than the min value, it is replaced by the min value.
- * @param min the minimum value the length will be clamped to.
- * @param max the maximum value the length will be clamped to.
- */
- clampLength(min: number, max: number): this;
-
- /**
- * The components of the vector are rounded down to the nearest integer value.
- */
- floor(): this;
-
- /**
- * The x and y components of the vector are rounded up to the nearest integer value.
- */
- ceil(): this;
-
- /**
- * The components of the vector are rounded to the nearest integer value.
- */
- round(): this;
-
- /**
- * The components of the vector are rounded towards zero (up if negative, down if positive) to an integer value.
- */
- roundToZero(): this;
-
- /**
- * Inverts this vector.
- */
- negate(): this;
-
- /**
- * Computes dot product of this vector and v.
- */
- dot(v: Vector2): number;
-
- /**
- * Computes squared length of this vector.
- */
- lengthSq(): number;
-
- /**
- * Computes length of this vector.
- */
- length(): number;
-
- /**
- * @deprecated Use {@link Vector2#manhattanLength .manhattanLength()} instead.
- */
- lengthManhattan(): number;
-
- /**
- * Computes the Manhattan length of this vector.
- *
- * @return {number}
- *
- * @see {@link http://en.wikipedia.org/wiki/Taxicab_geometry|Wikipedia: Taxicab Geometry}
- */
- manhattanLength(): number;
-
- /**
- * Normalizes this vector.
- */
- normalize(): this;
-
- /**
- * computes the angle in radians with respect to the positive x-axis
- */
- angle(): number;
-
- /**
- * Computes distance of this vector to v.
- */
- distanceTo(v: Vector2): number;
-
- /**
- * Computes squared distance of this vector to v.
- */
- distanceToSquared(v: Vector2): number;
-
- /**
- * @deprecated Use {@link Vector2#manhattanDistanceTo .manhattanDistanceTo()} instead.
- */
- distanceToManhattan(v: Vector2): number;
-
- /**
- * Computes the Manhattan length (distance) from this vector to the given vector v
- *
- * @param {Vector2} v
- *
- * @return {number}
- *
- * @see {@link http://en.wikipedia.org/wiki/Taxicab_geometry|Wikipedia: Taxicab Geometry}
- */
- manhattanDistanceTo(v: Vector2): number;
-
- /**
- * Normalizes this vector and multiplies it by l.
- */
- setLength(length: number): this;
-
- /**
- * Linearly interpolates between this vector and v, where alpha is the distance along the line - alpha = 0 will be this vector, and alpha = 1 will be v.
- * @param v vector to interpolate towards.
- * @param alpha interpolation factor in the closed interval [0, 1].
- */
- lerp(v: Vector2, alpha: number): this;
-
- /**
- * Sets this vector to be the vector linearly interpolated between v1 and v2 where alpha is the distance along the line connecting the two vectors - alpha = 0 will be v1, and alpha = 1 will be v2.
- * @param v1 the starting vector.
- * @param v2 vector to interpolate towards.
- * @param alpha interpolation factor in the closed interval [0, 1].
- */
- lerpVectors(v1: Vector2, v2: Vector2, alpha: number): this;
-
- /**
- * Checks for strict equality of this vector and v.
- */
- equals(v: Vector2): boolean;
-
- /**
- * Sets this vector's x value to be array[offset] and y value to be array[offset + 1].
- * @param array the source array.
- * @param offset (optional) offset into the array. Default is 0.
- */
- fromArray(array: number[], offset?: number): this;
-
- /**
- * Returns an array [x, y], or copies x and y into the provided array.
- * @param array (optional) array to store the vector to. If this is not provided, a new array will be created.
- * @param offset (optional) optional offset into the array.
- * @return The created or provided array.
- */
- toArray(array?: number[], offset?: number): number[];
-
- /**
- * Copies x and y into the provided array-like.
- * @param array array-like to store the vector to.
- * @param offset (optional) optional offset into the array.
- * @return The provided array-like.
- */
- toArray(array: ArrayLike, offset?: number): ArrayLike;
-
- /**
- * Sets this vector's x and y values from the attribute.
- * @param attribute the source attribute.
- * @param index index in the attribute.
- */
- fromBufferAttribute(attribute: BufferAttribute, index: number): this;
-
- /**
- * Rotates the vector around center by angle radians.
- * @param center the point around which to rotate.
- * @param angle the angle to rotate, in radians.
- */
- rotateAround(center: Vector2, angle: number): this;
-
- /**
- * Computes the Manhattan length of this vector.
- *
- * @return {number}
- *
- * @see {@link http://en.wikipedia.org/wiki/Taxicab_geometry|Wikipedia: Taxicab Geometry}
- */
- manhattanLength(): number;
-
- /**
- * Computes the Manhattan length (distance) from this vector to the given vector v
- *
- * @param {Vector2} v
- *
- * @return {number}
- *
- * @see {@link http://en.wikipedia.org/wiki/Taxicab_geometry|Wikipedia: Taxicab Geometry}
- */
- manhattanDistanceTo(v: Vector2): number;
-}
-
-/**
- * 3D vector.
- *
- * @example
- * var a = new THREE.Vector3( 1, 0, 0 );
- * var b = new THREE.Vector3( 0, 1, 0 );
- * var c = new THREE.Vector3();
- * c.crossVectors( a, b );
- *
- * @see src/math/Vector3.js
- *
- * ( class Vector3 implements Vector )
- */
-export class Vector3 implements Vector {
- constructor(x?: number, y?: number, z?: number);
-
- x: number;
- y: number;
- z: number;
- isVector3: true;
-
- /**
- * Sets value of this vector.
- */
- set(x: number, y: number, z: number): this;
-
- /**
- * Sets all values of this vector.
- */
- setScalar(scalar: number): this;
-
- /**
- * Sets x value of this vector.
- */
- setX(x: number): Vector3;
-
- /**
- * Sets y value of this vector.
- */
- setY(y: number): Vector3;
-
- /**
- * Sets z value of this vector.
- */
- setZ(z: number): Vector3;
-
- setComponent(index: number, value: number): this;
-
- getComponent(index: number): number;
-
- /**
- * Clones this vector.
- */
- clone(): this;
-
- /**
- * Copies value of v to this vector.
- */
- copy(v: Vector3): this;
-
- /**
- * Adds v to this vector.
- */
- add(a: Vector3, b?: Vector3): this;
-
- addScalar(s: number): this;
-
- addScaledVector(v: Vector3, s: number): this;
-
- /**
- * Sets this vector to a + b.
- */
- addVectors(a: Vector3, b: Vector3): this;
-
- /**
- * Subtracts v from this vector.
- */
- sub(a: Vector3): this;
-
- subScalar( s: number ): this;
-
- /**
- * Sets this vector to a - b.
- */
- subVectors(a: Vector3, b: Vector3): this;
-
- multiply(v: Vector3): this;
-
- /**
- * Multiplies this vector by scalar s.
- */
- multiplyScalar(s: number): this;
-
- multiplyVectors(a: Vector3, b: Vector3): this;
-
- applyEuler(euler: Euler): this;
-
- applyAxisAngle(axis: Vector3, angle: number): this;
-
- applyMatrix3(m: Matrix3): this;
-
- applyMatrix4(m: Matrix4): this;
-
- applyQuaternion(q: Quaternion): this;
-
- project(camera: Camera): this;
-
- unproject(camera: Camera): this;
-
- transformDirection(m: Matrix4): this;
-
- divide(v: Vector3): this;
-
-
- /**
- * Divides this vector by scalar s.
- * Set vector to ( 0, 0, 0 ) if s == 0.
- */
- divideScalar(s: number): this;
-
- min(v: Vector3): this;
-
- max(v: Vector3): this;
-
- clamp(min: Vector3, max: Vector3): this;
-
- clampScalar(min: number, max: number): this;
-
- clampLength(min: number, max: number): this;
-
- floor(): this;
-
- ceil(): this;
-
- round(): this;
-
- roundToZero(): this;
-
- /**
- * Inverts this vector.
- */
- negate(): this;
-
- /**
- * Computes dot product of this vector and v.
- */
- dot(v: Vector3): number;
-
- /**
- * Computes squared length of this vector.
- */
- lengthSq(): number;
-
- /**
- * Computes length of this vector.
- */
- length(): number;
-
- /**
- * Computes Manhattan length of this vector.
- * http://en.wikipedia.org/wiki/Taxicab_geometry
- *
- * @deprecated Use {@link Vector3#manhattanLength .manhattanLength()} instead.
- */
- lengthManhattan(): number;
-
- /**
- * Computes the Manhattan length of this vector.
- *
- * @return {number}
- *
- * @see {@link http://en.wikipedia.org/wiki/Taxicab_geometry|Wikipedia: Taxicab Geometry}
- */
- manhattanLength(): number;
-
- /**
- * Computes the Manhattan length (distance) from this vector to the given vector v
- *
- * @param {Vector3} v
- *
- * @return {number}
- *
- * @see {@link http://en.wikipedia.org/wiki/Taxicab_geometry|Wikipedia: Taxicab Geometry}
- */
- manhattanDistanceTo(v: Vector3): number;
-
- /**
- * Normalizes this vector.
- */
- normalize(): this;
-
- /**
- * Normalizes this vector and multiplies it by l.
- */
- setLength(l: number): this;
- lerp(v: Vector3, alpha: number): this;
-
- lerpVectors(v1: Vector3, v2: Vector3, alpha: number): this;
-
- /**
- * Sets this vector to cross product of itself and v.
- */
- cross(a: Vector3, w?: Vector3): this;
-
- /**
- * Sets this vector to cross product of a and b.
- */
- crossVectors(a: Vector3, b: Vector3): this;
- projectOnVector(v: Vector3): this;
- projectOnPlane(planeNormal: Vector3): this;
- reflect(vector: Vector3): this;
- angleTo(v: Vector3): number;
-
- /**
- * Computes distance of this vector to v.
- */
- distanceTo(v: Vector3): number;
-
- /**
- * Computes squared distance of this vector to v.
- */
- distanceToSquared(v: Vector3): number;
-
- /**
- * @deprecated Use {@link Vector3#manhattanDistanceTo .manhattanDistanceTo()} instead.
- */
- distanceToManhattan(v: Vector3): number;
-
- setFromSpherical(s: Spherical): this;
- setFromCylindrical(s: Cylindrical): this;
- setFromMatrixPosition(m: Matrix4): this;
- setFromMatrixScale(m: Matrix4): this;
- setFromMatrixColumn(matrix: Matrix4, index: number): this;
-
- /**
- * Checks for strict equality of this vector and v.
- */
- equals(v: Vector3): boolean;
-
- fromArray(xyz: number[], offset?: number): Vector3;
-
- /**
- * Returns an array [x, y, z], or copies x, y and z into the provided array.
- * @param array (optional) array to store the vector to. If this is not provided, a new array will be created.
- * @param offset (optional) optional offset into the array.
- * @return The created or provided array.
- */
- toArray(xyz?: number[], offset?: number): number[];
-
- /**
- * Copies x, y and z into the provided array-like.
- * @param array array-like to store the vector to.
- * @param offset (optional) optional offset into the array.
- * @return The provided array-like.
- */
- toArray(xyz: ArrayLike, offset?: number): ArrayLike;
-
- fromBufferAttribute( attribute: BufferAttribute, index: number, offset?: number): this;
-}
-
-/**
- * @deprecated use {@link Vector3 THREE.Vector3} instead.
- */
-export class Vertex extends Vector3 {}
-
-/**
- * 4D vector.
- *
- * ( class Vector4 implements Vector )
- */
-export class Vector4 implements Vector {
- constructor(x?: number, y?: number, z?: number, w?: number);
-
- x: number;
- y: number;
- z: number;
- w: number;
- isVector4: true;
-
- /**
- * Sets value of this vector.
- */
- set(x: number, y: number, z: number, w: number): this;
-
- /**
- * Sets all values of this vector.
- */
- setScalar(scalar: number): this;
-
- /**
- * Sets X component of this vector.
- */
- setX(x: number): this;
-
- /**
- * Sets Y component of this vector.
- */
- setY(y: number): this;
-
- /**
- * Sets Z component of this vector.
- */
- setZ(z: number): this;
-
- /**
- * Sets w component of this vector.
- */
- setW(w: number): this;
-
- setComponent(index: number, value: number): this;
-
- getComponent(index: number): number;
-
- /**
- * Clones this vector.
- */
- clone(): this;
-
- /**
- * Copies value of v to this vector.
- */
- copy(v: Vector4): this;
-
- /**
- * Adds v to this vector.
- */
- add(v: Vector4, w?: Vector4): this;
-
- addScalar(scalar: number): this;
-
- /**
- * Sets this vector to a + b.
- */
- addVectors(a: Vector4, b: Vector4): this;
-
- addScaledVector( v: Vector4, s: number ): this;
- /**
- * Subtracts v from this vector.
- */
- sub(v: Vector4): this;
-
- subScalar(s: number): this;
-
- /**
- * Sets this vector to a - b.
- */
- subVectors(a: Vector4, b: Vector4): this;
-
- /**
- * Multiplies this vector by scalar s.
- */
- multiplyScalar(s: number): this;
-
- applyMatrix4(m: Matrix4): this;
-
- /**
- * Divides this vector by scalar s.
- * Set vector to ( 0, 0, 0 ) if s == 0.
- */
- divideScalar(s: number): this;
-
- /**
- * http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm
- * @param q is assumed to be normalized
- */
- setAxisAngleFromQuaternion(q: Quaternion): this;
-
- /**
- * http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm
- * @param m assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)
- */
- setAxisAngleFromRotationMatrix(m: Matrix3): this;
-
- min(v: Vector4): this;
- max(v: Vector4): this;
- clamp(min: Vector4, max: Vector4): this;
- clampScalar(min: number, max: number): this;
- floor(): this;
- ceil(): this;
- round(): this;
- roundToZero(): this;
-
- /**
- * Inverts this vector.
- */
- negate(): this;
-
- /**
- * Computes dot product of this vector and v.
- */
- dot(v: Vector4): number;
-
- /**
- * Computes squared length of this vector.
- */
- lengthSq(): number;
-
- /**
- * Computes length of this vector.
- */
- length(): number;
-
- /**
- * Computes the Manhattan length of this vector.
- *
- * @return {number}
- *
- * @see {@link http://en.wikipedia.org/wiki/Taxicab_geometry|Wikipedia: Taxicab Geometry}
- */
- manhattanLength(): number;
-
- /**
- * Normalizes this vector.
- */
- normalize(): this;
- /**
- * Normalizes this vector and multiplies it by l.
- */
- setLength(length: number): this;
-
- /**
- * Linearly interpolate between this vector and v with alpha factor.
- */
- lerp(v: Vector4, alpha: number): this;
-
- lerpVectors(v1: Vector4, v2: Vector4, alpha: number): this;
-
- /**
- * Checks for strict equality of this vector and v.
- */
- equals(v: Vector4): boolean;
-
- fromArray(xyzw: number[], offset?: number): this;
-
- toArray(xyzw?: number[], offset?: number): number[];
-
- fromBufferAttribute( attribute: BufferAttribute, index: number, offset?: number): this;
-}
-
-export abstract class Interpolant {
- constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any);
-
- parameterPositions: any;
- samplesValues: any;
- valueSize: number;
- resultBuffer: any;
-
- evaluate(time: number): any;
-}
-
-export class CubicInterpolant extends Interpolant {
- constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any);
-
- interpolate_(i1: number, t0: number, t: number, t1: number): any;
-}
-
-export class DiscreteInterpolant extends Interpolant {
- constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any);
-
- interpolate_(i1: number, t0: number, t: number, t1: number): any;
-}
-
-export class LinearInterpolant extends Interpolant {
- constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any);
-
- interpolate_(i1: number, t0: number, t: number, t1: number): any;
-}
-
-export class QuaternionLinearInterpolant extends Interpolant {
- constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any);
-
- interpolate_(i1: number, t0: number, t: number, t1: number): any;
-}
-
-// Objects //////////////////////////////////////////////////////////////////////////////////
-
-export class Bone extends Object3D {
- constructor();
- isBone: true;
- type: "Bone";
-}
-
-export class Group extends Object3D {
- constructor();
- type: "Group";
- isGroup: true;
-}
-
-export class LOD extends Object3D {
- constructor();
-
- type: "LOD";
-
- levels: {distance: number, object: Object3D}[];
-
- addLevel(object: Object3D, distance?: number): void;
- getObjectForDistance(distance: number): Object3D;
- raycast(raycaster: Raycaster, intersects: Intersection[]): void;
- update(camera: Camera): void;
- toJSON(meta: any): any;
-
- /**
- * @deprecated Use {@link LOD#levels .levels} instead.
- */
- objects: any[];
-}
-
-export class Line extends Object3D {
- constructor(
- geometry?: Geometry | BufferGeometry,
- material?: Material | Material[],
- mode?: number
- );
-
- geometry: Geometry | BufferGeometry;
- material: Material | Material[];
-
- type: "Line" | "LineLoop" | "LineSegments";
- isLine: true;
-
- computeLineDistances(): this;
- raycast(raycaster: Raycaster, intersects: Intersection[]): void;
-}
-
-export class LineLoop extends Line {
- constructor(
- geometry?: Geometry | BufferGeometry,
- material?: Material | Material[]
- );
-
- type: "LineLoop";
- isLineLoop: true;
-}
-
-/**
- * @deprecated
- */
-export const LineStrip: number;
-/**
- * @deprecated
- */
-export const LinePieces: number;
-
-export class LineSegments extends Line {
- constructor(
- geometry?: Geometry | BufferGeometry,
- material?: Material | Material[],
- mode?: number
- );
-
- type: "LineSegments";
- isLineSegments: true;
-}
-
-export class Mesh extends Object3D {
- constructor(geometry?: Geometry | BufferGeometry, material?: Material | Material[]);
-
- geometry: Geometry | BufferGeometry;
- material: Material | Material[];
- drawMode: TrianglesDrawModes;
- morphTargetInfluences?: number[];
- morphTargetDictionary?: { [key: string]: number; };
- isMesh: true;
- type: string;
-
- setDrawMode(drawMode: TrianglesDrawModes): void;
- updateMorphTargets(): void;
- raycast(raycaster: Raycaster, intersects: Intersection[]): void;
- copy(source: this, recursive?: boolean): this;
-}
-
-/**
- * A class for displaying particles in the form of variable size points. For example, if using the WebGLRenderer, the particles are displayed using GL_POINTS.
- *
- * @see src/objects/ParticleSystem.js
- */
-export class Points extends Object3D {
-
- /**
- * @param geometry An instance of Geometry or BufferGeometry.
- * @param material An instance of Material (optional).
- */
- constructor(
- geometry?: Geometry | BufferGeometry,
- material?: Material | Material[]
- );
-
- type: "Points";
- isPoints: true;
-
- /**
- * An instance of Geometry or BufferGeometry, where each vertex designates the position of a particle in the system.
- */
- geometry: Geometry | BufferGeometry;
-
- /**
- * An instance of Material, defining the object's appearance. Default is a PointsMaterial with randomised colour.
- */
- material: Material | Material[];
-
- raycast(raycaster: Raycaster, intersects: Intersection[]): void;
-}
-
-/**
- * @deprecated Use {@link Points THREE.Points} instead.
- */
-export class PointCloud extends Points {}
-/**
- * @deprecated Use {@link Points THREE.Points} instead.
- */
-export class ParticleSystem extends Points {}
-
-export class Skeleton {
- constructor(bones: Bone[], boneInverses?: Matrix4[]);
-
- /**
- * @deprecated This property has been removed completely.
- */
- useVertexTexture: boolean;
- identityMatrix: Matrix4;
- bones: Bone[];
- boneTextureWidth: number;
- boneTextureHeight: number;
- boneMatrices: Float32Array;
- boneTexture: DataTexture;
- boneInverses: Matrix4[];
-
- calculateInverses(bone: Bone): void;
- pose(): void;
- update(): void;
- clone(): this;
-}
-
-export class SkinnedMesh extends Mesh {
- constructor(geometry?: Geometry | BufferGeometry, material?: Material | Material[], useVertexTexture?: boolean);
-
- bindMode: string;
- bindMatrix: Matrix4;
- bindMatrixInverse: Matrix4;
- skeleton: Skeleton;
-
- bind( skeleton: Skeleton, bindMatrix?: Matrix4 ): void;
- pose(): void;
- normalizeSkinWeights(): void;
- updateMatrixWorld(force?: boolean): void;
-}
-
-export class Sprite extends Object3D {
- constructor(material?: Material);
-
- type: "Sprite";
- isSprite: true;
-
- material: Material;
- center: Vector2;
-
- raycast(raycaster: Raycaster, intersects: Intersection[]): void;
- copy(source: this, recursive?: boolean): this;
-}
-
-/**
- * @deprecated Use {@link Sprite Sprite} instead.
- */
-export class Particle extends Sprite {}
-
-
-// Renderers //////////////////////////////////////////////////////////////////////////////////
-
-export interface Renderer {
- domElement: HTMLCanvasElement;
-
- render(scene: Scene, camera: Camera): void;
- setSize(width: number, height: number, updateStyle?: boolean): void;
-}
-
-export interface WebGLRendererParameters {
- /**
- * A Canvas where the renderer draws its output.
- */
- canvas?: HTMLCanvasElement;
-
-
- /**
- * A WebGL Rendering Context.
- * (https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext)
- * Default is null
- */
- context?: WebGLRenderingContext
-
- /**
- * shader precision. Can be "highp", "mediump" or "lowp".
- */
- precision?: string;
-
- /**
- * default is true.
- */
- alpha?: boolean;
-
- /**
- * default is true.
- */
- premultipliedAlpha?: boolean;
-
- /**
- * default is false.
- */
- antialias?: boolean;
-
- /**
- * default is true.
- */
- stencil?: boolean;
-
- /**
- * default is false.
- */
- preserveDrawingBuffer?: boolean;
-
- /**
- * Can be "high-performance", "low-power" or "default"
- */
- powerPreference?: string;
-
- /**
- * default is true.
- */
- depth?: boolean;
-
- /**
- * default is false.
- */
- logarithmicDepthBuffer?: boolean;
-}
-
-
-/**
- * The WebGL renderer displays your beautifully crafted scenes using WebGL, if your device supports it.
- * This renderer has way better performance than CanvasRenderer.
- *
- * @see src/renderers/WebGLRenderer.js
- */
-export class WebGLRenderer implements Renderer {
- /**
- * parameters is an optional object with properties defining the renderer's behaviour. The constructor also accepts no parameters at all. In all cases, it will assume sane defaults when parameters are missing.
- */
- constructor(parameters?: WebGLRendererParameters);
-
- /**
- * A Canvas where the renderer draws its output.
- * This is automatically created by the renderer in the constructor (if not provided already); you just need to add it to your page.
- */
- domElement: HTMLCanvasElement;
-
- /**
- * The HTML5 Canvas's 'webgl' context obtained from the canvas where the renderer will draw.
- */
- context: WebGLRenderingContext;
-
- /**
- * Defines whether the renderer should automatically clear its output before rendering.
- */
- autoClear: boolean;
-
- /**
- * If autoClear is true, defines whether the renderer should clear the color buffer. Default is true.
- */
- autoClearColor: boolean;
-
- /**
- * If autoClear is true, defines whether the renderer should clear the depth buffer. Default is true.
- */
- autoClearDepth: boolean;
-
- /**
- * If autoClear is true, defines whether the renderer should clear the stencil buffer. Default is true.
- */
- autoClearStencil: boolean;
-
- /**
- * Defines whether the renderer should sort objects. Default is true.
- */
- sortObjects: boolean;
-
- clippingPlanes: any[];
- localClippingEnabled: boolean;
-
- extensions: WebGLExtensions;
-
- /**
- * Default is false.
- */
- gammaInput: boolean;
-
- /**
- * Default is false.
- */
- gammaOutput: boolean;
-
- physicallyCorrectLights: boolean;
- toneMapping: ToneMapping;
- toneMappingExposure: number;
- toneMappingWhitePoint: number;
-
- /**
- * Default is false.
- */
- shadowMapDebug: boolean;
-
- /**
- * Default is 8.
- */
- maxMorphTargets: number;
-
- /**
- * Default is 4.
- */
- maxMorphNormals: number;
-
- info: WebGLInfo;
-
- shadowMap: WebGLShadowMap;
-
- pixelRation: number;
-
- capabilities: WebGLCapabilities;
- properties: WebGLProperties;
- renderLists: WebGLRenderLists;
- state: WebGLState;
- allocTextureUnit: any;
-
- vr: WebVRManager;
-
- /**
- * Return the WebGL context.
- */
- getContext(): WebGLRenderingContext;
- getContextAttributes(): any;
- forceContextLoss(): void;
-
- /**
- * @deprecated Use {@link WebGLCapabilities#getMaxAnisotropy .capabilities.getMaxAnisotropy()} instead.
- */
- getMaxAnisotropy(): number;
-
- /**
- * @deprecated Use {@link WebGLCapabilities#precision .capabilities.precision} instead.
- */
- getPrecision(): string;
-
- getPixelRatio(): number;
- setPixelRatio(value: number): void;
-
- getDrawingBufferSize(): { width: number; height: number; };
- setDrawingBufferSize(width: number, height: number, pixelRatio: number): void;
-
- getSize(): { width: number; height: number; };
-
- /**
- * Resizes the output canvas to (width, height), and also sets the viewport to fit that size, starting in (0, 0).
- */
- setSize(width: number, height: number, updateStyle?: boolean): void;
-
- getCurrentViewport(): Vector4;
- /**
- * Sets the viewport to render from (x, y) to (x + width, y + height).
- */
- setViewport(x?: number, y?: number, width?: number, height?: number): void;
-
- /**
- * Sets the scissor area from (x, y) to (x + width, y + height).
- */
- setScissor(x: number, y: number, width: number, height: number): void;
-
- /**
- * Enable the scissor test. When this is enabled, only the pixels within the defined scissor area will be affected by further renderer actions.
- */
- setScissorTest(enable: boolean): void;
-
- /**
- * Returns a THREE.Color instance with the current clear color.
- */
- getClearColor(): Color;
-
- /**
- * Sets the clear color, using color for the color and alpha for the opacity.
- */
- setClearColor(color: Color, alpha?: number): void;
- setClearColor(color: string, alpha?: number): void;
- setClearColor(color: number, alpha?: number): void;
-
- /**
- * Returns a float with the current clear alpha. Ranges from 0 to 1.
- */
- getClearAlpha(): number;
-
- setClearAlpha(alpha: number): void;
-
- /**
- * Tells the renderer to clear its color, depth or stencil drawing buffer(s).
- * Arguments default to true
- */
- clear(color?: boolean, depth?: boolean, stencil?: boolean): void;
-
- clearColor(): void;
- clearDepth(): void;
- clearStencil(): void;
- clearTarget(renderTarget: WebGLRenderTarget, color: boolean, depth: boolean, stencil: boolean): void;
-
- /**
- * @deprecated Use {@link WebGLState#reset .state.reset()} instead.
- */
- resetGLState(): void;
- dispose(): void;
-
- /**
- * Tells the shadow map plugin to update using the passed scene and camera parameters.
- *
- * @param scene an instance of Scene
- * @param camera — an instance of Camera
- */
- renderBufferImmediate(object: Object3D, program: Object, material: Material): void;
-
- renderBufferDirect(camera: Camera, fog: Fog, material: Material, geometryGroup: any, object: Object3D): void;
-
- /**
- * A build in function that can be used instead of requestAnimationFrame. For WebVR projects this function must be used.
- * @param callback The function will be called every available frame. If `null` is passed it will stop any already ongoing animation.
- */
- setAnimationLoop(callback: Function): void;
-
- /**
- * @deprecated Use {@link WebGLRenderer#setAnimationLoop .setAnimationLoop()} instead.
- */
- animate(callback: Function): void;
-
- /**
- * Render a scene using a camera.
- * The render is done to the renderTarget (if specified) or to the canvas as usual.
- * If forceClear is true, the canvas will be cleared before rendering, even if the renderer's autoClear property is false.
- */
- render(scene: Scene, camera: Camera, renderTarget?: RenderTarget, forceClear?: boolean): void;
-
- /**
- * @deprecated
- */
- setTexture(texture: Texture, slot: number): void;
- setTexture2D(texture: Texture, slot: number): void;
- setTextureCube(texture: Texture, slot: number): void;
- getRenderTarget(): RenderTarget;
- /**
- * @deprecated Use {@link WebGLRenderer#getRenderTarget .getRenderTarget()} instead.
- */
- getCurrentRenderTarget(): RenderTarget;
- setRenderTarget(renderTarget?: RenderTarget): void;
- readRenderTargetPixels( renderTarget: RenderTarget, x: number, y: number, width: number, height: number, buffer: any ): void;
-
- /**
- * @deprecated
- */
- gammaFactor: number;
-
- /**
- * @deprecated Use {@link WebGLShadowMap#enabled .shadowMap.enabled} instead.
- */
- shadowMapEnabled: boolean;
-
- /**
- * @deprecated Use {@link WebGLShadowMap#type .shadowMap.type} instead.
- */
- shadowMapType: ShadowMapType;
-
- /**
- * @deprecated Use {@link WebGLShadowMap#cullFace .shadowMap.cullFace} instead.
- */
- shadowMapCullFace: CullFace;
-
- /**
- * @deprecated Use {@link WebGLExtensions#get .extensions.get( 'OES_texture_float' )} instead.
- */
- supportsFloatTextures(): any;
-
- /**
- * @deprecated Use {@link WebGLExtensions#get .extensions.get( 'OES_texture_half_float' )} instead.
- */
- supportsHalfFloatTextures(): any;
-
- /**
- * @deprecated Use {@link WebGLExtensions#get .extensions.get( 'OES_standard_derivatives' )} instead.
- */
- supportsStandardDerivatives(): any;
-
- /**
- * @deprecated Use {@link WebGLExtensions#get .extensions.get( 'WEBGL_compressed_texture_s3tc' )} instead.
- */
- supportsCompressedTextureS3TC(): any;
-
- /**
- * @deprecated Use {@link WebGLExtensions#get .extensions.get( 'WEBGL_compressed_texture_pvrtc' )} instead.
- */
- supportsCompressedTexturePVRTC(): any;
-
- /**
- * @deprecated Use {@link WebGLExtensions#get .extensions.get( 'EXT_blend_minmax' )} instead.
- */
- supportsBlendMinMax(): any;
-
- /**
- * @deprecated Use {@link WebGLCapabilities#vertexTextures .capabilities.vertexTextures} instead.
- */
- supportsVertexTextures(): any;
-
- /**
- * @deprecated Use {@link WebGLExtensions#get .extensions.get( 'ANGLE_instanced_arrays' )} instead.
- */
- supportsInstancedArrays(): any;
-
- /**
- * @deprecated Use {@link WebGLRenderer#setScissorTest .setScissorTest()} instead.
- */
- enableScissorTest(boolean: any): any;
-}
-
-export interface RenderTarget {} // not defined in the code, used in LightShadow and WebGRenderer classes
-
-export interface RenderItem
-{
- id: number;
- object: Object3D;
- geometry: Geometry | BufferGeometry;
- material: Material;
- program: WebGLProgram;
- renderOrder: number;
- z: number;
- group: Group;
-}
-
-export class WebGLRenderList
-{
- opaque: Array;
- transparent: Array;
- init(): void;
- push(object:Object3D, geometry:Geometry|BufferGeometry, material:Material, z:number, group:Group): void;
-
- sort(): void;
-}
-
-export class WebGLRenderLists{
- dispose(): void;
- /**
- *
- * returns { : }
- */
- get(scene: Scene, camera: Camera): WebGLRenderList;
-}
-
-
-export interface WebGLRenderTargetOptions {
- wrapS?: Wrapping;
- wrapT?: Wrapping;
- magFilter?: TextureFilter;
- minFilter?: TextureFilter;
- format?: number; // RGBAFormat;
- type?: TextureDataType; // UnsignedByteType;
- anisotropy?: number; // 1;
- depthBuffer?: boolean; // true;
- stencilBuffer?: boolean; // true;
- generateMipmaps?: boolean; // true;
-}
-
-export class WebGLRenderTarget extends EventDispatcher {
- constructor(width: number, height: number, options?: WebGLRenderTargetOptions);
-
- uuid: string;
- width: number;
- height: number;
- scissor: Vector4;
- scissorTest: boolean;
- viewport: Vector4;
- texture: Texture;
- depthBuffer: boolean;
- stencilBuffer: boolean;
- depthTexture: Texture;
- /**
- * @deprecated Use {@link Texture#wrapS texture.wrapS} instead.
- */
- wrapS: any;
- /**
- * @deprecated Use {@link Texture#wrapT texture.wrapT} instead.
- */
- wrapT: any;
- /**
- * @deprecated Use {@link Texture#magFilter texture.magFilter} instead.
- */
- magFilter: any;
- /**
- * @deprecated Use {@link Texture#minFilter texture.minFilter} instead.
- */
- minFilter: any;
- /**
- * @deprecated Use {@link Texture#anisotropy texture.anisotropy} instead.
- */
- anisotropy: any;
- /**
- * @deprecated Use {@link Texture#offset texture.offset} instead.
- */
- offset: any;
- /**
- * @deprecated Use {@link Texture#repeat texture.repeat} instead.
- */
- repeat: any;
- /**
- * @deprecated Use {@link Texture#format texture.format} instead.
- */
- format: any;
- /**
- * @deprecated Use {@link Texture#type texture.type} instead.
- */
- type: any;
- /**
- * @deprecated Use {@link Texture#generateMipmaps texture.generateMipmaps} instead.
- */
- generateMipmaps: any;
-
- setSize(width: number, height: number): void;
- clone(): this;
- copy(source: WebGLRenderTarget): this;
- dispose(): void;
-}
-
-export class WebGLRenderTargetCube extends WebGLRenderTarget {
- constructor(width: number, height: number, options?: WebGLRenderTargetOptions);
-
- activeCubeFace: number; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5
- activeMipMapLevel: number;
-}
-
-// Renderers / Shaders /////////////////////////////////////////////////////////////////////
-export let ShaderChunk: {
- [name: string]: string;
-
- alphamap_fragment: string;
- alphamap_pars_fragment: string;
- alphatest_fragment: string;
- aomap_fragment: string;
- aomap_pars_fragment: string;
- begin_vertex: string;
- beginnormal_vertex: string;
- bsdfs: string;
- bumpmap_pars_fragment: string;
- clipping_planes_fragment: string;
- clipping_planes_pars_fragment: string;
- clipping_planes_pars_vertex: string;
- clipping_planes_vertex: string;
- color_fragment: string;
- color_pars_fragment: string;
- color_pars_vertex: string;
- color_vertex: string;
- common: string;
- cube_frag: string;
- cube_vert: string;
- cube_uv_reflection_fragment: string;
- defaultnormal_vertex: string;
- depth_frag: string;
- depth_vert: string;
- distanceRGBA_frag: string;
- distanceRGBA_vert: string;
- displacementmap_vertex: string;
- displacementmap_pars_vertex: string;
- emissivemap_fragment: string;
- emissivemap_pars_fragment: string;
- encodings_pars_fragment: string;
- encodings_fragment: string;
- envmap_fragment: string;
- envmap_pars_fragment: string;
- envmap_pars_vertex: string;
- envmap_vertex: string;
- equirect_frag: string;
- equirect_vert: string;
- fog_fragment: string;
- fog_pars_fragment: string;
- linedashed_frag: string;
- linedashed_vert: string;
- lightmap_fragment: string;
- lightmap_pars_fragment: string;
- lights_lambert_vertex: string;
- lights_pars_begin: string;
- lights_pars_map: string;
- lights_phong_fragment: string;
- lights_phong_pars_fragment: string;
- lights_physical_fragment: string;
- lights_physical_pars_fragment: string;
- lights_fragment_begin: string;
- lights_fragment_maps: string;
- lights_fragment_end: string;
- logdepthbuf_fragment: string;
- logdepthbuf_pars_fragment: string;
- logdepthbuf_pars_vertex: string;
- logdepthbuf_vertex: string;
- map_fragment: string;
- map_pars_fragment: string;
- map_particle_fragment: string;
- map_particle_pars_fragment: string;
- meshbasic_frag: string;
- meshbasic_vert: string;
- meshlambert_frag: string;
- meshlambert_vert: string;
- meshphong_frag: string;
- meshphong_vert: string;
- meshphysical_frag: string;
- meshphysical_vert: string;
- metalnessmap_fragment: string;
- metalnessmap_pars_fragment: string;
- morphnormal_vertex: string;
- morphtarget_pars_vertex: string;
- morphtarget_vertex: string;
- normal_flip: string;
- normal_frag: string;
- normal_fragment_begin: string;
- normal_fragment_maps: string;
- normal_vert: string;
- normalmap_pars_fragment: string;
- packing: string;
- points_frag: string;
- points_vert: string;
- shadow_frag: string;
- shadow_vert: string;
-
- premultiplied_alpha_fragment: string;
- project_vertex: string;
- roughnessmap_fragment: string;
- roughnessmap_pars_fragment: string;
- shadowmap_pars_fragment: string;
- shadowmap_pars_vertex: string;
- shadowmap_vertex: string;
- shadowmask_pars_fragment: string;
- skinbase_vertex: string;
- skinning_pars_vertex: string;
- skinning_vertex: string;
- skinnormal_vertex: string;
- specularmap_fragment: string;
- specularmap_pars_fragment: string;
- tonemapping_fragment: string;
- tonemapping_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;
-};
-
-export interface Shader {
- uniforms: { [uniform: string]: IUniform };
- vertexShader: string;
- fragmentShader: string;
-}
-
-export let ShaderLib: {
- [name: string]: Shader;
- basic: Shader;
- lambert: Shader;
- phong: Shader;
- standard: Shader;
- points: Shader;
- dashed: Shader;
- depth: Shader;
- normal: Shader;
- cube: Shader;
- equirect: Shader;
- depthRGBA: Shader;
- distanceRGBA: Shader;
- physical: Shader;
-};
-
-export interface IUniform {
- value: any;
-}
-
-export let UniformsLib: {
- common: {
- diffuse: IUniform;
- opacity: IUniform;
- map: IUniform;
- uvTransform: IUniform;
- alphaMap: IUniform;
- };
- specularmap: {
- specularMap: IUniform;
- };
- envmap: {
- envMap: IUniform;
- flipEnvMap: IUniform;
- reflectivity: IUniform;
- refractionRatio: IUniform;
- maxMipLevel: IUniform;
- };
- aomap: {
- aoMap: IUniform;
- aoMapIntensity: IUniform;
- };
- lightmap: {
- lightMap: IUniform;
- lightMapIntensity: IUniform;
- };
- emissivemap: {
- emissiveMap: IUniform
- };
- bumpmap: {
- bumpMap: IUniform;
- bumpScale: IUniform;
- };
- normalmap: {
- normalMap: IUniform;
- normalScale: IUniform;
- };
- displacementmap: {
- displacementMap: IUniform;
- displacementScale: IUniform;
- displacementBias: IUniform;
- };
- roughnessmap: {
- roughnessMap: IUniform
- };
- metalnessmap: {
- metalnessMap: IUniform
- };
- gradientmap: {
- gradientMap: IUniform
- };
- fog: {
- fogDensity: IUniform;
- fogNear: IUniform;
- fogFar: IUniform;
- fogColor: IUniform;
- };
- lights: {
- ambientLightColor: IUniform
- directionalLights: {
- value: any[];
- properties: {
- direction: {};
- color: {};
- shadow: {};
- shadowBias: {};
- shadowRadius: {};
- shadowMapSize: {};
- };
- };
- directionalShadowMap: IUniform;
- directionalShadowMatrix: IUniform;
- spotLights: {
- value: any[];
- properties: {
- color: {};
- position: {};
- direction: {};
- distance: {};
- coneCos: {};
- penumbraCos: {};
- decay: {};
- shadow: {};
- shadowBias: {};
- shadowRadius: {};
- shadowMapSize: {};
- };
- };
- spotShadowMap: IUniform;
- spotShadowMatrix: IUniform;
- pointLights: {
- value: any[];
- properties: {
- color: {};
- position: {};
- decay: {};
- distance: {};
- shadow: {};
- shadowBias: {};
- shadowRadius: {};
- shadowMapSize: {};
- };
- };
- pointShadowMap: IUniform;
- pointShadowMatrix: IUniform;
- hemisphereLights: {
- value: any[];
- properties: {
- direction: {};
- skycolor: {};
- groundColor: {};
- };
- };
- rectAreaLights: {
- value: any[];
- properties: {
- color: {};
- position: {};
- width: {};
- height: {};
- }
- }
- };
- points: {
- diffuse: IUniform;
- opacity: IUniform;
- size: IUniform;
- scale: IUniform;
- map: IUniform;
- uvTransform: IUniform;
- };
-};
-
-export namespace UniformsUtils {
- export function merge(uniforms: any[]): any;
- export function clone(uniforms_src: any): any;
-}
-
-export class Uniform {
- constructor(value: any);
- /**
- * @deprecated
- */
- constructor(type: string, value: any);
- /**
- * @deprecated
- */
- type: string;
- value: any;
- /**
- * @deprecated Use {@link Object3D#onBeforeRender object.onBeforeRender()} instead.
- */
- dynamic: boolean;
- onUpdateCallback: Function;
-
- /**
- * @deprecated Use {@link Object3D#onBeforeRender object.onBeforeRender()} instead.
- */
- onUpdate(callback: Function): Uniform;
-}
-
-// Renderers / WebGL /////////////////////////////////////////////////////////////////////
-export class WebGLBufferRenderer {
- constructor(_gl: WebGLRenderingContext, extensions: any, _infoRender: any);
-
- setMode(value: any): void;
- render(start: any, count: number): void;
- renderInstances(geometry: any): void;
-}
-
-export class WebGLClipping {
- uniform: { value: any, needsUpdate: boolean };
- numPlanes: number;
-
- init(planes: any[], enableLocalClipping: boolean, camera: Camera): boolean;
- beginShadows(): void;
- endShadows(): void;
- setState(planes: any[], clipShadows: boolean, camera: Camera, cache: boolean, fromCache: boolean): void;
-}
-
-export interface WebGLCapabilitiesParameters {
- precision?: any;
- logarithmicDepthBuffer?: any;
-}
-
-export class WebGLCapabilities {
- constructor(gl: WebGLRenderingContext, extensions: any, parameters: WebGLCapabilitiesParameters);
-
- precision: any;
- logarithmicDepthBuffer: any;
- maxTextures: any;
- maxVertexTextures: any;
- maxTextureSize: any;
- maxCubemapSize: any;
- maxAttributes: any;
- maxVertexUniforms: any;
- maxVaryings: any;
- maxFragmentUniforms: any;
- vertexTextures: any;
- floatFragmentTextures: any;
- floatVertexTextures: any;
-
- getMaxAnisotropy(): number;
- getMaxPrecision(precision: string): string;
-}
-
-export class WebGLExtensions {
- constructor(gl: WebGLRenderingContext);
-
- get(name: string): any;
-}
-
-export class WebGLGeometries {
- constructor(gl: WebGLRenderingContext, extensions: any, _infoRender: any);
-
- get(object: any): any;
-}
-
-export class WebGLLights {
- constructor(gl: WebGLRenderingContext, properties: any, info: any);
-
- get(light: any): any;
-}
-
-/**
- * An object with a series of statistical information about the graphics board memory and the rendering process.
- */
-export class WebGLInfo {
- autoReset: boolean;
- memory: {
- geometries: number;
- textures: number;
- };
- programs: WebGLProgram[] | null;
- render: {
- calls: number;
- frame: number;
- lines: number;
- points: number;
- triangles: number;
- };
- reset(): void;
-}
-
-export class WebGLIndexedBufferRenderer {
- constructor(gl: WebGLRenderingContext, properties: any, info: any);
-
- setMode(value: any): void;
- setIndex(index: any): void;
- render(start: any, count: number): void;
- renderInstances(geometry: any, start: any, count: number): void;
-}
-
-export class WebGLObjects {
- constructor(gl: WebGLRenderingContext, properties: any, info: any);
-
- getAttributeBuffer(attribute: any): any;
- getWireframeAttribute(geometry: any): any;
- update(object: any): void;
-}
-
-export class WebGLProgram {
- constructor(renderer: WebGLRenderer, code: string, material: ShaderMaterial, parameters: WebGLRendererParameters);
-
- id: number;
- code: string;
- usedTimes: number;
- program: any;
- vertexShader: WebGLShader;
- fragmentShader: WebGLShader;
- /**
- * @deprecated Use {@link WebGLProgram#getUniforms getUniforms()} instead.
- */
- uniforms: any;
- /**
- * @deprecated Use {@link WebGLProgram#getAttributes getAttributes()} instead.
- */
- attributes: any;
-
- getUniforms(): WebGLUniforms;
- getAttributes(): any;
- destroy(): void;
-}
-
-export class WebGLPrograms {
- constructor(renderer: WebGLRenderer, capabilities: any);
-
- programs: WebGLProgram[];
-
- getParameters(material: ShaderMaterial, lights: any, fog: any, nClipPlanes: number, object: any): any;
- getProgramCode(material: ShaderMaterial, parameters: any): string;
- acquireProgram(material: ShaderMaterial, parameters: any, code: string): WebGLProgram;
- releaseProgram(program: WebGLProgram): void;
-}
-
-export class WebGLTextures {
- constructor(gl: any, extensions: any, state: any, properties: any, capabilities: any, paramThreeToGL: Function, info: any);
-
- setTexture2D(texture: any, slot: number): void;
- setTextureCube(texture: any, slot: number): void;
- setTextureCubeDynamic(texture: any, slot: number): void;
- setupRenderTarget(renderTarget: any): void;
- updateRenderTargetMipmap(renderTarget: any): void;
-}
-
-export class WebGLUniforms {
- constructor(gl: any, program: WebGLProgram, renderer: WebGLRenderer);
-
- renderer: WebGLRenderer;
-
- setValue(gl: any, value: any, renderer?: any): void;
- set(gl: any, object: any, name: string): void;
- setOptional(gl: any, object: any, name: string): void;
-
- static upload(gl: any, seq: any, values: any[], renderer: any): void;
- static seqWithValue(seq: any, values: any[]): any[];
- static splitDynamic(seq: any, values: any[]): any[];
- static evalDynamic(seq: any, values: any[], object: any, camera: any): any[];
-}
-
-export class WebGLProperties {
- constructor();
-
- get(object: any): any;
- delete(object: any): void;
- clear(): void;
-}
-
-export class WebGLShader {
- constructor(gl: any, type: string, string: string);
-}
-
-export class WebGLShadowMap {
- constructor(_renderer: Renderer, _lights: any[], _objects: any[], capabilities: any);
-
- enabled: boolean;
- autoUpdate: boolean;
- needsUpdate: boolean;
- type: ShadowMapType;
-
- render(scene: Scene, camera: Camera): void;
-
- /**
- * @deprecated Use {@link WebGLShadowMap#renderReverseSided .shadowMap.renderReverseSided} instead.
- */
- cullFace: any;
-}
-
-export class WebGLState {
- constructor(gl: any, extensions: any, paramThreeToGL: Function);
-
- buffers: {
- color: WebGLColorBuffer,
- depth: WebGLDepthBuffer,
- stencil: WebGLStencilBuffer,
- };
-
- init(): void;
- initAttributes(): void;
- enableAttribute(attribute: string): void;
- enableAttributeAndDivisor(attribute: string, meshPerAttribute: any, extension: any): void;
- disableUnusedAttributes(): 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, premultiplyAlpha?: boolean): void;
- setColorWrite(colorWrite: number): void;
- setDepthTest(depthTest: number): void;
- setDepthWrite(depthWrite: number): void;
- setDepthFunc(depthFunc: Function): void;
- setStencilTest(stencilTest: boolean): void;
- setStencilWrite(stencilWrite: any): void;
- setStencilFunc(stencilFunc: Function, stencilRef: any, stencilMask: number): void;
- setStencilOp(stencilFail: any, stencilZFail: any, stencilZPass: any): void;
- setFlipSided(flipSided: number): void;
- setCullFace(cullFace: CullFace): void;
- setLineWidth(width: number): void;
- setPolygonOffset(polygonoffset: number, factor: number, units: number): void;
- setScissorTest(scissorTest: boolean): void;
- getScissorTest(): boolean;
- activeTexture(webglSlot: any): void;
- bindTexture(webglType: any, webglTexture: any): void;
- // Same interface as https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/compressedTexImage2D
- compressedTexImage2D(): void;
- // Same interface as https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D
- texImage2D(): void;
- clearColor(r: number, g: number, b: number, a: number): void;
- clearDepth(depth: number): void;
- clearStencil(stencil: any): void;
- scissor(scissor: any): void;
- viewport(viewport: any): void;
- reset(): void;
-}
-
-export class WebGLColorBuffer {
- constructor(gl: any, state: any);
-
- setMask(colorMask: number): void;
- setLocked(lock: boolean): void;
- setClear(r: number, g: number, b: number, a: number): void;
- reset(): void;
-}
-
-export class WebGLDepthBuffer {
- constructor(gl: any, state: any);
-
- setTest(depthTest: boolean): void;
- setMask(depthMask: number): void;
- setFunc(depthFunc: number): void;
- setLocked(lock: boolean): void;
- setClear(depth: any): void;
- reset(): void;
-}
-
-export class WebGLStencilBuffer {
- constructor(gl: any, state: any);
-
- setTest(stencilTest: boolean): void;
- setMask(stencilMask: number): void;
- setFunc(stencilFunc: number, stencilRef: any, stencilMask: number): void;
- setOp(stencilFail: any, stencilZFail: any, stencilZPass: any): void;
- setLocked(lock: boolean): void;
- setClear(stencil: any): void;
- reset(): void;
-}
-
-export class SpritePlugin {
- constructor(renderer: WebGLRenderer, sprites: any[]);
-
- render(scene: Scene, camera: Camera, viewportWidth: number, viewportHeight: number): void;
-}
-
-// Scenes /////////////////////////////////////////////////////////////////////
-
-/**
- * Scenes allow you to set up what and where is to be rendered by three.js. This is where you place objects, lights and cameras.
- */
-export class Scene extends Object3D {
- constructor();
-
- type: "Scene";
-
- /**
- * A fog instance defining the type of fog that affects everything rendered in the scene. Default is null.
- */
- fog: IFog | null;
-
- /**
- * If not null, it will force everything in the scene to be rendered with that material. Default is null.
- */
- overrideMaterial: Material | null;
- autoUpdate: boolean;
- background: null | Color | Texture;
-
- copy(source: this, recursive?: boolean): this;
- toJSON(meta?: any): any;
-}
-
-export interface IFog {
- name: string;
- color: Color;
- clone(): this;
- toJSON(): any;
-}
-
-/**
- * This class contains the parameters that define linear fog, i.e., that grows linearly denser with the distance.
- */
-export class Fog implements IFog {
- constructor(hex: number, near?: number, far?: number);
-
- name: string;
-
- /**
- * Fog color.
- */
- color: Color;
-
- /**
- * The minimum distance to start applying fog. Objects that are less than 'near' units from the active camera won't be affected by fog.
- */
- near: number;
-
- /**
- * The maximum distance at which fog stops being calculated and applied. Objects that are more than 'far' units away from the active camera won't be affected by fog.
- * Default is 1000.
- */
- far: number;
-
- clone(): this;
- toJSON(): any;
-}
-
-/**
- * This class contains the parameters that define linear fog, i.e., that grows exponentially denser with the distance.
- */
-export class FogExp2 implements IFog {
- constructor(hex: number|string, density?: number);
-
- name: string;
- color: Color;
-
- /**
- * Defines how fast the fog will grow dense.
- * Default is 0.00025.
- */
- density: number;
-
- clone(): this;
- toJSON(): any;
-}
-
-// Textures /////////////////////////////////////////////////////////////////////
-export let TextureIdCount: number;
-
-export class Texture extends EventDispatcher {
- constructor(
- image?: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement,
- mapping?: Mapping,
- wrapS?: Wrapping,
- wrapT?: Wrapping,
- magFilter?: TextureFilter,
- minFilter?: TextureFilter,
- format?: PixelFormat,
- type?: TextureDataType,
- anisotropy?: number,
- encoding?: TextureEncoding
- );
-
- id: number;
- uuid: string;
- name: string;
- sourceFile: string;
- image: any; // HTMLImageElement or ImageData or { width: number, height: number } in some children;
- mipmaps: ImageData[];
- mapping: Mapping;
- wrapS: Wrapping;
- wrapT: Wrapping;
- magFilter: TextureFilter;
- minFilter: TextureFilter;
- anisotropy: number;
- format: PixelFormat;
- type: TextureDataType;
- offset: Vector2;
- repeat: Vector2;
- center: Vector2;
- rotation: number;
- generateMipmaps: boolean;
- premultiplyAlpha: boolean;
- flipY: boolean;
- unpackAlignment: number;
- encoding: TextureEncoding;
- version: number;
- needsUpdate: boolean;
- onUpdate: () => void;
- static DEFAULT_IMAGE: any;
- static DEFAULT_MAPPING: any;
-
- clone(): this;
- copy(source: Texture): this;
- toJSON(meta: any): any;
- dispose(): void;
- transformUv(uv: Vector): void;
-}
-
-export class DepthTexture extends Texture {
- constructor(
- width: number,
- heighht: number,
- type?: TextureDataType,
- mapping?: Mapping,
- wrapS?: Wrapping,
- wrapT?: Wrapping,
- magFilter?: TextureFilter,
- minFilter?: TextureFilter,
- anisotropy?: number
- );
-
- image: { width: number, height: number };
-}
-
-export class CanvasTexture extends Texture {
- constructor(
- canvas: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement,
- mapping?: Mapping,
- wrapS?: Wrapping,
- wrapT?: Wrapping,
- magFilter?: TextureFilter,
- minFilter?: TextureFilter,
- format?: PixelFormat,
- type?: TextureDataType,
- anisotropy?: number
- );
-}
-
-export class CubeTexture extends Texture {
- constructor(
- images?: any[], // HTMLImageElement or HTMLCanvasElement
- mapping?: Mapping,
- wrapS?: Wrapping,
- wrapT?: Wrapping,
- magFilter?: TextureFilter,
- minFilter?: TextureFilter,
- format?: PixelFormat,
- type?: TextureDataType,
- anisotropy?: number,
- encoding?: TextureEncoding
- );
-
- images: any; // returns and sets the value of Texture.image in the codde ?
-}
-
-export class CompressedTexture extends Texture {
- constructor(
- mipmaps: ImageData[],
- width: number,
- height: number,
- format?: PixelFormat,
- type?: TextureDataType,
- mapping?: Mapping,
- wrapS?: Wrapping,
- wrapT?: Wrapping,
- magFilter?: TextureFilter,
- minFilter?: TextureFilter,
- anisotropy?: number,
- encoding?: TextureEncoding
- );
-
- image: { width: number; height: number; };
-}
-
-export class DataTexture extends Texture {
- constructor(
- data: ArrayBuffer | TypedArray,
- width: number,
- height: number,
- format?: PixelFormat,
- type?: TextureDataType,
- mapping?: Mapping,
- wrapS?: Wrapping,
- wrapT?: Wrapping,
- magFilter?: TextureFilter,
- minFilter?: TextureFilter,
- anisotropy?: number,
- encoding?: TextureEncoding
- );
-
- image: ImageData;
-}
-
-export class VideoTexture extends Texture {
- constructor(
- video: HTMLVideoElement,
- mapping?: Mapping,
- wrapS?: Wrapping,
- wrapT?: Wrapping,
- magFilter?: TextureFilter,
- minFilter?: TextureFilter,
- format?: PixelFormat,
- type?: TextureDataType,
- anisotropy?: number
- );
-}
-
-// Extras /////////////////////////////////////////////////////////////////////
-
-/**
- * @deprecated Use {@link TextureLoader} instead.
- */
-export namespace ImageUtils {
- /**
- * @deprecated
- */
- export let crossOrigin: string;
-
- /**
- * @deprecated Use {@link TextureLoader THREE.TextureLoader()} instead.
- */
- export function loadTexture(url: string, mapping?: Mapping, onLoad?: (texture: Texture) => void, onError?: (message: string) => void): Texture;
-
- /**
- * @deprecated Use {@link CubeTextureLoader THREE.CubeTextureLoader()} instead.
- */
- export function loadTextureCube(array: string[], mapping?: Mapping, onLoad?: (texture: Texture) => void , onError?: (message: string) => void ): Texture;
-}
-
-export namespace SceneUtils {
- export function createMultiMaterialObject(geometry: Geometry, materials: Material[]): Object3D;
- export function detach(child: Object3D, parent: Object3D, scene: Scene): void;
- export function attach(child: Object3D, scene: Scene, parent: Object3D): void;
-}
-
-interface Vec2
-{
- x: number;
- y: number;
-}
-
-export namespace ShapeUtils {
- export function area(contour: Vec2[]): number;
- export function triangulate(contour: Vec2[], indices: boolean): number[];
- export function triangulateShape(contour: Vec2[], holes: Vec2[]): number[][];
- export function isClockWise(pts: Vec2[]): boolean;
-}
-
-// Extras / Audio /////////////////////////////////////////////////////////////////////
-
-export class Audio extends Object3D {
- constructor(listener: AudioListener);
- type: "Audio";
-
- context: AudioContext;
- gain: GainNode;
- autoplay: boolean;
- buffer: null | Audio;
- loop: boolean;
- startTime: number;
- offset: number;
- playbackRate: number;
- isPlaying: boolean;
- hasPlaybackControl: boolean;
- sourceType: string;
- source: AudioBufferSourceNode;
- filters: any[];
-
- getOutput(): GainNode;
- setNodeSource(audioNode: AudioBufferSourceNode): this;
- setMediaElementSource(mediaElement: MediaElementAudioSourceNode): this;
- setBuffer(audioBuffer: AudioBuffer): this;
- play(): this;
- onEnded(): void;
- pause(): this;
- stop(): this;
- connect(): this;
- disconnect(): this;
- getFilters(): any[];
- setFilter(value: any[]): this;
- getFilter(): any;
- setFilter(filter: any): this;
- setPlaybackRate(value: number): this;
- getPlaybackRate(): number;
- getLoop(): boolean;
- setLoop(value: boolean): void;
- getVolume(): number;
- setVolume(value: number): this;
- /**
- * @deprecated Use {@link AudioLoader} instead.
- */
- load(file: string): Audio;
-}
-
-export class AudioAnalyser {
- constructor(audio: any, fftSize: number);
-
- analyser: any;
- data: Uint8Array;
-
- getFrequencyData(): Uint8Array;
- getAverageFrequency(): number;
-
- /**
- * @deprecated Use {@link AudioAnalyser#getFrequencyData .getFrequencyData()} instead.
- */
- getData(file: any): any;
-}
-
-export const AudioContext: AudioContext;
-
-export class AudioBuffer {
- constructor(context: any);
-
- context: any;
- ready: boolean;
- readyCallbacks: Function[];
-
- load(file: string): AudioBuffer;
- onReady(callback: Function): void;
-}
-
-export class PositionalAudio extends Audio {
- constructor(listener: AudioListener);
-
- panner: PannerNode;
-
- setRefDistance(value: number): void;
- getRefDistance(): number;
- setRolloffFactor(value: number): void;
- getRolloffFactor(): number;
- setDistanceModel(value: number): void;
- getDistanceModel(): number;
- setMaxDistance(value: number): void;
- getMaxDistance(): number;
-}
-
-export class AudioListener extends Object3D {
- constructor();
-
- type: "AudioListener";
- context: AudioContext;
- gain: GainNode;
- filter: null | any;
-
- getInput(): GainNode;
- removeFilter(): void;
- setFilter(value: any): void;
- getFilter(): any;
- setMasterVolume(value: number): void;
- getMasterVolume(): number;
- updateMatrixWorld(force?: boolean): void;
-}
-
-// Extras / Core /////////////////////////////////////////////////////////////////////
-
-/**
- * An extensible curve object which contains methods for interpolation
- * class Curve<T extends Vector>
- */
-export class Curve {
-
- /**
- * This value determines the amount of divisions when calculating the cumulative segment lengths of a curve via .getLengths.
- * To ensure precision when using methods like .getSpacedPoints, it is recommended to increase .arcLengthDivisions if the curve is very large.
- * Default is 200.
- */
- arcLengthDivisions:number;
-
- /**
- * Returns a vector for point t of the curve where t is between 0 and 1
- * getPoint(t: number): T;
- */
- getPoint(t: number, optionalTarget?: T): T;
-
- /**
- * Returns a vector for point at relative position in curve according to arc length
- * getPointAt(u: number): T;
- */
- getPointAt(u: number, optionalTarget?: T): T;
-
- /**
- * Get sequence of points using getPoint( t )
- * getPoints(divisions?: number): T[];
- */
- getPoints(divisions?: number): T[];
-
- /**
- * Get sequence of equi-spaced points using getPointAt( u )
- * getSpacedPoints(divisions?: number): T[];
- */
- getSpacedPoints(divisions?: number): T[];
-
- /**
- * Get total curve arc length
- */
- getLength(): number;
-
- /**
- * Get list of cumulative segment lengths
- */
- getLengths(divisions?: number): number[];
-
- /**
- * Update the cumlative segment distance cache
- */
- updateArcLengths(): void;
-
- /**
- * Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equi distance
- */
- getUtoTmapping(u: number, distance: number): number;
-
- /**
- * Returns a unit vector tangent at t. If the subclassed curve do not implement its tangent derivation, 2 points a small delta apart will be used to find its gradient which seems to give a reasonable approximation
- * getTangent(t: number): T;
- */
- getTangent(t: number): T;
-
- /**
- * Returns tangent at equidistance point u on the curve
- * getTangentAt(u: number): T;
- */
- getTangentAt(u: number): T;
-
- /**
- * @deprecated since r84.
- */
- static create(constructorFunc: Function, getPointFunc: Function): Function;
-}
-
-export class CurvePath extends Curve {
- constructor();
-
- curves: Curve[];
- autoClose: boolean;
-
- add(curve: Curve): void;
- checkConnection(): boolean;
- closePath(): void;
- getPoint(t: number): T;
- getLength(): number;
- updateArcLengths(): void;
- getCurveLengths(): number[];
- getSpacedPoints(divisions?: number): T[];
- getPoints(divisions?: number): T[];
-
- /**
- * @deprecated Use {@link Geometry#setFromPoints new THREE.Geometry().setFromPoints( points )} instead.
- */
- createPointsGeometry(divisions: number): Geometry;
- /**
- * @deprecated Use {@link Geometry#setFromPoints new THREE.Geometry().setFromPoints( points )} instead.
- */
- createSpacedPointsGeometry(divisions: number): Geometry;
- /**
- * @deprecated Use {@link Geometry#setFromPoints new THREE.Geometry().setFromPoints( points )} instead.
- */
- createGeometry(points: T[]): Geometry;
-}
-
-export enum PathActions {
- MOVE_TO,
- LINE_TO,
- QUADRATIC_CURVE_TO, // Bezier quadratic curve
- BEZIER_CURVE_TO, // Bezier cubic curve
- CSPLINE_THRU, // Catmull-rom spline
- ARC, // Circle
- ELLIPSE,
-}
-
-export interface PathAction {
- action: PathActions;
- args: any;
-}
-
-/**
- * a 2d path representation, comprising of points, lines, and cubes, similar to the html5 2d canvas api. It extends CurvePath.
- */
-export class Path extends CurvePath {
- constructor(points?: Vector2[]);
-
- currentPoint: Vector2;
-
- /**
- * @deprecated Use {@link Path#setFromPoints .setFromPoints()} instead.
- */
- fromPoints(vectors: Vector2[]): void;
- setFromPoints(vectors: Vector2[]): void;
- moveTo(x: number, y: number): void;
- lineTo(x: number, y: number): void;
- quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number): void;
- bezierCurveTo(aCP1x: number, aCP1y: number, aCP2x: number, aCP2y: number, aX: number, aY: number): void;
- splineThru(pts: Vector2[]): void;
- arc(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean): void;
- absarc(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean): void;
- ellipse(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number): void;
- absellipse(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number): void;
-}
-
-export class ShapePath {
- constructor();
-
- subPaths: any[];
- currentPath: any;
-
- moveTo(x: number, y: number): void;
- lineTo(x: number, y: number): void;
- quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number): void;
- bezierCurveTo(aCP1x: number, aCP1y: number, aCP2x: number, aCP2y: number, aX: number, aY: number): void;
- splineThru(pts: Vector2[]): void;
- toShapes(isCCW: boolean, noHoles: any): Shape[];
-}
-
-/**
- * Defines a 2d shape plane using paths.
- */
-export class Shape extends Path {
- constructor(points?: Vector2[]);
-
- holes: Path[];
-
- /**
- * @deprecated Use {@link ExtrudeGeometry ExtrudeGeometry()} instead.
- */
- extrude(options?: any): ExtrudeGeometry;
-
- /**
- * @deprecated Use {@link ShapeGeometry ShapeGeometry()} instead.
- */
- makeGeometry(options?: any): ShapeGeometry;
- getPointsHoles(divisions: number): Vector2[][];
-
- /**
- * @deprecated Use {@link Shape#extractPoints .extractPoints()} instead.
- */
- extractAllPoints(divisions: number): {
- shape: Vector2[];
- holes: Vector2[][];
- };
- extractPoints(divisions: number): Vector2[];
-}
-
-// Extras / Curves /////////////////////////////////////////////////////////////////////
-export namespace CurveUtils {
- export function tangentQuadraticBezier(t: number, p0: number, p1: number, p2: number): number;
- export function tangentCubicBezier(t: number, p0: number, p1: number, p2: number, p3: number): number;
- export function tangentSpline(t: number, p0: number, p1: number, p2: number, p3: number): number;
- export function interpolate(p0: number, p1: number, p2: number, p3: number, t: number): number;
-}
-
-export class CatmullRomCurve3 extends Curve {
- constructor(points?: Vector3[], closed?: boolean, curveType?: string, tension?: number);
-
- points: Vector3[];
-
- getPoint(t: number): Vector3;
-}
-
-export class CubicBezierCurve extends Curve {
- constructor(v0: Vector2, v1: Vector2, v2: Vector2, v3: Vector2);
-
- v0: Vector2;
- v1: Vector2;
- v2: Vector2;
- v3: Vector2;
-}
-
-export class CubicBezierCurve3 extends Curve {
- constructor(v0: Vector3, v1: Vector3, v2: Vector3, v3: Vector3);
-
- v0: Vector3;
- v1: Vector3;
- v2: Vector3;
- v3: Vector3;
-
- getPoint(t: number): Vector3;
-}
-
-export class EllipseCurve extends Curve {
- constructor(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number);
-
- aX: number;
- aY: number;
- xRadius: number;
- yRadius: number;
- aStartAngle: number;
- aEndAngle: number;
- aClockwise: boolean;
- aRotation: number;
-}
-export class ArcCurve extends EllipseCurve {
- constructor(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean );
-}
-
-export class LineCurve extends Curve {
- constructor( v1: Vector2, v2: Vector2 );
-
- v1: Vector2;
- v2: Vector2;
-}
-
-export class LineCurve3 extends Curve {
- constructor(v1: Vector3, v2: Vector3);
-
- v1: Vector3;
- v2: Vector3;
-
- getPoint(t: number): Vector3;
-}
-
-export class QuadraticBezierCurve extends Curve {
- constructor( v0: Vector2, v1: Vector2, v2: Vector2 );
-
- v0: Vector2;
- v1: Vector2;
- v2: Vector2;
-}
-
-export class QuadraticBezierCurve3 extends Curve {
- constructor(v0: Vector3, v1: Vector3, v2: Vector3);
-
- v0: Vector3;
- v1: Vector3;
- v2: Vector3;
-
- getPoint(t: number): Vector3;
-}
-
-export class SplineCurve extends Curve {
- constructor(points?: Vector2[]);
-
- points: Vector2[];
-}
-
-
-// Extras / Geometries /////////////////////////////////////////////////////////////////////
-export class BoxBufferGeometry extends BufferGeometry {
- constructor(width?: number, height?: number, depth?: number, widthSegments?: number, heightSegments?: number, depthSegments?: number);
-
- parameters: {
- width: number;
- height: number;
- depth: number;
- widthSegments: number;
- heightSegments: number;
- depthSegments: number;
- };
-}
-
-/**
- * BoxGeometry is the quadrilateral primitive geometry class. It is typically used for creating a cube or irregular quadrilateral of the dimensions provided within the (optional) 'width', 'height', & 'depth' constructor arguments.
- */
-export class BoxGeometry extends Geometry {
- /**
- * @param width — Width of the sides on the X axis.
- * @param height — Height of the sides on the Y axis.
- * @param depth — Depth of the sides on the Z axis.
- * @param widthSegments — Number of segmented faces along the width of the sides.
- * @param heightSegments — Number of segmented faces along the height of the sides.
- * @param depthSegments — Number of segmented faces along the depth of the sides.
- */
- constructor(width?: number, height?: number, depth?: number, widthSegments?: number, heightSegments?: number, depthSegments?: number);
-
- parameters: {
- width: number;
- height: number;
- depth: number;
- widthSegments: number;
- heightSegments: number;
- depthSegments: number;
- };
-}
-
-/**
- * @deprecated Use {@link BoxGeometry} instead.
- */
-export class CubeGeometry extends BoxGeometry {}
-
-export class CircleBufferGeometry extends BufferGeometry {
- constructor(radius?: number, segments?: number, thetaStart?: number, thetaLength?: number);
-
- parameters: {
- radius: number;
- segments: number;
- thetaStart: number;
- thetaLength: number;
- };
-}
-
-export class CircleGeometry extends Geometry {
- constructor(radius?: number, segments?: number, thetaStart?: number, thetaLength?: number);
-
- parameters: {
- radius: number;
- segments: number;
- thetaStart: number;
- thetaLength: number;
- };
-}
-
-export class CylinderBufferGeometry extends BufferGeometry {
- constructor(radiusTop?: number, radiusBottom?: number, height?: number, radialSegments?: number, heightSegments?: number, openEnded?: boolean, thetaStart?: number, thetaLength?: number);
-
- parameters: {
- radiusTop: number;
- radiusBottom: number;
- height: number;
- radialSegments: number;
- heightSegments: number;
- openEnded: boolean;
- thetaStart: number;
- thetaLength: number;
- };
-}
-
-export class CylinderGeometry extends Geometry {
- /**
- * @param radiusTop — Radius of the cylinder at the top.
- * @param radiusBottom — Radius of the cylinder at the bottom.
- * @param height — Height of the cylinder.
- * @param radiusSegments — Number of segmented faces around the circumference of the cylinder.
- * @param heightSegments — Number of rows of faces along the height of the cylinder.
- * @param openEnded - A Boolean indicating whether or not to cap the ends of the cylinder.
- */
- constructor(radiusTop?: number, radiusBottom?: number, height?: number, radiusSegments?: number, heightSegments?: number, openEnded?: boolean, thetaStart?: number, thetaLength?: number);
-
- parameters: {
- radiusTop: number;
- radiusBottom: number;
- height: number;
- radialSegments: number;
- heightSegments: number;
- openEnded: boolean;
- thetaStart: number;
- thetaLength: number;
- };
-}
-
-export class ConeBufferGeometry extends BufferGeometry {
- constructor(radius?: number, height?: number, radialSegment?: number, heightSegment?: number, openEnded?: boolean, thetaStart?: number, thetaLength?: number);
-}
-
-export class ConeGeometry extends CylinderGeometry {
- constructor(radius?: number, height?: number, radialSegment?: number, heightSegment?: number, openEnded?: boolean, thetaStart?: number, thetaLength?: number);
-}
-
-export class DodecahedronBufferGeometry extends PolyhedronBufferGeometry {
- constructor(radius?: number, detail?: number);
-}
-
-export class DodecahedronGeometry extends Geometry {
- constructor(radius?: number, detail?: number);
-
- parameters: {
- radius: number;
- detail: number;
- };
-}
-
-export class EdgesGeometry extends BufferGeometry {
- constructor(geometry: BufferGeometry | Geometry, thresholdAngle?: number);
-}
-
-export interface ExtrudeGeometryOptions {
- curveSegments?: number;
- steps?: number;
- depth?: number;
- bevelEnabled?: boolean;
- bevelThickness?: number;
- bevelSize?: number;
- bevelSegments?: number;
- extrudePath?: CurvePath;
- UVGenerator?: UVGenerator;
-}
-
-export interface UVGenerator {
- generateTopUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number): Vector2[];
- generateSideWallUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number, indexD: number): Vector2[];
-}
-
-export class ExtrudeGeometry extends Geometry {
- constructor(shapes: Shape | Shape[], options?: ExtrudeGeometryOptions);
-
- static WorldUVGenerator: UVGenerator;
-
- addShapeList(shapes: Shape[], options?: any): void;
- addShape(shape: Shape, options?: any): void;
-}
-
-export class ExtrudeBufferGeometry extends BufferGeometry {
- constructor(shapes: Shape | Shape[], options?: ExtrudeGeometryOptions);
-
- static WorldUVGenerator: UVGenerator;
-
- addShapeList(shapes: Shape[], options?: any): void;
- addShape(shape: Shape, options?: any): void;
-}
-
-export class IcosahedronBufferGeometry extends PolyhedronBufferGeometry {
- constructor(radius?: number, detail?: number);
-}
-
-export class IcosahedronGeometry extends PolyhedronGeometry {
- constructor(radius?: number, detail?: number);
-}
-
-export class LatheBufferGeometry extends BufferGeometry {
- constructor(points: Vector2[], segments?: number, phiStart?: number, phiLength?: number);
-
- parameters: {
- points: Vector2[];
- segments: number;
- phiStart: number;
- phiLength: number;
- };
-}
-
-export class LatheGeometry extends Geometry {
- constructor(points: Vector2[], segments?: number, phiStart?: number, phiLength?: number);
-
- parameters: {
- points: Vector2[];
- segments: number;
- phiStart: number;
- phiLength: number;
- };
-}
-
-export class OctahedronBufferGeometry extends PolyhedronBufferGeometry {
- constructor(radius?: number, detail?: number);
-}
-
-export class OctahedronGeometry extends PolyhedronGeometry {
- constructor(radius?: number, detail?: number);
-}
-
-export class ParametricBufferGeometry extends BufferGeometry {
- constructor(func: (u: number, v: number, dest: Vector3) => void, slices: number, stacks: number);
-
- parameters: {
- func: (u: number, v: number, dest:Vector3) => void;
- slices: number;
- stacks: number;
- };
-}
-
-export class ParametricGeometry extends Geometry {
- constructor(func: (u: number, v: number, dest: Vector3) => void, slices: number, stacks: number);
-
- parameters: {
- func: (u: number, v: number, dest:Vector3) => void;
- slices: number;
- stacks: number;
- };
-}
-
-export class PlaneBufferGeometry extends BufferGeometry {
- constructor(width?: number, height?: number, widthSegments?: number, heightSegments?: number);
-
- parameters: {
- width: number;
- height: number;
- widthSegments: number;
- heightSegments: number;
- };
-}
-
-export class PlaneGeometry extends Geometry {
- constructor(width?: number, height?: number, widthSegments?: number, heightSegments?: number);
-
- parameters: {
- width: number;
- height: number;
- widthSegments: number;
- heightSegments: number;
- };
-}
-
-export class PolyhedronBufferGeometry extends BufferGeometry {
- constructor(vertices: number[], indices: number[], radius?: number, detail?: number);
-
- parameters: {
- vertices: number[];
- indices: number[];
- radius: number;
- detail: number;
- }
-}
-
-export class PolyhedronGeometry extends Geometry {
- constructor(vertices: number[], indices: number[], radius?: number, detail?: number);
-
- parameters: {
- vertices: number[];
- indices: number[];
- radius: number;
- detail: number;
- };
- boundingSphere: Sphere;
-}
-
-export class RingBufferGeometry extends BufferGeometry {
- constructor(innerRadius?: number, outerRadius?: number, thetaSegments?: number, phiSegments?: number, thetaStart?: number, thetaLength?: number);
-
- parameters: {
- innerRadius: number;
- outerRadius: number;
- thetaSegments: number;
- phiSegments: number;
- thetaStart: number;
- thetaLength: number;
- };
-}
-
-export class RingGeometry extends Geometry {
- constructor(innerRadius?: number, outerRadius?: number, thetaSegments?: number, phiSegments?: number, thetaStart?: number, thetaLength?: number);
-
- parameters: {
- innerRadius: number;
- outerRadius: number;
- thetaSegments: number;
- phiSegments: number;
- thetaStart: number;
- thetaLength: number;
- };
-}
-
-export class ShapeGeometry extends Geometry {
- constructor(shapes: Shape | Shape[], curveSegments?: number);
-
- addShapeList(shapes: Shape[], options: any): ShapeGeometry;
- addShape(shape: Shape, options?: any): void;
-}
-
-export class ShapeBufferGeometry extends BufferGeometry
-{
- constructor(shapes: Shape | Shape[], curveSegments?: number);
-}
-
-export class SphereBufferGeometry extends BufferGeometry {
- constructor(radius?: number, widthSegments?: number, heightSegments?: number, phiStart?: number, phiLength?: number, thetaStart?: number, thetaLength?: number);
-
- parameters: {
- radius: number;
- widthSegments: number;
- heightSegments: number;
- phiStart: number;
- phiLength: number;
- thetaStart: number;
- thetaLength: number;
- };
-}
-
-/**
- * A class for generating sphere geometries
- */
-export class SphereGeometry extends Geometry {
- /**
- * The geometry is created by sweeping and calculating vertexes around the Y axis (horizontal sweep) and the Z axis (vertical sweep). Thus, incomplete spheres (akin to 'sphere slices') can be created through the use of different values of phiStart, phiLength, thetaStart and thetaLength, in order to define the points in which we start (or end) calculating those vertices.
- *
- * @param radius — sphere radius. Default is 50.
- * @param widthSegments — number of horizontal segments. Minimum value is 3, and the default is 8.
- * @param heightSegments — number of vertical segments. Minimum value is 2, and the default is 6.
- * @param phiStart — specify horizontal starting angle. Default is 0.
- * @param phiLength — specify horizontal sweep angle size. Default is Math.PI * 2.
- * @param thetaStart — specify vertical starting angle. Default is 0.
- * @param thetaLength — specify vertical sweep angle size. Default is Math.PI.
- */
- constructor(radius?: number, widthSegments?: number, heightSegments?: number, phiStart?: number, phiLength?: number, thetaStart?: number, thetaLength?: number);
-
- parameters: {
- radius: number;
- widthSegments: number;
- heightSegments: number;
- phiStart: number;
- phiLength: number;
- thetaStart: number;
- thetaLength: number;
- };
-}
-
-export class TetrahedronBufferGeometry extends PolyhedronBufferGeometry {
- constructor(radius?: number, detail?: number);
-}
-
-export class TetrahedronGeometry extends PolyhedronGeometry {
- constructor(radius?: number, detail?: number);
-}
-
-export interface TextGeometryParameters {
- font?: Font;
- size?: number;
- height?: number;
- curveSegments?: number;
- bevelEnabled?: boolean;
- bevelThickness?: number;
- bevelSize?: number;
- bevelSegments?: number;
-}
-
-export class TextGeometry extends ExtrudeGeometry {
- constructor(text: string, parameters?: TextGeometryParameters);
-
- parameters: {
- font: Font;
- size: number;
- height: number;
- curveSegments: number;
- bevelEnabled: boolean;
- bevelThickness: number;
- bevelSize: number;
- bevelSegments: number;
- };
-}
-
-export class TextBufferGeometry extends ExtrudeBufferGeometry {
- constructor(text: string, parameters?: TextGeometryParameters);
-
- parameters: {
- font: Font;
- size: number;
- height: number;
- curveSegments: number;
- bevelEnabled: boolean;
- bevelThickness: number;
- bevelSize: number;
- bevelSegments: number;
- };
-}
-
-export class TorusBufferGeometry extends BufferGeometry {
- constructor(radius?: number, tube?: number, radialSegments?: number, tubularSegments?: number, arc?: number);
-
- parameters: {
- radius: number;
- tube: number;
- radialSegments: number;
- tubularSegments: number;
- arc: number;
- };
-}
-
-export class TorusGeometry extends Geometry {
- constructor(radius?: number, tube?: number, radialSegments?: number, tubularSegments?: number, arc?: number);
-
- parameters: {
- radius: number;
- tube: number;
- radialSegments: number;
- tubularSegments: number;
- arc: number;
- };
-}
-
-export class TorusKnotBufferGeometry extends BufferGeometry {
- constructor(radius?: number, tube?: number, tubularSegments?: number, radialSegments?: number, p?: number, q?: number);
-
- parameters: {
- radius: number;
- tube: number;
- tubularSegments: number;
- radialSegments: number;
- p: number;
- q: number;
- heightScale: number;
- };
-}
-
-export class TorusKnotGeometry extends Geometry {
- constructor(radius?: number, tube?: number, tubularSegments?: number, radialSegments?: number, p?: number, q?: number);
-
- parameters: {
- radius: number;
- tube: number;
- tubularSegments: number;
- radialSegments: number;
- p: number;
- q: number;
- heightScale: number;
- };
-}
-
-export class TubeGeometry extends Geometry {
- constructor(path: Curve, tubularSegments?: number, radius?: number, radiusSegments?: number, closed?: boolean);
-
- parameters: {
- path: Curve;
- tubularSegments: number;
- radius: number;
- radialSegments: number;
- closed: boolean;
- };
- tangents: Vector3[];
- normals: Vector3[];
- binormals: Vector3[];
-}
-
-export class TubeBufferGeometry extends BufferGeometry {
- constructor(path: Curve, tubularSegments?: number, radius?: number, radiusSegments?: number, closed?: boolean);
-
- parameters: {
- path: Curve;
- tubularSegments: number;
- radius: number;
- radialSegments: number;
- closed: boolean;
- };
- tangents: Vector3[];
- normals: Vector3[];
- binormals: Vector3[];
-}
-
-export class WireframeGeometry extends BufferGeometry {
- constructor(geometry: Geometry | BufferGeometry);
-}
-
-// Extras / Helpers /////////////////////////////////////////////////////////////////////
-
-export class ArrowHelper extends Object3D {
- constructor(dir: Vector3, origin?: Vector3, length?: number, hex?: number, headLength?: number, headWidth?: number);
-
- line: Line;
- cone: Mesh;
-
- setDirection(dir: Vector3): void;
- setLength(length: number, headLength?: number, headWidth?: number): void;
- setColor(color: Color): void;
-}
-
-export class AxesHelper extends LineSegments {
- constructor(size?: number);
-}
-
-/**
- * @deprecated Use {@link BoxHelper THREE.BoxHelper} instead.
- */
-export class BoundingBoxHelper extends Mesh {
- constructor(object?: Object3D, hex?: number);
-
- object: Object3D;
- box: Box3;
-
- update(): void;
-}
-
-export class BoxHelper extends LineSegments {
- constructor(object?: Object3D, color?: Color);
-
- update(object?: Object3D): void;
-}
-
-export class CameraHelper extends LineSegments {
- constructor(camera: Camera);
-
- camera: Camera;
- pointMap: { [id: string]: number[]; };
-
- update(): void;
-}
-
-export class DirectionalLightHelper extends Object3D {
- constructor(light: DirectionalLight, size?: number, color?: Color | string | number);
-
- light: DirectionalLight;
- lightPlane: Line;
- targetPlane: Line;
- color: Color | string | number | undefined;
- matrix: Matrix4;
- matrixAutoUpdate: boolean;
-
- dispose(): void;
- update(): void;
-}
-
-/**
- * @deprecated Use {@link EdgesGeometry THREE.EdgesGeometry}
- */
-export class EdgesHelper extends LineSegments {
- constructor(object: Object3D, hex?: number, thresholdAngle?: number);
-}
-
-export class FaceNormalsHelper extends LineSegments {
- constructor(object: Object3D, size?: number, hex?: number, linewidth?: number);
-
- object: Object3D;
- size: number;
-
- update(object?: Object3D): void;
-}
-
-export class GridHelper extends LineSegments {
- constructor(size: number, divisions: number, color1?: Color|number, color2?: Color|number);
- /**
- * @deprecated Colors should be specified in the constructor.
- */
- setColors(color1?: Color|number, color2?: Color|number): void;
-}
-
-export class HemisphereLightHelper extends Object3D {
- constructor(light: HemisphereLight, size: number, color?: Color | number | string);
-
- light: HemisphereLight;
- matrix: Matrix4;
- matrixAutoUpdate: boolean;
- material: MeshBasicMaterial;
-
- color: Color | string | number | undefined;
-
- dispose(): void;
- update(): void;
-}
-
-export class PointLightHelper extends Object3D {
- constructor(light: PointLight, sphereSize?: number, color?: Color | string | number);
-
- light: PointLight;
- color: Color | string | number | undefined;
- matrix: Matrix4;
- matrixAutoUpdate: boolean;
-
- dispose(): void;
- update(): void;
-}
-
-export class SkeletonHelper extends LineSegments {
- constructor(bone: Object3D);
-
- bones: Bone[];
- root: Object3D;
-
- getBoneList(object: Object3D): Bone[];
- update(): void;
-}
-
-export class SpotLightHelper extends Object3D {
- constructor(light: Light, color?: Color | string | number);
-
- light: Light;
- matrix: Matrix4;
- matrixAutoUpdate: boolean;
- color: Color | string | number | undefined;
-
- dispose(): void;
- update(): void;
-}
-
-export class VertexNormalsHelper extends LineSegments {
- constructor(object: Object3D, size?: number, hex?: number, linewidth?: number);
-
- object: Object3D;
- size: number;
-
- update(object?: Object3D): void;
-}
-
-export class PlaneHelper extends LineSegments {
- constructor(plane: Plane, size?: number, hex?: number);
-
- plane: Plane;
- size: number;
-
- updateMatrixWorld(force: boolean): void;
-}
-
-/**
- * @deprecated Use {@link WireframeGeometry THREE.WireframeGeometry} instead.
- */
-export class WireframeHelper extends LineSegments {
- constructor(object: Object3D, hex?: number);
-}
-
-// Extras / Objects /////////////////////////////////////////////////////////////////////
-
-export class ImmediateRenderObject extends Object3D {
- constructor(material: Material);
-
- material: Material;
- render(renderCallback: Function): void;
-}
-
-export interface MorphBlendMeshAnimation {
- start: number;
- end: number;
- length: number;
- fps: number;
- duration: number;
- lastFrame: number;
- currentFrame: number;
- active: boolean;
- time: number;
- direction: number;
- weight: number;
- directionBackwards: boolean;
- mirroredLoop: boolean;
-}
-
-export class MorphBlendMesh extends Mesh {
- constructor(geometry: Geometry, material: Material);
-
- animationsMap: { [name: string]: MorphBlendMeshAnimation; };
- animationsList: MorphBlendMeshAnimation[];
-
- createAnimation(name: string, start: number, end: number, fps: number): void;
- autoCreateAnimations(fps: number): void;
- setAnimationDirectionForward(name: string): void;
- setAnimationDirectionBackward(name: string): void;
- setAnimationFPS(name: string, fps: number): void;
- setAnimationDuration(name: string, duration: number): void;
- setAnimationWeight(name: string, weight: number): void;
- setAnimationTime(name: string, time: number): void;
- getAnimationTime(name: string): number;
- getAnimationDuration(name: string): number;
- playAnimation(name: string): void;
- stopAnimation(name: string): void;
- update(delta: number): void;
-}
-
-export interface WebVRManager {
- enabled: boolean;
- getDevice(): VRDisplay | null;
- setDevice(device: VRDisplay | null): void;
- setPoseTarget(object: Object3D | null): void;
- getCamera(camera: PerspectiveCamera): PerspectiveCamera | ArrayCamera;
- submitFrame(): void;
- dispose(): void;
-}
diff --git a/types/three/three-css3drenderer.d.ts b/types/three/three-css3drenderer.d.ts
deleted file mode 100644
index 0cc681221d..0000000000
--- a/types/three/three-css3drenderer.d.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { Camera, Object3D, Scene } from "./three-core";
-
-export class CSS3DObject extends Object3D {
- constructor(element: any);
-
- element: any;
-}
-
-export class CSS3DSprite extends CSS3DObject {
- constructor(element: any);
-
-}
-
-// This renderer does not work in IE. Can be found here for more information.
-// https://github.com/mrdoob/three.js/issues/4783
-export class CSS3DRenderer {
- constructor();
-
- domElement: HTMLElement;
-
- setSize(width: number, height: number): void;
-
- render(scene: Scene, camera: Camera): void;
-}
diff --git a/types/three/three-ctmloader.d.ts b/types/three/three-ctmloader.d.ts
deleted file mode 100644
index 065614a0c5..0000000000
--- a/types/three/three-ctmloader.d.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { Loader } from "./three-core";
-
-export class CTMLoader extends Loader {
- constructor();
-
- /**
- * load multiple CTM parts defined in JSON.
- * @param url(required)
- * @param callback(required)
- * @param parameters
- */
- loadParts(url: string, callback: () => any, parameters?: any): any;
-
- /**
- * Load CTMLoader compressed models
- * @param url(required)
- * @param callback(required)
- * @param parameters
- */
- load(url: string, callback: (geo: any) => any, parameters?: any): any;
-
- /**
- * create buffergeometry by ctm file.
- * @param file(required)
- * @param callback(required)
- */
- createModel(file: string, callback: () => any): any;
-}
diff --git a/types/three/three-ddsloader.d.ts b/types/three/three-ddsloader.d.ts
deleted file mode 100644
index a89a7b94ba..0000000000
--- a/types/three/three-ddsloader.d.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/DDSLoader.js
-
-import { CompressedPixelFormat, CompressedTextureLoader } from "./three-core";
-
-export interface Dds {
- mipmaps: ImageData[];
- width: number;
- height: number;
- format: CompressedPixelFormat;
- mipmapCount: number;
-}
-
-export class DDSLoader extends CompressedTextureLoader {
- constructor();
- parse(buffer: string, loadMipmaps: boolean) : Dds;
-}
diff --git a/types/three/three-dragcontrols.d.ts b/types/three/three-dragcontrols.d.ts
deleted file mode 100644
index 5f4afbb0b4..0000000000
--- a/types/three/three-dragcontrols.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import {Camera, Object3D} from './three-core';
-
-export class DragControls {
- constructor(objects: Object3D[], camera: Camera, domElement?: HTMLElement);
-}
diff --git a/types/three/three-editorcontrols.d.ts b/types/three/three-editorcontrols.d.ts
deleted file mode 100644
index 8b838fe672..0000000000
--- a/types/three/three-editorcontrols.d.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { Camera, EventDispatcher, Object3D, Vector3 } from "./three-core";
-
-export class EditorControls extends EventDispatcher {
-
- constructor(object: Camera, domElement?: HTMLElement);
-
- enabled: boolean;
- center: Vector3;
-
- focus(target: Object3D, frame: boolean): void;
-
- pan(delta: Vector3): void;
-
- zoom(delta: Vector3): void;
-
- rotate(delta: Vector3): void;
-
- dispose(): void;
-}
diff --git a/types/three/three-effectcomposer.d.ts b/types/three/three-effectcomposer.d.ts
deleted file mode 100644
index c399fda24c..0000000000
--- a/types/three/three-effectcomposer.d.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import { WebGLRenderTarget, WebGLRenderer } from "./three-core";
-import { ShaderPass } from "./three-shaderpass";
-
-export class EffectComposer {
- constructor(renderer: WebGLRenderer, renderTarget?: WebGLRenderTarget);
-
- renderTarget1: WebGLRenderTarget;
- renderTarget2: WebGLRenderTarget;
- writeBuffer: WebGLRenderTarget;
- readBuffer: WebGLRenderTarget;
- passes: Pass[];
- copyPass: ShaderPass;
-
- swapBuffers(): void;
-
- addPass(pass: any): void;
-
- insertPass(pass: any, index: number): void;
-
- render(delta?: number): void;
-
- reset(renderTarget?: WebGLRenderTarget): void;
-
- setSize(width: number, height: number): void;
-}
-
-
-export class Pass{
- // if set to true, the pass is processed by the composer
- enabled: boolean;
-
- // if set to true, the pass indicates to swap read and write buffer after rendering
- needsSwap: boolean;
-
- // if set to true, the pass clears its buffer before rendering
- clear: boolean;
-
- // if set to true, the result of the pass is rendered to screen
- renderToScreen: boolean;
-
- setSize(width: number, height:number ): void;
-
- render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number, maskActive?: boolean): void;
-}
\ No newline at end of file
diff --git a/types/three/three-examples.d.ts b/types/three/three-examples.d.ts
deleted file mode 100644
index c08773fdf4..0000000000
--- a/types/three/three-examples.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-// Things from three.js/examples/ that do not (yet) have their own file
-
-import { EventDispatcher, Shader } from "./three-core";
-
-export var AWDLoader: any;
-export var OBJLoader2: any;
-export var STLLoader: any;
-export var FlyControls: any;
-export var BloomPass: any;
-export var DotScreenShader: Shader;
-export var RGBShiftShader: Shader;
-export var FXAAShader: Shader;
diff --git a/types/three/three-fbxloader.d.ts b/types/three/three-fbxloader.d.ts
deleted file mode 100644
index 4ecd1e70a7..0000000000
--- a/types/three/three-fbxloader.d.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/FBXLoader.js
-
-import { LoadingManager } from "./three-core";
-import { AnimationClip, Group } from "./three-core";
-
-interface IFbxSceneGraph extends Group {
- animations: AnimationClip[];
-}
-export class FBXLoader {
-
- constructor(manager?: LoadingManager);
- manager: LoadingManager;
-
- load(url: string, onLoad: (group: IFbxSceneGraph) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void;
- parse(FBXText: string, resourceDirectory: string) : Group;
-
-}
diff --git a/types/three/three-filmpass.d.ts b/types/three/three-filmpass.d.ts
deleted file mode 100644
index 468670c9b0..0000000000
--- a/types/three/three-filmpass.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { OrthographicCamera, Scene, WebGLRenderTarget, WebGLRenderer, ShaderMaterial, Mesh, IUniform } from "./three-core";
-import {Pass} from "./three-effectcomposer";
-
-export class FilmPass extends Pass {
- constructor(noiseIntensity?: number, scanlinesIntensity?: number, scanlinesCount?: number, grayscale?: boolean);
-
- scene: Scene;
- camera: OrthographicCamera;
- uniforms: { [uniform: string]: IUniform };
- material: ShaderMaterial;
- quad: Mesh;
-
-}
diff --git a/types/three/three-gltfexporter.d.ts b/types/three/three-gltfexporter.d.ts
deleted file mode 100644
index 454f491b20..0000000000
--- a/types/three/three-gltfexporter.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Object3D } from "./three-core";
-
-export class GLTFExporter {
- constructor();
-
- parse(input: Object3D, onCompleted: (gltf: object) => void, options: object): null;
-}
diff --git a/types/three/three-gltfloader.d.ts b/types/three/three-gltfloader.d.ts
deleted file mode 100644
index f797882d3b..0000000000
--- a/types/three/three-gltfloader.d.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/GLTFLoader.js
-
-import {AnimationClip} from "./three-core";
-import {Camera} from "./three-core";
-import {LoadingManager} from "./three-core";
-import {Scene} from "./three-core";
-
-export class GLTF {
- animations: AnimationClip[];
- scene: Scene;
- scenes: Scene[];
- cameras: Camera[];
- asset: object;
-}
-
-export class GLTFLoader {
-
- constructor(manager?: LoadingManager);
- manager: LoadingManager;
- path: string;
-
- load(url: string, onLoad: (gltf: GLTF) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void) : void;
- setPath(path: string) : GLTFLoader;
- setResourcePath(path: string) : GLTFLoader;
- setCrossOrigin(value: string): void;
- setDRACOLoader(dracoLoader: object): void;
- parse(data: ArrayBuffer, path: string, onLoad: (gltf: GLTF) => void, onError?: (event: ErrorEvent) => void) : void;
-
-}
diff --git a/types/three/three-lensflare.d.ts b/types/three/three-lensflare.d.ts
deleted file mode 100644
index f9a0967099..0000000000
--- a/types/three/three-lensflare.d.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import {Mesh, Camera, Scene, WebGLRenderer, Blending, Vector3, Color, Shader, Texture, BufferGeometry} from "./three-core";
-
-export class LensFlare extends Mesh {
-
- constructor();
-
- type: 'LensFlare';
- frustumCulled: false;
- renderOrder: number;
-
- addElement(element: LensFlareElement): this;
- onBeforeRender: (renderer: WebGLRenderer, scene: Scene, camera: Camera) => void;
- dispose(): void;
-
- isLensflare: true;
-
-}
-
-export class LensFlareElement {
- constructor(texture: Texture, size?: number, distance?: number, color?: Color);
- texture: Texture;
- size: number;
- distance: number;
- color: Color;
- static Shader: Shader;
- static Geometry: BufferGeometry
-}
diff --git a/types/three/three-mapcontrols.d.ts b/types/three/three-mapcontrols.d.ts
deleted file mode 100644
index 66ff8a0982..0000000000
--- a/types/three/three-mapcontrols.d.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import {
- Camera,
- EventDispatcher,
- MOUSE,
- Object3D,
- Vector3
-} from "./three-core";
-
-export class MapControls extends EventDispatcher {
- constructor(object: Camera, domElement?: HTMLElement);
-
- object: Camera;
- domElement: HTMLElement | HTMLDocument;
-
- // API
- enabled: boolean;
- target: Vector3;
-
- enableZoom: boolean;
- zoomSpeed: number;
- minDistance: number;
- maxDistance: number;
- enableRotate: boolean;
- rotateSpeed: number;
- enablePan: boolean;
- keyPanSpeed: number;
- maxZoom: number;
- minZoom: number;
- panSpeed: number;
- autoRotate: boolean;
- autoRotateSpeed: number;
- minPolarAngle: number;
- maxPolarAngle: number;
- minAzimuthAngle: number;
- maxAzimuthAngle: number;
- enableKeys: boolean;
- screenSpacePanning: boolean;
- keys: { LEFT: number; UP: number; RIGHT: number; BOTTOM: number };
- mouseButtons: { LEFT: MOUSE; MIDDLE: MOUSE; RIGHT: MOUSE };
- enableDamping: boolean;
- dampingFactor: number;
- target0: Vector3;
- position0: Vector3;
- zoom0: number;
-
- rotateLeft(angle?: number): void;
-
- rotateUp(angle?: number): void;
-
- panLeft(distance?: number): void;
-
- panUp(distance?: number): void;
-
- pan(deltaX: number, deltaY: number): void;
-
- dollyIn(dollyScale: number): void;
-
- dollyOut(dollyScale: number): void;
-
- saveState(): void;
-
- update(): boolean;
-
- reset(): void;
-
- dispose(): void;
-
- getPolarAngle(): number;
-
- getAzimuthalAngle(): number;
-}
diff --git a/types/three/three-maskpass.d.ts b/types/three/three-maskpass.d.ts
deleted file mode 100644
index 9899efb121..0000000000
--- a/types/three/three-maskpass.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { Camera, Scene, WebGLRenderTarget, WebGLRenderer } from "./three-core";
-import { Pass } from "./three-effectcomposer";
-
-export class MaskPass extends Pass {
- constructor(scene: Scene, camera: Camera);
- scene: Scene;
- camera: Camera;
- clear: true;
- needsSwap: false;
- inverse: boolean;
-}
-
-export class ClearMaskPass extends Pass {
- needsSwap: false;
-}
diff --git a/types/three/three-mtlloader.d.ts b/types/three/three-mtlloader.d.ts
deleted file mode 100644
index c2dbd40c84..0000000000
--- a/types/three/three-mtlloader.d.ts
+++ /dev/null
@@ -1,108 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/MTLLoader.js
-
-
-import { Material } from "./three-core";
-import {LoadingManager} from "./three-core";
-import {Mapping} from "./three-core";
-import {EventDispatcher} from "./three-core";
-import {BufferGeometry} from "./three-core";
-import {Side} from "./three-core";
-import {Texture} from "./three-core";
-import {Vector2} from "./three-core";
-import {Wrapping} from "./three-core";
-
-export interface MaterialCreatorOptions {
- /**
- * side: Which side to apply the material
- * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide
- */
- side?: Side;
- /*
- * wrap: What type of wrapping to apply for textures
- * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping
- */
- wrap?: Wrapping;
- /*
- * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255
- * Default: false, assumed to be already normalized
- */
- normalizeRGB?: boolean;
- /*
- * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's
- * Default: false
- */
- ignoreZeroRGBs?: boolean;
- /*
- * invertTrProperty: Use values 1 of Tr field for fully opaque. This option is useful for obj
- * exported from 3ds MAX, vcglib or meshlab.
- * Default: false
- */
- invertTrProperty?: boolean;
-}
-
-export class MTLLoader extends EventDispatcher {
-
- constructor(manager?: LoadingManager);
- manager: LoadingManager;
- materialOptions: MaterialCreatorOptions;
- path: string;
- texturePath: string;
- crossOrigin: boolean;
-
- load(url: string, onLoad: (materialCreator: MaterialCreator) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void;
- parse(text: string) : MaterialCreator;
- setPath(path: string) : void;
- setTexturePath(path: string) : void;
- setBaseUrl(path: string) : void;
- setCrossOrigin(value: boolean) : void;
- setMaterialOptions(value: MaterialCreatorOptions) : void;
-}
-
-export interface MaterialInfo {
- ks?: number[];
- kd?: number[];
- ke?: number[];
- map_kd?: string;
- map_ks?: string;
- map_ke?: string;
- norm?: string;
- map_bump?: string;
- bump?: string;
- map_d?: string;
- ns?: number;
- d?: number;
- tr?: number;
-}
-
-export interface TexParams {
- scale: Vector2;
- offset: Vector2;
- url: string;
-}
-
-export class MaterialCreator {
-
- constructor(baseUrl?: string, options?: MaterialCreatorOptions);
-
- baseUrl : string;
- options : MaterialCreatorOptions;
- materialsInfo : {[key: string]: MaterialInfo};
- materials : {[key: string]: Material};
- private materialsArray : Material[];
- nameLookup : {[key: string]: number};
- side : Side;
- wrap : Wrapping;
-
- setCrossOrigin( value: boolean ) : void;
- setManager( value: LoadingManager ) : void;
- setMaterials( materialsInfo: {[key: string]: MaterialInfo} ) : void;
- convert( materialsInfo: {[key: string]: MaterialInfo} ) : {[key: string]: MaterialInfo};
- preload() : void;
- getIndex( materialName: string ) : Material;
- getAsArray() : Material[];
- create( materialName: string ) : Material;
- createMaterial_( materialName: string ) : Material;
- getTextureParams( value: string, matParams: any ) : TexParams;
- loadTexture(url: string, mapping?: Mapping, onLoad?: (bufferGeometry: BufferGeometry) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Texture;
-
-}
diff --git a/types/three/three-objloader.d.ts b/types/three/three-objloader.d.ts
deleted file mode 100644
index 8fd32c1e69..0000000000
--- a/types/three/three-objloader.d.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/OBJLoader.js
-
-import { Material } from "./three-core";
-import {LoadingManager} from "./three-core";
-import {Group} from "./three-core";
-import {MaterialCreator} from "./three-mtlloader";
-
-export class OBJLoader {
-
- constructor(manager?: LoadingManager);
- manager: LoadingManager;
- regexp: any;
- materials: Material[];
- path: string;
-
- load(url: string, onLoad: (group: Group) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void;
- parse(data: string) : Group;
- setPath(value: string) : void;
- setMaterials(materials: MaterialCreator) : void;
- _createParserState() : any;
-
-}
diff --git a/types/three/three-octree.d.ts b/types/three/three-octree.d.ts
deleted file mode 100644
index e5357f5800..0000000000
--- a/types/three/three-octree.d.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { Vector3 } from "./three-core";
-
-export class Octree {
- constructor(parameters?: any);
-
- update(): void;
-
- add(object: any, options?: any): any;
-
- addDeferred(object: any, options?: any): any;
-
- addObjectData(object: any, part: any): any;
-
- remove(object: any): any;
-
- extend(octree: Octree): any;
-
- rebuild(): any;
-
- updateObject(object: any): any;
-
- search(position: Vector3, radius: number, organizeByObject: boolean, direction: Vector3): any;
-
- setRoot(root: any): any;
-
- getDepthEnd(): number;
-
- getNodeCountEnd(): number;
-
- getObjectCountEnd(): number;
-
- toConsole(): any;
-}
\ No newline at end of file
diff --git a/types/three/three-orbitcontrols.d.ts b/types/three/three-orbitcontrols.d.ts
deleted file mode 100644
index 6d8627c6ad..0000000000
--- a/types/three/three-orbitcontrols.d.ts
+++ /dev/null
@@ -1,70 +0,0 @@
-import { Camera, MOUSE, Object3D, Vector3 } from "./three-core";
-
-export class OrbitControls {
- constructor(object: Camera, domElement?: HTMLElement);
-
- object: Camera;
- domElement: HTMLElement | HTMLDocument;
-
- // API
- enabled: boolean;
- target: Vector3;
-
- // deprecated
- center: Vector3;
-
- enableZoom: boolean;
- zoomSpeed: number;
- minDistance: number;
- maxDistance: number;
- enableRotate: boolean;
- rotateSpeed: number;
- enablePan: boolean;
- keyPanSpeed: number;
- autoRotate: boolean;
- autoRotateSpeed: number;
- minPolarAngle: number;
- maxPolarAngle: number;
- minAzimuthAngle: number;
- maxAzimuthAngle: number;
- enableKeys: boolean;
- keys: {LEFT: number; UP: number; RIGHT: number; BOTTOM: number;};
- mouseButtons: {ORBIT: MOUSE; ZOOM: MOUSE; PAN: MOUSE;};
- enableDamping: boolean;
- dampingFactor: number;
- screenSpacePanning: boolean;
-
-
- rotateLeft(angle?: number): void;
-
- rotateUp(angle?: number): void;
-
- panLeft(distance?: number): void;
-
- panUp(distance?: number): void;
-
- pan(deltaX: number, deltaY: number): void;
-
- dollyIn(dollyScale: number): void;
-
- dollyOut(dollyScale: number): void;
-
- update(): void;
-
- reset(): void;
-
- dispose(): void;
-
- getPolarAngle(): number;
-
- getAzimuthalAngle(): number;
-
- // EventDispatcher mixins
- addEventListener(type: string, listener: (event: any) => void): void;
-
- hasEventListener(type: string, listener: (event: any) => void): boolean;
-
- removeEventListener(type: string, listener: (event: any) => void): void;
-
- dispatchEvent(event: {type: string; target: any;}): void;
-}
diff --git a/types/three/three-orthographictrackballcontrols.d.ts b/types/three/three-orthographictrackballcontrols.d.ts
deleted file mode 100644
index 4b2d86e852..0000000000
--- a/types/three/three-orthographictrackballcontrols.d.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import { Camera, EventDispatcher, Vector3 } from "./three-core";
-
-export class OrthographicTrackballControls extends EventDispatcher {
- constructor(object: Camera, domElement?: HTMLElement);
-
- object: Camera;
- domElement: HTMLElement;
-
- // API
- enabled: boolean;
- screen: {left: number; top: number; width: number; height: number};
- radius: number;
- rotateSpeed: number;
- zoomSpeed: number;
- panSpeed: number;
- noRotate: boolean;
- noZoom: boolean;
- noPan: boolean;
- noRoll: boolean;
- staticMoving: boolean;
- dynamicDampingFactor: number;
- keys: number[];
-
- target: Vector3;
-
- position0: Vector3;
- target0: Vector3;
- up0: Vector3;
-
- left0: number;
- right0: number;
- top0: number;
- bottom0: number;
-
- update(): void;
-
- reset(): void;
-
- checkDistances(): void;
-
- zoomCamera(): void;
-
- panCamera(): void;
-
- rotateCamera(): void;
-
- handleResize(): void;
-
- handleEvent(event: any): void;
-}
diff --git a/types/three/three-outlinepass.d.ts b/types/three/three-outlinepass.d.ts
deleted file mode 100644
index 5dd7799e9e..0000000000
--- a/types/three/three-outlinepass.d.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { Camera, Color, Object3D, Scene, Vector2, MeshBasicMaterial, ShaderMaterial, WebGLRenderTarget, IUniform, Matrix4 } from './three-core';
-import {Pass} from "./three-effectcomposer";
-
-export class OutlinePass extends Pass {
- constructor(resolution: Vector2, scene: Scene, camera: Camera, selectedObjects?: Object3D[]);
- selectedObjects: Object3D[];
- renderCamera: Camera;
- renderScene: Scene;
- visibleEdgeColor: Color;
- hiddenEdgeColor: Color;
- edgeGlow: number;
- usePatternTexture: boolean;
- edgeThickness: number;
- edgeStrength: number;
- downSampleRatio: number;
- pulsePeriod: number;
- resolution: Vector2;
- maskBufferMaterial: MeshBasicMaterial;
- prepareMaskMaterial: ShaderMaterial;
- renderTargetDepthBuffer: WebGLRenderTarget;
- renderTargetMaskDownSampleBuffer: WebGLRenderTarget;
- renderTargetBlurBuffer1: WebGLRenderTarget;
- renderTargetBlurBuffer2: WebGLRenderTarget;
- edgeDetectionMaterial: ShaderMaterial;
- separableBlurMaterial: ShaderMaterial;
- overlayMaterial: ShaderMaterial;
- copyUniforms: { [uniform: string]: IUniform };
- materialCopy: ShaderMaterial;
- oldClearColor: Color;
- tempPulseColor1: Color;
- tempPulseColor2: Color;
- textureMatrix: Matrix4;
- static BlurDirectionX: Vector2;
- static BlurDirectionY: Vector2;
- dispose(): void;
- changeVisibilityOfSelectedObjects(bVisible: boolean): void;
- changeVisibilityOfNonSelectedObjects(bVisible: boolean): void;
- updateTextureMatrix(): void;
-}
-
diff --git a/types/three/three-projector.d.ts b/types/three/three-projector.d.ts
deleted file mode 100644
index 8c535a3cd7..0000000000
--- a/types/three/three-projector.d.ts
+++ /dev/null
@@ -1,101 +0,0 @@
-import {
- Camera,
- Color,
- Face3,
- Light,
- Material,
- Object3D,
- Scene,
- Vector2,
- Vector3,
- Vector4
-} from "./three-core";
-
-// Renderers / Renderables /////////////////////////////////////////////////////////////////////
-export class RenderableObject {
- constructor();
-
- id: number;
- object: any;
- z: number;
-}
-
-export class RenderableFace {
- constructor();
-
- id: number;
- v1: RenderableVertex;
- v2: RenderableVertex;
- v3: RenderableVertex;
- normalModel: Vector3;
- vertexNormalsModel: Vector3[];
- vertexNormalsLength: number;
- color: Color;
- material: Material;
- uvs: Vector2[][];
- z: number;
-
-}
-
-export class RenderableVertex {
- constructor();
-
- position: Vector3;
- positionWorld: Vector3;
- positionScreen: Vector4;
- visible: boolean;
-
- copy(vertex: RenderableVertex): void;
-}
-
-export class RenderableLine {
- constructor();
-
- id: number;
- v1: RenderableVertex;
- v2: RenderableVertex;
- vertexColors: Color[];
- material: Material;
- z: number;
-}
-
-export class RenderableSprite {
- constructor();
-
- id: number;
- object: any;
- x: number;
- y: number;
- z: number;
- rotation: number;
- scale: Vector2;
- material: Material;
-}
-
-/**
- * Projects points between spaces.
- */
-export class Projector {
- constructor();
-
- // deprecated.
- projectVector(vector: Vector3, camera: Camera): Vector3;
-
- // deprecated.
- unprojectVector(vector: Vector3, camera: Camera): Vector3;
-
- /**
- * Transforms a 3D scene object into 2D render data that can be rendered in a screen with your renderer of choice, projecting and clipping things out according to the used camera.
- * If the scene were a real scene, this method would be the equivalent of taking a picture with the camera (and developing the film would be the next step, using a Renderer).
- *
- * @param scene scene to project.
- * @param camera camera to use in the projection.
- * @param sort select whether to sort elements using the Painter's algorithm.
- */
- projectScene(scene: Scene, camera: Camera, sortObjects: boolean, sortElements?: boolean): {
- objects: Object3D[]; // Mesh, Line or other object
- sprites: Object3D[]; // Sprite or Particle
- lights: Light[];
- elements: Face3[]; // Line, Particle, Face3 or Face4
- };
-}
diff --git a/types/three/three-renderpass.d.ts b/types/three/three-renderpass.d.ts
deleted file mode 100644
index 65c13efcfb..0000000000
--- a/types/three/three-renderpass.d.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import {
- Camera,
- Color,
- Material,
- Scene,
- WebGLRenderTarget,
- WebGLRenderer
-} from "./three-core";
-import { Pass } from "./three-effectcomposer";
-
-export class RenderPass extends Pass{
- constructor(scene: Scene, camera: Camera, overrideMaterial?: Material | null, clearColor?: Color | string | number, clearAlpha?: number);
-
- scene: Scene;
- camera: Camera;
- overrideMaterial: Material | null | undefined;
- clearColor: Color | string | number | undefined;
- clearAlpha: number | undefined;
- clear: boolean;
- needsSwap: false;
- clearDepth: false;
-}
diff --git a/types/three/three-shaderpass.d.ts b/types/three/three-shaderpass.d.ts
deleted file mode 100644
index ad1c45e540..0000000000
--- a/types/three/three-shaderpass.d.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import {
- OrthographicCamera,
- IUniform,
- Mesh,
- Scene,
- Shader,
- ShaderMaterial,
- WebGLRenderTarget,
- WebGLRenderer
-} from "./three-core";
-import { Pass } from "./three-effectcomposer";
-
-export class ShaderPass extends Pass {
- constructor(shader: Shader, textureID?: string);
-
- textureID: string;
- uniforms: { [uniform: string]: IUniform };
- material: ShaderMaterial;
- camera: OrthographicCamera;
- scene: Scene;
- quad: Mesh;
-}
\ No newline at end of file
diff --git a/types/three/three-smaapass.d.ts b/types/three/three-smaapass.d.ts
deleted file mode 100644
index 1deca03ab8..0000000000
--- a/types/three/three-smaapass.d.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { WebGLRenderTarget, Texture, IUniform, ShaderMaterial, OrthographicCamera, Scene, Mesh } from "./three-core";
-import { Pass } from "./three-effectcomposer";
-
-export class SMAAPass extends Pass {
- constructor(width: number, height: number);
- edgesRT: WebGLRenderTarget;
- weightsRT: WebGLRenderTarget;
- areaTexture: Texture;
- searchTexture: Texture;
- uniformsEdges: { [uniform: string]: IUniform };
- materialEdges: ShaderMaterial;
- uniformsWeights: { [uniform: string]: IUniform };
- materialWeights: ShaderMaterial;
- uniformsBlend: { [uniform: string]: IUniform };
- materialBlend: ShaderMaterial;
- needsSwap: false;
- camera: OrthographicCamera;
- scene: Scene;
- quad: Mesh;
-
- getAreaTexture(): string;
- getSearchTexture(): string;
-}
-
diff --git a/types/three/three-ssaapass.d.ts b/types/three/three-ssaapass.d.ts
deleted file mode 100644
index f335c72677..0000000000
--- a/types/three/three-ssaapass.d.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { Pass } from "./three-effectcomposer";
-import { Scene, Camera, Color, IUniform, ShaderMaterial, OrthographicCamera, Mesh } from "./three-core";
-
-export class SSAARenderPass extends Pass {
- constructor(scene: Scene, camera: Camera, clearColor?: Color | string | number, clearAlpha?: number);
- scene: Scene;
- camera: Camera;
- sampleLevel: number;
- unbiased: boolean;
- clearColor: Color | string | number;
- clearAlpha: number;
- copyUniforms: { [uniform: string]: IUniform };
- copyMaterial: ShaderMaterial;
- camera2: OrthographicCamera;
- scene2: Scene;
- quad2: Mesh;
- dispose(): void;
- static readonly JitterVectors: number[][][];
-}
\ No newline at end of file
diff --git a/types/three/three-tdsloader.d.ts b/types/three/three-tdsloader.d.ts
deleted file mode 100644
index c1911a7003..0000000000
--- a/types/three/three-tdsloader.d.ts
+++ /dev/null
@@ -1,195 +0,0 @@
-// https://github.com/codetheorist/three-tds-loader/blob/master/src/index.js
-
-import * as THREE from "./index";
-
-export class TDSLoader {
- constructor(three: typeof THREE);
-
- /**
- * Load 3ds file from url.
- *
- * @param url URL for the file.
- * @param onLoad onLoad callback, receives group object3D as argument.
- * @param onProgress onProgress callback.
- * @param onError onError callback.
- */
- load: (url: string, onLoad: (object3D: THREE.Object3D) => void, onProgress?: (progress: ProgressEvent) => void, onError?: (event: ErrorEvent) => void) => void;
-
- /**
- * Parse arraybuffer data and load 3ds file.
- *
- * @param arraybuffer Arraybuffer data to be loaded.
- * @param path Path for external resources.
- * @return Group loaded from 3ds file.
- */
- parse: (arraybuffer: ArrayBuffer, path: string) => THREE.Object3D;
-
- /**
- * Decode file content to read 3ds data.
- *
- * @param arraybuffer Arraybuffer data to be loaded.
- */
- readFile: (arraybuffer: ArrayBuffer, path: string) => void;
-
- /**
- * Read mesh data chunk.
- *
- * @param data Dataview in use.
- */
- readMeshData: (data: DataView, path: string) => void;
-
- /**
- * Read named object chunk.
- *
- * @param data Dataview in use.
- */
- readNamedobject: (data: DataView) => void;
-
- /**
- * Read material data chunk and add it to the material list.
- *
- * @param data Dataview in use.
- */
- readMaterialEntry: (data: DataView, path: string) => void;
-
- /**
- * Read mesh data chunk.
- *
- * @param data Dataview in use.
- */
- readMesh: (data: DataView) => void;
-
- /**
- * Read face array data chunk.
- *
- * @param data Dataview in use.
- * @param mesh Mesh to be filled with the data read.
- */
- readFaceArray: (data: DataView, mesh: THREE.Mesh) => void;
-
- /**
- * Read texture map data chunk.
- *
- * @param data Dataview in use.
- * @return Texture read from this data chunk.
- */
- readMap: (data: DataView, path: string) => THREE.Texture;
-
- /**
- * Read material group data chunk.
- *
- * @param data Dataview in use.
- * @return object with name and index of the object.
- */
- readMaterialGroup: (data: DataView) => object;
-
- /**
- * Read a color value.
- *
- * @param data Dataview.
- * @return Color value read..
- */
- readColor: (data: DataView) => THREE.Color;
-
- /**
- * Read next chunk of data.
- *
- * @param data Dataview.
- * @return Chunk of data read.
- */
- readChunk: (data: DataView) => object;
-
- /**
- * Set position to the end of the current chunk of data.
- *
- * @param chunk Data chunk.
- */
- endChunk: (chunk: object) => void;
-
- /**
- * Move to the next data chunk.
- *
- * @param data Dataview.
- * @param chunk Data chunk.
- */
- nextChunk: (data: DataView, chunk: object) => number;
-
- /**
- * Reset dataview position.
- */
- resetPosition: () => void;
-
- /**
- * Read byte value.
- *
- * @param data Dataview to read data from.
- * @return Data read from the dataview.
- */
- readByte: (data: DataView) => number;
-
- /**
- * Read 32 bit float value.
- *
- * @param data Dataview to read data from.
- * @return Data read from the dataview.
- */
- readFloat: (data: DataView) => number;
-
- /**
- * Read 32 bit signed integer value.
- *
- * @param data Dataview to read data from.
- * @return Data read from the dataview.
- */
- readInt: (data: DataView) => number;
-
- /**
- * Read 16 bit signed integer value.
- *
- * @param data Dataview to read data from.
- * @return Data read from the dataview.
- */
- readShort: (data: DataView) => number;
-
- /**
- * Read 64 bit unsigned integer value.
- *
- * @param data Dataview to read data from.
- * @return Data read from the dataview.
- */
- readDWord: (data: DataView) => number;
-
- /**
- * Read 32 bit unsigned integer value.
- *
- * @param data Dataview to read data from.
- * @return Data read from the dataview.
- */
- readWord: (data: DataView) => number;
-
- /**
- * Read string value.
- *
- * @param data Dataview to read data from.
- * @param maxLength Max size of the string to be read.
- * @return Data read from the dataview.
- */
- readString: (data: DataView, maxLength: number) => string;
-
- /**
- * Set resource path used to determine the file path to attached resources.
- *
- * @param path Path to resources.
- * @return Self for chaining.
- */
- setPath: (path: string) => TDSLoader;
-
- /**
- * Print debug message to the console.
- *
- * Is controlled by a flag to show or hide debug messages.
- *
- * @param message Debug message to print to the console.
- */
- debugMessage: (message: string) => void;
-}
\ No newline at end of file
diff --git a/types/three/three-tgaloader.d.ts b/types/three/three-tgaloader.d.ts
deleted file mode 100644
index cf25bad8dd..0000000000
--- a/types/three/three-tgaloader.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/TGALoader.js
-
-import { LoadingManager, Texture } from "./three-core";
-
-export class TGALoader {
- constructor(manager?: LoadingManager);
-
- manager: LoadingManager;
-
- load(url: string, onLoad?: (texture: Texture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Texture;
-}
diff --git a/types/three/three-trackballcontrols.d.ts b/types/three/three-trackballcontrols.d.ts
deleted file mode 100644
index f5fb324079..0000000000
--- a/types/three/three-trackballcontrols.d.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { Camera, EventDispatcher, Vector3 } from "./three-core";
-
-export class TrackballControls extends EventDispatcher {
- constructor(object: Camera, domElement?: HTMLElement);
-
- object: Camera;
- domElement: HTMLElement;
-
- // API
- enabled: boolean;
- screen: {left: number; top: number; width: number; height: number};
- rotateSpeed: number;
- zoomSpeed: number;
- panSpeed: number;
- noRotate: boolean;
- noZoom: boolean;
- noPan: boolean;
- noRoll: boolean;
- staticMoving: boolean;
- dynamicDampingFactor: number;
- minDistance: number;
- maxDistance: number;
- keys: number[];
-
- target: Vector3;
- position0: Vector3;
- target0: Vector3;
- up0: Vector3;
-
- update(): void;
-
- reset(): void;
-
- dispose(): void;
-
- checkDistances(): void;
-
- zoomCamera(): void;
-
- panCamera(): void;
-
- rotateCamera(): void;
-
- handleResize(): void;
-
- handleEvent(event: any): void;
-}
diff --git a/types/three/three-transformcontrols.d.ts b/types/three/three-transformcontrols.d.ts
deleted file mode 100644
index 15ac11eda0..0000000000
--- a/types/three/three-transformcontrols.d.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { Camera, Object3D } from "./three-core";
-
-export class TransformControls extends Object3D {
- constructor(object: Camera, domElement?: HTMLElement);
-
- size: number;
-
- space: string;
-
- object: Object3D;
-
- update(): void;
-
- detach(): void;
-
- attach(object: Object3D): void;
-
- getMode(): string;
-
- setMode(mode: string): void;
-
- setSnap(snap: any): void;
-
- setSize(size: number): void;
-
- setSpace(space: string): void;
-
- setTranslationSnap(size: number): void;
-
- setRotationSnap(size: number): void;
-
-}
diff --git a/types/three/three-unrealbloompass.d.ts b/types/three/three-unrealbloompass.d.ts
deleted file mode 100644
index ed58b853ac..0000000000
--- a/types/three/three-unrealbloompass.d.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { Pass } from "./three-effectcomposer";
-import { Vector2, ShaderMaterial, WebGLRenderTarget, IUniform, Color, Scene, Mesh, OrthographicCamera } from "./three-core";
-
-export class UnrealBloomPass extends Pass {
- constructor(resolution?: Vector2, strength?: number, radius?: number, threshold?: number);
- strength: number;
- resolution: Vector2;
- nMips: number;
- renderTargetBright: WebGLRenderTarget;
- highPassUniforms: { [uniform: string]: IUniform };
- renderTargetsHorizontal: WebGLRenderTarget[];
- renderTargetsVertical: WebGLRenderTarget[];
- materialHighPassFilter: ShaderMaterial;
- separableBlurMaterials: ShaderMaterial[];
- compositeMaterial: ShaderMaterial;
- bloomTintColors: Color[];
- copyUniforms: { [uniform: string]: IUniform };
- materialCopy: ShaderMaterial;
- needsSwap: false;
- oldClearAlpha: number;
- oldClearColor: Color;
- camera: OrthographicCamera;
- scene: Scene;
- quad: Mesh;
- radius: number;
- threshold: number;
- dispose(): void;
- getSeparableBlurMaterial(): ShaderMaterial;
- getCompositeMaterial(): ShaderMaterial;
- static BlurDirectionX: Vector2;
- static BlurDirectionY: Vector2;
-}
\ No newline at end of file
diff --git a/types/three/three-vrcontrols.d.ts b/types/three/three-vrcontrols.d.ts
deleted file mode 100644
index 22d9974338..0000000000
--- a/types/three/three-vrcontrols.d.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { Camera } from "./three-core";
-
-export class VRControls {
- constructor(camera: Camera, callback?: (param: string) => void);
-
- /**
- * Update VR Instance Tracking
- */
- update(): void;
-
- zeroSensor(): void;
-
- scale: number;
-
- setVRDisplay(display: VRDisplay): void;
-}
diff --git a/types/three/three-vreffect.d.ts b/types/three/three-vreffect.d.ts
deleted file mode 100644
index b0f22ed91c..0000000000
--- a/types/three/three-vreffect.d.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { Camera, Matrix4, Renderer, Scene } from "./three-core";
-
-export class VREffect {
- constructor(renderer: Renderer, callback?: (params: string) => void);
-
- render(scene: Scene, camera: Camera): void;
-
- setSize(width: number, height: number): void;
-
- setFullScreen(flag: boolean): void;
-
- startFullscreen(): void;
-
- FovToNDCScaleOffset(fov: VRFov): VREffectOffset;
-
- FovPortToProjection(fov: VRFov, rightHanded: boolean, zNear: number, zFar: number): Matrix4;
-
- FovToProjection(fov: VRFov, rightHanded: boolean, zNear: number, zFar: number): Matrix4;
-
- setVRDisplay(display: VRDisplay): void;
-}
-
-export interface VRFov {
- leftTan: number;
- rightTan: number;
- upTan: number;
- downTan: number;
-}
-
-export interface VREffectOffset {
- scale: number;
- offset: number;
-}
diff --git a/types/three/tsconfig.json b/types/three/tsconfig.json
deleted file mode 100644
index 814dd8f824..0000000000
--- a/types/three/tsconfig.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "compilerOptions": {
- "module": "commonjs",
- "lib": [
- "es6",
- "dom"
- ],
- "noImplicitAny": true,
- "noImplicitThis": false,
- "strictNullChecks": false,
- "strictFunctionTypes": false,
- "baseUrl": "../",
- "typeRoots": [
- "../"
- ],
- "types": [],
- "noEmit": true,
- "forceConsistentCasingInFileNames": true
- },
- "files": [
- "index.d.ts",
- "detector.d.ts",
- "test/references.ts",
- "test/docs/scenes/bones_browser.ts",
- "test/math/test_unit_math.ts",
- "test/webgl/webgl_animation_cloth.ts",
- "test/webgl/webgl_animation_skinning_morph.ts",
- "test/webgl/webgl_buffergeometry.ts",
- "test/webgl/webgl_camera.ts",
- "test/webgl/webgl_custom_attributes.ts",
- "test/webgl/webgl_geometries.ts",
- "test/webgl/webgl_geometries_with_context.ts",
- "test/webgl/webgl_helpers.ts",
- "test/webgl/webgl_interactive_cubes.ts",
- "test/webgl/webgl_interactive_raycasting_points.ts",
- "test/webgl/webgl_lensflares.ts",
- "test/webgl/webgl_lights_hemisphere.ts",
- "test/webgl/webgl_lines_colors.ts",
- "test/webgl/webgl_loader_awd.ts",
- "test/webgl/webgl_materials.ts",
- "test/webgl/webgl_morphtargets.ts",
- "test/webgl/webgl_points_billboards.ts",
- "test/webgl/webgl_postprocessing.ts",
- "test/webgl/webgl_shader.ts",
- "test/webgl/webgl_sprites.ts",
- "test/css3d/css3d_periodictable.ts",
- "test/css3d/css3d_sprites.ts",
- "test/canvas/canvas_camera_orthographic.ts",
- "test/canvas/canvas_geometry_cube.ts",
- "test/canvas/canvas_interactive_cubes_tween.ts",
- "test/canvas/canvas_lights_pointlights.ts",
- "test/canvas/canvas_materials.ts",
- "test/canvas/canvas_particles_floor.ts",
- "test/examples/detector.ts",
- "test/examples/effects/vreffect.ts",
- "test/examples/controls/vrcontrols.ts",
- "test/examples/ctm/ctmloader.ts",
- "test/examples/octree.ts",
- "test/examples/loaders/webgl_loader_obj_mtl.ts",
- "test/examples/loaders/tdsloader.ts",
- "test/examples/exporters/gltf-exporter.ts",
- "test/webvr/webvr.ts"
- ]
-}
diff --git a/types/three/tslint.json b/types/three/tslint.json
deleted file mode 100644
index 3d59f55fda..0000000000
--- a/types/three/tslint.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "extends": "dtslint/dt.json",
- "rules": {
- "adjacent-overload-signatures": false,
- "array-type": false,
- "arrow-return-shorthand": false,
- "ban-types": false,
- "callable-types": false,
- "comment-format": false,
- "dt-header": false,
- "npm-naming": false,
- "eofline": false,
- "export-just-namespace": false,
- "import-spacing": false,
- "interface-name": false,
- "interface-over-type-literal": false,
- "jsdoc-format": false,
- "max-line-length": false,
- "member-access": false,
- "new-parens": false,
- "no-any-union": false,
- "no-boolean-literal-compare": false,
- "no-conditional-assignment": false,
- "no-consecutive-blank-lines": false,
- "no-construct": false,
- "no-declare-current-package": false,
- "no-duplicate-imports": false,
- "no-duplicate-variable": false,
- "no-empty-interface": false,
- "no-for-in-array": false,
- "no-inferrable-types": false,
- "no-internal-module": false,
- "no-irregular-whitespace": false,
- "no-mergeable-namespace": false,
- "no-misused-new": false,
- "no-namespace": false,
- "no-object-literal-type-assertion": false,
- "no-padding": false,
- "no-redundant-jsdoc": false,
- "no-redundant-jsdoc-2": false,
- "no-redundant-undefined": false,
- "no-reference-import": false,
- "no-relative-import-in-test": false,
- "no-self-import": false,
- "no-single-declare-module": false,
- "no-string-throw": false,
- "no-unnecessary-callback-wrapper": false,
- "no-unnecessary-class": false,
- "no-unnecessary-generics": false,
- "no-unnecessary-qualifier": false,
- "no-unnecessary-type-assertion": false,
- "no-useless-files": false,
- "no-var-keyword": false,
- "no-var-requires": false,
- "no-void-expression": false,
- "no-trailing-whitespace": false,
- "object-literal-key-quotes": false,
- "object-literal-shorthand": false,
- "one-line": false,
- "one-variable-per-declaration": false,
- "only-arrow-functions": false,
- "prefer-conditional-expression": false,
- "prefer-const": false,
- "prefer-declare-function": false,
- "prefer-for-of": false,
- "prefer-method-signature": false,
- "prefer-template": false,
- "radix": false,
- "semicolon": false,
- "space-before-function-paren": false,
- "space-within-parens": false,
- "strict-export-declare-modifiers": false,
- "trim-file": false,
- "triple-equals": false,
- "typedef-whitespace": false,
- "unified-signatures": false,
- "void-return": false,
- "whitespace": false
- }
-}