Bladeren bron

merged upstream

Bart McLeod 8 jaren geleden
bovenliggende
commit
a0e607d019
100 gewijzigde bestanden met toevoegingen van 14519 en 4710 verwijderingen
  1. 1 1
      .github/CONTRIBUTING.md
  2. 3 3
      .github/ISSUE_TEMPLATE.md
  3. 47 31
      README.md
  4. 3004 2736
      build/three.js
  5. 345 179
      build/three.min.js
  6. 4927 0
      build/three.modules.js
  7. 46 0
      docs/api/Polyfills.html
  8. 132 0
      docs/api/animation/AnimationAction.html
  9. 87 0
      docs/api/animation/AnimationClip.html
  10. 102 0
      docs/api/animation/AnimationMixer.html
  11. 74 0
      docs/api/animation/AnimationObjectGroup.html
  12. 54 0
      docs/api/animation/AnimationUtils.html
  13. 154 0
      docs/api/animation/KeyframeTrack.html
  14. 131 0
      docs/api/animation/PropertyBinding.html
  15. 99 0
      docs/api/animation/PropertyMixer.html
  16. 72 0
      docs/api/animation/tracks/BooleanKeyframeTrack.html
  17. 52 0
      docs/api/animation/tracks/ColorKeyframeTrack.html
  18. 52 0
      docs/api/animation/tracks/NumberKeyframeTrack.html
  19. 69 0
      docs/api/animation/tracks/QuaternionKeyframeTrack.html
  20. 74 0
      docs/api/animation/tracks/StringKeyframeTrack.html
  21. 51 0
      docs/api/animation/tracks/VectorKeyframeTrack.html
  22. 203 0
      docs/api/audio/Audio.html
  23. 96 0
      docs/api/audio/AudioAnalyser.html
  24. 42 0
      docs/api/audio/AudioContext.html
  25. 106 0
      docs/api/audio/AudioListener.html
  26. 125 0
      docs/api/audio/PositionalAudio.html
  27. 37 13
      docs/api/cameras/Camera.html
  28. 8 9
      docs/api/cameras/CubeCamera.html
  29. 51 19
      docs/api/cameras/OrthographicCamera.html
  30. 66 53
      docs/api/cameras/PerspectiveCamera.html
  31. 67 0
      docs/api/cameras/StereoCamera.html
  32. 39 0
      docs/api/constants/Animation.html
  33. 37 0
      docs/api/constants/Core.html
  34. 39 23
      docs/api/constants/CustomBlendingEquations.html
  35. 83 0
      docs/api/constants/DrawModes.html
  36. 0 31
      docs/api/constants/GLState.html
  37. 121 46
      docs/api/constants/Materials.html
  38. 78 0
      docs/api/constants/Renderer.html
  39. 267 50
      docs/api/constants/Textures.html
  40. 150 45
      docs/api/core/BufferAttribute.html
  41. 177 112
      docs/api/core/BufferGeometry.html
  42. 18 14
      docs/api/core/Clock.html
  43. 132 0
      docs/api/core/DirectGeometry.html
  44. 36 3
      docs/api/core/EventDispatcher.html
  45. 59 17
      docs/api/core/Face3.html
  46. 143 116
      docs/api/core/Geometry.html
  47. 44 0
      docs/api/core/InstancedBufferAttribute.html
  48. 50 0
      docs/api/core/InstancedBufferGeometry.html
  49. 44 0
      docs/api/core/InstancedInterleavedBuffer.html
  50. 104 0
      docs/api/core/InterleavedBuffer.html
  51. 116 0
      docs/api/core/InterleavedBufferAttribute.html
  52. 83 0
      docs/api/core/Layers.html
  53. 233 144
      docs/api/core/Object3D.html
  54. 49 28
      docs/api/core/Raycaster.html
  55. 213 0
      docs/api/core/Uniform.html
  56. 54 0
      docs/api/core/bufferAttributeTypes/BufferAttributeTypes.html
  57. 577 0
      docs/api/deprecated/DeprecatedList.html
  58. 63 0
      docs/api/extras/CurveUtils.html
  59. 4 4
      docs/api/extras/SceneUtils.html
  60. 88 0
      docs/api/extras/ShapeUtils.html
  61. 42 16
      docs/api/extras/core/Curve.html
  62. 25 84
      docs/api/extras/core/CurvePath.html
  63. 55 0
      docs/api/extras/core/Font.html
  64. 83 68
      docs/api/extras/core/Path.html
  65. 18 52
      docs/api/extras/core/Shape.html
  66. 91 0
      docs/api/extras/core/ShapePath.html
  67. 21 10
      docs/api/extras/curves/CatmullRomCurve3.html
  68. 0 55
      docs/api/extras/curves/ClosedSplineCurve3.html
  69. 18 12
      docs/api/extras/curves/CubicBezierCurve.html
  70. 18 11
      docs/api/extras/curves/CubicBezierCurve3.html
  71. 40 16
      docs/api/extras/curves/EllipseCurve.html
  72. 15 6
      docs/api/extras/curves/LineCurve.html
  73. 8 6
      docs/api/extras/curves/LineCurve3.html
  74. 15 12
      docs/api/extras/curves/QuadraticBezierCurve.html
  75. 10 6
      docs/api/extras/curves/QuadraticBezierCurve3.html
  76. 12 4
      docs/api/extras/curves/SplineCurve.html
  77. 14 6
      docs/api/extras/curves/SplineCurve3.html
  78. 0 99
      docs/api/extras/geometries/ExtrudeGeometry.html
  79. 0 77
      docs/api/extras/geometries/ShapeGeometry.html
  80. 0 99
      docs/api/extras/geometries/TubeGeometry.html
  81. 32 30
      docs/api/extras/helpers/ArrowHelper.html
  82. 20 9
      docs/api/extras/helpers/AxisHelper.html
  83. 0 72
      docs/api/extras/helpers/BoundingBoxHelper.html
  84. 31 10
      docs/api/extras/helpers/BoxHelper.html
  85. 37 15
      docs/api/extras/helpers/CameraHelper.html
  86. 35 19
      docs/api/extras/helpers/DirectionalLightHelper.html
  87. 0 57
      docs/api/extras/helpers/EdgesHelper.html
  88. 30 12
      docs/api/extras/helpers/FaceNormalsHelper.html
  89. 45 55
      docs/api/extras/helpers/GridHelper.html
  90. 29 15
      docs/api/extras/helpers/HemisphereLightHelper.html
  91. 28 10
      docs/api/extras/helpers/PointLightHelper.html
  92. 50 0
      docs/api/extras/helpers/PolarGridHelper.html
  93. 57 0
      docs/api/extras/helpers/RectAreaLightHelper.html
  94. 75 0
      docs/api/extras/helpers/SkeletonHelper.html
  95. 18 8
      docs/api/extras/helpers/SpotLightHelper.html
  96. 33 15
      docs/api/extras/helpers/VertexNormalsHelper.html
  97. 0 58
      docs/api/extras/helpers/WireframeHelper.html
  98. 0 1
      docs/api/extras/objects/MorphBlendMesh.html
  99. 18 4
      docs/api/geometries/BoxBufferGeometry.html
  100. 18 4
      docs/api/geometries/BoxGeometry.html

+ 1 - 1
.github/CONTRIBUTING.md

@@ -25,4 +25,4 @@
 2. Fork the repository on GitHub.
 3. Check the [Contribution Guidelines](https://github.com/mrdoob/three.js/wiki/How-to-contribute-to-three.js).
 4. Make changes to your clone of the repository.
-5. Submit a pull request.
+5. Submit a pull request. Don't include build files in the PR.

+ 3 - 3
.github/ISSUE_TEMPLATE.md

@@ -1,12 +1,12 @@
-##### Description of the problem 
+(*** This section is for bug reports and feature requests only. This is NOT a help site. Do not ask help questions here. If you need help, please use stackoverflow. ***)
 
-(This is NOT a help site. Please read the guidelines above before posting.)
+##### Description of the problem 
 
 
 ##### Three.js version
 
 - [ ] Dev
-- [ ] r76
+- [ ] r82
 - [ ] ...
 
 ##### Browser

+ 47 - 31
README.md

@@ -1,17 +1,25 @@
 three.js
 ========
 
-#### JavaScript 3D library ####
+[![Latest NPM release][npm-badge]][npm-badge-url]
+[![License][license-badge]][license-badge-url]
+[![Dependencies][dependencies-badge]][dependencies-badge-url]
+[![Dev Dependencies][devDependencies-badge]][devDependencies-badge-url]
 
-The aim of the project is to create a lightweight 3D library with a very low level of complexity — in other words, for dummies. The library provides <canvas>, <svg>, CSS3D and WebGL renderers.
+#### JavaScript 3D library ####
 
-[Examples](http://threejs.org/examples/) — [Documentation](http://threejs.org/docs/) — [Migrating](https://github.com/mrdoob/three.js/wiki/Migration) — [Help](http://stackoverflow.com/questions/tagged/three.js)
+The aim of the project is to create an easy to use, lightweight, 3D library. The library provides <canvas>, <svg>, CSS3D and WebGL renderers.
 
+[Examples](http://threejs.org/examples/) —
+[Documentation](http://threejs.org/docs/) —
+[Wiki](https://github.com/mrdoob/three.js/wiki) —
+[Migrating](https://github.com/mrdoob/three.js/wiki/Migration) —
+[Help](http://stackoverflow.com/questions/tagged/three.js)
 
 ### Usage ###
 
 Download the [minified library](http://threejs.org/build/three.min.js) and include it in your html.
-Alternatively see [how to build the library yourself](https://github.com/mrdoob/three.js/wiki/build.py,-or-how-to-generate-a-compressed-Three.js-file).
+Alternatively see [how to build the library yourself](https://github.com/mrdoob/three.js/wiki/Build-instructions).
 
 ```html
 <script src="js/three.min.js"></script>
@@ -19,50 +27,58 @@ Alternatively see [how to build the library yourself](https://github.com/mrdoob/
 
 This code creates a scene, a camera, and a geometric cube, and it adds the cube to the scene. It then creates a `WebGL` renderer for the scene and camera, and it adds that viewport to the document.body element. Finally it animates the cube within the scene for the camera.
 
-```html
-<script>
-
-	var scene, camera, renderer;
-	var geometry, material, mesh;
+```javascript
+var scene, camera, renderer;
+var geometry, material, mesh;
 
-	init();
-	animate();
+init();
+animate();
 
-	function init() {
+function init() {
 
-		scene = new THREE.Scene();
-		
-		camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
-		camera.position.z = 1000;
+	scene = new THREE.Scene();
 
-		geometry = new THREE.BoxGeometry( 200, 200, 200 );
-		material = new THREE.MeshBasicMaterial( { color: 0xff0000, wireframe: true } );
+	camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
+	camera.position.z = 1000;
 
-		mesh = new THREE.Mesh( geometry, material );
-		scene.add( mesh );
+	geometry = new THREE.BoxGeometry( 200, 200, 200 );
+	material = new THREE.MeshBasicMaterial( { color: 0xff0000, wireframe: true } );
 
-		renderer = new THREE.WebGLRenderer();
-		renderer.setSize( window.innerWidth, window.innerHeight );
+	mesh = new THREE.Mesh( geometry, material );
+	scene.add( mesh );
 
-		document.body.appendChild( renderer.domElement );
+	renderer = new THREE.WebGLRenderer();
+	renderer.setSize( window.innerWidth, window.innerHeight );
 
-	}
+	document.body.appendChild( renderer.domElement );
 
-	function animate() {
+}
 
-		requestAnimationFrame( animate );
+function animate() {
 
-		mesh.rotation.x += 0.01;
-		mesh.rotation.y += 0.02;
+	requestAnimationFrame( animate );
 
-		renderer.render( scene, camera );
+	mesh.rotation.x += 0.01;
+	mesh.rotation.y += 0.02;
 
-	}
+	renderer.render( scene, camera );
 
-</script>
+}
 ```
+
 If everything went well you should see [this](http://jsfiddle.net/hfj7gm6t/).
 
 ### Change log ###
 
 [releases](https://github.com/mrdoob/three.js/releases)
+
+
+
+[npm-badge]: https://img.shields.io/npm/v/three.svg
+[npm-badge-url]: https://www.npmjs.com/package/three
+[license-badge]: https://img.shields.io/npm/l/three.svg
+[license-badge-url]: ./LICENSE
+[dependencies-badge]: https://img.shields.io/david/mrdoob/three.js.svg
+[dependencies-badge-url]: https://david-dm.org/mrdoob/three.js
+[devDependencies-badge]: https://img.shields.io/david/dev/mrdoob/three.js.svg
+[devDependencies-badge-url]: https://david-dm.org/mrdoob/three.js#info=devDependencies

File diff suppressed because it is too large
+ 3004 - 2736
build/three.js


File diff suppressed because it is too large
+ 345 - 179
build/three.min.js


File diff suppressed because it is too large
+ 4927 - 0
build/three.modules.js


+ 46 - 0
docs/api/Polyfills.html

@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		<h1>Polyfills</h1>
+
+		<div class="desc">Three includes polyfills for the following functions and constants.</div>
+
+		<h3>[page:Number.EPSILON Number.EPSILON]</h3>
+		<div>
+			 The difference between one and the smallest value greater than one that can be represented as a Number.
+			 [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON MDN reference].
+		</div>
+
+		<h3>[page:Math.sign Math.sign]( [page:Number x] )</h3>
+		<div>
+			If the argument is a positive number, negative number, positive zero or negative zero,
+			the function will return 1, -1, 0 or -0 respectively. Otherwise, NaN is returned.
+			[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign MDN reference].
+		</div>
+
+		<h3>[page:Function.prototype.name Function.prototype.name]( [page:Number x] )</h3>
+		<div>
+			Returns the name of a function, or (before ES6 implementations) an empty string for anonymous functions.
+			[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name MDN reference].
+		</div>
+
+		<h3>[page:Object.assign Object.assign]( [page:Object target], [page:Object ...sources] )</h3>
+		<div>
+			The Object.assign() method is used to copy the values of all enumerable own properties from one or more source objects to a target object.
+			It will return the target object.
+			[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign MDN reference].
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 132 - 0
docs/api/animation/AnimationAction.html

@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+    <h1>[name]</h1>
+
+    <div class="desc">
+    An AnimationAction schedules clip playback on specific objects.
+    </div>
+
+
+    <h2>Constructor</h2>
+
+
+    <h3>[name]( [page:AnimationMixer mixer], [page:AnimationClip clip], [page:Object3D localRoot] )</h3>
+
+
+    <h2>Properties</h2>
+
+
+    <h3>[property:Number time]</h3>
+
+    <h3>[property:Number timeScale]</h3>
+
+    <h3>[property:Number weight]</h3>
+
+    <h3>[property:Number loop]</h3>
+
+    <h3>[property:Number repetitions]</h3>
+
+    <h3>[property:Boolean paused]</h3>
+
+    <h3>[property:Boolean enabled]</h3>
+
+    <h3>[property:Boolean clampWhenFinished]</h3>
+
+    <h3>[property:Boolean zeroSlopeAtStart]</h3>
+
+    <h3>[property:Boolean zeroSlopeAtEnd]</h3>
+
+
+    <h2>Methods</h2>
+
+
+    <h3>[method:AnimationAction play]()</h3>
+
+    <h3>[method:AnimationAction stop]()</h3>
+
+    <h3>[method:AnimationAction reset]()</h3>
+
+    <h3>[method:Boolean isRunning]()</h3>
+
+    <h3>[method:Boolean isScheduled]()</h3>
+
+    <h3>[method:AnimationAction startAt]()</h3>
+
+    <h3>[method:AnimationAction setLoop]( [page:Number mode], [page:Number repetitions] )</h3>
+
+    <h3>[method:AnimationAction setEffectiveWeight]( [page:Number weight] )</h3>
+
+    <h3>[method:number getEffectiveWeight]()</h3>
+
+    <h3>[method:AnimationAction fadeIn]( [page:Number duration] )</h3>
+
+    <h3>[method:AnimationAction fadeOut]( [page:Number duration] )</h3>
+
+    <h3>[method:AnimationAction crossFadeFrom]( [page:AnimationAction fadeOutAction], [page:Number duration], [page:Boolean warp] )</h3>
+
+    <h3>[method:AnimationAction crossFadeTo]( [page:AnimationAction fadeInAction], [page:Number duration], [page:Boolean warp] )</h3>
+
+    <h3>[method:AnimationAction stopFading]()</h3>
+
+    <h3>[method:AnimationAction setEffectiveTimeScale]( [page:Number timeScale] )</h3>
+
+    <h3>[method:Number getEffectiveTimeScale]()</h3>
+
+    <h3>[method:AnimationAction setDuration]( [page:Number duration] )</h3>
+
+    <h3>[method:AnimationAction syncWith]( [page:AnimationAction action] )</h3>
+
+    <h3>[method:AnimationAction halt]( [page:Number duration] )</h3>
+
+    <h3>[method:AnimationAction warp]( [page:Number startTimeScale], [page:Number endTimeScale], [page:Number duration] )</h3>
+
+    <h3>[method:AnimationAction stopWarping]()</h3>
+
+    <h3>[method:AnimationMixer getMixer]()</h3>
+
+    <h3>[method:AnimationClip getClip]()</h3>
+
+    <h3>[method:Object3D getRoot]()</h3>
+
+
+    <h2>Static Methods</h2>
+
+
+    <h3>[method:AnimationClip parse]( [page:Object json] )</h3>
+    <div>
+    json -- JSON object
+    </div>
+
+    <h3>[method:Object toJSON]( [page:AnimationClip clip] )</h3>
+    <div>
+    clip -- AnimationClip
+    </div>
+
+    <h3>[method:AnimationClip CreateFromMorphTargetSequence]( [page:String name], [page:Array morphTargetSequence], [page:Number fps], [page:Boolean noLoop] )</h3>
+    <div>
+    name -- Name for the new clip <br />
+    morphTargetSequence -- Array of morph targets <br />
+    fps -- Number of frames per second <br />
+    noLoop -- Whether looping occurs automatically.
+    </div>
+
+    <h3>[method:AnimationClip parseAnimation]( [page:Object animation], [page:Array bones] )</h3>
+    <div>
+    Parses the animation.hierarchy format and returns an AnimationClip.
+    </div>
+
+
+    <h2>Source</h2>
+
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 87 - 0
docs/api/animation/AnimationClip.html

@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <base href="../../" />
+    <script src="list.js"></script>
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+  </head>
+  <body>
+    <h1>[name]</h1>
+
+    <div class="desc">
+    An AnimationClip is a reusable set of Tracks that represent an animation.
+    </div>
+
+
+    <h2>Constructor</h2>
+
+
+    <h3>[name]( [page:String name], [page:Number duration], tracks )</h3>
+
+
+    <h2>Properties</h2>
+
+
+    <h3>[property:String uuid]</h3>
+
+    <h3>[property:String name]</h3>
+
+    <h3>[property:Number duration]</h3>
+
+    <h3>.tracks</h3>
+
+
+    <h2>Methods</h2>
+
+
+    <h3>[method:null resetDuration]()</h3>
+    <div>
+    Resets duration by scanning all tracks in the clip.
+    </div>
+
+    <h3>[method:AnimationClip trim]()</h3>
+    <div>
+    Trims all tracks to the clip's duration.
+    </div>
+
+    <h3>[method:AnimationClip optimize]()</h3>
+    <div>
+    Optimizes each track.
+    </div>
+
+
+    <h2>Static Methods</h2>
+
+
+    <h3>[method:AnimationClip parse]( [page:Object json] )</h3>
+    <div>
+    json -- JSON object
+    </div>
+
+    <h3>[method:Object toJSON]( [page:AnimationClip clip] )</h3>
+    <div>
+    clip -- AnimationClip
+    </div>
+
+    <h3>[method:AnimationClip CreateFromMorphTargetSequence]( [page:String name], [page:Array morphTargetSequence], [page:Number fps], [page:Boolean noLoop] )</h3>
+    <div>
+    name -- Name for the new clip <br />
+    morphTargetSequence -- Array of morph targets <br />
+    fps -- Number of frames per second <br />
+    noLoop -- Whether looping occurs automatically.
+    </div>
+
+    <h3>[method:AnimationClip parseAnimation]( [page:Object animation], [page:Array bones] )</h3>
+    <div>
+    Parses the animation.hierarchy format and returns an AnimationClip.
+    </div>
+
+
+    <h2>Source</h2>
+
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 102 - 0
docs/api/animation/AnimationMixer.html

@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <base href="../../" />
+    <script src="list.js"></script>
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+  </head>
+  <body>
+    <h1>[name]</h1>
+
+    <div class="desc">
+    The AnimationMixer is a player for AnimationClip objects.
+    </div>
+
+
+    <h2>Constructor</h2>
+
+
+    <h3>[name]( [page:Object3D root] )</h3>
+
+
+    <h2>Properties</h2>
+
+
+    <h3>[property:Number time]</h3>
+
+    <h3>[property:Number timeScale]</h3>
+
+
+    <h2>Methods</h2>
+
+
+    <h3>[method:AnimationAction clipAction]([page:AnimationClip clip], [page:Object3D optionalRoot])</h3>
+    <div>
+    clip -- AnimationClip <br />
+    optionalRoot -- Object3D
+    </div>
+    <div>
+    Return an action for a clip, optionally using a custom root target object.
+    </div>
+
+    <h3>[method:AnimationAction existingAction]([page:AnimationClip clip], [page:Object3D optionalRoot])</h3>
+    <div>
+    clip -- AnimationClip <br />
+    optionalRoot -- Object3D
+    </div>
+    <div>
+    Return an existing action.
+    </div>
+
+    <h3>[method:AnimationMixer stopAllAction]()</h3>
+    <div>
+    Deactivates all scheduled actions.
+    </div>
+
+    <h3>[method:AnimationMixer update]([page:Number deltaTimeMS]) </h3>
+    <div>
+    deltaTimeMS -- Time elapsed since last update in milliseconds.
+    </div>
+    <div>
+    Updates the animation with deltaTimeMS.
+    </div>
+
+    <h3>[method:Object3D getRoot]()</h3>
+    <div>
+    Return this mixer's root target object.
+    </div>
+
+    <h3>[method:null uncacheClip]([page:AnimationClip clip])</h3>
+    <div>
+    clip -- AnimationClip
+    </div>
+    <div>
+    Free all resources for a clip.
+    </div>
+
+    <h3>[method:null uncacheRoot]([page:Object3D root]) </h3>
+    <div>
+    root -- Object3D
+    </div>
+    <div>
+    Free all resources for a root target object.
+    </div>
+
+    <h3>[method:null uncacheAction]([page:AnimationClip clip], [page:Object3D optionalRoot])</h3>
+    <div>
+    clip -- AnimationClip <br />
+    optionalRoot -- Object3D
+    </div>
+    <div>
+    Free all resources for an action.
+    </div>
+
+
+    <h2>Source</h2>
+
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 74 - 0
docs/api/animation/AnimationObjectGroup.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <base href="../../" />
+    <script src="list.js"></script>
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+  </head>
+  <body>
+    <h1>[name]</h1>
+
+    <div class="desc">A group of objects that receives a shared animation state.</div>
+
+    <h2>Usage:</h2>
+
+    <div>
+      Add objects you would otherwise pass as 'root' to the	constructor or the [page:AnimationMixer.clipAction clipAction]
+      method of [page:AnimationMixer AnimationMixer] and instead pass this object as 'root'.<br /><br />
+
+      Note that objects of this class appear as one object to the mixer,
+      so cache control of the individual objects must be done	on the group.
+    </div>
+
+
+   <h2>Limitations</h2>
+   <div>
+    The animated properties must be compatible among all objects in the group.<br /><br />
+
+    A single property can either be controlled through a target group or directly, but not both.
+    </div>
+
+
+    <h2>Constructor</h2>
+
+
+    <h3>[name]( [page:object obj1], [page:object obj2], [page:object obj3], ... )</h3>
+
+
+    <h2>Properties</h2>
+
+    <h3>[property:object stats]</h3>
+    <div>
+
+    </div>
+
+    <h3>[property:Number timeScale]</h3>
+
+
+    <h2>Methods</h2>
+
+
+    <h3>[method:null add]( [page:object obj1], [page:object obj2], [page:object obj3], ... )</h3>
+    <div>
+
+    </div>
+
+    <h3>[method:null remove]( [page:object obj1], [page:object obj2], [page:object obj3], ... )</h3>
+    <div>
+
+    </div>
+
+    <h3>[method:null uncache]( [page:object obj1], [page:object obj2], [page:object obj3], ... )</h3>
+    <div>
+
+    </div>
+
+
+    <h2>Source</h2>
+
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 54 - 0
docs/api/animation/AnimationUtils.html

@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <base href="../../" />
+    <script src="list.js"></script>
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+  </head>
+  <body>
+    <h1>[name]</h1>
+
+    <div class="desc">
+    An object with various functions to assist with animations.
+    </div>
+
+    <h2>Methods</h2>
+
+    <h3>[method:Array arraySlice]( array, from, to )</h3>
+    <div>
+    Convert an array to a specific type.
+    </div>
+
+    <h3>[method:Array convertArray]( array, type, forceClone )</h3>
+    <div>
+    This is the same as  Array.prototype.slice, but also works on typed arrays.
+    </div>
+
+    <h3>[method:Boolean isTypedArray]( object )</h3>
+    <div>
+    Return *true* if the object is a typed array.
+    </div>
+
+    <h3>[method:Array getKeyframeOrder]( times )</h3>
+    <div>
+    Returns an array by which times and values can be sorted.
+    </div>
+
+    <h3>[method:Array sortedArray]( values, stride, order )</h3>
+    <div>
+    Sort the array previously returned by [page:AnimationUtils.getKeyframeOrder getKeyframeOrder].
+    </div>
+
+    <h3>[method:Array flattenJSON]( jsonKeys, times, values, valuePropertyName  )</h3>
+    <div>
+    Used for parsing AOS keyframe formats
+    </div>
+
+    <h2>Source</h2>
+
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 154 - 0
docs/api/animation/KeyframeTrack.html

@@ -0,0 +1,154 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <base href="../../" />
+    <script src="list.js"></script>
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+  </head>
+  <body>
+
+    <h1>[name]</h1>
+
+    <div class="desc">
+    A timed sequence of [link:https://en.wikipedia.org/wiki/Key_frame keyframes] for animating
+    a specific property of an object.
+    </div>
+
+
+    <h2>Constructor</h2>
+
+
+    <h3>[name]( [page:String name], [page:Array times], [page:Array values], [page:Constant interpolation] )</h3>
+    <div>
+      -- [page:String name] (required) identifier for the KeyframeTrack.<br />
+      -- [page:Array times] (required) array of keyframe times<br />
+      -- [page:Array values] values for the keyframes at the times specified.<br />
+      -- [page:Constant interpolation] the type of interpolation to use. See [page:Animation Animation Constants] for possible values.
+      Default is [page:Animation InterpolateLinear].
+    </div>
+
+    <h2>Properties</h2>
+
+
+    <h3>[property:String name]</h3>
+    <div>
+    The name given to the KeyframeTrack in the constructor.
+    </div>
+
+    <h3>[property:Float32Array times]</h3>
+    <div>
+    [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array]
+    of keyframe times.
+    </div>
+
+    <h3>[property:Float32Array values]</h3>
+    <div>
+    [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array]
+    of keyframe values, corresponding to the [page:KeyframeTrack.times times].
+    </div>
+
+    <h3>[property:Constant DefaultInterpolation]</h3>
+    <div>
+    The default tnterpolation type to use, [page:Animation InterpolateLinear].
+    </div>
+
+
+    <h2>Methods</h2>
+
+    <h3>[method:null createInterpolant ](  )</h3>
+    <div>
+      Create a [page:LinearInterpolant LinearInterpolant], [page:CubicInterpolant CubicInterpolant]
+      or [page:DiscreteInterpolant DiscreteInterpolant], depending on the value of the interpolation parameter
+      passed in the constructor.
+    </div>
+
+    <h3>[method:null getInterpolation ](  )</h3>
+    <div>
+      Get the interpolation type.
+    </div>
+
+    <h3>[method:Number getValueSize ](  )</h3>
+    <div>
+      The the size of each value (length of the values array divied by length of times array).
+    </div>
+
+    <h3>[method:DiscreteInterpolant InterpolantFactoryMethodDiscrete ]( result )</h3>
+    <div>
+      Create a new [page:DiscreteInterpolant DiscreteInterpolant] from the [page:KeyframeTrack.times times]
+      and [page:KeyframeTrack.times values].
+    </div>
+
+    <h3>[method:null InterpolantFactoryMethodLinear ](  )</h3>
+    <div>
+      Create a new [page:LinearInterpolant LinearInterpolant] from the [page:KeyframeTrack.times times]
+      and [page:KeyframeTrack.times values].
+    </div>
+
+    <h3>[method:null InterpolantFactoryMethodSmooth ](  )</h3>
+    <div>
+      Create a new [page:CubicInterpolant CubicInterpolant] from the [page:KeyframeTrack.times times]
+      and [page:KeyframeTrack.times values].
+    </div>
+
+    <h3>[method:null optimize ](  )</h3>
+    <div>
+      Remove equivalent sequential keys, which are common in morph target sequences. <br />
+  	  Called automatically by the constructor.
+    </div>
+
+    <h3>[method:KeyframeTrack parse]( [page:JSON json] )</h3>
+    <div>
+    Parse json and return new keyframe track of the correct type.
+    </div>
+
+    <h3>[method:null scale ](  )</h3>
+    <div>
+      Scale all keyframe times by a factor (useful for frame <-> seconds conversions).
+    </div>
+
+    <h3>[method:null setInterpolation ]( [page:Constant interpolation] )</h3>
+    <div>
+      Set the interpolation type. See [page:Animation animation constants] for choices.
+    </div>
+
+    <h3>[method:null shift ]( [page:Number timeOffset] )</h3>
+    <div>
+      Move all keyframes either forwards or backwards in time.
+    </div>
+
+    <h3>[method:null TimeBufferType ](  )</h3>
+    <div>
+      [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array],
+      used to convert the times array passed in the constructor to a Float32Array.
+    </div>
+
+    <h3>[method:JSON toJSON]( [page:KeyframeTrack track] )</h3>
+    <div>
+    Convert the track to JSON.
+    </div>
+
+    <h3>[method:null trim ]( [page:Number startTime], [page:Number endTime] )</h3>
+    <div>
+      Removes keyframes before [page:Number startTime] and after [page:Number endTime]
+      without changing any values within the range [[page:Number startTime], [page:Number endTime]].
+    </div>
+
+    <h3>[method:null validate ](  )</h3>
+    <div>
+      Perform minimal validation on the tracks. Called automatically by the constructor.
+    </div>
+
+    <h3>[method:null ValueBufferType ](  )</h3>
+    <div>
+      [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array],
+      used to convert the values array passed in the constructor to a Float32Array.
+    </div>
+
+    <h2>Source</h2>
+
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 131 - 0
docs/api/animation/PropertyBinding.html

@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <base href="../../" />
+    <script src="list.js"></script>
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+  </head>
+  <body>
+    <h1>[name]</h1>
+
+    <div class="desc">
+    This holds a reference to a real property in the scene graph.
+    </div>
+
+
+    <h2>Constructor</h2>
+
+
+    <h3>[name]( [page:Object3D rootNode], path, parsedPath )</h3>
+    <div>
+      -- [page:Object3D rootNode]:
+      -- path
+      -- parsedPath (optional)
+
+    </div>
+
+    <h2>Properties</h2>
+
+    <h3>[property:Number path]</h3>
+    <div>
+
+    </div>
+
+    <h3>[property:Number parsedPath]</h3>
+    <div>
+
+    </div>
+
+    <h3>[property:Number node]</h3>
+    <div>
+
+    </div>
+
+    <h3>[property:Number rootNode]</h3>
+    <div>
+
+    </div>
+
+    <h3>[property:Object BindingType]</h3>
+    <div>
+
+    </div>
+
+    <h3>[property:Object Versioning]</h3>
+    <div>
+
+    </div>
+
+    <h3>[property:Array GetterByBindingType]</h3>
+    <div>
+
+    </div>
+
+    <h3>[property:Array SetterByBindingTypeAndVersioning]</h3>
+    <div>
+
+    </div>
+
+
+
+    <h2>Methods</h2>
+
+    <h3>[method:null getValue]( [page:Array targetArray], [page:Number offset] )</h3>
+    <div>
+    </div>
+
+    <h3>[method:null setValue]( [page:Array sourceArray], [page:Number offset] )</h3>
+    <div>
+    </div>
+
+    <h3>[method:null bind]( )</h3>
+    <div>
+      Create getter / setter pair for a property in the scene graph. Used internally by
+      [page:PropertyBinding.getValue getValue] and [page:PropertyBinding.setValue setValue].
+    </div>
+
+    <h3>[method:null unbind]( )</h3>
+    <div>
+      Unbind getter / setter pair for a property in the scene graph.
+    </div>
+
+    <h3>[method:Constructor Composite]( targetGroup, path, optionalParsedPath )</h3>
+    <div>
+      Create a new Composite PropertyBinding.
+    </div>
+
+    <h3>[method:Constructor create]( root, path, parsedPath )</h3>
+    <div>
+      Create a new Composite PropertyBinding (if root is an [page:AnimationObjectGroup]) or PropertyBinding.
+    </div>
+
+    <h3>[method:Constructor parseTrackName]( trackName )</h3>
+    <div>
+      Matches strings in the following forms:<br />
+      -- nodeName.property<br />
+      -- nodeName.property[accessor]<br />
+      -- nodeName.material.property[accessor]<br />
+      -- uuid.property[accessor]<br />
+      -- uuid.objectName[objectIndex].propertyName[propertyIndex]<br />
+      -- parentName/nodeName.property<br />
+      -- parentName/parentName/nodeName.property[index]<br />
+      -- .bone[Armature.DEF_cog].position<br />
+      -- scene:helium_balloon_model:helium_balloon_model.position
+    </div>
+
+    <h3>[method:Constructor findNode]( root, nodeName )</h3>
+    <div>
+      Find a node in a node tree or [page:Skeleton Skeleton].
+    </div>
+
+
+
+
+    <h2>Source</h2>
+
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 99 - 0
docs/api/animation/PropertyMixer.html

@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <base href="../../" />
+    <script src="list.js"></script>
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+  </head>
+  <body>
+    <h1>[name]</h1>
+
+    <div class="desc">
+    Buffered scene graph property that allows weighted accumulation.
+    </div>
+
+
+    <h2>Constructor</h2>
+
+
+    <h3>[name]( binding, typeName, valueSize )</h3>
+    <div>
+      -- binding <br />
+      -- typeName <br />
+      -- valueSize <br />
+    </div>
+
+
+    <h2>Properties</h2>
+
+
+    <h3>[property:Number binding]</h3>
+    <div>
+
+    </div>
+
+    <h3>[property:Number buffer]</h3>
+    <div>
+      Buffer with size [page:PropertyMixer valueSize] * 4. <br /><br />
+      This has the layout: [ incoming | accu0 | accu1 | orig ]<br /><br />
+      Interpolators can use .buffer as their .result and the data then goes to 'incoming'.<br />
+      'accu0' and 'accu1' are used frame-interleaved for the cumulative result and
+      are compared to detect changes.<br />
+      'orig' stores the original state of the property.<br />
+    </div>
+
+    <h3>[property:Number cumulativeWeight]</h3>
+    <div>
+      Default is *0*.
+    </div>
+
+    <h3>[property:Number valueSize]</h3>
+    <div>
+
+    </div>
+
+    <h3>[property:Number referenceCount]</h3>
+    <div>
+      Default is *0*.
+    </div>
+
+    <h3>[property:Number useCount]</h3>
+    <div>
+      Default is *0*.
+    </div>
+
+
+    <h2>Methods</h2>
+
+
+    <h3>[method:null accumulate]( accuIndex, weight )</h3>
+    <div>
+      Accumulate data in [page:PropertyMixer.buffer buffer][accuIndex] 'incoming' region into 'accu[i]'.<br />
+
+      If weight is *0* this does nothing.
+    </div>
+
+    <h3>[method:null apply]( accuIndex )</h3>
+    <div>
+      Apply the state of [page:PropertyMixer.buffer buffer] 'accu[i]' to the binding when accus differ.
+    </div>
+
+    <h3>[method:null saveOriginalState]( )</h3>
+    <div>
+      Remember the state of the bound property and copy it to both accus.
+    </div>
+
+    <h3>[method:null restoreOriginalState](  )</h3>
+    <div>
+      Apply the state previously taken via 'saveOriginalState' to the binding.
+    </div>
+
+
+    <h2>Source</h2>
+
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 72 - 0
docs/api/animation/tracks/BooleanKeyframeTrack.html

@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <base href="../../../" />
+    <script src="list.js"></script>
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+  </head>
+  <body>
+
+		[page:KeyframeTrack] &rarr;
+
+    <h1>[name]</h1>
+
+    <div class="desc">
+     A Track of Boolean keyframe values.
+    </div>
+
+
+    <h2>Constructor</h2>
+
+
+    <h3>[name]( [page:String name], [page:Array times], [page:Array values] )</h3>
+    <div>
+      -- [page:String name] (required) identifier for the KeyframeTrack.<br />
+      -- [page:Array times] (required) array of keyframe times<br />
+      -- [page:Array values] values for the keyframes at the times specified.<br />
+    </div>
+
+    <h2>Properties</h2>
+
+		See [page:KeyframeTrack] for inherited properties.
+
+
+    <h3>[property:String ValueTypeName]</h3>
+    <div>
+    String 'bool'.
+    </div>
+
+    <h3>[property:Constant DefaultInterpolation]</h3>
+    <div>
+    The default interpolation type to use, [page:Animation InterpolateDiscrete].
+    </div>
+
+
+    <h2>Methods</h2>
+
+		See [page:KeyframeTrack] for inherited methods.
+
+    <h3>[method:null InterpolantFactoryMethodLinear ](  )</h3>
+    <div>
+      The value of this method here is 'undefined', as it does not make sense for discrete properties.
+    </div>
+
+    <h3>[method:null InterpolantFactoryMethodSmooth ](  )</h3>
+    <div>
+      The value of this method here is 'undefined', as it does not make sense for discrete properties.
+    </div>
+
+    <h3>[method:null ValueBufferType ](  )</h3>
+    <div>
+      Used to convert the values array passed in the constructor to an Array.
+			Note: In this case this does nothing, other Track types may convert the array to a Typed Array.
+    </div>
+
+    <h2>Source</h2>
+
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 52 - 0
docs/api/animation/tracks/ColorKeyframeTrack.html

@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <base href="../../../" />
+    <script src="list.js"></script>
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+  </head>
+  <body>
+
+		[page:KeyframeTrack] &rarr;
+
+    <h1>[name]</h1>
+
+    <div class="desc">
+     A Track of keyframe values that represent color.
+    </div>
+
+
+    <h2>Constructor</h2>
+
+
+    <h3>[name]( [page:String name], [page:Array times], [page:Array values] )</h3>
+    <div>
+      -- [page:String name] (required) identifier for the KeyframeTrack.<br />
+      -- [page:Array times] (required) array of keyframe times<br />
+      -- [page:Array values] values for the keyframes at the times specified.<br />
+			-- [page:Constant interpolation] the type of interpolation to use. See [page:Animation Animation Constants] for possible values.
+      Default is [page:Animation InterpolateLinear].
+    </div>
+
+    <h2>Properties</h2>
+
+		See [page:KeyframeTrack] for inherited properties.
+
+    <h3>[property:String ValueTypeName]</h3>
+    <div>
+    String 'color'.
+    </div>
+
+    <h2>Methods</h2>
+
+		See [page:KeyframeTrack] for inherited methods.
+
+
+    <h2>Source</h2>
+
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 52 - 0
docs/api/animation/tracks/NumberKeyframeTrack.html

@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <base href="../../../" />
+    <script src="list.js"></script>
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+  </head>
+  <body>
+
+		[page:KeyframeTrack] &rarr;
+
+    <h1>[name]</h1>
+
+    <div class="desc">
+     A Track of numeric keyframe values.
+    </div>
+
+
+    <h2>Constructor</h2>
+
+
+    <h3>[name]( [page:String name], [page:Array times], [page:Array values] )</h3>
+    <div>
+      -- [page:String name] (required) identifier for the KeyframeTrack.<br />
+      -- [page:Array times] (required) array of keyframe times<br />
+      -- [page:Array values] values for the keyframes at the times specified.<br />
+			-- [page:Constant interpolation] the type of interpolation to use. See [page:Animation Animation Constants] for possible values.
+      Default is [page:Animation InterpolateLinear].
+    </div>
+
+    <h2>Properties</h2>
+
+		See [page:KeyframeTrack] for inherited properties.
+
+
+    <h3>[property:String ValueTypeName]</h3>
+    <div>
+    String 'number'.
+    </div>
+
+    <h2>Methods</h2>
+
+		See [page:KeyframeTrack] for inherited methods.
+
+    <h2>Source</h2>
+
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 69 - 0
docs/api/animation/tracks/QuaternionKeyframeTrack.html

@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <base href="../../../" />
+    <script src="list.js"></script>
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+  </head>
+  <body>
+
+		[page:KeyframeTrack] &rarr;
+
+    <h1>[name]</h1>
+
+    <div class="desc">
+     A Track of quaternion keyframe values.
+    </div>
+
+
+    <h2>Constructor</h2>
+
+
+    <h3>[name]( [page:String name], [page:Array times], [page:Array values] )</h3>
+    <div>
+      -- [page:String name] (required) identifier for the KeyframeTrack.<br />
+      -- [page:Array times] (required) array of keyframe times<br />
+      -- [page:Array values] values for the keyframes at the times specified.<br />
+			-- [page:Constant interpolation] the type of interpolation to use. See [page:Animation Animation Constants] for possible values.
+      Default is [page:Animation InterpolateLinear].
+    </div>
+
+    <h2>Properties</h2>
+
+		See [page:KeyframeTrack] for inherited properties.
+
+
+    <h3>[property:String ValueTypeName]</h3>
+    <div>
+    String 'quaternion'.
+    </div>
+
+    <h3>[property:Constant DefaultInterpolation]</h3>
+    <div>
+    The default interpolation type to use, [page:Animation InterpolateLinear].
+    </div>
+
+
+    <h2>Methods</h2>
+
+		See [page:KeyframeTrack] for inherited methods.
+
+    <h3>[method:Number getValueSize ](  )</h3>
+    <div>
+      The the size of each value (length of the values array divied by length of times array).
+    </div>
+
+    <h3>[method:null InterpolantFactoryMethodLinear ](  )</h3>
+    <div>
+      Returns a new [page:QuaternionLinearInterpolant QuaternionLinearInterpolant] based on the [page:KeyframeTrack.values values],
+			[page:KeyframeTrack.times times] and [page:KeyframeTrack.valueSize valueSize] of the keyframes.
+    </div>
+
+
+    <h2>Source</h2>
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 74 - 0
docs/api/animation/tracks/StringKeyframeTrack.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <base href="../../../" />
+    <script src="list.js"></script>
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+  </head>
+  <body>
+
+		[page:KeyframeTrack] &rarr;
+
+    <h1>[name]</h1>
+
+    <div class="desc">
+     A Track of String keyframe values.
+    </div>
+
+
+    <h2>Constructor</h2>
+
+
+    <h3>[name]( [page:String name], [page:Array times], [page:Array values] )</h3>
+    <div>
+      -- [page:String name] (required) identifier for the KeyframeTrack.<br />
+      -- [page:Array times] (required) array of keyframe times<br />
+      -- [page:Array values] values for the keyframes at the times specified.<br />
+			-- [page:Constant interpolation] the type of interpolation to use. See [page:Animation Animation Constants] for possible values.
+      Default is [page:Animation InterpolateDiscrete].
+    </div>
+
+    <h2>Properties</h2>
+
+		See [page:KeyframeTrack] for inherited properties.
+
+
+    <h3>[property:String ValueTypeName]</h3>
+    <div>
+    String 'string'.
+    </div>
+
+    <h3>[property:Constant DefaultInterpolation]</h3>
+    <div>
+    The default interpolation type to use, [page:Animation InterpolateDiscrete].
+    </div>
+
+
+    <h2>Methods</h2>
+
+		See [page:KeyframeTrack] for inherited methods.
+
+    <h3>[method:null InterpolantFactoryMethodLinear ](  )</h3>
+    <div>
+      The value of this method here is 'undefined', as it does not make sense for discrete properties.
+    </div>
+
+    <h3>[method:null InterpolantFactoryMethodSmooth ](  )</h3>
+    <div>
+      The value of this method here is 'undefined', as it does not make sense for discrete properties.
+    </div>
+
+    <h3>[method:null ValueBufferType ](  )</h3>
+    <div>
+      Used to convert the values array passed in the constructor to an Array.
+			Note: In this case this does nothing, other Track types may convert the array to a Typed Array.
+    </div>
+
+    <h2>Source</h2>
+
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 51 - 0
docs/api/animation/tracks/VectorKeyframeTrack.html

@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <base href="../../../" />
+    <script src="list.js"></script>
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+  </head>
+  <body>
+
+		[page:KeyframeTrack] &rarr;
+
+    <h1>[name]</h1>
+
+    <div class="desc">
+     A Track of Vector keyframe values.
+    </div>
+
+
+    <h2>Constructor</h2>
+
+
+    <h3>[name]( [page:String name], [page:Array times], [page:Array values] )</h3>
+    <div>
+      -- [page:String name] (required) identifier for the KeyframeTrack.<br />
+      -- [page:Array times] (required) array of keyframe times<br />
+      -- [page:Array values] values for the keyframes at the times specified.<br />
+			-- [page:Constant interpolation] the type of interpolation to use. See [page:Animation Animation Constants] for possible values.
+      Default is [page:Animation InterpolateLinear].
+    </div>
+
+    <h2>Properties</h2>
+
+		See [page:KeyframeTrack] for inherited properties.
+
+    <h3>[property:String ValueTypeName]</h3>
+    <div>
+    String 'vector'.
+    </div>
+
+    <h2>Methods</h2>
+
+		See [page:KeyframeTrack] for inherited methods.
+
+    <h2>Source</h2>
+
+
+    [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+  </body>
+</html>

+ 203 - 0
docs/api/audio/Audio.html

@@ -0,0 +1,203 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Object3D] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+			Create a non-positional ( global ) audio object.<br /><br />
+
+			This uses the [link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API].
+		</div>
+
+
+		<h2>Example</h2>
+
+		<div>[example:misc_sound misc / sound ]</div>
+		<code>
+		//Create an AudioListener and add it to the camera
+		var listener = new THREE.AudioListener();
+		camera.add( listener );
+
+		// create a global audio source
+		var sound = new THREE.Audio( listener );
+
+		var audioLoader = new THREE.AudioLoader();
+
+		//Load a sound and set it as the Audio object's buffer
+		audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
+			sound.setBuffer( buffer );
+			sound.setLoop(true);
+			sound.setVolume(0.5);
+			sound.play();
+		});
+		</code>
+
+
+		<h2>Constructor</h2>
+
+
+		<h3>[name]( [page:AudioListener listener] )</h3>
+		<div>
+		listener — (required) [page:AudioListener AudioListener] instance.
+		</div>
+
+
+		<h2>Properties</h2>
+
+		<h3>[property:Boolean autoplay]</h3>
+		<div>Whether to start playback automatically. Default is *false*.</div>
+
+		<h3>[property:AudioContext context]</h3>
+		<div>The [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext] of the [page:AudioListener listener] given in the constructor.</div>
+
+		<h3>[property:Array filters]</h3>
+		<div>Whether the audio is currently playing. Default is empty array.</div>
+
+		<h3>[property:GainNode gain]</h3>
+		<div>A [link:https://developer.mozilla.org/en-US/docs/Web/API/GainNode GainNode] created
+		using [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createGain AudioContext.createGain]().</div>
+
+		<h3>[property:Boolean hasPlaybackControl]</h3>
+		<div>Whether playback can be controlled using the [page:Audio.play play](),
+			[page:Audio.pause pause]() etc. methods. Default is *true*.</div>
+
+		<h3>[property:Number playbackRate]</h3>
+		<div>Speed of playback. Default is *1*.</div>
+
+		<h3>[property:Boolean isPlaying]</h3>
+		<div>Whether the audio is currently playing.</div>
+
+		<h3>[property:Number startTime]</h3>
+		<div>Point at which to start playback. Default is *0*.</div>
+
+		<h3>[property:String source]</h3>
+		<div>An [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode AudioBufferSourceNode] created
+		using [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createBufferSource AudioContext.createBufferSource]().</div>
+
+		<h3>[property:String sourceType]</h3>
+		<div>Type of the audio source. Default is string 'empty'.</div>
+
+		<h3>[property:String type]</h3>
+		<div>String denoting the type, set to 'Audio'.</div>
+
+
+		<h2>Methods</h2>
+
+		<h3>[method:null connect]()</h3>
+		<div>
+		Connect to the [page:Audio.source]. This is used internally on initialisation and when
+		setting / removing filters.
+		</div>
+
+		<h3>[method:null disconnect]()</h3>
+		<div>
+		Disconnect from the [page:Audio.source]. This is used internally when
+		setting / removing filters.
+		</div>
+
+		<h3>[method:Array getFilter]()</h3>
+		<div>
+		Returns the first element of the [page:Audio.filters filters] array.
+		</div>
+
+		<h3>[method:null getFilters]()</h3>
+		<div>
+		Returns the [page:Audio.filters filters] array.
+		</div>
+
+		<h3>[method:Boolean getLoop]()</h3>
+		<div>
+		Return the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loop source.loop]
+		 (whether playback should loop).
+		</div>
+
+		<h3>[method:GainNode getOutput]()</h3>
+		<div>
+		Return the [page:Audio.gain gainNode].
+		</div>
+
+		<h3>[method:Number getPlaybackRate]()</h3>
+		<div>
+		Return the value of [page:Audio.playbackRate playbackRate].
+		</div>
+
+		<h3>[method:Number getVolume]( value )</h3>
+		<div>
+		Return the current volume.
+		</div>
+
+		<h3>[method:null play]()</h3>
+		<div>
+		If [page:Audio.hasPlaybackControl hasPlaybackControl] is true, starts playback.
+		</div>
+
+		<h3>[method:null pause]()</h3>
+		<div>
+		If [page:Audio.hasPlaybackControl hasPlaybackControl] is true, pauses playback.
+		</div>
+
+		<h3>[method:null onEnded]()</h3>
+		<div>
+		Called automatically when playback finished. Sets If [page:Audio.isPlaying isPlaying] to false.
+		</div>
+
+		<h3>[method:Audio setBuffer]( audioBuffer )</h3>
+		<div>
+		Setup the [page:Audio.source source] to the audioBuffer, and sets [page:Audio.sourceType sourceType] to 'buffer'.<br />
+		If [page:Audio.autoplay autoplay], also starts playback.
+		</div>
+
+		<h3>[method:null setFilter]( filter )</h3>
+		<div>
+		Add the filter to the [page:Audio.filters filters] array.
+		</div>
+
+		<h3>[method:Audio setFilters]( [page:Array value] )</h3>
+		<div>
+		value - arrays of filters.<br />
+		Set the [page:Audio.filters filters] array to *value*.
+		</div>
+
+		<h3>[method:null setLoop]( [page:Boolean value] )</h3>
+		<div>
+		Set [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loop source.loop] to *value*
+		(whether playback should loop).
+		</div>
+
+		<h3>[method:null setNodeSource]( audioNode )</h3>
+		<div>
+		Setup the [page:Audio.source source] to the audioBuffer, and sets [page:Audio.sourceType sourceType] to 'audioNode'.<br />
+		Also sets [page:Audio.hasPlaybackControl hasPlaybackControl] to false.
+
+		</div>
+
+		<h3>[method:null setPlaybackRate]( [page:Number value] )</h3>
+		<div>
+		If [page:Audio.hasPlaybackControl hasPlaybackControl] is enabled, set the [page:Audio.playbackRate playbackRate] to *value*.
+		</div>
+
+		<h3>[method:null setVolume]( [page:Number value] )</h3>
+		<div>
+		Set the volume.
+		</div>
+
+		<h3>[method:null stop]()</h3>
+		<div>
+		If [page:Audio.hasPlaybackControl hasPlaybackControl] is enabled, stops playback,
+		resets [page:Audio.startTime startTime] to *0* and sets [page:Audio.isPlaying isPlaying] to false.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 96 - 0
docs/api/audio/AudioAnalyser.html

@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<div class="desc">
+			Create a AudioAnalyser object, which uses an [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode AnalyserNode]
+			to analyse audio data.<br /><br />
+
+			This uses the [link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API].
+
+		</div>
+
+
+		<h2>Example</h2>
+
+		<div>[example:misc_sound misc / sound ]</div>
+		<code>
+		//Create an AudioListener and add it to the camera
+		var listener = new THREE.AudioListener();
+		camera.add( listener );
+
+		// create an Audio source
+		var sound = new THREE.Audio( listener );
+
+		var audioLoader = new THREE.AudioLoader();
+
+		//Load a sound and set it as the Audio object's buffer
+		audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
+			sound.setBuffer( buffer );
+			sound.setLoop(true);
+			sound.setVolume(0.5);
+			sound.play();
+		});
+
+		//Create an AudioAnalyser, passing in the sound and desired fftSize
+		var analyser = new THREE.AudioAnalyser( sound, 32 );
+
+		//Get the average frequency of the sound
+		analyser.getAverageFrequency();
+		</code>
+
+
+		<h2>Constructor</h2>
+
+
+		<h3>[name]( audio, [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/fftSize fftSize] )</h3>
+		<div>
+		Create a new [page:AudioAnalyser AudioAnalyser].
+		</div>
+
+
+		<h2>Properties</h2>
+
+		<h3>[property:AnalyserNode analyser]</h3>
+		<div>An [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode AnalyserNode] used to analyze audio.</div>
+
+		<h3>[property:Integer fftSize]</h3>
+		<div>
+		A non-zero power of two up to 2048, representing the size of the FFT (Fast Fourier Transform) to be used to determine the frequency domain.<br />
+		See [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/fftSize this page] for details.
+		</div>
+
+		<h3>[property:Uint8Array data]</h3>
+		<div>
+		A Uint8Array with size determined by [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/frequencyBinCount analyser.frequencyBinCount]
+		used to hold analysis data.
+		</div>
+
+
+		<h2>Methods</h2>
+
+
+		<h3>[method:Uint8Array getFrequencyData]()</h3>
+		<div>
+		Uses the Web Audio's [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteFrequencyData getByteFrequencyData] method.
+		See that page.
+		</div>
+
+		<h3>[method:Number getAverageFrequency]()</h3>
+		<div>
+		Get the average of the frequencies returned by the [page:AudioAnalyser.getFrequencyData getFrequencyData] method.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 42 - 0
docs/api/audio/AudioContext.html

@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+		This contains methods for setting up an [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext].<br /><br />
+
+		Used internally by the [page:AudioListener AudioListener] and [page:AudioLoader AudioLoader] classes.<br /><br />
+
+		This uses the [link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API].
+		</div>
+
+
+
+		<h2>Methods</h2>
+
+		<h3>[method:AudioContext getContext]()</h3>
+		<div>
+		Return the value of the variable *context* in the outer scope, if defined,
+		otherwise set it to a new [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext].
+		</div>
+
+		<h3>[method:AudioContext setContext]( [page:AudioConetxt value] )</h3>
+		<div>
+		 Set the variable *context* in the outer scope to *value*.
+		</div>
+
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 106 - 0
docs/api/audio/AudioListener.html

@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Object3D] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+			Create a non-positional ( global ) audio object.<br /><br />
+
+			This uses the [link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API].
+
+		</div>
+
+
+		<h2>Example</h2>
+
+		<div>[example:misc_sound misc / sound ]</div>
+		<code>
+		//Create an AudioListener and add it to the camera
+		var listener = new THREE.AudioListener();
+		camera.add( listener );
+
+		// create a global audio source
+		var sound = new THREE.Audio( listener );
+
+		var audioLoader = new THREE.AudioLoader();
+
+		//Load a sound and set it as the Audio object's buffer
+		audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
+			sound.setBuffer( buffer );
+			sound.setLoop(true);
+			sound.setVolume(0.5);
+			sound.play();
+		});
+		</code>
+
+
+		<h2>Constructor</h2>
+
+
+		<h3>[name](  )</h3>
+		<div>
+		Create a new AudioListener.
+		</div>
+
+
+		<h2>Properties</h2>
+
+		<h3>[property:AudioContext context]</h3>
+		<div>The [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext] of the [page:AudioListener listener] given in the constructor.</div>
+
+		<h3>[property:GainNode gain]</h3>
+		<div>A [link:https://developer.mozilla.org/en-US/docs/Web/API/GainNode GainNode] created
+		using [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createGain AudioContext.createGain]().</div>
+
+		<h3>[property:AudioNode filter]</h3>
+		<div>Default is *null*.</div>
+
+
+		<h2>Methods</h2>
+
+
+		<h3>[method:GainNode getInput]()</h3>
+		<div>
+		Return the [page:AudioListener.gain gainNode].
+		</div>
+
+		<h3>[method:null removeFilter]()</h3>
+		<div>
+		Set the [page:AudioListener.filter filter] property to *null*.
+		</div>
+
+		<h3>[method:AudioNode getFilter]()</h3>
+		<div>
+		Returns the value of the [page:AudioListener.filter filter] property.
+		</div>
+
+		<h3>[method:null setFilter]( [page:AudioNode value] )</h3>
+		<div>
+		Set the [page:AudioListener.filter filter] property to *value*.
+		</div>
+
+		<h3>[method:Number getMasterVolume]()</h3>
+		<div>
+		Return the volume.
+		</div>
+
+		<h3>[method:null getMasterVolume]( [page:Number value] )</h3>
+		<div>
+		Set the volume.
+		</div>
+
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 125 - 0
docs/api/audio/PositionalAudio.html

@@ -0,0 +1,125 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Object3D] &rarr; [page:Audio] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+			Create a positional audio object.<br /><br />
+
+			This uses the [link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API].
+		</div>
+
+
+		<h2>Example</h2>
+
+		<div>[example:misc_sound misc / sound ]</div>
+		<code>
+		//Create an AudioListener and add it to the camera
+		var listener = new THREE.AudioListener();
+		camera.add( listener );
+
+		//Create the PositionalAudio object (passing in the listener)
+		var sound = new THREE.PositionalAudio( listener );
+
+		//Load a sound and set it as the PositionalAudio object's buffer
+		var audioLoader = new THREE.AudioLoader();
+		audioLoader.load( 'sounds/song.ogg', function( buffer ) {
+			sound1.setBuffer( buffer );
+			sound1.setRefDistance( 20 );
+			sound1.play();
+		});
+
+		//Create an object for the sound to play from
+		var sphere = new THREE.SphereGeometry( 20, 32, 16 );
+		var material = new THREE.MeshPhongMaterial( { color: 0xff2200 } );
+		var mesh = new THREE.Mesh( sphere, material );
+		scene.add( mesh );
+
+		//Finally add the sound to the mesh
+		mesh.add( sound );
+		</code>
+
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [page:AudioListener listener] )</h3>
+		<div>
+		listener — (required) [page:AudioListener AudioListener] instance.
+		</div>
+
+
+		<h2>Properties</h2>
+
+		<div>
+			See the [page:Audio Audio] class for inherited properties.
+		</div>
+
+		<h3>[property:PannerNode panner]</h3>
+		<div>The PositionalAudio's [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode PannerNode].</div>
+
+
+		<h2>Methods</h2>
+
+		<div>
+			See the [page:Audio Audio] class for inherited methods.
+		</div>
+
+		<h3>[method:PannerNode getOutput]()</h3>
+		<div>
+		Returns the [page:PositionalAudio.panner panner].
+		</div>
+
+		<h3>[method:Number getRefDistance]()</h3>
+		<div>
+		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/refDistance panner.refDistance].
+		</div>
+
+		<h3>[method:PannerNode setRefDistance]( [page:Number value] )</h3>
+		<div>
+		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/refDistance panner.refDistance].
+		</div>
+
+		<h3>[method:PannerNode getRolloffFactor]()</h3>
+		<div>
+		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor panner.rolloffFactor].
+		</div>
+
+		<h3>[method:PannerNode setRolloffFactor]( [page:Number value] )</h3>
+		<div>
+		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor panner.rolloffFactor].
+		</div>
+
+		<h3>[method:String getDistanceModel]()</h3>
+		<div>
+		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel panner.distanceModel].
+		</div>
+
+		<h3>[method:String setDistanceModel]( [page:String value] )</h3>
+		<div>
+		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel panner.distanceModel].
+		</div>
+
+		<h3>[method:PannerNode getMaxDistance]()</h3>
+		<div>
+		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance panner.distanceModel].
+		</div>
+
+		<h3>[method:PannerNode setMaxDistance]( [page:Number value] )</h3>
+		<div>
+		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance panner.distanceModel].
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 37 - 13
docs/api/cameras/Camera.html

@@ -20,42 +20,66 @@
 
 		<h3>[name]()</h3>
 		<div>
-			This constructor sets the following properties to the correct type: matrixWorldInverse and projectionMatrix.
+			This constructor sets the following properties to the correct type:
+			[page:Camera.matrixWorldInverse matrixWorldInverse] and [page:Camera.projectionMatrix projectionMatrix].
 
 		</div>
 
 
 		<h2>Properties</h2>
+		<div>See the base [page:Object3D] class for common properties.</div>
+
+		<h3>[property:Boolean isCamera]</h3>
+		<div>
+			Used to check whether this or derived classes are cameras. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally by the renderer for optimisation.
+		</div>
 
 		<h3>[property:Matrix4 matrixWorldInverse]</h3>
-		<div>This is the inverse of matrixWorld. MatrixWorld contains the Matrix which has the world transform of the Camera.</div>
+		<div>
+			This is the inverse of matrixWorld. MatrixWorld contains the Matrix which has
+			the world transform of the Camera.
+		</div>
 
 		<h3>[property:Matrix4 projectionMatrix]</h3>
 		<div>This is the matrix which contains the projection.</div>
 
+		<h3>[property:Layers layers]</h3>
+		<div>
+		The [page:Layers layers] that the camera is a member of. This is an inherited
+		property from [page:Object3D].<br /><br />
+
+		Objects must share at least one layer with the camera to be seen
+		when the camera's viewpoint is rendered.
+		</div>
 
 		<h2>Methods</h2>
+		<div>See the base [page:Objct3D] class for common methods.</div>
 
-		<h3>[method:Vector3 getWorldDirection]([page:Vector3 vector])</h3>
+		<h3>[method:Vector3 getWorldDirection]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		vector — (optional)<br />
-		<br />
-		It returns a vector representing the direction in which the camera is looking, in world space.
+		vector — (optional)<br /><br />
+
+		Returns a vector representing the direction in which the camera is looking,
+		in world space. If the [page:Vector3 optionalTarget] is set, returns a vector representing the direction
+		from the camera's position to the [page:Vector3 optionalTarget].
 		</div>
 
 
-		<h3>[method:null lookAt]( [page:Vector3 vector] )</h3>
+		<h3>[method:null lookAt]( [page:Vector3 target] )</h3>
 		<div>
-		vector — point to look at<br />
-		<br />
-		This makes the camera look at the vector position in the global space as long as the parent of this camera is the scene or at position (0,0,0).
+		target — position in 3D space for the camera to point towards<br /><br />
+
+		This makes the camera look at the vector position in the global space as long as
+		the parent of this camera is the scene or at position (0,0,0).
 		</div>
 
 		<h3>[method:Camera clone]( [page:Camera camera] )</h3>
 		<div>
-		camera — camera to clone<br />
-		<br />
-		It returns a clone of camera.
+		camera — camera to clone<br /><br />
+
+		Returns a clone of camera.
 		</div>
 
 

+ 8 - 9
docs/api/cameras/CubeCamera.html

@@ -43,21 +43,20 @@
 		<h2>Constructor</h2>
 
 
-		<h3>[name]([page:number near], [page:number far], [page:number cubeResolution])</h3>
+		<h3>[name]( [page:Number near], [page:Number far], [page:Number cubeResolution] )</h3>
 		<div>
 		near -- The near clipping distance. <br />
 		far -- The far clipping distance <br />
-		cubeResolution -- Sets the width of the cube.
+		cubeResolution -- Sets the length of the cube's edges.
 		</div>
 		<div>
-		Constructs a CubeCamera that contains 6 [page:PerspectiveCamera PerspectiveCameras] that then
-		render to a [page:WebGLRenderTargetCube]
+		Constructs a CubeCamera that contains 6 [page:PerspectiveCamera PerspectiveCameras] that
+		render to a [page:WebGLRenderTargetCube].
 		</div>
 
 
 		<h2>Properties</h2>
-
-
+		<div>See the base [page:Object3D] class for common properties.</div>
 
 		<h3>[property:WebGLRenderTargetCube renderTarget]</h3>
 		<div>
@@ -65,16 +64,16 @@
 		</div>
 
 		<h2>Methods</h2>
+		<div>See the base [page:Object3D] class for common methods.</div>
 
 
-
-		<h3>[method:null updateCubeMap]([page:WebGLRenderer renderer], [page:Scene scene])</h3>
+		<h3>[method:null updateCubeMap]( [page:WebGLRenderer renderer], [page:Scene scene] )</h3>
 		<div>
 		renderer -- The current WebGL renderer <br />
 		scene -- The current scene
 		</div>
 		<div>
-		Call this to update the renderTarget.
+		Call this to update the [page:CubeCamera.renderTarget renderTarget].
 		</div>
 
 		<h2>Source</h2>

+ 51 - 19
docs/api/cameras/OrthographicCamera.html

@@ -12,7 +12,14 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">Camera with orthographic projection.</div>
+		<div class="desc">
+			Camera that uses [link:https://en.wikipedia.org/wiki/Orthographic_projection orthographic projection].<br /><br />
+
+			In this projection mode, an object's size in the rendered image stays constant
+			regardless of its distance from the camera.<br /><br />
+
+			This can be useful for rendering 2D scenes and UI elements, amongst other things.
+		</div>
 
 
 		<h2>Example</h2>
@@ -37,58 +44,83 @@ scene.add( camera );</code>
 		<h2>Constructor</h2>
 
 
-		<h3>[name]( [page:Float left], [page:Float right], [page:Float top], [page:Float bottom], [page:Float near], [page:Float far] )</h3>
+		<h3>[name]( [page:Number left], [page:Number right], [page:Number top], [page:Number bottom], [page:Number near], [page:Number far] )</h3>
 		<div>
 		left — Camera frustum left plane.<br />
 		right — Camera frustum right plane.<br />
 		top — Camera frustum top plane.<br />
 		bottom — Camera frustum bottom plane.<br />
 		near — Camera frustum near plane.<br />
-		far — Camera frustum far plane.
+		far — Camera frustum far plane.<br /><br />
+
+		Together these define the camera's [link:https://en.wikipedia.org/wiki/Viewing_frustum viewing frustum].
 		</div>
 
 
 		<h2>Properties</h2>
+		<div>See the base [page:Camera] class for common properties.</div>
 
-		<h3>[property:number zoom]</h3>
-		<div>Gets or sets the zoom factor of the camera. </div>
+		<h3>[property:Float bottom]</h3>
+		<div>Camera frustum bottom plane.</div>
+
+		<h3>[property:Float far]</h3>
+		<div>Camera frustum far plane. Default is *2000*.</div>
+
+		<h3>[property:Boolean isOrthographicCamera]</h3>
+		<div>
+			Used to test whether this or derived classes are OrthographicCameras. Default is *true*.<br /><br />
+
+			This should not be changed as it is used internally by the renderer for optimisation.
+		</div>
 
 		<h3>[property:Float left]</h3>
 		<div>Camera frustum left plane.</div>
 
+		<h3>[property:Float near]</h3>
+		<div>Camera frustum near plane. Default is *0.1*.</div>
+
 		<h3>[property:Float right]</h3>
 		<div>Camera frustum right plane.</div>
 
 		<h3>[property:Float top]</h3>
 		<div>Camera frustum top plane.</div>
 
-		<h3>[property:Float bottom]</h3>
-		<div>Camera frustum bottom plane.</div>
-
-		<h3>[property:Float near]</h3>
-		<div>Camera frustum near plane.</div>
-
-		<h3>[property:Float far]</h3>
-		<div>Camera frustum far plane.</div>
+		<h3>[property:Object view]</h3>
+		<div>Set by [page:OrthographicCamera.setViewOffset setViewOffset]. Default is *null*.</div>
 
+		<h3>[property:number zoom]</h3>
+		<div>Gets or sets the zoom factor of the camera. Default is *1*.</div>
 
 		<h2>Methods</h2>
+		<div>See the base [page:Camera] class for common methods.</div>
 
-		<h3>[method:null updateProjectionMatrix]()</h3>
+		<h3>[method:null setViewOffset]( [page:Float fullWidth], [page:Float fullHeight], [page:Float x], [page:Float y], [page:Float width], [page:Float height] )</h3>
 		<div>
-		Updates the camera projection matrix. Must be called after change of parameters.
+		fullWidth — full width of multiview setup<br />
+		fullHeight — full height of multiview setup<br />
+		x — horizontal offset of subcamera<br />
+		y — vertical offset of subcamera<br />
+		width — width of subcamera<br />
+		height — height of subcamera<br /><br />
+
+			Sets an offset in a larger [link:https://en.wikipedia.org/wiki/Viewing_frustum viewing frustum].
+			This is useful for multi-window or multi-monitor/multi-machine setups.
+			For an example on how to use it see [page:PerspectiveCamera.setViewOffset PerspectiveCamera].
 		</div>
 
-		<h3>[method:OrthographicCamera clone]()</h3>
+		<h3>[method:null clearViewOffset]()</h3>
 		<div>
-		<br />
-		It returns a clone of OrthographicCamera.
+		Removes any offset set by the .setViewOffset method.
 		</div>
 
+		<h3>[method:null updateProjectionMatrix]()</h3>
+		<div>
+		Updates the camera projection matrix. Must be called after any change of parameters.
+		</div>
 
 		<h3>[method:JSON toJSON]()</h3>
 		<div>
-		Return camera data in JSON format.
+		Return the camera's data in JSON format.
 		</div>
 
 

+ 66 - 53
docs/api/cameras/PerspectiveCamera.html

@@ -12,16 +12,21 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">Camera with perspective projection.</div>
+		<div class="desc">
+			Camera that uses [link:https://en.wikipedia.org/wiki/Perspective_(graphical) perspective projection].<br /><br />
+
+			This projection mode is designed to mimic the way the human eye sees. It is the most
+			common projection mode used for rendering a 3D scene.
+		</div>
 
 
 		<h2>Example</h2>
 
-		<div>[example:canvas_effects_stereo effects / stereo ]</div>
 		<div>[example:canvas_geometry_birds geometry / birds ]</div>
 		<div>[example:canvas_geometry_cube geometry / cube ]</div>
 		<div>[example:webgl_animation_skinning_blending animation / skinning / blending ]</div>
 		<div>[example:webgl_animation_skinning_morph animation / skinning / blending ]</div>
+		<div>[example:webgl_effects_stereo effects / stereo ]</div>
 		<div>[example:webgl_interactive_cubes interactive / cubes ]</div>
 		<div>[example:webgl_loader_collada_skinning loader / collada / skinning ]</div>
 
@@ -31,83 +36,95 @@ scene.add( camera );</code>
 
 		<h2>Constructor</h2>
 
-		<h3>[name]( [page:Float fov], [page:Float aspect], [page:Float near], [page:Float far] )</h3>
+		<h3>[name]( [page:Number fov], [page:Number aspect], [page:Number near], [page:Number far] )</h3>
 		<div>
 		fov — Camera frustum vertical field of view.<br />
 		aspect — Camera frustum aspect ratio.<br />
 		near — Camera frustum near plane.<br />
-		far — Camera frustum far plane.
+		far — Camera frustum far plane.<br /><br />
+
+			Together these define the camera's [link:https://en.wikipedia.org/wiki/Viewing_frustum viewing frustum].
 		</div>
 
 
 		<h2>Properties</h2>
+		<div>See the base [page:Camera] class for common properties.</div>
 
-		<h3>[property:Float fov]</h3>
-		<div>Camera frustum vertical field of view, from bottom to top of view, in degrees.</div>
+		<h3>[property:Float aspect]</h3>
+		<div>Camera frustum aspect ratio, usually the canvas width / canvas height. Default is *1* (square canvas).</div>
 
-		<h3>[property:number zoom]</h3>
-		<div>Gets or sets the zoom factor of the camera. </div>
+		<h3>[property:Float far]</h3>
+		<div>Camera frustum far plane. Default is *2000*.</div>
 
-		<h3>[property:Float near]</h3>
-		<div>Camera frustum near plane.</div>
+		<h3>[property:Float filmGauge]</h3>
+		<div>Film size used for the larger axis. Default is 35 (millimeters). This parameter does not influence the projection matrix unless .filmOffset is set to a nonzero value.</div>
 
-		<h3>[property:Float far]</h3>
-		<div>Camera frustum far plane.</div>
+		<h3>[property:Float filmOffset]</h3>
+		<div>Horizontal off-center offset in the same unit as .filmGauge. Default is *0*.</div>
 
 		<h3>[property:Float focus]</h3>
-		<div>Object distance used for stereoscopy and depth-of-field effects. This parameter does not influence the projection matrix unless a StereoCamera is being used.</div>
+		<div>Object distance used for stereoscopy and depth-of-field effects.
+			This parameter does not influence the projection matrix unless a [page:StereoCamera] is being used.
+			Default is *10*.
+		</div>
 
-		<h3>[property:Float aspect]</h3>
-		<div>Camera frustum aspect ratio, window width divided by window height.</div>
+		<h3>[property:Float fov]</h3>
+		<div>Camera frustum vertical field of view, from bottom to top of view, in degrees. Default is *50*.</div>
+
+		<h3>[property:Boolean isPerspectiveCamera]</h3>
+		<div>
+			Used to test whether this or derived classes are PerspectiveCameras. Default is *true*.<br /><br />
+
+			This should not be changed as it is used internally by the renderer for optimisation.
+		</div>
+
+
+		<h3>[property:Float near]</h3>
+		<div>Camera frustum near plane. Default is *0.1*.</div>
 
 		<h3>[property:Object view]</h3>
-		<div>Frustum window specification or null.</div>
+		<div>
+			Frustum window specification or null.
+			This is set using the [page:PerspectiveCamera.setViewOffset .setViewOffset] method
+			and cleared using [page:PerspectiveCamera.clearViewOffset .clearViewOffset].
+		</div>
+
+		<h3>[property:number zoom]</h3>
+		<div>Gets or sets the zoom factor of the camera. Default is *1*.</div>
+
+
 
-		<h3>[property:Float filmGauge]</h3>
-		<div>Film size used for the larger axis. Default is 35 (millimeters). This parameter does not influence the projection matrix unless .filmOffset is set to a nonzero value.</div>
 
-		<h3>[property:Float filmOffset]</h3>
-		<div>Horizontal off-center offset in the same unit as .filmGauge.</div>
 
 		<h2>Methods</h2>
+		<div>See the base [page:Camera] class for common methods.</div>
+
+		<h3>[method:null clearViewOffset]()</h3>
+		<div>Removes any offset set by the [page:PerspectiveCamera.setViewOffset .setViewOffset] method.</div>
 
 		<h3>[method:Float getEffectiveFOV]()</h3>
-		<div>
-		Returns the current vertical field of view angle in degrees considering .zoom.
-		</div>
+		<div>Returns the current vertical field of view angle in degrees considering .zoom.</div>
 
-		<h3>[method:Float getFocalLength]()</h3>
+		<h3>[method:Float getFilmHeight]()</h3>
 		<div>
-		Returns the focal length of the current .fov in respect to .filmGauge.
+		Returns the height of the image on the film. If .aspect is less than or equal to one
+		(portrait format), the result equals .filmGauge.
 		</div>
 
 		<h3>[method:Float getFilmWidth]()</h3>
 		<div>
-		Returns the width of the image on the film. If .aspect is greater than or equal to one (landscape format), the result equals .filmGauge.
+		Returns the width of the image on the film. If .aspect is greater than or equal to one
+		(landscape format), the result equals .filmGauge.
 		</div>
 
-		<h3>[method:Float getFilmHeight]()</h3>
-		<div>
-		Returns the height of the image on the film. If .aspect is less than or equal to one (portrait format), the result equals .fimlGauge.
-		</div>
+		<h3>[method:Float getFocalLength]()</h3>
+		<div>Returns the focal length of the current .fov in respect to .filmGauge.</div>
 
 		<h3>[method:null setFocalLength]( [page:Float focalLength] )</h3>
 		<div>
-		Sets the FOV by focal length in respect to the current .filmGauge.
-		</div>
-		<div>
-		By default, the focal length is specified for a 35mm (full frame) camera.
-		</div>
+		Sets the FOV by focal length in respect to the current [page:PerspectiveCamera.filmGauge .filmGauge].<br /><br />
 
-		<h3>[method:null setLens]( [page:Float focalLength], [page:Float filmGauge] )</h3>
-		<div>
-		focalLength — focal length<br />
-		frameGauge — film gauge
-		</div>
-
-		<div>
-		Sets .fov by focal length. Optionally also sets .filmGauge.
-		This method is deprecated, please use .setFocalLength instead.
+		By default, the focal length is specified for a 35mm (full frame) camera.
 		</div>
 
 		<h3>[method:null setViewOffset]( [page:Float fullWidth], [page:Float fullHeight], [page:Float x], [page:Float y], [page:Float width], [page:Float height] )</h3>
@@ -127,11 +144,13 @@ scene.add( camera );</code>
 		<div>
 		For example, if you have 3x2 monitors and each monitor is 1920x1080 and the monitors are in grid like this:<br />
 
-		<pre>+---+---+---+
+		<pre>
++---+---+---+
 | A | B | C |
 +---+---+---+
 | D | E | F |
-+---+---+---+</pre>
++---+---+---+
+		</pre>
 
 		then for each monitor you would call it like this:<br />
 
@@ -159,13 +178,7 @@ camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );
 
 		<h3>[method:null updateProjectionMatrix]()</h3>
 		<div>
-		Updates the camera projection matrix. Must be called after change of parameters.
-		</div>
-
-		<h3>[method:PerspectiveCamera clone]()</h3>
-		<div>
-		<br />
-		It returns a clone of PerspectiveCamera.
+		Updates the camera projection matrix. Must be called after any change of parameters.
 		</div>
 
 		<h3>[method:JSON toJSON]()</h3>

+ 67 - 0
docs/api/cameras/StereoCamera.html

@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+		Dual [page:PerspectiveCamera PerspectiveCamera]s used for effects such as
+		[link:https://en.wikipedia.org/wiki/Anaglyph_3D 3D Anaglyph] or [link:https://en.wikipedia.org/wiki/parallax_barrier Parallax Barrier].
+		</div>
+
+
+		<h2>Example</h2>
+
+		<div>[example:webgl_effects_anaglyph effects / anaglyph ]</div>
+		<div>[example:webgl_effects_parallaxbarrier effects / parallaxbarrier ]</div>
+		<div>[example:webgl_effects_stereo effects / stereo ]</div>
+
+		<div>
+		This class is used internally in the files<br /><br />
+		[link:https://github.com/mrdoob/three.js/blob/master/examples/js/effects/AnaglyphEffect.js examples/js/effects/AnaglyphEffect.js]<br /><br />
+		[link:https://github.com/mrdoob/three.js/blob/master/examples/js/effects/ParallaxBarrierEffect.js examples/js/effects/ParallaxBarrierEffect.js]<br /><br />
+		[link:https://github.com/mrdoob/three.js/blob/master/examples/js/effects/StereoEffect.js examples/js/effects/StereoEffect.js]<br /><br />
+		used in the above examples.
+		</div>
+
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( )</h3>
+
+		<h2>Properties</h2>
+
+		<h3>[property:Float aspect]</h3>
+		<div>Default is *1*.</div>
+
+		<h3>[property:Float eyeSep]</h3>
+		<div>Default is *0.064*.</div>
+
+		<h3>[property:PerspectiveCamera cameraL]</h3>
+		<div>Left camera. This is added to [page:Layers layer 1] - objects to be rendered
+		by the left camera must also be added to this layer.</div>
+
+		<h3>[property:PerspectiveCamera cameraR]</h3>
+		<div>Right camera.This is added to [page:Layers layer 2] - objects to be rendered
+		by the left camera must also be added to this layer.</div>
+
+
+		<h2>Methods</h2>
+
+		<h3>[method:null update]( camera )</h3>
+		<div>
+		Update the stereo cameras based on the camera passed in.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 39 - 0
docs/api/constants/Animation.html

@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>Animation Constants</h1>
+
+		<h2>Loop Modes</h2>
+    
+		<code>
+THREE.LoopOnce
+THREE.LoopRepeat
+THREE.LoopPingPong
+		</code>
+
+    <h2>Interpolation Modes</h2>
+    <code>
+THREE.InterpolateDiscrete
+THREE.InterpolateLinear
+THREE.InterpolateSmooth
+    </code>
+
+    <h2>Ending Modes</h2>
+    <code>
+THREE.ZeroCurvatureEnding
+THREE.ZeroSlopeEnding
+THREE.WrapAroundEnding
+    </code>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
+	</body>
+</html>

+ 37 - 0
docs/api/constants/Core.html

@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>Core Constants</h1>
+
+		<h2>Revision Number</h2>
+
+		<code>
+		THREE.REV
+		</code>
+
+		<div id="rev">
+			The current Three.js [link:https://github.com/mrdoob/three.js/releases revision number].
+		</div>
+
+    <h2>Mouse Buttons</h2>
+    <code>
+		THREE.MOUSE.LEFT
+		THREE.MOUSE.MIDDLE
+		THREE.MOUSE.RIGHT
+    </code>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
+
+	</body>
+
+
+</html>

+ 39 - 23
docs/api/constants/CustomBlendingEquations.html

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html lang="en">
 	<head>
-		<meta charset="utf-8" />
+		<meta charset="utf-8" />
 		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
@@ -10,36 +10,52 @@
 	<body>
 		<h1>Custom Blending Equation Constants</h1>
 
-		<h2>Equations</h2>
-		<div>
-		THREE.AddEquation<br />
-		THREE.SubtractEquation<br />
-		THREE.ReverseSubtractEquation<br />
-		THREE.MinEquation<br />
+
+		<h2>Example</h2>
+		<div>[example:webgl_materials_blending_custom materials / blending / custom ]</div>
+
+		<h2>Usage</h2>
+		These work with all material types. First set the material's blending mode to THREE.CustomBlending, then set the desired Blending Equation, Source Factor and Destination Factor.
+
+		<code>
+		var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
+		material.blending = THREE.CustomBlending;
+		material.blendEquation = THREE.AddEquation; //default
+		material.blendSrc = THREE.SrcAlphaFactor; //default
+		material.blendDst = THREE.OneMinusDstAlphaFactor; //default
+		</code>
+
+		<h2>Blending Equations</h2>
+		<code>
+		THREE.AddEquation
+		THREE.SubtractEquation
+		THREE.ReverseSubtractEquation
+		THREE.MinEquation
 		THREE.MaxEquation
-		</div>
+		</code>
 
-		<h2>Destination Factors</h2>
-		<div>
-		THREE.ZeroFactor<br />
-		THREE.OneFactor<br />
-		THREE.SrcColorFactor<br />
-		THREE.OneMinusSrcColorFactor<br />
-		THREE.SrcAlphaFactor<br />
-		THREE.OneMinusSrcAlphaFactor<br />
-		THREE.DstAlphaFactor<br />
+		<h2>Source Factors</h2>
+		<code>
+		THREE.ZeroFactor
+		THREE.OneFactor
+		THREE.SrcColorFactor
+		THREE.OneMinusSrcColorFactor
+		THREE.SrcAlphaFactor
+		THREE.OneMinusSrcAlphaFactor
+		THREE.DstAlphaFactor
 		THREE.OneMinusDstAlphaFactor
-		</div>
+		THREE.DstColorFactor
+		THREE.OneMinusDstColorFactor
+		THREE.SrcAlphaSaturateFactor
+		</code>
 
-		<h2>Source Factors</h2>
+		<h2>Destination Factors</h2>
 		<div>
-		THREE.DstColorFactor<br />
-		THREE.OneMinusDstColorFactor<br />
-		THREE.SrcAlphaSaturateFactor
+			All of the Source Factors are valid as Destination Factors, except for <code>THREE.SrcAlphaSaturateFactor</code>
 		</div>
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/Three.js src/Three.js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
 	</body>
 </html>

+ 83 - 0
docs/api/constants/DrawModes.html

@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>Draw Mode Constants</h1>
+
+		<div class="desc">
+			These are valid values for [page:Mesh.drawMode], and control how the list of vertices is interpeted once sent to the GPU.<br /><br />
+
+			Note that these only work when [page:Mesh.geometry] is a [page:BufferGeometry]. Changing this
+			when [page:Mesh.geometry] is a [page:Geometry] will have no effect.<br /><br />
+
+
+
+		</div>
+
+		<h2>Draw Modes</h2>
+
+		<code>
+			THREE.TrianglesDrawMode
+		</code>
+		<div>
+			This is the default, and results in every three consecutive vertices (v0, v1, v2), (v2, v3, v5), ...
+			being interpreted as a separate triangle. <br />
+			If the number of vertices is not a multiple of 3, excess vertices are ignored.
+		</div>
+
+		<code>
+			THREE.TriangleStripDrawMode
+		</code>
+		<div>
+			This will result in a series of triangles connected in a strip, given by (v0, v1, v2), (v2, v1, v3), (v2, v3, v4), ...
+			so that every subsequent triangle shares two vertices with the previous triangle.
+		</div>
+
+		<code>
+			THREE.TriangleFanDrawMode
+		</code>
+		<div>
+			This will result in a series of triangles each sharing the first vertex (like a fan),
+			given by (v0, v1, v2), (v0, v2, v3), (v0, v3, v4), ... <br /><br />
+
+			<em>Note:</em> As of [link:https://en.wikipedia.org/wiki/DirectX#DirectX_10 DirectX10], this mode is not supported. As Chrome and Firefox
+			render WebGL using [link:https://en.wikipedia.org/wiki/ANGLE_(software) ANGLE] on Windows,
+			internally this mode will be converted to a supported mode, which will likely lead to lowered
+			performance on those browsers.
+		</div>
+
+
+		<h2>Usage</h2>
+
+		<code>
+		var geometry = new THREE.Geometry();
+
+		geometry.vertices.push(
+			new THREE.Vector3( -10,  10, 0 ),
+			new THREE.Vector3( -10, -10, 0 ),
+			new THREE.Vector3(  10, -10, 0 ),
+			...
+		);
+		geometry.faces.push( new THREE.Face3( 0, 1, 2 ), ... );
+
+		var material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
+
+		var mesh = new THREE.Mesh( geometry, material );
+		mesh.drawMode = THREE.TrianglesDrawMode; //default
+
+		scene.add( mesh );
+		</code>
+
+
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
+	</body>
+</html>

+ 0 - 31
docs/api/constants/GLState.html

@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		<h1>GL State Constants</h1>
-
-		<h2>Cull Face</h2>
-		<div>
-		THREE.CullFaceNone<br />
-		THREE.CullFaceBack<br />
-		THREE.CullFaceFront<br />
-		THREE.CullFaceFrontBack
-		</div>
-
-		<h2>Front Face Direction</h2>
-		<div>
-		THREE.FrontFaceDirectionCW<br />
-		THREE.FrontFaceDirectionCCW<br />
-		</div>
-	
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/Three.js src/Three.js]
-	</body>
-</html>

+ 121 - 46
docs/api/constants/Materials.html

@@ -1,47 +1,122 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
+<!DOCTYPE html>
+<html lang="en">
+	<head>
 		<meta charset="utf-8" />
-		<base href="../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		<h1>Material Constants</h1>
-
-		<h2>Side</h2>
-		<div>
-		THREE.FrontSide<br />
-		THREE.BackSide<br />
-		THREE.DoubleSide
-		</div>
-
-		<h2>Shading</h2>
-		<div>
-		THREE.FlatShading<br />
-		THREE.SmoothShading
-		</div>
-
-		<h2>Colors</h2>
-		<div>
-		THREE.NoColors<br />
-		THREE.FaceColors<br />
-		THREE.VertexColors
-		</div>
-
-		<h2>Blending Mode</h2>
-		<div>
-		THREE.NoBlending<br />
-		THREE.NormalBlending<br />
-		THREE.AdditiveBlending<br />
-		THREE.SubtractiveBlending<br />
-		THREE.MultiplyBlending<br />
-		THREE.CustomBlending
-		</div>
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/Three.js src/Three.js]
-	</body>
-</html>
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>Material Constants</h1>
+
+		<div class="desc">
+		These constants define properties common to all material types,
+		with the exception of Texture Combine Operations which only apply to [page:MeshBasicMaterial.combine MeshBasicMaterial], [page:MeshLambertMaterial.combine MeshLambertMaterial] and [page:MeshPhongMaterial.combine MeshPhongMaterial].<br />
+		</div>
+
+
+		<h2>Side</h2>
+		<code>
+		THREE.FrontSide
+		THREE.BackSide
+		THREE.DoubleSide
+		</code>
+		<div>
+		Defines which side of faces will be rendered - front, back or both.
+		Default is [page:Constant FrontSide].
+		</div>
+
+
+		<h2>Shading</h2>
+		<code>
+	  THREE.SmoothShading
+		THREE.FlatShading
+		</code>
+		<div>
+		[page:Constant SmoothShading] is the default and linearly interpolates color between vertices.<br />
+		[page:Constant FlatShading] uses the color of the first vertex for every pixel in a face.
+		</div>
+
+		<h2>Colors</h2>
+		<code>
+		THREE.NoColors
+		THREE.FaceColors
+		THREE.VertexColors
+		</code>
+		<div>
+		[page:Constant NoColors] is the default and applies the material's color to all faces.<br />
+		[page:Constant FaceColors] colors faces according to each [page:Face3 Face3][property:Color color] value.<br />
+		[page:Constant VertexColors] colors faces according to each [page:Face3 Face3][property:Array vertexColors] value. This is an array of three [page:Color Color]s, one for each vertex in the face.<br />
+		See the [example:webgl_geometry_colors geometry / colors] example.
+		</div>
+
+		<h2>Blending Mode</h2>
+		<code>
+		THREE.NoBlending
+		THREE.NormalBlending
+		THREE.AdditiveBlending
+		THREE.SubtractiveBlending
+		THREE.MultiplyBlending
+		THREE.CustomBlending
+		</code>
+
+		<div>
+			These can also be accessed using:
+		</div>
+		
+		<code>
+		THREE.BlendingMode.NoBlending
+		THREE.BlendingMode.NormalBlending
+		THREE.BlendingMode.AdditiveBlending
+		THREE.BlendingMode.SubtractiveBlending
+		THREE.BlendingMode.MultiplyBlending
+		THREE.BlendingMode.CustomBlending
+		</code>
+
+
+		<div>
+		These control the source and destination blending equations for the material's RGB and Alpha sent to the WebGLRenderer for use by WebGL.<br />
+		[page:Constant NormalBlending] is the default.<br />
+		Note that [page:Constant CustomBlending] must be set to use [page:CustomBlendingEquation Custom Blending Equations].<br />
+		See the [example:webgl_materials_blending materials / blending] example.<br />
+		</div>
+
+		<h2>Depth Mode</h2>
+		<code>
+		THREE.NeverDepth
+		THREE.AlwaysDepth
+		THREE.LessDepth
+		THREE.LessEqualDepth
+		THREE.GreaterEqualDepth
+		THREE.GreaterDepth
+		THREE.NotEqualDepth
+		</code>
+		<div>
+		Which depth function the material uses to compare incoming pixels Z-depth against the current Z-depth buffer value. If the result of the comparison is true, the pixel will be drawn.<br />
+		[page:Materials NeverDepth] will never return true.<br />
+		[page:Materials AlwaysDepth] will always return true.<br />
+		[page:Materials LessDepth] will return true if the incoming pixel Z-depth is less than the current buffer Z-depth.<br />
+		[page:Materials LessEqualDepth] is the default and will return true if the incoming pixel Z-depth is less than or equal to the current buffer Z-depth.<br />
+		[page:Materials GreaterEqualDepth] will return true if the incoming pixel Z-depth is greater than or equal to the current buffer Z-depth.<br />
+		[page:Materials GreaterDepth] will return true if the incoming pixel Z-depth is greater than the current buffer Z-depth.<br />
+		[page:Materials NotEqualDepth] will return true if the incoming pixel Z-depth is equal to the current buffer Z-depth.<br />
+		</div>
+
+		<h2>Texture Combine Operations</h2>
+		<code>
+		THREE.MultiplyOperation
+		THREE.MixOperation
+		THREE.AddOperation
+		</code>
+		These define how the result of the surface's color is combined with the environment map (if present), for [page:MeshBasicMaterial.combine MeshBasicMaterial], [page:MeshLambertMaterial.combine MeshLambertMaterial] and [page:MeshPhongMaterial.combine MeshPhongMaterial]. <br />
+		[page:Constant MultiplyOperation] is the default and multiplies the environment map color with the surface color.<br />
+		[page:Constant MixOperation] uses reflectivity to blend between the two colors.<br />
+		[page:Constant AddOperation] adds the two colors.
+
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
+	</body>
+</html>

+ 78 - 0
docs/api/constants/Renderer.html

@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>WebGLRenderer Constants</h1>
+
+		<h2>Cull Face Modes</h2>
+		<code>
+		THREE.CullFaceNone
+		THREE.CullFaceBack
+		THREE.CullFaceFront
+		THREE.CullFaceFrontBack
+		</code>
+		<div>
+		These are used by the WebGLRenderer's [page:WebGLRenderer.setFaceCulling setFaceCulling] method.<br /><br />
+		[page:constant CullFaceNone] disables face culling.<br />
+		[page:constant CullFaceBack] culls back faces (default).<br />
+		[page:constant CullFaceFront] culls front faces.<br />
+		[page:constant CullFaceFrontBack] culls both front and back faces.
+		</div>
+
+		<h2>Front Face Direction</h2>
+		<code>
+		THREE.FrontFaceDirectionCW
+		THREE.FrontFaceDirectionCCW
+		</code>
+		<div>
+		These are used by the WebGLRenderer's [page:WebGLRenderer.setFaceCulling setFaceCulling] method.<br /><br />
+		[page:constant FrontFaceDirectionCW] sets the winding order for polygons to clockwise.<br />
+		[page:constant FrontFaceDirectionCW] sets the winding order for polygons to counter-clockwise (default).
+		</div>
+
+		<h2>Shadow Types</h2>
+		<code>
+		THREE.BasicShadowMap
+		THREE.PCFShadowMap
+		THREE.PCFSoftShadowMap
+		</code>
+		<div>
+		These define the WebGLRenderer's [page:WebGLRenderer.shadowMap.type shadowMap.type] property.<br /><br />
+
+		[page:constant BasicShadowMap] gives unfiltered shadow maps - fastest, but lowest quality.<br />
+		[page:constant PCFShadowMap] filters shadow maps using the Percentage-Closer Filtering (PCF) algorithm (default).<br />
+		[page:constant PCFSoftShadowMap] filters shadow maps using the Percentage-Closer Soft Shadows (PCSS) algorithm.
+		</div>
+
+		<h2>Tone Mapping</h2>
+		<code>
+		THREE.NoToneMapping
+		THREE.LinearToneMapping
+		THREE.ReinhardToneMapping
+		THREE.Uncharted2ToneMapping
+		THREE.CineonToneMapping
+		</code>
+		<div>
+		These define the WebGLRenderer's [page:WebGLRenderer.toneMapping toneMapping] property.
+		This is used to approximate the appearance of high dynamic range (HDR) on the
+		low dynamic range medium of a standard computer monitor or mobile device's screen.<br /><br />
+
+		[page:constant NoToneMapping] disables tone mapping.<br />
+		[page:constant LinearToneMapping] is the default.<br /><br />
+
+		See the [example:webgl_tonemapping WebGL / tonemapping] example.
+
+		</div>
+
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
+	</body>
+</html>

+ 267 - 50
docs/api/constants/Textures.html

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html lang="en">
 	<head>
-		<meta charset="utf-8" />
+		<meta charset="utf-8" />
 		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
@@ -10,87 +10,304 @@
 	<body>
 		<h1>Texture Constants</h1>
 
-		<h2>Operations</h2>
+		<h2>Mapping Modes</h2>
+		<code>
+		THREE.UVMapping
+		THREE.CubeReflectionMapping
+		THREE.CubeRefractionMapping
+		THREE.EquirectangularReflectionMapping
+		THREE.EquirectangularRefractionMapping
+		THREE.SphericalReflectionMapping
+		THREE.CubeUVReflectionMapping
+		THREE.CubeUVRefractionMapping
+		</code>
 		<div>
-		THREE.MultiplyOperation<br />
-		THREE.MixOperation<br />
-		THREE.AddOperation
+			These can also be accessed using:
 		</div>
+		<code>
+		THREE.TextureMappingUVMapping
+		THREE.TextureMapping.CubeReflectionMapping
+		THREE.TextureMapping.CubeRefractionMapping
+		THREE.TextureMapping.EquirectangularReflectionMapping
+		THREE.TextureMapping.EquirectangularRefractionMapping
+		THREE.TextureMapping.SphericalReflectionMapping
+		THREE.TextureMapping.CubeUVReflectionMapping
+		THREE.TextureMapping.CubeUVRefractionMapping
+		</code>
 
-		<h2>Mapping Modes</h2>
 		<div>
-		THREE.UVMapping<br />
-		THREE.CubeReflectionMapping<br />
-		THREE.CubeRefractionMapping<br />
-		THREE.EquirectangularReflectionMapping<br />
-		THREE.EquirectangularRefractionMapping<br />
-		THREE.SphericalReflectionMapping
+		These define the texture's mapping mode.<br />
+		[page:Constant UVMapping] is the default, and maps the texture using the mesh's UV coordinates.<br /><br />
+
+		The rest define environment mapping types.<br /><br />
+
+		[page:Constant CubeReflectionMapping] and [page:Constant CubeRefractionMapping] are for
+		use with a [page:CubeTexture CubeTexture], which is made up of six textures, one for each face of the cube.<br />
+		[page:Constant CubeReflectionMapping] is the default for a [page:CubeTexture CubeTexture]. <br /><br />
+
+		[page:Constant EquirectangularReflectionMapping] and [page:Constant EquirectangularRefractionMapping]
+		are for use with an equirectangular environment map.<br /><br />
+
+		[page:Constant SphericalReflectionMapping] is for use with a spherical reflection map.<br /><br />
+
+		See the [example:webgl_materials_envmaps materials / envmaps] example.
 		</div>
 
+
 		<h2>Wrapping Modes</h2>
-		<div>
-		THREE.RepeatWrapping<br />
-		THREE.ClampToEdgeWrapping<br />
+		<code>
+		THREE.RepeatWrapping
+		THREE.ClampToEdgeWrapping
 		THREE.MirroredRepeatWrapping
+		</code>
+		<div>
+			These can also be accessed using:
 		</div>
+		<code>
+		THREE.TextureWrapping.RepeatWrapping
+		THREE.TextureWrapping.ClampToEdgeWrapping
+		THREE.TextureWrapping.MirroredRepeatWrapping
+		</code>
+		<div>
+		These define the texture's [page:Texture.wrapS wrapS] and [page:Texture.wrapT wrapT] properties,
+		which define horizontal and vertical texture wrapping.<br /><br />
+
+		With [page:constant RepeatWrapping] the texture will simply repeat to infinity.<br /><br />
 
-		<h2>Filters</h2>
+		[page:constant ClampToEdgeWrapping] is the default.
+		The last pixel of the texture stretches to the edge of the mesh.<br /><br />
+
+		With [page:constant MirroredRepeatWrapping] the texture will repeats to infinity, mirroring on each repeat.<br />
+		</div>
+
+		<h2>Magnification Filters</h2>
+		<code>
+		THREE.NearestFilter
+		THREE.LinearFilter
+		</code>
 		<div>
-		THREE.NearestFilter<br />
-		THREE.NearestMipMapNearestFilter<br />
-		THREE.NearestMipMapLinearFilter<br />
-		THREE.LinearFilter<br />
-		THREE.LinearMipMapNearestFilter<br />
-		THREE.LinearMipMapLinearFilter
+			These can also be accessed using:
 		</div>
+		<code>
+		THREE.TextureFilter.NearestFilter
+		THREE.TextureFilter.LinearFilter
+		</code>
 
-		<h2>Data Types</h2>
 		<div>
-		THREE.UnsignedByteType<br />
-		THREE.ByteType<br />
-		THREE.ShortType<br />
-		THREE.UnsignedShortType<br />
-		THREE.IntType<br />
-		THREE.UnsignedIntType<br />
-		THREE.FloatType<br />
-		THREE.HalfFloatType
+		For use with a texture's [page:Texture.magFilter magFilter]	property,
+		these define the texture magnification function to be used when the pixel being textured maps to an
+		area less than or equal to one texture element (texel).<br /><br />
+
+		[page:constant NearestFilter] returns the value of the texture element that is nearest
+		(in Manhattan distance) to the specified texture coordinates.<br /><br />
+
+		[page:constant LinearFilter] is the default and returns the weighted average
+		of the four texture elements that are closest to the specified texture coordinates,
+		and can include items wrapped or repeated from other parts of a texture,
+		depending on the values of [page:Texture.wrapS wrapS] and [page:Texture.wrapT wrapT], and on the exact mapping.
 		</div>
 
-		<h2>Pixel Types</h2>
+		<h2>Minification Filters</h2>
+		<code>
+		THREE.NearestFilter
+		THREE.NearestMipMapNearestFilter
+		THREE.NearestMipMapLinearFilter
+		THREE.LinearFilter
+		THREE.LinearMipMapNearestFilter
+		THREE.LinearMipMapLinearFilter
+		</code>
 		<div>
-		THREE.UnsignedShort4444Type<br />
-		THREE.UnsignedShort5551Type<br />
-		THREE.UnsignedShort565Type
+			These can also be accessed using:
 		</div>
+		<code>
+		THREE.TextureFilter.NearestFilter
+		THREE.TextureFilter.NearestMipMapNearestFilter
+		THREE.TextureFilter.NearestMipMapLinearFilter
+		THREE.TextureFilter.LinearFilter
+		THREE.TextureFilter.LinearMipMapNearestFilter
+		THREE.TextureFilter.LinearMipMapLinearFilter
+		</code>
 
-		<h2>Pixel Formats</h2>
 		<div>
-		THREE.AlphaFormat<br />
-		THREE.RGBFormat<br />
-		THREE.RGBAFormat<br />
-		THREE.LuminanceFormat<br />
-		THREE.LuminanceAlphaFormat<br />
+		For use with a texture's [page:Texture.minFilter minFilter]	property, these define
+		the texture minifying function that is used whenever the pixel being textured maps
+		to an area greater than one texture element (texel).<br /><br />
+
+		In addition to [page:constant NearestFilter] and [page:constant LinearFilter],
+		the following four functions can be used for minification:<br /><br />
+
+		[page:constant NearestMipMapNearestFilter] chooses the mipmap that most closely
+		matches the size of the pixel being textured
+		and uses the [page:constant NearestFilter] criterion (the texel nearest to the
+		center of the pixel) to produce a texture value.<br /><br />
+
+		[page:constant NearestMipMapLinearFilter] chooses the two mipmaps that most closely
+		match the size of the pixel being textured and uses the [page:constant NearestFilter] criterion to produce
+		a texture value from each mipmap. The final texture value is a weighted average of those two values.<br /><br />
+
+		[page:constant LinearMipMapNearestFilter] chooses the mipmap that most closely matches
+		the size of the pixel being textured and uses the [page:constant LinearFilter] criterion
+		(a weighted average of the four texels that are closest to the center of the pixel)
+		to produce a texture value.<br /><br />
+
+		[page:constant LinearMipMapLinearFilter] is the default and chooses the two mipmaps
+		that most closely match the size of the pixel being textured and uses the [page:constant LinearFilter] criterion
+		to produce a texture value from each mipmap. The final texture value is a weighted average of those two values.<br /><br />
+
+		See the [example:webgl_materials_texture_filters materials / texture / filters] example.
+		</div>
+
+		<h2>Types</h2>
+		<code>
+		THREE.UnsignedByteType
+		THREE.ByteType
+		THREE.ShortType
+		THREE.UnsignedShortType
+		THREE.IntType
+		THREE.UnsignedIntType
+		THREE.FloatType
+		THREE.HalfFloatType
+		THREE.UnsignedShort4444Type
+		THREE.UnsignedShort5551Type
+		THREE.UnsignedShort565Type
+		THREE.UnsignedInt248Type
+		</code>
+		<div>
+		For use with a texture's [page:Texture.type type]	property, which must correspond to the correct format. See below for details.<br /><br />
+
+		[page:constant UnsignedByteType] is the default.
+		</div>
+
+		<h2>Formats</h2>
+		<code>
+		THREE.AlphaFormat
+		THREE.RGBFormat
+		THREE.RGBAFormat
+		THREE.LuminanceFormat
+		THREE.LuminanceAlphaFormat
 		THREE.RGBEFormat
+		THREE.DepthFormat
+		THREE.DepthStencilFormat
+		</code>
+		<div>
+		For use with a texture's [page:Texture.format format]	property, these define
+		how elements of a 2d texture, or *texels*, are read by shaders.<br /><br />
+
+		[page:constant AlphaFormat] discards the red, green and blue components and reads just the alpha component.
+		The [page:Texture.type type] must be [page:constant UnsignedByteType].<br /><br />
+
+		[page:constant RGBFormat] discards the alpha components and reads the red, green and blue components.
+		The [page:Texture.type type] must be [page:constant UnsignedByteType] or [page:constant UnsignedShort565Type].<br /><br />
+
+		[page:constant RGBAFormat] is the default and reads the red, green, blue and alpha components.
+		The [page:Texture.type type] must be [page:constant UnsignedByteType], [page:constant UnsignedShort4444Type] or [page:constant THREE.UnsignedShort5551Type].<br /><br />
+
+		[page:constant LuminanceFormat] reads each element as a single luminance component.
+		 This is then converted to a floating point, clamped to the range [0,1], and then assembled
+		 into an RGBA element by placing the luminance value in the red, green and blue channels,
+		 and attaching 1.0 to the alpha channel. The [page:Texture.type type] must be [page:constant UnsignedByteType].<br /><br />
+
+		[page:constant LuminanceAlphaFormat] reads each element as a luminance/alpha double.
+		The same process occurs as for the [page:constant LuminanceFormat], except that the
+		alpha channel may have values other than *1.0*. The [page:Texture.type type] must be [page:constant UnsignedByteType].<br /><br />
+
+		[page:constant RGBEFormat] is identical to [page:constant RGBAFormat].<br /><br />
+
+		[page:constant DepthFormat] reads each element as a single depth value, converts it to floating point, and clamps to the range [0,1].
+		The [page:Texture.type type] must be [page:constant UnsignedIntType] or [page:constant UnsignedShortType].
+		This is the default for [page:DepthTexture DepthTexture].<br /><br />
+
+		[page:constant DepthStencilFormat] reads each element is a pair of depth and stencil values.
+		The depth component of the pair is interpreted as in [page:constant DepthFormat].
+		The stencil component is interpreted based on the depth + stencil internal format.
+		The [page:Texture.type type] must be [page:constant UnsignedInt248Type].<br /><br />
+
+		Note that the texture must have the correct [page:Texture.type type] set, as described above.
+		See <a href="https://developer.mozilla.org/en/docs/Web/API/WebGLRenderingContext/texImage2D">this page</a> for details.
 		</div>
 
 		<h2>DDS / ST3C Compressed Texture Formats</h2>
-		<div>
-		THREE.RGB_S3TC_DXT1_Format<br />
-		THREE.RGBA_S3TC_DXT1_Format<br />
-		THREE.RGBA_S3TC_DXT3_Format<br />
+		<code>
+		THREE.RGB_S3TC_DXT1_Format
+		THREE.RGBA_S3TC_DXT1_Format
+		THREE.RGBA_S3TC_DXT3_Format
 		THREE.RGBA_S3TC_DXT5_Format
+		</code>
+		<div>
+		For use with a [page:CompressedTexture CompressedTexture]'s [page:Texture.format format]	property,
+		these require support for the
+		<a href="https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/">WEBGL_compressed_texture_s3tc</a>
+		extension. <br />
+		According to <a href="http://webglstats.com/">WebglStats</a>, as of February 2016
+		over 80% of WebGL enabled devices support this extension.<br /><br />
+
+		There are four <a href="https://en.wikipedia.org/wiki/S3_Texture_Compression">S3TC</a> formats available via this extension. These are:<br />
+		[page:constant RGB_S3TC_DXT1_Format]: A DXT1-compressed image in an RGB image format.<br />
+		[page:constant RGBA_S3TC_DXT1_Format]: A DXT1-compressed image in an RGB image format with a simple on/off alpha value.<br />
+		[page:constant RGBA_S3TC_DXT3_Format]: A DXT3-compressed image in an RGBA image format. Compared to a 32-bit RGBA texture, it offers 4:1 compression.<br />
+		[page:constant RGBA_S3TC_DXT5_Format]: A DXT5-compressed image in an RGBA image format. It also provides a 4:1 compression, but differs to the DXT3 compression in how the alpha compression is done.<br />
 		</div>
 
 		<h2>PVRTC Compressed Texture Formats</h2>
-		<div>
-		THREE.RGB_PVRTC_4BPPV1_Format<br />
-		THREE.RGB_PVRTC_2BPPV1_Format<br />
-		THREE.RGBA_PVRTC_4BPPV1_Format<br />
+		<code>
+		THREE.RGB_PVRTC_4BPPV1_Format
+		THREE.RGB_PVRTC_2BPPV1_Format
+		THREE.RGBA_PVRTC_4BPPV1_Format
 		THREE.RGBA_PVRTC_2BPPV1_Format
+		</code>
+		<div>
+		For use with a [page:CompressedTexture CompressedTexture]'s [page:Texture.format format]	property,
+		these require support for the <a href="https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/">WEBGL_compressed_texture_pvrtc</a>
+		extension. <br />
+		According to <a href="http://webglstats.com/">WebglStats</a>, as of February 2016
+		less than 8% of WebGL enabled devices support this extenstion.
+		PVRTC is typically only available on mobile devices with PowerVR chipsets,
+		which are mainly Apple devices.<br /><br />
+
+		There are four <a href="https://en.wikipedia.org/wiki/PVRTC">PVRTC</a> formats available via this extension. These are:<br />
+		[page:constant RGB_PVRTC_4BPPV1_Format]: RGB compression in 4-bit mode. One block for each 4×4 pixels.<br />
+		[page:constant RGB_PVRTC_2BPPV1_Format]: RGB compression in 2-bit mode. One block for each 8×4 pixels.<br />
+		[page:constant RGBA_PVRTC_4BPPV1_Format]: RGBA compression in 4-bit mode. One block for each 4×4 pixels.<br />
+		[page:constant RGBA_PVRTC_2BPPV1_Format]: RGBA compression in 2-bit mode. One block for each 8×4 pixels.<br />
+		</div>
+
+		<h2>ETC Compressed Texture Format</h2>
+		<code>
+		THREE.RGB_ETC1_Format
+		</code>
+		<div>
+		For use with a [page:CompressedTexture CompressedTexture]'s [page:Texture.format format]	property,
+		these require support for the <a href="https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc1/">WEBGL_compressed_texture_etc1</a>
+		extension. <br />
+		According to <a href="http://webglstats.com/">WebglStats</a>, as of February 2016
+		just over 13% of WebGL enabled devices support this extenstion.<br /><br />
+		</div>
+
+		<h2>Encoding</h2>
+		<code>
+		THREE.LinearEncoding
+		THREE.sRGBEncoding
+		THREE.GammaEncoding
+		THREE.RGBEEncoding
+		THREE.LogLuvEncoding
+		THREE.RGBM7Encoding
+		THREE.RGBM16Encoding
+		THREE.RGBDEncoding
+		THREE.BasicDepthPacking
+		THREE.RGBADepthPacking
+		</code>
+		<div>
+		For use with a Texture's [page:Texture.encoding encoding]	property.<br /><br />
+
+		If the encoding type is changed after the texture has already been used by a material,
+		you will need to set [page:Material.needsUpdate Material.needsUpdate] to *true* to make the material recompile.<br /><br />
+
+		[page:constant LinearEncoding] is the default.
+		Values other than this are only valid for a material's map, envMap and emissiveMap.
 		</div>
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/Three.js src/Three.js]
+		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
 	</body>
 </html>

+ 150 - 45
docs/api/core/BufferAttribute.html

@@ -11,102 +11,207 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-		This class stores data for an attribute associated with a [page:BufferGeometry]. See that page for details and a usage example. This class is used to store builtin attributes such as vertex position, normals, color, etc., but can also be used in your code to store custom attributes in a [page:BufferGeometry].
+		This class stores data for an attribute (such as vertex positions, face indices, normals,
+		colors, UVs, and any custom attributes ) associated with a [page:BufferGeometry], which allows
+		for more efficient passing of data to the GPU. See that page for details and a usage example.<br /><br />
+
+		Data is stored as vectors of any length (defined by [page:BufferAttribute.itemSize itemSize]),
+		and in general in the methods outlined below if passing in an index, this is automatically
+		multiplied by the vector length.
 		</div>
 
 		<h2>Constructor</h2>
-		<h3>[name]([page:TypedArray array], [page:Integer itemSize], [page:Boolean normalized])</h3>
+		<h3>[name]( [page:TypedArray array], [page:Integer itemSize], [page:Boolean normalized] )</h3>
 		<div>
-		Instantiates this attribute with data from the associated buffer.
-		itemSize gives the number of values of the array that should be associated with a particular vertex. normalized indicates how the underlying data in the buffer maps to the values in the GLSL shader code. 
+		[page:TypedArray array] -- Must be a [link:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/TypedArray TypedArray].
+		Used to instantiate the buffer. <br />
+		This array should have
+	 	<code>itemSize * numVertices</code>
+		elements, where numVertices is the number of vertices in the associated [page:BufferGeometry BufferGeometry].<br /><br />
+
+
+		[page:Integer itemSize] --  the number of values of the array that should be associated with
+		a particular vertex. For instance, if this
+		attribute is storing a 3-component vector (such as a position, normal, or color), then itemSize should be 3.
+		<br /><br />
+
+		[page:Boolean normalized] -- (optional) Indicates how the underlying data in the buffer maps
+		to the values in the GLSL code. For instance, if [page:TypedArray array] is an instance of
+		UInt16Array, and [page:Boolean normalized] is true, the values 0 - +65535 in the array
+		 data will be mapped to 0.0f - +1.0f in the GLSL attribute. An Int16Array (signed) would map
+		 from -32767 - +32767  to -1.0f - +1.0f. If [page:Boolean normalized] is false, the values
+		 will be converted to floats which contain the exact value, i.e. 32767 becomes 32767.0f.
 		</div>
 
 		<h2>Properties</h2>
 
 		<h3>[property:TypedArray array]</h3>
 		<div>
-		Stores the data associated with this attribute. This element should have <code>itemSize * numVertices</code> elements, where numVertices is the number of vertices in the associated [page:BufferGeometry geometry].  [page:TypedArray array] can be an instance of UInt8Array, Int8Array, UInt16Array, Int16Array, or Float32Array.
+		The [page:TypedArray array] holding data stored in the buffer.
 		</div>
 
-		<h3>[property:Integer itemSize]</h3>
+		<h3>[property:Integer count]</h3>
 		<div>
-		Records how many items of the array are associated with a particular vertex. For instance, if this
-		attribute is storing a 3-component vector (such as a position, normal, or color), then itemSize should be 3.
+		Stores the [page:BufferAttribute.array array]'s length divided by the [page:BufferAttribute.itemSize itemSize].<br /><br />
+
+		If the buffer is storing a 3-component vector (such as a position, normal, or color),
+		then this will count the number of such vectors stored.
 		</div>
 
-		<h3>[property:Integer length]</h3>
+		<h3>[property:Boolean dynamic]</h3>
 		<div>
-		Gives the total number of elements in the array.
+			Whether the buffer is dynamic or not. Default is *false*.<br />
+
+			If false, the GPU is informed that contents of the buffer are likely to be used often and not change often.
+			This corresponds to the  [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData gl.STATIC_DRAW] flag.<br />
+			if true, the GPU is informed that contents of the buffer are likely to be used often and change often.
+			This corresponds to the  [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData gl.DYNAMIC_DRAW] flag.
+		</div>
+
+		<h3>[property:Boolean isBufferAttribute]</h3>
+		<div>
+			Used to check whether this or derived classes are BufferAttributes. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
 		</div>
 
+		<h3>[property:Integer itemSize]</h3>
+		<div>The length of vectors that are being stored in the [page:BufferAttribute.array array].</div>
+
+
 		<h3>[property:Boolean needsUpdate]</h3>
 		<div>
-		Flag to indicate that this attribute has changed and should be re-send to the GPU. Set this to true when you modify the value of the array.
+		Flag to indicate that this attribute has changed and should be re-sent to the GPU.
+		Set this to true when you modify the value of the array.<br /><br />
+
+		Setting this to true also increments the [page:BufferAttribute.version version].
 		</div>
 
 		<h3>[property:Boolean normalized]</h3>
 		<div>
-		Indicates how the underlying data in the buffer maps to the values in the GLSL code. For instance, if [page:TypedArray array] is an instance of UInt16Array, and [page:Boolean normalized] is true, the values 0 - +65535 in the array data will be mapped to 0.0f - +1.0f in the GLSL attribute. An Int16Array (signed) would map from -32767 - +32767  to -1.0f - +1.0f. If [page:Boolean normalized] is false, the values will be converted to floats which contain the exact value, i.e. 32767 becomes 32767.0f.
+		Indicates how the underlying data in the buffer maps to the values in the GLSL shader code.
+		See the constructor above for details.
 		</div>
 
-		<h3>[property:Integer version]</h3>
+		<h3>[property:Function onUploadCallback]</h3>
 		<div>
-		A version number, incremented every time the needsUpdate property is set to true.
+		A callback function that is executed after the Renderer has transfered the attribute array data to the GPU.
 		</div>
 
+		<h3>[property:Object updateRange]</h3>
+		<div>Object containing:<br />
+			[page:Integer offset]: Default is *0*. Position at whcih to start update.<br />
+			[page:Integer count]: Default is *-1*, which means don't use update ranges. <br /><br />
 
-		<h2>Methods</h2>
+			This can be used to only update some components of stored vectors (for example, just the component
+			related to color).
+		</div>
 
-		<h3>[method:null copyAt] ( [page:Integer index1], attribute, [page:Integer index2] ) </h3>
+		<h3>[property:String uuid]</h3>
 		<div>
-		Copies itemSize values in the array from the vertex at index2 to the vertex at index1.
+		[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] of this object instance.
+		This gets automatically assigned and this shouldn't be edited.
 		</div>
 
-		<h3>[method:null set] ( [page:Array value] ) </h3>
-		<div>
-		Sets the associated array with values from the passed array.
+		<h3>[property:Integer version]</h3>
+		<div>A version number, incremented every time the [page:BufferAttribute.needsUpdate needsUpdate] property is set to true.</div>
+
+
+		<h2>Methods</h2>
+
+		<h3>[method:BufferAttribute clone]() </h3>
+		<div>Return a copy of this bufferAttribute.</div>
+
+		<h3>[method:BufferAttribute copyArray]( array ) </h3>
+		<div>Copy the array given here (which can be a normal array or TypedArray) into
+			[page:BufferAttribute.array array].<br /><br />
+
+			See [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set TypedArray.set]
+			for notes on requirements if copying a TypedArray.
 		</div>
 
-		<h3>[method:null setX]( index, x ) </h3>
+		<h3>[method:null copyAt] ( [page:Integer index1], [page:BufferAttribute bufferAttribute], [page:Integer index2] ) </h3>
+		<div>Copy a vector from bufferAttribute[index2] to [page:BufferAttribute.array array][index1].</div>
+
+		<h3>[method:BufferAttribute copyColorsArray]( colors ) </h3>
+		<div>Copy an array representing RGB color values into [page:BufferAttribute.array array].</div>
+
+		<h3>[method:BufferAttribute copyIndicesArray]( indices ) </h3>
+		<div>Copy an array representing [page:Face3] indices into [page:BufferAttribute.array array].</div>
+
+		<h3>[method:BufferAttribute copyVector2sArray]( vectors ) </h3>
+		<div>Copy an array representing [page:Vector2]s into [page:BufferAttribute.array array].</div>
+
+		<h3>[method:BufferAttribute copyVector3sArray]( vectors ) </h3>
+		<div>Copy an array representing [page:Vector3]s into [page:BufferAttribute.array array].</div>
+
+		<h3>[method:BufferAttribute copyVector4sArray]( vectors ) </h3>
+		<div>Copy an array representing [page:Vector4]s into [page:BufferAttribute.array array].</div>
+
+		<h3>[method:Number getX]( index ) </h3>
+		<div>Returns the x component of the vector at the given index.</div>
+
+		<h3>[method:Number getY]( index ) </h3>
+		<div>Returns the y component of the vector at the given index.</div>
+
+		<h3>[method:Number getZ]( index ) </h3>
+		<div>Returns the z component of the vector at the given index.</div>
+
+		<h3>[method:Number getW]( index ) </h3>
+		<div>Returns the w component of the vector at the given index.</div>
+
+		<h3>[method:null onUpload]( [page:Function callback] ) </h3>
 		<div>
-		Sets the value of the array at <code>index * itemSize</code> to x
+		Sets the value of the onUploadCallback property.<br /><br />
+
+		In the [example:webgl_buffergeometry WebGL / Buffergeometry] this is used to free memory
+		after the buffer has been	transfered to the GPU.
 		</div>
 
-		<h3>[method:null setY]( index, y ) </h3>
+		<h3>[method:null set] ( [page:Array value], [page:Integer offset] ) </h3>
 		<div>
-		Sets the value of the array at <code>index * itemSize + 1</code> to y
+		value -- an [page:Array] or [page:TypedArray] from which to copy values. <br />
+		offset -- (optional) index of the [page:BufferAttribute.array array] at which to start copying.<br /><br />
+
+		Calls	[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set TypedArray.set]( [page:Array value], [page:Integer offset] )
+		on the [page:BufferAttribute.array array].<br /><br />
+
+		In particular, see that page for requirements on [page:Array value]
+		being a [page:TypedArray].
 		</div>
 
-		<h3>[method:null setZ]( index, z ) </h3>
+		<h3>[method:null setArray] ( [page:TypedArray array] ) </h3>
 		<div>
-		Sets the value of the array at <code>index * itemSize + 2</code> to z
+		[page:BufferAttribute.array array] to the TypedArray passed in here.<br /><br />
+
+		After setting the array, [page:BufferAttribute.needsUpdate needsUpdate] should be set to true.
 		</div>
 
+		<h3>[method:BufferAttribute setDynamic] ( [page:Boolean value] ) </h3>
+		<div>Set [page:BufferAttribute.dynamic dynamic] to value.</div>
+
+		<h3>[method:null setX]( index, x ) </h3>
+		<div>Sets the x component of the vector at the given index.</div>
+
+		<h3>[method:null setY]( index, y ) </h3>
+		<div>Sets the y component of the vector at the given index.</div>
+
+		<h3>[method:null setZ]( index, z ) </h3>
+		<div>Sets the z component of the vector at the given index.</div>
+
+		<h3>[method:null setW]( index, w ) </h3>
+		<div>Sets the w component of the vector at the given index.</div>
+
 		<h3>[method:null setXY]( index, x, y ) </h3>
-		<div>
-		Sets the value of the array at <code>index * itemSize</code> to x and
-		sets the value of the array at <code>index * itemSize + 1</code> to y
-		</div>
+		<div>Sets the x and y components of the vector at the given index.</div>
 
 		<h3>[method:null setXYZ]( index, x, y, z ) </h3>
-		<div>
-		Sets the value of the array at <code>index * itemSize</code> to x,
-		the value of the array at <code>index * itemSize + 1</code> to y, and
-		the value of the array at <code>index * itemSize + 2</code> to z.
-		</div>
+		<div>Sets the x, y and z components of the vector at the given index.</div>
 
 		<h3>[method:null setXYZW]( index, x, y, z, w ) </h3>
-		<div>
-		Sets the value of the array at <code>index * itemSize</code> to x,
-		the value of the array at <code>index * itemSize + 1</code> to y,
-		the value of the array at <code>index * itemSize + 2</code> to z, and
-		the value of the array at <code>index * itemSize + 3</code> to w.
-		</div>
+		<div>Sets the x, y, z and w components of the vector at the given index.</div>
+
 
-		<h3>[method:BufferAttribute clone]() </h3>
-		<div>
-		Copies this attribute.
-		</div>
 
 		<h2>Source</h2>
 

+ 177 - 112
docs/api/core/BufferGeometry.html

@@ -14,15 +14,15 @@
 		<p>
 		This class is an efficient alternative to [page:Geometry], because it stores all data, including
 		vertex positions, face indices, normals, colors, UVs, and custom attributes within buffers; this
-		reduces the cost of passing all this data to the GPU.
+		reduces the cost of passing all this data to the GPU.<br />
 		This also makes BufferGeometry harder to work with than [page:Geometry]; rather than accessing
 		position data as [page:Vector3] objects, color data as [page:Color] objects, and so on, you have to
-		access the raw data from the appropriate [page:BufferAttribute attribute] buffer. This makes
+		access the raw data from the appropriate [page:BufferAttribute attribute buffer]. This makes
 		BufferGeometry best-suited for static objects where you don't need to manipulate the geometry much
 		after instantiating it.
 		</p>
 
-		<h3>Example</h3>
+		<h2>Example</h2>
 		<code>
 		var geometry = new THREE.BufferGeometry();
 		// create a simple square shape. We duplicate the top left and bottom right
@@ -42,16 +42,23 @@
 		var material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
 		var mesh = new THREE.Mesh( geometry, material );
 		</code>
-		<p>More examples: [example:webgl_buffergeometry Complex mesh with non-indexed faces], [example:webgl_buffergeometry_uint Complex mesh with indexed faces], [example:webgl_buffergeometry_lines Lines], [example:webgl_buffergeometry_lines_indexed Indexed Lines], [example:webgl_buffergeometry_custom_attributes_particles Particles], and [example:webgl_buffergeometry_rawshader Raw Shaders].</p>
+		<div>
+			[example:webgl_buffergeometry Complex mesh with non-indexed faces]<br />
+			[example:webgl_buffergeometry_uint Complex mesh with indexed faces]<br />
+			[example:webgl_buffergeometry_lines Lines]<br />
+			[example:webgl_buffergeometry_lines_indexed Indexed Lines]<br />
+			[example:webgl_buffergeometry_custom_attributes_particles Particles]<br />
+			[example:webgl_buffergeometry_rawshader Raw Shaders]
+		</div>
 
 
-		<h3>Accessing attributes</h3>
+		<h2>Accessing Attributes</h2>
 		<p>
-		WebGL stores data associated with individual vertices of a geometry in <emph>attributes</emph>.
+		WebGL stores data associated with individual vertices of a geometry in <em>attributes</em>.
 		Examples include the position of the vertex, the normal vector for the vertex, the vertex color,
 		and so on. When using [page:Geometry], the [page:WebGLRenderer renderer] takes care of wrapping
 		up this information into typed array buffers and sending this data to the shader. With
-		BufferGeometry, all of this data is stored in buffers associated with an individual attributes.
+		BufferGeometry, all of this data is stored in buffers associated with individual attributes.
 		This means that to get the position data associated with a vertex (for instance), you must call
 		[page:.getAttribute] to access the 'position' [page:BufferAttribute attribute], then access the individual
 		x, y, and z coordinates of the position.
@@ -59,27 +66,30 @@
 		<p>
 		The following attributes are set by various members of this class:
 		</p>
-		<h4>[page:BufferAttribute position] (itemSize: 3)</h4>
+		<h3>[page:BufferAttribute position] (itemSize: 3)</h3>
 		<div>
 		Stores the x, y, and z coordinates of each vertex in this geometry. Set by [page:.fromGeometry]().
 		</div>
 
-		<h4>[page:BufferAttribute normal] (itemSize: 3)</h4>
+		<h3>[page:BufferAttribute normal] (itemSize: 3)</h3>
 		<div>
 		Stores the x, y, and z components of the face or vertex normal vector of each vertex in this geometry.
 		Set by [page:.fromGeometry]().
 		</div>
 
-		<h4>[page:BufferAttribute color] (itemSize: 3)</h4>
+		<h3>[page:BufferAttribute color] (itemSize: 3)</h3>
 		<div>
 		Stores the red, green, and blue channels of vertex color of each vertex in this geometry.
 		Set by [page:.fromGeometry]().
 		</div>
 
-		<h4>[page:BufferAttribute index] (itemSize: 3)</h4>
-		Allows for vertices to be re-used across multiple triangles; this is called using "indexed triangles," and works much the same as it does in [page:Geometry]: each triangle is associated with the index of three vertices. This attribute therefore stores the index of each vertex for each triangular face.
+		<h3>[page:BufferAttribute index] (itemSize: 1)</h3>
+		Allows for vertices to be re-used across multiple triangles; this is called using "indexed triangles" and
+		works much the same as it does in [page:Geometry]: each triangle is associated with the indices of three vertices.
+		This attribute therefore stores the index of each vertex for each triangular face.
 
-		If this attribute is not set, the [page:WebGLRenderer renderer] assumes that each three contiguous positions represent a single triangle.
+		If this attribute is not set, the [page:WebGLRenderer renderer] assumes that each three contiguous
+		positions represent a single triangle.
 		</div>
 		<p>
 		In addition to the the built-in attributes, you can set your own custom attributes using the addAttribute method. With [page:Geometry], these attributes are set and stored on the [page:Material]. In BufferGeometry, the attributes are stored with the geometry itself. Note that you still need to set the attributes information on the material as well, but the value of each attribute is stored in the BufferGeometry.
@@ -97,149 +107,141 @@
 
 		<h2>Properties</h2>
 
-		<h3>[property:Integer id]</h3>
-		<div>
-		Unique number for this buffergeometry instance.
-		</div>
-
 		<h3>[property:Hashmap attributes]</h3>
 		<div>
 		This hashmap has as id the name of the attribute to be set and as value the [page:BufferAttribute buffer] to set it to.
 		Rather than accessing this property directly, use addAttribute and getAttribute to access attributes of this geometry.
 		</div>
 
-		<!--
- 		<h3>[property:Boolean dynamic]</h3>
+		<h3>[property:Box3 boundingBox]</h3>
 		<div>
-		When set, it holds certain buffers in memory to have faster updates for this object. When unset, it deletes those buffers and   saves memory.
-		</div> -->
+			Bounding box for the bufferGeometry, which can be calculated with
+			[page:.computeBoundingBox](). Default is *null*.
+		</div>
 
-		<h3>[property:Array drawcalls] (previously [property:Array offsets])</h3>
+		<h3>[property:Sphere boundingSphere]</h3>
 		<div>
-		For geometries that use indexed triangles, this Array can be used to split the object into multiple WebGL draw calls. Each draw call will draw some subset of the vertices in this geometry using the configured [page:Material shader]. This may be necessary if, for instance, you have more than 65535 vertices in your object.
-		Each element is an object of the form:
-		<code>{ start: Integer, count: Integer, index: Integer }</code>
-		where start specifies the index of the first vertex in this draw call, count specifies how many vertices are included, and index specifies an optional offset.
-
-		Use addDrawCall to add draw calls, rather than modifying this array directly.
+			Bounding sphere for the bufferGeometry, which can be calculated with
+			[page:.computeBoundingSphere](). Default is *null*.
 		</div>
 
-		<h3>[property:Box3 boundingBox]</h3>
+		<h3>[property:Object drawRange]</h3>
 		<div>
-		Bounding box.
-		<code>{ min: new THREE.Vector3(), max: new THREE.Vector3() }</code>
+			Used to determine what part of the geometry should be rendered. This should not
+			be set directly, instead use [page:.setDrawRange].<br />
+			Default is
+			<code>
+				{ start: 0, count: Infinity }
+			</code>
 		</div>
 
-		<h3>[property:Sphere boundingSphere]</h3>
+		<h3>[property:Array groups]</h3>
 		<div>
-		Bounding sphere.
-		<code>{ radius: float }</code>
+			Split the geometry into groups, each of which will be rendered in a separate WebGL draw call.
+			This allows a [page:MultiMaterial] to be used with the bufferGeometry.<br /><br />
+
+			Each group is an object of the form:
+			<code>{ start: Integer, count: Integer, materialIndex: Integer }</code>
+			where start specifies the index of the first vertex in this draw call, count specifies
+			how many vertices are included, and materialIndex specifies the [page:MultiMaterial] index to use.<br /><br />
+
+			Use [page:.addGroup] to add groups, rather than modifying this array directly.
 		</div>
 
-		<h2>Methods</h2>
 
-		<h3>[page:EventDispatcher EventDispatcher] methods are available on this class.</h3>
+		<!-- Note: groups used to be called drawCalls
 
-		<h3>[property:null addAttribute]( [page:String name], [page:BufferAttribute attribute] )</h3>
+		<h3>[property:Array drawcalls]</h3>
 		<div>
-		Adds an attribute to this geometry. Use this rather than the attributes property,
-		because an internal array of attributes is maintained to speed up iterating over
-		attributes.
-		</div>
+		For geometries that use indexed triangles, this Array can be used to split the object
+		into multiple WebGL draw calls. Each draw call will draw some subset of the vertices
+		in this geometry using the configured [page:Material shader]. This may be necessary if,
+		for instance, you have more than 65535 vertices in your object.
+		</div> -->
 
-		<h3>[method:null addDrawCall]( [page:Integer start], [page:Integer count], [page:Integer indexOffset] )</h3>
-		<div>
-		Adds a draw call to this geometry; see the [page:BufferGeometry.drawcalls drawcalls] property for details.
-		</div>
 
-		<h3>[method:null clearDrawCalls]( )</h3>
-		<div>
-		Clears all draw calls.
-		</div>
+		<h3>[property:Integer id]</h3>
+		<div>Unique number for this bufferGeometry instance.</div>
 
-		<h3>[method:null applyMatrix]( [page:Matrix4 matrix] )</h3>
+		<h3>[property:BufferAttribute index]</h3>
 		<div>
-		Bakes matrix transform directly into vertex coordinates.
+			See "Accessing Attributes" section above for a description of this property.
+			Default is *null*.
 		</div>
 
-		<h3>[method:null center] ()</h3>
+		<h3>[property:Boolean isBufferGeometry]</h3>
 		<div>
-		Center the geometry based on the bounding box.
-		</div>
+			Used to check whether this or derived classes are BufferGeometries. Default is *true*.<br /><br />
 
-		<h3>[method:BufferGeometry rotateX] ( [page:Float radians] )</h3>
-		<div>
-		Rotate the geometry about the X axis. This is typically done as a one time operation, and not during a loop
-    Use [page:Object3D.rotation] for typical real-time mesh rotation.
+			You should not change this, as it used internally for optimisation.
 		</div>
 
-		<h3>[method:BufferGeometry rotateY] ( [page:Float radians] )</h3>
-		<div>
-		Rotate the geometry about the Y axis. This is typically done as a one time operation, and not during a loop
-    Use [page:Object3D.rotation] for typical real-time mesh rotation.
-		</div>
+		<h3>[property:Integer MaxIndex]</h3>
+		<div>Maximum number of vertices allowed, set to *65535*.</div>
 
-		<h3>[method:BufferGeometry rotateZ] ( [page:Float radians] )</h3>
+		<h3>[property:Object morphAttributes]</h3>
 		<div>
-		Rotate the geometry about the Z axis. This is typically done as a one time operation, and not during a loop
-    Use [page:Object3D.rotation] for typical real-time mesh rotation.
+			Hashmap of [page:BufferAttribute]s holding details of the geometry's [page:Geometry.morphTargets morphTargets].
 		</div>
 
-		<h3>[method:BufferGeometry translate] ( [page:Float x], [page:Float y], [page:Float z] )</h3>
+		<h3>[property:String name]</h3>
 		<div>
-		Translate the geometry. This is typically done as a one time operation, and not during a loop
-    Use [page:Object3D.position] for typical real-time mesh translation.
+		Optional name for this bufferGeometry instance. Default is an empty string.
 		</div>
 
-		<h3>[method:BufferGeometry scale] ( [page:Float x], [page:Float y], [page:Float z] )</h3>
+		<h3>[property:String uuid]</h3>
 		<div>
-		Scale the geometry data. This is typically done as a one time operation, and not during a loop
-    Use [page:Object3D.scale] for typical real-time mesh scaling.
+		[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] of this object instance.
+		This gets automatically assigned and shouldn't be edited.
 		</div>
 
-		<h3>[method:BufferGeometry lookAt] ( [page:Vector3 vector] )</h3>
-		<div>
-		vector - A world vector to look at.<br />
-		</div>
-		<div>
-		Rotates the geometry to face point in space. This is typically done as a one time operation, and not during a loop
-    Use [page:Object3D.lookAt] for typical real-time mesh usage.
-		</div>
+		<h2>Methods</h2>
 
-		<h3>[method:BufferGeometry setFromObject] ( [page:Object3D object] )</h3>
+		<h3>[page:EventDispatcher EventDispatcher] methods are available on this class.</h3>
+
+		<h3>[property:null addAttribute]( [page:String name], [page:BufferAttribute attribute] )</h3>
 		<div>
-		Sets the attributes for this BufferGeometry from an [page:Object3D].
+		Adds an attribute to this geometry. Use this rather than the attributes property,
+		because an internal hashmap of [page:.attributes] is maintained to speed up iterating over
+		attributes.
 		</div>
 
-		<h3>[method:null computeVertexNormals]()</h3>
+		<h3>[method:null addGroup]( [page:Integer start], [page:Integer count], [page:Integer materialIndex] )</h3>
 		<div>
-		Computes vertex normals by averaging face normals.<br />
+			Adds a group to this geometry; see the [page:BufferGeometry.groups groups]
+			property for details.
 		</div>
 
+
+		<h3>[method:null applyMatrix]( [page:Matrix4 matrix] )</h3>
+		<div>Bakes matrix transform directly into vertex coordinates.</div>
+
+		<h3>[method:null center] ()</h3>
+		<div>Center the geometry based on the bounding box.</div>
+
+		<h3>[method:BufferGeometry clone]()</h3>
+		<div>Creates a clone of this BufferGeometry.</div>
+
+		<h3>[method:BufferGeometry copy]( [page:BufferGeometry bufferGeometry] )</h3>
+		<div>Copies another BufferGeometry to this BufferGeometry.</div>
+
+		<h3>[method:null clearGroups]( )</h3>
+		<div>Clears all groups.</div>
+
 		<h3>[method:null computeBoundingBox]()</h3>
 		<div>
-		Computes bounding box of the geometry, updating [page:Geometry Geometry.boundingBox] attribute.<br />
+		Computes bounding box of the geometry, updating [page:.boundingBox] attribute.<br />
 		Bounding boxes aren't computed by default. They need to be explicitly computed, otherwise they are *null*.
 		</div>
 
 		<h3>[method:null computeBoundingSphere]()</h3>
 		<div>
-		Computes bounding sphere of the geometry, updating [page:Geometry Geometry.boundingSphere] attribute.<br />
+		Computes bounding sphere of the geometry, updating [page:.boundingSphere] attribute.<br />
 		Bounding spheres aren't computed by default. They need to be explicitly computed, otherwise they are *null*.
 		</div>
 
-		<h3>[method:null computeOffsets] ( [page:Integer size] )</h3>
-		<div>
-		Compute the draw offset for large models by chunking the index buffer into chunks of 65k addressable vertices.
-		This method will effectively rewrite the index buffer and remap all attributes to match the new indices.
-		WARNING: This method will also expand the vertex count to prevent sprawled triangles across draw offsets.
-		size - Defaults to 65535 or 4294967296 if extension OES_element_index_uint supported, but allows for larger or smaller chunks.
-		</div>
-
-		<h3>[method:null merge]( [page:BufferGeometry bufferGeometry], [page:Integer offset] )</h3>
-		<div>
-		Merge in another BufferGeometry with an optional offset of where to start merging in.
-		</div>
+		<h3>[method:null computeVertexNormals]()</h3>
+		<div>Computes vertex normals by averaging face normals.</div>
 
 		<h3>[method:null dispose]()</h3>
 		<div>
@@ -247,42 +249,105 @@
 		You need to call this when you want the bufferGeometry removed while the application is running.
 		</div>
 
-		<h3>[method:null fromGeometry]( [page:Geometry] )</h3>
+		<h3>[method:BufferGeometry fromDirectGeometry]( [page:Geometry] )</h3>
 		<div>
-		Populates this BufferGeometry with data from a [page:Geometry] object.
+			Populates this BufferGeometry with data from a [page:DirectGeometry] object.<br /><br />
+
+			Note: [page:DirectGeometry] is mainly used as an intermediary object for converting between [page:Geometry]
+			and BufferGeometry.
 		</div>
 
+		<h3>[method:BufferGeometry fromGeometry]( [page:Geometry] )</h3>
+		<div>Populates this BufferGeometry with data from a [page:Geometry] object.</div>
+
 		<h3>[method:BufferAttribute getAttribute]( [page:String name] )</h3>
-		<div>
-		Returns the [page:BufferAttribute attribute] with the specified name.
-		</div>
+		<div>Returns the [page:BufferAttribute attribute] with the specified name.</div>
 
-		<h3>[method:BufferAttribute removeAttribute]( [page:String name] )</h3>
+		<h3>[method:BufferAttribute getIndex] ()</h3>
+		<div>Return the [page:.index] buffer.</div>
+
+		<h3>[method:BufferGeometry lookAt] ( [page:Vector3 vector] )</h3>
 		<div>
-		Removes the [page:BufferAttribute attribute] with the specified name.
+		vector - A world vector to look at.<br /><br />
+
+		Rotates the geometry to face a point in space. This is typically done as a one time operation, and not during a loop.
+		Use [page:Object3D.lookAt] for typical real-time mesh usage.
 		</div>
 
+		<h3>[method:null merge]( [page:BufferGeometry bufferGeometry], [page:Integer offset] )</h3>
+		<div>Merge in another BufferGeometry with an optional offset of where to start merging in.</div>
+
 		<h3>[method:null normalizeNormals]()</h3>
 		<div>
 		Every normal vector in a geometry will have a magnitude of 1.
 		This will correct lighting on the geometry surfaces.
 		</div>
 
-		<h3>[method:Object toJSON]()</h3>
+		<h3>[method:BufferAttribute removeAttribute]( [page:String name] )</h3>
+		<div>Removes the [page:BufferAttribute attribute] with the specified name.</div>
+
+		<h3>[method:BufferGeometry rotateX] ( [page:Float radians] )</h3>
 		<div>
-		Returns a raw object representation of the BufferGeometry.
+		Rotate the geometry about the X axis. This is typically done as a one time operation, and not during a loop.
+    Use [page:Object3D.rotation] for typical real-time mesh rotation.
 		</div>
 
-		<h3>[method:BufferGeometry clone]()</h3>
+		<h3>[method:BufferGeometry rotateY] ( [page:Float radians] )</h3>
 		<div>
-		Creates a clone of this BufferGeometry.
+		Rotate the geometry about the Y axis. This is typically done as a one time operation, and not during a loop.
+    Use [page:Object3D.rotation] for typical real-time mesh rotation.
 		</div>
 
-		<h3>[method:BufferGeometry copy]( [page:BufferGeometry bufferGeometry] )</h3>
+		<h3>[method:BufferGeometry rotateZ] ( [page:Float radians] )</h3>
+		<div>
+		Rotate the geometry about the Z axis. This is typically done as a one time operation, and not during a loop.
+    Use [page:Object3D.rotation] for typical real-time mesh rotation.
+		</div>
+
+		<h3>[method:BufferGeometry scale] ( [page:Float x], [page:Float y], [page:Float z] )</h3>
 		<div>
-		Copies another BufferGeometry to this BufferGeometry.
+		Scale the geometry data. This is typically done as a one time operation, and not during a loop.
+		Use [page:Object3D.scale] for typical real-time mesh scaling.
 		</div>
 
+		<h3>[method:null setIndex] ( [page:BufferAttribute index] )</h3>
+		<div>Set the [page:.index] buffer.</div>
+
+		<h3>[method:null setDrawRange] ( [page:Integer start], [page:Integer count] )</h3>
+		<div>Set the [page:.drawRange] buffer. See that property for details.</div>
+
+		<h3>[method:BufferGeometry setFromObject] ( [page:Object3D object] )</h3>
+		<div>Sets the attributes for this BufferGeometry from an [page:Object3D].</div>
+
+		<h3>[method:Object toJSON]()</h3>
+		<div>Returns a JSON object representation of the BufferGeometry.</div>
+
+		<h3>[method:BufferGeometry toNonIndexed]()</h3>
+		<div>Return a non-index version of an indexed BufferGeometry.</div>
+
+		<h3>[method:BufferGeometry translate] ( [page:Float x], [page:Float y], [page:Float z] )</h3>
+		<div>
+		Translate the geometry. This is typically done as a one time operation, and not during a loop.
+    Use [page:Object3D.position] for typical real-time mesh translation.
+		</div>
+
+		<h3>[method:BufferGeometry updateFromObject] ( [page:Object3D object] )</h3>
+		<div>Updates the attributes for this BufferGeometry from an [page:Object3D].</div>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 		<h2>Source</h2>

+ 18 - 14
docs/api/core/Clock.html

@@ -10,7 +10,10 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">Object for keeping track of time.</div>
+		<div class="desc">
+		Object for keeping track of time. This uses <a href="https://developer.mozilla.org/en-US/docs/Web/API/Performance/now">performance.now()</a>
+		if it is available, otherwise it reverts to the less accurate <a href="https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/now">Date.now()</a>.
+		</div>
 
 
 		<h2>Constructor</h2>
@@ -18,38 +21,36 @@
 
 		<h3>[name]( [page:Boolean autoStart] )</h3>
 		<div>
-		autoStart — Automatically start the clock. Default is true.
+		autoStart — (optional) whether to automatically start the clock. Default is true.
 		</div>
 
 		<h2>Properties</h2>
 
 		<h3>[property:Boolean autoStart]</h3>
 		<div>
-		If set, starts the clock automatically when the first update is called.
+		If set, starts the clock automatically when the first update is called. Default is true.
 		</div>
 
 		<h3>[property:Float startTime]</h3>
 		<div>
-		When the clock is running, It holds the start time of the clock. <br />
-		This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
+		Holds the time at which the clock's [page:Clock.start start] method was last called.
  		</div>
 
 
 		<h3>[property:Float oldTime]</h3>
 		<div>
-		When the clock is running, It holds the previous time from a update.<br />
-		This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
+		Holds the time at which the clock's [page:Clock.start start], [page:Clock.getElapsedTime getElapsedTime] or [page:Clock.getDelta getDelta]
+		methods were last called.
  		</div>
 
 		<h3>[property:Float elapsedTime]</h3>
 		<div>
-		When the clock is running, It holds the time elapsed between the start of the clock to the previous update.<br />
-		This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
+		Keeps track of the total time that the clock has been running.
  		</div>
 
 		<h3>[property:Boolean running]</h3>
 		<div>
-		This property keeps track whether the clock is running or not.
+		Whether the clock is running or not.
  		</div>
 
 
@@ -57,22 +58,25 @@
 
 		<h3>[method:null start]()</h3>
 		<div>
-		Starts clock.
+		Starts clock. Also sets the [page:Clock.startTime startTime] and [page:Clock.oldTime oldTime]
+		to the current time, sets [page:Clock.elapsedTime elapsedTime] to *0* and [page:Clock.running running] to *true*.
 		</div>
 
 		<h3>[method:null stop]()</h3>
 		<div>
-		Stops clock.
+		Stops clock and sets [page:Clock.oldTime oldTime] to the current time.
 		</div>
 
 		<h3>[method:Float getElapsedTime]()</h3>
 		<div>
-		Get the seconds passed since the clock started.
+		Get the seconds passed since the clock started and sets [page:Clock.oldTime oldTime] to the current time.<br />
+		If [page:Clock.autoStart autoStart] is *true* and the clock is not running, also starts the clock.
 		</div>
 
 		<h3>[method:Float getDelta]()</h3>
 		<div>
-		Get the seconds passed since the last call to this method.
+		Get the seconds passed since the time [page:Clock.oldTime oldTime] was set and sets [page:Clock.oldTime oldTime] to the current time.<br />
+		If [page:Clock.autoStart autoStart] is *true* and the clock is not running, also starts the clock.
 		</div>
 
 

+ 132 - 0
docs/api/core/DirectGeometry.html

@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<div class="desc">
+			This class is used internally to convert from [page:Geometry] to [page:BufferGeometry].
+		</div>
+
+
+
+		<h2>Constructor</h2>
+
+
+		<h3>[name]()</h3>
+		<div>This creates a new [name].</div>
+
+
+		<h2>Properties</h2>
+
+		<h3>[property:Integer id]</h3>
+		<div>Unique number for this [name] instance.</div>
+
+		<h3>[property:String name]</h3>
+		<div>Optional name. Default is the empty string.</div>
+
+		<h3>[property:Array type]</h3>
+		<div>String 'DirectGeometry'.</div>
+
+		<h3>[property:Array indices]</h3>
+		<div>Initialiased as an empty array, this is populated by [page:.fromGeometry]().</div>
+
+		<h3>[property:Array vertices]</h3>
+		<div>Initialiased as an empty array, this is populated by [page:.fromGeometry]().</div>
+
+		<h3>[property:Array normals]</h3>
+		<div>Initialiased as an empty array, this is populated by [page:.fromGeometry]().</div>
+
+		<h3>[property:Array colors]</h3>
+		<div>Initialiased as an empty array, this is populated by [page:.fromGeometry]().</div>
+
+		<h3>[property:Array uvs]</h3>
+		<div>Initialiased as an empty array, this is populated by [page:.fromGeometry]().</div>
+
+		<h3>[property:Array uvs2]</h3>
+		<div>Initialiased as an empty array, this is populated by [page:.fromGeometry]().</div>
+
+		<h3>[property:Array groups]</h3>
+		<div>Initialiased as an empty array, this is populated by [page:.fromGeometry]().</div>
+
+		<h3>[property:Array morphTargets]</h3>
+		<div>Initialiased as an empty array, this is populated by [page:.fromGeometry]().</div>
+
+		<h3>[property:Array skinWeights]</h3>
+		<div>Initialiased as an empty array, this is populated by [page:.fromGeometry]().</div>
+
+		<h3>[property:Array skinIndices]</h3>
+		<div>Initialiased as an empty array, this is populated by [page:.fromGeometry]().</div>
+
+		<h3>[property:Box3 boundingBox]</h3>
+		<div>
+			Bounding box for the bufferGeometry, which can be calculated with
+			[page:.computeBoundingBox](). Default is *null*.
+		</div>
+
+		<h3>[property:Sphere boundingSphere]</h3>
+		<div>
+			Bounding sphere for the bufferGeometry, which can be calculated with
+			[page:.computeBoundingSphere](). Default is *null*.
+		</div>
+
+		<h3>[property:Boolean verticesNeedUpdate]</h3>
+		<div>Default is false.</div>
+
+		<h3>[property:Boolean normalsNeedUpdate]</h3>
+		<div>Default is false.</div>
+
+		<h3>[property:Boolean verticesNeedUpdate]</h3>
+		<div>Default is false.</div>
+
+		<h3>[property:Boolean colorsNeedUpdate]</h3>
+		<div>Default is false.</div>
+
+		<h3>[property:Boolean uvsNeedUpdate]</h3>
+		<div>Default is false.</div>
+
+		<h3>[property:Boolean groupsNeedUpdate]</h3>
+		<div>Default is false.</div>
+
+
+		<h2>Methods</h2>
+
+		<h3>[page:EventDispatcher EventDispatcher] methods are available on this class.</h3>
+
+		<h3>[property:null computeBoundingBox](  )</h3>
+		<div>
+		 See [page:Geometry.computeBoundingBox].
+		</div>
+
+		<h3>[property:null computeBoundingSphere](  )</h3>
+		<div>
+		 See [page:Geometry.computeBoundingSphere].
+		</div>
+
+		<h3>[property:null computeGroups]( [page:Geometry geometry] )</h3>
+		<div>
+			Compute the parts of the geometry that have different materialIndex.
+			See [page:BufferGeometry.groups].
+		</div>
+
+		<h3>[method:null dispose]()</h3>
+		<div>
+		Disposes the object from memory. <br />
+		You need to call this when you want the directGeometry removed while the application is running.
+		</div>
+
+		<h3>[property:null fromGeometry]( [page:Geometry geometry] )</h3>
+		<div>Pass in a [page:Geometry] instance for conversion.</div>
+
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 36 - 3
docs/api/core/EventDispatcher.html

@@ -10,11 +10,44 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">JavaScript events for custom objects.<br />
-		<a href="https://github.com/mrdoob/eventdispatcher.js">https://github.com/mrdoob/eventdispatcher.js</a></div>
+		<div class="desc">
+			JavaScript events for custom objects.<br />
+			[link:https://github.com/mrdoob/eventdispatcher.js Eventdispatcher on GitHub]
+		</div>
 
-		<h2>Constructor</h2>
+		<h2>Example</h2>
+
+		<code>
+// Adding events to a custom object
+
+var Car = function () {
+
+    this.start = function () {
+
+        this.dispatchEvent( { type: 'start', message: 'vroom vroom!' } );
+
+    };
+
+};
+
+// Mixin the EventDispatcher.prototype with the custom object prototype
 
+Object.assign( Car.prototype, EventDispatcher.prototype );
+
+// Using events with the custom object
+
+var car = new Car();
+
+car.addEventListener( 'start', function ( event ) {
+
+    alert( event.message );
+
+} );
+
+car.start();
+		</code>
+
+		<h2>Constructor</h2>
 
 		<h3>[name]()</h3>
 		<div>

+ 59 - 17
docs/api/core/Face3.html

@@ -11,15 +11,44 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-		Triangle face.
+		Triangular face used in [page:Geometry]. These are created automatically for all
+		standard geometry types, however if you are building a custom geometry you will have to
+		create them manually.
 		</div>
 
 
-		<h2>Example</h2>
+		<h2>Examples</h2>
 
-		<code>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 );</code>
+		<div>[example:misc_ubiquity_test ubiquity / test ]</div>
+		<div>[example:svg_sandbox svg / sandbox ]</div>
+		<div>[example:webgl_exporter_obj WebGL / exporter / obj ]</div>
+		<div>[example:webgl_shaders_vector WebGL / shaders / vector ]</div>
+
+
+		<code>
+var material = new THREE.MeshStandardMaterial( { color : 0x00cc00 } );
+
+//create a triangular geometry
+var geometry = new THREE.Geometry();
+geometry.vertices.push( new THREE.Vector3( -50, -50, 0 ) );
+geometry.vertices.push( new THREE.Vector3(  50, -50, 0 ) );
+geometry.vertices.push( new THREE.Vector3(  50,  50, 0 ) );
+
+//create a new face using vertices 0, 1, 2
+var normal = new THREE.Vector3( 0, 1, 0 ); //optional
+var color = new THREE.Color( 0xffaa00 ); //optional
+var materialIndex = 0; //optional
+var face = new THREE.Face3( 0, 1, 2, normal, color, materialIndex );
+
+//add the face to the geometry's faces array
+geometry.faces.push( face );
+
+//the face normals and vertex normals can be calculated automatically if not supplied above
+geometry.computeFaceNormals();
+geometry.computeVertexNormals();
+
+scene.add( new THREE.Mesh( geometry, material ) );
+	</code>
 
 
 		<h2>Constructor</h2>
@@ -28,10 +57,18 @@
 		<div>
 		a — Vertex A index.<br />
 		b — Vertex B index.<br />
-		c — Vertex C index.<br />
-		normal — Face normal or array of vertex normals.<br />
-		color — Face color or array of vertex colors.<br />
-		materialIndex — Material index.
+		c — Vertex C index.<br /><br />
+
+		normal — (optional) Face normal ([page:Vector3 Vector3]) or array of vertex normals.
+		If a single vector is passed in, this sets [page:.normal], otherwise if an array of three
+		vectors is passed in this sets [page:.vertexNormals]<br /><br />
+
+		color — (optional) Face [page:Color color] or array of vertex [page:Color colors].
+		If a single vector is passed in, this sets [page:.color], otherwise if an array of three
+		vectors is passed in this sets [page:.vertexColors]<br /><br />
+
+		materialIndex — (optional) which index of a [page:MultiMaterial] to associate
+		with the face.
 		</div>
 
 		<h2>Properties</h2>
@@ -53,36 +90,41 @@
 
 		<h3>[property:Vector3 normal]</h3>
 		<div>
-		Face normal.
+		Face normal - vector showing the direction of the Face3. If calculated automatically
+		(using [page:Geometry.computeFaceNormals]), this is the normalized cross product of two edges of the
+		triangle. Default is *(0, 0, 0)*.
 		</div>
 
 		<h3>[property:Color color]</h3>
 		<div>
-		Face color.
+		Face color - for this to be used a material's [page:Material.vertexColors vertexColors] property
+		must be set to [page:Materials THREE.FaceColors].
 		</div>
 
 		<h3>[property:Array vertexNormals]</h3>
 		<div>
-		Array of 3 vertex normals.
+		Array of 3 [page:Vector3 vertex normals].
 		</div>
 
 		<h3>[property:Array vertexColors]</h3>
 		<div>
-		Array of 3 vertex colors.
+		Array of 3 vertex colors - for these to be used a material's [page:Material.vertexColors vertexColors] property
+		must be set to [page:Materials THREE.VertexColors].
 		</div>
 
 
 		<h3>[property:Integer materialIndex]</h3>
 		<div>
-		Material index (points to [page:MultiMaterial MultiMaterial.materials]).
+		Material index (points to [page:MultiMaterial MultiMaterial.materials]). Default is *0*.
 		</div>
 
 		<h2>Methods</h2>
 
 		<h3>[method:Face3 clone]()</h3>
-		<div>
-		Creates a new clone of the Face3 object.
-		</div>
+		<div>Creates a new clone of the Face3 object.</div>
+
+		<h3>[method:Face3 copy]( [page:Face3 face3] )</h3>
+		<div>Copy the paramaters of another Face3 into this.</div>
 
 
 		<h2>Source</h2>

+ 143 - 116
docs/api/core/Geometry.html

@@ -11,13 +11,28 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-		Base class for geometries.<br />
-		A geometry holds all data necessary to describe a 3D model.
+		Base class for all geometries (but not for [page:BufferGeometry BufferGeometries]).<br />
+		This can also be used directly for building custom geometries.<br /><br />
+
+		Geometries are easier to work with than [page:BufferGeometry BufferGeometries] as they store
+		attributes such as vertices, faces, colors and so on directly (rather than in [page:BufferAttribute buffers]),
+		however they are generally slower.
 		</div>
 
 
 		<h2>Example</h2>
 
+		<div>[example:webgl_geometry_minecraft WebGL / geometry / minecraft ]</div>
+		<div>[example:webgl_geometry_minecraft_ao WebGL / geometry / minecraft / ao ]</div>
+		<div>[example:webgl_geometry_nurbs WebGL / geometry / nurbs ]</div>
+		<div>[example:webgl_geometry_spline_editor WebGL / geometry / spline / editor ]</div>
+		<div>[example:webgl_interactive_cubes_gpu WebGL / interactive / cubes / gpu ]</div>
+		<div>[example:webgl_interactive_lines WebGL / interactive / lines ]</div>
+		<div>[example:webgl_interactive_raycasting_points WebGL / interactive / raycasting / points ]</div>
+		<div>[example:webgl_interactive_voxelpainter WebGL / interactive / voxelpainter ]</div>
+		<div>[example:webgl_morphnormals WebGL / morphNormals ]</div>
+
+
 		<code>var geometry = new THREE.Geometry();
 
 		geometry.vertices.push(
@@ -42,48 +57,63 @@
 
 		<h2>Properties</h2>
 
-		<h3>[property:Integer id]</h3>
+		<h3>[property:Box3 boundingBox]</h3>
 		<div>
-		Unique number for this geometry instance.
+			Bounding box for the Geometry, which can be calculated with
+			[page:.computeBoundingBox](). Default is *null*.
 		</div>
 
-		<h3>[property:String name]</h3>
+		<h3>[property:Sphere boundingSphere]</h3>
 		<div>
-		Name for this geometry. Default is an empty string.
-		</div>
-
-		<h3>[property:Array vertices]</h3>
-		<div>
-		Array of [page:Vector3 vertices].<br />
-		The array of vertices holds every position of points in the model.<br />
-		To signal an update in this array, [page:Geometry Geometry.verticesNeedUpdate] needs to be set to true.
+			Bounding sphere for the Geometry, which can be calculated with
+			[page:.computeBoundingSphere](). Default is *null*.
 		</div>
 
 		<h3>[property:Array colors]</h3>
 		<div>
-		Array of vertex [page:Color colors], matching number and order of vertices.<br />
-		Used in [page:Points] and [page:Line].<br />
-		[page:Mesh Meshes] use per-face-use-of-vertex colors embedded directly in faces.<br />
+		Array of vertex [page:Color colors], matching number and order of vertices.<br /><br />
+
+		This is used by [page:Points] and [page:Line] and any classes derived from those such as [page:LineSegments] and various helpers.
+		[page:Mesh Meshes] use [page:Face3.vertexColors] instead of this.<br /><br />
+
 		To signal an update in this array, [page:Geometry Geometry.colorsNeedUpdate] needs to be set to true.
 		</div>
 
 		<h3>[property:Array faces]</h3>
 		<div>
-		Array of [page:Face3 triangles].<br />
-		The array of faces describe how each vertex in the model is connected with each other.<br />
+		Array of [page:Face3 faces].<br />
+		The array of faces describe how each vertex in the model is connected to form faces.
+		Additionally it holds information about face and vertex normals and colors.<br /><br />
 		To signal an update in this array, [page:Geometry Geometry.elementsNeedUpdate] needs to be set to true.
 		</div>
 
 		<h3>[property:Array faceVertexUvs]</h3>
 		<div>
-		Array of face [page:UV] layers.<br />
-		Each UV layer is an array of [page:UV]s matching the order and number of vertices in faces.<br />
+		Array of face [link:https://en.wikipedia.org/wiki/UV_mapping UV] layers, used for mapping textures onto the geometry.<br />
+		Each UV layer is an array of [page:UV]s matching the order and number of vertices in faces.<br /><br />
 		To signal an update in this array, [page:Geometry Geometry.uvsNeedUpdate] needs to be set to true.
 		</div>
 
+		<h3>[property:Integer id]</h3>
+		<div>Unique number for this geometry instance.</div>
+
+		<h3>[property:Boolean isGeometry]</h3>
+		<div>
+			Used to check whether this or derived classes are Geometries. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
+		</div>
+
+		<h3>[property:array lineDistances]</h3>
+		<div>
+		An array containing distances between vertices for Line geometries.
+		This is required for [page:LineSegments] / [page:LineDashedMaterial] to render correctly.
+		Line distances can be generated automatically with [page:.computeLineDistances].
+		</div>
+
 		<h3>[property:Array morphTargets]</h3>
 		<div>
-		Array of morph targets. Each morph target is a Javascript object:
+		Array of [link:https://en.wikipedia.org/wiki/Morph_target_animation morph targets]. Each morph target is a Javascript object:
 		<code>{ name: "targetName", vertices: [ new THREE.Vector3(), ... ] }</code>
 		Morph vertices match number and order of primary vertices.
 		</div>
@@ -92,8 +122,13 @@
 		<div>
 		Array of morph normals. Morph normals have similar structure as morph targets, each normal set is a Javascript object:
 		<code>morphNormal = { name: "NormalName", normals: [ new THREE.Vector3(), ... ] }</code>
+
+		See the [example:webgl_morphnormals WebGL / morphNormals] example.
 		</div>
 
+		<h3>[property:String name]</h3>
+		<div>Optional name for this geometry. Default is an empty string.</div>
+
 		<h3>[property:Array skinWeights]</h3>
 		<div>
 		When working with a [page:SkinnedMesh], each vertex can have up to 4 [page:Bone bones] affecting it.
@@ -138,147 +173,118 @@
 		</code>
 		</div>
 
-		<h3>[property:Object boundingBox]</h3>
+		<h3>[property:String uuid]</h3>
 		<div>
-		Bounding box.
-		<code>{ min: new THREE.Vector3(), max: new THREE.Vector3() }</code>
+		[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] of this object instance.
+		This gets automatically assigned and shouldn't be edited.
 		</div>
 
-		<h3>[property:Object boundingSphere]</h3>
+		<h3>[property:Array vertices]</h3>
 		<div>
-		Bounding sphere.
-		<code>{ radius: float }</code>
+		Array of [page:Vector3 vertices].<br />
+		The array of vertices holds the position of every vertex in the model.<br />
+		To signal an update in this array, [page:.verticesNeedUpdate] needs to be set to true.
 		</div>
 
 		<h3>[property:Boolean verticesNeedUpdate]</h3>
-		<div>
-		Set to *true* if the vertices array has been updated.
-		</div>
+		<div>Set to *true* if the vertices array has been updated.</div>
 
 		<h3>[property:Boolean elementsNeedUpdate]</h3>
-		<div>
-		Set to *true* if the faces array has been updated.
-		</div>
+		<div>Set to *true* if the faces array has been updated.</div>
 
 		<h3>[property:Boolean uvsNeedUpdate]</h3>
-		<div>
-		Set to *true* if the uvs array has been updated.
-		</div>
+		<div>Set to *true* if the uvs array has been updated.	</div>
 
 		<h3>[property:Boolean normalsNeedUpdate]</h3>
-		<div>
-		Set to *true* if the normals array has been updated.
-		</div>
+		<div>Set to *true* if the normals array has been updated.</div>
 
 		<h3>[property:Boolean colorsNeedUpdate]</h3>
-		<div>
-		Set to *true* if the colors array or a face3 color has been updated.
-		</div>
+		<div>Set to *true* if the colors array or a face3 color has been updated.</div>
 
 		<h3>[property:Boolean groupsNeedUpdate]</h3>
-		<div>
-		Set to *true* if a face3 materialIndex has been updated.
-		</div>
+		<div>Set to *true* if a face3 materialIndex has been updated.</div>
 
 		<h3>[property:Boolean lineDistancesNeedUpdate]</h3>
-		<div>
-		Set to *true* if the linedistances array has been updated.
-		</div>
+		<div>Set to *true* if the linedistances array has been updated.</div>
 
-		<h3>[property:array lineDistances]</h3>
-		<div>
-		An array containing distances between vertices for Line geometries.
-		This is required for LinePieces/LineDashedMaterial to render correctly.
-		Line distances can also be generated with computeLineDistances.
-		</div>
 
 		<h2>Methods</h2>
 
 		<h3>[page:EventDispatcher EventDispatcher] methods are available on this class.</h3>
 
 		<h3>[method:null applyMatrix]( [page:Matrix4 matrix] )</h3>
-		<div>
-		Bakes matrix transform directly into vertex coordinates.
-		</div>
+		<div>Bakes matrix transform directly into vertex coordinates.</div>
 
 		<h3>[method:null center] ()</h3>
-		<div>
-		Center the geometry based on the bounding box.
-		</div>
+		<div>Center the geometry based on the bounding box.</div>
 
-		<h3>[method:Geometry rotateX] ( [page:Float radians] )</h3>
-		<div>
-		Rotate the geometry about the X axis. This is typically done as a one time operation, and not during a loop
-    Use [page:Object3D.rotation] for typical real-time mesh rotation.
-		</div>
-
-		<h3>[method:Geometry rotateY] ( [page:Float radians] )</h3>
+		<h3>[method:Geometry clone]()</h3>
 		<div>
-		Rotate the geometry about the Y axis. This is typically done as a one time operation, and not during a loop
-    Use [page:Object3D.rotation] for typical real-time mesh rotation.
-		</div>
+		Creates a new clone of the Geometry.<br /><br />
 
-		<h3>[method:Geometry rotateZ] ( [page:Float radians] )</h3>
-		<div>
-		Rotate the geometry about the Z axis. This is typically done as a one time operation, and not during a loop
-    Use [page:Object3D.rotation] for typical real-time mesh rotation.
+		This method copies only vertices, faces and uvs. It does not copy any other properties of the geometry.
 		</div>
 
-		<h3>[method:Geometry translate] ( [page:Float x], [page:Float y], [page:Float z] )</h3>
-		<div>
-		Translate the geometry. This is typically done as a one time operation, and not during a loop
-    Use [page:Object3D.position] for typical real-time mesh translation.
-		</div>
+		<h3>[method:null computeBoundingBox]()</h3>
+		<div>Computes bounding box of the geometry, updating [page:Geometry Geometry.boundingBox] attribute.</div>
 
-		<h3>[method:Geometry scale] ( [page:Float x], [page:Float y], [page:Float z] )</h3>
-		<div>
-		Scale the geometry data. This is typically done as a one time operation, and not during a loop
-    Use [page:Object3D.scale] for typical real-time mesh scaling.
-		</div>
+		<h3>[method:null computeBoundingSphere]()</h3>
+		<div>Computes bounding sphere of the geometry, updating [page:Geometry Geometry.boundingSphere] attribute.</div>
 
-		<h3>[method:Geometry lookAt] ( [page:Vector3 vector] )</h3>
-		<div>
-		vector - A world vector to look at.<br />
-		</div>
 		<div>
-		Rotates the geometry to face point in space. This is typically done as a one time operation, and not during a loop
-    Use [page:Object3D.lookAt] for typical real-time mesh usage.
+			Neither bounding boxes or bounding spheres are computed by default. They need to be explicitly computed,
+			otherwise they are *null*.
 		</div>
 
 		<h3>[method:null computeFaceNormals]()</h3>
-		<div>
-		Computes face normals.
-		</div>
+		<div>Computes [page:Face3.normal face normals].</div>
+
+		<h3>[method:null computeFlatVertexNormals]()</h3>
+		<div>Computes flat [page:Face3.vertexNormals vertex normals]. Sets the vertex normal of each vertex of each face to be the same as the face's normal.</div>
+
+		<h3>[method:null computeLineDistances]()</h3>
+		<div>Compute [page:.lineDistances].</div>
+
+		<h3>[method:null computeMorphNormals]()</h3>
+		<div>Computes [page:.morphNormals].</div>
 
 		<h3>[method:null computeVertexNormals]( [page:Boolean areaWeighted] )</h3>
 		<div>
-		areaWeighted - If true the contributution of each face normal to the vertex normal is weighted by the area of the face. Default is true.
-		</div>
-		<div>
-		Computes vertex normals by averaging face normals.<br />
-		Face normals must be existing / computed beforehand.
+		areaWeighted - If true the contribution of each face normal to the vertex normal is
+		weighted by the area of the face. Default is true.<br /><br />
+
+		Computes vertex normals by averaging face normals.
 		</div>
 
-		<h3>[method:null computeMorphNormals]()</h3>
+		<h3>[method:Geometry copy]( [page:Geometry geometry] )</h3>
 		<div>
-		Computes morph normals.
+			Copies vertices, faces and uvs into this geometry. It does not copy any other properties of the geometry.
 		</div>
 
-		<h3>[method:null computeBoundingBox]()</h3>
+		<h3>[method:null dispose]()</h3>
 		<div>
-		Computes bounding box of the geometry, updating [page:Geometry Geometry.boundingBox] attribute.
+		Removes The object from memory. <br />
+		Don't forget to call this method when you remove a geometry because it can cause memory leaks.
 		</div>
 
-		<h3>[method:null computeBoundingSphere]()</h3>
+		<h3>[method:Geometry fromBufferGeometry]( [page:BufferGeometry geometry] )</h3>
+		<div>Convert a [page:BufferGeometry] to a Geometry.</div>
+
+		<h3>[method:Geometry lookAt] ( [page:Vector3 vector] )</h3>
 		<div>
-		Computes bounding sphere of the geometry, updating [page:Geometry Geometry.boundingSphere] attribute.
-		</div>
+		vector - A world vector to look at.<br /><br />
 
-		<div>Neither bounding boxes or bounding spheres are computed by default. They need to be explicitly computed, otherwise they are *null*.</div>
+		Rotates the geometry to face point in space. This is typically done as a one time operation, and not during a loop
+		Use [page:Object3D.lookAt] for typical real-time mesh usage.
+		</div>
 
 		<h3>[method:null merge]( [page:Geometry geometry], [page:Matrix4 matrix], [page:Integer materialIndexOffset] )</h3>
 		<div>Merge two geometries or geometry and geometry from object (using object's transform)</div>
 
+		<h3>[method:null mergeMesh]( [page:Mesh mesh] )</h3>
+		<div>Merge the mesh's geometry with this, also applying the mesh's transform.</div>
+
+
 		<h3>[method:null mergeVertices]()</h3>
 		<div>
 		Checks for duplicate vertices using hashmap.<br />
@@ -288,25 +294,46 @@
 		<h3>[method:null normalize]()</h3>
 		<div>
 		Normalize the geometry. <br />
-		Make the geometry centered and has a bounding sphere whose radius equals to 1.0.
+		Make the geometry centered and have a bounding sphere of radius *1.0*.
 		</div>
 
-		<h3>[method:Geometry clone]()</h3>
+		<h3>[method:Geometry rotateX] ( [page:Float radians] )</h3>
 		<div>
-		Creates a new clone of the Geometry.
+		Rotate the geometry about the X axis. This is typically done as a one time operation, and not during a loop
+    Use [page:Object3D.rotation] for typical real-time mesh rotation.
 		</div>
-		
-		<div>This method copies only vertices, faces and uvs. It does not copy any other properties of the geometry.</div>
 
-		<h3>[method:null dispose]()</h3>
+		<h3>[method:Geometry rotateY] ( [page:Float radians] )</h3>
 		<div>
-		Removes The object from memory. <br />
-		Don't forget to call this method when you remove a geometry because it can cause memory leaks.
+		Rotate the geometry about the Y axis. This is typically done as a one time operation, and not during a loop
+    Use [page:Object3D.rotation] for typical real-time mesh rotation.
 		</div>
 
-		<h3>[method:null computeLineDistances]()</h3>
+		<h3>[method:Geometry rotateZ] ( [page:Float radians] )</h3>
 		<div>
-		Compute distances between vertices for Line geometries.
+		Rotate the geometry about the Z axis. This is typically done as a one time operation, and not during a loop
+    Use [page:Object3D.rotation] for typical real-time mesh rotation.
+		</div>
+
+		<h3>[method:null sortFacesByMaterialIndex] (  )</h3>
+		<div>
+			Sorts the faces array according to material index. For complex geometries with several materials,
+			this can result in reduced draw call and improved performance.
+		</div>
+
+		<h3>[method:Geometry scale] ( [page:Float x], [page:Float y], [page:Float z] )</h3>
+		<div>
+		Scale the geometry data. This is typically done as a one time operation, and not during a loop
+		Use [page:Object3D.scale] for typical real-time mesh scaling.
+		</div>
+
+		<h3>[method:JSON toJSON] ( )</h3>
+		<div>Convert the geometry to JSON format.</div>
+
+		<h3>[method:Geometry translate] ( [page:Float x], [page:Float y], [page:Float z] )</h3>
+		<div>
+		Translate the geometry. This is typically done as a one time operation, and not during a loop
+    Use [page:Object3D.position] for typical real-time mesh translation.
 		</div>
 
 

+ 44 - 0
docs/api/core/InstancedBufferAttribute.html

@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:BufferAttribute] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+		An instanced version of [page:BufferAttribute].
+		</div>
+
+		<h2>Constructor</h2>
+		<h3>[name]( [page:TypedArray array], [page:Integer itemSize], [page:Number meshPerAttribute] )</h3>
+		<div>
+		</div>
+
+		<h2>Properties</h2>
+		See [page:BufferAttribute] for inherited properties.
+
+		<h3>[property:Number meshPerAttribute]</h3>
+		<div>
+			Default is *1*.
+		</div>
+
+		<h3>[property:Boolean isInstancedBufferAttribute]</h3>
+		<div>
+			Default is *true*.
+		</div>
+
+		<h2>Methods</h2>
+		See [page:BufferAttribute] for inherited methods.
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 50 - 0
docs/api/core/InstancedBufferGeometry.html

@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:BufferGeometry] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+		An instanced version of [page:BufferGeometry].
+		</div>
+
+		<h2>Constructor</h2>
+		<h3>[name]( )</h3>
+		<div>
+		</div>
+
+		<h2>Properties</h2>
+		See [page:BufferGeometry] for inherited properties.
+
+		<h3>[property:Number maxInstancedCount]</h3>
+		<div>
+			Default is *undefined*.
+		</div>
+
+		<h3>[property:Boolean isInstancedBufferGeometry]</h3>
+		<div>
+			Default is *true*.
+		</div>
+
+		<h2>Methods</h2>
+		See [page:BufferAttribute] for inherited methods.
+
+		<h3>[property:Number addGroup]( start, count, materialIndex )</h3>
+		<div>
+
+		</div>
+
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 44 - 0
docs/api/core/InstancedInterleavedBuffer.html

@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:InterleavedBuffer] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+		An instanced version of [page:InterleavedBuffer].
+		</div>
+
+		<h2>Constructor</h2>
+		<h3>[name]( [page:TypedArray array], [page:Integer itemSize], [page:Number meshPerAttribute] )</h3>
+		<div>
+		</div>
+
+		<h2>Properties</h2>
+		See [page:InterleavedBuffer] for inherited properties.
+
+		<h3>[property:Number meshPerAttribute]</h3>
+		<div>
+			Default is *1*.
+		</div>
+
+		<h3>[property:Boolean isInstancedInterleavedBuffer]</h3>
+		<div>
+			Default is *true*.
+		</div>
+
+		<h2>Methods</h2>
+		See [page:InterleavedBuffer] for inherited methods.
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 104 - 0
docs/api/core/InterleavedBuffer.html

@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<div class="desc">
+		</div>
+
+		<h2>Constructor</h2>
+		<h3>[name]( [page:TypedArray array], [page:Integer stride] )</h3>
+		<div>
+		</div>
+
+		<h2>Properties</h2>
+
+		<h3>[property:Array array]</h3>
+		<div>
+		</div>
+
+		<h3>[property:Integer stride]</h3>
+		<div>
+		</div>
+
+		<h3>[property:Integer count]</h3>
+		<div>
+		Gives the total number of elements in the array.
+		</div>
+
+		<h3>[property:Boolean dynamic]</h3>
+		<div>
+		Default is *false*.
+		</div>
+
+		<h3>[property:Object updateRange]</h3>
+		<div>
+		Object containing offset and count.
+		</div>
+
+		<h3>[property:Number updateRange.offset]</h3>
+		<div>
+		DEfault is *0*.
+		</div>
+
+		<h3>[property:Number updateRange.count]</h3>
+		<div>
+		Default is *-1*.
+		</div>
+
+		<h3>[property:Integer version]</h3>
+		<div>
+		A version number, incremented every time the needsUpdate property is set to true.
+		</div>
+
+		<h3>[property:Integer isInterleavedBuffer]</h3>
+		<div>
+		Default is *true*.
+		</div>
+
+		<h3>[property:Integer needsUpdate]</h3>
+		<div>
+		Default is *false*. Setting this to true increments [page:InterleavedBuffer.version version].
+		</div>
+
+		<h2>Methods</h2>
+
+		<h3>[method:null setArray] ( [page:TypedArray array] ) </h3>
+		<div>
+		 array - must be  a Typed Array.
+		</div>
+
+		<h3>[method:InterleavedBuffer setDynamic] ( [page:Boolean value] ) </h3>
+		<div>
+			Set [page:InterleavedBuffer.dynamic dynamic] to value.
+		</div>
+
+		<h3>[method:InterleavedBuffer copy]( source ) </h3>
+		<div>
+		 Copy the array, count, stride and value of dynamic to this.
+		</div>
+
+		<h3>[method:InterleavedBuffer copyAt]( index1, attribute, index2 ) </h3>
+		<div>
+		</div>
+
+		<h3>[method:InterleavedBuffer set]( value, offset ) </h3>
+		<div>
+		</div>
+
+		<h3>[method:InterleavedBuffer clone]( index, x, y ) </h3>
+		<div>
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 116 - 0
docs/api/core/InterleavedBufferAttribute.html

@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+
+		</div>
+
+		<h2>Constructor</h2>
+		<h3>[name]( [page:InterleavedBuffer interleavedBuffer], [page:Integer itemSize], [page:Integer offset], [page:Boolean normalized] )</h3>
+		<div>
+		</div>
+
+		<h2>Properties</h2>
+
+		<h3>[property:InterleavedBuffer data]</h3>
+		<div>
+			The [page:InterleavedBuffer InterleavedBuffer] instance passed in the constructor.
+		</div>
+
+		<h3>[property:Integer itemSize]</h3>
+		<div>
+		</div>
+
+		<h3>[property:Integer offset]</h3>
+		<div>
+		</div>
+
+		<h3>[property:Boolean normalized]</h3>
+		<div>
+			Default is *true*.
+		</div>
+
+		<h3>[property:Boolean isInterleavedBufferAttribute]</h3>
+		<div>
+			Default is *true*.
+		</div>
+
+		<h2>Methods</h2>
+
+		<h3>[method:Integer count]()</h3>
+		<div>
+			The value of [page:InterleavedBufferAttribute.data data].count.
+		</div>
+
+		<h3>[method:Array array]()</h3>
+		<div>
+			The value of [page:InterleavedBufferAttribute.data data].array.
+		</div>
+
+		<h3>[method:null getX]( index ) </h3>
+		<div>
+
+		</div>
+
+		<h3>[method:null getY]( index ) </h3>
+		<div>
+
+		</div>
+
+		<h3>[method:null getZ]( index ) </h3>
+		<div>
+
+		</div>
+
+		<h3>[method:null getW]( index ) </h3>
+		<div>
+
+		</div>
+
+		<h3>[method:null setX]( index, x ) </h3>
+		<div>
+
+		</div>
+
+		<h3>[method:null setY]( index, y ) </h3>
+		<div>
+
+		</div>
+
+		<h3>[method:null setZ]( index, z ) </h3>
+		<div>
+
+		</div>
+
+		<h3>[method:null setXY]( index, x, y ) </h3>
+		<div>
+
+		</div>
+
+		<h3>[method:null setXYZ]( index, x, y, z ) </h3>
+		<div>
+
+		</div>
+
+		<h3>[method:null setXYZW]( index, x, y, z, w ) </h3>
+		<div>
+
+		</div>
+
+
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 83 - 0
docs/api/core/Layers.html

@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<div class="desc">
+		An object providing a [link:https://en.wikipedia.org/wiki/Mask_(computing) bit mask] and accessor methods
+		used to control an [page:Object3D]'s visibility.
+		A [page:Layers] object assigns an [page:Object3D] to 0 or more of 32 layers numbered 0 to 31.<br /><br />
+
+		This is used to control visibility - an object must share a layer with a [page:Camera camera]
+		to be visible when that camera's view is renderered.<br /><br />
+
+		All classes that inherit from [page:Object3D] have a [property:layers] property which is an instance
+		of this class.
+		</div>
+
+
+		<h2>Constructor</h2>
+
+
+		<h3>[name]()</h3>
+		<div>
+		Create a new Layers object, with an initial mask set to layer 1.
+		</div>
+
+		<h2>Properties</h2>
+
+		<h3>[property:Integer mask]</h3>
+		<div>
+		Internal layer mask.
+		</div>
+
+
+		<h2>Methods</h2>
+
+		<h3>[method:null disable]( [page:Integer layer] )</h3>
+		<div>
+		layer - an integer from 0 to 31.<br /><br />
+
+		Remove *layer* from the mask.
+		</div>
+
+		<h3>[method:null enable]( [page:Integer layer] )</h3>
+		<div>
+		layer - an integer from 0 to 31.<br /><br />
+
+		Add *layer* to the mask.
+		</div>
+
+		<h3>[method:null set]( [page:Integer layer] )</h3>
+		<div>
+		layer - an integer from 0 to 31.<br /><br />
+
+		Set the layer mask to the value *layer*.
+		</div>
+
+		<h3>[method:Boolean test]( [page:Integer layers] )</h3>
+		<div>
+		layers - a 32bit bit mask of layer numbers.<br /><br />
+
+		Returns true if *layers* and [page:.mask] have any bits set in common.
+		</div>
+
+		<h3>[method:null toggle]( [page:Integer layer] )</h3>
+		<div>
+		layer - an integer from 0 to 31.<br /><br />
+
+		Toggle the *layer* value in the mask.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 233 - 144
docs/api/core/Object3D.html

@@ -10,7 +10,13 @@
 	<body>
 		<h1>[name]</h1>
 
-		<div class="desc">Base class for scene graph objects.</div>
+		<div class="desc">
+			This is the base class for most objects in Three and provides a set of properties and methods
+			for manipulating objects in 3D space.<br /><br />
+
+			Note that this can be used for grouping objects via the [page:.add]( object ) method
+			which adds the object as a child, however it is better to use [page:Group] for this.
+		</div>
 
 
 		<h2>Constructor</h2>
@@ -24,283 +30,366 @@
 
 		<h2>Properties</h2>
 
-		<h3>[property:Integer id]</h3>
-		<div>
-		readonly – Unique number for this object instance.
-		</div>
+		<h3>[property:Boolean castShadow]</h3>
+		<div>Whether the object gets rendered into shadow map. Default is *false*.</div>
 
-		<h3>[property:String uuid]</h3>
-		<div>
-		[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] of this object instance.
-		This gets automatically assigned, so this shouldn't be edited.
-		</div>
+		<h3>[property:Object3D children]</h3>
+		<div>Array with object's children. See [page:Group] for info on manually grouping objects.</div>
 
-		<h3>[property:String name]</h3>
+		<h3>[property:Boolean frustumCulled]</h3>
 		<div>
-		Optional name of the object (doesn't need to be unique).
+		When this is set, it checks every frame if the object is in the frustum of the camera before rendering the object.
+		Otherwise the object gets renderered every frame even if it isn't visible. Default is *true*.
 		</div>
 
-		<h3>[property:Object3D parent]</h3>
-		<div>
-		Object's parent in the scene graph.
-		</div>
+		<h3>[property:Integer id]</h3>
+		<div>readonly – Unique number for this object instance.</div>
 
-		<h3>[property:Object3D children]</h3>
+		<h3>[property:Boolean isObject]</h3>
 		<div>
-		Array with object's children.
-		</div>
+			Used to check whether this or derived classes are Object3Ds. Default is *true*.<br /><br />
 
-		<h3>[property:Vector3 position]</h3>
-		<div>
-		Object's local position.
+			You should not change this, as it used internally for optimisation.
 		</div>
 
-		<h3>[property:Euler rotation]</h3>
+		<h3>[property:Layers layers]</h3>
 		<div>
-		Object's local rotation (<a href="https://en.wikipedia.org/wiki/Euler_angles" target="_blank">Euler angles</a>), in radians.
+		The layer membership of the object. The object is only visible if it has at least one
+		layer in common with the [page:Camera] in use.
 		</div>
 
-		<h3>[property:Vector3 scale]</h3>
-		<div>
-		Object's local scale.
-		</div>
+		<h3>[property:Matrix4 matrix]</h3>
+		<div>The local transform matrix.</div>
 
-		<h3>[property:Vector3 up]</h3>
+		<h3>[property:Boolean matrixAutoUpdate]</h3>
 		<div>
-		Up direction. Default is THREE.Vector3( 0, 1, 0 ).
+		When this is set, it calculates the matrix of position, (rotation or quaternion) and
+		scale every frame and also recalculates the matrixWorld property. Default is *true*.
 		</div>
 
-		<h3>[property:Matrix4 matrix]</h3>
+		<h3>[property:Matrix4 matrixWorld]</h3>
 		<div>
-		Local transform.
+		The global transform of the object. If the Object3d has no parent, then it's identical to
+		the local transform [page:.matrix].
 		</div>
 
-		<h3>[property:Quaternion quaternion]</h3>
+		<h3>[property:Boolean matrixWorldNeedsUpdate]</h3>
 		<div>
-		Object's local rotation as [page:Quaternion Quaternion].
+		When this is set, it calculates the matrixWorld in that frame and resets this property
+		 to false. Default is *false*.
 		</div>
 
-		<h3>[property:Boolean visible]</h3>
-		<div>
-		Object gets rendered if *true*.
-		</div>
-		<div>
-		default – true
-		</div>
+		<h3>[property:Matrix4 modelViewMatrix]</h3>
+		<div>This is passed to the shader and used to calculate the position of the object.</div>
 
-		<h3>[property:Boolean castShadow]</h3>
+		<h3>[property:String name]</h3>
+		<div>Optional name of the object (doesn't need to be unique). Default is an empty string.</div>
+
+		<h3>[property:Matrix3 normalMatrix]</h3>
+		<div>This is passed to the shader and used to calculate lighting for the object.</div>
+
+		<h3>[property:function onAfterRender]</h3>
 		<div>
-		Gets rendered into shadow map.
+		An optional callback that is executed immediately after the Object3D is rendered.
+		This function is called with the following parameters: renderer, scene, camera, geometry,
+		material, group.
 		</div>
+
+		<h3>[property:function onBeforeRender]</h3>
 		<div>
-		default – false
+		An optional callback that is executed immediately before the Object3D is rendered.
+		This function is called with the following parameters: renderer, scene, camera, geometry,
+		material, group.
 		</div>
 
+		<h3>[property:Object3D parent]</h3>
+		<div>Object's parent in the [link:https://en.wikipedia.org/wiki/Scene_graph scene graph].</div>
+
+		<h3>[property:Vector3 position]</h3>
+		<div>The object's local position.</div>
+
+		<h3>[property:Quaternion quaternion]</h3>
+		<div>Object's local rotation as a [page:Quaternion Quaternion].</div>
+
 		<h3>[property:Boolean receiveShadow]</h3>
-		<div>
-		Material gets baked in shadow receiving.
-		</div>
-		<div>
-		default – false
-		</div>
+		<div>Whether the material receives shadows. Default is *false*.</div>
 
-		<h3>[property:Boolean frustumCulled]</h3>
-		<div>
-		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.
-		</div>
+		<h3>[property:Number renderOrder]</h3>
 		<div>
-		default – true
+		This value allows the default rendering order of [link:https://en.wikipedia.org/wiki/Scene_graph scene graph]
+		objects to be overridden although opaque and transparent objects remain sorted independently.
+		Sorting is from lowest to highest renderOrder. Default value is *0*.
 		</div>
 
-		<h3>[property:Boolean matrixAutoUpdate]</h3>
-		<div>
-		When this is set, it calculates the matrix of position, (rotation or quaternion) and scale every frame and also recalculates the matrixWorld property.
-		</div>
+		<h3>[property:Euler rotation]</h3>
 		<div>
-		default – true
+		Object's local rotation (see [link:https://en.wikipedia.org/wiki/Euler_angles Euler angles]), in radians.
 		</div>
 
-		<h3>[property:Boolean matrixWorldNeedsUpdate]</h3>
-		<div>
-		When this is set, it calculates the matrixWorld in that frame and resets this property to false.
-		</div>
+		<h3>[property:Vector3 scale]</h3>
 		<div>
-		default – false
+		The object's local [property:Vector3 scale]. Default is [page:Vector3]( 1, 1, 1 ).
 		</div>
 
-		<h3>[property:Boolean rotationAutoUpdate]</h3>
-		<div>
-		When this is set, then the rotationMatrix gets calculated every frame.
-		</div>
-		<div>
-		default – true
-		</div>
+		<h3>[property:Vector3 up]</h3>
+		<div>Up direction. Default is [page:Vector3]( 0, 1, 0 ).</div>
 
 		<h3>[property:object userData]</h3>
 		<div>
-		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.
+		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.
 		</div>
 
-		<h3>[property:Matrix4 matrixWorld]</h3>
+		<h3>[property:String uuid]</h3>
 		<div>
-		The global transform of the object. If the Object3d has no parent, then it's identical to the local transform.
+		[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] of this object instance.
+		This gets automatically assigned, so this shouldn't be edited.
 		</div>
 
+		<h3>[property:Boolean visible]</h3>
+		<div>Object gets rendered if *true*. Default is *true*.</div>
+
+
+
+
+
+
 
 		<h2>Methods</h2>
 
 		<h3>[page:EventDispatcher EventDispatcher] methods are available on this class.</h3>
 
-		<h3>[method:null applyMatrix]( [page:Matrix4 matrix])</h3>
+		<h3>[method:null add]( [page:Object3D object], ... )</h3>
 		<div>
-		matrix - matrix
+		Adds *object* as child of this object. An arbitrary number of objects may be added.<br /><br />
+
+		See [page:Group] for info on manually grouping objects.
 		</div>
+
+		<h3>[method:null applyMatrix]( [page:Matrix4 matrix] )</h3>
+		<div>This updates the position, rotation and scale with the matrix.</div>
+
+		<h3>[method:Object3D clone]( [page:Boolean recursive] )</h3>
 		<div>
-		This updates the position, rotation and scale with the matrix.
+		recursive -- if true, descendants of the object are also cloned. Default is true.<br /><br />
+
+		Returns a clone of this object and optionaly all descendants.
 		</div>
 
-		<h3>[method:null translateX]( [page:Float distance] )</h3>
+		<h3>[method:Object3D copy]( [page:Object3D object], [page:Boolean recursive] )</h3>
 		<div>
-		distance - Distance.<br />
+		recursive -- if true, descendants of the object are also copied. Default is true.<br /><br />
+
+		Copy the given object into this object.
 		</div>
+
+		<h3>[method:Object3D getObjectById]( [page:Integer id] )</h3>
 		<div>
-		Translates object along x axis by distance.
+		id -- Unique number of the object instance<br /><br />
+
+		Searches through the object's children and returns the first with a matching id.<br />
+		Note that ids are assigned in chronological order: 1, 2, 3, ..., incrementing by one for each new object.
 		</div>
 
-		<h3>[method:null translateY]( [page:Float distance] )</h3>
+		<h3>[method:Object3D getObjectByName]( [page:String name] )</h3>
 		<div>
-		distance - Distance.<br />
+		name -- String to match to the children's Object3d.name property. <br /><br />
+
+		Searches through the object's children and returns the first with a matching name.<br />
+		Note that for most objects the [property:name] is an empty string by default. You will
+		have to set it manually to make use of this method.
 		</div>
+
+		<h3>[method:Object3D getObjectByProperty]( [page:String name], [page:Float value] )</h3>
 		<div>
-		Translates object along y axis by distance.
+		name -- the property name to search for. <br />
+		value -- value of the given property. <br /><br />
+
+		Searches through the object's children and returns the first with a property that matches the aclue given.
 		</div>
 
-		<h3>[method:null translateZ]( [page:Float distance] )</h3>
+		<h3>[method:Vector3 getWorldPosition]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		distance - Distance.<br />
+		optionalTarget — (optional) target to set the result. Otherwise, a new [page:Vector3] is instantiated. <br /><br />
+
+		Returns a vector representing the position of the object in world space.
 		</div>
+
+		<h3>[method:Quaternion getWorldQuaternion]( [page:Quaternion optionalTarget] )</h3>
 		<div>
-		Translates object along z axis by distance.
+		optionalTarget — (optional) target to set the result. Otherwise, a new [page:Quaternion] is
+		 instantiated. <br /><br />
+
+		Returns a quaternion representing the rotation of the object in world space.
 		</div>
 
-		<h3>[method:Vector3 localToWorld]( [page:Vector3 vector] )</h3>
+		<h3>[method:Euler getWorldRotation]( [page:Euler optionalTarget] )</h3>
 		<div>
-		vector - A local vector.<br />
+		optionalTarget — (optional) target to set the result. Otherwise, a new [page:Euler] is instantiated.<br /><br />
+
+		Returns the euler angles representing the rotation of the object in world space.
 		</div>
+
+		<h3>[method:Vector3 getWorldScale]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		Updates the vector from local space to world space.
+		optionalTarget — (optional) target to set the result. Otherwise, a new [page:Vector3] is instantiated.<br /><br />
+
+		Returns a vector of the scaling factors applied to the object for each axis in world space.
 		</div>
 
-		<h3>[method:Vector3 worldToLocal]( [page:Vector3 vector] )</h3>
+		<h3>[method:Vector3 getWorldDirection]( [page:Vector3 optionalTarget] )</h3>
 		<div>
-		vector - A world vector.<br />
+		optionalTarget — (optional) target to set the result. Otherwise, a new [page:Vector3] is instantiated.<br /><br />
+
+		Returns a vector representing the direction of object's positive z-axis in world space.
 		</div>
+
+
+		<h3>[method:Vector3 localToWorld]( [page:Vector3 vector] )</h3>
 		<div>
-		Updates the vector from world space to local space.
+		vector - A vector representing a position in local (object) spave.<br /><br />
+
+		Converts the vector from local space to world space.
 		</div>
 
 		<h3>[method:null lookAt]( [page:Vector3 vector] )</h3>
 		<div>
-		vector - A world vector to look at.<br />
-		</div>
-		<div>
-		Rotates object to face point in space.
-		</div>
+		vector - A vector representing a position in world space.<br /><br />
 
-		<h3>[method:null add]( [page:Object3D object], ... )</h3>
-		<div>
-		object - An object.<br />
+		Rotates the object to face a point in world space.
 		</div>
+
+		<h3>[method:Array raycast]( [page:Raycaster raycaster], [page:Array intersects] )</h3>
 		<div>
-		Adds *object* as child of this object. An arbitrary number of objects may be added.
+		Abstract (empty) method to get intersections between a casted ray and this object.
+		Subclasses such as [page:Mesh], [page:Line], and [page:Points] implement this method in order
+		to use raycasting.
 		</div>
 
 		<h3>[method:null remove]( [page:Object3D object], ... )</h3>
 		<div>
-		object - An object.<br />
-		</div>
-		<div>
 		Removes *object* as child of this object. An arbitrary number of objects may be removed.
 		</div>
 
-		<h3>[method:null traverse]( [page:Function callback] )</h3>
-		<div>
-		callback - A function with as first argument an object3D object.<br />
-		</div>
+		<h3>[method:Object3D rotateOnAxis]( [page:Vector3 axis], [page:Float angle] )</h3>
 		<div>
-		Executes the callback on this object and all descendants.
-		</div>
+		axis -- A normalized vector in object space. <br />
+		angle -- The angle in radians.<br /><br />
 
-		<h3>[method:null traverseVisible]( [page:Function callback] )</h3>
-		<div>
-		callback - A function with as first argument an object3D object.<br />
+		Rotate an object along an axis in object space. The axis is assumed to be normalized.
 		</div>
+
+		<h3>[method:null rotateX]( [page:Float rad] )</h3>
 		<div>
-		Like traverse, but the callback will only be executed for visible objects.
-		Descendants of invisible objects are not traversed.
+		rad - the angle to rotate in radians.<br /><br />
+
+		Rotates the object around x axis in local space.
 		</div>
 
-		<h3>[method:null traverseAncestors]( [page:Function callback] )</h3>
+		<h3>[method:null rotateY]( [page:Float rad] )</h3>
 		<div>
-		callback - A function with as first argument an object3D object.<br />
+		rad - the angle to rotate in radians.<br /><br />
+
+		Rotates the object around y axis in local space.
 		</div>
+
+		<h3>[method:null rotateZ]( [page:Float rad] )</h3>
 		<div>
-		Executes the callback on all ancestors.
+		rad - the angle to rotate in radians.<br /><br />
+
+		Rotates the object around z axis in local space.
 		</div>
 
-		<h3>[method:null updateMatrix]()</h3>
+		<h3>[method:null setRotationFromAxisAngle]( [page:Vector3 axis], [page:Float angle] )</h3>
 		<div>
-		Updates local transform.
+			axis -- A normalized vector in object space. <br />
+			angle -- angle in radians<br /><br />
+
+			Calls [page:Quaternion.setFromAxisAngle setFromAxisAngle]( [page:Float axis], [page:Float angle] )
+			on the [page:.quaternion].
 		</div>
 
-		<h3>[method:null updateMatrixWorld]( [page:Boolean force] )</h3>
+		<h3>[method:null setRotationFromEuler]( [page:Euler euler] )</h3>
 		<div>
-		Updates global transform of the object and its children.
+			euler -- Euler angle specifying rotation amount.<br />
+
+			Calls [page:Quaternion.setRotationFromEuler setRotationFromEuler]( [page:Euler euler])
+			on the [page:.quaternion].
 		</div>
 
-		<h3>[method:Object3D clone]()</h3>
+		<h3>[method:null setRotationFromMatrix]( [page:Matrix4 m] )</h3>
 		<div>
-		Creates a new clone of this object and all descendants.
-		</div>
+			m -- rotate the quaternion by the rotation component of the matrix.<br />
 
+			Calls [page:Quaternion.setFromRotationMatrix setFromRotationMatrix]( [page:Matrix4 m])
+			on the [page:.quaternion].<br /><br />
 
-		<h3>[method:Object3D getObjectByName]([page:String name])</h3>
-		<div>
-		name -- String to match to the children's Object3d.name property. <br />
-		</div>
-		<div>
-		Searches through the object's children and returns the first with a matching name.
+			Note that this assumes that the upper 3x3 of m is a pure rotation matrix (i.e, unscaled).
 		</div>
 
-		<h3>[method:Object3D getObjectById]([page:Integer id])</h3>
+		<h3>[method:null setRotationFromQuaternion]( [page:Quaternion q] )</h3>
 		<div>
-		id -- Unique number of the object instance<br />
+			q -- normalized Quaternion.<br /><br />
+
+			Copy the given quaternion into [page:.quaternion].
 		</div>
+
+		<h3>[method:null toJSON]( [page:Quaternion q] )</h3>
 		<div>
-		Searches through the object's children and returns the first with a matching id.
+			Convert the object to JSON format.
 		</div>
 
-		<h3>[method:Object3D translateOnAxis]([page:Vector3 axis], [page:Float distance])</h3>
+		<h3>[method:Object3D translateOnAxis]( [page:Vector3 axis], [page:Float distance] )</h3>
 		<div>
 		axis -- A normalized vector in object space.<br />
-		distance -- The distance to translate.
+		distance -- The distance to translate.<br /><br />
+
+		Translate an object by distance along an axis in object space. The axis is assumed to be normalized.
 		</div>
+
+		<h3>[method:null translateX]( [page:Float distance] )</h3>
+		<div>Translates object along x axis by *distance* units.</div>
+
+		<h3>[method:null translateY]( [page:Float distance] )</h3>
+		<div>Translates object along y axis by *distance* units.</div>
+
+		<h3>[method:null translateZ]( [page:Float distance] )</h3>
+		<div>Translates object along z axis by *distance* units.</div>
+
+		<h3>[method:null traverse]( [page:Function callback] )</h3>
 		<div>
-		Translate an object by distance along an axis in object space. The axis is assumed to be normalized.
+		callback - A function with as first argument an object3D object.<br /><br />
+
+		Executes the callback on this object and all descendants.
 		</div>
 
-		<h3>[method:Object3D rotateOnAxis]([page:Vector3 axis], [page:Float angle])</h3>
+		<h3>[method:null traverseVisible]( [page:Function callback] )</h3>
 		<div>
-		axis -- A normalized vector in object space. <br />
-		angle -- The angle in radians.
+		callback - A function with as first argument an object3D object.<br /><br />
+
+		Like traverse, but the callback will only be executed for visible objects.
+		Descendants of invisible objects are not traversed.
 		</div>
+
+		<h3>[method:null traverseAncestors]( [page:Function callback] )</h3>
 		<div>
-		Rotate an object along an axis in object space. The axis is assumed to be normalized.
+		callback - A function with as first argument an object3D object.<br /><br />
+
+		Executes the callback on all ancestors.
 		</div>
 
-		<h3>[method:Array raycast]([page:Raycaster raycaster], [page:Array intersects])</h3>
+		<h3>[method:null updateMatrix]()</h3>
+		<div>Update the local transform.</div>
+
+		<h3>[method:null updateMatrixWorld]( [page:Boolean force] )</h3>
+		<div>Update the global transform of the object and its children.</div>
+
+
+		<h3>[method:Vector3 worldToLocal]( [page:Vector3 vector] )</h3>
 		<div>
-		Abstract method to get intersections between a casted ray and this object. Subclasses such as [page:Mesh], [page:Line], and [page:Points] implement this method in order to participate in raycasting.
+		vector - A world vector.<br /><br />
+
+		Updates the vector from world space to local space.
 		</div>
 
 		<h2>Source</h2>

+ 49 - 28
docs/api/core/Raycaster.html

@@ -11,7 +11,9 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-		This class makes raycasting easier. Raycasting is used for picking and more.
+		This class is designed to assist with [link:https://en.wikipedia.org/wiki/Ray_casting raycasting].
+		Raycasting is used for mouse picking (working out what objects in the 3d space the mouse is over) amongst
+		other things.
 		</div>
 
 		<h2>Example</h2>
@@ -25,14 +27,14 @@
 			// (-1 to +1) for both components
 
 			mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
-			mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;		
-		
+			mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
+
 		}
 
 		function render() {
 
-			// update the picking ray with the camera and mouse position	
-			raycaster.setFromCamera( mouse, camera );	
+			// update the picking ray with the camera and mouse position
+			raycaster.setFromCamera( mouse, camera );
 
 			// calculate objects intersecting the picking ray
 			var intersects = raycaster.intersectObjects( scene.children );
@@ -40,9 +42,9 @@
 			for ( var i = 0; i < intersects.length; i++ ) {
 
 				intersects[ i ].object.material.color.set( 0xff0000 );
-			
+
 			}
-			
+
 			renderer.render( scene, camera );
 
 		}
@@ -52,14 +54,17 @@
 		window.requestAnimationFrame(render);
 
 		</code>
-		<div>Examples: [example:webgl_interactive_cubes Raycasting to a Mesh], 
-			[example:webgl_interactive_cubes_ortho Raycasting to a Mesh in using an OrthographicCamera], 
-			[example:webgl_interactive_buffergeometry Raycasting to a Mesh with BufferGeometry], 
-			[example:webgl_interactive_lines Raycasting to a Line], 
-			[example:webgl_interactive_raycasting_points Raycasting to Points], 
-			[example:webgl_geometry_terrain_raycast Terrain raycasting], 
-			[example:webgl_octree_raycasting Raycasting using an octree],
-			[example:webgl_interactive_voxelpainter Raycasting to paint voxels]</div>
+		<div>
+			Examples: [example:webgl_interactive_cubes Raycasting to a Mesh]<br />
+			[example:webgl_interactive_cubes_ortho Raycasting to a Mesh in using an OrthographicCamera]<br />
+			[example:webgl_interactive_buffergeometry Raycasting to a Mesh with BufferGeometry]<br />
+			[example:webgl_interactive_lines Raycasting to a Line]<br />
+			[example:webgl_interactive_raycasting_points Raycasting to Points]<br />
+			[example:webgl_geometry_terrain_raycast Terrain raycasting]<br />
+			[example:webgl_octree_raycasting Raycasting using an octree]<br />
+			[example:webgl_interactive_voxelpainter Raycasting to paint voxels]<br />
+			[example:webgl_raycast_texture Raycast to a Texture]
+		</div>
 
 
 		<div>
@@ -82,28 +87,43 @@
 
 		<h2>Properties</h2>
 
-		<h3>[property:Ray ray]</h3>
+		<h3>[property:float far]</h3>
 		<div>
-		The Ray used for the raycasting.
+		The far factor of the raycaster. This value indicates which objects can be discarded based on the distance.<br />
+		This value shouldn't be negative and should be larger than the near property.
 		</div>
 
-		<h3>[property:float near]</h3>
+		<h3>[property:float linePrecision]</h3>
 		<div>
-		The near factor of the raycaster. This value indicates which objects can be discarded based on the distance.<br />
-		This value shouldn't be negative and should be smaller than the far property. 
+		The precision factor of the raycaster when intersecting [page:Line] objects.
 		</div>
 
-		<h3>[property:float far]</h3>
+		<h3>[property:float near]</h3>
 		<div>
-		The far factor of the raycaster. This value indicates which objects can be discarded based on the distance.<br />
-		This value shouldn't be negative and should be larger than the near property. 
+		The near factor of the raycaster. This value indicates which objects can be discarded based on the distance.<br />
+		This value shouldn't be negative and should be smaller than the far property.
 		</div>
 
-		<h3>.[page:float linePrecision]</h3>
+		<h3>[property:Object params]</h3>
 		<div>
-		The precision factor of the raycaster when intersecting [page:Line] objects. 
+		An object with the following properties:
+
+			<code>
+{
+	Mesh: {},
+	Line: {},
+	LOD: {},
+	Points: { threshold: 1 },
+	Sprite: {}
+}
+			</code>
+
 		</div>
 
+		<h3>[property:Ray ray]</h3>
+		<div>The [Page:Ray] used for the raycasting.</div>
+
+
 		<h2>Methods</h2>
 
 		<h3>[method:null set]( [page:Vector3 origin], [page:Vector3 direction] )</h3>
@@ -143,16 +163,17 @@
         [page:Face3 face] – intersected face<br />
         [page:Integer faceIndex] – index of the intersected face<br />
         [page:Array indices] – indices of vertices comprising the intersected face<br />
-        [page:Object3D object] – the intersected object
+        [page:Object3D object] – the intersected object<br />
+        [page:Vector2 uv] - U,V coordinates at point of intersection
     	</p>
         <p>
-        When intersecting a [page:Mesh] with a [page:BufferGeometry], the *faceIndex* will be *undefined*, and *indices* will be set; when intersecting a [page:Mesh] with a [page:Geometry], *indices* will be *undefined*. 
+        When intersecting a [page:Mesh] with a [page:BufferGeometry], the *faceIndex* will be *undefined*, and *indices* will be set; when intersecting a [page:Mesh] with a [page:Geometry], *indices* will be *undefined*.
         </p>
 		<p>
 		*Raycaster* delegates to the [page:Object3D.raycast raycast] method of the passed object, when evaluating whether the ray intersects the object or not. This allows [page:Mesh meshes] to respond differently to ray casting than [page:Line lines] and [page:Points pointclouds].
 		</p>
 		<p>
-		*Note* that for meshes, faces must be pointed towards the origin of the [page:.ray ray] in order to be detected; intersections of the ray passing through the back of a face will not be detected. To raycast against both faces of an object, you'll want to set the [page:Mesh.material material]'s [page:Material.side side] property to *THREE.DoubleSide*.  
+		*Note* that for meshes, faces must be pointed towards the origin of the [page:.ray ray] in order to be detected; intersections of the ray passing through the back of a face will not be detected. To raycast against both faces of an object, you'll want to set the [page:Mesh.material material]'s [page:Material.side side] property to *THREE.DoubleSide*.
 		</p>
 		</div>
 

+ 213 - 0
docs/api/core/Uniform.html

@@ -0,0 +1,213 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<div class="desc">Uniforms are global [link:https://www.opengl.org/documentation/glsl/ GLSL] variables. They are passed to shader programs.
+		</div>
+
+		<h3>Example</h3>
+		<p>
+		When declaring a uniform of a [page:ShaderMaterial], it is declared by value or by object.
+		</p>
+		<code>
+		uniforms: {
+			time: { value: 1.0 },
+			resolution: new THREE.Uniform(new THREE.Vector2())
+		}
+		</code>
+
+		<h3>Uniform types</h3>
+
+		<p>
+		Each uniform must have a *value* property. The type of the value must correspond to the
+		type of the uniform variable in the GLSL code as specified for the primitive GLSL types
+		in the table below. Uniform structures and arrays are also supported. GLSL arrays of primitive
+		type must either be specified as an array of the corresponding THREE objects or as a flat
+		array containing the data of all the objects. In other words; GLSL primitives in arrays
+		must not be represented by arrays. This rule does not apply transitively.
+		An array of *vec2* arrays, each with a length of five vectors, must be an array of arrays,
+		of either five [page:Vector2] objects or ten *number*s.
+		</p>
+		<table>
+			<caption><a id="uniform-types">Uniform types</a></caption>
+			<thead>
+				<tr>
+					<th>GLSL type</th>
+					<th>JavaScript type</th>
+				</tr>
+			</thead>
+			<tbody>
+
+				<tr>
+					<td>int</td>
+					<td>[page:Number]</td>
+				</tr>
+				<tr>
+					<td>float</td>
+					<td>[page:Number]</td>
+				</tr>
+				<tr>
+					<td>bool</td>
+					<td>[page:Boolean]</td>
+				</tr>
+				<tr>
+					<td>bool</td>
+					<td>[page:Number]</td>
+				</tr>
+
+				<tr>
+					<td>vec2</td>
+					<td>[page:Vector2 THREE.Vector2]</td>
+				</tr>
+				<tr>
+					<td>vec2</td>
+					<td>[page:Float32Array Float32Array] (*)</td>
+				</tr>
+				<tr>
+					<td>vec2</td>
+					<td>[page:Array Array] (*)</td>
+				</tr>
+				<tr>
+					<td>vec3</td>
+					<td>[page:Vector3 THREE.Vector3]</td>
+				</tr>
+				<tr>
+					<td>vec3</td>
+					<td>[page:Color THREE.Color]</td>
+				</tr>
+				<tr>
+					<td>vec3</td>
+					<td>[page:Float32Array Float32Array] (*)</td>
+				</tr>
+				<tr>
+					<td>vec3</td>
+					<td>[page:Array Array] (*)</td>
+				</tr>
+				<tr>
+					<td>vec4</td>
+					<td>[page:Vector4 THREE.Vector4]</td>
+				</tr>
+				<tr>
+					<td>vec4</td>
+					<td>[page:Quaternion THREE.Quaternion]</td>
+				</tr>
+				<tr>
+					<td>vec4</td>
+					<td>[page:Float32Array Float32Array] (*)</td>
+				</tr>
+				<tr>
+					<td>vec4</td>
+					<td>[page:Array Array] (*)</td>
+				</tr>
+
+				<tr>
+					<td>mat2</td>
+					<td>[page:Float32Array Float32Array] (*)</td>
+				</tr>
+				<tr>
+					<td>mat2</td>
+					<td>[page:Array Array] (*)</td>
+				</tr>
+				<tr>
+					<td>mat3</td>
+					<td>[page:Matrix3 THREE.Matrix3]</td>
+				</tr>
+				<tr>
+					<td>mat3</td>
+					<td>[page:Float32Array Float32Array] (*)</td>
+				</tr>
+				<tr>
+					<td>mat3</td>
+					<td>[page:Array Array] (*)</td>
+				</tr>
+				<tr>
+					<td>mat4</td>
+					<td>[page:Matrix3 THREE.Matrix4]</td>
+				</tr>
+				<tr>
+					<td>mat4</td>
+					<td>[page:Float32Array Float32Array] (*)</td>
+				</tr>
+				<tr>
+					<td>mat4</td>
+					<td>[page:Array Array] (*)</td>
+				</tr>
+
+				<tr>
+					<td>ivec2, bvec2</td>
+					<td>[page:Float32Array Float32Array] (*)</td>
+				</tr>
+				<tr>
+					<td>ivec2, bvec2</td>
+					<td>[page:Array Array] (*)</td>
+				</tr>
+				<tr>
+					<td>ivec3, bvec3</td>
+					<td>[page:Int32Array Int32Array] (*)</td>
+				</tr>
+				<tr>
+					<td>ivec3, bvec3</td>
+					<td>[page:Array Array] (*)</td>
+				</tr>
+				<tr>
+					<td>ivec4, bvec4</td>
+					<td>[page:Int32Array Int32Array] (*)</td>
+				</tr>
+				<tr>
+					<td>ivec4, bvec4</td>
+					<td>[page:Array Array] (*)</td>
+				</tr>
+
+				<tr>
+					<td>sampler2D</td>
+					<td>[page:Texture THREE.Texture]</td>
+				</tr>
+				<tr>
+					<td>samplerCube</td>
+					<td>[page:CubeTexture THREE.CubeTexture]</td>
+				</tr>
+
+			</tbody>
+		</table>
+		
+		<p>
+		(*) Same for an (innermost) array (dimension) of the same GLSL type, containing the components of all vectors or matrices in the array.
+		</p>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [page:Object value] )</h3>
+		<div>
+		value -- An object containing the value to set up the uniform. It's type must be one of the Uniform Types described above.
+		</div>
+
+		<h2>Properties</h2>
+
+		<h3>[property:Object value]</h3>
+		<div>
+		Current value of the uniform.
+		</div>
+
+		<h2>Methods</h2>
+
+		<h3>[method:Uniform clone]()</h3>
+		<div>
+		Returns a clone of this uniform.<br />
+		If the uniform's value property is an [page:Object] with a clone() method, this is used, otherwise the value is copied by assigment.
+		Array values are shared between cloned [page:Uniform]s.<br /><br />
+		See [example:webgldeferred_animation WebGL deferred animation] for an example of this method in use.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 54 - 0
docs/api/core/bufferAttributeTypes/BufferAttributeTypes.html

@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:BufferAttribute] &rarr;
+
+		<h1>BufferAttribute Types</h1>
+
+		<div class="desc">
+		There are nine types of [page:BufferAttribute] available in Three. These correspond to the JavaScript
+		[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax Typed Arrays].
+		</div>
+
+		<code>
+		THREE.Float64BufferAttribute
+		THREE.Float32BufferAttribute
+		THREE.Uint32BufferAttribute
+		THREE.Int32BufferAttribute
+		THREE.Uint16BufferAttribute
+		THREE.Int16BufferAttribute
+		THREE.Uint8ClampedBufferAttribute
+		THREE.Uint8BufferAttribute
+		THREE.Int8BufferAttribute
+		</code>
+
+		<h2>Constructor</h2>
+
+		All of the above are called in the same way.
+		<h3>TypedBufferAttribute( [page:Array array], [page:Integer itemSize] )</h3>
+		<div>
+			array -- this can be a typed or untyped (normal) array. It will be converted to the Type specified.<br /><br />
+
+			itemSize -- the number of values of the array that should be associated with a particular vertex.
+		</div>
+
+		<h2>Properties</h2>
+
+		See the [page:BufferAttribute] page for inherited properties.
+
+		<h2>Methods</h2>
+
+		See the [page:BufferAttribute] page for inherited methods.
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/core/BufferAttribute.js src/core/BufferAttribute.js]
+	</body>
+</html>

+ 577 - 0
docs/api/deprecated/DeprecatedList.html

@@ -0,0 +1,577 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>Deprecated API List</h1>
+
+		<div>
+			As Three.js has a rapidly evolving interface, you may come across examples that
+			suggest the use of API elements that are no longer part of the core.<br /><br />
+
+			Below is a list of such elements, along with info regarding their replacements.
+		</div>
+
+
+
+
+
+
+
+
+
+
+		<h2>Audio</h2>
+
+		<h3>[page:Audio]</h3>
+		<div>Audio.load has been deprecated. Use [page:AudioLoader] instead.</div>
+
+		<h3>[page:AudioAnalyser]</h3>
+		<div>AudioAnalyser.getData() has been renamed to [page:AudioAnalyser.getFrequencyData]().</div>
+
+
+
+
+
+
+
+
+
+
+
+
+		<h2>Buffers</h2>
+
+		<h3>[page:BufferAttribute]</h3>
+		<div>BufferAttribute.length has been renamed to [page:BufferAttribute.count].</div>
+
+
+		<h3>[page:DynamicBufferAttribute]</h3>
+		<div>DynamicBufferAttribute has been removed. Use [page:BufferAttribute.setDynamic]( true ) instead.</div>
+
+		<h3>[page:Int8Attribute]</h3>
+		<div>Int8Attribute has been removed. Use [page:BufferAttributeTypes Int8BufferAttribute] instead.</div>
+
+		<h3>[page:Uint8Attribute]</h3>
+		<div>Uint8Attribute has been removed. Use [page:BufferAttributeTypes Uint8BufferAttribute] instead.</div>
+
+		<h3>[page:Uint8ClampedAttribute]</h3>
+		<div>Uint8ClampedAttribute has been removed. Use [page:BufferAttributeTypes Uint8ClampedBufferAttribute] instead.</div>
+
+		<h3>[page:Int16Attribute]</h3>
+		<div>Int16Attribute has been removed. Use [page:BufferAttributeTypes Int16BufferAttribute] instead.</div>
+
+		<h3>[page:Uint16Attribute]</h3>
+		<div>Uint16Attribute has been removed. Use [page:BufferAttributeTypes Uint16BufferAttribute] instead.</div>
+
+		<h3>[page:Int32Attribute]</h3>
+		<div>Int32Attribute has been removed. Use [page:BufferAttributeTypes Int32BufferAttribute] instead.</div>
+
+		<h3>[page:Uint32Attribute]</h3>
+		<div>Uint32Attribute has been removed. Use [page:BufferAttributeTypes Uint32BufferAttribute] instead.</div>
+
+		<h3>[page:Float32Attribute]</h3>
+		<div>Float32Attribute has been removed. Use [page:BufferAttributeTypes Float32BufferAttribute] instead.</div>
+
+		<h3>[page:Float64Attribute]</h3>
+		<div>Float64Attribute has been removed. Use [page:BufferAttributeTypes Float64BufferAttribute] instead.</div>
+
+
+
+
+
+
+
+		<h2>Cameras</h2>
+
+		<h3>[page:PerspectiveCamera]</h3>
+		<div>
+		PerspectiveCamera.setLens() is deprecated. Use [page:PerspectiveCamera.setFocalLength]()
+		 and [page:PerspectiveCamera.filmGauge]() for a photographic setup.
+		</div>
+
+
+
+
+
+
+
+		<h2>Constants</h2>
+
+		<h3>[page:LineStrip]</h3>
+
+		<h3>[page:LinePieces]</h3>
+		<div>
+		LinePieces mode is no longer supported for [page:Line]s. Create a [page:LineSegments] instead.
+		</div>
+
+
+
+
+
+		<h2>Core</h2>
+
+		<h3>[page:EventDispatcher]</h3>
+		<div>EventDispatcher.apply has been has been removed. Inherit or Object.assign the prototype to mix-in instead.</div>
+
+		<h3>[page:Raycaster]</h3>
+		<div>Raycaster.params.PointCloud has been renamed to [page:Raycaster.params.Points].</div>
+
+
+		<h3>[page:Uniform]</h3>
+		<div>
+			Uniform.dynamic has been has been removed. Use object.onBeforeRender() instead.<br /><br />
+
+			Uniform.onUpdate has been has been removed. Use object.onBeforeRender() instead.
+		</div>
+
+
+
+
+
+
+		<h2>Extras</h2>
+
+		<h3>[page:ClosedSplineCurve3]</h3>
+		<div>ClosedSplineCurve3 has been deprecated. Use [page:CatmullRomCurve3] instead.</div>
+
+
+
+
+
+
+
+
+		<h2>Geometry</h2>
+
+		<h3>[page:BufferGeometry]</h3>
+		<div>
+			BufferGeometry.addIndex has been renamed to [page:BufferGeometry.setIndex].<br /><br />
+
+			BufferGeometry.addDrawCall is now [page:BufferGeometry.addGroup].<br /><br />
+
+			BufferGeometry.clearDrawCalls is now [page:BufferGeometry.clearGroups].<br /><br />
+
+			BufferGeometry.computeTangents has been removed.<br /><br />
+
+			BufferGeometry.computeOffsets has been removed.<br /><br />
+
+			BufferGeometry.drawcalls has been renamed to [page:BufferGeometry.groups].<br /><br />
+
+			BufferGeometry.offsets has been renamed to [page:BufferGeometry.groups].<br /><br />
+
+		</div>
+
+		<h3>[page:CubeGeometry]</h3>
+		<div>CubeGeometry has been renamed to [page:BoxGeometry].</div>
+
+		<h3>[page:Geometry]</h3>
+		<div>Geometry.computeTangents() has been removed.</div>
+
+		<h3>[page:GeometryUtils]</h3>
+		<div>
+			GeometryUtils.merge has been moved to [page:Geometry]. Use [page:Geometry.merge]( geometry2, matrix, materialIndexOffset ) instead.<br /><br />
+
+			GeometryUtils.center has been moved to [page:Geometry]. Use [page:Geometry.center]( ) instead.
+		</div>
+
+		<h3>[page:Plane]</h3>
+		<div>
+			Plane.isIntersectionLine]() has been renamed to	[page:Plane.intersectsLine]().
+		</div>
+
+
+
+
+
+
+
+
+		<h2>Helpers</h2>
+
+		<h3>[page:BoundingBoxHelper]</h3>
+		<div>BoundingBoxHelper has been deprecated. Use [page:BoxHelper] instead.</div>
+
+		<h3>[page:EdgesHelper]</h3>
+		<div>EdgesHelper has been removed. Use [page:EdgesGeometry] instead.</div>
+
+		<h3>[page:GridHelper]</h3>
+		<div>GridHelper.setColors() has been deprecated, pass them in the constructor instead.</div>
+
+		<h3>[page:WireframeHelper WireframeHelper]</h3>
+		<div>WireframeHelper has been removed. Use [page:WireframeGeometry] instead.</div>
+
+
+
+
+		<h2>Lights</h2>
+
+		<h3>[page:Light]</h3>
+		<div>
+			Light.onlyShadow has been removed.<br /><br />
+
+			Light.shadowCameraLeft is now [page:Light.shadow.camera.left].<br /><br />
+
+			Light.shadowCameraRight is now [page:Light.shadow.camera.right].<br /><br />
+
+			Light.shadowCameraTop is now [page:Light.shadow.camera.top].<br /><br />
+
+			Light.shadowCameraBottom is now [page:Light.shadow.camera.bottom].<br /><br />
+
+			Light.shadowCameraNear is now [page:Light.shadow.camera.near].<br /><br />
+
+			Light.shadowCameraFar is now [page:Light.shadow.camera.far].<br /><br />
+
+			Light.shadowCameraVisible has been removed. Use [page:CameraHelper] ( light.shadow.camera ) instead.<br /><br />
+
+			Light.shadowMapWidth is now [page:Light.shadow.mapSize.width].<br /><br />
+
+			Light.shadowMapHeight is now [page:Light.shadow.mapSize.height].
+		</div>
+
+
+
+
+
+
+
+
+		<h2>Loaders</h2>
+
+		<h3>[page:XHRLoader]</h3>
+		<div>XHRLoader has been renamed to [page:FileLoader].</div>
+
+
+
+
+
+
+
+
+		<h2>Maths</h2>
+
+		<h3>[page:Box2]</h3>
+		<div>
+			Box2.center has been renamed to [page:Box2.getCenter]().<br /><br />
+
+			Box2.empty has been renamed to [page:Box2.isEmpty]().<br /><br />
+
+			Box2.isIntersectionBox has been renamed to [page:Box2.intersectsBox]().<br /><br />
+
+			Box2.size has been renamed to [page:Box2.getSize]().
+
+		</div>
+
+		<h3>[page:Box3]</h3>
+		<div>
+			Box3.center has been renamed to [page:Box3.getCenter]().<br /><br />
+
+			Box3.empty has been renamed to [page:Box3.isEmpty]().<br /><br />
+
+			Box3.isIntersectionBox has been renamed to [page:Box3.intersectsBox]().<br /><br />
+
+			Box3.isIntersectionSphere has been renamed to [page:Box3.intersectsSphere]().<br /><br />
+
+			Box3.size has been renamed to [page:Box3.getSize]().
+		</div>
+
+		<h3>[page:Face4]</h3>
+		<div>Face4 has been removed. Use [page:Face3] instead.</div>
+
+		<h3>[page:Line3]</h3>
+		<div>Line3.center has been renamed to [page:Line3.getCenter]().</div>
+
+		<h3>[page:Math]</h3>
+		<div>
+			Math.random16() has been deprecated. Use Math.random() instead.
+		</div>
+
+		<h3>[page:Matrix3]</h3>
+		<div>
+			Matrix3.flattenToArrayOffset is deprecated. Use [page:Matrix3.toArray]() instead.<br /><br />
+
+			Matrix3.multiplyVector3 has been removed. Use vector.applyMatrix3( matrix ) instead.<br /><br />
+
+			Matrix3.multiplyVector3Array has been renamed to [page:Matrix3.applyToVector3Array]( array ).
+		<div>
+
+		<h3>[page:Matrix4]</h3>
+		<div>
+			Matrix4.flattenToArrayOffset is deprecated. Use [page:Matrix4.toArray]() instead.<br /><br />
+
+			Matrix4.extractPosition() has been renamed to [page:Matrix4.copyPosition]( matrix ).<br /><br />
+
+			Matrix4.getPosition() has been removed. Use [page:Vector3.setFromMatrixPosition]( matrix ) instead.<br /><br />
+
+			Matrix4.setRotationFromQuaternion() has been renamed to [page:Matrix4.makeRotationFromQuaternion]( quaternion ).<br /><br />
+
+			Matrix4.multiplyVector3 has been has been removed. Use vector.applyMatrix4( matrix )
+			or vector.applyProjection( matrix ) instead.<br /><br />
+
+			Matrix4.multiplyVector4 has been removed. Use vector.applyMatrix4( matrix ) instead.<br /><br />
+
+			Matrix4.multiplyVector3Array has been renamed to [page:Matrix4.applyToVector3Array] (array ).<br /><br />
+
+			Matrix4.rotateAxis has been removed. Use [page:Matrix4.transformDirection]( matrix ) instead.<br /><br />
+
+			Matrix4.crossVector has been removed. Use vector.applyMatrix4( matrix ) instead.<br /><br />
+
+			Matrix4.rotateX has been removed.<br /><br />
+
+			Matrix4.rotateY has been removed.<br /><br />
+
+			Matrix4.rotateZ has been removed.<br /><br />
+
+			Matrix4.rotateByAxis has been removed.
+		</div>
+
+
+		<h3>[page:Quaternion.multiplyVector3]</h3>
+		<div>Quaternion.multiplyVector3() has been removed. Use vector.applyQuaternion( quaternion ) instead.</div>
+
+		<h3>[page:Ray]</h3>
+		<div>
+			Ray.isIntersectionBox() has been renamed to [page:Ray.intersectsBox]().<br /><br />
+
+			Ray.isIntersectionPlane has been renamed to [page:Ray.intersectsPlane].<br /><br />
+
+			Ray.isIntersectionSphere has been renamed to [page:Ray.intersectsSphere].
+		</div>
+
+
+		<h3>[page:Vector3]</h3>
+		<div>
+			Vector3.setEulerFromRotationMatrix() has been removed. Use [page:Euler.setFromRotationMatrix]() instead.<br /><br />
+
+			Vector3.setEulerFromQuaternion() has been removed. Use [page:Euler.setFromQuaternion]() instead.<br /><br />
+
+			Vector3.getPositionFromMatrix() has been renamed to [page:Vector3.setFromMatrixPosition]().<br /><br />
+
+			Vector3.getScaleFromMatrix() has been renamed to [page:Vector3.setFromMatrixScale]().<br /><br />
+
+			Vector3.getColumnFromMatrix() has been renamed to [page:Vector3.setFromMatrixColumn]().
+		</div>
+
+		<h3>[page:Vertex]</h3>
+		<div>Vertex has been removed. Use [page:Vector3] instead.</div>
+
+
+
+
+
+
+
+
+
+
+
+
+		<h2>Materials</h2>
+
+		<h3>[page:Material]</h3>
+		<div>
+			Material.wrapAround has been removed.<br /><br />
+
+			Material.wrapRGB has been removed.
+
+		</div>
+
+		<h3>[page:MeshFaceMaterial]</h3>
+		<div>MeshFaceMaterial has been removed. Use [page:MultiMaterial] instead.</div>
+
+		<h3>[page:MeshPhongMaterial]</h3>
+		<div>MeshPhongMaterial.metal has been removed. Use [page:MeshStandardMaterial] instead.</div>
+
+		<h3>[page:ParticleBasicMaterial]</h3>
+		<div>ParticleBasicMaterial has been renamed to [page:PointsMaterial].</div>
+
+		<h3>[page:ParticleSystemMaterial]</h3>
+		<div>ParticleBasicMaterial has been renamed to [page:PointsMaterial].</div>
+
+		<h3>[page:PointCloudMaterial]</h3>
+		<div>PointCloudMaterial has been renamed to [page:PointsMaterial].</div>
+
+		<h3>[page:ShaderMaterial.derivatives]</h3>
+		<div>ShaderMaterial.derivatives has been moved to [page:ShaderMaterial.extensions.derivatives].</div>
+
+
+
+
+
+
+
+
+		<h2>Objects</h2>
+
+		<h3>[page:LOD.objects]</h3>
+		<div>LOD.objects has been renamed to [page:LOD.levels].</div>
+
+		<h3>[page:Object3D]</h3>
+		<div>
+			Object3D.eulerOrder is now [page:Object3D.rotation.order].<br /><br />
+
+			Object3D.getChildByName() has been renamed to [page:Object3D.getObjectByName]().<br /><br />
+
+			Object3D.renderDepth has been removed. Use [page:Object3D.renderOrder] instead.<br /><br />
+
+			Object3D.translate() has been removed. Use [page:Object3D.translateOnAxis]( axis, distance ) instead.<br /><br />
+
+			Object3D.useQuaternion has been removed. The library now uses quaternions by default.
+		</div>
+
+
+		<h3>[page:Particle]</h3>
+		<div>ParticleSystem has been renamed to [page:Sprite].</div>
+
+		<h3>[page:ParticleSystem]</h3>
+		<div>ParticleSystem has been renamed to [page:Points].</div>
+
+		<h3>[page:PointCloud]</h3>
+		<div>PointCloud has been renamed to [page:Points].</div>
+
+		<h3>[page:Shape]</h3>
+		<div>
+			Shape.extrude has been removed. Use [page:ExtrudeGeometry] instead.<br /><br />
+
+			Shape.makeGeometry has been removed. Use [page:ShapeGeometry] instead.
+		</div>
+
+
+
+
+
+
+
+
+		<h2>Renderer</h2>
+
+		<h3>[page:Projector]</h3>
+		<div>
+			CanvasRenderer has been moved to [link:https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/CanvasRenderer.js /examples/js/renderers/CanvasRenderer.js].
+		</div>
+
+		<h3>[page:Projector]</h3>
+		<div>
+			Projector has been moved to
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/Projector.js 	/examples/js/renderers/Projector.js].<br /><br />
+
+			Projector.projectVector() is now [page:Vector.project]().<br /><br />
+
+			Projector.unprojectVector() is now [page:Vector.unproject]().<br /><br />
+
+			Projector:.pickingRay() is now [page:Raycaster.setFromCamera]().
+		</div>
+
+		<h3>[page:WebGLProgram]</h3>
+		<div>
+			WebGLProgram.uniforms is now [page:	WebGLProgram.getUniforms]().<br /><br />
+
+			WebGLProgram.attributes is now [page:	WebGLProgram.getAttributes]().
+		</div>
+
+		<h3>[page:WebGLRenderer]</h3>
+		<div>
+			WebGLRenderer.supportsFloatTextures() is now [page:WebGLRenderer.extensions.get]( 'OES_texture_float' ).<br /><br />
+
+			WebGLRenderer.supportsHalfFloatTextures() is now [page:WebGLRenderer.extensions.get]( 'OES_texture_half_float' ).<br /><br />
+
+			WebGLRenderer.supportsStandardDerivatives() is now [page:WebGLRenderer.extensions.get]( 'OES_standard_derivatives' ).<br /><br />
+
+			WebGLRenderer.supportsCompressedTextureS3TC() is now [page:WebGLRenderer.extensions.get]( 'WEBGL_compressed_texture_s3tc' ).<br /><br />
+
+			WebGLRenderer.supportsCompressedTexturePVRTC() is now [page:WebGLRenderer.extensions.get]( 'WEBGL_compressed_texture_pvrtc' ).<br /><br />
+
+			WebGLRenderer.supportsBlendMinMax() is now [page:WebGLRenderer.extensions.get]( 'EXT_blend_minmax' ).<br /><br />
+
+			WebGLRenderer.supportsVertexTextures() is now [page:WebGLRenderer.capabilities.vertexTextures].<br /><br />
+
+			WebGLRenderer.supportsInstancedArrays() is now [page:WebGLRenderer.extensions.get]( 'ANGLE_instanced_arrays' ).<br /><br />
+
+			WebGLRenderer.enableScissorTest() is now [page:WebGLRenderer.setScissorTest]().<br /><br />
+
+			WebGLRenderer.initMaterial() has been removed.<br /><br />
+
+			WebGLRenderer.addPrePlugin() has been removed.<br /><br />
+
+			WebGLRenderer.addPostPlugin() has been removed.<br /><br />
+
+			WebGLRenderer.updateShadowMap() has been removed.<br /><br />
+
+			WebGLRenderer.setTexture is deprecated, use [page:WebGLRenderer.setTexture2D]() instead.<br /><br />
+
+			WebGLRenderer.shadowMapEnabled is now [page:WebGLRenderer.shadowMap.enabled].<br /><br />
+
+			WebGLRenderer.shadowMapType is now [page:WebGLRenderer.shadowMap.type].<br /><br />
+
+			WebGLRenderer.shadowMapCullFace is now [page:WebGLRenderer.shadowMap.cullFace].<br /><br />
+
+			WebGLRenderer.shadowMap.cullFace is deprecated. Set [page:WebGLRenderer.shadowMap.renderReverseSided] to true or false instead.
+		</div>
+
+		<h3>[page:WebGLRenderTarget]</h3>
+		<div>
+			WebGLRenderTarget.wrapS is now [page:WebGLRenderTarget.texture.wrapS].<br /><br />
+
+			WebGLRenderTarget.wrapT is now [page:WebGLRenderTarget.texture.wrapT].<br /><br />
+
+			WebGLRenderTarget.magFilter is now [page:WebGLRenderTarget.texture.magFilter].<br /><br />
+
+			WebGLRenderTarget.minFilter is now [page:WebGLRenderTarget.texture.minFilter].<br /><br />
+
+			WebGLRenderTarget.anisotropy is now [page:WebGLRenderTarget.texture.anisotropy].<br /><br />
+
+			WebGLRenderTarget.offset is now [page:WebGLRenderTarget.texture.offset].<br /><br />
+
+			WebGLRenderTarget.repeat is now [page:WebGLRenderTarget.texture.repeat].<br /><br />
+
+			WebGLRenderTarget.format is now [page:WebGLRenderTarget.texture.format].<br /><br />
+
+			WebGLRenderTarget.type is now [page:WebGLRenderTarget.texture.type].<br /><br />
+
+			WebGLRenderTarget.generateMipmaps is now [page:WebGLRenderTarget.texture.generateMipmaps].
+		</div>
+
+
+
+
+
+
+
+		<h2>Shaders</h2>
+
+		<h3>[page:UniformsUtils]</h3>
+		<div>
+			UniformsUtils.merge() has been deprecated. Use Object.assign() instead.<br /><br />
+
+			UniformsUtils.clone() has been deprecated.
+		</div>
+
+
+
+
+
+
+
+		<h2>Textures</h2>
+
+		<h3>[page:ImageUtils]</h3>
+		<div>
+			ImageUtils.loadTexture has been deprecated. Use [page:TextureLoader] instead.<br /><br />
+
+			ImageUtils.loadTextureCube has been deprecated. Use [page:CubeTextureLoader] instead.<br /><br />
+
+			ImageUtils.loadCompressedTexture has been removed. Use [page:DDSLoader] instead.<br /><br />
+
+			ImageUtils.loadCompressedTextureCube has been removed. Use [page:DDSLoader] instead.
+		</div>
+
+
+
+
+		</body>
+</html>

+ 63 - 0
docs/api/extras/CurveUtils.html

@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<div class="desc">
+		A class containing utility functions for curves.<br />
+
+		Note that these are all linear functions so it is neccessary to calculate seperately for
+		x, y (and z, w if present) components of a curve.
+		</div>
+
+
+		<h2>Methods</h2>
+
+		<h3>[method:Number interpolate]( p0, p1, p2, p3, t )</h3>
+		<div>
+		t -- interpolation weight. <br />
+		p0, p1, p2, p4 -- the points defining the spline curve.<br /><br />
+
+		Used internally by [page:SplineCurve SplineCurve] and [page:SplineCurve3 SplineCurve3].
+		</div>
+
+		<h3>[method:Number tangentQuadraticBezier]( t, p0, p1, p2 )</h3>
+		<div>
+		t -- the point at which to calculate the tangent. <br />
+		p0, p1, p2 -- the three points defining the quadratic Bézier curve.<br /><br />
+
+		Calculate the tangent at the point t on a quadratic Bézier curve given by the three points.<br /><br />
+
+		Used internally by [page:QuadraticBezierCurve QuadraticBezierCurve].
+		</div>
+
+		<h3>[method:Number tangentCubicBezier]( t, p0, p1, p2, p3 )</h3>
+		<div>
+		t -- the point at which to calculate the tangent. <br />
+		p0, p1, p2, p3 -- the points defining the cubic Bézier curve.<br /><br />
+
+		Calculate the tangent at the point t on a cubic Bézier curve given by the four points.<br /><br />
+
+		Used internally by [page:CubicBezierCurve CubicBezierCurve].
+		</div>
+
+		<h3>[method:Number tangentSpline]( t, p0, p1, p2, p3 )</h3>
+		<div>
+		t -- the point at which to calculate the tangent. <br />
+		p0, p1, p2, p3 -- the points defining the spline curve.<br /><br />
+
+		Calculate the tangent at the point t on a spline curve given by the four points.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 4 - 4
docs/api/extras/SceneUtils.html

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html lang="en">
 	<head>
-		<meta charset="utf-8" />
+		<meta charset="utf-8" />
 		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
@@ -16,7 +16,7 @@
 		<h2>Methods</h2>
 
 
-		<h3>[method:Object3D createMultiMaterialObject]([page:Geometry geometry], [page:Array materials])</h3>
+		<h3>[method:Object3D createMultiMaterialObject]( [page:Geometry geometry], [page:Array materials] )</h3>
 		<div>
 		geometry -- The geometry for the Object. <br />
 		materials -- The materials for the object.
@@ -26,7 +26,7 @@
 		This is mostly useful for object that need a material and a wireframe implementation.
 		</div>
 
-		<h3>[method:null attach]([page:Object3D child], [page:Object3D scene], [page:Object3D parent])</h3>
+		<h3>[method:null attach]( [page:Object3D child], [page:Object3D scene], [page:Object3D parent] )</h3>
 		<div>
 		child -- The object to add to the parent  <br />
 		scene -- The scene to detach the object on. <br />
@@ -36,7 +36,7 @@
 		Attaches the object to the parent without the moving the object in the worldspace. Beware that to do this the matrixWorld needs to be updated, this can be done by calling the updateMatrixWorld method on the parent object.
 		</div>
 
-		<h3>[method:null detach]([page:Object3D child], [page:Object3D parent], [page:Object3D scene])</h3>
+		<h3>[method:null detach]( [page:Object3D child], [page:Object3D parent], [page:Object3D scene] )</h3>
 		<div>
 		child -- The object to remove from the parent  <br />
 		scene -- The scene to attach the object on. <br />

+ 88 - 0
docs/api/extras/ShapeUtils.html

@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<div class="desc">
+		A class containing utility functions for shapes.<br />
+
+		Note that these are all linear functions so it is neccessary to calculate seperately for
+		x, y (an z, w if present) components of a vector.
+		</div>
+
+
+		<h2>Methods</h2>
+
+		<h3>[method:Number area]( contour )</h3>
+		<div>
+		contour -- 2D polygon.<br /><br />
+
+		Calculate area of a ( 2D ) contour polygon.<br /><br />
+
+		</div>
+
+		<h3>[method:Number b2]( t, p0, p1, p2 )</h3>
+		<div>
+		t -- number<br />
+		p0, p1, p2 -- x, y, z or w components of a quadratic bezier curve.<br /><br />
+
+		Note that this is a linear function so it is neccessary to calculate seperately for
+		x, y (and z for 3D curves) components of a curve.<br /><br />
+
+		Used internally by [page:QuadraticBezierCurve QuadraticBezierCurve],
+		[page:QuadraticBezierCurve3 QuadraticBezierCurve3] and [page:Font Font].
+		</div>
+
+		<h3>[method:Number b3]( t, p0, p1, p2, p3 )</h3>
+		<div>
+		t -- number. <br />
+		p0, p1, p2, p3 -- x, y or z components of a cubic bezier curve..<br /><br />
+
+		Note that this is a linear function so it is neccessary to calculate seperately for
+		x, y (and z for 3D curves) components of a curve.<br /><br />
+
+		Used internally by [page:CubicBezierCurve CubicBezierCurve],
+		[page:CubicBezierCurve3 CubicBezierCurve3] and [page:Font Font].
+		</div>
+
+		<h3>[method:Boolean isClockwise]( pts )</h3>
+		<div>
+		pts -- points defining a 2D polygon<br /><br />
+
+		Note that this is a linear function so it is neccessary to calculate seperately for
+		x, y  components of a polygon.<br /><br />
+
+		Used internally by [page:Path Path],
+		[page:ExtrudeGeometry ExtrudeGeometry] and [page:ShapeBufferGeometry ShapeBufferGeometry].
+		</div>
+
+		<h3>[method:null triangulate]( contour, indices )</h3>
+		<div>
+		contour --  2D polygon.<br />
+		indices -- <br /><br />
+
+		Used internally by [page:ExtrudeGeometry ExtrudeGeometry]
+		and [page:ShapeBufferGeometry ShapeBufferGeometry] to calculate faces.
+		</div>
+
+		<h3>[method:null triangulateShape]( contour, holes )</h3>
+		<div>
+		contour -- 2D polygon.<br />
+		holes -- array of holes<br /><br />
+
+		Used internally by [page:ExtrudeGeometry ExtrudeGeometry]
+		and [page:ShapeBufferGeometry ShapeBufferGeometry] to calculate faces in shapes with holes.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 42 - 16
docs/api/extras/core/Curve.html

@@ -17,7 +17,7 @@
 
 		<h2>Examples</h2>
 
-		<h3>[example:webgl_geometry_extrude_splines geometry / extrude / splines ]
+		<h3>[example:webgl_geometry_extrude_splines geometry / extrude / splines ]</h3>
 
 		<h2>Constructor</h2>
 
@@ -30,36 +30,62 @@
 
 		<h2>Methods</h2>
 
-		<h3>[method:Vector getPoint]( t )</h3>
+		<h3>[method:Vector getPoint]( [page:Number t] )</h3>
 		<div>Returns a vector for point t of the curve where t is between 0 and 1. Must be implemented in the extending class.</div>
 
-		<h3>[method:Vector getPointAt]( u )</h3>
-		<div>Returns a vector for point at relative position in curve according to arc length</div>
+		<h3>[method:Vector getPointAt]( [page:Number u] )</h3>
+		<div>
+			Returns a vector for point at a relative position in curve according to arc length.
+			u is in the range [0, 1].
+		</div>
+
+		<h3>[method:Array getPoints]( [page:integer divisions] )</h3>
+		<div>
+			divisions -- number of pieces to divide the curve into. Default is *5*.<br /><br />
 
-		<h3>[method:Array getPoints]( divisions )</h3>
-		<div>Get sequence of points using getPoint( t ) </div>
+			Returns a set of divisions + 1 points using getPoint( t ).
+		</div>
 
 		<h3>[method:Array getSpacedPoints]( divisions )</h3>
-		<div>Get sequence of equi-spaced points using getPointAt( u )</div>
+		<div>
+			divisions -- number of pieces to divide the curve into. Default is *5*.<br /><br />
+
+			Returns a set of divisions + 1 equi-spaced points using getPointAt( u ).
+		</div>
 
 		<h3>[method:Float getLength]()</h3>
-		<div>Get total curve arc length</div>
+		<div>Get total curve arc length.</div>
 
 		<h3>[method:Array getLengths]( divisions )</h3>
-		<div>Get list of cumulative segment lengths</div>
+		<div>Get list of cumulative segment lengths.</div>
 
 		<h3>[method:null updateArcLengths]()</h3>
-		<div>Update the cumlative segment distance cache</div>
+		<div>Update the cumlative segment distance cache.</div>
 
-		<h3>[method:Float getUtoTmapping]( u, distance )</h3>
-		<div>Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant</div>
+		<h3>[method:Float getUtoTmapping]( [page:Number u], distance )</h3>
+		<div>
+			Given u in the range ( 0 .. 1 ), returns [page:Number t] also in the range ( 0 .. 1 ).
+			u and t can then be used to give you points which are equidistant from the ends of the curve,
+			using [page:.getPoint].
+		 </div>
 
-		<h3>[method:Vector getTangent]( t )</h3>
-		<div>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</div>
+		<h3>[method:Vector getTangent]( [page:Number t] )</h3>
+		<div>
+			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
+		</div>
 
-		<h3>[method:Vector getTangentAt]( u )</h3>
-		<div>Returns tangent at equidistant point u on the curve</div>
+		<h3>[method:Vector getTangentAt]( [page:Number u] )</h3>
+		<div>
+			Returns tangent at a point which is equidistant to the ends of the curve from the
+			point given in [page:.getTangent].
+		</div>
 
+		<h3>[method:Object computeFrenetFrames]( segments, closed )</h3>
+		<div>
+		Generates the Frenet Frames. Used in geometries like [page:TubeGeometry] or [page:ExtrudeGeometry].
+		</div>
 
 		<h2>Source</h2>
 

+ 25 - 84
docs/api/extras/core/CurvePath.html

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html lang="en">
 	<head>
-		<meta charset="utf-8" />
+		<meta charset="utf-8" />
 		<base href="../../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
@@ -13,7 +13,7 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-		An abstract base class further extending [page:Curve]. A CurvePath is simply an array of connected curves,
+		An abstract base class extending [page:Curve]. A CurvePath is simply an array of connected curves,
 		but retains the api of a curve.
 		</div>
 
@@ -28,112 +28,53 @@
 
 
 		<h2>Properties</h2>
-
+		<div>See the base [page:Curve] class for common properties.</div>
 
 		<h3>[property:array curves]</h3>
-		<div>
-		The array of [page:Curve]s
-		</div>
-
-		<h3>[property:array bends]</h3>
-		<div>
-		An array of [page:Curve]s used to transform and bend the curve using [page:CurvePath.getWrapPoints].
-		</div>
+		<div>The array of [page:Curve Curves].</div>
 
 		<h3>[property:boolean autoClose]</h3>
-		<div>
-		Whether or not to automatically close the path.
-		</div>
+		<div>Whether or not to automatically close the path.</div>
+
+
+
+
 
 		<h2>Methods</h2>
+		<div>See the base [page:Curve] class for common methods.</div>
 
+		<h3>[method:null add]( [page:Curve curve] )</h3>
+		<div>Add a curve to the [page:.curves] array.</div>
 
-		<h3>[method:Array getWrapPoints]([page:Array vertices], [page:Curve curve])</h3>
-		<div>
-		vertices -- An array of [page:Vector2]s to modify<br />
-		curve -- An array of 2d [page:Curve]s
-		</div>
-		<div>
-		Modifies the array of vertices by warping it by the curve. The curve parameter also accepts objects with similar
-		interfaces such as [page:CurvePath], [page:Path], [page:SplineCurve], etc. Returns the original vertices after
-		modification.
-		</div>
+		<h3>[method:null closePath]()</h3>
+		<div>Adds a [page:LineCurve lineCurve] to close the path.</div>
 
-		<h3>[method:null addWrapPath]([page:Curve curve])</h3>
-		<div>
-		curve -- A [page:Curve] or object with a similar interface.
-		</div>
+		<h3>[method:Geometry createGeometry]( [page:Vector3 points] )</h3>
 		<div>
-		Pushes a curve onto the bends array.
-		</div>
+		points -- An array of [page:Vector3 Vector3s]<br /><br />
 
-		<h3>[method:Geometry createGeometry]([page:Vector3 points])</h3>
-		<div>
-		points -- An array of [page:Vector3]s
-		</div>
-		<div>
 		Creates a geometry from points
 		</div>
 
-		<h3>[method:Geometry createPointsGeometry]([page:Integer divisions])</h3>
-		<div>
-		divisions -- How many segments to create with [page:Vector3]s. Defaults to 12.
-		</div>
+		<h3>[method:Geometry createPointsGeometry]( [page:Integer divisions] )</h3>
 		<div>
-		Creates a [page:Geometry] object comprised of [page:Vector3]s
-		</div>
-
-		<h3>[method:Geometry createSpacedPointsGeometry]([page:Integer divisions])</h3>
-		<div>
-		divisions -- How many segments to create with [page:Vector3]s. Defaults to 12.
-		</div>
-		<div>
-		Creates a [page:Geometry] object comprised of [page:Vector3]s that are equidistant.
-		</div>
+		divisions -- How many segments to create. Defaults to *12*.<br /><br />
 
-
-		<h3>[method:null add]([page:Curve curve])</h3>
-		<div>
-		curve -- The [page:Curve curve] to add
-		</div>
-		<div>
-		Pushes a curve onto the curves array.
+		Creates a [page:Geometry] object comprised of [page:Vector3 Vector3s], for example
+		to be used with [page:Line] or [page:Points]. Uses [page:Curve.getPoints]() for the division.
 		</div>
 
-		<h3>[method:null closePath]()</h3>
+		<h3>[method:Geometry createSpacedPointsGeometry]( [page:Integer divisions] )</h3>
 		<div>
-		Adds a curve to close the path.
-		</div>
+		divisions -- How many segments to create. Defaults to *12*.<br /><br />
 
-		<h3>[method:Object getBoundingBox]()</h3>
-		<div>
-		Returns an object with the keys minX, minY, maxX, maxY, (if 3d: maxZ, minZ)
+		Creates a [page:Geometry] object comprised of [page:Vector3]s that are equidistant, for example
+		to be used with [page:Line] or [page:Points].	Uses [page:Curve.getSpacedPoints]() for the division.
 		</div>
 
 		<h3>[method:Float getCurveLengths]()</h3>
-		<div>
-		Adds together the length of the curves
-		</div>
-
-		<h3>[method:Array getTransformedPoints]([page:Integer segments], [page:Array bends])</h3>
-		<div>
-		segments -- The number of segments to create using the getPoints()<br />
-		bends -- (optional) An array of [page:Curve]s used to transform the points. Defaults to this.bends if blank.
-		</div>
-		<div>
-		Uses this CurvePath to generate a series of points transformed by the curves in the bends array. Returns an
-		array of [page:Vector2]s.
-		</div>
+		<div>Adds together the lengths of the curves in the [page:.curves] array.</div>
 
-		<h3>[method:Array getTransformedSpacedPoints]([page:Integer segments], [page:Array bends])</h3>
-		<div>
-		segments -- The number of segments to create using the getPoints()<br />
-		bends -- (optional) Defaults to this.bends if blank. An array of [page:Curve]s used to transform the points.
-		</div>
-		<div>
-		Uses this CurvePath to generate a series equidistant points that are then transformed by the curves in the bends.
-	    Returns an array of [page:Vector2]s.
-		</div>
 
 		<h2>Source</h2>
 

+ 55 - 0
docs/api/extras/core/Font.html

@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<div class="desc">
+		Create a set of [page:Shape Shapes] representing a font loaded in JSON format.<br /><br />
+
+		This is used internally by the [page:FontLoader].
+		</div>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( data )</h3>
+		<div>
+		data -- JSON data representing the font.<br /><br />
+
+		This constructor creates a new [name], which is an array of [page:Shape Shapes].
+		</div>
+
+		<h2>Properties</h2>
+
+		<h3>[property:array data]</h3>
+		<div>The JSON data passed in the constructor.</div>
+
+		<h3>[property:Boolean isFont]</h3>
+		<div>
+			Used to check whether this or derived classes are fonts. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally by the renderer for optimisation.
+		</div>
+
+		<h2>Methods</h2>
+
+		<h3>[method:null generateShapes]( [page:String text], [page:Float size], [page:Integer divisions] )</h3>
+		<div>
+			[page:String text] -- string of text.<br />
+			[page:Float size] -- (optional) scale for the [page:Shape Shapes]. Default is *100*.<br />
+			[page:Integer divisions] -- (optional) fineness of the [page:Shape Shapes]. Default is *5*.<br />
+
+			Creates an array of [page:Shape Shapes] representing the text in the font.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 83 - 68
docs/api/extras/core/Path.html

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html lang="en">
 	<head>
-		<meta charset="utf-8" />
+		<meta charset="utf-8" />
 		<base href="../../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
@@ -13,111 +13,126 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-		A 2d path representation, comprising of points, lines, and cubes, similar to the html5 2d canvas api.
+		A 2d path representation, comprising of points, lines, and cubes, similar to the 2D Canvas API.
 		It extends [page:CurvePath].
 		</div>
 
+		<h2>Example</h2>
 
-		<h2>Constructor</h2>
+		<code>
+var v1 = new THREE.Vector3();
+var v2 = new THREE.Vector3(1, 45, 6);
+var v3 = new THREE.Vector3(34, 34, 676);
 
+var vectors = [v1, v2, v3];
 
-		<h3>[name]([page:Array points])</h3>
-		<div>
-		points -- array of Vector2
-		</div>
-		<div>
-		Creates a Path from the points. The first vector defines the offset. After that the lines get defined.
-		</div>
+var path = new THREE.Path(vectors);
+		</code>
 
 
-		<h2>Properties</h2>
+		<h2>Constructor</h2>
 
 
-		<h3>[property:array actions]</h3>
+		<h3>[name]( [page:Array points] )</h3>
 		<div>
-		The possible actions that define the path.
-		</div>
+		points -- (optional) array of [page:Vector2 Vector2s].<br /><br />
 
-		<h2>Methods</h2>
+		Creates a Path from the points. The first point defines the offset, then successive points
+		are added to the [page:CurvePath.curves curves] array as [page:LineCurve LineCurves].<br /><br />
 
-		<h3>[method:null fromPoints]( [page:Array vector2s] )</h3>
-		<div>
-		Adds to the Path from the points. The first vector defines the offset. After that the lines get defined.
+		If no points are specified, an empty path is created and the [page:.currentPoint] is set to
+		the origin.
 		</div>
 
-		<h3>[method:null moveTo]( [page:Float x], [page:Float y] )</h3>
-		<div>This moves the offset to x and y</div>
 
-		<h3>[method:null lineTo]( [page:Float x], [page:Float y] )</h3>
-		<div>This creates a line from the offset to X and Y and updates the offset to X and Y.</div>
+		<h2>Properties</h2>
+		<div>See the base [page:CurvePath] class for common properties.</div>
 
-		<h3>[method:null quadraticCurveTo]( [page:Float cpX], [page:Float cpY], [page:Float x], [page:Float y] )</h3>
-		<div>This creates a quadratic curve from the offset to x and y with cpX and cpY as control point and updates the offset to x and y.</div>
+		<h3>[property:array currentPoint]</h3>
+		<div>The current offset of the path. Any new [page:Curve] added will start here.</div>
 
-		<h3>[method:null bezierCurveTo]( [page:Float cp1X], [page:Float cp1Y], [page:Float cp2X], [page:Float cp2Y], [page:Float x], [page:Float y] )</h3>
-		<div>This creates a bezier curve from the last offset to x and y with cp1X, cp1Y and cp1X, cp1Y as control points and updates the offset to x and y.</div>
 
-		<h3>[method:null splineThru] ( [page:Array points] ) </h3>
-		<div>points - An array of [page:Vector2]s</div>
-		<div>Connects a new [page:SplineCurve] onto the path.</div>
+		<h2>Methods</h2>
+		<div>See the base [page:CurvePath] class for common methods.</div>
 
-		<h3>[method:null arc]( [page:Float x], [page:Float y], [page:Float radius], [page:Float startAngle], [page:Float endAngle], [page:Float clockwise] )</h3>
+		<h3>[method:null absarc]( [page:Float x], [page:Float y], [page:Float radius], [page:Float startAngle], [page:Float endAngle], [page:Float clockwise] )</h3>
 		<div>
-		x, y -- The center of the arc offset from the last call
-		radius -- The radius of the arc
-		startAngle -- The start angle in radians
-		endAngle -- The end angle in radians
-		clockwise -- Sweep the arc clockwise. Defaults to false
+			x, y -- The absolute center of the arc.<br />
+			radius -- The radius of the arc.<br />
+			startAngle -- The start angle in radians.<br />
+			endAngle -- The end angle in radians.<br />
+			clockwise -- Sweep the arc clockwise. Defaults to *false*.<br /><br />
+
+			Adds an absolutely positioned [page:EllipseCurve EllipseCurve] to the path.
 		</div>
-		<div>Draw an arc offset from the last call</div>
 
-		<h3>[method:null absarc]( [page:Float x], [page:Float y], [page:Float radius], [page:Float startAngle], [page:Float endAngle], [page:Float clockwise] )</h3>
+		<h3>[method:null absellipse]( [page:Float x], [page:Float y], [page:Float xRadius], [page:Float yRadius], [page:Float startAngle], [page:Float endAngle], [page:Float clockwise], [page:Float rotation] )</h3>
 		<div>
-		x, y -- The absolute center of the arc
-		radius -- The radius of the arc
-		startAngle -- The start angle in radians
-		endAngle -- The end angle in radians
-		clockwise -- Sweep the arc clockwise. Defaults to false
+			x, y -- The absolute center of the ellipse.<br />
+			xRadius -- The radius of the ellipse in the x axis.<br />
+			yRadius -- The radius of the ellipse in the y axis.<br />
+			startAngle -- The start angle in radians.<br />
+			endAngle -- The end angle in radians.<br />
+			clockwise -- Sweep the ellipse clockwise. Defaults to false.<br />
+			rotation -- The rotation angle of the ellipse in radians, counterclockwise from the positive X axis. Optional, defaults to 0.<br /><br />
+
+			Adds an absolutely positioned [page:EllipseCurve EllipseCurve] to the path.
 		</div>
-		<div>Draw an arc absolutely positioned</div>
 
-		<h3>[method:null ellipse]( [page:Float x], [page:Float y], [page:Float xRadius], [page:Float yRadius], [page:Float startAngle], [page:Float endAngle], [page:Float clockwise], [page:Float rotation] )</h3>
+		<h3>[method:null arc]( [page:Float x], [page:Float y], [page:Float radius], [page:Float startAngle], [page:Float endAngle], [page:Float clockwise] )</h3>
 		<div>
-		x, y -- The center of the ellipse offset from the last call
-		xRadius -- The radius of the ellipse in the x axis
-		yRadius -- The radius of the ellipse in the y axis
-		startAngle -- The start angle in radians
-		endAngle -- The end angle in radians
-		clockwise -- Sweep the ellipse clockwise. Defaults to false
-		rotation -- The rotation angle of the ellipse in radians, counterclockwise from the positive X axis. Optional, defaults to 0
+		x, y -- The center of the arc offset from the last call.<br />
+		radius -- The radius of the arc.<br />
+		startAngle -- The start angle in radians.<br />
+		endAngle -- The end angle in radians.<br />
+		clockwise -- Sweep the arc clockwise. Defaults to *false*.<br /><br />
+
+		Adds an [page:EllipseCurve EllipseCurve] to the path, positioned relative to [page:.currentPoint].
 		</div>
-		<div>Draw an ellipse offset from the last call</div>
 
-		<h3>[method:null absellipse]( [page:Float x], [page:Float y], [page:Float xRadius], [page:Float yRadius], [page:Float startAngle], [page:Float endAngle], [page:Float clockwise], [page:Float rotation] )</h3>
+
+		<h3>[method:null bezierCurveTo]( [page:Float cp1X], [page:Float cp1Y], [page:Float cp2X], [page:Float cp2Y], [page:Float x], [page:Float y] )</h3>
+		<div>This creates a bezier curve from [page:.currentPoint] with cp1X, cp1Y and cp1X, cp1Y as control points and updates [page:.currentPoint] to x and y.</div>
+
+		<h3>[method:null fromPoints]( [page:Array vector2s] )</h3>
 		<div>
-		x, y -- The absolute center of the ellipse
-		xRadius -- The radius of the ellipse in the x axis
-		yRadius -- The radius of the ellipse in the y axis
-		startAngle -- The start angle in radians
-		endAngle -- The end angle in radians
-		clockwise -- Sweep the ellipse clockwise. Defaults to false
-		rotation -- The rotation angle of the ellipse in radians, counterclockwise from the positive X axis. Optional, defaults to 0
+			points --  array of [page:Vector2 Vector2s].<br /><br />
+
+			Adds to the from the points. Points	are added to the [page:CurvePath.curves curves]
+			array as [page:LineCurve LineCurves].
 		</div>
-		<div>Draw an ellipse absolutely positioned</div>
 
-		<h3>[method:Array toShapes]( [page:Boolean isCCW], [page:Boolean noHoles] )</h3>
+		<h3>[method:null ellipse]( [page:Float x], [page:Float y], [page:Float xRadius], [page:Float yRadius], [page:Float startAngle], [page:Float endAngle], [page:Float clockwise], [page:Float rotation] )</h3>
 		<div>
-		isCCW -- Changes how solids and holes are generated<br/>
-		noHoles -- Whether or not to generate holes
+			x, y -- The center of the ellipse offset from the last call.<br />
+			xRadius -- The radius of the ellipse in the x axis.<br />
+			yRadius -- The radius of the ellipse in the y axis.<br />
+			startAngle -- The start angle in radians.<br />
+			endAngle -- The end angle in radians.<br />
+			clockwise -- Sweep the ellipse clockwise. Defaults to *false*.<br />
+			rotation -- The rotation angle of the ellipse in radians, counterclockwise from the positive X axis. Optional, defaults to *0*.<br /><br />
+
+			Adds an [page:EllipseCurve EllipseCurve] to the path, positioned relative to [page:.currentPoint].
 		</div>
+
+		<h3>[method:null lineTo]( [page:Float x], [page:Float y] )</h3>
+		<div>Connects a [page:LineCurve] from [page:.currentPoint] to x, y onto the path.</div>
+
+
+		<h3>[method:null moveTo]( [page:Float x], [page:Float y] )</h3>
+		<div>Move the [page:.currentPoint] to x, y.</div>
+
+
+		<h3>[method:null quadraticCurveTo]( [page:Float cpX], [page:Float cpY], [page:Float x], [page:Float y] )</h3>
+		<div>Creates a quadratic curve from [page:.currentPoint] with cpX and cpY as control point and updates [page:.currentPoint] to x and y.</div>
+
+		<h3>[method:null splineThru] ( [page:Array points] ) </h3>
 		<div>
-		Converts the Path into an array of Shapes. By default solid shapes are defined clockwise (CW) and holes are defined counterclockwise (CCW). If isCCW is set to true,
-		then those are flipped. If the paramater noHoles is set to true then all paths are set as solid shapes and isCCW is ignored.
-		<br/>
+			points - An array of [page:Vector2 Vector2s]<br /><br />
 
+			Connects a new [page:SplineCurve] onto the path.
 		</div>
 
-
 		<h2>Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 18 - 52
docs/api/extras/core/Shape.html

@@ -52,71 +52,37 @@
 
 
 		<h2>Properties</h2>
-
+		<div>See the base [page:Path] class for common properties.</div>
 
 		<h3>[property:array holes]</h3>
-		<div>
-		An array of [page:Path paths] that define the holes in the shape.
-		</div>
+		<div>An array of [page:Path paths] that define the holes in the shape.</div>
 
 		<h2>Methods</h2>
+		<div>See the base [page:Path] class for common methods.</div>
 
-
-		<h3>[method:ShapeGeometry makeGeometry]([page:Object options])</h3>
-		<div>
-		options -- This is passed as the second argument to [page:ShapeGeometry ShapeGeometry]
-		</div>
-		<div>
-		Convenience method to return ShapeGeometry
-		</div>
-
-		<h3>[method:Array extractAllPoints]([page:Integer divisions])</h3>
-		<div>
-		divisions -- The number of divisions to create on the shape
-		</div>
+		<h3>[method:Array extractAllPoints]( [page:Integer divisions] )</h3>
 		<div>
-		Get points of shape and holes (keypoints based on segments parameter)
-		</div>
+		divisions -- The fineness of the result.<br /><br />
 
-		<h3>[method:ExtrudeGeometry extrude]([page:Object options])</h3>
-		<div>
-		options -- This is passed as the second argument to [page:ExtrudeGeometry ExtrudeGeometry]
-		</div>
-		<div>
-		Convenience method to return ExtrudeGeometry
+		Call [page:Curve.getPoints getPoints] on the shape and the [page:.holes] array, and return an object of the form:
+		<code>
+{
+	shape
+	holes
+}
+		</code>
+		where shape and holes are arrays of [page:Vector2 Vector2s].
 		</div>
 
-		<h3>[method:Object extractPoints]([page:Integer divisions])</h3>
-		<div>
-		divisions -- The number of divisions to create on the shape
-		</div>
-		<div>
-		Returns an object with a *shape* and *holes* property that each reference an array of [page:Vector2 Vector2s].
-		</div>
+		<h3>[method:Object extractPoints]( [page:Integer divisions] )</h3>
+		<div>This is identical to [page:.extractAllPoints].</div>
 
-		<h3>[method:Object extractAllSpacedPoints]([page:Integer divisions])</h3>
-		<div>
-		divisions -- The number of divisions to create on the shape
-		</div>
-		<div>
-		Returns an object with a *shape* and *holes* property that each reference an array of [page:Vector2 Vector2s]. The
-		points will all be equally spaced along the shape.
-		</div>
 
-		<h3>[method:Array getPointsHoles]([page:Integer divisions])</h3>
-		<div>
-		divisions -- The number of divisions to create on the shape
-		</div>
+		<h3>[method:Array getPointsHoles]( [page:Integer divisions] )</h3>
 		<div>
-		Get an array of [page Vector2 Vector2s] that represent the holes in the shape.
-		</div>
+		divisions -- The fineness of the result.<br /><br />
 
-		<h3>[method:Array getSpacedPointsHoles]([page:Integer divisions])</h3>
-		<div>
-		divisions -- The number of divisions to create on the shape
-		</div>
-		<div>
-		Get an array of equally spaced [page Vector2 Vector2s] that represent the holes in the shape.
+		Get an array of [page:Vector2 Vector2s] that represent the holes in the shape.
 		</div>
 
 		<h2>Source</h2>

+ 91 - 0
docs/api/extras/core/ShapePath.html

@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:CurvePath] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+		This is class is used to convert a series of shapes to an array of [page:Path]s, for example an SVG shape to a
+		path (see the example below). It is used internally by [page:Font] to convert a font in JSON format to a
+		series of paths.
+		</div>
+
+		<h2>Example</h2>
+
+		[example:webgl_geometry_extrude_shapes2 geometry / extrude / shapes2]
+
+		<h2>Constructor</h2>
+
+
+		<h3>[name](  )</h3>
+		<div>
+		Creates a new ShapePath. Unlike a [page:Path], no points are passed in as the ShapePath is designed to
+		be generated after creation.
+		</div>
+
+
+		<h2>Properties</h2>
+
+		<h3>[property:array subPaths]</h3>
+		<div>
+		Array of [page:Path]s.
+		</div>
+
+		<h3>[property:array currentPath]</h3>
+		<div>
+		The current [page:Path] that is being generated.
+		</div>
+
+		<h2>Methods</h2>
+
+		<h3>[method:null moveTo]( [page:Float x], [page:Float y] )</h3>
+		<div>
+		Starts a new [page:Path] and calls [page:Path.moveTo]( x, y ) on that [page:Path].
+		Also points [page:ShapePath.currentPath currentPath] to that [page:Path].
+		</div>
+
+		<h3>[method:null lineTo]( [page:Float x], [page:Float y] )</h3>
+		<div>This creates a line from the [page:ShapePath.currentPath currentPath]'s
+			offset to X and Y and updates the offset to X and Y.</div>
+
+		<h3>[method:null quadraticCurveTo]( [page:Float cpX], [page:Float cpY], [page:Float x], [page:Float y] )</h3>
+		<div>This creates a quadratic curve from the [page:ShapePath.currentPath currentPath]'s
+			offset to x and y with cpX and cpY as control point and updates the [page:ShapePath.currentPath currentPath]'s
+			offset to x and y.</div>
+
+		<h3>[method:null bezierCurveTo]( [page:Float cp1X], [page:Float cp1Y], [page:Float cp2X], [page:Float cp2Y], [page:Float x], [page:Float y] )</h3>
+		<div>This creates a bezier curve from the [page:ShapePath.currentPath currentPath]'s
+			 offset to x and y with cp1X, cp1Y and cp1X, cp1Y as control points and updates the
+			 [page:ShapePath.currentPath currentPath]'s offset to x and y.</div>
+
+		<h3>[method:null splineThru] ( [page:Array points] ) </h3>
+		<div>points - An array of [page:Vector2]s</div>
+		<div>Connects a new [page:SplineCurve] onto the [page:ShapePath.currentPath currentPath].</div>
+
+
+		<h3>[method:Array toShapes]( [page:Boolean isCCW], [page:Boolean noHoles] )</h3>
+		<div>
+		isCCW -- Changes how solids and holes are generated<br/>
+		noHoles -- Whether or not to generate holes
+		</div>
+		<div>
+		Converts the [page:ShapePath.subPaths subPaths] array into an array of Shapes. By default solid shapes are defined clockwise (CW) and holes are defined counterclockwise (CCW). If isCCW is set to true,
+		then those are flipped. If the paramater noHoles is set to true then all paths are set as solid shapes and isCCW is ignored.
+		<br/>
+
+		</div>
+
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 21 - 10
docs/api/extras/curves/CatmullRomCurve3.html

@@ -12,7 +12,8 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">Create a smooth 3d spline curve from a series of points using the Catmull-Rom algorithm</div>
+		<div class="desc">Create a smooth 3d spline curve from a series of points using the
+			[link:https://en.wikipedia.org/wiki/Centripetal_Catmull-Rom_spline Catmull-Rom] algorithm.</div>
 
 		<h2>Example</h2>
 
@@ -30,6 +31,9 @@ var geometry = new THREE.Geometry();
 geometry.vertices = curve.getPoints( 50 );
 
 var material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
+
+// Create the final object to add to the scene
+var curveObject = new THREE.Line( geometry, material );
 </code>
 
 		<h3>[example:webgl_geometry_extrude_splines geometry / extrude / splines]</h3>
@@ -37,23 +41,30 @@ var material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
 
 		<h2>Constructor</h2>
 
-
 		<h3>[name]( [page:Array points] )</h3>
 		<div>points – An array of [page:Vector3] points</div>
 
+
+
+
 		<h2>Properties</h2>
+		<div>See the base [page:Curve] class for common properties.</div>
 
 		<h3>[property:Array points]</h3>
-		
-		<h3>[property:Boolean closed] – curve loops back onto itself when true. False by default.</h3>
-		
-		<h3>[property:String type] - possible values are `centripetal` (default), `chordal` and `catmullrom`
-			
-		<h3>[property:float tension] - when type is `catmullrom`, defines catmullrom's tension. Defaults to 0.5
+		<div>The array of array of [page:Vector3] points that define the curve.</div>
 
-		<h2>Methods</h2>
+		<h3>[property:Boolean closed]</h3>
+		<div>The curve will loop back onto itself when this is true. False by default</div>
+
+		<h3>[property:String type]</h3>
+		<div>Possible values are `centripetal` (default), `chordal` and `catmullrom`.</div>
+
+		<h3>[property:float tension]</h3>
+		<div>When [page:.type] is `catmullrom`, defines catmullrom's tension. Defaults is *0.5*.</div>
 
-		<h3>See [page:Curve] for inherited methods</h3>
+
+		<h2>Methods</h2>
+		<div>See the base [page:Curve] class for common methods.</div>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 0 - 55
docs/api/extras/curves/ClosedSplineCurve3.html

@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Curve] &rarr;
-
-		<h1>[name]</h1>
-
-		<div class="desc">Create a smooth 3d spline curve from a series of points that loops back onto itself. THREE.ClosedSplineCurve3 has been deprecated. Please use THREE.CatmullRomCurve3</div>
-
-		<h2>Example</h2>
-
-<code>
-//Create a closed wavey loop
-var curve = new THREE.ClosedSplineCurve3( [
-	new THREE.Vector3( -10, 0, 10 ),
-	new THREE.Vector3( -5, 5, 5 ),
-	new THREE.Vector3( 0, 0, 0 ),
-	new THREE.Vector3( 5, -5, 5 ),
-	new THREE.Vector3( 10, 0, 10 )
-] );
-
-var geometry = new THREE.Geometry();
-geometry.vertices = curve.getPoints( 50 );
-
-var material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
-</code>
-
-		<h3>[example:webgl_geometry_extrude_splines geometry / extrude / splines] (choose SampleClosedSpline)</h3>
-
-
-		<h2>Constructor</h2>
-
-
-		<h3>[name]( [page:Array points] )</h3>
-		<div>points – An array of [page:Vector3] points</div>
-
-
-		<h2>Properties</h2>
-
-		<h3>[property:Array points]</h3>
-
-		<h2>Methods</h2>
-
-		<h3>See [page:Curve] for inherited methods</h3>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 18 - 12
docs/api/extras/curves/CubicBezierCurve.html

@@ -13,17 +13,19 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-			Create a smooth 2d <a href="http://en.wikipedia.org/wiki/B%C3%A9zier_curve#mediaviewer/File:Bezier_curve.svg" target="_blank">cubic bezier curve</a>.
+			Create a smooth 2d
+			<a href="http://en.wikipedia.org/wiki/B%C3%A9zier_curve#mediaviewer/File:Bezier_curve.svg" target="_blank">cubic bezier curve</a>,
+			defined by a start point, endpoint and two control points.
 		</div>
 
 		<h2>Example</h2>
 
 <code>
 var curve = new THREE.CubicBezierCurve(
-	new THREE.Vector3( -10, 0, 0 ),
-	new THREE.Vector3( -5, 15, 0 ),
-	new THREE.Vector3( 20, 15, 0 ),
-	new THREE.Vector3( 10, 0, 0 )
+	new THREE.Vector2( -10, 0, 0 ),
+	new THREE.Vector2( -5, 15, 0 ),
+	new THREE.Vector2( 20, 15, 0 ),
+	new THREE.Vector2( 10, 0, 0 )
 );
 
 var path = new THREE.Path( curve.getPoints( 50 ) );
@@ -31,7 +33,7 @@ var path = new THREE.Path( curve.getPoints( 50 ) );
 var geometry = path.createPointsGeometry( 50 );
 var material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
 
-// Create the final Object3d to add to the scene
+// Create the final object to add to the scene
 var curveObject = new THREE.Line( geometry, material );
 </code>
 
@@ -40,26 +42,30 @@ var curveObject = new THREE.Line( geometry, material );
 
 		<h3>[name] ( [page:Vector2 v0], [page:Vector2 v1], [page:Vector2 v2], [page:Vector2 v3] )</h3>
 		<div>
-			[page:Vector2 v0] – The starting point<br/>
-			[page:Vector2 v1] – The first control point<br/>
-			[page:Vector2 v2] – The second control point<br/>
-			[page:Vector2 v3] – The ending point<br/>
+			[page:Vector2 v0] – The starting point.<br/>
+			[page:Vector2 v1] – The first control point.<br/>
+			[page:Vector2 v2] – The second control point.<br/>
+			[page:Vector2 v3] – The ending point.
 		</div>
 
 		<h2>Properties</h2>
+		<div>See the base [page:Curve] class for common properties.</div>
 
 		<h3>[property:Vector2 v0]</h3>
+		<div>The starting point.</div>
 
 		<h3>[property:Vector2 v1]</h3>
+		<div>The first control point.</div>
 
 		<h3>[property:Vector2 v2]</h3>
+		<div>The second control point.</div>
 
 		<h3>[property:Vector2 v3]</h3>
+		<div>The ending point.</div>
 
 
 		<h2>Methods</h2>
-
-		<h3>See [page:Curve] for inherited methods</h3>
+		<div>See the base [page:Curve] class for common Methods.</div>
 
 		<h2>Source</h2>
 

+ 18 - 11
docs/api/extras/curves/CubicBezierCurve3.html

@@ -13,7 +13,9 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-			Create a smooth 3d <a href="http://en.wikipedia.org/wiki/B%C3%A9zier_curve#mediaviewer/File:Bezier_curve.svg" target="_blank">cubic bezier curve</a>.
+			Create a smooth 3d
+			<a href="http://en.wikipedia.org/wiki/B%C3%A9zier_curve#mediaviewer/File:Bezier_curve.svg" target="_blank">cubic bezier curve</a>,
+			defined by a start point, endpoint and two control points.
 		</div>
 
 		<h2>Example</h2>
@@ -31,7 +33,7 @@ geometry.vertices = curve.getPoints( 50 );
 
 var material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
 
-// Create the final Object3d to add to the scene
+// Create the final object to add to the scene
 var curveObject = new THREE.Line( geometry, material );
 
 </code>
@@ -41,26 +43,31 @@ var curveObject = new THREE.Line( geometry, material );
 
 		<h3>[name]( [page:Vector3 v0], [page:Vector3 v1], [page:Vector3 v2], [page:Vector3 v3] )</h3>
 		<div>
-			[page:Vector3 v0] – The starting point<br/>
-			[page:Vector3 v1] – The first control point<br/>
-			[page:Vector3 v2] – The second control point<br/>
-			[page:Vector3 v3] – The ending point<br/>
+			[page:Vector3 v0] – The starting point.<br/>
+			[page:Vector3 v1] – The first control point.<br/>
+			[page:Vector3 v2] – The second control point.<br/>
+			[page:Vector3 v3] – The ending point.
 		</div>
 
 		<h2>Properties</h2>
+		<div>See the base [page:Curve] class for common properties.</div>
 
-		<h3>[property:Vector3 v0]</h3>
+		<h3>[property:Vector2 v0]</h3>
+		<div>The starting point.</div>
 
-		<h3>[property:Vector3 v1]</h3>
+		<h3>[property:Vector2 v1]</h3>
+		<div>The first control point.</div>
 
-		<h3>[property:Vector3 v2]</h3>
+		<h3>[property:Vector2 v2]</h3>
+		<div>The second control point.</div>
 
-		<h3>[property:Vector3 v3]</h3>
+		<h3>[property:Vector2 v3]</h3>
+		<div>The ending point.</div>
 
 
 		<h2>Methods</h2>
+		<div>See the base [page:Curve] class for common Methods.</div>
 
-		<h3>See [page:Curve] for inherited methods</h3>
 		<h2>Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 40 - 16
docs/api/extras/curves/EllipseCurve.html

@@ -12,7 +12,10 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">Creates a 2d curve in the shape of an ellipse.</div>
+		<div class="desc">
+			Creates a 2d curve in the shape of an ellipse. Setting the
+			[page:Number xRadius] equal to the [page:Number yRadius] will result in a circle.
+		</div>
 
 		<h2>Example</h2>
 
@@ -22,14 +25,14 @@ var curve = new THREE.EllipseCurve(
 	10, 10,           // xRadius, yRadius
 	0,  2 * Math.PI,  // aStartAngle, aEndAngle
 	false,            // aClockwise
-	0                 // aRotation 
+	0                 // aRotation
 );
 
 var path = new THREE.Path( curve.getPoints( 50 ) );
 var geometry = path.createPointsGeometry( 50 );
 var material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
 
-// Create the final Object3d to add to the scene
+// Create the final object to add to the scene
 var ellipse = new THREE.Line( geometry, material );
 </code>
 
@@ -38,33 +41,54 @@ var ellipse = new THREE.Line( geometry, material );
 
 		<h3>[name]( [page:Float aX], [page:Float aY], [page:Float xRadius], [page:Float yRadius], [page:Radians aStartAngle], [page:Radians aEndAngle], [page:Boolean aClockwise], [page:Radians aRotation] )</h3>
 		<div>
-			aX – The X center of the ellipse<br/>
-			aY – The Y center of the ellipse<br/>
-			xRadius – The radius of the ellipse in the x direction<br/>
-			yRadius – The radius of the ellipse in the y direction<br/>
-			aStartAngle – The start angle of the curve in radians starting from the middle right side<br/>
-			aEndAngle – The end angle of the curve in radians starting from the middle right side<br/>
-			aClockwise – Whether the ellipse is clockwise<br/>
-			aRotation – The rotation angle of the ellipse in radians, counterclockwise from the positive X axis (optional)<br/><br/>
-
-			<strong>Note:</strong> When going clockwise it's best to set the start angle to (Math.PI * 2) and then work towards lower numbers.
+			[page:Float aX] – The X center of the ellipse.<br/>
+			[page:Float aY] – The Y center of the ellipse.<br/>
+			[page:Float xRadius] – The radius of the ellipse in the x direction.<br/>
+			[page:Float yRadius] – The radius of the ellipse in the y direction.<br/>
+			[page:Radians aStartAngle] – The start angle of the curve in radians starting from the middle right side.<br/>
+			[page:Radians aEndAngle] – The end angle of the curve in radians starting from the middle right side.<br/>
+			[page:Boolean aClockwise] – Whether the ellipse is drawn clockwise.<br/>
+			[page:Radians aRotation]  – The rotation angle of the ellipse in radians, counterclockwise from the positive X axis (optional). Default is *0*.<br/><br/>
+
+			<em>Note:</em> When going clockwise it's best to set the start angle to (Math.PI * 2) and then work towards lower numbers.
 		</div>
 
-
 		<h2>Properties</h2>
+		<div>See the base [page:Curve] class for common properties.</div>
 
 		<h3>[property:Float aX]</h3>
+		<div>The X center of the ellipse.</div>
+
 		<h3>[property:Float aY]</h3>
+		<div>The Y center of the ellipse.</div>
+
 		<h3>[property:Radians xRadius]</h3>
+		<div>The radius of the ellipse in the x direction.</div>
+
 		<h3>[property:Radians yRadius]</h3>
+		<div>The radius of the ellipse in the y direction.</div>
+
 		<h3>[property:Float aStartAngle]</h3>
+		<div>The start angle of the curve in radians starting from the middle right side.</div>
+
 		<h3>[property:Float aEndAngle]</h3>
+		<div>The end angle of the curve in radians starting from the middle right side.</div>
+
 		<h3>[property:Boolean aClockwise]</h3>
+		<div>Whether the ellipse is drawn clockwise.</div>
+
 		<h3>[property:Float aRotation]</h3>
+		<div>The rotation angle of the ellipse in radians, counterclockwise from the positive X axis (optional). Default is *0*.</div>
 
-		<h2>Methods</h2>
+		<h3>[property:Boolean isEllipseCurve]</h3>
+		<div>
+			Used to check whether this or derived classes are ellipses. Default is *true*.<br /><br />
 
-		<h3>See [page:Curve] for inherited methods</h3>
+			You should not change this, as it used internally for optimisation.
+		</div>
+
+		<h2>Methods</h2>
+		<div>See the base [page:Curve] class for common methods.</div>
 
 		<h2>Source</h2>
 

+ 15 - 6
docs/api/extras/curves/LineCurve.html

@@ -12,27 +12,36 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">A curve representing a 2d line segment</div>
+		<div class="desc">A curve representing a 2d line segment.</div>
 
 		<h2>Constructor</h2>
 
 
 		<h3>[name]( [page:Vector2 v1], [page:Vector2 v2] )</h3>
 		<div>
-			v1 – The start point<br/>
-			v2 - The end point
+			[page:Vector2 v1] – The start point.<br/>
+			[page:Vector2 v2] - The end point.
 		</div>
 
 
 		<h2>Properties</h2>
+		<div>See the base [page:Curve] class for common properties.</div>
+
+		<h3>[property:Boolean isLineCurve]</h3>
+		<div>
+			Used to check whether this or derived classes are LineCurves. Default is *true*.<br /><br />
+
+			You should not change this, as it used internally for optimisation.
+		</div>
 
 		<h3>[property:Vector2 v1]</h3>
-		<h3>[property:Vector2 v2]</h3>
+		<div>The start point.</div>
 
+		<h3>[property:Vector2 v2]</h3>
+		<div>The end point</div>
 
 		<h2>Methods</h2>
-
-		<h3>See [page:Curve] for inherited methods</h3>
+		<div>See the base [page:Curve] class for common methods.</div>
 
 
 		<h2>Source</h2>

+ 8 - 6
docs/api/extras/curves/LineCurve3.html

@@ -12,27 +12,29 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">A curve representing a 3d line segment</div>
+		<div class="desc">A curve representing a 3d line segment.</div>
 
 		<h2>Constructor</h2>
 
 
 		<h3>[name]( [page:Vector3 v1], [page:Vector3 v2] )</h3>
 		<div>
-			v1 – The start point<br/>
-			v2 - The end point
+			[page:Vector3 v1] – The start point.<br/>
+			[page:Vector3 v2] - The end point.
 		</div>
 
 
 		<h2>Properties</h2>
+		<div>See the base [page:Curve] class for common properties.</div>
 
 		<h3>[property:Vector3 v1]</h3>
-		<h3>[property:Vector3 v2]</h3>
+		<div>The start point.</div>
 
+		<h3>[property:Vector3 v2]</h3>
+		<div>The end point.</div>
 
 		<h2>Methods</h2>
-
-		<h3>See [page:Curve] for inherited methods</h3>
+		<div>See the base [page:Curve] class for common methods.</div>
 
 		<h2>Source</h2>
 

+ 15 - 12
docs/api/extras/curves/QuadraticBezierCurve.html

@@ -13,16 +13,18 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-			Create a smooth 2d <a href="http://en.wikipedia.org/wiki/B%C3%A9zier_curve#mediaviewer/File:B%C3%A9zier_2_big.gif" target="_blank">quadratic bezier curve</a>.
+			Create a smooth 2d
+			<a href="http://en.wikipedia.org/wiki/B%C3%A9zier_curve#mediaviewer/File:B%C3%A9zier_2_big.gif" target="_blank">quadratic bezier curve</a>,
+			defined by a startpoint, endpoint and a single control point.
 		</div>
 
 		<h2>Example</h2>
 
 <code>
 var curve = new THREE.QuadraticBezierCurve(
-	new THREE.Vector3( -10, 0, 0 ),
-	new THREE.Vector3( 20, 15, 0 ),
-	new THREE.Vector3( 10, 0, 0 )
+	new THREE.Vector2( -10, 0 ),
+	new THREE.Vector2( 20, 15 ),
+	new THREE.Vector2( 10, 0 )
 );
 
 var path = new THREE.Path( curve.getPoints( 50 ) );
@@ -30,7 +32,7 @@ var path = new THREE.Path( curve.getPoints( 50 ) );
 var geometry = path.createPointsGeometry( 50 );
 var material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
 
-//Create the final Object3d to add to the scene
+//Create the final object to add to the scene
 var curveObject = new THREE.Line( geometry, material );
 </code>
 
@@ -39,26 +41,27 @@ var curveObject = new THREE.Line( geometry, material );
 
 		<h3>[name]( [page:Vector2 v0], [page:Vector2 v1], [page:Vector2 v2] )</h3>
 		<div>
-			[page:Vector2 v0] – The starting point<br/>
-			[page:Vector2 v1] – The middle control point<br/>
-			[page:Vector2 v2] – The ending point<br/>
+			[page:Vector2 v0] – The startpoint.<br/>
+			[page:Vector2 v1] – The control point.<br/>
+			[page:Vector2 v2] – The endpoint.
 		</div>
 
 
 		<h2>Properties</h2>
+		<div>See the base [page:Curve] class for common properties.</div>
 
 
 		<h3>[property:Vector2 v0]</h3>
+		<div>The startpoint.</div>
 
 		<h3>[property:Vector2 v1]</h3>
+		<div>The control point.</div>
 
 		<h3>[property:Vector2 v2]</h3>
-
+		<div>The endpoint.</div>
 
 		<h2>Methods</h2>
-
-
-		<h3>See [page:Curve] for inherited methods</h3>
+		<div>See the base [page:Curve] class for common methods.</div>
 
 		<h2>Source</h2>
 

+ 10 - 6
docs/api/extras/curves/QuadraticBezierCurve3.html

@@ -13,7 +13,9 @@
 		<h1>[name]</h1>
 
 		<div class="desc">
-			Create a smooth 3d <a href="http://en.wikipedia.org/wiki/B%C3%A9zier_curve#mediaviewer/File:B%C3%A9zier_2_big.gif" target="_blank">quadratic bezier curve</a>.
+			Create a smooth 3d
+			<a href="http://en.wikipedia.org/wiki/B%C3%A9zier_curve#mediaviewer/File:B%C3%A9zier_2_big.gif" target="_blank">quadratic bezier curve</a>,
+			defined by a startpoint, endpoint and a single control point.
 		</div>
 
 		<h2>Example</h2>
@@ -30,7 +32,7 @@ geometry.vertices = curve.getPoints( 50 );
 
 var material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
 
-// Create the final Object3d to add to the scene
+// Create the final object to add to the scene
 var curveObject = new THREE.Line( geometry, material );
 </code>
 
@@ -47,18 +49,20 @@ var curveObject = new THREE.Line( geometry, material );
 
 
 		<h2>Properties</h2>
+		<div>See the base [page:Curve] class for common properties.</div>
+
 
 		<h3>[property:Vector3 v0]</h3>
+		<div>The startpoint.</div>
 
 		<h3>[property:Vector3 v1]</h3>
+		<div>The control point.</div>
 
 		<h3>[property:Vector3 v2]</h3>
-
+		<div>The endpoint.</div>
 
 		<h2>Methods</h2>
-
-
-		<h3>See [page:Curve] for inherited methods</h3>
+		<div>See the base [page:Curve] class for common methods.</div>
 
 		<h2>Source</h2>
 

+ 12 - 4
docs/api/extras/curves/SplineCurve.html

@@ -12,7 +12,10 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">Create a smooth 2d spline curve from a series of points</div>
+		<div class="desc">
+		Create a smooth 2d spline curve from a series of points. Internally this uses
+		[page:CurveUtils.interpolate] to create the curve.
+		</div>
 
 		<h2>Example</h2>
 
@@ -31,7 +34,7 @@ var path = new THREE.Path( curve.getPoints( 50 ) );
 var geometry = path.createPointsGeometry( 50 );
 var material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
 
-// Create the final Object3d to add to the scene
+// Create the final object to add to the scene
 var splineObject = new THREE.Line( geometry, material );
 </code>
 
@@ -39,16 +42,21 @@ var splineObject = new THREE.Line( geometry, material );
 
 
 		<h3>[name]( [page:Array points] )</h3>
-		<div>points – An array of [page:Vector2] points</div>
+		<div>points – An array of [page:Vector2] points that define the curve.</div>
 
 
 		<h2>Properties</h2>
+		<div>See the base [page:Curve] class for common properties.</div>
 
 		<h3>[property:Array points]</h3>
+		<div>The array of [page:Vector3] points that define the curve.</div>
+
+
 
 		<h2>Methods</h2>
+		<div>See the base [page:Curve] class for common methods.</div>
+
 
-		<h3>See [page:Curve] for inherited methods</h3>
 
 		<h2>Source</h2>
 

+ 14 - 6
docs/api/extras/curves/SplineCurve3.html

@@ -12,11 +12,19 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">Create a smooth 3d spline curve from a series of points</div>
+		<div class="desc">
+			Create a smooth 3d spline curve from a series of points. Internally this uses
+		[page:CurveUtils.interpolate] to create the curve.<br /><br />
+
+		Note that this will be deprecated. Please use a [page:CatmullRomCurve3] instead.
+
+	</div>
 
 		<h2>Example</h2>
 
-<code>
+		<div>[example:webgl_geometry_extrude_splines geometry / extrude / splines ] (choose PipeSpline)</div>
+
+		<code>
 //Create a closed bent a sine-like wave
 var curve = new THREE.SplineCurve3( [
 	new THREE.Vector3( -10, 0, 10 ),
@@ -31,18 +39,18 @@ geometry.vertices = curve.getPoints( 50 );
 
 var material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
 
-//Create the final Object3d to add to the scene
+//Create the final object to add to the scene
 var splineObject = new THREE.Line( geometry, material );
-</code>
+	</code>
+
 
-		<h3>[example:webgl_geometry_extrude_splines geometry / extrude / splines ] (choose PipeSpline)</h3>
 
 
 		<h2>Constructor</h2>
 
 
 		<h3>[name]( [page:Array points] )</h3>
-		<div>points – An array of [page:Vector3] points</div>
+		<div>points – An array of [page:Vector3] points that define the curve.</div>
 
 
 		<h2>Properties</h2>

+ 0 - 99
docs/api/extras/geometries/ExtrudeGeometry.html

@@ -1,99 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Geometry] &rarr;
-
-		<h1>[name]</h1>
-
-		<div class="desc">Creates extruded geometry from a path shape</div>
-
-
-		<h2>Constructor</h2>
-
-
-		<h3>[name]([page:Array shapes], [page:Object options])</h3>
-		<div>
-		shapes — Shape or an array of shapes. <br />
-		options — Object that can contain the following parameters.
-
-	<ul>
-<li>curveSegments —  int. number of points on the curves</li>
-<li>steps —  int. number of points used for subdividing segements of extrude spline</li>
-<li>amount —  int. Depth to extrude the shape</li>
-<li>bevelEnabled —  bool. turn on bevel</li>
-<li>bevelThickness —  float. how deep into the original shape bevel goes</li>
-<li>bevelSize —  float. how far from shape outline is bevel</li>
-<li>bevelSegments —  int. number of bevel layers</li>
-<li>extrudePath —  THREE.CurvePath. 3d spline path to extrude shape along. (creates Frames if (frames aren't defined)</li>
-<li>frames —  THREE.TubeGeometry.FrenetFrames.  containing arrays of tangents, normals, binormals</li>
-<li>material —  int. material index for front and back faces</li>
-<li>extrudeMaterial —  int. material index for extrusion and beveled faces</li>
-<li>UVGenerator —  Object. object that provides UV generator functions</li>
-	</ul>
-
-		</div>
-		<div>
-		This object extrudes an 2D shape to an 3D geometry.
-		</div>
-
-
-		<h2>Properties</h2>
-
-
-		<h2>Methods</h2>
-
-		<h3>[method:null addShapeList]([page:Array shapes], [page:Object options])</h3>
-		<div>
-			shapes — An Array of shapes to add. <br />
-			options — Object that can contain the following parameters.
-	<ul>
-<li>curveSegments —  int. number of points on the curves</li>
-<li>steps —  int. number of points used for subdividing segements of extrude spline</li>
-<li>amount —  int. Depth to extrude the shape</li>
-<li>bevelEnabled —  bool. turn on bevel</li>
-<li>bevelThickness —  float. how deep into the original shape bevel goes</li>
-<li>bevelSize —  float. how far from shape outline is bevel</li>
-<li>bevelSegments —  int. number of bevel layers</li>
-<li>extrudePath —  THREE.CurvePath. 3d spline path to extrude shape along. (creates Frames if (frames aren't defined)</li>
-<li>frames —  THREE.TubeGeometry.FrenetFrames.  containing arrays of tangents, normals, binormals</li>
-<li>material —  int. material index for front and back faces</li>
-<li>extrudeMaterial —  int. material index for extrusion and beveled faces</li>
-<li>UVGenerator —  Object. object that provides UV generator functions</li>
-	</ul>
-	</div>
-		<div>Adds the shapes to the list to extrude.</div>
-
-		<h3>[method:null addShape]([page:Shape shape], [page:Object options])</h3>
-		<div>
-			shape — A shape to add. <br />
-			options — Object that can contain the following parameters.
-	<ul>
-<li>curveSegments —  int. number of points on the curves</li>
-<li>steps —  int. number of points used for subdividing segements of extrude spline</li>
-<li>amount —  int. Depth to extrude the shape</li>
-<li>bevelEnabled —  bool. turn on bevel</li>
-<li>bevelThickness —  float. how deep into the original shape bevel goes</li>
-<li>bevelSize —  float. how far from shape outline is bevel</li>
-<li>bevelSegments —  int. number of bevel layers</li>
-<li>extrudePath —  THREE.CurvePath. 3d spline path to extrude shape along. (creates Frames if (frames aren't defined)</li>
-<li>frames —  THREE.TubeGeometry.FrenetFrames.  containing arrays of tangents, normals, binormals</li>
-<li>material —  int. material index for front and back faces</li>
-<li>extrudeMaterial —  int. material index for extrusion and beveled faces</li>
-<li>UVGenerator —  Object. object that provides UV generator functions</li>
-	</ul>
-	</div>
-		<div>Add the shape to the list to extrude.</div>
-
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 0 - 77
docs/api/extras/geometries/ShapeGeometry.html

@@ -1,77 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Geometry] &rarr;
-
-		<h1>[name]</h1>
-
-		<div class="desc">Creates a one-sided polygonal geometry from one or more path shapes. Similar to [page:ExtrudeGeometry]</div>
-
-		<h2>Example</h2>
-
-
-		<code>
-var rectLength = 120, rectWidth = 40;
-
-var rectShape = new THREE.Shape();
-rectShape.moveTo( 0,0 );
-rectShape.lineTo( 0, rectWidth );
-rectShape.lineTo( rectLength, rectWidth );
-rectShape.lineTo( rectLength, 0 );
-rectShape.lineTo( 0, 0 );
-
-var rectGeom = new THREE.ShapeGeometry( rectShape );
-var rectMesh = new THREE.Mesh( rectGeom, new THREE.MeshBasicMaterial( { color: 0xff0000 } ) ) ;
-
-scene.add( rectMesh );
-		</code>
-
-		<h2>Constructor</h2>
-
-
-		<h3>[name]([page:Array shapes], [page:Object options])</h3>
-		<div>
-		shapes — [page:Array] of shapes, or a single [page:Shape shape] <br />
-		options — Optional options [page:Object object]
-		<ul>
-		<li>curveSegments - [page:Integer] - Not used at the moment - defaults to 12</li>
-		<li>material - [page:Integer] - index of the material in a material list</li>
-		<li>UVGenerator - A UV generator, defaults to [page:ExtrudeGeometry]'s WorldUVGenerator</li>
-		</ul>
-		</div>
-
-
-		<h2>Methods</h2>
-
-
-
-		<h3>.addShapeList([page:Array shapes], [page:Object options]) [page:this]</h3>
-		<div>
-		shapes — [page:Array] of [page:Shape shapes] <br />
-		options — See options in constructor
-		</div>
-		<div>
-		Adds a list of shapes to the geometry.
-		</div>
-
-		<h3>[method:null addShape]([page:Shape shape], [page:Object options])</h3>
-		<div>
-		shape — [page:Shape] <br />
-		options — See options in constructor
-		</div>
-		<div>
-		Adds a single shape to the geometry
-		</div>
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 0 - 99
docs/api/extras/geometries/TubeGeometry.html

@@ -1,99 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Geometry] &rarr;
-
-		<h1>[name]</h1>
-
-		<div class="desc">Creates a tube that extrudes along a 3d curve</div>
-
-		<h2>Example</h2>
-
-<code>
-var CustomSinCurve = THREE.Curve.create(
-    function ( scale ) { //custom curve constructor
-        this.scale = (scale === undefined) ? 1 : scale;
-    },
-
-    function ( t ) { //getPoint: t is between 0-1
-        var tx = t * 3 - 1.5,
-            ty = Math.sin( 2 * Math.PI * t ),
-            tz = 0;
-
-        return new THREE.Vector3(tx, ty, tz).multiplyScalar(this.scale);
-    }
-);
-
-var path = new CustomSinCurve( 10 );
-
-var geometry = new THREE.TubeGeometry(
-    path,  //path
-    20,    //segments
-    2,     //radius
-    8,     //radiusSegments
-    false  //closed
-);
-</code>
-
-		<h2>Constructor</h2>
-
-
-		<h3>[name]([page:Curve path], [page:Integer segments], [page:Float radius], [page:Integer radiusSegments], [page:Boolean closed])</h3>
-		<div>
-		path — [page:Curve] - A path that inherits from the [page:Curve] base class<br />
-		segments — [page:Integer] - The number of segments that make up the tube, default is 64<br />
-		radius — [page:Float] - The radius of the tube, default is 1<br />
-		radiusSegments — [page:Integer] - The number of segments that make up the cross-section, default is 8 <br />
-		closed — [page:Boolean] Is the tube open or closed, default is false <br />
-		</div>
-
-
-		<h2>Properties</h2>
-
-		<h3>[property:Object parameters]</h3>
-		<div>
-		An object with all of the parameters that were used to generate the geometry.
-		</div>
-
-		<h3>[property:Array tangents]</h3>
-		<div>
-		An array of [page:Vector3] tangents
-		</div>
-
-		<h3>[property:Array normals]</h3>
-		<div>
-		An array of [page:Vector3] normals
-		</div>
-
-		<h3>[property:Array binormals]</h3>
-		<div>
-		An array of [page:Vector3] binormals
-		</div>
-
-
-		<h2>Methods</h2>
-
-
-		<h3>THREE.TubeGeometry.FrenetFrames([page:Curve path], [page:Integer segments], [page:Boolean closed])</h3>
-		<div>
-		path — A path that inherits from the [page:Curve] base class <br />
-		segments — The number of segments that make up the tube <br />
-		closed — Is the tube open or closed
-		</div>
-		<div>
-		A static method that generates the Frenet Frames. This is internally run on any new TubeGeometry and then the
-		generated tangents, normals, and binormals are exposed as properties on the TubeGeometry object.
-		</div>
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 32 - 30
docs/api/extras/helpers/ArrowHelper.html

@@ -12,12 +12,21 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">An 3D arrow Object.</div>
+		<div class="desc">An 3D arrow object for visualizing directions.</div>
 
 
 		<h2>Example</h2>
 
-		<code>var dir = new THREE.Vector3( 1, 0, 0 );
+		<div>[example:webgl_geometries WebGL / geometries]</div>
+		<div>[example:webgl_geometry_normals WebGL / geometry / normals]</div>
+		<div>[example:webgl_shadowmesh WebGL / shadowmesh]</div>
+
+		<code>
+		var dir = new THREE.Vector3( 1, 2, 0 );
+
+		//normalize the direction vector (convert to vector of length 1)
+		dir.normalize();
+
 		var origin = new THREE.Vector3( 0, 0, 0 );
 		var length = 1;
 		var hex = 0xffff00;
@@ -33,59 +42,52 @@
 
 		<h3>[name]([page:Vector3 dir], [page:Vector3 origin], [page:Number length], [page:Number hex], [page:Number headLength], [page:Number headWidth] )</h3>
 		<div>
-		dir -- Vector3 -- direction from origin. Must be a unit vector. <br />
-		origin -- Vector3 <br />
-		length -- scalar <br />
-		hex -- hexadecimal value to define color ex:0xffff00<br />
-		headLength -- The length of the head of the arrow<br />
-		headWidth -- The length of the width of the arrow
+		[page:Vector3 dir] -- direction from origin. Must be a unit vector. <br />
+		[page:Vector3 origin] -- Point at which the arrow starts.<br />
+		[page:Number length] -- length of the arrow. Default is *1*.<br />
+		[page:Number hex] -- hexadecimal value to define color. Default is 0xffff00.<br />
+		[page:Number headLength] -- The length of the head of the arrow. Default is 0.2 * length.<br />
+		[page:Number headWidth] -- The length of the width of the arrow. Default is 0.2 * headLength.
 		</div>
-		<div>
-		This creates an arrow starting in origin in the direction dir for a certain length. It is also possible to change color.
-		</div>
-
 
 		<h2>Properties</h2>
-
+		<div>See the base [page:Object3D] class for common properties.</div>
 
 
 		<h3>[property:Line line]</h3>
-		<div>
-		Contains the line part of the arrowHelper.
-		</div>
+		<div>Contains the line part of the arrowHelper.</div>
 
 		<h3>[property:Mesh cone]</h3>
-		<div>
-		Contains the cone part of the arrowHelper.
-		</div>
+		<div>Contains the cone part of the arrowHelper.</div>
+
+
+
 
 		<h2>Methods</h2>
+		<div>See the base [page:Object3D] class for common methods.</div>
 
 
 
 		<h3>[method:null setColor]([page:Number hex])</h3>
 		<div>
-		hex -- The hexadicmal value of the color
-		</div>
-		<div>
+		hex -- The hexadicmal value of the color.<br /><br />
+
 		Sets the color of the arrowHelper.
 		</div>
 
 		<h3>[method:null setLength]([page:Number length], [page:Number headLength], [page:Number headWidth])</h3>
 		<div>
-		length -- The desired length<br />
-		headLength -- The length of the head of the arrow<br />
-		headWidth -- The length of the width of the arrow
-		</div>
-		<div>
+		length -- The desired length.<br />
+		headLength -- The length of the head of the arrow.<br />
+		headWidth -- The length of the width of the arrow.<br /><br />
+
 		Sets the length of the arrowhelper.
 		</div>
 
 		<h3>[method:null setDirection]([page:Vector3 dir])</h3>
 		<div>
-		dir -- The desired direction. Must be a unit vector.
-		</div>
-		<div>
+		dir -- The desired direction. Must be a unit vector.<br /><br />
+
 		Sets the direction of the arrowhelper.
 		</div>
 

+ 20 - 9
docs/api/extras/helpers/AxisHelper.html

@@ -8,7 +8,7 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		[page:Line] &rarr;
+		[page:LineSegments] &rarr;
 
 		<h1>[name]</h1>
 
@@ -18,21 +18,32 @@
 
 		<h2>Example</h2>
 
-                <code>var axisHelper = new THREE.AxisHelper( 5 );
-		scene.add( axisHelper );
-                </code>
+		<div>[example:webgl_geometries WebGL / geometries]</div>
+		<div>[example:webgl_geometries2 WebGL / geometries2]</div>
+		<div>[example:webgl_geometry_convex WebGL / geometry / convex]</div>
+		<div>[example:webgl_geometry_spline_editor WebGL / geometry / spline / editor]</div>
+
+
+
+		<code>
+var axisHelper = new THREE.AxisHelper( 5 );
+scene.add( axisHelper );
+    </code>
 
 		<h2>Constructor</h2>
 
 
-		<h3>[name]([page:Number size])</h3>
+		<h3>[name]( [page:Number size] )</h3>
 		<div>
-		size -- Define the size of the line representing the axes.
-		</div>
-		<div>
-		Creates an axisHelper with lines of length size.
+		[page:Number size] -- (optional )size of the lines representing the axes. Default is *1*.
 		</div>
 
+		<h2>Properties</h2>
+		<div>See the base [page:LineSegments] class for common properties.</div>
+
+		<h2>Methods</h2>
+		<div>See the base [page:LineSegments] class for common methods.</div>
+
 		<h2>Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 0 - 72
docs/api/extras/helpers/BoundingBoxHelper.html

@@ -1,72 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Mesh] &rarr;
-
-		<h1>[name]</h1>
-
-		<div class="desc">A helper object to show the world-axis-aligned bounding box for an object.</div>
-
-
-		<h2>Example</h2>
-
-		<code>var hex  = 0xff0000;
-
-		var sphereMaterial = new THREE.MeshLambertMaterial( {color: 0x00ff00} );
-		var sphere = new THREE.Mesh( new THREE.SphereGeometry( 30, 12, 12), sphereMaterial );
-		scene.add( sphere );
-
-		var bbox = new THREE.BoundingBoxHelper( sphere, hex );
-		bbox.update();
-		scene.add( bbox );
-		</code>
-		<div>Note that this helper will create a wireframe [page:Mesh] object with a [page:BoxGeometry]; the resulting bounding box object will therefore have face diagonals. You may want to use [page:BoxHelper], which generates a [page:Line] object without face diagonals.</div>
-
-
-		<h2>Constructor</h2>
-
-
-		<h3>[name]([page:Object3D object], [page:Number hex])</h3>
-		<div>
-		object -- Object3D -- the object3D to show the world-axis-aligned boundingbox.<br />
-		hex -- hexadecimal value to define color ex:0x888888
-		</div>
-		<div>
-		This creates an line object to the boundingbox.
-		</div>
-
-
-		<h2>Properties</h2>
-
-
-
-		<h3>[property:Object3D object]</h3>
-		<div>
-		Contains the object3D to show the world-axis-aligned boundingbox.
-		</div>
-
-		<h3>[property:Box3 box]</h3>
-		<div>
-		Contains the bounding box of the object.
-		</div>
-
-		<h2>Methods</h2>
-
-		<h3>[method:null update]()</h3>
-		<div>
-		Updates the BoundingBoxHelper based on the object property.
-		</div>
-
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 31 - 10
docs/api/extras/helpers/BoxHelper.html

@@ -1,43 +1,64 @@
 <!DOCTYPE html>
 <html lang="en">
 	<head>
-		<meta charset="utf-8" />
+		<meta charset="utf-8" />
 		<base href="../../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		[page:Line] &rarr;
+		[page:LineSegments] &rarr;
 
 		<h1>[name]</h1>
 
-		<div class="desc">Helper object to show a wireframe box (with no face diagonals) around an object</div>
+		<div class="desc">
+			Helper object to show the world-axis-aligned bounding box around an object.
+
+			Note that the object must have a [page:Geometry] or [page:BufferGeometry] for this to work,
+			so it won't work with [page:Sprite Sprites].
+		</div>
 
 
 		<h2>Example</h2>
 
-		<code>var sphere = new THREE.SphereGeometry();
-		var object = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial(0xff0000) );
-		var box = new THREE.BoxHelper( object );
+		<div>[example:webgl_helpers WebGL / helpers]</div>
+		<div>[example:webgl_loader_nrrd WebGL / loader / nrrd]</div>
+		<div>[example:webgl_buffergeometry_drawcalls advanced / buffergeometry / drawcalls]</div>
+
+
+		<code>
+		var sphere = new THREE.SphereGeometry();
+		var object = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( 0xff0000 ) );
+		var box = new THREE.BoxHelper( object, 0xffff00 );
 		scene.add( box );
 		</code>
 
 
 		<h2>Constructor</h2>
 
-		<h3>[name]( [page:Object3D object] )</h3>
-		<div>Creates a new wireframe box matching the size of the passed box.</div>
+
+		<h3>[name]( [page:Object3D object], [page:Color color] )</h3>
+		<div>
+		[page:Object3D object]  -- the object3D to show the world-axis-aligned boundingbox.<br />
+		[page:Color color] --  (optional) hexadecimal value that defines the box's color. Default is 0xffff00.<br /><br />
+
+		Creates a new wireframe box that bounds the passed object. Internally this uses [page:Box3.setFromObject]
+		to calculate the dimensions. Note that this includes any children.
+		</div>
 
 		<h2>Properties</h2>
+		<div>See the base [page:LineSegments] class for common properties.</div>
 
-		<div>(none)</div>
 
 		<h2>Methods</h2>
+		<div>See the base [page:LineSegments] class for common methods.</div>
 
 		<h3>[method:null update]( [page:Object3D object] )</h3>
 		<div>
-		Updates the helper's geometry to match the dimensions of the [page:Geometry.boundingBox bounding box] of the passed object's geometry.
+			Updates the helper's geometry to match the dimensions of the
+		 	of the passed object, including any children. See [page:Box3.setFromObject].
+		</div>
 
 		<h2>Source</h2>
 

+ 37 - 15
docs/api/extras/helpers/CameraHelper.html

@@ -8,48 +8,70 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		[page:Line] &rarr;
+		[page:LineSegments] &rarr;
 
 		<h1>[name]</h1>
 
 		<div class="desc">
-		The camera Helper is an Object3D which helps visualizing what a camera contains in its frustum.<br />
-		It visualizes the frustum with an line Geometry.
+		This helps with visualizing what a camera contains in its frustum.<br />
+		It visualizes the frustum of a camera using a [page:LineSegments].
 		</div>
 
+		<h2>Example</h2>
+
+		<div>[example:webgl_camera WebGL / camera]</div>
+		<div>[example:webgl_geometry_extrude_splines WebGL / extrude / splines]</div>
+
+		<code>
+var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
+
+var helper = new THREE.CameraHelper( cameraPerspective );
+scene.add( helper );
+		</code>
+
 
 		<h2>Constructor</h2>
 
 
-		<h3>[name]([page:Camera camera])</h3>
-		<div>
-		camera -- The camera to visualize.
-		</div>
+		<h3>[name]( [page:Camera camera] )</h3>
 		<div>
+		[page:Camera camera] -- The camera to visualize.<br /><br />
+
 		This create a new [Name] for the specified camera.
 		</div>
 
 
+
 		<h2>Properties</h2>
+		<div>See the base [page:LineSegments] class for common properties.</div>
 
 
-		<h3>[property:object pointMap]</h3>
-		<div>
-		This contains the points to viualize the cameraHelper
-		</div>
 
 		<h3>[property:Camera camera]</h3>
+		<div>The camera being visualized.</div>
+
+		<h3>[property:object pointMap]</h3>
+		<div>This contains the points used to visualize the camera.</div>
+
+		<h3>[property:object matrix]</h3>
+		<div>Reference to the [page:Object3D.matrixWorld camera.matrixWorld].</div>
+
+		<h3>[property:object matrixAutoUpdate]</h3>
 		<div>
-		The camera to visualize.
+			See [page:Object3D.matrixAutoUpdate]. Set to *false* here as the helper is using the
+			camera's [page:Object3D.matrixWorld matrixWorld].
 		</div>
 
+
+
+
+
 		<h2>Methods</h2>
+		<div>See the base [page:LineSegments] class for common methods.</div>
 
 
 		<h3>[method:null update]()</h3>
-		<div>
-		Updates the helper based on the projectionMatrix of the camera.
-		</div>
+		<div>Updates the helper based on the projectionMatrix of the camera.</div>
 
 		<h2>Source</h2>
 

+ 35 - 19
docs/api/extras/helpers/DirectionalLightHelper.html

@@ -12,47 +12,63 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">Visualize a [page:DirectionalLight]'s effect on the scene</div>
+		<div class="desc">
+			Helper object to assist with visualizing a [page:DirectionalLight]'s effect on the scene.
+
+			This consists of plane and a line representing the light's position and direction.
+		</div>
+
+		<h2>Example</h2>
+
+		<code>
+		var light = new THREE.DirectionalLight( 0xFFFFFF );
+
+		var helper = new THREE.DirectionalLightHelper( light, 5 );
+
+		scene.add( helper );
+		</code>
 
 
 		<h2>Constructor</h2>
 
 
-		<h3>[name]([page:DirectionalLight light], [page:Number size])</h3>
-		<div>
-		light -- [page:DirectionalLight] -- Light to visualize <br />
-		size -- dimensions of the plane
-		</div>
+		<h3>[name]( [page:DirectionalLight light], [page:Number size] )</h3>
 		<div>
-		Creates a line and plane to visualize the light's position and direction
+		[page:DirectionalLight light]-- The light to be visualized. <br />
+		[page:Number size] -- (optional) dimensions of the plane. Default is *1*.<br /><br />
 		</div>
 
 
 		<h2>Properties</h2>
+		<div>See the base [page:Object3D] class for common properties.</div>
 
 
 		<h3>[property:Line lightPlane]</h3>
-		<div>
-		Contains the line mesh showing the location of the directional light.
-		</div>
+		<div>Contains the line mesh showing the location of the directional light.</div>
 
 		<h3>[property:DirectionalLight light]</h3>
-		<div>
-		Contains the directionalLight.
-		</div>
+		<div>Reference to the [page:DirectionalLight directionalLight] being visualized.</div>
 
-		<h3>[property:Line targetLine]</h3>
+		<h3>[property:object matrix]</h3>
+		<div>Reference to the light's [page:Object3D.matrixWorld matrixWorld].</div>
+
+		<h3>[property:object matrixAutoUpdate]</h3>
 		<div>
-		Contains the line mesh that shows the direction of the light.
+			See [page:Object3D.matrixAutoUpdate]. Set to *false* here as the helper is using the
+			light's [page:Object3D.matrixWorld matrixWorld].
 		</div>
 
+
+
 		<h2>Methods</h2>
+		<div>See the base [page:Object3D] class for common properties.</div>
 
+		<h3>[method:null dispose]()</h3>
+		<div>Dispose of the directionalLightHelper.</div>
 
-		<h3>.[method:null update]()</h3>
-		<div>
-		Updates the helper to match the position and direction of the [page:.light].
-		</div>
+
+		<h3>[method:null update]()</h3>
+		<div>Updates the helper to match the position and direction of the [page:.light directionalLight] being visualized.</div>
 
 		<h2>Source</h2>
 

+ 0 - 57
docs/api/extras/helpers/EdgesHelper.html

@@ -1,57 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Line] &rarr;
-
-		<h1>[name]</h1>
-
-		<div class="desc">Creates a wireframe object that shows the "hard" edges of another object's geometry. To draw a full wireframe image of an object, see [page:WireframeHelper].</div>
-
-		<h2>Example</h2>
-
-		<code>
-		geometry = new THREE.BoxGeometry( 10, 10, 10, 2, 2, 2 );
-		material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
-		object = new THREE.Mesh( geometry, material );
-
-		edges = new THREE.EdgesHelper( object, 0x00ff00 );
-
-		scene.add( object );
-		scene.add( edges );
-		</code>
-
-		<h2>Constructor</h2>
-		<h3>[name]( [page:Object3D object], [page:Color color], [page:Float thresholdAngle] )</h3>
-		<div>
-		object -- Object of which to draw edges <br />
-		color -- Color of the edges.<br />
-		thresholdAngle -- the minimim angle (in degrees), between the face normals of adjacent faces, that is required to render an edge. Default is 0.1.
-
-		</div>
-		<div>
-		Creates a [page:Line], showing only the "hard" edges of the passed object; specifically, no edge will be drawn between faces which are adjacent and coplanar (or nearly coplanar).
-		</div>
-
-
-		<h2>Properties</h2>
-
-		<div>none</div>
-
-
-		<h2>Methods</h2>
-
-		<div>none</div>
-
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 30 - 12
docs/api/extras/helpers/FaceNormalsHelper.html

@@ -8,47 +8,65 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		[page:Line] &rarr;
+		[page:LineSegments] &rarr;
 
 		<h1>[name]</h1>
 
-		<div class="desc">Renders [page:ArrowHelper arrows] to visualize an object's [page:Face3 face] normals. Requires that the object's geometry be an instance of [page:Geometry] (does not work with [page:BufferGeometry]), and that face normals have been specified on all [page:Face3 faces] or calculated with [page:Geometry.computeFaceNormals computeFaceNormals].</div>
+		<div class="desc">
+			Renders [page:ArrowHelper arrows] to visualize an object's [page:Face3 face] normals.
+			Requires  that face normals have been specified on all 	[page:Face3 faces] or calculated with [page:Geometry.computeFaceNormals computeFaceNormals].</div>
+
+			Note that this only works with the objects whose geometry is an instance of [page:Geometry].
+			For [page:BufferGeometry] use a [page:VertexNormalsHelper] instead.
+		<div>
+
 
 		<h2>Example</h2>
 
+		<div>[example:webgl_helpers WebGL / helpers]</div>
+
 		<code>
 		geometry = new THREE.BoxGeometry( 10, 10, 10, 2, 2, 2 );
 		material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
-		object = new THREE.Mesh( geometry, material );
+		box = new THREE.Mesh( geometry, material );
 
-		edges = new THREE.FaceNormalsHelper( object, 2, 0x00ff00, 1 );
+		helper = new THREE.FaceNormalsHelper( box, 2, 0x00ff00, 1 );
 
 		scene.add( object );
-		scene.add( edges );
+		scene.add( helper );
 		</code>
-		[example:webgl_helpers Example using various helpers]
 
 		<h2>Constructor</h2>
 
 
 		<h3>[name]( [page:Object3D object], [page:Number size], [page:Color color], [page:Number linewidth] )</h3>
 		<div>
-		object -- object for which to render face normals<br />
-		size -- size (length) of the arrows<br />
-		color -- color of the arrows<br />
-		linewidth -- width of the arrow lines
+		[page:Object3D object] -- object for which to render face normals.<br />
+		[page:Number size] -- (optional) length of the arrows. Default is *1*.<br />
+		[page:Hex color] -- (optional) hex color of the arrows. Default is *0xffff00*.<br />
+		[page:Number linewidth] -- (optional) width of the arrow lines.  Default is *1*.
 		</div>
 
 
 		<h2>Properties</h2>
+		<div>See the base [page:LineSegments] class for common properties.</div>
 
-		<h3>[property:Object3D object]</h3>
+		<h3>[property:object matrixAutoUpdate]</h3>
 		<div>
-		The attached object
+			See [page:Object3D.matrixAutoUpdate]. Set to *false* here as the helper is using the
+			objects's [page:Object3D.matrixWorld matrixWorld].
 		</div>
 
+		<h3>[property:Object3D object]</h3>
+		<div>The object for which the face normals are being visualized.</div>
+
+		<h3>[property:Number size]</h3>
+		<div>Length of the arrows. Default is *1*.</div>
+
+
 
 		<h2>Methods</h2>
+		<div>See the base [page:LineSegments] class for common methods.</div>
 
 
 		<h3>[method:null update]()</h3>

+ 45 - 55
docs/api/extras/helpers/GridHelper.html

@@ -1,56 +1,46 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
+<!DOCTYPE html>
+<html lang="en">
+	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Line] &rarr;
-
-		<h1>[name]</h1>
-
-		<div class="desc">The GridHelper is an object to define grids. Grids are two-dimensional arrays of lines.</div>
-
-
-		<h2>Example</h2>
-
-		<code>var size = 10;
-		var step = 1;
-
-		var gridHelper = new THREE.GridHelper( size, step );
-		scene.add( gridHelper );
-		</code>
-		[example:webgl_helpers Example using various helpers]
-
-
-		<h2>Constructor</h2>
-
-		<h3>[name]([page:number size], [page:Number step])</h3>
-		<div>
-		size -- The size of the grid <br />
-		step -- The size of the step between 2 lines
-		</div>
-		<div>
-		Creates a new [name] of size 'size' and with steps of size 'step'.
-		</div>
-
-		<h2>Methods</h2>
-
-		<h3>[method:null setColors]([page:number colorCenterLine], [page:Number colorGrid])</h3>
-		<div>
-		colorCenterLine -- The color of the centerline. This can be a [page:Color], a hexadecimal value and an CSS-Color name. <br />
-		colorGrid -- The color of the lines of the grid. This can be a [page:Color], a hexadecimal value and an CSS-Color name.
-		</div>
-		<div>
-		Updates the color of the grid lines.
-		</div>
-
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Line] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">The GridHelper is an object to define grids. Grids are two-dimensional arrays of lines.</div>
+
+
+		<h2>Example</h2>
+
+		<code>var size = 10;
+		var divisions = 10;
+
+		var gridHelper = new THREE.GridHelper( size, divisions );
+		scene.add( gridHelper );
+		</code>
+		[example:webgl_helpers Example using various helpers]
+
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [page:number size], [page:Number divisions], [page:Color colorCenterLine], [page:Color colorGrid] )</h3>
+		<div>
+		size -- The size of the grid. Default is 10. <br />
+		divisions -- The number of divisions across the grid. Default is 10. <br />
+		colorCenterLine -- The color of the centerline. This can be a [page:Color], a hexadecimal value and an CSS-Color name. Default is 0x444444 <br />
+		colorGrid -- The color of the lines of the grid. This can be a [page:Color], a hexadecimal value and an CSS-Color name. Default is 0x888888
+		</div>
+		<div>
+		Creates a new [name] of size 'size' and divided into 'divisions' segments per side. Colors are optional.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 29 - 15
docs/api/extras/helpers/HemisphereLightHelper.html

@@ -12,40 +12,54 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">Creates a visual aid for a [page:HemisphereLight HemisphereLight].</div>
+		<div class="desc">
+			Creates a visual aid consisting of a spherical [page:Mesh] for a [page:HemisphereLight HemisphereLight].
+		</div>
+
+		<h3>Example</h3>
+
+		<code>
+var light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );
+
+var helper = new THREE.HemisphereLightHelper( light, 5 );
+
+scene.add( helper );
+		</code>
 
 
 		<h2>Constructor</h2>
 
 		<h3>[name]([page:HemisphereLight light], [page:Number sphereSize])</h3>
 		<div>
-		light -- The HemisphereLight. <br />
-		sphereSize -- The size of the sphere that shows the location.
-		</div>
-		<div>
-		Creates an helper for the hemispherelight.
+		[page:HemisphereLight light] -- The light being visualized. <br />
+		[page:Number size] -- The size of the mesh used to visualize the light.
 		</div>
 
 
 		<h2>Properties</h2>
-
-		<h3>[property:Mesh lightSphere]</h3>
-		<div>
-		The sphere mesh that shows the location of the hemispherelight.
-		</div>
+		<div>See the base [page:Object3D] class for common properties.</div>
 
 		<h3>[property:HemisphereLight light]</h3>
+		<div>Reference to the HemisphereLight being visualized.</div>
+
+		<h3>[property:object matrix]</h3>
+		<div>Reference to the hemisphereLight's [page:Object3D.matrixWorld matrixWorld].</div>
+
+		<h3>[property:object matrixAutoUpdate]</h3>
 		<div>
-		Contains the HemisphereLight.
+			See [page:Object3D.matrixAutoUpdate]. Set to *false* here as the helper is using the
+			hemisphereLight's [page:Object3D.matrixWorld matrixWorld].
 		</div>
 
 
 		<h2>Methods</h2>
+		<div>See the base [page:Object3D] class for common methods.</div>
+
+		<h3>[method:null dispose]()</h3>
+		<div>Dispose of the hemisphereLightHelper.</div>
 
 		<h3>[method:null update]()</h3>
-		<div>
-		Updates the helper to match the position and direction of the [page:.light].
-		</div>
+		<div>Updates the helper to match the position and direction of the [page:.light].</div>
 
 
 		<h2>Source</h2>

+ 28 - 10
docs/api/extras/helpers/PointLightHelper.html

@@ -12,12 +12,18 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">This displays a helper object for a [page:PointLight] </div>
+		<div class="desc">
+			This displays a helper object consisting of a spherical [page:Mesh] for visualizing
+			 a [page:PointLight].
+		 </div>
 
 
 		<h2>Example</h2>
 
-		<code>var pointLight = new THREE.PointLight( 0xff0000, 1, 100 );
+		[example:webgl_helpers WebGL /  helpers]
+
+		<code>
+		var pointLight = new THREE.PointLight( 0xff0000, 1, 100 );
 		pointLight.position.set( 10, 10, 10 );
 		scene.add( pointLight );
 
@@ -25,32 +31,44 @@
 		var pointLightHelper = new THREE.PointLightHelper( pointLight, sphereSize );
 		scene.add( pointLightHelper );
 		</code>
-		[example:webgl_helpers Example using various helpers]
+
+
 
 
 		<h2>Constructor</h2>
 
-		<h3>[name]([page:PointLight light], [page:Float sphereSize])</h3>
+		<h3>[name]( [page:PointLight light], [page:Float sphereSize] )</h3>
 		<div>
-		light -- The [page:PointLight] to display. <br />
-		sphereSize -- The size of the sphere helper
+		[page:PointLight light] -- The light to be visualized. <br />
+		 [page:Float sphereSize] -- (optional) The size of the sphere helper. Default is *1*.
 		</div>
 
 
 		<h2>Properties</h2>
+		<div>See the base [page:Mesh] class for common properties.</div>
 
 		<h3>[property:PointLight light]</h3>
+		<div>The [page:PointLight] that is being visualized.</div>
+
+		<h3>[property:object matrix]</h3>
+		<div>Reference to the pointLight's [page:Object3D.matrixWorld matrixWorld].</div>
+
+		<h3>[property:object matrixAutoUpdate]</h3>
 		<div>
-		The [page:PointLight] that is being represented.
+			See [page:Object3D.matrixAutoUpdate]. Set to *false* here as the helper is using the
+			pointLight's [page:Object3D.matrixWorld matrixWorld].
 		</div>
 
 
 		<h2>Methods</h2>
+		<div>See the base [page:Mesh] class for common methods.</div>
+
+		<h3>[method:null dispose]()</h3>
+		<div>Dispose of the pointLightHelper.</div>
+
 
 		<h3>[method:null update]()</h3>
-		<div>
-		Updates the light helper.
-		</div>
+		<div>Updates the helper to match the position of the [page:.light].</div>
 
 		<h2>Source</h2>
 

+ 50 - 0
docs/api/extras/helpers/PolarGridHelper.html

@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Line] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">The PolarGridHelper is an object to define polar grids. Grids are two-dimensional arrays of lines.</div>
+
+
+		<h2>Example</h2>
+
+		<code>var radius = 10;
+		var radials = 16;
+		var circles = 8;
+		var divisions = 64;
+
+		var helper = new THREE.PolarGridHelper( radius, radials, circles, divisions );
+		scene.add( helper );
+		</code>
+		[example:webgl_helpers Example using various helpers]
+
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [page:Number radius], [page:Number radials], [page:Number circles], [page:Number divisions], [page:Color color1], [page:Color color2] )</h3>
+		<div>
+		radius -- The radius of the polar grid. This can be any positive number. Default is 10.<br />
+		radials -- The number of radial lines. This can be any positive integer. Default is 16.<br />
+		circles -- The number of circles. This can be any positive integer. Default is 8.<br />
+		divisions -- The number of line segments used for each circle. This can be any positive integer that is 3 or greater. Default is 64.<br />
+		color1 -- The first color used for grid elements. This can be a [page:Color], a hexadecimal value and an CSS-Color name. Default is 0x444444 <br />
+		color2 -- The second color used for grid elements. This can be a [page:Color], a hexadecimal value and an CSS-Color name. Default is 0x888888
+		</div>
+		<div>
+		Creates a new [name] of radius 'radius' with 'radials' number of radials and 'circles' number of circles, where each circle is smoothed into 'divisions' number of line segments. Colors are optional.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 57 - 0
docs/api/extras/helpers/RectAreaLightHelper.html

@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Object3D] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+			Creates a visual aid for a [page:RectAreaLight].
+		</div>
+
+		<h3>Example</h3>
+
+		<code>
+var light = new THREE.RectAreaLight( 0xffffbb, 1.0, 5, 5 );
+
+var helper = new THREE.RectAreaLightHelper( light );
+
+scene.add( helper );
+		</code>
+
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [page:RectAreaLight light] )</h3>
+		<div>[page:RectAreaLight light] -- The light being visualized.</div>
+
+
+		<h2>Properties</h2>
+		<div>See the base [page:Object3D] class for common properties.</div>
+
+		<h3>[property:RectAreaLight light]</h3>
+		<div>Reference to the RectAreaLight being visualized.</div>
+
+
+		<h2>Methods</h2>
+		<div>See the base [page:Object3D] class for common methods.</div>
+
+		<h3>[method:null dispose]()</h3>
+		<div>Dispose of the rectAreaLightHelper.</div>
+
+		<h3>[method:null update]()</h3>
+		<div>Updates the helper to match the position and direction of the [page:.light].</div>
+
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 75 - 0
docs/api/extras/helpers/SkeletonHelper.html

@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Object3D] &rarr; [page:Line] &rarr; [page:LineSegments] &rarr;
+
+		<h1>[name]</h1>
+
+		<div class="desc">
+		A helper object to assist with visualizing a [page:Skeleton Skeleton].
+		The helper is renderered using a [page:LineBasicMaterial LineBasicMaterial].
+		</div>
+
+
+		<h2>Example</h2>
+
+		[example:webgl_animation_skinning_blending animation / skinning / blending]<br />
+		[example:webgl_animation_skinning_morph animation / skinning / morph]<br />
+		[example:webgl_loader_bvh loader / bvh ]
+
+		<code>
+var helper = new THREE.SkeletonHelper( mesh );
+helper.material.linewidth = 3;
+scene.add( helper );
+		</code>
+
+
+
+		<h2>Constructor</h2>
+
+
+		<h3>[name]( object )</h3>
+		<div>
+		object -- can be any object that has an array of [page:Bone Bone]s as a sub object. <br />
+		For example, a [page:Skeleton Skeleton] or a [page:SkinnedMesh SkinnedMesh].
+		</div>
+
+
+		<h2>Properties</h2>
+
+		<h3>[property:Array bones]</h3>
+		<div>
+		The list of bones that the helper renders as [page:Line Lines].
+		</div>
+
+		<h3>[property:Object root]</h3>
+		<div>
+		The object passed in the constructor.
+		</div>
+
+		<h2>Methods</h2>
+
+		<h3>[method:Array getBoneList]( object )</h3>
+		<div>
+		getBoneList -- the object used in the constructor.<br /><br />
+
+		This is called automatically to generate a list of bones from the object passed in the constructor.
+		</div>
+
+		<h3>[method:null update]()</h3>
+		<div>
+		Update the helper. Call in the render loop if animating the model.
+		</div>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 18 - 8
docs/api/extras/helpers/SpotLightHelper.html

@@ -12,7 +12,7 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">This displays a cylinder helper object for a [page:SpotLight] </div>
+		<div class="desc">This displays a cone shaped helper object for a [page:SpotLight].</div>
 
 		<h2>Example</h2>
 		<iframe src='../examples/webgl_lights_spotlight.html'></iframe>
@@ -36,27 +36,37 @@
 
 
 		<h3>[name]([page:SpotLight light])</h3>
-		<div>
-		light -- The [page:SpotLight] to display
-		</div>
+		<div>light -- The [page:SpotLight] to be visualized.</div>
 
 
 		<h2>Properties</h2>
+		<div>See the base [page:Object3D] class for common properties.</div>
+
+		<h3>[property:LineSegments cone]</h3>
+		<div>[page:LineSegments] used to visualize the light.</div>
 
 
 		<h3>[property:SpotLight light]</h3>
+		<div>Reference to the [page:SpotLight] being visualized.</div>
+
+		<h3>[property:object matrix]</h3>
+		<div>Reference to the spotLight's [page:Object3D.matrixWorld matrixWorld].</div>
+
+		<h3>[property:object matrixAutoUpdate]</h3>
 		<div>
-		The [page:SpotLight]
+			See [page:Object3D.matrixAutoUpdate]. Set to *false* here as the helper is using the
+			spotLight's [page:Object3D.matrixWorld matrixWorld].
 		</div>
 
 
 		<h2>Methods</h2>
+		<div>See the base [page:Object3D] class for common methods.</div>
 
+		<h3>[method:null update]()</h3>
+		<div>Disposes of the light helper.</div>
 
 		<h3>[method:null update]()</h3>
-		<div>
-		Updates the light helper.
-		</div>
+		<div>Updates the light helper.</div>
 
 		<h2>Source</h2>
 

+ 33 - 15
docs/api/extras/helpers/VertexNormalsHelper.html

@@ -12,42 +12,60 @@
 
 		<h1>[name]</h1>
 
-		<div class="desc">Renders [page:ArrowHelper arrows] to visualize an object's vertex normal vectors. Requires that normals have been specified in a [page:BufferAttribute custom attribute] or have been calculated using [page:Geometry.computeVertexNormals computeVertexNormals]. </div>
+		<div class="desc">
+			Renders [page:ArrowHelper arrows] to visualize an object's vertex normal vectors.
+			Requires that normals have been specified in a [page:BufferAttribute custom attribute] or
+			have been calculated using [page:Geometry.computeVertexNormals computeVertexNormals].<br /><br />
+
+			Unline [page:FaceNormalsHelper], this works with [page:BufferGeometry].
+		</div>
 
 		<h2>Example</h2>
 
+		[example:webgl_helpers WebGL / helpers]
+
 		<code>
-		geometry = new THREE.BoxGeometry( 10, 10, 10, 2, 2, 2 );
-		material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
-		object = new THREE.Mesh( geometry, material );
+		var geometry = new THREE.BoxGeometry( 10, 10, 10, 2, 2, 2 );
+		var material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
+		var box = new THREE.Mesh( geometry, material );
 
-		edges = new THREE.VertexNormalsHelper( object, 2, 0x00ff00, 1 );
+		var helper = new THREE.VertexNormalsHelper( box, 2, 0x00ff00, 1 );
 
-		scene.add( object );
-		scene.add( edges );
+		scene.add( box );
+		scene.add( helper );
 		</code>
-		[example:webgl_helpers Example using various helpers]
+
 
 		<h2>Constructor</h2>
 
 
-		<h3>[name]( [page:Object3D object], [page:Number size], [page:Color color], [page:Number linewidth] )</h3>
-		<div>object -- object for which to render vertex normals
-		size -- size (length) of the arrows
-		color -- color of the arrows
-		linewidth -- width of the arrow lines
+		<h3>[name]( [page:Object3D object], [page:Number size], [page:Hex color], [page:Number linewidth] )</h3>
+		<div>
+			[page:Object3D object] -- object for which to render vertex normals.<br />
+			[page:Number size] -- (optional) length of the arrows. Default is 1.<br />
+			[page:Hex color] -- hex color of the arrows. Default is 0xff0000.<br />
+			[page:Number linewidth] -- (optional) width of the arrow lines. Default is 1.
 		</div>
 
 
 		<h2>Properties</h2>
+		<div>See the base [page:LineSegments] class for common properties.</div>
 
-		<h3>[property:Object3D object]</h3>
+		<h3>[property:object matrixAutoUpdate]</h3>
 		<div>
-		The attached object
+			See [page:Object3D.matrixAutoUpdate]. Set to *false* here as the helper is using the
+			objects's [page:Object3D.matrixWorld matrixWorld].
 		</div>
 
+		<h3>[property:Object3D object]</h3>
+		<div>The object for which the vertex normals are being visualized.</div>
+
+		<h3>[property:Number size]</h3>
+		<div>Length of the arrows. Default is *1*.</div>
+
 
 		<h2>Methods</h2>
+		<div>See the base [page:LineSegments] class for common methods.</div>
 
 
 		<h3>[method:null update]()</h3>

+ 0 - 58
docs/api/extras/helpers/WireframeHelper.html

@@ -1,58 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Line] &rarr;
-
-		<h1>[name]</h1>
-
-		<div class="desc">Creates a wireframe object that shows the edges of another object's geometry. To draw a  wireframe image showing only "hard" edges (edges between non-coplanar faces), see [page:EdgesHelper].</div>
-
-		<h2>Example</h2>
-
-		<code>
-		geometry = new THREE.BoxGeometry( 10, 10, 10, 2, 2, 2 );
-		material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
-		object = new THREE.Mesh( geometry, material );
-
-		wireframe = new THREE.WireframeHelper( object, 0x00ff00 );
-
-		scene.add( object );
-		scene.add( wireframe );
-
-		</code>
-		[example:webgl_helpers Example using various helpers], [example:webgl_materials_wireframe Alternative approach using a shader.]
-
-		<h2>Constructor</h2>
-		<h3>[name]( [page:Object3D object], [page:Color color] )</h3>
-		<div>
-		object -- Object of which to draw edges <br />
-		color -- Color of the edges.
-		</div>
-		<div>
-		Creates a [page:Line], showing only the edges between vertices of an object.
-		</div>
-
-
-		<h2>Properties</h2>
-
-		<div>none</div>
-
-
-		<h2>Methods</h2>
-
-		<div>none</div>
-
-
-		<h2>Source</h2>
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 0 - 1
docs/api/extras/objects/MorphBlendMesh.html

@@ -15,7 +15,6 @@
 		<div class="desc">A mesh that can blend together multiple animated morph targets.</div>
 
 		<h2>Example</h2>
-		<div>
 		[example:webgl_morphtargets_md2_control morphtargets / md2 / controll]
 
 

+ 18 - 4
docs/api/extras/geometries/BoxBufferGeometry.html → docs/api/geometries/BoxBufferGeometry.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
@@ -14,7 +14,23 @@
 
 		<div class="desc">This is the [page:BufferGeometry] port of [page:BoxGeometry].</div>
 
-		<iframe src='scenes/geometry-browser.html#BoxBufferGeometry'></iframe>
+		<iframe id="scene" src="scenes/geometry-browser.html#BoxBufferGeometry"></iframe>
+
+		<script>
+
+		// iOS iframe auto-resize workaround
+
+		if ( /(iPad|iPhone|iPod)/g.test( navigator.userAgent ) ) {
+
+			var scene = document.getElementById( 'scene' );
+
+			scene.style.width = getComputedStyle( scene ).width;
+			scene.style.height = getComputedStyle( scene ).height;
+			scene.setAttribute( 'scrolling', 'no' );
+
+		}
+
+		</script>
 
 		<h2>Example</h2>
 
@@ -26,7 +42,6 @@
 
 		<h2>Constructor</h2>
 
-
 		<h3>[name]([page:Float width], [page:Float height], [page:Float depth], [page:Integer widthSegments], [page:Integer heightSegments], [page:Integer depthSegments])</h3>
 		<div>
 		width — Width of the sides on the X axis.<br />
@@ -37,7 +52,6 @@
 		depthSegments — Optional. Number of segmented faces along the depth of the sides. Default is 1.
 		</div>
 
-
 		<h2>Properties</h2>
 
 		<h3>.parameters</h3>

+ 18 - 4
docs/api/extras/geometries/BoxGeometry.html → docs/api/geometries/BoxGeometry.html

@@ -2,7 +2,7 @@
 <html lang="en">
 	<head>
 		<meta charset="utf-8" />
-		<base href="../../../" />
+		<base href="../../" />
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
@@ -14,7 +14,23 @@
 
 		<div class="desc">BoxGeometry is the quadrilateral primitive geometry class. It is typically used for creating a cube or irregular quadrilateral of the dimensions provided with the 'width', 'height', and 'depth' constructor arguments.</div>
 
-		<iframe src='scenes/geometry-browser.html#BoxGeometry'></iframe>
+		<iframe id="scene" src="scenes/geometry-browser.html#BoxGeometry"></iframe>
+
+		<script>
+
+		// iOS iframe auto-resize workaround
+
+		if ( /(iPad|iPhone|iPod)/g.test( navigator.userAgent ) ) {
+
+			var scene = document.getElementById( 'scene' );
+
+			scene.style.width = getComputedStyle( scene ).width;
+			scene.style.height = getComputedStyle( scene ).height;
+			scene.setAttribute( 'scrolling', 'no' );
+
+		}
+
+		</script>
 
 		<h2>Example</h2>
 
@@ -26,7 +42,6 @@
 
 		<h2>Constructor</h2>
 
-
 		<h3>[name]([page:Float width], [page:Float height], [page:Float depth], [page:Integer widthSegments], [page:Integer heightSegments], [page:Integer depthSegments])</h3>
 		<div>
 		width — Width of the sides on the X axis.<br />
@@ -37,7 +52,6 @@
 		depthSegments — Optional. Number of segmented faces along the depth of the sides. Default is 1.
 		</div>
 
-
 		<h2>Properties</h2>
 
 		<h3>.parameters</h3>

Some files were not shown because too many files changed in this diff