Browse Source

Merge branch 'dev' into translation-zh

nicholas-yangding 6 years ago
parent
commit
dbe619d6d6
100 changed files with 1655 additions and 1660 deletions
  1. 1 1
      .github/ISSUE_TEMPLATE.md
  2. 18 14
      README.md
  3. 20 14
      build/three.js
  4. 367 378
      build/three.min.js
  5. 20 14
      build/three.module.js
  6. 1 4
      docs/api/en/animation/AnimationClip.html
  7. 6 3
      docs/api/en/audio/Audio.html
  8. 2 0
      docs/api/en/audio/AudioListener.html
  9. 8 2
      docs/api/en/cameras/CubeCamera.html
  10. 0 1
      docs/api/en/cameras/OrthographicCamera.html
  11. 0 2
      docs/api/en/cameras/PerspectiveCamera.html
  12. 7 5
      docs/api/en/core/BufferGeometry.html
  13. 0 1
      docs/api/en/core/Face3.html
  14. 3 1
      docs/api/en/core/Geometry.html
  15. 2 2
      docs/api/en/core/InterleavedBuffer.html
  16. 1 1
      docs/api/en/core/Object3D.html
  17. 9 21
      docs/api/en/deprecated/DeprecatedList.html
  18. 0 4
      docs/api/en/lights/AmbientLight.html
  19. 0 2
      docs/api/en/lights/DirectionalLight.html
  20. 0 1
      docs/api/en/lights/PointLight.html
  21. 0 123
      docs/api/en/loaders/JSONLoader.html
  22. 3 8
      docs/api/en/loaders/ObjectLoader.html
  23. 0 1
      docs/api/en/materials/LineDashedMaterial.html
  24. 0 7
      docs/api/en/materials/Material.html
  25. 1 1
      docs/api/en/materials/ShaderMaterial.html
  26. 0 2
      docs/api/en/materials/SpriteMaterial.html
  27. 0 5
      docs/api/en/objects/SkinnedMesh.html
  28. 1 1
      docs/api/en/scenes/Scene.html
  29. 51 0
      docs/api/en/textures/DataTexture3D.html
  30. 1 4
      docs/api/zh/animation/AnimationClip.html
  31. 3 0
      docs/api/zh/audio/Audio.html
  32. 2 0
      docs/api/zh/audio/AudioListener.html
  33. 5 5
      docs/api/zh/cameras/ArrayCamera.html
  34. 1 1
      docs/api/zh/core/BufferAttribute.html
  35. 1 1
      docs/api/zh/core/Clock.html
  36. 1 1
      docs/api/zh/core/DirectGeometry.html
  37. 1 1
      docs/api/zh/core/EventDispatcher.html
  38. 1 2
      docs/api/zh/core/Face3.html
  39. 1 1
      docs/api/zh/core/Geometry.html
  40. 1 1
      docs/api/zh/core/InstancedBufferAttribute.html
  41. 1 1
      docs/api/zh/core/InstancedBufferGeometry.html
  42. 1 1
      docs/api/zh/core/InstancedInterleavedBuffer.html
  43. 1 1
      docs/api/zh/core/InterleavedBuffer.html
  44. 1 1
      docs/api/zh/core/InterleavedBufferAttribute.html
  45. 1 1
      docs/api/zh/core/Layers.html
  46. 1 1
      docs/api/zh/core/Uniform.html
  47. 1 1
      docs/api/zh/core/bufferAttributeTypes/BufferAttributeTypes.html
  48. 6 25
      docs/api/zh/deprecated/DeprecatedList.html
  49. 1 1
      docs/api/zh/geometries/PolyhedronGeometry.html
  50. 0 1
      docs/api/zh/lights/DirectionalLight.html
  51. 0 119
      docs/api/zh/loaders/JSONLoader.html
  52. 3 8
      docs/api/zh/loaders/ObjectLoader.html
  53. 0 5
      docs/api/zh/materials/Material.html
  54. 0 2
      docs/api/zh/materials/SpriteMaterial.html
  55. 0 5
      docs/api/zh/objects/SkinnedMesh.html
  56. 28 28
      docs/api/zh/textures/CanvasTexture.html
  57. 32 32
      docs/api/zh/textures/CompressedTexture.html
  58. 11 12
      docs/api/zh/textures/CubeTexture.html
  59. 51 0
      docs/api/zh/textures/DataTexture3D.html
  60. 40 41
      docs/api/zh/textures/DepthTexture.html
  61. 92 95
      docs/api/zh/textures/Texture.html
  62. 31 31
      docs/api/zh/textures/VideoTexture.html
  63. 2 2
      docs/examples/Lut.html
  64. 0 61
      docs/examples/SpriteCanvasMaterial.html
  65. 18 6
      docs/examples/loaders/GLTFLoader.html
  66. 9 0
      docs/examples/loaders/LoaderSupport.html
  67. 23 0
      docs/examples/loaders/MMDLoader.html
  68. 9 0
      docs/examples/loaders/OBJLoader2.html
  69. 1 1
      docs/examples/loaders/SVGLoader.html
  70. 0 174
      docs/examples/renderers/CanvasRenderer.html
  71. 3 2
      docs/examples/utils/BufferGeometryUtils.html
  72. 4 4
      docs/examples/utils/SceneUtils.html
  73. 19 6
      docs/index.html
  74. 58 59
      docs/list.js
  75. 0 1
      docs/manual/en/introduction/Animation-system.html
  76. 0 1
      docs/manual/en/introduction/Creating-text.html
  77. 1 1
      docs/manual/en/introduction/How-to-run-things-locally.html
  78. 119 0
      docs/manual/en/introduction/How-to-use-WebGL2.html
  79. 165 118
      docs/manual/en/introduction/Loading-3D-models.html
  80. 2 3
      docs/manual/zh/introduction/Animation-system.html
  81. 84 0
      docs/manual/zh/introduction/How-to-create-VR-content.html
  82. 117 0
      docs/manual/zh/introduction/How-to-use-WebGL2.html
  83. 70 66
      docs/manual/zh/introduction/Loading-3D-models.html
  84. 3 3
      docs/manual/zh/introduction/WebGL-compatibility-check.html
  85. 11 0
      docs/page.css
  86. 0 1
      docs/scenes/js/material.js
  87. 3 0
      editor/css/dark.css
  88. 3 0
      editor/css/light.css
  89. 5 7
      editor/index.html
  90. 2 0
      editor/js/Config.js
  91. 2 0
      editor/js/Editor.js
  92. 1 44
      editor/js/Loader.js
  93. 20 18
      editor/js/Menubar.Add.js
  94. 9 7
      editor/js/Menubar.Edit.js
  95. 3 1
      editor/js/Menubar.Examples.js
  96. 28 13
      editor/js/Menubar.File.js
  97. 5 3
      editor/js/Menubar.Help.js
  98. 4 3
      editor/js/Menubar.Play.js
  99. 3 1
      editor/js/Menubar.Status.js
  100. 8 6
      editor/js/Sidebar.Geometry.BoxGeometry.js

+ 1 - 1
.github/ISSUE_TEMPLATE.md

@@ -19,7 +19,7 @@ Please also include a live example if possible. You can start from these templat
 ##### Three.js version
 
 - [ ] Dev
-- [ ] r97
+- [ ] r98
 - [ ] ...
 
 ##### Browser

+ 18 - 14
README.md

@@ -1,12 +1,12 @@
 three.js
 ========
 
-[![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]
-[![Build Status](https://travis-ci.org/mrdoob/three.js.svg?branch=dev)](https://travis-ci.org/mrdoob/three.js)
-[![Language Grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/mrdoob/three.js.svg?label=code%20quality)](https://lgtm.com/projects/g/mrdoob/three.js/)
+[![NPM package][npm]][npm-url]
+[![Build Size][build-size]][build-size-url]
+[![Build Status][build-status]][build-status-url]
+[![Dependencies][dependencies]][dependencies-url]
+[![Dev Dependencies][dev-dependencies]][dev-dependencies-url]
+[![Language Grade][lgtm]][lgtm-url]
 
 #### JavaScript 3D library ####
 
@@ -77,11 +77,15 @@ If everything went well you should see [this](https://jsfiddle.net/f2Lommf5/).
 [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
+[npm]: https://img.shields.io/npm/v/three.svg
+[npm-url]: https://www.npmjs.com/package/three
+[build-size]: https://badge-size.herokuapp.com/mrdoob/three.js/master/build/three.min.js.svg?compression=gzip
+[build-size-url]: https://github.com/mrdoob/three.js/tree/master/build
+[build-status]: https://travis-ci.org/mrdoob/three.js.svg?branch=dev
+[build-status-url]: https://travis-ci.org/mrdoob/three.js
+[dependencies]: https://img.shields.io/david/mrdoob/three.js.svg
+[dependencies-url]: https://david-dm.org/mrdoob/three.js
+[dev-dependencies]: https://img.shields.io/david/dev/mrdoob/three.js.svg
+[dev-dependencies-url]: https://david-dm.org/mrdoob/three.js#info=devDependencies
+[lgtm]: https://img.shields.io/lgtm/grade/javascript/g/mrdoob/three.js.svg?label=code%20quality
+[lgtm-url]: https://lgtm.com/projects/g/mrdoob/three.js/

File diff suppressed because it is too large
+ 20 - 14
build/three.js


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


File diff suppressed because it is too large
+ 20 - 14
build/three.module.js


+ 1 - 4
docs/api/en/animation/AnimationClip.html

@@ -96,10 +96,7 @@
 		<p>
 			Returns an array of new AnimationClips created from the [page:Geometry.morphTargets morph
 			target sequences] of a geometry, trying to sort morph target names into animation-group-based
-			patterns like "Walk_001, Walk_002, Run_001, Run_002 ..."<br /><br />
-
-			This method is called by the [page:JSONLoader] internally, and it uses
-			[page:.CreateFromMorphTargetSequence CreateFromMorphTargetSequence].
+			patterns like "Walk_001, Walk_002, Run_001, Run_002 ...".
 		</p>
 
 		<h3>[method:AnimationClip CreateFromMorphTargetSequence]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>

+ 6 - 3
docs/api/en/audio/Audio.html

@@ -73,12 +73,15 @@
 		<p>Whether playback can be controlled using the [page:Audio.play play](),
 			[page:Audio.pause pause]() etc. methods. Default is *true*.</p>
 
-		<h3>[property:Number playbackRate]</h3>
-		<p>Speed of playback. Default is *1*.</p>
-
 		<h3>[property:Boolean isPlaying]</h3>
 		<p>Whether the audio is currently playing.</p>
 
+		<h3>[property:AudioListener listener]</h3>
+		<p>A reference to the listener object of this audio.</p>
+
+		<h3>[property:Number playbackRate]</h3>
+		<p>Speed of playback. Default is *1*.</p>
+
 		<h3>[property:Number startTime]</h3>
 		<p>The time at which the sound should begin to play. Same as the *when* paramter of [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start AudioBufferSourceNode.start](). Default is *0*.</p>
 

+ 2 - 0
docs/api/en/audio/AudioListener.html

@@ -67,6 +67,8 @@
 		<h3>[property:AudioNode filter]</h3>
 		<p>Default is *null*.</p>
 
+		<h3>[property:Number timeDelta]</h3>
+		<p>Time delta value for audio entities. Use in context of [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioParam/linearRampToValueAtTime AudioParam.linearRampToValueAtTimeDefault](). Default is *0*.</p>
 
 		<h2>Methods</h2>
 

+ 8 - 2
docs/api/en/cameras/CubeCamera.html

@@ -43,11 +43,17 @@
 		<h2>Constructor</h2>
 
 
-		<h3>[name]( [param:Number near], [param:Number far], [param:Number cubeResolution] )</h3>
+		<h3>[name]( [param:Number near], [param:Number far], [param:Number cubeResolution], [param:Object options] )</h3>
 		<p>
 		near -- The near clipping distance. <br />
 		far -- The far clipping distance <br />
-		cubeResolution -- Sets the length of the cube's edges.
+		cubeResolution -- Sets the length of the cube's edges. <br />
+		options - (optional) object that holds texture parameters passed to the auto-generated WebGLRenderTargetCube.
+		If not specified, the options default to:
+		<code>
+		{ format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter }
+		</code>
+
 		</p>
 		<p>
 		Constructs a CubeCamera that contains 6 [page:PerspectiveCamera PerspectiveCameras] that

+ 0 - 1
docs/api/en/cameras/OrthographicCamera.html

@@ -24,7 +24,6 @@
 
 		<h2>Example</h2>
 
-		<p>[example:canvas_camera_orthographic camera / orthographic ]</p>
 		<p>[example:webgl_camera camera ]</p>
 		<p>[example:webgl_interactive_cubes_ortho interactive / cubes / ortho ]</p>
 		<p>[example:webgl_materials_cubemap_dynamic materials / cubemap / dynamic ]</p>

+ 0 - 2
docs/api/en/cameras/PerspectiveCamera.html

@@ -22,8 +22,6 @@
 
 		<h2>Example</h2>
 
-		<p>[example:canvas_geometry_birds geometry / birds ]</p>
-		<p>[example:canvas_geometry_cube geometry / cube ]</p>
 		<p>[example:webgl_animation_skinning_blending animation / skinning / blending ]</p>
 		<p>[example:webgl_animation_skinning_morph animation / skinning / blending ]</p>
 		<p>[example:webgl_effects_stereo effects / stereo ]</p>

+ 7 - 5
docs/api/en/core/BufferGeometry.html

@@ -119,12 +119,13 @@
 
 		<h3>[property:Object drawRange]</h3>
 		<p>
-			Used to determine what part of the geometry should be rendered. This should not
-			be set directly, instead use [page:.setDrawRange].<br />
-			Default is
+			Determines the part of the geometry to render. This should not
+			be set directly, instead use [page:.setDrawRange]. Default is
 			<code>
 				{ start: 0, count: Infinity }
 			</code>
+			For non-indexed BufferGeometry, count is the number of vertices to render.
+			For indexed BufferGeometry, count is the number of indices to render.
 		</p>
 
 		<h3>[property:Array groups]</h3>
@@ -232,7 +233,7 @@
 
 		<h3>[method:null computeBoundingBox]()</h3>
 		<p>
-		Computes bounding box of the geometry, updating [param:.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*.
 		</p>
 
@@ -316,7 +317,8 @@
 		<p>Set the [page:.index] buffer.</p>
 
 		<h3>[method:null setDrawRange] ( [param:Integer start], [param:Integer count] )</h3>
-		<p>Set the [page:.drawRange] buffer. See that property for details.</p>
+		<p>Set the [page:.drawRange] property. For non-indexed BufferGeometry, count is the number of vertices to render.
+		For indexed BufferGeometry, count is the number of indices to render.</p>
 
 		<h3>[method:BufferGeometry setFromObject] ( [param:Object3D object] )</h3>
 		<p>Sets the attributes for this BufferGeometry from an [page:Object3D].</p>

+ 0 - 1
docs/api/en/core/Face3.html

@@ -19,7 +19,6 @@
 
 		<h2>Examples</h2>
 
-		<p>[example:misc_ubiquity_test ubiquity / test ]</p>
 		<p>[example:svg_sandbox svg / sandbox ]</p>
 		<p>[example:misc_exporter_obj exporter / obj ]</p>
 		<p>[example:webgl_shaders_vector WebGL / shaders / vector ]</p>

+ 3 - 1
docs/api/en/core/Geometry.html

@@ -266,7 +266,9 @@
 		</p>
 
 		<h3>[method:Geometry fromBufferGeometry]( [param:BufferGeometry geometry] )</h3>
-		<p>Convert a [page:BufferGeometry] to a Geometry.</p>
+		<p>Convert a [page:BufferGeometry] to a Geometry. <br />
+		When converting from BufferGeometry to Geometry, all vertices are preserved, so duplicated vertices may appear.
+		Use [page:Geometry.mergeVertices] to remove them.</p>
 
 		<h3>[method:Geometry lookAt] ( [param:Vector3 vector] )</h3>
 		<p>

+ 2 - 2
docs/api/en/core/InterleavedBuffer.html

@@ -69,12 +69,12 @@
 		A version number, incremented every time the needsUpdate property is set to true.
 		</p>
 
-		<h3>[property:Integer isInterleavedBuffer]</h3>
+		<h3>[property:Boolean isInterleavedBuffer]</h3>
 		<p>
 		Default is *true*.
 		</p>
 
-		<h3>[property:Integer needsUpdate]</h3>
+		<h3>[property:Boolean needsUpdate]</h3>
 		<p>
 		Default is *false*. Setting this to true increments [page:InterleavedBuffer.version version].
 		</p>

+ 1 - 1
docs/api/en/core/Object3D.html

@@ -286,7 +286,7 @@
 
 		Rotates the object to face a point in world space.<br /><br />
 
-		This method does not support objects with rotated and/or translated parent(s).
+		This method does not support objects having non-uniformly-scaled parent(s).
 		</p>
 
 		<h3>[method:Array raycast]( [param:Raycaster raycaster], [param:Array intersects] )</h3>

+ 9 - 21
docs/api/en/deprecated/DeprecatedList.html

@@ -245,24 +245,13 @@
 			Light.shadowMapHeight is now [page:Light.shadow.mapSize.height].
 		</p>
 
-
-
-
-
-
-
-
 		<h2>Loaders</h2>
 
 		<h3>[page:XHRLoader]</h3>
 		<p>XHRLoader has been renamed to [page:FileLoader].</p>
 
-
-
-
-
-
-
+		<h3>[page:JSONLoader]</h3>
+		<p>JSONLoader has been removed from core.</p>
 
 		<h2>Maths</h2>
 
@@ -494,18 +483,17 @@
 			Shape.makeGeometry has been removed. Use [page:ShapeGeometry] instead.
 		</p>
 
+		<h3>[page:SkinnedMesh]</h3>
+		<p>
+			SkinnedMesh.initBones() has been removed.
+		</p>
 
 
+		<h2>Renderers</h2>
 
-
-
-
-
-		<h2>Renderer</h2>
-
-		<h3>[page:Projector]</h3>
+		<h3>[page:CanvasRenderer]</h3>
 		<p>
-			CanvasRenderer has been moved to [link:https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/CanvasRenderer.js /examples/js/renderers/CanvasRenderer.js].
+			CanvasRenderer has been removed.
 		</p>
 
 		<h3>[page:Projector]</h3>

+ 0 - 4
docs/api/en/lights/AmbientLight.html

@@ -21,10 +21,6 @@
 
 		<h2>Example</h2>
 		<p>
-			[example:canvas_camera_orthographic camera / orthographic ]<br />
-		  [example:canvas_interactive_voxelpainter interactive / voxelpainter ]<br />
-		  [example:canvas_materials materials ]<br />
-		  [example:canvas_sandbox sandbox ]<br />
 		  [example:webgl_animation_cloth animation / cloth ]<br />
 		  [example:webgl_animation_skinning_blending animation / skinning / blending ]
 		</p>

+ 0 - 2
docs/api/en/lights/DirectionalLight.html

@@ -40,9 +40,7 @@
 
 		<h2>Example</h2>
 		<p>
-			[example:canvas_morphtargets_horse morphtargets / horse ]<br />
 			[example:misc_controls_fly controls / fly ]<br />
-			[example:misc_lights_test lights / test ]<br />
 			[example:webvr_cubes cubes ]<br />
 			[example:webgl_effects_parallaxbarrier effects / parallaxbarrier ]<br />
 			[example:webgl_effects_stereo effects / stereo ]<br />

+ 0 - 1
docs/api/en/lights/PointLight.html

@@ -23,7 +23,6 @@
 		<h2>Example</h2>
 
 		<p>
-			[example:canvas_lights_pointlights lights / pointlights ]<br />
 			[example:webgl_lights_pointlights lights / pointlights ]<br />
 			[example:webgl_lights_pointlights2 lights / pointlights2 ]<br />
 			[example:webgldeferred_animation animation ]<br />

+ 0 - 123
docs/api/en/loaders/JSONLoader.html

@@ -1,123 +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>[name]</h1>
-
-		<p class="desc">
-			A loader for loading objects in JSON format.
-			This uses the [page:FileLoader] internally for loading files.
-		</p>
-
-		<h2>Example</h2>
-
-		<p>
-		[example:webgl_loader_json WebGL / loader / json]<br />
-		[example:webgl_loader_json_objconverter WebGL / loader / json / objconverter]
-		</p>
-
-		<code>
-		// instantiate a loader
-		var loader = new THREE.JSONLoader();
-
-		// load a resource
-		loader.load(
-			// resource URL
-			'models/animated/monster/monster.js',
-
-			// onLoad callback
-			function ( geometry, materials ) {
-				var material = materials[ 0 ];
-				var object = new THREE.Mesh( geometry, material );
-				scene.add( object );
-			},
-
-			// onProgress callback
-			function ( xhr ) {
-				console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );
-			},
-
-			// onError callback
-			function( err ) {
-				console.log( 'An error happened' );
-			}
-		);
-		</code>
-
-		<h2>Constructor</h2>
-
-		<h3>[name]( [param:LoadingManager manager] )</h3>
-		<p>
-		[page:LoadingManager manager] — The [page:LoadingManager loadingManager] for the loader to use. Default is [page:LoadingManager THREE.DefaultLoadingManager].
-		</p>
-		<p>
-		Creates a new [name].
-		</p>
-
-		<h2>Properties</h2>
-
-		<h3>[property:String crossOrigin]</h3>
-		<p>
-		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
-	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"anonymous"*.
-		</p>
-
-		<h3>[property:LoadingManager manager]</h3>
-		<p>
-			The [page:LoadingManager loadingManager]  the loader is using. Default is [page:DefaultLoadingManager].
-		</p>
-
-		<h3>[property:String withCredentials]</h3>
-		<p>
-			Whether the XMLHttpRequest uses credentials.
-			Default is *false*.
-		</p>
-
-		<h2>Methods</h2>
-
-		<h3>[method:null load]( [param:String url], [param:Function onLoad], [param:Function onProgress], [param:Function onError] )</h3>
-		<p>
-		[page:String url] — the path or URL to the file. This can also be a
-			[link:https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs Data URI]..<br />
-		[page:Function onLoad] — Will be called when load completes. The argument will be the loaded text response.<br />
-		[page:Function onProgress] — Will be called while load progresses. The argument will be the XMLHttpRequest instance, which contains .[page:Integer total] and .[page:Integer loaded] bytes.<br />
-		[page:Function onError] — Will be called when load errors.<br />
-		</p>
-		<p>
-		Begin loading from url and pass the <em>JSON</em> to onLoad.
-		</p>
-
-		<h3>[method:Object3D parse]( [param:Object json], [param:String path] )</h3>
-		<p>
-		[page:String json] — JSON object to parse.<br />
-		[page:String path] — Base path for resources if no resource path is defined.<br /><br />
-
-		Parse a <em>JSON</em> structure and return an [page:object] containing the parsed [page:Geometry geometry] and [page:Array materials].
-		</p>
-
-		<h3>[method:JSONLoader setCrossOrigin]( [param:String value] )</h3>
-		<p>
-			Set the [page:.crossOrigin] attribute.
-		</p>
-
-		<h3>[method:JSONLoader setPath]( [param:String value] )</h3>
-		<p>
-			Set the base path for the original file.
-		</p>
-
-		<h3>[method:JSONLoader setResourcePath]( [param:String value] )</h3>
-		<p>
-			Set the base path for dependent resources like textures.
-		</p>
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 3 - 8
docs/api/en/loaders/ObjectLoader.html

@@ -11,10 +11,7 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			A loader for loading a JSON resource. Unlike the [page:JSONLoader], this one make use of the
-			<em>.type</em> attributes of objects to map them to their original classes.<br /><br />
-
-			Note that this loader can't load [page:Geometries]. Use [page:JSONLoader] instead for that.<br /><br />
+			A loader for loading a JSON resource in the [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].<br /><br />
 
 			This uses the [page:FileLoader] internally for loading files.
 		</p>
@@ -22,10 +19,9 @@
 		<h2>Example</h2>
 
 		<p>
-
-			[example:webgl_animation_scene WebGL / animation / scene]<br />
+			[example:webgl_animation_skinning_blending WebGL / animation / skinning / blending]<br />
 			[example:webgl_loader_json_claraio WebGL / loader / json / claraio]<br />
-			[example:webgl_loader_msgpack WebGL / loader / msgpack]
+			[example:webgl_materials_lightmap WebGL / materials / lightmap]
 		</p>
 
 		<code>
@@ -121,7 +117,6 @@
 		[page:Object json] — required. The JSON source to parse.<br /><br />
 
 		This is used [page:.parse] to parse any [page:Geometry geometries] or [page:BufferGeometry buffer geometries]  in the JSON structure.
-		Internally it uses [page:JSONLoader] for geometries and [page:BufferGeometryLoader] for buffer geometries.
 		</p>
 
 		<h3>[method:Object3D parseMaterials]( [param:Object json] )</h3>

+ 0 - 1
docs/api/en/materials/LineDashedMaterial.html

@@ -18,7 +18,6 @@
 
 		<p>
 			[example:webgl_lines_dashed WebGL / lines / dashed]<br />
-			[example:canvas_lines_dashed Canvas / lines /dashed]
 		</p>
 
 		<code>

+ 0 - 7
docs/api/en/materials/Material.html

@@ -175,13 +175,6 @@
 		Default is *1.0*.
 		</p>
 
-		<h3>[property:Float overdraw]</h3>
-		<p>
-		Amount of triangle expansion at draw time.
-		This is a workaround for cases when gaps appear between triangles when using [page:CanvasRenderer].
-		*0.5* tends to give good results across browsers. Default is *0*.
-		</p>
-
 		<h3>[property:Boolean polygonOffset]</h3>
 		<p>
 		Whether to use polygon offset. Default is *false*. This corresponds to the *GL_POLYGON_OFFSET_FILL* WebGL feature.

+ 1 - 1
docs/api/en/materials/ShaderMaterial.html

@@ -444,7 +444,7 @@ this.extensions = {
 		<h3>[property:Float wireframeLinewidth]</h3>
 		<p>Controls wireframe thickness. Default is 1.<br /><br />
 
-		Due to limitations of the [link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf OpenGL Core Profile)
+		Due to limitations of the [link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf OpenGL Core Profile]
 		with the [page:WebGLRenderer WebGL] renderer on most platforms linewidth will
 		always be 1 regardless of the set value.
 		</p>

+ 0 - 2
docs/api/en/materials/SpriteMaterial.html

@@ -17,8 +17,6 @@
 		<h2>Examples</h2>
 		<div>
 			[example:webgl_sprites WebGL / sprites]<br />
-			[example:misc_ubiquity_test misc / ubiquity / test]<br />
-			[example:misc_ubiquity_test2 misc / ubiquity / test2]<br />
 			[example:software_sandbox software / sandbox]<br />
 			[example:svg_sandbox svg / sandbox]<br />
 			[example:webgl_materials_cubemap_dynamic webgl / materials / cubemap / dynamic]

+ 0 - 5
docs/api/en/objects/SkinnedMesh.html

@@ -149,11 +149,6 @@
 		Updates the [page:Matrix4 MatrixWorld].
 		</p>
 
-		<h3>[method:null initBones]()</h3>
-		<p>
-		Creates an array of hierarchical [page:Bone bones] objects from the internal geometry.
-		</p>
-
 		<h2>Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 1 - 1
docs/api/en/scenes/Scene.html

@@ -41,7 +41,7 @@
 
 		<h3>[property:Object background]</h3>
 		<p>
-		If not null, sets the background used when rendering the scene, and is always rendered first. Can be set to a [page:Color] which sets the clear color, a [page:Texture] covering the canvas, or a [page:CubeTexture]. Default is null.
+		If not null, sets the background used when rendering the scene, and is always rendered first. Can be set to a [page:Color] which sets the clear color, a [page:Texture] covering the canvas, or a cubemap as a [page:CubeTexture] or [page:WebGLRenderTargetCube]. Default is null.
 		</p>
 
 		<h2>Methods</h2>

+ 51 - 0
docs/api/en/textures/DataTexture3D.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:Texture] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">Creates a three-dimensional texture. This type of texture can only be used with a WebGL 2 rendering context.</p>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [param:TypedArray data], [param:Number width], [param:Number height], [param:Number depth] )</h3>
+		<p>
+			[page:Object data] -- data of the texture.<br />
+
+			[page:Number width] -- width of the texture.<br />
+
+			[page:Number height] -- height of the texture.<br />
+
+			[page:Number depth] -- depth of the texture.
+		</p>
+
+		<h2>Example</h2>
+
+		<div>[example:webgl2_materials_texture3d WebGL2 / materials / texture3d]</div>
+		<div>[example:webgl2_materials_texture3d_volume WebGL2 / materials / texture3d / volume]</div>
+
+		<h2>Properties</h2>
+
+		<p>
+		See the base [page:Texture Texture] class for common properties.
+		</p>
+
+		<h2>Methods</h2>
+
+		<p>
+		See the base [page:Texture Texture] class for common methods.
+		</p>
+
+		<h2>Source</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 1 - 4
docs/api/zh/animation/AnimationClip.html

@@ -91,10 +91,7 @@
 		<h3>[method:Array CreateClipsFromMorphTargetSequences]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>
 		<p>
 			返回从几何体的变形目标序列([page:Geometry.morphTargets morph
-			target sequences])创建的新动画剪辑(AnimationClip)数组,并尝试将变形目标名称分类为基于动画组的模式,如“Walk_001、Walk_002、Run_001、Run_002……”。<br /><br />
-
-			该方法被[page:JSONLoader]内部调用, 并且它使用了
-			[page:.CreateFromMorphTargetSequence CreateFromMorphTargetSequence].
+			target sequences])创建的新动画剪辑(AnimationClip)数组,并尝试将变形目标名称分类为基于动画组的模式,如“Walk_001、Walk_002、Run_001、Run_002……”。
 		</p>
 
 		<h3>[method:AnimationClip CreateFromMorphTargetSequence]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>

+ 3 - 0
docs/api/zh/audio/Audio.html

@@ -78,6 +78,9 @@
 		<h3>[property:Boolean isPlaying]</h3>
 		<p>是否正在播放</p>
 
+		<h3>[property:AudioListener listener]</h3>
+		<p>A reference to the listener object of this audio.</p>
+
 		<h3>[property:Number startTime]</h3>
 		<p>开始播放的时间. 和[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start AudioBufferSourceNode.start]()的*when*参数一样. 默认为 *0*.</p>
 

+ 2 - 0
docs/api/zh/audio/AudioListener.html

@@ -66,6 +66,8 @@
 		<h3>[property:AudioNode filter]</h3>
 		<p>默认为*null*.</p>
 
+		<h3>[property:Number timeDelta]</h3>
+		<p>Time delta value for audio entities. Use in context of [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioParam/linearRampToValueAtTime AudioParam.linearRampToValueAtTimeDefault](). Default is *0*.</p>
 
 		<h2>方法</h2>
 

+ 5 - 5
docs/api/zh/cameras/ArrayCamera.html

@@ -10,19 +10,19 @@
 	<body>
 		[page:PerspectiveCamera] &rarr;
 
-		<h1>阵列摄像机([name])</h1>
+		<h1>摄像机阵列([name])</h1>
 
 		<p class="desc">
 
-			[name] 可以被用来更加高效地用一组已经预定义好的摄像机来渲染一个场景。 这对于VR场景的渲染来说,是非常重要的一个性能体现。<br />
-			一个 [name] 的实例中总是包含着一组子摄像机,应当为每一个子摄像机定义*bound*(边界)这个属性,属性决定了由该子摄像机所渲染的视口区域的大小。
+			[name] 用于更加高效地使用一组已经预定义的摄像机来渲染一个场景。这将能够更好地提升VR场景的渲染性能。<br />
+			一个 [name] 的实例中总是包含着一组子摄像机,应当为每一个子摄像机定义*bound*(边界)这个属性,这一属性决定了由该子摄像机所渲染的视口区域的大小。
 		</p>
 
 		<h2>示例</h2>
 
 		<p>[example:webgl_camera_array camera / array ]</p>
 
-		<h2>构造</h2>
+		<h2>构造函数</h2>
 
 		<h3>[name]( [param:Array array] )</h3>
 		<p>
@@ -35,7 +35,7 @@
 
 		<h3>[property:Array cameras]</h3>
 		<p>
-			摄像机组。
+			摄像机组。
 		</p>
 
 		<h2>方法</h2>

+ 1 - 1
docs/api/zh/core/BufferAttribute.html

@@ -191,7 +191,7 @@
 
 
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 1
docs/api/zh/core/Clock.html

@@ -78,7 +78,7 @@
 		</p>
 
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 1
docs/api/zh/core/DirectGeometry.html

@@ -96,7 +96,7 @@
 		<p>传入一个需要转换的 [page:Geometry] 实例。</p>
 
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 1
docs/api/zh/core/EventDispatcher.html

@@ -93,7 +93,7 @@ car.start();
 		</p>
 
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 2
docs/api/zh/core/Face3.html

@@ -18,7 +18,6 @@
 
 		<h2>示例</h2>
 
-		<p>[example:misc_ubiquity_test ubiquity / test ]</p>
 		<p>[example:svg_sandbox svg / sandbox ]</p>
 		<p>[example:misc_exporter_obj exporter / obj ]</p>
 		<p>[example:webgl_shaders_vector WebGL / shaders / vector ]</p>
@@ -123,7 +122,7 @@ scene.add( new THREE.Mesh( geometry, material ) );
 		<p>将参数指定的 Face3 对象的数据拷贝到当前对象。</p>
 
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 1
docs/api/zh/core/Geometry.html

@@ -327,7 +327,7 @@
 		</p>
 
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 1
docs/api/zh/core/InstancedBufferAttribute.html

@@ -37,7 +37,7 @@
 		<h2>方法</h2>
 		<p>继承方法详见 [page:BufferAttribute]。</p>
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 1
docs/api/zh/core/InstancedBufferGeometry.html

@@ -43,7 +43,7 @@
 		</p>
 
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 1
docs/api/zh/core/InstancedInterleavedBuffer.html

@@ -41,7 +41,7 @@
 			继承方法详见 [page:InterleavedBuffer]。
 		</p>
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 1
docs/api/zh/core/InterleavedBuffer.html

@@ -112,7 +112,7 @@
 			克隆当前 [name]。
 		</p>
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 1
docs/api/zh/core/InterleavedBufferAttribute.html

@@ -94,7 +94,7 @@
 		<h3>[method:null setXYZW]( [param:Integer index], [param:Float x], [param:Float y], [param:Float z], [param:Float w] ) </h3>
 		<p>通过给定参数,设置指定索引矢量的第一、二、三、四个元素 (X Y Z 和 W 值)。</p>
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 1
docs/api/zh/core/Layers.html

@@ -75,7 +75,7 @@
 			根据参数切换对象所属图层。
 		</p>
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 1
docs/api/zh/core/Uniform.html

@@ -206,7 +206,7 @@
 			该方法的使用示例详见 [example:webgldeferred_animation WebGL deferred animation]。
 		</p>
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 1
docs/api/zh/core/bufferAttributeTypes/BufferAttributeTypes.html

@@ -49,7 +49,7 @@
 
 		继承方法详见 [page:BufferAttribute]。
 
-		<h2>源</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/core/BufferAttribute.js src/core/BufferAttribute.js]
 	</body>

+ 6 - 25
docs/api/zh/deprecated/DeprecatedList.html

@@ -15,10 +15,6 @@
 			下面就列举出了这些API元素,以及一些关于他们的替代信息。
 		</p>
 
-		
-		
-		
-		
 		<h2>音频(Audio)</h2>
 
 		<h3>[page:Audio]</h3>
@@ -31,9 +27,6 @@
 		<p>BinaryTextureLoader 已被重命名为 [page:DataTextureLoader]。</p>
 
 
-		
-		
-		
 		<h2>缓冲器(Buffers)</h2>
 
 		<h3>[page:BufferAttribute]</h3>
@@ -232,24 +225,13 @@
 			Light.shadowMapHeight 现在是 [page:Light.shadow.mapSize.height]。
 		</p>
 
-
-
-
-
-
-
-
 		<h2>加载器(Loaders)</h2>
 
 		<h3>[page:XHRLoader]</h3>
 		<p>XHRLoader 已被重命名为 [page:FileLoader]。</p>
 
-
-
-
-
-
-
+		<h3>[page:JSONLoader]</h3>
+		<p>JSONLoader has been removed from core.</p>
 
 		<h2>数学(Maths)</h2>
 
@@ -481,11 +463,10 @@
 			Shape.makeGeometry 已被删除。 请使用[page:ShapeGeometry] 。
 		</p>
 
-
-
-
-
-
+		<h3>[page:SkinnedMesh]</h3>
+		<p>
+			SkinnedMesh.initBones() has been removed.
+		</p>
 
 
 		<h2>渲染器(Renderer)</h2>

+ 1 - 1
docs/api/zh/geometries/PolyhedronGeometry.html

@@ -13,7 +13,7 @@
 		<h1>多面几何体([name])</h1>
 
 		<p class="desc">
-			多面体在三维空间中具有一些平面的立体图形。这个类将一个顶点数组投射到一个球面上,之后将它们细分为所需的细节级别。
+			多面体在三维空间中具有一些平面的立体图形。这个类将一个顶点数组投射到一个球面上,之后将它们细分为所需的细节级别。
 		</p>
 
 		<h2>示例</h2>

+ 0 - 1
docs/api/zh/lights/DirectionalLight.html

@@ -38,7 +38,6 @@
 		<p>
 			[example:canvas_morphtargets_horse morphtargets / horse ]<br />
 			[example:misc_controls_fly controls / fly ]<br />
-			[example:misc_lights_test lights / test ]<br />
 			[example:webvr_cubes cubes ]<br />
 			[example:webgl_effects_parallaxbarrier effects / parallaxbarrier ]<br />
 			[example:webgl_effects_stereo effects / stereo ]<br />

+ 0 - 119
docs/api/zh/loaders/JSONLoader.html

@@ -1,119 +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>[name]</h1>
-
-		<p class="desc">
-            以JSON格式来加载对象的加载器。
-			此加载器内部用 [page:FileLoader] 来加载文件。
-		</p>
-
-		<h2>例子</h2>
-
-		<p>
-		[example:webgl_loader_json WebGL / loader / json]<br />
-		[example:webgl_loader_json_objconverter WebGL / loader / json / objconverter]
-		</p>
-
-		<code>
-		// 初始化一个加载器
-		var loader = new THREE.JSONLoader();
-
-		// 加载一个资源
-		loader.load(
-			// 资源URL
-			'models/animated/monster/monster.js',
-
-			// onLoad的回调
-			function ( geometry, materials ) {
-				var material = materials[ 0 ];
-				var object = new THREE.Mesh( geometry, material );
-				scene.add( object );
-			},
-
-			// onProgress的回调
-			function ( xhr ) {
-				console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );
-			},
-
-			// onError的回调
-			function( err ) {
-				console.log( 'An error happened' );
-			}
-		);
-		</code>
-
-		<h2>构造函数</h2>
-
-		<h3>[name]( [param:LoadingManager manager] )</h3>
-		<p>
-		[page:LoadingManager manager] — 加载器所使用的 [page:LoadingManager loadingManager]。 默认为 [page:LoadingManager THREE.DefaultLoadingManager].
-		</p>
-		<p>
-		创建一个新的 [name].
-		</p>
-
-		<h2>属性</h2>
-
-		<h3>[property:String crossOrigin]</h3>
-		<p>
-		如果设置了,在开始加载前, 将为图片分配 [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
-	 属性,其值为 *crossOrigin*,默认为"anonymous"。
-		</p>
-
-		<h3>[property:LoadingManager manager]</h3>
-		<p>
-			加载器正在使用的 [page:LoadingManager loadingManager] 。 默认为 [page:DefaultLoadingManager].
-		</p>
-
-		<h3>[property:String withCredentials]</h3>
-		<p>
-            XMLHttpRequest请求是否使用了证书。
-			默认为 *false*.
-		</p>
-
-		<h2>方法</h2>
-
-		<h3>[method:null load]( [param:String url], [param:Function onLoad], [param:Function onProgress], [param:Function onError] )</h3>
-		<p>
-		[page:String url] — 文件的URL或者路径,也可以为
-			[link:https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs Data URI]..<br />
-		[page:Function onLoad] — 加载完成时将调用。回调参数将是加载的响应。<br />
-		[page:Function onProgress] — 将在加载过程中进行调用。参数为XMLHttpRequest实例,
-            其中包含 [page:Integer total] 和 [page:Integer loaded] 字节。<br />
-		[page:Function onError] — 在加载错误时被调用。<br />
-		</p>
-		<p>
-		从URL中进行加载并将 <em>JSON</em> 传递给 onLoad。
-		</p>
-
-		<h3>[method:JSONLoader setCrossOrigin]( [param:String value] )</h3>
-		<p>
-			设置 [page:.crossOrigin] 的属性。
-		</p>
-
-		<h3>[method:JSONLoader setTexturePath]( [param:String texturePath] )</h3>
-		<p>
-            设置加载文件的基本路径或URL。当加载同一目录中的许多模型,此方法将很有用。
-		</p>
-
-		<h3>[method:Object3D parse]( [param:Object json], [param:String texturePath] )</h3>
-		<p>
-		[page:String json] — 需要解析的JSON对象。<br />
-		[page:String texturePath] — 纹理的基本路径。<br /><br />
-
-		解析要给 <em>JSON</em> 结构并返回 [page:object] 包含 [page:Geometry geometry] 和 [page:Array materials] 的对象.
-		</p>
-
-		<h2>源</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 3 - 8
docs/api/zh/loaders/ObjectLoader.html

@@ -11,10 +11,7 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			一个用来加载JSON资源的加载器。 不像[page:JSONLoader],这个加载器使用
-			<em>.type</em>对象属性,来映射它自己到源类。<br /><br />
-
-			请注意这个加载器不能用来加载[page:Geometries],而是用[page:JSONLoader]进行加载。<br /><br />
+			A loader for loading a JSON resource in the [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].<br /><br />
 
 			此加载器内部使用[page:FileLoader]进行加载文件。
 		</p>
@@ -22,10 +19,9 @@
 		<h2>例子</h2>
 
 		<p>
-
-			[example:webgl_animation_scene WebGL / animation / scene]<br />
+			[example:webgl_animation_skinning_blending WebGL / animation / skinning / blending]<br />
 			[example:webgl_loader_json_claraio WebGL / loader / json / claraio]<br />
-			[example:webgl_loader_msgpack WebGL / loader / msgpack]
+			[example:webgl_materials_lightmap WebGL / materials / lightmap]
 		</p>
 
 		<code>
@@ -120,7 +116,6 @@
 		[page:Object json] — 必选参数,需要被解析的JSON源。<br /><br />
 
             此函数以JSON结构,用[page:.parse]去解析[page:Geometry geometries]或[page:BufferGeometry buffer geometries]。
-            在内部,它使用JSONLoader作为几何加载器,使用BufferGeometryLoader作为几何缓冲区加载器。
 		</p>
 
 		<h3>[method:Object3D parseMaterials]( [param:Object json] )</h3>

+ 0 - 5
docs/api/zh/materials/Material.html

@@ -147,11 +147,6 @@
 
 </p>
 
-<h3>[property:Float overdraw]</h3>
-<p>绘制时的三角形扩展量。对于使用[page:CanvasRenderer]时三角形之间出现间隙的情况,这是一种解决方法。
-    *0.5*往往会在浏览器中有良好的结果。默认值为*0*。
-</p>
-
 <h3>[property:Boolean polygonOffset]</h3>
 <p> 是否使用多边形偏移。默认值为*false*。这对应于WebGL的*GL_POLYGON_OFFSET_FILL*功能。
 </p>

+ 0 - 2
docs/api/zh/materials/SpriteMaterial.html

@@ -17,8 +17,6 @@
 		<h2>例子(Examples)</h2>
 		<div>
 			[example:webgl_sprites WebGL / sprites]<br />
-			[example:misc_ubiquity_test misc / ubiquity / test]<br />
-			[example:misc_ubiquity_test2 misc / ubiquity / test2]<br />
 			[example:software_sandbox software / sandbox]<br />
 			[example:svg_sandbox svg / sandbox]<br />
 			[example:webgl_materials_cubemap_dynamic webgl / materials / cubemap / dynamic]

+ 0 - 5
docs/api/zh/objects/SkinnedMesh.html

@@ -144,11 +144,6 @@
 		更新[page:Matrix4 MatrixWorld]矩阵。
 		</p>
 
-		<h3>[method:null initBones]()</h3>
-		<p>
-		从内部几何体中创建一个分层[page:Bone bones]对象的数组。
-		</p>
-
 		<h2>源代码</h2>
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 28 - 28
docs/api/zh/textures/CanvasTexture.html

@@ -10,67 +10,67 @@
 	<body>
 		[page:Texture] &rarr;
 
-		<h1>[name]</h1>
+		<h1>Canvas纹理([name]</h1>
 
 		<p class="desc">
-		Creates a texture from a canvas element.<br /><br />
+		从Canvas元素中创建纹理贴图。<br /><br />
 
-		This is almost the same as the base [page:Texture Texture] class, except that it sets [page:Texture.needsUpdate needsUpdate] to *true* immediately.
+		它几乎与其基类[page:Texture Texture]相同,但它直接将[page:Texture.needsUpdate needsUpdate](需要更新)设置为了*true*。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 		<h3>[name]( [param:HTMLElement canvas], [param:Constant mapping], [param:Constant wrapS], [param:Constant wrapT], [param:Constant magFilter], [param:Constant minFilter], [param:Constant format], [param:Constant type], [param:Number anisotropy] )</h3>
 		<p>
-		[page:HTMLElement canvas] -- The HTML canvas element from which to load the texture. <br />
+		[page:HTMLElement canvas] -- 将会被用于加载纹理贴图的Canvas元素。<br />
 
-		[page:Constant mapping] --  How the image is applied to the object. An object type of [page:Textures THREE.UVMapping].
-		See [page:Textures mapping constants] for other choices.<br />
+		[page:Constant mapping] --  纹理贴图将被如何应用(映射)到物体上,它是[page:Textures THREE.UVMapping]中的对象类型。
+		请参阅[page:Textures mapping constants](映射模式常量)来了解其他选项。<br />
 
-		[page:Constant wrapS] -- The default is [page:Textures THREE.ClampToEdgeWrapping].
-		See [page:Textures wrap mode constants] for other choices.<br />
+		[page:Constant wrapS] -- 默认值是[page:Textures THREE.ClampToEdgeWrapping].
+		请参阅[page:Textures wrap mode constants](包裹模式常量)来了解其他选项。<br />
 
-		[page:Constant wrapT] -- The default is [page:Textures THREE.ClampToEdgeWrapping].
-		See [page:Textures wrap mode constants] for other choices.<br />
+		[page:Constant wrapT] -- 默认值是[page:Textures THREE.ClampToEdgeWrapping].
+		请参阅[page:Textures wrap mode constants](包裹模式常量)来了解其他选项。<br />
 
-		[page:Constant magFilter] -- How the texture is sampled when a texel covers more than one pixel.
-		The default is [page:Textures THREE.LinearFilter]. See [page:Textures magnification filter constants] for other choices.<br />
+		[page:Constant magFilter] -- 当一个纹素覆盖大于一个像素时,贴图将如何采样。
+		其默认值为[page:Textures THREE.LinearFilter]。请参阅[page:Textures magnification filter constants](放大滤镜常量)来了解其它选项。<br />
 
-		[page:Constant minFilter] -- How the texture is sampled when a texel covers less than one pixel.
-		 The default is [page:Textures THREE.LinearMipMapLinearFilter]. See [page:Textures minification filter constants] for other choices.<br />
+		[page:Constant minFilter] -- 当一个纹素覆盖小于一个像素时,贴图将如何采样。
+		其默认值为[page:Textures THREE.LinearMipMapLinearFilter]。请参阅[page:Textures minification filter constants](缩小滤镜常量)来了解其它选项。<br />
 
-    [page:Constant format] -- The format used in the texture.
-     See [page:Textures format constants] for other choices.<br />
+    	[page:Constant format] -- 在纹理贴图中使用的格式。
+     	请参阅[page:Textures format constants](格式常量)来了解各个选项。<br />
 
-    [page:Constant type] -- Default is [page:Textures THREE.UnsignedByteType].
-     See [page:Textures type constants] for other choices.<br />
+    	[page:Constant type] -- 默认值是[page:Textures THREE.UnsignedByteType].
+    	请参阅[page:Textures type constants](类型常量)来了解其他选项。<br />
 
-		[page:Number anisotropy] -- The number of samples taken along the axis through the pixel that has the highest density of texels.
-		By default, this value is 1. A higher value gives a less blurry result than a basic mipmap, at the cost of more texture samples being used.
-		Use [page:WebGLrenderer.getMaxAnisotropy renderer.getMaxAnisotropy]() to find the maximum valid anisotropy value for the GPU; this value is usually a power of 2.<br /><br />
+		[page:Number anisotropy] -- 沿着轴,通过具有最高纹素密度的像素的样本数。
+		默认情况下,这个值为1。设置一个较高的值将会产生比基本的mipmap更清晰的效果,代价是需要使用更多纹理样本。
+		使用[page:WebGLrenderer.getMaxAnisotropy renderer.getMaxAnisotropy]() 来查询GPU中各向异性的最大有效值;这个值通常是2的幂。<br /><br />
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 		<p>
-    See the base [page:Texture Texture] class for common properties.
+    请参阅其基类[page:Texture Texture]来了解共有属性。
     </p>
 
 		<h3>[property:boolean needsUpdate]</h3>
 
 		<p>
-			True by default. This is required so that the canvas data is loaded.
+			默认值为true,这是必须的,以便使得Canvas中的数据能够载入。
 		</p>
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
     <p>
-    See the base [page:Texture Texture] class for common methods.
+    请参阅[page:Texture Texture]来了解共有方法。
     </p>
 
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 32 - 32
docs/api/zh/textures/CompressedTexture.html

@@ -10,78 +10,78 @@
 	<body>
 		[page:Texture] &rarr;
 
-		<h1>[name]</h1>
+		<h1>压缩的纹理([name]</h1>
 
 		<p class="desc">
-		Creates a texture based on data in compressed form, for example from a [link:https://en.wikipedia.org/wiki/DirectDraw_Surface DDS] file.<br /><br />
+		基于被压缩的数据,创建一个纹理贴图,例如从一个[link:https://en.wikipedia.org/wiki/DirectDraw_Surface DDS]文件中。<br /><br />
 
 
-		For use with the [page:CompressedTextureLoader CompressedTextureLoader].
+		它和[page:CompressedTextureLoader CompressedTextureLoader]一起使用。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 
 
 		<h3>[name]( [param:Array mipmaps], [param:Number width], [param:Number height], [param:Constant format], [param:Constant type], [param:Constant mapping], [param:Constant wrapS], [param:Constant wrapT], [param:Constant magFilter], [param:Constant minFilter], [param:Number anisotropy] )</h3>
 		<p>
-		[page:Array mipmaps] -- The mipmaps array should contain objects with data, width and height. The mipmaps should be of the correct format and type.<br />
+		[page:Array mipmaps] -- mipmaps数组中需要包含具有数据、宽、高的对象。mipmaps应当具有正确的格式与类型。<br />
 
-		[page:Number width] -- The width of the biggest mipmap.<br />
+		[page:Number width] -- 最大的mipmap的宽。<br />
 
-		[page:Number height] -- The height of the biggest mipmap.<br />
+		[page:Number height] -- 最大的mipmap的高。<br />
 
-		[page:Constant format] -- The format used in the mipmaps.
-		See [page:Textures ST3C Compressed Texture Formats],
-		[page:Textures PVRTC Compressed Texture Formats] and
-		[page:Textures ETC Compressed Texture Format] for other choices.<br />
+		[page:Constant format] -- 在mipmaps中使用的格式。
+		请参阅[page:Textures ST3C Compressed Texture Formats]、
+		[page:Textures PVRTC Compressed Texture Formats]
+		[page:Textures ETC Compressed Texture Format]页面来了解其它选项。<br />
 
-		[page:Constant type] -- Default is [page:Textures THREE.UnsignedByteType].
-		See [page:Textures type constants] for other choices.<br />
+		[page:Constant type] -- 默认值是[page:Textures THREE.UnsignedByteType]。
+		请参阅[page:Textures type constants]页面来了解其它选项。<br />
 
-		[page:Constant mapping] --  How the image is applied to the object. An object type of [page:Textures THREE.UVMapping].
-		See [page:Textures mapping constants] for other choices.<br />
+		[page:Constant mapping] --  纹理贴图将被如何应用(映射)到物体上,它是[page:Textures THREE.UVMapping]中的对象类型。
+		请参阅[page:Textures mapping constants](映射模式常量)来了解其他选项。<br />
 
-		[page:Constant wrapS] -- The default is [page:Textures THREE.ClampToEdgeWrapping].
-		See [page:Textures wrap mode constants] for other choices.<br />
+		[page:Constant wrapS] -- 默认值是[page:Textures THREE.ClampToEdgeWrapping].
+		请参阅[page:Textures wrap mode constants](包裹模式常量)来了解其他选项。<br />
 
-		[page:Constant wrapT] -- The default is [page:Textures THREE.ClampToEdgeWrapping].
-		See [page:Textures wrap mode constants] for other choices.<br />
+		[page:Constant wrapT] -- 默认值是[page:Textures THREE.ClampToEdgeWrapping].
+		请参阅[page:Textures wrap mode constants](包裹模式常量)来了解其他选项。<br />
 
-		[page:Constant magFilter] -- How the texture is sampled when a texel covers more than one pixel.
-		The default is [page:Textures THREE.LinearFilter]. See [page:Textures magnification filter constants] for other choices.<br />
+		[page:Constant magFilter] -- 当一个纹素覆盖大于一个像素时,贴图将如何采样。
+		其默认值为[page:Textures THREE.LinearFilter]。请参阅[page:Textures magnification filter constants](放大滤镜常量)来了解其它选项。<br />
 
-		[page:Constant minFilter] -- How the texture is sampled when a texel covers less than one pixel.
-		 The default is [page:Textures THREE.LinearMipMapLinearFilter]. See [page:Textures minification filter constants] for other choices.<br />
+		[page:Constant minFilter] -- 当一个纹素覆盖小于一个像素时,贴图将如何采样。
+		其默认值为[page:Textures THREE.LinearMipMapLinearFilter]。请参阅[page:Textures minification filter constants](缩小滤镜常量)来了解其它选项。<br />
 
-		[page:Number anisotropy] -- The number of samples taken along the axis through the pixel that has the highest density of texels.
-		By default, this value is 1. A higher value gives a less blurry result than a basic mipmap, at the cost of more texture samples being used.
-		Use renderer.getMaxAnisotropy() to find the maximum valid anisotropy value for the GPU; this value is usually a power of 2.<br /><br />
+		[page:Number anisotropy] -- 沿着轴,通过具有最高纹素密度的像素的样本数。
+		默认情况下,这个值为1。设置一个较高的值将会产生比基本的mipmap更清晰的效果,代价是需要使用更多纹理样本。
+		使用[page:WebGLrenderer.getMaxAnisotropy renderer.getMaxAnisotropy]() 来查询GPU中各向异性的最大有效值;这个值通常是2的幂。<br /><br />
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
-		See the base [page:Texture Texture] class for common properties.
+		请参阅其基类[page:Texture Texture]来了解共有属性。
 
 		<h3>[property:boolean flipY]</h3>
 
 		<p>
-			False by default. Flipping textures does not work for compressed textures.
+			默认值为false。翻转纹理在压缩的纹理贴图中无法工作。
 		</p>
 
 		<h3>[property:boolean generateMipmaps]</h3>
 
 		<p>
-			False by default. Mipmaps can't be generated for compressed textures
+			默认值为false。无法为压缩的纹理贴图生成Mipmap。
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 11 - 12
docs/api/zh/textures/CubeTexture.html

@@ -10,11 +10,11 @@
 	<body>
 		[page:Texture] &rarr;
 		
-		<h1>[name]</h1>
+		<h1>立方纹理([name]</h1>
 
-		<p class="desc">Creates a cube texture made up of six images.</p>
+		<p class="desc">创建一个由6张图片所组成的纹理对象。</p>
 
-		<h2>Example</h2>
+		<h2>示例</h2>
 
 		<code>
 		var loader = new THREE.CubeTextureLoader();
@@ -29,28 +29,27 @@
 		var material = new THREE.MeshBasicMaterial( { color: 0xffffff, envMap: textureCube } );
 		</code>
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 
 
 		<h3>[name]( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy )</h3>
 		
 		<p>
-		CubeTexture is almost equivalent in functionality and usage to [page:Texture]. The only differences are that the
-		images are an array of 6 images as opposed to a single image, and the mapping options are
-		[page:Textures THREE.CubeReflectionMapping] (default) or [page:Textures THREE.CubeRefractionMapping]
+		CubeTexture(立方贴图)的功能以及用法几乎和[page:Texture]是相同的。区别在于,CubeTexture中的图像是6个单独的图像所组成的数组,
+		纹理映射选项为[page:Textures THREE.CubeReflectionMapping](默认值)或[page:Textures THREE.CubeRefractionMapping]。
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
-		<h3>See [page:Texture]</h3>
+		<h3>请参阅[page:Texture]页面。</h3>
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 		
 
-		<h3>See [page:Texture]</h3>
+		<h3>请参阅[page:Texture]页面。</h3>
 		
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 51 - 0
docs/api/zh/textures/DataTexture3D.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:Texture] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">创建一个三维的纹理贴图。这种纹理贴图只能被用于WebGL 2渲染环境中。</p>
+
+		<h2>构造函数</h2>
+
+		<h3>[name]( [param:TypedArray data], [param:Number width], [param:Number height], [param:Number depth] )</h3>
+		<p>
+			[page:Object data] -- 纹理的数据。<br />
+
+			[page:Number width] -- 纹理的宽度。<br />
+
+			[page:Number height] -- 纹理的高度。<br />
+
+			[page:Number depth] -- 纹理的深度。
+		</p>
+
+		<h2>示例</h2>
+
+		<div>[example:webgl2_materials_texture3d WebGL2 / materials / texture3d]</div>
+		<div>[example:webgl2_materials_texture3d_volume WebGL2 / materials / texture3d / volume]</div>
+
+		<h2>属性</h2>
+
+		<p>
+		请参阅其基类[page:Texture Texture]来了解共有属性。
+		</p>
+
+		<h2>方法</h2>
+
+		<p>
+		请参阅其基类[page:Texture Texture]来了解共有方法。
+		</p>
+
+		<h2>源代码</h2>
+
+		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+	</body>
+</html>

+ 40 - 41
docs/api/zh/textures/DepthTexture.html

@@ -10,103 +10,102 @@
 	<body>
 		[page:Texture] &rarr;
 
-		<h1>[name]</h1>
+		<h1>深度纹理([name]</h1>
 
 		<p class="desc">
-		Creates a texture for use as a Depth Texture. Require support for the
-	[link:https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/ WEBGL_depth_texture] extension.
+		创建一个作为深度纹理贴图来使用的纹理。需要支持[link:https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/ WEBGL_depth_texture]扩展。
 		</p>
 
-		<h2>Example</h2>
+		<h2>示例</h2>
 
 		[example:webgl_depth_texture depth / texture]
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 		<h3>[name]( [param:Number width], [param:Number height], [param:Constant type], [param:Constant wrapS], [param:Constant wrapT], [param:Constant magFilter], [param:Constant minFilter], [param:Number anisotropy], [param:Constant format] )</h3>
 
 		<p>
-		[page:Number width] -- width of the texture.<br />
+		[page:Number width] -- 纹理的宽度。<br />
 
-		[page:Number height] -- height of the texture.<br />
+		[page:Number height] -- 纹理的高度。<br />
 
-		[page:Constant type] -- Default is [page:Textures THREE.UnsignedShortType].
-		See [page:Textures type constants] for other choices.<br />
+		[page:Constant type] -- 默认值是[page:Textures THREE.UnsignedShortType]。
+    	请参阅[page:Textures type constants](类型常量)来了解其他选项。<br />
 
 		[page:Constant mapping] --
-		See [page:Textures type constants] for details.<br />
+		请参阅[page:Textures mapping constants](映射模式常量)来了解其他选项。<br />
 
-		[page:Constant wrapS] -- The default is [page:Textures THREE.ClampToEdgeWrapping].
-		See [page:Textures wrap mode constants] for other choices.<br />
+		[page:Constant wrapS] -- 默认值是[page:Textures THREE.ClampToEdgeWrapping].
+		请参阅[page:Textures wrap mode constants](包裹模式常量)来了解其他选项。<br />
 
-		[page:Constant wrapT] -- The default is [page:Textures THREE.ClampToEdgeWrapping].
-		See [page:Textures wrap mode constants] for other choices.<br />
+		[page:Constant wrapT] -- 默认值是[page:Textures THREE.ClampToEdgeWrapping].
+		请参阅[page:Textures wrap mode constants](包裹模式常量)来了解其他选项。<br />
 
-		[page:Constant magFilter] -- How the texture is sampled when a texel covers more than one pixel.
-		The default is [page:Textures THREE.NearestFilter]. See [page:Textures magnification filter constants] for other choices.<br />
+		[page:Constant magFilter] -- 当一个纹素覆盖大于一个像素时,贴图将如何采样。
+		其默认值为[page:Textures THREE.LinearFilter]。请参阅[page:Textures magnification filter constants](放大滤镜常量)来了解其它选项。<br />
 
-		[page:Constant minFilter] -- How the texture is sampled when a texel covers less than one pixel.
-		The default is [page:Textures THREE.NearestFilter]. See [page:Textures minification filter constants] for other choices.<br />
+		[page:Constant minFilter] -- 当一个纹素覆盖小于一个像素时,贴图将如何采样。
+		其默认值为[page:Textures THREE.LinearMipMapLinearFilter]。请参阅[page:Textures minification filter constants](缩小滤镜常量)来了解其它选项。<br />
 
-		[page:Number anisotropy] -- The number of samples taken along the axis through the pixel that has the highest density of texels.
-		By default, this value is 1. A higher value gives a less blurry result than a basic mipmap, at the cost of more texture samples being used.
-		Use [page:WebGLrenderer.getMaxAnisotropy renderer.getMaxAnisotropy]() to find the maximum valid anisotropy value for the GPU; this value is usually a power of 2.<br />
+		[page:Number anisotropy] -- 沿着轴,通过具有最高纹素密度的像素的样本数。
+		默认情况下,这个值为1。设置一个较高的值将会产生比基本的mipmap更清晰的效果,代价是需要使用更多纹理样本。
+		使用[page:WebGLrenderer.getMaxAnisotropy renderer.getMaxAnisotropy]() 来查询GPU中各向异性的最大有效值;这个值通常是2的幂。<br /><br />
 
-		[page:Constant format] -- must be either [page:Textures DepthFormat] (default) or [page:Textures DepthStencilFormat].
-		See [page:Textures format constants] for details.<br />
+		[page:Constant format] -- 这个值必须是[page:Textures DepthFormat](默认值)或者[page:Textures DepthStencilFormat]。
+		请参阅[page:Textures format constants](格式常量)来了解详细信息。<br />
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 		<p>
-		See the base [page:Texture Texture] class for common properties
-		- the following are also part of the texture class, but have different defaults here.
+		请参阅其基类[page:Texture Texture]来了解共有属性。
+		—— 以下属性也是texture类中的一部分,但在这里默认值不同。
 		</p>
 
 		<h3>[page:Texture.format .format]</h3>
 		<p>
-		Either [page:Textures DepthFormat] (default) or [page:Textures DepthStencilFormat].
-		See [page:Textures format constants] for details.<br />
+		[page:Textures DepthFormat](默认值)或者[page:Textures DepthStencilFormat]中的一个。
+		请参阅[page:Textures format constants]来了解详细信息。<br />
 		</p>
 
 		<h3>[page:Texture.type .type]</h3>
 		<p>
-		Default is [page:Textures THREE.UnsignedShortType].
-		See [page:Textures format constants] for details.<br />
+		默认值是[page:Textures THREE.UnsignedShortType]。
+		请参阅[page:Textures format constants]来了解详细信息。<br />
 		</p>
 
 		<h3>[page:Texture.magFilter .magFilter]</h3>
 		<p>
-		  How the texture is sampled when a texel covers more than one pixel.
-			The default is [page:Textures THREE.NearestFilter].
-		  See [page:Textures magnification filter constants] for other choices.
+		当一个纹素覆盖大于一个像素时,贴图将如何采样。
+		其默认值为[page:Textures THREE.NearestFilter]。
+		请参阅[page:Textures magnification filter constants](放大滤镜常量)来了解其他选项。
 		</p>
 
 		<h3>[page:Texture.minFilter .minFilter]</h3>
 		<p>
-		How the texture is sampled when a texel covers less than one pixel.
-		The default is [page:Textures THREE.NearestFilter].
-		See [page:Textures magnification filter constants] for other choices.
+		当一个纹素覆盖小于一个像素时,贴图将如何采样。
+		其默认值为[page:Textures THREE.NearestFilter]。
+		请参阅[page:Textures minification filter constants](缩小滤镜常量)来了解其他选项。
 		</p>
 
 		<h3>[page:Texture.flipY .flipY]</h3>
 		<p>
-		Depth textures do not need to be flipped so this is *false* by default.
+		深度贴图不需要被翻转,因此其默认值为*false*。
 		</p>
 
 		<h3>[page:Texture.generateMipmaps .generateMipmaps]</h3>
 		<p>
-		Depth textures do not use mipmaps.
+		深度贴图不使用mipmap。
 		</p>
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 		<p>
-		See the base [page:Texture Texture] class for common methods.
+		请参阅其基类[page:Texture Texture]来了解共有方法。
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 92 - 95
docs/api/zh/textures/Texture.html

@@ -8,16 +8,16 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>纹理([name]</h1>
 
-		<p class="desc">Create a texture to apply to a surface or as a reflection or refraction map.</p>
+		<p class="desc">创建一个纹理贴图,将其应用到一个表面,或者作为反射/折射贴图。</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 
 		<h3>[name]( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding )</h3>
 
-		<h2>Example</h2>
+		<h2>源代码</h2>
 
 		<code>
 		// load a texture, set wrap mode to repeat
@@ -27,236 +27,233 @@
 		texture.repeat.set( 4, 4 );
 		</code>
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 		<h3>[property:Integer id]</h3>
 		<p>
-		Readonly - unique number for this texture instance.
+		只读 - 表示该纹理实例的唯一数字。
 		</p>
 
 		<h3>[property:String uuid]</h3>
 		<p>
-		[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] of this object instance.
-		This gets automatically assigned, so this shouldn't be edited.
+		该对象实例的[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID]
+		这个值是自动分配的,因此不应当对其进行编辑。
 		</p>
 
 		<h3>[property:String name]</h3>
 		<p>
-		Optional name of the object (doesn't need to be unique). Default is an empty string.
+		该对象的名称,可选,且无需唯一。默认值是一个空字符串。
 		</p>
 
 		<h3>[property:Image image]</h3>
 		<p>
-		An image object, typically created using the [page:TextureLoader.load] method.
-		This can be any image (e.g., PNG, JPG, GIF, DDS) or video (e.g., MP4, OGG/OGV) type supported by three.js.<br /><br />
+		一个图片对象,通常由[page:TextureLoader.load]方法创建。
+		该对象可以是被three.js所支持的任意图片(例如PNG、JPG、GIF、DDS)或视频(例如MP4、OGG/OGV)格式。<br /><br />
 
-		To use video as a texture you need to have a playing HTML5
-		video element as a source for your texture image and continuously update this texture
-		as long as video is playing - the [page:VideoTexture VideoTexture] class handles this automatically.
+		要使用视频来作为纹理贴图,你需要有一个正在播放的HTML5 Video元素来作为你纹理贴图的源图像,
+		并在视频播放时不断地更新这个纹理贴图。——[page:VideoTexture VideoTexture] 类会对此自动进行处理。
 		</p>
 
 		<h3>[property:array mipmaps]</h3>
 		<p>
-		Array of user-specified mipmaps (optional).
+		用户所给定的mipmap数组(可选)。
 		</p>
 
 		<h3>[property:number mapping]</h3>
 		<p>
-		How the image is applied to the object. An object type of [page:Textures THREE.UVMapping] is the default,
-		where the U,V coordinates are used to apply the map.<br />
+		图像将如何应用到物体(对象)上。默认值是[page:Textures THREE.UVMapping]对象类型,
+		即UV坐标将被用于纹理映射。<br />
 
-		See the [page:Textures texture constants] page for other mapping types.
+		请参阅[page:Textures texture constants](映射模式常量)来了解其他映射类型。
 		</p>
 
 		<h3>[property:number wrapS]</h3>
 		<p>
-		This defines how the texture is wrapped horizontally and corresponds to *U* in UV mapping.<br />
-		The default is [page:Textures THREE.ClampToEdgeWrapping], where the edge is clamped to the outer edge texels.
-		The other two choices are [page:Textures THREE.RepeatWrapping] and [page:Textures THREE.MirroredRepeatWrapping].
-		See the [page:Textures texture constants] page for details.
+		这个值定义了纹理贴图在水平方向上将如何包裹,在UV映射中对应于*U*。<br />
+		默认值是[page:Textures THREE.ClampToEdgeWrapping],即纹理边缘将被推到外部边缘的纹素。
+
+		其它的两个选项分别是[page:Textures THREE.RepeatWrapping]和[page:Textures THREE.MirroredRepeatWrapping]。
+		请参阅[page:Textures texture constants]来了解详细信息。
 		</p>
 
 		<h3>[property:number wrapT]</h3>
 		<p>
-		This defines how the texture is wrapped vertically and corresponds to *V* in UV mapping.<br />
-		The same choices are available as for [property:number wrapS].<br /><br />
+		这个值定义了纹理贴图在垂直方向上将如何包裹,在UV映射中对应于*V*。<br />
+		可以使用与[property:number wrapS]相同的选项。<br /><br />
 
-		NOTE: tiling of images in textures only functions if image dimensions are powers of two
-		 (2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, ...) in terms of pixels.
-		 Individual dimensions need not be equal, but each must be a power of two.
-		 This is a limitation of WebGL, not three.js.
+		请注意:纹理中图像的平铺,仅有当图像大小(以像素为单位)为2的幂(2、4、8、16、32、64、128、256、512、1024、2048、……)时才起作用。
+		宽度、高度无需相等,但每个维度的长度必须都是2的幂。
+		这是WebGL中的限制,不是由three.js所限制的。
 		</p>
 
 		<h3>[property:number magFilter]</h3>
 		<p>
-		How the texture is sampled when a texel covers more than one pixel. The default is
-		 [page:Textures THREE.LinearFilter], which takes the four closest texels and bilinearly interpolates among them.
-		 The other option is [page:Textures THREE.NearestFilter], which uses the value of the closest texel.<br />
-		 See the [page:Textures texture constants] page for details.
+		当一个纹素覆盖大于一个像素时,贴图将如何采样。默认值为[page:Textures THREE.LinearFilter],
+		它将获取四个最接近的纹素,并在他们之间进行双线性插值。
+		另一个选项是[page:Textures THREE.NearestFilter],它将使用最接近的纹素的值。<br />
+		请参阅[page:Textures texture constants]页面来了解详细信息。
 		</p>
 
 		<h3>[property:number minFilter]</h3>
 		<p>
-		How the texture is sampled when a texel covers less than one pixel. The default is
-		[page:Textures THREE.LinearMipMapLinearFilter], which uses mipmapping and a trilinear filter. <br /><br />
+		当一个纹素覆盖小于一个像素时,贴图将如何采样。默认值为[page:Textures THREE.LinearMipMapLinearFilter],
+		它将使用mipmapping以及三次线性滤镜。<br /><br />
 
-		See the [page:Textures texture constants] page for all possible choices.
+		请参阅[page:Textures texture constants]页面来了解所有可能的选项。
 		</p>
 
 		<h3>[property:number anisotropy]</h3>
 		<p>
-		The number of samples taken along the axis through the pixel that has the highest density of texels.
-		By default, this value is 1. A higher value gives a less blurry result than a basic mipmap,
-		at the cost of more texture samples being used. Use [page:WebGLRenderer.getMaxAnisotropy renderer.getMaxAnisotropy]() to
-		find the maximum valid anisotropy value for the GPU; this value is usually a power of 2.
+		沿着轴,通过具有最高纹素密度的像素的样本数。
+		默认情况下,这个值为1。设置一个较高的值将会产生比基本的mipmap更清晰的效果,代价是需要使用更多纹理样本。
+		使用[page:WebGLrenderer.getMaxAnisotropy renderer.getMaxAnisotropy]() 来查询GPU中各向异性的最大有效值;这个值通常是2的幂。
 		</p>
 
 		<h3>[property:number format]</h3>
 		<p>
-		The default is [page:Textures THREE.RGBAFormat], although the [page:TextureLoader TextureLoader] will automatically
-		set this to [page:Textures THREE.RGBFormat] for JPG images. <br /><br />
+		默认值为[page:Textures THREE.RGBAFormat],
+		但[page:TextureLoader TextureLoader]将会在载入JPG图片时自动将这个值设置为[page:Textures THREE.RGBFormat]。<br /><br />
 
-		See the [page:Textures texture constants] page for details of other formats.
+		请参阅[page:Textures texture constants]页面来了解其它格式。
 		</p>
 
 		<h3>[property:number type]</h3>
 		<p>
-		This must correspond to the [page:Texture.format .format]. The default is [page:Textures THREE.UnsignedByteType],
-		which will be used for most texture formats.<br /><br />
+			这个值必须与[page:Texture.format .format]相对应。默认值为[page:Textures THREE.UnsignedByteType],
+			它将会被用于绝大多数纹理格式。<br /><br />
 
-		See the [page:Textures texture constants] page for details of other formats.
+		请参阅[page:Textures texture constants]来了解其它格式。
 		</p>
 
 		<h3>[property:Vector2 offset]</h3>
 		<p>
-		How much a single repetition of the texture is offset from the beginning, in each direction U and V.
-		Typical range is *0.0* to *1.0*.  _Note:_ The offset property is a convenience modifier and only affects
-		the Texture's application to the first set of UVs on a model.  If the Texture is used as a map requiring
-		additional UV sets (e.g. the aoMap or lightMap of most stock materials), those UVs must be manually
-		assigned to achieve the desired offset.
+		纹理在单次重复时,从一开始将分别在U、V方向上偏移多少。
+		这个值的范围通常在*0.0*之间*1.0*。
+		请注意:这一属性是一个非常方便的修改器,仅仅影响纹理对模型上第一组UV的应用。
+		如果该纹理被用于需要额外的UV集的贴图(例如一些成品材质中的aoMap或lightMap),
+		这些UV必须被手动调整来实现所期望的偏移。
 		</p>
 
 		<h3>[property:Vector2 repeat]</h3>
 		<p>
-		How many times the texture is repeated across the surface, in each direction U and V.  If repeat is set
-		greater than 1 in either direction, the corresponding Wrap parameter should also be set to
-		[page:Textures THREE.RepeatWrapping] or [page:Textures THREE.MirroredRepeatWrapping] to achieve the desired
-		tiling effect.  _Note:_ The repeat property is a convenience modifier and only affects
-		the Texture's application to the first set of UVs on a model.  If the Texture is used as a map requiring
-		additional UV sets (e.g. the aoMap or lightMap of most stock materials), those UVs must be manually
-		assigned to achieve the desired repetiton.
+		纹理将在表面上,分别在U、V方向重复多少次。如果这个值在任意方向上设置为大于1,
+		则对应的Wrap参数应当也被设为[page:Textures THREE.RepeatWrapping]或[page:Textures THREE.MirroredRepeatWrapping],
+		以实现所期望的平铺效果。
+		请注意:这一属性是一个非常方便的修改器,仅仅影响纹理对模型上第一组UV的应用。
+		如果该纹理被用于需要额外的UV集的贴图(例如一些成品材质中的aoMap或lightMap),
+		这些UV必须被手动调整来实现所期望的重复。
 		</p>
 
 		<h3>[property:number rotation]</h3>
 		<p>
-		How much the texture is rotated around the center point, in radians. Postive values are counter-clockwise. Default is *0*.
+		纹理将围绕中心点旋转多少度,单位为弧度(rad)。正值为逆时针方向旋转,默认值为*0*。
 		</p>
 
 		<h3>[property:Vector2 center]</h3>
 		<p>
-		The point around which rotation occurs. A value of (0.5, 0.5) corresponds to the center of the texture. Default is (0, 0), the lower left.
+		旋转中心点。(0.5, 0.5)对应纹理的正中心。默认值为(0,0),即左下角。
 		</p>
 
 		<h3>[property:boolean matrixAutoUpdate]</h3>
 		<p>
-		Whether to update the texture's uv-transform [page:Texture.matrix .matrix] from the texture properties [page:Texture.offset .offset], [page:Texture.repeat .repeat],
-		[page:Texture.rotation .rotation], and [page:Texture.center .center]. True by default.
-		Set this to false if you are specifying the uv-transform matrix directly.
+		是否从纹理的[page:Texture.offset .offset]、[page:Texture.repeat .repeat]、[page:Texture.rotation .rotation]和[page:Texture.center .center]属性更新纹理的UV变换矩阵(uv-transform [page:Texture.matrix .matrix])。
+		默认值为true。
+		如果你要直接指定纹理的变换矩阵,请将其设为false。
 		</p>
 
 		<h3>[property:Matrix3 matrix]</h3>
 		<p>
-		The uv-transform matrix for the texture. Updated by the renderer from the texture properties [page:Texture.offset .offset], [page:Texture.repeat .repeat],
-		[page:Texture.rotation .rotation], and [page:Texture.center .center] when the texture's [page:Texture.matrixAutoUpdate .matrixAutoUpdate] property is true.
-		When [page:Texture.matrixAutoUpdate .matrixAutoUpdate] property is false, this matrix may be set manually.
-		Default is the identity matrix.
+			纹理的UV变换矩阵。
+			当纹理的[page:Texture.matrixAutoUpdate .matrixAutoUpdate]属性为true时,
+			由渲染器从纹理的[page:Texture.offset .offset]、[page:Texture.repeat .repeat]、[page:Texture.rotation .rotation]和[page:Texture.center .center]属性中进行更新。
+			当[page:Texture.matrixAutoUpdate .matrixAutoUpdate]属性为false时,该矩阵可以被手动设置。
+			默认值为单位矩阵。
 		</p>
 
 		<h3>[property:boolean generateMipmaps]</h3>
 		<p>
-		Whether to generate mipmaps (if possible) for a texture. True by default. Set this to false if you are
-		creating mipmaps manually.
+			是否为纹理生成mipmap(如果可用)。默认为true。
+			如果你手动生成mipmap,请将其设为false。
 		</p>
 
 		<h3>[property:boolean premultiplyAlpha]</h3>
 		<p>
-		False by default, which is the norm for PNG images. Set to true if the RGB values have
-		been stored premultiplied by alpha.
+			默认为false,这是PNG图像的规范。
+			如果RGB值已被Alpha预乘,请将其设为true。
 		</p>
 
 		<h3>[property:boolean flipY]</h3>
 		<p>
-		True by default. Flips the image's Y axis to match the WebGL texture coordinate space.
+		默认为true。翻转图像的Y轴以匹配WebGL纹理坐标空间。
 		</p>
 
 		<h3>[property:number unpackAlignment]</h3>
 		<p>
-		4 by default. Specifies the alignment requirements for the start of each pixel row in memory.
-		The allowable values are 1 (byte-alignment), 2 (rows aligned to even-numbered bytes),
-		4 (word-alignment), and 8 (rows start on double-word boundaries).
-		See [link:http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml glPixelStorei]
-		for more information.
+			默认为4。指定内存中每个像素行起点的对齐要求。
+			允许的值为1(字节对齐)、2(行对齐到偶数字节)、4(字对齐)和8(行从双字边界开始)。
+			请参阅[link:http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml glPixelStorei]来了解详细信息。
 		</p>
 
 		<h3>[property:number encoding]</h3>
 		<p>
-		[page:Textures THREE.LinearEncoding] is the default.
-		See the [page:Textures texture constants] page for details of other formats.<br /><br />
+		默认值为[page:Textures THREE.LinearEncoding]。
+		请参阅[page:Textures texture constants]来了解其他格式的详细信息。<br /><br />
 
-		Note that if this value is changed on a texture after the material has been used,
-		it is necessary to trigger a Material.needsUpdate for this value to be realized in the shader.
+		请注意,如果在材质被使用之后,纹理贴图中这个值发生了改变,
+		需要触发Material.needsUpdate,来使得这个值在着色器中实现。
 		</p>
 
 		<h3>[property:Integer version]</h3>
 		<p>
-		This starts at *0* and counts how many times [property:Boolean needsUpdate] is set to *true*.
+		这个值起始值为*0*,计算[property:Boolean needsUpdate]被设置为*true*的次数。
 		</p>
 
 		<h3>[property:Function onUpdate]</h3>
 		<p>
-		A callback function, called when the texture is updated (e.g., when needsUpdate has been set to true
-		and then the texture is used).
+		一个回调函数,在纹理被更新后调用。
+		(例如,当needsUpdate被设为true且纹理被使用。)
 		</p>
 
 		<h3>[property:Boolean needsUpdate]</h3>
 		<p>
-		Set this to *true* to trigger an update next time the texture is used. Particularly important for setting the wrap mode.
+			将其设置为*true*,以便在下次使用纹理时触发一次更新。
+			这对于设置包裹模式尤其重要。
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
-		<h3>[page:EventDispatcher EventDispatcher] methods are available on this class.</h3>
+		<h3>[page:EventDispatcher EventDispatcher]方法在这个类上可以使用。</h3>
 
 		<h3>[method:null updateMatrix]()</h3>
 		<p>
-		Update the texture's uv-transform [page:Texture.matrix .matrix] from the texture properties [page:Texture.offset .offset], [page:Texture.repeat .repeat],
-		[page:Texture.rotation .rotation], and [page:Texture.center .center].
+			从纹理的[page:Texture.offset .offset]、[page:Texture.repeat .repeat]、
+			[page:Texture.rotation .rotation]和[page:Texture.center .center]属性来更新纹理的UV变换矩阵(uv-transform [page:Texture.matrix .matrix])。
 		</p>
 
 		<h3>[method:Texture clone]()</h3>
 		<p>
-		Make copy of the texture. Note this is not a "deep copy", the image is shared.
+			拷贝纹理。请注意。这不是“深拷贝”,图像是共用的。
 		</p>
 
 		<h3>[method:Texture toJSON]( [param:Object meta] )</h3>
 		<p>
-		meta -- optional object containing metadata.<br />
-		Convert the material to three.js JSON format.
+		meta -- 可选,包含有元数据的对象。<br />
+		将材质转换为three.js JSON格式。
 		</p>
 
 		<h3>[method:null dispose]()</h3>
 		<p>
-		Call [page:EventDispatcher EventDispatcher].dispatchEvent with a 'dispose' event type.
+			使用“dispose”事件类型调用[page:EventDispatcher EventDispatcher].dispatchEvent。
 		</p>
 
 		<h3>[method:Vector2 transformUv]( [param:Vector2 uv] )</h3>
 		<p>
-		Transform the uv based on the value of this texture's [page:Texture.offset .offset], [page:Texture.repeat .repeat],
-		[page:Texture.wrapS .wrapS], [page:Texture.wrapT .wrapT] and [page:Texture.flipY .flipY] properties.
+			基于纹理的[page:Texture.offset .offset]、[page:Texture.repeat .repeat]、
+			[page:Texture.wrapS .wrapS]、[page:Texture.wrapT .wrapT]和[page:Texture.flipY .flipY]属性值来变换uv。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 31 - 31
docs/api/zh/textures/VideoTexture.html

@@ -10,15 +10,15 @@
 	<body>
 		[page:Texture] &rarr;
 
-		<h1>[name]</h1>
+		<h1>视频纹理([name]</h1>
 
 		<p class="desc">
-		Creates a texture for use with a video texture.<br /><br />
+		创建一个使用视频来作为贴图的纹理对象。<br /><br />
 
-		This is almost the same as the base [page:Texture Texture] class, except that it continuosly sets [page:Texture.needsUpdate needsUpdate] to *true* so that the texture is updated as the video plays. Automatic creation of [page:Texture.mipmaps mipmaps] is also disabled.
+		它和其基类[page:Texture Texture]几乎是相同的,除了它总是将[page:Texture.needsUpdate needsUpdate]设置为*true*,以便使得贴图能够在视频播放时进行更新。自动创建[page:Texture.mipmaps mipmaps]也会被禁用。
 		</p>
 
-    <h2>Example</h2>
+    <h2>示例</h2>
 
 		<p>[example:webgl_materials_video materials / video ]</p>
 
@@ -33,63 +33,63 @@ texture.format = THREE.RGBFormat;
     </code>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 		<h3>[name]( [param:Video video], [param:Constant mapping], [param:Constant wrapS], [param:Constant wrapT], [param:Constant magFilter], [param:Constant minFilter], [param:Constant format], [param:Constant type], [param:Number anisotropy] )</h3>
 		<p>
-		[page:Video video] -- The video element to use as the texture. <br />
+		[page:Video video] -- 将被作为纹理贴图来使用的Video元素。<br />
 
-		[page:Constant mapping] --  How the image is applied to the object. An object type of [page:Textures THREE.UVMapping].
-		See [page:Textures mapping constants] for other choices.<br />
+		[page:Constant mapping] --  纹理贴图将被如何应用(映射)到物体上,它是[page:Textures THREE.UVMapping]中的对象类型。
+		请参阅[page:Textures mapping constants](映射模式常量)来了解其他选项。<br />
 
-		[page:Constant wrapS] -- The default is [page:Textures THREE.ClampToEdgeWrapping].
-		See [page:Textures wrap mode constants] for other choices.<br />
+		[page:Constant wrapS] -- 默认值是[page:Textures THREE.ClampToEdgeWrapping].
+		请参阅[page:Textures wrap mode constants](包裹模式常量)来了解其他选项。<br />
 
-		[page:Constant wrapT] -- The default is [page:Textures THREE.ClampToEdgeWrapping].
-		See [page:Textures wrap mode constants] for other choices.<br />
+		[page:Constant wrapT] -- 默认值是[page:Textures THREE.ClampToEdgeWrapping].
+		请参阅[page:Textures wrap mode constants](包裹模式常量)来了解其他选项。<br />
 
-		[page:Constant magFilter] -- How the texture is sampled when a texel covers more than one pixel.
-		The default is [page:Textures THREE.LinearFilter]. See [page:Textures magnification filter constants] for other choices.<br />
+		[page:Constant magFilter] -- 当一个纹素覆盖大于一个像素时,贴图将如何采样。
+		其默认值为[page:Textures THREE.LinearFilter]。请参阅[page:Textures magnification filter constants](放大滤镜常量)来了解其它选项。<br />
 
-		[page:Constant minFilter] -- How the texture is sampled when a texel covers less than one pixel.
-		 The default is [page:Textures THREE.LinearMipMapLinearFilter]. See [page:Textures minification filter constants] for other choices.<br />
+		[page:Constant minFilter] -- 当一个纹素覆盖小于一个像素时,贴图将如何采样。
+		其默认值为[page:Textures THREE.LinearMipMapLinearFilter]。请参阅[page:Textures minification filter constants](缩小滤镜常量)来了解其它选项。<br />
 
-    [page:Constant format] -- The format used in the texture.
-     See [page:Textures format constants] for other choices.<br />
+    	[page:Constant format] -- 在纹理贴图中使用的格式。
+     	请参阅[page:Textures format constants](格式常量)来了解各个选项。<br />
 
-    [page:Constant type] -- Default is [page:Textures THREE.UnsignedByteType].
-     See [page:Textures type constants] for other choices.<br />
+    	[page:Constant type] -- 默认值是[page:Textures THREE.UnsignedByteType].
+     	请参阅[page:Textures type constants](类型常量)来了解其他选项。<br />
 
-		[page:Number anisotropy] -- The number of samples taken along the axis through the pixel that has the highest density of texels.
-		By default, this value is 1. A higher value gives a less blurry result than a basic mipmap, at the cost of more texture samples being used.
-		Use [page:WebGLrenderer.getMaxAnisotropy renderer.getMaxAnisotropy]() to find the maximum valid anisotropy value for the GPU; this value is usually a power of 2.<br /><br />
+		[page:Number anisotropy] -- 沿着轴,通过具有最高纹素密度的像素的采样数。
+		默认情况下,这个值为1。设置一个较高的值将会比基本的mipmap产生更清晰的效果,代价是需要使用更多纹理样本。
+		使用[page:WebGLrenderer.getMaxAnisotropy renderer.getMaxAnisotropy]() 来查询GPU中各向异性的最大有效值;这个值通常是2的幂。<br /><br />
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 		<p>
-    See the base [page:Texture Texture] class for common properties.
+    请参阅其基类[page:Texture Texture]来了解共有属性。
     </p>
 
 		<h3>[property:boolean needsUpdate]</h3>
 		<p>
-		You will not need to set this manually here as it is handled by the [page:VideoTexture.update update] method.
+		在这里,你不必手动设置这个值,因为它是由[page:VideoTexture.update update]方法来进行控制的。
 		</p>
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
     <p>
-    See the base [page:Texture Texture] class for common methods.
+    请参阅其基类[page:Texture Texture]来查看共有方法。
     </p>
 
     <h3>[method:null update]()</h3>
 		<p>
-		This is called automatically and sets [property:boolean needsUpdate] to *true* every time
-    a new frame is available.
+		在每一次新的一帧可用时,这个方法将被自动调用,
+		并将[property:boolean needsUpdate]设置为*true*。
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 2 - 2
docs/examples/Lut.html

@@ -91,7 +91,7 @@
 		Sets the labels of the legend of this Lut.
 		</p>
 
-		<h3>[method:Lut setminV]( [param:Float minV] )</h3>
+		<h3>[method:Lut setMin]( [param:Float minV] )</h3>
 		<p>
 		minV — The minimum value to be represented with the lookup table.<br />
 		</p>
@@ -99,7 +99,7 @@
 		Sets this Lut with the minimum value to be represented.
 		</p>
 
-		<h3>[method:Lut setmaxV]( [param:Float maxV] )</h3>
+		<h3>[method:Lut setMax]( [param:Float maxV] )</h3>
 		<p>
 		maxV — The maximum value to be represented with the lookup table.<br />
 		</p>

+ 0 - 61
docs/examples/SpriteCanvasMaterial.html

@@ -1,61 +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:Material] &rarr;
-
-		<h1>[name]</h1>
-
-		<p class="desc">Create a material that can draw custom sprites using a 2d canvas.</p>
-
-
-		<h2>Constructor</h2>
-
-
-		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-		parameters is an object that can be used to set up the default properties
-		</p>
-		<p>
-		rotation - the rotation of the sprite<br/>
-		color - the color of the sprite<br/>
-		program - the program used to draw the sprite
-		</p>
-
-
-		<h2>Properties</h2>
-
-		<h3>[property:Radians rotation]</h3>
-		<p>
-		The rotation of the sprite in radians. Default is 0.
-		</p>
-
-		<h3>[property:Color color]</h3>
-		<p>
-		The color of the sprite. The material will set up the color for the context before calling the material's program.
-		</p>
-
-		<h2>Methods</h2>
-
-
-
-		<h3>[method:null program]([param:CanvasRenderingContext2D context], [param:Color color])</h3>
-		<p>
-		context -- The canvas context <br />
-		color -- The color of the sprite
-		</p>
-		<p>
-			Define a program that will use the context to draw the sprite.
-		</p>
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/CanvasRenderer.js examples/js/renderers/CanvasRenderer.js]
-	</body>
-</html>

+ 18 - 6
docs/examples/loaders/GLTFLoader.html

@@ -32,8 +32,20 @@
 			<li>KHR_materials_pbrSpecularGlossiness</li>
 			<li>KHR_materials_unlit</li>
 			<li>KHR_lights_punctual (experimental)</li>
+			<li>KHR_texture_transform<sup>*</sup></li>
+			<li>MSFT_texture_dds</li>
 		</ul>
 
+		<p><i>
+			<sup>*</sup>UV transforms are supported, with several key limitations. Transforms applied to
+			a texture using the first UV slot (all textures except aoMap and lightMap) must share the same
+			transform, or no transfor at all. The aoMap and lightMap textures cannot be transformed. No
+			more than one transform may be used per material. Each use of a texture with a unique
+			transform will result in an additional GPU texture upload. See
+			#[link:https://github.com/mrdoob/three.js/pull/13831 13831] and
+			#[link:https://github.com/mrdoob/three.js/issues/12788 12788].
+		</i></p>
+
 		<h2>Example</h2>
 
 		<code>
@@ -85,30 +97,30 @@
 		providing a Promise replacement.</p>
 
 		<h2>Textures</h2>
-		
+
 		<p>Textures containing color information (.map, .emissiveMap, and .specularMap) always use sRGB colorspace in
 		glTF, while vertex colors and material properties (.color, .emissive, .specular) use linear colorspace. In a
 		typical rendering workflow, textures are converted to linear colorspace by the renderer, lighting calculations
 		are made, then final output is converted back to sRGB and displayed on screen. Unless you need post-processing
 		in linear colorspace, always configure [page:WebGLRenderer] as follows when using glTF:</p>
-			
+
 		<code>
 		renderer.gammaOutput = true;
 		renderer.gammaFactor = 2.2;
 		</code>
-		
+
 		<p>GLTFLoader will automatically configure textures referenced from a .gltf or .glb file correctly, with the
 		assumption that the renderer is set up as shown above. When loading textures externally (e.g., using
 		[page:TextureLoader]) and applying them to a glTF model, colorspace and orientation must be given:</p>
-		
+
 		<code>
 		// If texture is used for color information, set colorspace.
 		texture.encoding = THREE.sRGBEncoding;
 
 		// UVs use the convention that (0, 0) corresponds to the upper left corner of a texture.
 		texture.flipY = false;
-		</code>		
-		
+		</code>
+
 		<h2>Custom extensions</h2>
 
 		<p>

+ 9 - 0
docs/examples/loaders/LoaderSupport.html

@@ -375,6 +375,15 @@
 		<p>
 			Set the content of this resource
 		</p>
+
+
+		<h3>[method:null setResourcePath] ( [param:String resourcePath] )</h3>
+		<p>
+			[page:String resourcePath] - URL
+		</p>
+		<p>
+			Allows to specify resourcePath for dependencies of specified resource.
+		</p>
 		<br>
 		<br>
 

+ 23 - 0
docs/examples/loaders/MMDLoader.html

@@ -110,6 +110,29 @@
 		[page:String crossOrigin] — The crossOrigin string to implement CORS for loading the url from a different domain that allows CORS.
 		</p>
 
+		<h3>[method:MMDLoader setAnimationPath]( [param:String animationPath] )</h3>
+		<p>
+		[page:String animationPath] — Base path for loading animation data (VMD/VPD files).
+		</p>
+		<p>
+		Set the base path for additional resources like textures.
+		</p>
+
+		<h3>[method:MMDLoader setPath]( [param:String path] )</h3>
+		<p>
+		[page:String path] — Base path.
+		</p>
+		<p>
+		Sets the base path or URL from which to load files.
+		</p>
+
+		<h3>[method:MMDLoader setResourcePath]( [param:String resourcePath] )</h3>
+		<p>
+		[page:String resourcePath] — Base path for loading additional resources e.g. textures.
+		</p>
+		<p>
+		Set the base path for additional resources like textures.
+		</p>
 
 		<h2>Source</h2>
 

+ 9 - 0
docs/examples/loaders/OBJLoader2.html

@@ -123,6 +123,15 @@
 		</p>
 
 
+		<h3>[method:null setResourcePath] ( [param:String resourcePath] )</h3>
+		<p>
+			[page:String resourcePath] - URL
+		</p>
+		<p>
+			Allows to specify resourcePath for dependencies of specified resource.
+		</p>
+
+
 		<h3>[method:null setStreamMeshesTo] ( [param:Object3D streamMeshesTo] )</h3>
 		<p>
 			[page:Object3D streamMeshesTo] - Object already attached to scenegraph where new meshes will be attached to

+ 1 - 1
docs/examples/loaders/SVGLoader.html

@@ -91,7 +91,7 @@
 		<h3>[method:null load]( [param:String url], [param:Function onLoad], [param:Function onProgress], [param:Function onError] )</h3>
 		<p>
 		[page:String url] — A string containing the path/URL of the <em>.svg</em> file.<br />
-		[page:Function onLoad] — (optional) A function to be called after loading is successfully completed. The function receives the loaded [page:SVGDocument] as an argument.<br />
+		[page:Function onLoad] — (optional) A function to be called after loading is successfully completed. The function receives an array of [page:ShapePath] as an argument.<br />
 		[page:Function onProgress] — (optional) A function to be called while the loading is in progress. The argument will be the XMLHttpRequest instance, which contains [page:Integer total] and [page:Integer loaded] bytes.<br />
 		[page:Function onError] — (optional) A function to be called if an error occurs during loading. The function receives the error as an argument.<br />
 		</p>

+ 0 - 174
docs/examples/renderers/CanvasRenderer.html

@@ -1,174 +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>[name]</h1>
-
-		<p class="desc">
-			The Canvas renderer displays your beautifully crafted scenes <em>not</em> using WebGL,
-			but draws it using the (slower) <a href="http://drafts.htmlwg.org/2dcontext/html5_canvas_CR/Overview.html">Canvas 2D Context</a>
-			API.<br /><br />
-
-			<b>
-			NOTE: The Canvas renderer has been deprecated and is no longer part of the three.js core.
-			</b>
-			If you still need to use it you can find it here: [link:https://github.com/mrdoob/three.js/blob/master/examples/js/[path].js examples/js/[path].js].<br /><br />
-
-			This renderer can be a nice fallback from [page:WebGLRenderer] for simple scenes:
-
-			<code>
-			function webglAvailable() {
-				try {
-					var canvas = document.createElement( 'canvas' );
-					return !!( window.WebGLRenderingContext && (
-						canvas.getContext( 'webgl' ) ||
-						canvas.getContext( 'experimental-webgl' ) )
-					);
-				} catch ( e ) {
-					return false;
-				}
-			}
-
-			if ( webglAvailable() ) {
-				renderer = new THREE.WebGLRenderer();
-			} else {
-				renderer = new THREE.CanvasRenderer();
-			}
-			</code>
-
-			Note: both WebGLRenderer and CanvasRenderer are embedded in the web page using an HTML5 &lt;canvas&gt; tag.
-			The "Canvas" in CanvasRenderer means it uses Canvas 2D instead of WebGL.<br /><br />
-
-			Don't confuse either CanvasRenderer with the SoftwareRenderer example, which simulates a screen buffer in a Javascript array.
-		</p>
-
-		<h2>Constructor</h2>
-
-
-		<h3>[name]([param:object parameters])</h3>
-		<p>parameters is an optional object with properties defining the renderer's behaviour. The constructor also accepts no parameters at all. In all cases, it will assume sane defaults when parameters are missing.</p>
-
-		<p>
-		[page:DOMElement canvas] - A [link:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas canvas]
-		where the renderer draws its output.
-		This corresponds to the [page:CanvasRenderer.domElement domElement] property below.
-		If not passed in here, a new canvas element will be created.<br />
-
-		[page:Boolean alpha] - whether the canvas contains an alpha (transparency) buffer or not.
-	  Default is *false*.
-		</p>
-
-
-		<h2>Properties</h2>
-
-    <h3>[property:Object info]</h3>
-
-		<p>
-			An object with a series of statistical information about the graphics board memory and the rendering process. Useful for debugging or just for the sake of curiosity. The object contains the following fields:
-			<ul>
-				<li>render:
-					<ul>
-						<li>vertices</li>
-						<li>faces</li>
-					</ul>
-				</li>
-			</ul>
-		</p>
-
-    <h3>[property:DOMElement domElement]</h3>
-
-		<p>
-			A [page:Canvas] where the renderer draws its output.<br />
-			This is automatically created by the renderer in the constructor (if not provided already); you just need to add it to your page.
-		</p>
-
-		<h3>[property:Boolean autoClear]</h3>
-		<p>
-      Defines whether the renderer should automatically clear its output before rendering.
-    </p>
-
-		<h3>[property:Boolean sortObjects]</h3>
-		<p>
-      Defines whether the renderer should sort objects. Default is true.<br />
-      Note: Sorting is used to attempt to properly render objects that have some degree of transparency.  By definition, sorting objects may not work in all cases.  Depending on the needs of application, it may be neccessary to turn off sorting and use other methods to deal with transparency rendering e.g. manually determining the object rendering order.
-    </p>
-
-		<h3>[property:boolean sortElements]</h3>
-		<p>
-			Defines whether the renderer should sort the face of each object. Default is true.
-		</p>
-
-
-		<h2>Methods</h2>
-
-		<h3>[method:null render]([param:Scene scene], [param:Camera camera])</h3>
-		<p>
-			scene -- The scene to render. <br />
-			camera -- the camera to view the scene.
-		</p>
-		<p>
-        Render a scene using a camera.
-		</p>
-
-		<h3>[method:null clear]()</h3>
-		<p>
-			Tells the renderer to clear its color drawing buffer with the clearcolor.
-		</p>
-
-		<h3>[method:null setClearColor]([param:Color color], [param:number alpha])</h3>
-		<p>
-			color -- The color to clear the canvas with. <br />
-			alpha -- The alpha channel to clear the canvas with.
-		</p>
-		<p>
-			This set the clearColor and the clearAlpha.
-		</p>
-
-
-		<h3>[method:null setSize]([param:Number width], [param:Number height])</h3>
-		<p>
-			width -- The width of the drawing canvas. <br />
-			height -- The height of the drawing canvas.
-		</p>
-		<p>
-			This set the size of the drawing canvas and if updateStyle is set, then the css of the canvas is updated too.
-		</p>
-
-		<h3>[method:null setClearColorHex]([param:number hex], [param:number alpha])</h3>
-		<p>
-			hex -- The the hexadecimal value of the color to clear the canvas with. <br />
-	    alpha -- The alpha channel to clear the canvas with.
-		</p>
-		<p>
-			This set the clearColor and the clearAlpha.
-		</p>
-
-		<h3>[method:number getClearColorHex]()</h3>
-		<p>
-			Returns the [page:number hex] color.
-		</p>
-
-		<h3>[method:number getClearAlpha]()</h3>
-		<p>
-			Returns the alpha value.
-		</p>
-
-		<h2>Empty Methods to Maintain Compatibility with [page:WebglRenderer]</h2>
-		<p>
-			[method:null clearColor]()<br/>
-			[method:null clearDepth]()<br/>
-			[method:null clearStencil]()<br/>
-			[method:number getMaxAnisotropy]() - returns 1 <br/>
-		</p>
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/examples/js/[path].js examples/js/[path].js]
-	</body>
-</html>

+ 3 - 2
docs/examples/utils/BufferGeometryUtils.html

@@ -25,9 +25,10 @@
 
     </p>
 
-    <h3>[method:BufferGeometry mergeBufferGeometries]( [param:Array geometries] )</h3>
+    <h3>[method:BufferGeometry mergeBufferGeometries]( [param:Array geometries], [param:Boolean useGroups] )</h3>
     <p>
-    geometries -- Array of [page:BufferGeometry BufferGeometry] instances.<br /><br />
+    geometries -- Array of [page:BufferGeometry BufferGeometry] instances.<br />
+    useGroups -- Whether groups should be generated for the merged geometry or not.<br /><br />
 
     Merges a set of geometries into a single instance. All geometries must have compatible attributes.
     If merge does not succeed, the method returns null.<br /><br />

+ 4 - 4
docs/examples/utils/SceneUtils.html

@@ -29,11 +29,11 @@
 		<h3>[method:null attach]( [param:Object3D child], [param:Object3D scene], [param:Object3D parent] )</h3>
 		<p>
 		child -- The object to add to the parent  <br />
-		scene -- The scene to detach the object on. <br />
-		parent -- The parent to attach the object from.
+		scene -- The scene to detach the object from. <br />
+		parent -- The parent to attach the object to.
 		</p>
 		<p>
-		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.
+		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.
 		</p>
 
 		<h3>[method:null detach]( [param:Object3D child], [param:Object3D parent], [param:Object3D scene] )</h3>
@@ -43,7 +43,7 @@
 		parent -- The parent to detach the object from.
 		</p>
 		<p>
-		Detaches the object from the parent and adds it back to the scene without moving in 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.
+		Detaches the object from the parent and adds it back to the scene without moving in 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.
 		</p>
 
 		<h2>Source</h2>

+ 19 - 6
docs/index.html

@@ -41,18 +41,30 @@
 
 			var hash = window.location.hash.substring( 1 );
 
-			// Route non-localised api links
+			// Localisation
 
-			if ( /^(api|manual)/.test( hash ) && /^(api|manual)\/(en|zh)\//.test( hash ) === false ) {
+			var language = 'en';
+
+			if ( /^(api|manual)/.test( hash ) ) {
+
+				var hashLanguage = /^(api|manual)\/(en|zh)\//.exec( hash );
+
+				if ( hashLanguage === null ) {
+
+					// Route old non-localised api links
+
+					window.location.hash = hash.replace( /^(api|manual)/, '$1/en' );
 
-				window.location.hash = hash.replace( /^(api|manual)/, '$1/en' );
+				} else {
+
+					language = hashLanguage[ 2 ];
+
+				}
 
 			}
 
 			//
 
-			var language = 'en';
-
 			function setLanguage( value ) {
 
 				language = value;
@@ -406,7 +418,8 @@
 
 		</script>
 
-		<script src="../build/three.min.js"></script> <!-- console sandbox -->
+		<!-- console sandbox -->
+		<script src="../build/three.min.js"></script>
 
 	</body>
 

+ 58 - 59
docs/list.js

@@ -10,6 +10,7 @@ var list = {
 				"Browser support": "manual/en/introduction/Browser-support",
 				"WebGL compatibility check": "manual/en/introduction/WebGL-compatibility-check",
 				"How to run things locally": "manual/en/introduction/How-to-run-things-locally",
+				"How to use WebGL 2": "manual/en/introduction/How-to-use-WebGL2",
 				"Drawing lines": "manual/en/introduction/Drawing-lines",
 				"Creating text": "manual/en/introduction/Creating-text",
 				"Loading 3D models": "manual/en/introduction/Loading-3D-models",
@@ -232,7 +233,6 @@ var list = {
 				"FontLoader": "api/en/loaders/FontLoader",
 				"ImageBitmapLoader": "api/en/loaders/ImageBitmapLoader",
 				"ImageLoader": "api/en/loaders/ImageLoader",
-				"JSONLoader": "api/en/loaders/JSONLoader",
 				"Loader": "api/en/loaders/Loader",
 				"LoaderUtils": "api/en/loaders/LoaderUtils",
 				"MaterialLoader": "api/en/loaders/MaterialLoader",
@@ -332,6 +332,7 @@ var list = {
 				"CompressedTexture": "api/en/textures/CompressedTexture",
 				"CubeTexture": "api/en/textures/CubeTexture",
 				"DataTexture": "api/en/textures/DataTexture",
+				"DataTexture3D": "api/en/textures/DataTexture3D",
 				"DepthTexture": "api/en/textures/DepthTexture",
 				"Texture": "api/en/textures/Texture",
 				"VideoTexture": "api/en/textures/VideoTexture"
@@ -383,7 +384,6 @@ var list = {
 
 			"Plugins": {
 				"LookupTable": "examples/Lut",
-				"SpriteCanvasMaterial": "examples/SpriteCanvasMaterial"
 			},
 
 			"QuickHull": {
@@ -395,7 +395,6 @@ var list = {
 			},
 
 			"Renderers": {
-				"CanvasRenderer": "examples/renderers/CanvasRenderer",
 				"CSS2DRenderer": "examples/renderers/CSS2DRenderer",
 				"CSS3DRenderer": "examples/renderers/CSS3DRenderer",
 				"SVGRenderer": "examples/renderers/SVGRenderer"
@@ -427,14 +426,15 @@ var list = {
 
 	"zh": {
 
-		"Manual": {
+		"手册": {
 
-			"Getting Started": {
+			"起步": {
 				"创建一个场景": "manual/zh/introduction/Creating-a-scene",
 				"通过模块来引入": "manual/zh/introduction/Import-via-modules",
 				"浏览器支持": "manual/zh/introduction/Browser-support",
 				"WebGL兼容性检查": "manual/zh/introduction/WebGL-compatibility-check",
 				"如何在本地运行Three.js": "manual/zh/introduction/How-to-run-things-locally",
+				"如何使用WebGL 2": "manual/zh/introduction/How-to-use-WebGL2",
 				"画线": "manual/zh/introduction/Drawing-lines",
 				"创建文字": "manual/zh/introduction/Creating-text",
 				"载入3D模型": "manual/zh/introduction/Loading-3D-models",
@@ -444,21 +444,22 @@ var list = {
 				"一些有用的链接": "manual/zh/introduction/Useful-links"
 			},
 
-			"Next Steps": {
-				"How to update things": "manual/zh/introduction/How-to-update-things",
-				"Matrix transformations": "manual/zh/introduction/Matrix-transformations",
-				"Animation system": "manual/zh/introduction/Animation-system"
+			"进阶": {
+				"如何更新场景": "manual/zh/introduction/How-to-update-things",
+				"如何创建VR内容": "manual/zh/introduction/How-to-create-VR-content",
+				"矩阵变换": "manual/zh/introduction/Matrix-transformations",
+				"动画系统": "manual/zh/introduction/Animation-system"
 			},
 
-			"Build Tools": {
-				"Testing with NPM": "manual/zh/buildTools/Testing-with-NPM"
+			"构建工具": {
+				"使用NPM进行测试": "manual/zh/buildTools/Testing-with-NPM"
 			}
 
 		},
 
-		"Reference": {
+		"参考": {
 
-			"Animation": {
+			"动画": {
 				"AnimationAction": "api/zh/animation/AnimationAction",
 				"AnimationClip": "api/zh/animation/AnimationClip",
 				"AnimationMixer": "api/zh/animation/AnimationMixer",
@@ -470,15 +471,15 @@ var list = {
 			},
 
 			"动画 / 轨道": {
-				"布尔类型关键帧轨道": "api/zh/animation/tracks/BooleanKeyframeTrack",
-				"颜色类型关键帧轨道": "api/zh/animation/tracks/ColorKeyframeTrack",
-				"数字类型关键帧轨道": "api/zh/animation/tracks/NumberKeyframeTrack",
-				"四元数类型关键帧轨道": "api/zh/animation/tracks/QuaternionKeyframeTrack",
-				"字符串类型关键帧轨道": "api/zh/animation/tracks/StringKeyframeTrack",
-				"向量类型关键帧轨道": "api/zh/animation/tracks/VectorKeyframeTrack"
+				"BooleanKeyframeTrack": "api/zh/animation/tracks/BooleanKeyframeTrack",
+				"ColorKeyframeTrack": "api/zh/animation/tracks/ColorKeyframeTrack",
+				"NumberKeyframeTrack": "api/zh/animation/tracks/NumberKeyframeTrack",
+				"QuaternionKeyframeTrack": "api/zh/animation/tracks/QuaternionKeyframeTrack",
+				"StringKeyframeTrack": "api/zh/animation/tracks/StringKeyframeTrack",
+				"VectorKeyframeTrack": "api/zh/animation/tracks/VectorKeyframeTrack"
 			},
 
-			"Audio": {
+			"音频": {
 				"Audio": "api/zh/audio/Audio",
 				"AudioAnalyser": "api/zh/audio/AudioAnalyser",
 				"AudioContext": "api/zh/audio/AudioContext",
@@ -486,7 +487,7 @@ var list = {
 				"PositionalAudio": "api/zh/audio/PositionalAudio"
 			},
 
-			"Cameras": {
+			"摄像机": {
 				"ArrayCamera": "api/zh/cameras/ArrayCamera",
 				"Camera": "api/zh/cameras/Camera",
 				"CubeCamera": "api/zh/cameras/CubeCamera",
@@ -495,7 +496,7 @@ var list = {
 				"StereoCamera": "api/zh/cameras/StereoCamera"
 			},
 
-			"Constants": {
+			"常量": {
 				"Animation": "api/zh/constants/Animation",
 				"Core": "api/zh/constants/Core",
 				"CustomBlendingEquation": "api/zh/constants/CustomBlendingEquations",
@@ -505,7 +506,7 @@ var list = {
 				"Textures": "api/zh/constants/Textures"
 			},
 
-			"Core": {
+			"核心": {
 				"BufferAttribute": "api/zh/core/BufferAttribute",
 				"BufferGeometry": "api/zh/core/BufferGeometry",
 				"Clock": "api/zh/core/Clock",
@@ -524,20 +525,20 @@ var list = {
 				"Uniform": "api/zh/core/Uniform"
 			},
 
-			"Core / BufferAttributes": {
+			"核心 / BufferAttributes": {
 				"BufferAttribute Types": "api/zh/core/bufferAttributeTypes/BufferAttributeTypes"
 			},
 
-			"Deprecated": {
+			"弃用列表": {
 				"DeprecatedList": "api/zh/deprecated/DeprecatedList"
 			},
 
-			"Extras": {
+			"附件": {
 				"Earcut": "api/zh/extras/Earcut",
 				"ShapeUtils": "api/zh/extras/ShapeUtils"
 			},
 
-			"Extras / Core": {
+			"附件 / 核心": {
 				"Curve": "api/zh/extras/core/Curve",
 				"CurvePath": "api/zh/extras/core/CurvePath",
 				"Font": "api/zh/extras/core/Font",
@@ -547,7 +548,7 @@ var list = {
 				"ShapePath": "api/zh/extras/core/ShapePath"
 			},
 
-			"Extras / Curves": {
+			"附件 / 曲线": {
 				"ArcCurve": "api/zh/extras/curves/ArcCurve",
 				"CatmullRomCurve3": "api/zh/extras/curves/CatmullRomCurve3",
 				"CubicBezierCurve": "api/zh/extras/curves/CubicBezierCurve",
@@ -560,11 +561,11 @@ var list = {
 				"SplineCurve": "api/zh/extras/curves/SplineCurve"
 			},
 
-			"Extras / Objects": {
+			"附件 / 物体": {
 				"ImmediateRenderObject": "api/zh/extras/objects/ImmediateRenderObject",
 			},
 
-			"Geometries": {
+			"几何体": {
 				"BoxBufferGeometry": "api/zh/geometries/BoxBufferGeometry",
 				"BoxGeometry": "api/zh/geometries/BoxGeometry",
 				"CircleBufferGeometry": "api/zh/geometries/CircleBufferGeometry",
@@ -609,7 +610,7 @@ var list = {
 				"WireframeGeometry": "api/zh/geometries/WireframeGeometry"
 			},
 
-			"Helpers": {
+			"辅助对象": {
 				"ArrowHelper": "api/zh/helpers/ArrowHelper",
 				"AxesHelper": "api/zh/helpers/AxesHelper",
 				"BoxHelper": "api/zh/helpers/BoxHelper",
@@ -628,7 +629,7 @@ var list = {
 				"VertexNormalsHelper": "api/zh/helpers/VertexNormalsHelper"
 			},
 
-			"Lights": {
+			"灯光": {
 				"AmbientLight": "api/zh/lights/AmbientLight",
 				"DirectionalLight": "api/zh/lights/DirectionalLight",
 				"HemisphereLight": "api/zh/lights/HemisphereLight",
@@ -638,13 +639,13 @@ var list = {
 				"SpotLight": "api/zh/lights/SpotLight"
 			},
 
-			"Lights / Shadows": {
+			"灯光 / 阴影": {
 				"DirectionalLightShadow": "api/zh/lights/shadows/DirectionalLightShadow",
 				"LightShadow": "api/zh/lights/shadows/LightShadow",
 				"SpotLightShadow": "api/zh/lights/shadows/SpotLightShadow"
 			},
 
-			"Loaders": {
+			"加载器": {
 				"AnimationLoader": "api/zh/loaders/AnimationLoader",
 				"AudioLoader": "api/zh/loaders/AudioLoader",
 				"BufferGeometryLoader": "api/zh/loaders/BufferGeometryLoader",
@@ -656,7 +657,6 @@ var list = {
 				"FontLoader": "api/zh/loaders/FontLoader",
 				"ImageBitmapLoader": "api/zh/loaders/ImageBitmapLoader",
 				"ImageLoader": "api/zh/loaders/ImageLoader",
-				"JSONLoader": "api/zh/loaders/JSONLoader",
 				"Loader": "api/zh/loaders/Loader",
 				"LoaderUtils": "api/zh/loaders/LoaderUtils",
 				"MaterialLoader": "api/zh/loaders/MaterialLoader",
@@ -664,12 +664,12 @@ var list = {
 				"TextureLoader": "api/zh/loaders/TextureLoader"
 			},
 
-			"Loaders / Managers": {
+			"加载器 / 管理器": {
 				"DefaultLoadingManager": "api/zh/loaders/managers/DefaultLoadingManager",
 				"LoadingManager": "api/zh/loaders/managers/LoadingManager"
 			},
 
-			"Materials": {
+			"材质": {
 				"LineBasicMaterial": "api/zh/materials/LineBasicMaterial",
 				"LineDashedMaterial": "api/zh/materials/LineDashedMaterial",
 				"Material": "api/zh/materials/Material",
@@ -688,7 +688,7 @@ var list = {
 				"SpriteMaterial": "api/zh/materials/SpriteMaterial"
 			},
 
-			"Math": {
+			"数学库": {
 				"Box2": "api/zh/math/Box2",
 				"Box3": "api/zh/math/Box3",
 				"Color": "api/zh/math/Color",
@@ -711,14 +711,14 @@ var list = {
 				"Vector4": "api/zh/math/Vector4"
 			},
 
-			"Math / Interpolants": {
+			"数学库 / 插值": {
 				"CubicInterpolant": "api/zh/math/interpolants/CubicInterpolant",
 				"DiscreteInterpolant": "api/zh/math/interpolants/DiscreteInterpolant",
 				"LinearInterpolant": "api/zh/math/interpolants/LinearInterpolant",
 				"QuaternionLinearInterpolant": "api/zh/math/interpolants/QuaternionLinearInterpolant"
 			},
 
-			"Objects": {
+			"物体": {
 				"Bone": "api/zh/objects/Bone",
 				"Group": "api/zh/objects/Group",
 				"Line": "api/zh/objects/Line",
@@ -732,30 +732,31 @@ var list = {
 				"Sprite": "api/zh/objects/Sprite"
 			},
 
-			"Renderers": {
+			"渲染器": {
 				"WebGLRenderer": "api/zh/renderers/WebGLRenderer",
 				"WebGLRenderTarget": "api/zh/renderers/WebGLRenderTarget",
 				"WebGLRenderTargetCube": "api/zh/renderers/WebGLRenderTargetCube"
 			},
 
-			"Renderers / Shaders": {
+			"渲染器 / 着色器": {
 				"ShaderChunk": "api/zh/renderers/shaders/ShaderChunk",
 				"ShaderLib": "api/zh/renderers/shaders/ShaderLib",
 				"UniformsLib": "api/zh/renderers/shaders/UniformsLib",
 				"UniformsUtils": "api/zh/renderers/shaders/UniformsUtils"
 			},
 
-			"Scenes": {
+			"场景": {
 				"Fog": "api/zh/scenes/Fog",
 				"FogExp2": "api/zh/scenes/FogExp2",
 				"Scene": "api/zh/scenes/Scene"
 			},
 
-			"Textures": {
+			"纹理贴图": {
 				"CanvasTexture": "api/zh/textures/CanvasTexture",
 				"CompressedTexture": "api/zh/textures/CompressedTexture",
 				"CubeTexture": "api/zh/textures/CubeTexture",
 				"DataTexture": "api/zh/textures/DataTexture",
+				"DataTexture3D": "api/zh/textures/DataTexture3D",
 				"DepthTexture": "api/zh/textures/DepthTexture",
 				"Texture": "api/zh/textures/Texture",
 				"VideoTexture": "api/zh/textures/VideoTexture"
@@ -763,25 +764,25 @@ var list = {
 
 		},
 
-		"Examples": {
+		"示例": {
 
-			"Animations": {
+			"动画": {
 				"CCDIKSolver": "examples/animations/CCDIKSolver",
 				"MMDAnimationHelper": "examples/animations/MMDAnimationHelper",
 				"MMDPhysics": "examples/animations/MMDPhysics"
 			},
 
-			"Controls": {
+			"控制": {
 				"OrbitControls": "examples/controls/OrbitControls"
 			},
 
-			"Geometries": {
+			"几何体": {
 				"ConvexBufferGeometry": "examples/geometries/ConvexBufferGeometry",
 				"ConvexGeometry": "examples/geometries/ConvexGeometry",
 				"DecalGeometry": "examples/geometries/DecalGeometry"
 			},
 
-			"Loaders": {
+			"加载器": {
 				"BabylonLoader": "examples/loaders/BabylonLoader",
 				"GLTFLoader": "examples/loaders/GLTFLoader",
 				"MMDLoader": "examples/loaders/MMDLoader",
@@ -796,18 +797,17 @@ var list = {
 				"PRWMLoader": "examples/loaders/PRWMLoader"
 			},
 
-			"Objects": {
+			"物体": {
 				"Lensflare": "examples/objects/Lensflare",
 			},
 
-			"Exporters": {
+			"导出器": {
 				"GLTFExporter": "examples/exporters/GLTFExporter",
 				"PLYExporter": "examples/exporters/PLYExporter"
 			},
 
-			"Plugins": {
+			"插件": {
 				"LookupTable": "examples/Lut",
-				"SpriteCanvasMaterial": "examples/SpriteCanvasMaterial"
 			},
 
 			"QuickHull": {
@@ -818,28 +818,27 @@ var list = {
 				"VertexList": "examples/quickhull/VertexList"
 			},
 
-			"Renderers": {
-				"CanvasRenderer": "examples/renderers/CanvasRenderer",
+			"渲染器": {
 				"CSS2DRenderer": "examples/renderers/CSS2DRenderer",
 				"CSS3DRenderer": "examples/renderers/CSS3DRenderer",
 				"SVGRenderer": "examples/renderers/SVGRenderer"
 
 			},
 
-			"Utils": {
+			"实用工具": {
 				"BufferGeometryUtils": "examples/utils/BufferGeometryUtils",
 				"SceneUtils": "examples/utils/SceneUtils"
 			}
 
 		},
 
-		"Developer Reference": {
+		"开发者参考": {
 
-			"Polyfills": {
+			"差异化支持": {
 				"Polyfills": "api/zh/Polyfills"
 			},
 
-			"WebGLRenderer": {
+			"WebGL渲染器": {
 				"WebGLProgram": "api/zh/renderers/webgl/WebGLProgram",
 				"WebGLShader": "api/zh/renderers/webgl/WebGLShader",
 				"WebGLState": "api/zh/renderers/webgl/WebGLState"

+ 0 - 1
docs/manual/en/introduction/Animation-system.html

@@ -107,7 +107,6 @@
 		</p>
 
 			<ul>
-				<li>[page:JSONLoader THREE.JSONLoader]</li>
 				<li>[page:ObjectLoader THREE.ObjectLoader]</li>
 				<li>THREE.BVHLoader</li>
 				<li>THREE.ColladaLoader</li>

+ 0 - 1
docs/manual/en/introduction/Creating-text.html

@@ -77,7 +77,6 @@
 
 			<h3>Examples</h3>
 			[example:webgl_geometry_text WebGL / geometry / text]<br />
-			[example:canvas_geometry_text canvas / geometry / text]<br />
 			[example:webgl_shadowmap WebGL / shadowmap]
 
 			<p>

+ 1 - 1
docs/manual/en/introduction/How-to-run-things-locally.html

@@ -154,7 +154,7 @@ ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot =>
 				<code>chrome --allow-file-access-from-files</code>
 
 				<p>
-					On Windows, probably the easiest is probably to create a special shortcut icon which has
+					On Windows, the easiest is probably to create a special shortcut icon which has
 					added the flag given above (right-click on shortcut -&gt; properties -&gt; target).
 				</p>
 

+ 119 - 0
docs/manual/en/introduction/How-to-use-WebGL2.html

@@ -0,0 +1,119 @@
+<!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>
+	<br />
+
+	<p>
+		Starting with three.js R95, the engine supports rendering with a WebGL 2 context. By default three.js always uses a
+		WebGL 1 context when creating an instance of *WebGLRenderer*. If you want use a WebGL 2 context, please have a look
+		at the following workflow.
+	</p>
+
+	<h2>Workflow</h2>
+
+	<p>
+		Since WebGL 2 is not supported by all devices that support WebGL 1, it's important to check the respective availability.
+		To do so, please include [link:https://github.com/mrdoob/three.js/blob/master/examples/js/WebGL.js WebGL.js] into your project.
+	</p>
+
+	<code>
+&lt;script src="/path/to/WebGL.js"&gt;&lt;/script&gt;
+	</code>
+
+	<p>
+		Next, use a code similar to the following in order to perform the availability check.
+	</p>
+
+	<code>
+
+if ( WEBGL.isWebGL2Available() === false ) {
+
+	document.body.appendChild( WEBGL.getWebGL2ErrorMessage() );
+
+}
+	</code>
+
+	<p>
+		Now it's time to create the renderer by applying the HTML5 canvas element and the respective WebGL 2 context
+		to the constructor of *WebGLRenderer*. As a result, three.js will internally use the given context for rendering and
+		automatically convert the built-in material's shader code to GLSL ES 3.00.
+	</p>
+
+	<code>
+var canvas = document.createElement( 'canvas' );
+var context = canvas.getContext( 'webgl2' );
+var renderer = new THREE.WebGLRenderer( { canvas: canvas, context: context } );
+	</code>
+
+	<p>
+		Sometimes it is necessary to write custom shader code. Use the following code template as a basis for your own
+		implementation. First, the GLSL ES 3.00 code.
+	</p>
+
+	<code>
+&lt;script id="vs" type="x-shader/x-vertex"&gt;
+#version 300 es
+
+void main() {
+
+	gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
+
+}
+&lt;/script&gt;
+&lt;script id="fs" type="x-shader/x-fragment"&gt;
+#version 300 es
+
+precision highp float;
+precision highp int;
+out vec4 out_FragColor;
+
+void main() {
+
+	out_FragColor = vec4( 1.0 );
+
+}
+&lt;/script&gt;
+	</code>
+	<p>
+		Second, the corresponding material creation in JavaScript.
+	</p>
+	<code>
+var material = new THREE.ShaderMaterial( {
+	vertexShader: document.getElementById( 'vs' ).textContent.trim(),
+	fragmentShader: document.getElementById( 'fs' ).textContent.trim()
+} );
+	</code>
+
+	<h2>Next Steps</h2>
+
+	<p>
+		Have a look at one of the official examples in order to see WebGL 2 features in action.<br /><br />
+
+		[example:webgl2_materials_texture3d WebGL2 / materials / texture3d]<br />
+		[example:webgl2_materials_texture3d_volume WebGL2 / materials / texture3d / volume]<br />
+	</p>
+
+	<h2>Supported features</h2>
+
+	<p>
+		Right now, the engine does only support a subset of all existing WebGL 2 features. The following list provides an
+		overview about what's already available in the latest version of three.js.
+		<ul>
+			<li>3D Textures</li>
+		</ul>
+
+	</p>
+
+</body>
+
+</html>

+ 165 - 118
docs/manual/en/introduction/Loading-3D-models.html

@@ -2,127 +2,174 @@
 <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" />
+	<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>
-  <br />
-
-  <p>
-    3D models are available in hundreds of file formats, each with different
-    purposes, assorted features, and varying complexity. Although
-    <a href="https://github.com/mrdoob/three.js/tree/dev/examples/js/loaders" target="_blank" rel="noopener">
-    three.js provides many loaders</a>, choosing the right format and
-    workflow will save time and frustration later on. Some formats are
-    difficult to work with, inefficient for realtime experiences, or simply not
-    fully supported at this time.
-  </p>
-
-  <p>
-    This guide provides a workflow recommended for most users, and suggestions
-    for what to try if things don't go as expected.
-  </p>
-
-  <h2>Before we start</h2>
-
-  <p>
-    If you're new to running a local server, begin with
-    [link:#manual/introduction/How-to-run-things-locally how to run things locally]
-    first. Many common errors viewing 3D models can be avoided by hosting files
-    correctly.
-  </p>
-
-  <h2>Recommended workflow</h2>
-
-  <p>
-    Where possible, we recommend using glTF (GL Transmission Format). Both
-    <small>.GLB</small> and <small>.GLTF</small> versions of the format are
-    well supported. Because glTF is focused on runtime asset delivery, it is
-    compact to transmit and fast to load. Features include meshes, materials,
-    textures, skins, skeletons, morph targets, animations, lights, and
-    cameras.
-  </p>
-
-  <p>
-    Public-domain glTF files are available on sites like
-    <a href="https://sketchfab.com/models?features=downloadable&sort_by=-likeCount&type=models" target="_blank" rel="noopener">
-    Sketchfab</a>, or various tools include glTF export:
-  </p>
-
-  <ul>
-    <li><a href="https://github.com/KhronosGroup/glTF-Blender-Exporter" target="_blank" rel="noopener">glTF-Blender-Exporter</a> by the Khronos Group</li>
-    <li><a href="https://github.com/KhronosGroup/COLLADA2GLTF" target="_blank" rel="noopener">COLLADA2GLTF</a> by the Khronos Group</li>
-    <li><a href="https://github.com/facebookincubator/FBX2glTF" target="_blank" rel="noopener">FBX2GLTF</a> by Facebook</li>
-    <li><a href="https://github.com/AnalyticalGraphicsInc/obj2gltf" target="_blank" rel="noopener">OBJ2GLTF</a> by Analytical Graphics Inc</li>
-    <li><a href="https://www.allegorithmic.com/products/substance-painter" target="_blank" rel="noopener">Substance Painter</a> by Allegorithmic</li>
-    <li><a href="https://www.foundry.com/products/modo" target="_blank" rel="noopener">Modo</a> by Foundry</li>
-    <li><a href="https://www.marmoset.co/toolbag/" target="_blank" rel="noopener">Toolbag</a> by Marmoset</li>
-    <li>&hellip;and <a href="https://github.com/khronosgroup/gltf#gltf-tools" target="_blank" rel="noopener">many more</a></li>
-  </ul>
-
-  <p>
-    If your preferred tools do not support glTF, consider requesting glTF
-    export from the authors, or posting on
-    <a href="https://github.com/KhronosGroup/glTF/issues/1051" target="_blank" rel="noopener">the glTF roadmap thread</a>.
-  </p>
-
-  <p>
-    When glTF is not an option, popular formats such as FBX, OBJ, or COLLADA
-    are also available and regularly maintained.
-  </p>
-
-  <h2>Troubleshooting</h2>
-
-  <p>
-    You've spent hours modeling an artisanal masterpiece, you load it into
-    the webpage, and — oh no! 😭 It's distorted, miscolored, or missing entirely.
-    Start with these troubleshooting steps:
-  </p>
-
-  <ol>
-    <li>
-      Check the JavaScript console for errors, and make sure you've used an
-      <em>onError</em> callback when calling <em>.load()</em> to log the result.
-    </li>
-    <li>
-      View the model in another application. For glTF, drag-and-drop viewers
-      are available for
-      <a href="https://gltf-viewer.donmccurdy.com/" target="_blank" rel="noopener">three.js</a> and
-      <a href="http://sandbox.babylonjs.com/" target="_blank" rel="noopener">babylon.js</a>. If the model
-      appears correctly in one or more applications,
-      <a href="https://github.com/mrdoob/three.js/issues/new" target="_blank" rel="noopener">file a bug against three.js</a>.
-      If the model cannot be shown in any application, we strongly encourage
-      filing a bug with the application used to create the model.
-    </li>
-    <li>
-      Try scaling the model up or down by a factor of 1000. Many models are
-      scaled differently, and large models may not appear if the camera is
-      inside the model.
-    </li>
-    <li>
-      Look for failed texture requests in the network tab, like
-      <em>C:\\Path\To\Model\texture.jpg</em>. Use paths relative to your
-      model instead, such as <em>images/texture.jpg</em> — this may require
-      editing the model file in a text editor.
-    </li>
-  </ol>
-
-  <h2>Asking for help</h2>
-
-  <p>
-    If you've gone through the troubleshooting process above and your model
-    still isn't working, the right approach to asking for help will get you to
-    a solution faster. Post a question on the
-    <a href="https://discourse.threejs.org/" target="_blank" rel="noopener">three.js forum</a> and, whenever possible,
-    include your model (or a simpler model with the same problem) in any formats
-    you have available. Include enough information for someone else to reproduce
-    the issue quickly — ideally, a live demo.
-  </p>
+	<h1>[name]</h1>
+	<br />
+
+	<p>
+		3D models are available in hundreds of file formats, each with different
+		purposes, assorted features, and varying complexity. Although
+		<a href="https://github.com/mrdoob/three.js/tree/dev/examples/js/loaders" target="_blank" rel="noopener">
+		three.js provides many loaders</a>, choosing the right format and
+		workflow will save time and frustration later on. Some formats are
+		difficult to work with, inefficient for realtime experiences, or simply not
+		fully supported at this time.
+	</p>
+
+	<p>
+		This guide provides a workflow recommended for most users, and suggestions
+		for what to try if things don't go as expected.
+	</p>
+
+	<h2>Before we start</h2>
+
+	<p>
+		If you're new to running a local server, begin with
+		[link:#manual/introduction/How-to-run-things-locally how to run things locally]
+		first. Many common errors viewing 3D models can be avoided by hosting files
+		correctly.
+	</p>
+
+	<h2>Recommended workflow</h2>
+
+	<p>
+		Where possible, we recommend using glTF (GL Transmission Format). Both
+		<small>.GLB</small> and <small>.GLTF</small> versions of the format are
+		well supported. Because glTF is focused on runtime asset delivery, it is
+		compact to transmit and fast to load. Features include meshes, materials,
+		textures, skins, skeletons, morph targets, animations, lights, and
+		cameras.
+	</p>
+
+	<p>
+		Public-domain glTF files are available on sites like
+		<a href="https://sketchfab.com/models?features=downloadable&sort_by=-likeCount&type=models" target="_blank" rel="noopener">
+		Sketchfab</a>, or various tools include glTF export:
+	</p>
+
+	<ul>
+		<li><a href="https://github.com/KhronosGroup/glTF-Blender-Exporter" target="_blank" rel="noopener">glTF-Blender-Exporter</a> by the Khronos Group</li>
+		<li><a href="https://github.com/KhronosGroup/COLLADA2GLTF" target="_blank" rel="noopener">COLLADA2GLTF</a> by the Khronos Group</li>
+		<li><a href="https://github.com/facebookincubator/FBX2glTF" target="_blank" rel="noopener">FBX2GLTF</a> by Facebook</li>
+		<li><a href="https://github.com/AnalyticalGraphicsInc/obj2gltf" target="_blank" rel="noopener">OBJ2GLTF</a> by Analytical Graphics Inc</li>
+		<li><a href="https://www.allegorithmic.com/products/substance-painter" target="_blank" rel="noopener">Substance Painter</a> by Allegorithmic</li>
+		<li><a href="https://www.foundry.com/products/modo" target="_blank" rel="noopener">Modo</a> by Foundry</li>
+		<li><a href="https://www.marmoset.co/toolbag/" target="_blank" rel="noopener">Toolbag</a> by Marmoset</li>
+		<li>&hellip;and <a href="https://github.com/khronosgroup/gltf#gltf-tools" target="_blank" rel="noopener">many more</a></li>
+	</ul>
+
+	<p>
+		If your preferred tools do not support glTF, consider requesting glTF
+		export from the authors, or posting on
+		<a href="https://github.com/KhronosGroup/glTF/issues/1051" target="_blank" rel="noopener">the glTF roadmap thread</a>.
+	</p>
+
+	<p>
+		When glTF is not an option, popular formats such as FBX, OBJ, or COLLADA
+		are also available and regularly maintained.
+	</p>
+
+	<h2>Loading</h2>
+
+	<p>
+		Only a few loaders (e.g. [page:ObjectLoader]) are included by default with
+		three.js — others should be added to your page individually. Depending on your
+		preference and comfort with build tools, choose one of the following:
+	</p>
+
+	<code>
+		// global script
+		&lt;script src="GLTFLoader.js"&gt;&lt;/script&gt;
+
+		// commonjs
+		var THREE = window.THREE = require('three');
+		require('three/examples/js/loaders/GLTFLoader');
+	</code>
+
+	<p>
+		Currently three.js examples are not available as ES modules (import &hellip; from '&hellip;').
+		Several workarounds are discussed in
+		<a href="https://github.com/KhronosGroup/glTF/issues/9562" target="_blank" rel="noopener">#9562</a>.
+	</p>
+
+	<p>
+		Once you've imported a loader, you're ready to add a model to your scene. Syntax varies among
+		different loaders — when using another format, check the examples and documentation for that
+		loader. For glTF, basic usage would be:
+	</p>
+
+	<code>
+		var loader = new THREE.GLTFLoader();
+
+		loader.load( 'path/to/model.glb', function ( gltf ) {
+
+			scene.add( gltf.scene );
+
+		}, undefined, function ( error ) {
+
+			console.error( error );
+
+		} );
+	</code>
+
+	<p>
+		See [page:GLTFLoader GLTFLoader documentation] for further details.
+	</p>
+
+	<h2>Troubleshooting</h2>
+
+	<p>
+		You've spent hours modeling an artisanal masterpiece, you load it into
+		the webpage, and — oh no! 😭 It's distorted, miscolored, or missing entirely.
+		Start with these troubleshooting steps:
+	</p>
+
+	<ol>
+		<li>
+			Check the JavaScript console for errors, and make sure you've used an
+			<em>onError</em> callback when calling <em>.load()</em> to log the result.
+		</li>
+		<li>
+			View the model in another application. For glTF, drag-and-drop viewers
+			are available for
+			<a href="https://gltf-viewer.donmccurdy.com/" target="_blank" rel="noopener">three.js</a> and
+			<a href="http://sandbox.babylonjs.com/" target="_blank" rel="noopener">babylon.js</a>. If the model
+			appears correctly in one or more applications,
+			<a href="https://github.com/mrdoob/three.js/issues/new" target="_blank" rel="noopener">file a bug against three.js</a>.
+			If the model cannot be shown in any application, we strongly encourage
+			filing a bug with the application used to create the model.
+		</li>
+		<li>
+			Try scaling the model up or down by a factor of 1000. Many models are
+			scaled differently, and large models may not appear if the camera is
+			inside the model.
+		</li>
+		<li>
+			Look for failed texture requests in the network tab, like
+			<em>C:\\Path\To\Model\texture.jpg</em>. Use paths relative to your
+			model instead, such as <em>images/texture.jpg</em> — this may require
+			editing the model file in a text editor.
+		</li>
+	</ol>
+
+	<h2>Asking for help</h2>
+
+	<p>
+		If you've gone through the troubleshooting process above and your model
+		still isn't working, the right approach to asking for help will get you to
+		a solution faster. Post a question on the
+		<a href="https://discourse.threejs.org/" target="_blank" rel="noopener">three.js forum</a> and, whenever possible,
+		include your model (or a simpler model with the same problem) in any formats
+		you have available. Include enough information for someone else to reproduce
+		the issue quickly — ideally, a live demo.
+	</p>
 
 </body>
 

+ 2 - 3
docs/manual/zh/introduction/Animation-system.html

@@ -32,7 +32,7 @@
 			<br /><br />
 			每个* AnimationClip *通常保存对象的某个活动的数据。 如果
 			mesh是一个字符,例如,可以有一个用于walkcycle的动画片段,第二个
-			跳跃,三分之一的回避等等。		
+			跳跃,三分之一的回避等等。
 		</p>
 
 		<h3>Keyframe Tracks(关键帧轨道)</h3>
@@ -83,11 +83,10 @@
 		<p class="desc">
 			请注意,并非所有模型格式都包含动画(尤其是OBJ,没有),而且只有一些
 			three.js加载器支持[page:AnimationClip AnimationClip]序列。 以下几个<i>确实</ i>
-			支持此动画类型:		
+			支持此动画类型:
 		</p>
 
 			<ul>
-				<li>[page:JSONLoader THREE.JSONLoader]</li>
 				<li>[page:ObjectLoader THREE.ObjectLoader]</li>
 				<li>THREE.BVHLoader</li>
 				<li>THREE.ColladaLoader</li>

+ 84 - 0
docs/manual/zh/introduction/How-to-create-VR-content.html

@@ -0,0 +1,84 @@
+<!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>如何创建VR内容([name])</h1>
+	<br />
+
+	<p>
+		本指南简要介绍了使用three.js来制作的基于Web的VR应用程序的基本组件。
+	</p>
+
+	<h2>工作流程</h2>
+
+	<p>
+		首先,你需要将[link:https://github.com/mrdoob/three.js/blob/master/examples/js/vr/WebVR.js WebVR.js]
+		包含到你的项目中。
+	</p>
+
+	<code>
+&lt;script src="/path/to/WebVR.js"&gt;&lt;/script&gt;
+	</code>
+
+	<p>*WEBVR.createButton()*做了两件重要的事情:首先,它创建了一个按钮,指示了VR的兼容性;
+		此外,若用户激活了这个按钮,则它将开启一个VR会话。
+		你所要做的唯一一件事情,便是把下面的这一行代码加入到你的应用程序里。
+	</p>
+
+	<code>
+document.body.appendChild( WEBVR.createButton( renderer ) );
+	</code>
+
+	<p>
+		接下来,你需要告诉你的*WebGLRenderer*实例来启用VR渲染。
+	</p>
+
+	<code>
+renderer.vr.enabled = true;
+	</code>
+
+	<p>
+		最后,你需要调整你的动画循环,因为在这里我们不能使用我们所熟知的
+		*window.requestAnimationFrame()*函数来更新场景。对于VR项目来说,我们使用的是[page:WebGLRenderer.setAnimationLoop setAnimationLoop]。
+		
+		简短的示例代码如下:
+	</p>
+
+	<code>
+renderer.setAnimationLoop( function () {
+
+	renderer.render( scene, camera );
+
+} );
+	</code>
+
+	<h2>接下来的步骤</h2>
+
+	<p>
+		请查看官方示例中与WebVR相关的示例,了解这一工作流程的实际使用、运行情况。
+		<br /><br />
+
+		[example:webvr_ballshooter WebVR / ballshoter]<br />
+		[example:webvr_cubes WebVR / cubes]<br />
+		[example:webvr_dragging WebVR / dragging]<br />
+		[example:webvr_lorenzattractor WebVR / lorenzattractor]<br />
+		[example:webvr_panorama WebVR / panorama]<br />
+		[example:webvr_paint WebVR / paint]<br />
+		[example:webvr_rollercoaster WebVR / rollercoaster]<br />
+		[example:webvr_sandbox WebVR / sandbox]<br />
+		[example:webvr_sculpt WebVR / sculpt]<br />
+		[example:webvr_vive_paint WebVR / vive / paint]<br />
+		[example:webvr_vive_sculpt WebVR / vive / sculpt]<br />
+	</p>
+
+</body>
+
+</html>

+ 117 - 0
docs/manual/zh/introduction/How-to-use-WebGL2.html

@@ -0,0 +1,117 @@
+<!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>如何使用WebGL 2([name])</h1>
+	<br />
+
+	<p>
+		从R95版本起,three.js便开始支持使用WebGL 2环境来进行渲染。默认情况下,当创建一个*WebGLRenderer*实例时,
+		three.js总是使用WebGL 1环境。如果你希望来使用WebGL 2环境,请参阅以下的工作流程。
+	</p>
+
+	<h2>工作流程</h2>
+
+	<p>
+		由于WebGL 2并不被所有支持WebGL 1的设备所支持,因此检查各种设备上WebGL 2的可用性是非常重要的。
+		要对其可用性进行检查,请将[link:https://github.com/mrdoob/three.js/blob/master/examples/js/WebGL.js WebGL.js]包含到你的项目中。
+	</p>
+
+	<code>
+&lt;script src="/path/to/WebGL.js"&gt;&lt;/script&gt;
+	</code>
+
+	<p>
+		接下来,使用和下列代码相似的代码来进行可用性检查。
+	</p>
+
+	<code>
+
+if ( WEBGL.isWebGL2Available() === false ) {
+
+	document.body.appendChild( WEBGL.getWebGL2ErrorMessage() );
+
+}
+	</code>
+
+	<p>
+		现在,你就可以将由*WebGLRenderer*所构造的renderer,应用到HTML5 Canvas元素和对应的WebGL 2绘图环境上了。
+		最终,three.js将在内部使用所给定的绘图环境来渲染,并自动将内置的材质的着色器代码转化为GLSL ES 3.00。
+	</p>
+
+	<code>
+var canvas = document.createElement( 'canvas' );
+var context = canvas.getContext( 'webgl2' );
+var renderer = new THREE.WebGLRenderer( { canvas: canvas, context: context } );
+	</code>
+
+	<p>
+		有时候,写一些自定义着色器也是非常必要的。请使用下列的代码模板作为你自己来进行实现的基础。
+		首先是GLSL ES 3.00代码。
+	</p>
+
+	<code>
+&lt;script id="vs" type="x-shader/x-vertex"&gt;
+#version 300 es
+
+void main() {
+
+	gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
+
+}
+&lt;/script&gt;
+&lt;script id="fs" type="x-shader/x-fragment"&gt;
+#version 300 es
+
+precision highp float;
+precision highp int;
+out vec4 out_FragColor;
+
+void main() {
+
+	out_FragColor = vec4( 1.0 );
+
+}
+&lt;/script&gt;
+	</code>
+	<p>
+		然后是使用JavaScript来创建的对应的材质。
+	</p>
+	<code>
+var material = new THREE.ShaderMaterial( {
+	vertexShader: document.getElementById( 'vs' ).textContent.trim(),
+	fragmentShader: document.getElementById( 'fs' ).textContent.trim()
+} );
+	</code>
+
+	<h2>接下来</h2>
+
+	<p>
+		请参阅官方示例,来看一看WebGL 2各种特性的运行。<br /><br />
+
+		[example:webgl2_materials_texture3d WebGL2 / materials / texture3d]<br />
+		[example:webgl2_materials_texture3d_volume WebGL2 / materials / texture3d / volume]<br />
+	</p>
+
+	<h2>支持的特性</h2>
+
+	<p>
+		当前,three.js引擎仅支持所有现有的WebGL 2特性的一个子集。
+		下列列表展现了在最新版本three.js中,已可用的特性的概览。
+		<ul>
+			<li>3D Textures</li>
+		</ul>
+
+	</p>
+
+</body>
+
+</html>

+ 70 - 66
docs/manual/zh/introduction/Loading-3D-models.html

@@ -2,107 +2,111 @@
 <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" />
+	<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>载入3D模型([name])</h1>
-  <br />
+	<h1>载入3D模型([name])</h1>
+	<br />
 
-  <p>
+	<p>
 	3D模型目前的有成千上万种格式可供选择,但每一种格式都具有不同的目的、用途以及复杂性。
-    虽然<a href="https://github.com/mrdoob/three.js/tree/dev/examples/js/loaders" target="_blank" rel="noopener">
+		虽然<a href="https://github.com/mrdoob/three.js/tree/dev/examples/js/loaders" target="_blank" rel="noopener">
 	three.js已经提供了多种导入工具</a>
 	但是选择正确的文件格式以及工作流程将可以节省很多时间,以及避免很多挫折。某些格式难以使用,或者实时体验效率低下,或者目前尚未得到完全支持。
-  </p>
+	</p>
 
-  <p>
+	<p>
 		对大多数用户,本指南向你推荐了一个工作流程,并向你提供了一些当没有达到预期效果时的建议。
 
-  </p>
+	</p>
 
-  <h2>在开始之前</h2>
+	<h2>在开始之前</h2>
 
-  <p>
-	  如果你是第一次运行一个本地服务器,可以先阅读[link:#manual/introduction/How-to-run-things-locally how to run things locally]。
-	  正确地托管文件,可以避免很多查看3D模型时的常见错误。
-  </p>
+	<p>
+		如果你是第一次运行一个本地服务器,可以先阅读[link:#manual/introduction/How-to-run-things-locally how to run things locally]。
+		正确地托管文件,可以避免很多查看3D模型时的常见错误。
+	</p>
 
-  <h2>推荐的工作流程</h2>
+	<h2>推荐的工作流程</h2>
 
-  <p>
-	  如果有可能的话,我们推荐使用glTF(gl传输格式)。<small>.GLB</small>和<small>.GLTF</small>是这种格式的这两种不同版本,
-	  都可以被很好地支持。由于glTF这种格式是专注于在程序运行时呈现三维物体的,所以它的传输效率非常高,且加载速度非常快。
-	  功能方面则包括了网格、材质、纹理、皮肤、骨骼、变形目标、动画、灯光和摄像机。
-  </p>
+	<p>
+		如果有可能的话,我们推荐使用glTF(gl传输格式)。<small>.GLB</small>和<small>.GLTF</small>是这种格式的这两种不同版本,
+		都可以被很好地支持。由于glTF这种格式是专注于在程序运行时呈现三维物体的,所以它的传输效率非常高,且加载速度非常快。
+		功能方面则包括了网格、材质、纹理、皮肤、骨骼、变形目标、动画、灯光和摄像机。
+	</p>
 
-  <p>
-	  公共领域的glTF文件可以在网上找到,例如
-    <a href="https://sketchfab.com/models?features=downloadable&sort_by=-likeCount&type=models" target="_blank" rel="noopener">
-    Sketchfab</a>,或者很多工具包含了glTF的导出功能:
-  </p>
+	<p>
+		公共领域的glTF文件可以在网上找到,例如
+		<a href="https://sketchfab.com/models?features=downloadable&sort_by=-likeCount&type=models" target="_blank" rel="noopener">
+		Sketchfab</a>,或者很多工具包含了glTF的导出功能:
+	</p>
 
-  <ul>
-    <li><a href="https://github.com/KhronosGroup/glTF-Blender-Exporter" target="_blank" rel="noopener">glTF-Blender-Exporter</a> by the Khronos Group</li>
-    <li><a href="https://github.com/KhronosGroup/COLLADA2GLTF" target="_blank" rel="noopener">COLLADA2GLTF</a> by the Khronos Group</li>
-    <li><a href="https://github.com/facebookincubator/FBX2glTF" target="_blank" rel="noopener">FBX2GLTF</a> by Facebook</li>
-    <li><a href="https://github.com/AnalyticalGraphicsInc/obj2gltf" target="_blank" rel="noopener">OBJ2GLTF</a> by Analytical Graphics Inc</li>
-    <li><a href="https://www.allegorithmic.com/products/substance-painter" target="_blank" rel="noopener">Substance Painter</a> by Allegorithmic</li>
-    <li><a href="https://www.foundry.com/products/modo" target="_blank" rel="noopener">Modo</a> by Foundry</li>
-    <li><a href="https://www.marmoset.co/toolbag/" target="_blank" rel="noopener">Toolbag</a> by Marmoset</li>
-    <li>……<a href="https://github.com/khronosgroup/gltf#gltf-tools" target="_blank" rel="noopener">还有更多</a></li>
-  </ul>
+	<ul>
+		<li><a href="https://github.com/KhronosGroup/glTF-Blender-Exporter" target="_blank" rel="noopener">glTF-Blender-Exporter</a> by the Khronos Group</li>
+		<li><a href="https://github.com/KhronosGroup/COLLADA2GLTF" target="_blank" rel="noopener">COLLADA2GLTF</a> by the Khronos Group</li>
+		<li><a href="https://github.com/facebookincubator/FBX2glTF" target="_blank" rel="noopener">FBX2GLTF</a> by Facebook</li>
+		<li><a href="https://github.com/AnalyticalGraphicsInc/obj2gltf" target="_blank" rel="noopener">OBJ2GLTF</a> by Analytical Graphics Inc</li>
+		<li><a href="https://www.allegorithmic.com/products/substance-painter" target="_blank" rel="noopener">Substance Painter</a> by Allegorithmic</li>
+		<li><a href="https://www.foundry.com/products/modo" target="_blank" rel="noopener">Modo</a> by Foundry</li>
+		<li><a href="https://www.marmoset.co/toolbag/" target="_blank" rel="noopener">Toolbag</a> by Marmoset</li>
+		<li>……<a href="https://github.com/khronosgroup/gltf#gltf-tools" target="_blank" rel="noopener">还有更多</a></li>
+	</ul>
 
-  <p>
-	  倘若你所喜欢的工具不支持glTF格式,请考虑向该工具的作者请求glTF导出功能,
-	  或者在<a href="https://github.com/KhronosGroup/glTF/issues/1051" target="_blank" rel="noopener">the glTF roadmap thread</a>贴出你的想法。
+	<p>
+		倘若你所喜欢的工具不支持glTF格式,请考虑向该工具的作者请求glTF导出功能,
+		或者在<a href="https://github.com/KhronosGroup/glTF/issues/1051" target="_blank" rel="noopener">the glTF roadmap thread</a>贴出你的想法。
 
-  </p>
+	</p>
 
-  <p>
-	  当glTF不可用的时候,诸如FBX、OBJ或者COLLADA等等其它广受欢迎的格式在Three.js中也是可以使用、并且定期维护的。
-  </p>
+	<p>
+		当glTF不可用的时候,诸如FBX、OBJ或者COLLADA等等其它广受欢迎的格式在Three.js中也是可以使用、并且定期维护的。
+	</p>
 
-  <h2>故障排除</h2>
+	<h2>Loading</h2>
 
-  <p>
-	  你花了几个小时亲手建了一个堪称杰作的模型,现在你把它给导入到网页中——
-	  哦,天呐~😭它导入以后完全失真了、材质贴图丢了、或者说整个模型完全丢失了!<br>
-	  接下来我们来按照下面的步骤排除故障:
-  </p>
+	<p>TODO.</p>
 
-  <ol>
-    <li>
+	<h2>故障排除</h2>
+
+	<p>
+		你花了几个小时亲手建了一个堪称杰作的模型,现在你把它给导入到网页中——
+		哦,天呐~😭它导入以后完全失真了、材质贴图丢了、或者说整个模型完全丢失了!<br>
+		接下来我们来按照下面的步骤排除故障:
+	</p>
+
+	<ol>
+		<li>
 		在Javascript的Console中查找错误,并确定当你调用<em>.load()</em>的时候,使用了<em>onError</em>回调函数来输出结果。
-    </li>
-    <li>
+		</li>
+		<li>
 		请在别的应用程序中查看3D模型。对于glTF格式的模型来说,可以直接在下面的应用程序中进行查看:
-      <a href="https://gltf-viewer.donmccurdy.com/" target="_blank" rel="noopener">three.js</a>和
-	  <a href="http://sandbox.babylonjs.com/" target="_blank" rel="noopener">babylon.js</a>。
+			<a href="https://gltf-viewer.donmccurdy.com/" target="_blank" rel="noopener">three.js</a>和
+		<a href="http://sandbox.babylonjs.com/" target="_blank" rel="noopener">babylon.js</a>。
 	 如果该模型能够在一个或者更多应用程序里正确地呈现,请<a href="https://github.com/mrdoob/three.js/issues/new" target="_blank" rel="noopener">点击这里向three.js提交Bug报告</a>。
 	 如果模型不能在任意一个应用程序里显示,我们强烈鼓励你向我们提交Bug报告,并告知我们你的模型是使用哪一款应用程序创建的。
 
-    </li>
-    <li>
+		</li>
+		<li>
 		尝试将模型放大或缩小到原来的1000倍。许多模型的缩放比例各不相同,倘若摄像机位于相机内,则大型模型将可能不会显示。
-    </li>
-    <li>
+		</li>
+		<li>
 		在网络面板中查找失败的纹理贴图请求,像<em>C:\\Path\To\Model\texture.jpg</em>。使用相对于你的模型的文件路径,例如
 		<em>images/texture.jpg</em>——这或许需要在文本编辑器中来对模型文件进行修改。
-    </li>
-  </ol>
+		</li>
+	</ol>
 
-  <h2>请求帮助</h2>
+	<h2>请求帮助</h2>
 
-  <p>
+	<p>
 	倘若你已经尝试经历了以上故障排除的过程,但是你的模型仍然无法工作,寻求正确的方法来获得帮助将使您更快地获得解决方案。
 您可以将您的问题发布到<a href="https://discourse.threejs.org/" target="_blank" rel="noopener">three.js forum</a>,
 	同时,尽可能将你的模型(或者一个简单的、具有相同问题的模型)包含在你能够使用的任何格式中,为其他人提供足够的信息,以便快速重现这个问题——最好是一个能够现场演示的Demo。
-  </p>
+	</p>
 
 </body>
 

+ 3 - 3
docs/manual/zh/introduction/WebGL-compatibility-check.html

@@ -14,15 +14,15 @@
 		</p>
 
 		<p>
-			请将[link:https://github.com/mrdoob/three.js/blob/master/examples/js/Detector.js]引入到你的文件,并在尝试开始渲染之前先运行该文件。
+			请将[link:https://github.com/mrdoob/three.js/blob/master/examples/js/WebGL.js]引入到你的文件,并在尝试开始渲染之前先运行该文件。
         	</p>
 
 <code>
-if (Detector.webgl) {
+if (WEBGL.isWebGLAvailable()) {
     // Initiate function or other initializations here
     animate();
 } else {
-    var warning = Detector.getWebGLErrorMessage();
+    var warning = WEBGL.getWebGLErrorMessage();
     document.getElementById('container').appendChild(warning);
 }
 </code>

+ 11 - 0
docs/page.css

@@ -130,3 +130,14 @@ span.param {
 a.param:hover {
 	color: #777;
 }
+
+sup, sub {
+	/* prevent superscript and subscript elements from affecting line-height */
+	vertical-align: baseline;
+	position: relative;
+	top: -0.4em;
+}
+
+sub {
+	top: 0.4em;
+}

+ 0 - 1
docs/scenes/js/material.js

@@ -302,7 +302,6 @@ function guiMaterial( gui, mesh, material, geometry ) {
 	// folder.add( material, 'polygonOffsetFactor' );
 	// folder.add( material, 'polygonOffsetUnits' );
 	folder.add( material, 'alphaTest', 0, 1 );
-	// folder.add( material, 'overdraw', 0, 5 );
 	folder.add( material, 'visible' );
 	folder.add( material, 'side', constants.side ).onChange( needsUpdate( material, geometry ) );
 

+ 3 - 0
editor/css/dark.css

@@ -107,6 +107,7 @@ select {
 			color: #888;
 			margin: 0;
 			padding: 8px;
+			line-height: 16px;
 		}
 
 		#menubar .menu .options {
@@ -220,6 +221,8 @@ select {
 
 	#toolbar button {
 		margin-right: 6px;
+		line-height: 14px;
+		height: 24px;
 	}
 
 .Outliner {

+ 3 - 0
editor/css/light.css

@@ -103,6 +103,7 @@ select {
 			color: #888;
 			margin: 0;
 			padding: 8px;
+			line-height: 16px;
 		}
 
 		#menubar .menu .options {
@@ -213,6 +214,8 @@ select {
 
 	#toolbar button {
 		margin-right: 6px;
+		line-height: 14px;
+		height: 24px;
 	}
 
 .Outliner {

+ 5 - 7
editor/index.html

@@ -4,12 +4,10 @@
 		<title>three.js / editor</title>
 		<meta charset="utf-8">
 		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
-		<!-- Origin Trial Token, feature = WebVR (For Chrome M62+), origin = https://threejs.org, expires = 2018-09-11 -->
-		<meta http-equiv="origin-trial" data-feature="WebVR (For Chrome M62+)" data-expires="2018-09-11" content="AqhFUYKxq/d+E8CDT0fuYRCg8TvlTP52x0Jv7I9t27sLhR30LmcahBRfSwzP89ukjs2+ia99VrrLoRyaFAwJVA0AAABQeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJWUjEuMU02MiIsImV4cGlyeSI6MTUzNjYyNDAwMH0=">
-		<!-- Origin Trial Token, feature = WebXR Device API (For Chrome M69+), origin = https://threejs.org, expires = 2018-10-27 -->
-		<meta http-equiv="origin-trial" data-feature="WebXR Device API (For Chrome M69+)" data-expires="2018-10-27" content="An4ZYOGvf6kVHNxqZxS02TPAvpZESkmBhcVCM/byViDDuEB2XKvCF43aCJjrAU/R8H3WDlv+1bDGTL/XxstHGgoAAABTeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkRldmljZU02OSIsImV4cGlyeSI6MTU0MDY1NTAyMn0=">
-		<!-- Origin Trial Token, feature = WebXR Gamepad Support, origin = https://threejs.org, expires = 2018-10-24 -->
-		<meta http-equiv="origin-trial" data-feature="WebXR Gamepad Support" data-expires="2018-10-24" content="Agrr6lZhlwzv5jmv/mpLZA37DIiVcg3HvX8bH8EWB+OBruV3sUJuzDfYz6qs/je+LcH41DkrmPn4k9RaUaqpQAAAAABYeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkdhbWVwYWRTdXBwb3J0IiwiZXhwaXJ5IjoxNTQwMzg4NjI0fQ==">
+		<!-- Origin Trial Token, feature = WebXR Device API (For Chrome M69+), origin = https://threejs.org, expires = 2019-01-07 -->
+		<meta http-equiv="origin-trial" data-feature="WebXR Device API (For Chrome M69+)" data-expires="2019-01-07" content="ArPzyYNrUDiXsGOh647Ya7MtVUA1nM+WFMnPWu7eoF2nQHOP6mTATIbiv0w+k2kFaPofZG/04ZEQdsACq4IA0wQAAABTeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkRldmljZU02OSIsImV4cGlyeSI6MTU0Njg4MzAxOH0=">
+		<!-- Origin Trial Token, feature = WebXR Gamepad Support, origin = https://threejs.org, expires = 2019-01-07 -->
+		<meta http-equiv="origin-trial" data-feature="WebXR Gamepad Support" data-expires="2019-01-07" content="Av16a8LVXasKVQV9j3u0OlXdTfz5O9qDqhROyL5Up6R3sdOPbtFuc6n6o5DHitwnb5VdirH0GyvROwvz8xxd0AkAAABYeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkdhbWVwYWRTdXBwb3J0IiwiZXhwaXJ5IjoxNTQ2ODgzMDE4fQ==">
 	</head>
 	<body ontouchstart="">
 		<link href="css/main.css" rel="stylesheet" />
@@ -54,7 +52,6 @@
 		<script src="../examples/js/exporters/STLExporter.js"></script>
 
 		<script src="../examples/js/renderers/Projector.js"></script>
-		<script src="../examples/js/renderers/CanvasRenderer.js"></script>
 		<script src="../examples/js/renderers/RaytracingRenderer.js"></script>
 		<script src="../examples/js/renderers/SoftwareRenderer.js"></script>
 		<script src="../examples/js/renderers/SVGRenderer.js"></script>
@@ -139,6 +136,7 @@
 		<script src="js/Sidebar.Animation.js"></script>
 		<script src="js/Sidebar.Script.js"></script>
 		<script src="js/Sidebar.History.js"></script>
+		<script src="js/Strings.js"></script>
 		<script src="js/Toolbar.js"></script>
 		<script src="js/Viewport.js"></script>
 		<script src="js/Viewport.Info.js"></script>

+ 2 - 0
editor/js/Config.js

@@ -7,6 +7,8 @@ var Config = function () {
 	var name = 'threejs-editor';
 
 	var storage = {
+		'language': 'en',
+
 		'autosave': true,
 		'theme': 'css/light.css',
 

+ 2 - 0
editor/js/Editor.js

@@ -75,6 +75,8 @@ var Editor = function () {
 	this.config = new Config();
 	this.history = new History( this );
 	this.storage = new Storage();
+	this.strings = new Strings( this.config );
+
 	this.loader = new Loader( this );
 
 	this.camera = this.DEFAULT_CAMERA.clone();

+ 1 - 44
editor/js/Loader.js

@@ -576,50 +576,7 @@ var Loader = function ( editor ) {
 
 			case 'geometry':
 
-				var loader = new THREE.JSONLoader();
-				loader.setResourcePath( scope.texturePath );
-
-				var result = loader.parse( data );
-
-				var geometry = result.geometry;
-				var material;
-
-				if ( result.materials !== undefined ) {
-
-					if ( result.materials.length > 1 ) {
-
-						material = new THREE.MultiMaterial( result.materials );
-
-					} else {
-
-						material = result.materials[ 0 ];
-
-					}
-
-				} else {
-
-					material = new THREE.MeshStandardMaterial();
-
-				}
-
-				geometry.sourceType = "ascii";
-				geometry.sourceFile = file.name;
-
-				var mesh;
-
-				if ( geometry.animation && geometry.animation.hierarchy ) {
-
-					mesh = new THREE.SkinnedMesh( geometry, material );
-
-				} else {
-
-					mesh = new THREE.Mesh( geometry, material );
-
-				}
-
-				mesh.name = filename;
-
-				editor.execute( new AddObjectCommand( mesh ) );
+				console.error( 'Loader: "Geometry" is no longer supported.' );
 
 				break;
 

+ 20 - 18
editor/js/Menubar.Add.js

@@ -4,12 +4,14 @@
 
 Menubar.Add = function ( editor ) {
 
+	var strings = editor.strings;
+
 	var container = new UI.Panel();
 	container.setClass( 'menu' );
 
 	var title = new UI.Panel();
 	title.setClass( 'title' );
-	title.setTextContent( 'Add' );
+	title.setTextContent( strings.getKey( 'menubar/add' ) );
 	container.add( title );
 
 	var options = new UI.Panel();
@@ -20,7 +22,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Group' );
+	option.setTextContent( strings.getKey( 'menubar/add/group' ) );
 	option.onClick( function () {
 
 		var mesh = new THREE.Group();
@@ -39,7 +41,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Plane' );
+	option.setTextContent( strings.getKey( 'menubar/add/plane' )  );
 	option.onClick( function () {
 
 		var geometry = new THREE.PlaneBufferGeometry( 1, 1, 1, 1 );
@@ -56,7 +58,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Box' );
+	option.setTextContent( strings.getKey( 'menubar/add/box' )  );
 	option.onClick( function () {
 
 		var geometry = new THREE.BoxBufferGeometry( 1, 1, 1, 1, 1, 1 );
@@ -72,7 +74,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Circle' );
+	option.setTextContent( strings.getKey( 'menubar/add/circle' ) );
 	option.onClick( function () {
 
 		var geometry = new THREE.CircleBufferGeometry( 1, 8, 0, Math.PI * 2 );
@@ -88,7 +90,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Cylinder' );
+	option.setTextContent( strings.getKey( 'menubar/add/cylinder' )  );
 	option.onClick( function () {
 
 		var geometry = new THREE.CylinderBufferGeometry( 1, 1, 1, 8, 1, false, 0, Math.PI * 2 );
@@ -104,7 +106,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Sphere' );
+	option.setTextContent( strings.getKey( 'menubar/add/sphere' )  );
 	option.onClick( function () {
 
 		var geometry = new THREE.SphereBufferGeometry( 1, 8, 6, 0, Math.PI * 2, 0, Math.PI );
@@ -120,7 +122,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Icosahedron' );
+	option.setTextContent( strings.getKey( 'menubar/add/icosahedron' )  );
 	option.onClick( function () {
 
 		var geometry = new THREE.IcosahedronGeometry( 1, 0 );
@@ -136,7 +138,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Torus' );
+	option.setTextContent( strings.getKey( 'menubar/add/torus' )  );
 	option.onClick( function () {
 
 		var geometry = new THREE.TorusBufferGeometry( 1, 0.4, 8, 6, Math.PI * 2 );
@@ -152,7 +154,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'TorusKnot' );
+	option.setTextContent( strings.getKey( 'menubar/add/torusknot' )  );
 	option.onClick( function () {
 
 		var geometry = new THREE.TorusKnotBufferGeometry( 1, 0.4, 64, 8, 2, 3 );
@@ -197,7 +199,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Lathe' );
+	option.setTextContent( strings.getKey( 'menubar/add/lathe' )  );
 	option.onClick( function() {
 
 		var points = [
@@ -227,7 +229,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Sprite' );
+	option.setTextContent( strings.getKey( 'menubar/add/sprite' )  );
 	option.onClick( function () {
 
 		var sprite = new THREE.Sprite( new THREE.SpriteMaterial() );
@@ -246,7 +248,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'PointLight' );
+	option.setTextContent( strings.getKey( 'menubar/add/pointlight' )  );
 	option.onClick( function () {
 
 		var color = 0xffffff;
@@ -265,7 +267,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'SpotLight' );
+	option.setTextContent( strings.getKey( 'menubar/add/spotlight' )  );
 	option.onClick( function () {
 
 		var color = 0xffffff;
@@ -289,7 +291,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'DirectionalLight' );
+	option.setTextContent( strings.getKey( 'menubar/add/directionallight' )  );
 	option.onClick( function () {
 
 		var color = 0xffffff;
@@ -310,7 +312,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'HemisphereLight' );
+	option.setTextContent( strings.getKey( 'menubar/add/hemispherelight' )  );
 	option.onClick( function () {
 
 		var skyColor = 0x00aaff;
@@ -331,7 +333,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'AmbientLight' );
+	option.setTextContent( strings.getKey( 'menubar/add/ambientlight' )  );
 	option.onClick( function() {
 
 		var color = 0x222222;
@@ -352,7 +354,7 @@ Menubar.Add = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'PerspectiveCamera' );
+	option.setTextContent( strings.getKey( 'menubar/add/perspectivecamera' )  );
 	option.onClick( function() {
 
 		var camera = new THREE.PerspectiveCamera( 50, 1, 1, 10000 );

+ 9 - 7
editor/js/Menubar.Edit.js

@@ -4,12 +4,14 @@
 
 Menubar.Edit = function ( editor ) {
 
+	var strings = editor.strings;
+
 	var container = new UI.Panel();
 	container.setClass( 'menu' );
 
 	var title = new UI.Panel();
 	title.setClass( 'title' );
-	title.setTextContent( 'Edit' );
+	title.setTextContent( strings.getKey( 'menubar/edit' ) );
 	container.add( title );
 
 	var options = new UI.Panel();
@@ -20,7 +22,7 @@ Menubar.Edit = function ( editor ) {
 
 	var undo = new UI.Row();
 	undo.setClass( 'option' );
-	undo.setTextContent( 'Undo (Ctrl+Z)' );
+	undo.setTextContent( strings.getKey( 'menubar/edit/undo' ) );
 	undo.onClick( function () {
 
 		editor.undo();
@@ -32,7 +34,7 @@ Menubar.Edit = function ( editor ) {
 
 	var redo = new UI.Row();
 	redo.setClass( 'option' );
-	redo.setTextContent( 'Redo (Ctrl+Shift+Z)' );
+	redo.setTextContent( strings.getKey( 'menubar/edit/redo' ) );
 	redo.onClick( function () {
 
 		editor.redo();
@@ -44,7 +46,7 @@ Menubar.Edit = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Clear History' );
+	option.setTextContent( strings.getKey( 'menubar/edit/clear_history' ) );
 	option.onClick( function () {
 
 		if ( confirm( 'The Undo/Redo History will be cleared. Are you sure?' ) ) {
@@ -86,7 +88,7 @@ Menubar.Edit = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Clone' );
+	option.setTextContent( strings.getKey( 'menubar/edit/clone' ) );
 	option.onClick( function () {
 
 		var object = editor.selected;
@@ -104,7 +106,7 @@ Menubar.Edit = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Delete (Del)' );
+	option.setTextContent( strings.getKey( 'menubar/edit/delete' ) );
 	option.onClick( function () {
 
 		var object = editor.selected;
@@ -121,7 +123,7 @@ Menubar.Edit = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Minify Shaders' );
+	option.setTextContent( strings.getKey( 'menubar/edit/minify_shaders' ) );
 	option.onClick( function() {
 
 		var root = editor.selected || editor.scene;

+ 3 - 1
editor/js/Menubar.Examples.js

@@ -4,12 +4,14 @@
 
 Menubar.Examples = function ( editor ) {
 
+	var strings = editor.strings;
+
 	var container = new UI.Panel();
 	container.setClass( 'menu' );
 
 	var title = new UI.Panel();
 	title.setClass( 'title' );
-	title.setTextContent( 'Examples' );
+	title.setTextContent( strings.getKey( 'menubar/examples' ) );
 	container.add( title );
 
 	var options = new UI.Panel();

+ 28 - 13
editor/js/Menubar.File.js

@@ -15,13 +15,14 @@ Menubar.File = function ( editor ) {
 	//
 
 	var config = editor.config;
+	var strings = editor.strings;
 
 	var container = new UI.Panel();
 	container.setClass( 'menu' );
 
 	var title = new UI.Panel();
 	title.setClass( 'title' );
-	title.setTextContent( 'File' );
+	title.setTextContent( strings.getKey( 'menubar/file' ) );
 	container.add( title );
 
 	var options = new UI.Panel();
@@ -32,7 +33,7 @@ Menubar.File = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'New' );
+	option.setTextContent( strings.getKey( 'menubar/file/new' ) );
 	option.onClick( function () {
 
 		if ( confirm( 'Any unsaved data will be lost. Are you sure?' ) ) {
@@ -67,7 +68,7 @@ Menubar.File = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Import' );
+	option.setTextContent( strings.getKey( 'menubar/file/import' ) );
 	option.onClick( function () {
 
 		fileInput.click();
@@ -83,7 +84,7 @@ Menubar.File = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Export Geometry' );
+	option.setTextContent( strings.getKey( 'menubar/file/export/geometry' ) );
 	option.onClick( function () {
 
 		var object = editor.selected;
@@ -126,7 +127,7 @@ Menubar.File = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Export Object' );
+	option.setTextContent( strings.getKey( 'menubar/file/export/object' ) );
 	option.onClick( function () {
 
 		var object = editor.selected;
@@ -160,7 +161,7 @@ Menubar.File = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Export Scene' );
+	option.setTextContent( strings.getKey( 'menubar/file/export/scene' ) );
 	option.onClick( function () {
 
 		var output = editor.scene.toJSON();
@@ -189,7 +190,7 @@ Menubar.File = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Export DAE' );
+	option.setTextContent( strings.getKey( 'menubar/file/export/dae' ) );
 	option.onClick( function () {
 
 		var exporter = new THREE.ColladaExporter();
@@ -207,7 +208,7 @@ Menubar.File = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Export GLB' );
+	option.setTextContent( strings.getKey( 'menubar/file/export/glb' ) );
 	option.onClick( function () {
 
 		var exporter = new THREE.GLTFExporter();
@@ -227,7 +228,7 @@ Menubar.File = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Export GLTF' );
+	option.setTextContent( strings.getKey( 'menubar/file/export/gltf' ) );
 	option.onClick( function () {
 
 		var exporter = new THREE.GLTFExporter();
@@ -246,7 +247,7 @@ Menubar.File = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Export OBJ' );
+	option.setTextContent( strings.getKey( 'menubar/file/export/obj' ) );
 	option.onClick( function () {
 
 		var object = editor.selected;
@@ -265,11 +266,11 @@ Menubar.File = function ( editor ) {
 	} );
 	options.add( option );
 
-	// Export STL
+	// Export STL (ASCII)
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Export STL' );
+	option.setTextContent( strings.getKey( 'menubar/file/export/stl' ) );
 	option.onClick( function () {
 
 		var exporter = new THREE.STLExporter();
@@ -279,6 +280,20 @@ Menubar.File = function ( editor ) {
 	} );
 	options.add( option );
 
+	// Export STL (Binary)
+
+	var option = new UI.Row();
+	option.setClass( 'option' );
+	option.setTextContent( strings.getKey( 'menubar/file/export/stl_binary' ) );
+	option.onClick( function () {
+
+		var exporter = new THREE.STLExporter();
+
+		saveArrayBuffer( exporter.parse( editor.scene, { binary: true } ), 'model-binary.stl' );
+
+	} );
+	options.add( option );
+
 	//
 
 	options.add( new UI.HorizontalRule() );
@@ -287,7 +302,7 @@ Menubar.File = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Publish' );
+	option.setTextContent( strings.getKey( 'menubar/file/publish' ) );
 	option.onClick( function () {
 
 		var zip = new JSZip();

+ 5 - 3
editor/js/Menubar.Help.js

@@ -4,12 +4,14 @@
 
 Menubar.Help = function ( editor ) {
 
+	var strings = editor.strings;
+
 	var container = new UI.Panel();
 	container.setClass( 'menu' );
 
 	var title = new UI.Panel();
 	title.setClass( 'title' );
-	title.setTextContent( 'Help' );
+	title.setTextContent( strings.getKey( 'menubar/help' ) );
 	container.add( title );
 
 	var options = new UI.Panel();
@@ -20,7 +22,7 @@ Menubar.Help = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'Source code' );
+	option.setTextContent( strings.getKey( 'menubar/help/source_code' ) );
 	option.onClick( function () {
 
 		window.open( 'https://github.com/mrdoob/three.js/tree/master/editor', '_blank' )
@@ -32,7 +34,7 @@ Menubar.Help = function ( editor ) {
 
 	var option = new UI.Row();
 	option.setClass( 'option' );
-	option.setTextContent( 'About' );
+	option.setTextContent( strings.getKey( 'menubar/help/about' ) );
 	option.onClick( function () {
 
 		window.open( 'http://threejs.org', '_blank' );

+ 4 - 3
editor/js/Menubar.Play.js

@@ -5,6 +5,7 @@
 Menubar.Play = function ( editor ) {
 
 	var signals = editor.signals;
+	var strings = editor.strings;
 
 	var container = new UI.Panel();
 	container.setClass( 'menu' );
@@ -13,19 +14,19 @@ Menubar.Play = function ( editor ) {
 
 	var title = new UI.Panel();
 	title.setClass( 'title' );
-	title.setTextContent( 'Play' );
+	title.setTextContent( strings.getKey( 'menubar/play' ) );
 	title.onClick( function () {
 
 		if ( isPlaying === false ) {
 
 			isPlaying = true;
-			title.setTextContent( 'Stop' );
+			title.setTextContent( strings.getKey( 'menubar/play/stop' ) );
 			signals.startPlayer.dispatch();
 
 		} else {
 
 			isPlaying = false;
-			title.setTextContent( 'Play' );
+			title.setTextContent( strings.getKey( 'menubar/play/play' ) );
 			signals.stopPlayer.dispatch();
 
 		}

+ 3 - 1
editor/js/Menubar.Status.js

@@ -4,10 +4,12 @@
 
 Menubar.Status = function ( editor ) {
 
+	var strings = editor.strings;
+
 	var container = new UI.Panel();
 	container.setClass( 'menu right' );
 
-	var autosave = new UI.THREE.Boolean( editor.config.getKey( 'autosave' ), 'autosave' );
+	var autosave = new UI.THREE.Boolean( editor.config.getKey( 'autosave' ), strings.getKey( 'menubar/status/autosave' ) );
 	autosave.text.setColor( '#888' );
 	autosave.onChange( function () {
 

+ 8 - 6
editor/js/Sidebar.Geometry.BoxGeometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -16,7 +18,7 @@ Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 	var widthRow = new UI.Row();
 	var width = new UI.Number( parameters.width ).onChange( update );
 
-	widthRow.add( new UI.Text( 'Width' ).setWidth( '90px' ) );
+	widthRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/box_geometry/width' ) ).setWidth( '90px' ) );
 	widthRow.add( width );
 
 	container.add( widthRow );
@@ -26,7 +28,7 @@ Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 	var heightRow = new UI.Row();
 	var height = new UI.Number( parameters.height ).onChange( update );
 
-	heightRow.add( new UI.Text( 'Height' ).setWidth( '90px' ) );
+	heightRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/box_geometry/height' ) ).setWidth( '90px' ) );
 	heightRow.add( height );
 
 	container.add( heightRow );
@@ -36,7 +38,7 @@ Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 	var depthRow = new UI.Row();
 	var depth = new UI.Number( parameters.depth ).onChange( update );
 
-	depthRow.add( new UI.Text( 'Depth' ).setWidth( '90px' ) );
+	depthRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/box_geometry/depth' ) ).setWidth( '90px' ) );
 	depthRow.add( depth );
 
 	container.add( depthRow );
@@ -46,7 +48,7 @@ Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 	var widthSegmentsRow = new UI.Row();
 	var widthSegments = new UI.Integer( parameters.widthSegments ).setRange( 1, Infinity ).onChange( update );
 
-	widthSegmentsRow.add( new UI.Text( 'Width Seg' ).setWidth( '90px' ) );
+	widthSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/box_geometry/widthseg' ) ).setWidth( '90px' ) );
 	widthSegmentsRow.add( widthSegments );
 
 	container.add( widthSegmentsRow );
@@ -56,7 +58,7 @@ Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 	var heightSegmentsRow = new UI.Row();
 	var heightSegments = new UI.Integer( parameters.heightSegments ).setRange( 1, Infinity ).onChange( update );
 
-	heightSegmentsRow.add( new UI.Text( 'Height Seg' ).setWidth( '90px' ) );
+	heightSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/box_geometry/heightseg' ) ).setWidth( '90px' ) );
 	heightSegmentsRow.add( heightSegments );
 
 	container.add( heightSegmentsRow );
@@ -66,7 +68,7 @@ Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 	var depthSegmentsRow = new UI.Row();
 	var depthSegments = new UI.Integer( parameters.depthSegments ).setRange( 1, Infinity ).onChange( update );
 
-	depthSegmentsRow.add( new UI.Text( 'Depth Seg' ).setWidth( '90px' ) );
+	depthSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/box_geometry/depthseg' ) ).setWidth( '90px' ) );
 	depthSegmentsRow.add( depthSegments );
 
 	container.add( depthSegmentsRow );

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