浏览代码

Merge branch 'dev' into feat-gltfloader-node-weights

Don McCurdy 6 年之前
父节点
当前提交
fe3f882cea
共有 100 个文件被更改,包括 1906 次插入2230 次删除
  1. 1 1
      .github/ISSUE_TEMPLATE.md
  2. 18 14
      README.md
  3. 20 14
      build/three.js
  4. 365 371
      build/three.min.js
  5. 20 14
      build/three.module.js
  6. 1 4
      docs/api/en/animation/AnimationClip.html
  7. 9 3
      docs/api/en/audio/Audio.html
  8. 2 0
      docs/api/en/audio/AudioListener.html
  9. 7 5
      docs/api/en/core/BufferGeometry.html
  10. 0 1
      docs/api/en/core/Face3.html
  11. 3 1
      docs/api/en/core/Geometry.html
  12. 1 1
      docs/api/en/core/Object3D.html
  13. 6 18
      docs/api/en/deprecated/DeprecatedList.html
  14. 0 1
      docs/api/en/lights/DirectionalLight.html
  15. 0 123
      docs/api/en/loaders/JSONLoader.html
  16. 2 8
      docs/api/en/loaders/ObjectLoader.html
  17. 1 1
      docs/api/en/materials/ShaderMaterial.html
  18. 0 2
      docs/api/en/materials/SpriteMaterial.html
  19. 42 31
      docs/api/en/objects/SkinnedMesh.html
  20. 1 1
      docs/api/en/scenes/Scene.html
  21. 1 4
      docs/api/zh/animation/AnimationClip.html
  22. 14 14
      docs/api/zh/animation/tracks/BooleanKeyframeTrack.html
  23. 12 13
      docs/api/zh/animation/tracks/ColorKeyframeTrack.html
  24. 12 12
      docs/api/zh/animation/tracks/NumberKeyframeTrack.html
  25. 17 16
      docs/api/zh/animation/tracks/QuaternionKeyframeTrack.html
  26. 16 16
      docs/api/zh/animation/tracks/StringKeyframeTrack.html
  27. 12 12
      docs/api/zh/animation/tracks/VectorKeyframeTrack.html
  28. 6 0
      docs/api/zh/audio/Audio.html
  29. 2 0
      docs/api/zh/audio/AudioListener.html
  30. 5 5
      docs/api/zh/cameras/ArrayCamera.html
  31. 1 1
      docs/api/zh/core/BufferAttribute.html
  32. 1 1
      docs/api/zh/core/Clock.html
  33. 1 1
      docs/api/zh/core/DirectGeometry.html
  34. 1 1
      docs/api/zh/core/EventDispatcher.html
  35. 1 2
      docs/api/zh/core/Face3.html
  36. 1 1
      docs/api/zh/core/Geometry.html
  37. 1 1
      docs/api/zh/core/InstancedBufferAttribute.html
  38. 1 1
      docs/api/zh/core/InstancedBufferGeometry.html
  39. 1 1
      docs/api/zh/core/InstancedInterleavedBuffer.html
  40. 1 1
      docs/api/zh/core/InterleavedBuffer.html
  41. 1 1
      docs/api/zh/core/InterleavedBufferAttribute.html
  42. 1 1
      docs/api/zh/core/Layers.html
  43. 1 1
      docs/api/zh/core/Uniform.html
  44. 5 5
      docs/api/zh/core/bufferAttributeTypes/BufferAttributeTypes.html
  45. 6 25
      docs/api/zh/deprecated/DeprecatedList.html
  46. 6 6
      docs/api/zh/extras/Earcut.html
  47. 12 15
      docs/api/zh/extras/ShapeUtils.html
  48. 1 1
      docs/api/zh/geometries/PolyhedronGeometry.html
  49. 0 1
      docs/api/zh/lights/DirectionalLight.html
  50. 0 119
      docs/api/zh/loaders/JSONLoader.html
  51. 2 8
      docs/api/zh/loaders/ObjectLoader.html
  52. 0 2
      docs/api/zh/materials/SpriteMaterial.html
  53. 92 105
      docs/api/zh/math/Box3.html
  54. 96 103
      docs/api/zh/math/Color.html
  55. 17 19
      docs/api/zh/math/Cylindrical.html
  56. 64 75
      docs/api/zh/math/Euler.html
  57. 33 36
      docs/api/zh/math/Frustum.html
  58. 10 11
      docs/api/zh/math/Interpolant.html
  59. 34 40
      docs/api/zh/math/Line3.html
  60. 38 43
      docs/api/zh/math/Math.html
  61. 63 71
      docs/api/zh/math/Matrix3.html
  62. 109 130
      docs/api/zh/math/Matrix4.html
  63. 49 58
      docs/api/zh/math/Plane.html
  64. 41 28
      docs/api/zh/objects/SkinnedMesh.html
  65. 28 28
      docs/api/zh/textures/CanvasTexture.html
  66. 32 32
      docs/api/zh/textures/CompressedTexture.html
  67. 11 12
      docs/api/zh/textures/CubeTexture.html
  68. 12 12
      docs/api/zh/textures/DataTexture3D.html
  69. 40 41
      docs/api/zh/textures/DepthTexture.html
  70. 92 95
      docs/api/zh/textures/Texture.html
  71. 31 31
      docs/api/zh/textures/VideoTexture.html
  72. 1 1
      docs/examples/loaders/GLTFLoader.html
  73. 23 0
      docs/examples/loaders/MMDLoader.html
  74. 1 1
      docs/examples/loaders/SVGLoader.html
  75. 3 2
      docs/examples/utils/BufferGeometryUtils.html
  76. 4 4
      docs/examples/utils/SceneUtils.html
  77. 50 51
      docs/list.js
  78. 0 1
      docs/manual/en/introduction/Animation-system.html
  79. 2 2
      docs/manual/en/introduction/Browser-support.html
  80. 0 58
      docs/manual/en/introduction/How-to-run-things-locally.html
  81. 1 1
      docs/manual/en/introduction/Loading-3D-models.html
  82. 60 69
      docs/manual/zh/buildTools/Testing-with-NPM.html
  83. 2 3
      docs/manual/zh/introduction/Animation-system.html
  84. 1 1
      docs/manual/zh/introduction/Browser-support.html
  85. 1 1
      docs/manual/zh/introduction/FAQ.html
  86. 84 0
      docs/manual/zh/introduction/How-to-create-VR-content.html
  87. 33 34
      docs/manual/zh/introduction/How-to-update-things.html
  88. 17 19
      docs/manual/zh/introduction/How-to-use-WebGL2.html
  89. 14 14
      docs/manual/zh/introduction/Matrix-transformations.html
  90. 34 25
      docs/scenes/bones-browser.html
  91. 3 0
      editor/css/dark.css
  92. 3 0
      editor/css/light.css
  93. 4 6
      editor/index.html
  94. 1 44
      editor/js/Loader.js
  95. 2 2
      editor/js/Menubar.Play.js
  96. 3 1
      editor/js/Menubar.Status.js
  97. 8 6
      editor/js/Sidebar.Geometry.BoxGeometry.js
  98. 4 2
      editor/js/Sidebar.Geometry.BufferGeometry.js
  99. 6 4
      editor/js/Sidebar.Geometry.CircleGeometry.js
  100. 8 6
      editor/js/Sidebar.Geometry.CylinderGeometry.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
+- [ ] r99
 - [ ] ...
 
 ##### 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://badgen.net/bundlephobia/minzip/three
+[build-size-url]: https://bundlephobia.com/result?p=three
+[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/

文件差异内容过多而无法显示
+ 20 - 14
build/three.js


文件差异内容过多而无法显示
+ 365 - 371
build/three.min.js


文件差异内容过多而无法显示
+ 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>

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

@@ -62,6 +62,9 @@
 		<h3>[property:AudioContext context]</h3>
 		<p>The [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext] of the [page:AudioListener listener] given in the constructor.</p>
 
+		<h3>[property:Number detune]</h3>
+		<p>Modify pitch, measured in cents. +/- 100 is a semitone. +/- 1200 is an octave. Default is *0*.</p>
+
 		<h3>[property:Array filters]</h3>
 		<p>Represents an array of [link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNodes]. Can be used to apply a variety of low-order filters to create more complex sound effects. Filters are set via [page:Audio.setFilter] or [page:Audio.setFilters].</p>
 
@@ -73,12 +76,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>
 

+ 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>

+ 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>

+ 6 - 18
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,11 +483,10 @@
 			Shape.makeGeometry has been removed. Use [page:ShapeGeometry] instead.
 		</p>
 
-
-
-
-
-
+		<h3>[page:SkinnedMesh]</h3>
+		<p>
+			SkinnedMesh.initBones() has been removed.
+		</p>
 
 
 		<h2>Renderers</h2>

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

@@ -41,7 +41,6 @@
 		<h2>Example</h2>
 		<p>
 			[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 - 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>

+ 2 - 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,8 @@
 		<h2>Example</h2>
 
 		<p>
-
-			[example:webgl_animation_scene WebGL / animation / scene]<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 +116,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>

+ 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]

+ 42 - 31
docs/api/en/objects/SkinnedMesh.html

@@ -38,41 +38,60 @@
 		<h2>Example</h2>
 
 		<code>
-		var geometry = new THREE.CylinderGeometry( 5, 5, 5, 5, 15, 5, 30 );
+		var geometry = new THREE.CylinderBufferGeometry( 5, 5, 5, 5, 15, 5, 30 );
 
-		//Create the skin indices and skin weights
-		for ( var i = 0; i < geometry.vertices.length; i ++ ) {
+		// create the skin indices and skin weights
 
-			// Imaginary functions to calculate the indices and weights
-			// This part will need to be changed depending your skeleton and model
-			var skinIndex = calculateSkinIndex( geometry.vertices, i );
-			var skinWeight = calculateSkinWeight( geometry.vertices, i );
+		var position = geometry.attributes.position;
 
-			// Ease between each bone
-			geometry.skinIndices.push( new THREE.Vector4( skinIndex, skinIndex + 1, 0, 0 ) );
-			geometry.skinWeights.push( new THREE.Vector4( 1 - skinWeight, skinWeight, 0, 0 ) );
+		var vertex = new THREE.Vector3();
+
+		var skinIndices = [];
+		var skinWeights = [];
+
+		for ( var i = 0; i < position.count; i ++ ) {
+
+			vertex.fromBufferAttribute( position, i );
+
+			// compute skinIndex and skinWeight based on some configuration data
+
+			var y = ( vertex.y + sizing.halfHeight );
+
+			var skinIndex = Math.floor( y / sizing.segmentHeight );
+			var skinWeight = ( y % sizing.segmentHeight ) / sizing.segmentHeight;
+
+			skinIndices.push( skinIndex, skinIndex + 1, 0, 0 );
+			skinWeights.push( 1 - skinWeight, skinWeight, 0, 0 );
 
 		}
 
+		geometry.addAttribute( 'skinIndex', new THREE.Uint16BufferAttribute( skinIndices, 4 ) );
+		geometry.addAttribute( 'skinWeight', new THREE.Float32BufferAttribute( skinWeights, 4 ) );
+
+		// create skinned mesh and skeleton
+
 		var mesh = new THREE.SkinnedMesh( geometry, material );
+		var skeleton = new THREE.Skeleton( bones );
+
+		// see example from THREE.Skeleton
 
-		// See example from THREE.Skeleton for the armSkeleton
-		var rootBone = armSkeleton.bones[ 0 ];
+		var rootBone = skeleton.bones[ 0 ];
 		mesh.add( rootBone );
 
-		// Bind the skeleton to the mesh
-		mesh.bind( armSkeleton );
+		// bind the skeleton to the mesh
+
+		mesh.bind( skeleton );
+
+		// move the bones and manipulate the model
 
-		// Move the bones and manipulate the model
-		armSkeleton.bones[ 0 ].rotation.x = -0.1;
-		armSkeleton.bones[ 1 ].rotation.x = 0.2;
+		skeleton.bones[ 0 ].rotation.x = -0.1;
+		skeleton.bones[ 1 ].rotation.x = 0.2;
 		</code>
 
 		<h2>Constructor</h2>
-		<h3>[name]( [param:Geometry geometry], [param:Material material] )</h3>
+		<h3>[name]( [param:BufferGeometry geometry], [param:Material material] )</h3>
 		<p>
-    [page:Geometry geometry] - an instance of [page:Geometry] or [page:BufferGeometry] (recommended).
-		[page:Geometry.skinIndices skinIndices] and [page:Geometry.skinWeights skinWeights] should be set to true on the geometry.<br />
+    [page:Geometry geometry] - an instance of [page:BufferGeometry].<br />
     [page:Material material] - (optional) an instance of [page:Material]. Default is a new [page:MeshBasicMaterial].
 		</p>
 
@@ -109,8 +128,7 @@
 
 		<h3>[property:Skeleton skeleton]</h3>
 		<p>
-		[page:Skeleton] created from the [page:Geometry.bones bones] of the [page:Geometry] passed in the
-		constructor.
+		[page:Skeleton] representing the bone hierachy of the skinned mesh.
 		</p>
 
 
@@ -124,9 +142,7 @@
 		[page:Matrix4 bindMatrix] - [page:Matrix4] that represents the base transform of the skeleton.<br /><br />
 
 		Bind a skeleton to the skinned mesh. The bindMatrix gets saved to .bindMatrix property
-		and the .bindMatrixInverse gets calculated. This is called automatically in the constructor, and the skeleton
-		is created from the [page:Geometry.bones bones] of the [page:Geometry] passed in the
-		constructor.
+		and the .bindMatrixInverse gets calculated.
 		</p>
 
 		<h3>[method:SkinnedMesh clone]()</h3>
@@ -136,7 +152,7 @@
 
 		<h3>[method:null normalizeSkinWeights]()</h3>
 		<p>
-		Normalizes the [page:Geometry.skinWeights] vectors. Does not affect [page:BufferGeometry].
+		Normalizes the skin weights.
 		</p>
 
 		<h3>[method:null pose]()</h3>
@@ -149,11 +165,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>

+ 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>

+ 14 - 14
docs/api/zh/animation/tracks/BooleanKeyframeTrack.html

@@ -14,36 +14,36 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			A Track of boolean keyframe values.
+			布尔类型的关键帧轨道。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 
 
 		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
 		<p>
-			[page:String name] - (required) identifier for the KeyframeTrack.<br />
-			[page:Array times] - (required) array of keyframe times.<br />
-			[page:Array values] - values for the keyframes at the times specified.<br />
+			[page:String name] - (必须) 关键帧轨道(KeyframeTrack)的标识符.<br />
+			[page:Array times] - (必须) 关键帧的时间数组.<br />
+			[page:Array values] - 与时间数组中的时间点对应的值数组.<br />
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 
 		<p class="desc">
-			See [page:KeyframeTrack] for inherited properties.
+			参见 [page:KeyframeTrack] 查看继承的属性.
 		</p>
 
 		<h3>[property:Constant DefaultInterpolation]</h3>
 		<p>
-			The default interpolation type to use, [page:Animation InterpolateDiscrete].
+			默认的插值类型。 参见 [page:Animation InterpolateDiscrete].
 		</p>
 
 		<h3>[property:Array ValueBufferType]</h3>
 		<p>
-			A normal Array (no Float32Array in this case, unlike *ValueBufferType* of [page:KeyframeTrack]).
+			一个基本数组 (不是 Float32Array 类型, 与 [page:KeyframeTrack] 内的 *ValueBufferType* 属性不一样).
 		</p>
 
 		<h3>[property:String ValueTypeName]</h3>
@@ -52,25 +52,25 @@
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 
 		<p class="desc">
-			See [page:KeyframeTrack] for inherited methods.
+			参见 [page:KeyframeTrack] 查看继承的方法.
 		</p>
 
 		<h3>[method:null InterpolantFactoryMethodLinear ]()</h3>
 		<p>
-			The value of this method here is 'undefined', as it does not make sense for discrete properties.
+			这个方法在这里的值为 'undefined', 因为他对离散属性没有意义.
 		</p>
 
 		<h3>[method:null InterpolantFactoryMethodSmooth ]()</h3>
 		<p>
-			The value of this method here is 'undefined', as it does not make sense for discrete properties.
+			这个方法在这里的值为 'undefined', 因为他对离散属性没有意义.
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 12 - 13
docs/api/zh/animation/tracks/ColorKeyframeTrack.html

@@ -14,31 +14,30 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			A Track of keyframe values that represent color changes.<br /><br />
-			The very basic implementation of this subclass has nothing special yet. However, this is the place
-			for color space parameterization.
+			反应颜色变化的关键帧轨道。<br /><br />
+			这个子类的基本实现还没有什么特别之处。不过,这里可以表示颜色空间参数化。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 
 
 		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
 		<p>
-			[page:String name] - (required) identifier for the KeyframeTrack.<br />
-			[page:Array times] - (required) array of keyframe times.<br />
-			[page:Array values] - values for the keyframes at the times specified.<br />
-			[page:Constant interpolation] - the type of interpolation to use. See
-			[page:Animation Animation Constants] for possible values. Default is
+			[page:String name] - (必须) 关键帧轨道(KeyframeTrack)的标识符.<br />
+			[page:Array times] - (必须) 关键帧的时间数组.<br />
+			[page:Array values] - 与时间数组中的时间点对应的值数组.<br />
+			[page:Constant interpolation] - 使用的插值类型。 取值参考
+			[page:Animation Animation Constants]. 默认值为
 			[page:Animation InterpolateLinear].
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 
 		<p class="desc">
-			See [page:KeyframeTrack] for inherited properties.
+			参见 [page:KeyframeTrack] 查看继承的属性.
 		</p>
 
 		<h3>[property:String ValueTypeName]</h3>
@@ -51,10 +50,10 @@
 
 
 		<p class="desc">
-			See [page:KeyframeTrack] for inherited methods.
+			参见 [page:KeyframeTrack] 查看继承的方法.
 		</p>
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 12 - 12
docs/api/zh/animation/tracks/NumberKeyframeTrack.html

@@ -14,29 +14,29 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			A Track of numeric keyframe values.
+			数字类型的关键帧轨道
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 
 
 		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
 		<p>
-			[page:String name] - (required) identifier for the KeyframeTrack.<br />
-			[page:Array times] - (required) array of keyframe times.<br />
-			[page:Array values] - values for the keyframes at the times specified.<br />
-			[page:Constant interpolation] - the type of interpolation to use. See
-			[page:Animation Animation Constants] for possible values. Default is
+			[page:String name] - (必须) 关键帧轨道(KeyframeTrack)的标识符.<br />
+			[page:Array times] - (必须) 关键帧的时间数组.<br />
+			[page:Array values] - 与时间数组中的时间点对应的值数组.<br />
+			[page:Constant interpolation] - 使用的插值类型。 取值参考
+			[page:Animation Animation Constants] 默认值为
 			[page:Animation InterpolateLinear].
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 
 		<p class="desc">
-			See [page:KeyframeTrack] for inherited properties.
+			参见 [page:KeyframeTrack] 查看继承的属性.
 		</p>
 
 
@@ -46,15 +46,15 @@
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 
 		<p class="desc">
-			See [page:KeyframeTrack] for inherited methods.
+			参见 [page:KeyframeTrack] 查看继承的方法.
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 17 - 16
docs/api/zh/animation/tracks/QuaternionKeyframeTrack.html

@@ -14,34 +14,34 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			A Track of quaternion keyframe values.
+			四元数类型的关键帧轨道。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 
 
 		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
 		<p>
-			[page:String name] (required) identifier for the KeyframeTrack.<br />
-			[page:Array times] (required) array of keyframe times.<br />
-			[page:Array values] values for the keyframes at the times specified.<br />
-			[page:Constant interpolation] the type of interpolation to use. See
-			[page:Animation Animation Constants] for possible values. Default is
+			[page:String name] - (必须) 关键帧轨道(KeyframeTrack)的标识符.<br />
+			[page:Array times] - (必须) 关键帧的时间数组.<br />
+			[page:Array values] - 与时间数组中的时间点对应的值数组.<br />
+			[page:Constant interpolation] - 使用的插值类型。 取值参考
+			[page:Animation Animation Constants] 默认值为
 			[page:Animation InterpolateLinear].
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 
 		<p class="desc">
-			See [page:KeyframeTrack] for inherited properties.
+			参见 [page:KeyframeTrack] 查看继承的属性.
 		</p>
 
 		<h3>[property:Constant DefaultInterpolation]</h3>
 		<p>
-			The default interpolation type to use, [page:Animation InterpolateLinear].
+			默认的插值类型。 参见 [page:Animation InterpolateDiscrete].
 		</p>
 
 		<h3>[property:String ValueTypeName]</h3>
@@ -50,22 +50,23 @@
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 
 		<p class="desc">
-			See [page:KeyframeTrack] for inherited methods.
+			参见 [page:KeyframeTrack] 查看继承的方法.
 		</p>
 
 		<h3>[method:null InterpolantFactoryMethodLinear]()</h3>
 		<p>
-			Returns a new [page:QuaternionLinearInterpolant QuaternionLinearInterpolant] based on the
-			[page:KeyframeTrack.values values], [page:KeyframeTrack.times times] and
-			[page:KeyframeTrack.valueSize valueSize] of the keyframes.
+			根据值数组 ([page:KeyframeTrack.values values]),
+			时间 ([page:KeyframeTrack.times times])
+			和值大小 [page:KeyframeTrack.valueSize valueSize]
+			创建一个新的线性插值 ([page:QuaternionLinearInterpolant QuaternionLinearInterpolant])。
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 16 - 16
docs/api/zh/animation/tracks/StringKeyframeTrack.html

@@ -14,39 +14,39 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			A Track of string keyframe values.
+			字符串类型的关键帧轨道
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 
 
 		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
 		<p>
-			[page:String name] - (required) identifier for the KeyframeTrack.<br />
-			[page:Array times] - (required) array of keyframe times.<br />
-			[page:Array values] - values for the keyframes at the times specified.<br />
-			[page:Constant interpolation] - the type of interpolation to use. See
-			[page:Animation Animation Constants] for possible values. Default is
+			[page:String name] - (必须) 关键帧轨道(KeyframeTrack)的标识符.<br />
+			[page:Array times] - (必须) 关键帧的时间数组.<br />
+			[page:Array values] - 与时间数组中的时间点对应的值数组.<br />
+			[page:Constant interpolation] - 使用的插值类型。 取值参考
+			[page:Animation Animation Constants] 默认值为
 			[page:Animation InterpolateDiscrete].
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 
 		<p class="desc">
-			See [page:KeyframeTrack] for inherited properties.
+			参见 [page:KeyframeTrack] 查看继承的属性.
 		</p>
 
 		<h3>[property:Constant DefaultInterpolation]</h3>
 		<p>
-			The default interpolation type to use, [page:Animation InterpolateDiscrete].
+			默认的插值类型。 参见 [page:Animation InterpolateDiscrete].
 		</p>
 
 		<h3>[property:Array ValueBufferType]</h3>
 		<p>
-			A normal Array (no Float32Array in this case, unlike *ValueBufferType* of [page:KeyframeTrack]).
+			一个基本数组 (不是 Float32Array 类型, 与 [page:KeyframeTrack] 内的 *ValueBufferType* 属性不一样).
 		</p>
 
 		<h3>[property:String ValueTypeName]</h3>
@@ -55,25 +55,25 @@
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 
 		<p class="desc">
-			See [page:KeyframeTrack] for inherited methods.
+			参见 [page:KeyframeTrack] 查看继承的方法.
 		</p>
 
 		<h3>[method:null InterpolantFactoryMethodLinear]()</h3>
 		<p>
-		  The value of this method here is 'undefined', as it does not make sense for discrete properties.
+			这个方法在这里的值为 'undefined', 因为他对离散属性没有意义.
 		</p>
 
 		<h3>[method:null InterpolantFactoryMethodSmooth]()</h3>
 		<p>
-		  The value of this method here is 'undefined', as it does not make sense for discrete properties.
+			这个方法在这里的值为 'undefined', 因为他对离散属性没有意义.
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 12 - 12
docs/api/zh/animation/tracks/VectorKeyframeTrack.html

@@ -14,29 +14,29 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			A Track of vector keyframe values.
+			向量类型的关键帧轨道
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 
 
 		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
 		<p>
-			[page:String name] - (required) identifier for the KeyframeTrack.<br />
-			[page:Array times] - (required) array of keyframe times.<br />
-			[page:Array values] - values for the keyframes at the times specified.<br />
-			[page:Constant interpolation] - the type of interpolation to use. See
-			[page:Animation Animation Constants] for possible values. Default is
+			[page:String name] - (必须) 关键帧轨道(KeyframeTrack)的标识符.<br />
+			[page:Array times] - (必须) 关键帧的时间数组.<br />
+			[page:Array values] - 与时间数组中的时间点对应的值数组.<br />
+			[page:Constant interpolation] - 使用的插值类型。 取值参考
+			[page:Animation Animation Constants] 默认值为
 			[page:Animation InterpolateLinear].
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 
 		<p class="desc">
-			See [page:KeyframeTrack] for inherited properties.
+			参见 [page:KeyframeTrack] 查看继承的属性.
 		</p>
 
 		<h3>[property:String ValueTypeName]</h3>
@@ -45,15 +45,15 @@
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 
 		<p class="desc">
-			See [page:KeyframeTrack] for inherited methods.
+			参见 [page:KeyframeTrack] 查看继承的方法.
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

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

@@ -62,6 +62,9 @@
 		<h3>[property:AudioContext context]</h3>
 		<p>构造函数中传入[page:AudioListener listener]的[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext].</p>
 
+		<h3>[property:Number detune]</h3>
+		<p>TODO</p>
+
 		<h3>[property:Array filters]</h3>
 		<p>表示[link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNodes]的数组. 可以使用多种不同的低阶filters去创建复杂的音效. filters可以通过 [page:Audio.setFilter] 或者 [page:Audio.setFilters]设置.</p>
 
@@ -78,6 +81,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>

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

@@ -31,14 +31,14 @@
 
 		<h2>构造函数</h2>
 
-		All of the above are called in the same way.
+		所有上述内容都以相同的方式调用。
 		<h3>TypedBufferAttribute( [param:Array array], [param:Integer itemSize], [param:Boolean normalized] )</h3>
 		<p>
-			array -- this can be a typed or untyped (normal) array. It will be converted to the Type specified.<br /><br />
+			array -- 这可以是类型化或非类型化的(普通)数组。它将被转换为指定的类型。<br /><br />
 
-			itemSize -- the number of values of the array that should be associated with a particular vertex.<br /><br />
+			itemSize -- 应与特定顶点关联的数组值的数量。<br /><br />
 
-			normalized -- (optional) indicates how the underlying data in the buffer maps to the values in the GLSL code.
+			normalized -- (可选)表示缓冲区中的基础数据如何映射到GLSL代码中的值。
 		</p>
 
 		<h2>属性</h2>
@@ -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>

+ 6 - 6
docs/api/zh/extras/Earcut.html

@@ -11,20 +11,20 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-		An implementation of the earcut polygon triangulation algorithm. The code is a port of [link:https://github.com/mapbox/earcut mapbox/earcut].
+		切割多边形三角剖分算法的实现。这份代码是[link:https://github.com/mapbox/earcut mapbox/earcut]的一个端口。
 		</p>
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 		<h3>[method:Array triangulate]( data, holeIndices, dim )</h3>
 		<p>
-		data -- A flat array of vertice coordinates.<br /><br />
-		holeIndices -- An array of hole indices if any.<br /><br />
-		dim -- The number of coordinates per vertice in the input array.<br /><br />
+		data -- 一个顶点坐标的平面数组。<br /><br />
+		holeIndices -- 空洞索引的数组(如果有的话)。<br /><br />
+		dim -- 输入数组中每个顶点的坐标数。<br /><br />
 
 		</p>
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 12 - 15
docs/api/zh/extras/ShapeUtils.html

@@ -11,43 +11,40 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-		A class containing utility functions for shapes.<br /><br />
+		一个包含形状实用函数的类。<br /><br />
 
-		Note that these are all linear functions so it is neccessary to calculate separately for
-		x, y (and z, w if present) components of a vector.
+		请注意,这些都是线性函数,因此有必要分别计算向量的x,y(和z,w,如果存在的话)分量。
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 		<h3>[method:Number area]( contour )</h3>
 		<p>
-		contour -- 2D polygon.<br /><br />
+		contour -- 2D多边形。<br /><br />
 
-		Calculate area of a ( 2D ) contour polygon.<br /><br />
+		计算(2D)轮廓多边形的面积。<br /><br />
 
 		</p>
 
 		<h3>[method:Boolean isClockwise]( pts )</h3>
 		<p>
-		pts -- points defining a 2D polygon<br /><br />
+		pts -- 定义2D多边形的点<br /><br />
 
-		Note that this is a linear function so it is neccessary to calculate separately for
-		x, y  components of a polygon.<br /><br />
+		请注意,这是一个线性函数,因此需要分别计算多边形的x,y分量。<br /><br />
 
-		Used internally by [page:Path Path],
-		[page:ExtrudeGeometry ExtrudeGeometry] and [page:ShapeGeometry ShapeGeometry].
+		由[page:Path Path],[page:ExtrudeGeometry ExtrudeGeometry]和[page:ShapeGeometry ShapeGeometry]内部使用。
 		</p>
 
 		<h3>[method:Array triangulateShape]( contour, holes )</h3>
 		<p>
-		contour -- 2D polygon.<br />
-		holes -- array of holes<br /><br />
+		contour -- 2D多边形。<br />
+		holes -- 空洞数组<br /><br />
 
-		Used internally by [page:ExtrudeGeometry ExtrudeGeometry] and [page:ShapeGeometry ShapeGeometry] to calculate faces in shapes with holes.
+		由[page:ExtrudeGeometry ExtrudeGeometry]和[page:ShapeGeometry ShapeGeometry]内部使用以计算带孔的形状中的面。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 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>

+ 2 - 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,8 @@
 		<h2>例子</h2>
 
 		<p>
-
-			[example:webgl_animation_scene WebGL / animation / scene]<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 +115,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 - 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]

+ 92 - 105
docs/api/zh/math/Box3.html

@@ -11,291 +11,278 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			Represents a box or cube in 3D space. The main purpose of this is to represent
-			the [link:https://en.wikipedia.org/wiki/Minimum_bounding_box Minimum Bounding Boxes]
-			for objects.
+			在3D空间中表示一个盒子或立方体。这个的主要目的是表示对象的最小边界框[link:https://en.wikipedia.org/wiki/Minimum_bounding_box Minimum Bounding Boxes]。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器(Constructor</h2>
 
 
 		<h3>[name]( [param:Vector3 min], [param:Vector3 max] )</h3>
 		<p>
-		[page:Vector3 min] - (optional) [page:Vector3] representing the lower (x, y, z) boundary of the box.
-		Default is ( + Infinity, + Infinity, + Infinity ).<br>
+		[page:Vector3 min] - (参数可选) [page:Vector3] 表示包围盒的下边界。
+		默认值是( + Infinity, + Infinity, + Infinity )。<br>
 
-		[page:Vector3 max] - (optional) [page:Vector3] representing the lower upper (x, y, z) boundary of the box.
-		Default is ( - Infinity, - Infinity, - Infinity ).<br /><br />
+		[page:Vector3 max] - (参数可选) [page:Vector3] 表示包围盒的上边界。
+		默认值是( - Infinity, - Infinity, - Infinity )。<br /><br />
 
-		Creates a [name] bounded by min and max.
+		创建一个以max和min为边界的包围盒。
 		</p>
 
-		<h2>Properties</h2>
+		<h2>属性(Properties</h2>
 
 		<h3>[property:Boolean isBox3]</h3>
 		<p>
-			Used to check whether this or derived classes are Box3s. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
+			用于检测当前对象或者派生类对象是否是Box3。默认为 *true*。<br /><br />
+			
+			不应该修改这个值,因为内部使用该属性做了优化的任务。
 		</p>
 
 		<h3>[property:Vector3 min]</h3>
 		<p>
-			[page:Vector3] representing the lower (x, y, z) boundary of the box.<br />
-			Default is ( + Infinity, + Infinity, + Infinity ).
+			[page:Vector3] 表示包围盒的下边界。<br />
+			默认值是( - Infinity, - Infinity, - Infinity )。
 		</p>
 
 		<h3>[property:Vector3 max]</h3>
 		<p>
-			[page:Vector3] representing the upper (x, y, z) boundary of the box.<br />
-			Default is ( - Infinity, - Infinity, - Infinity ).
+			[page:Vector3] 包围盒的(x, y, z)上边界。<br />
+			默认值是 ( - Infinity, - Infinity, - Infinity ).
 		</p>
 
 
 
-		<h2>Methods</h2>
+		<h2>方法(Methods</h2>
 
 		<h3>[method:Box3 applyMatrix4]( [param:Matrix4 matrix] )</h3>
 		<p>
-		[page:Matrix4 matrix] - The [page:Matrix4] to apply<br /><br />
-
-		Transforms this Box3 with the supplied matrix.
+		[page:Matrix4 matrix] - 要应用的 [page:Matrix4] <br /><br />
+		
+		使用传入的矩阵变换Box3(包围盒8个顶点都会乘以这个变换矩阵)。
 		</p>
 
 		<h3>[method:Vector3 clampPoint]( [param:Vector3 point], [param:Vector3 target] )</h3>
 		<p>
-		[page:Vector3 point] - [page:Vector3] to clamp. <br>
-		[page:Vector3 target] — the result will be copied into this Vector3.<br /><br />
+		[page:Vector3 point] - 需要做clamp 的坐标 [page:Vector3]。 <br>
+		[page:Vector3 target] — 结果将会被拷贝到这个对象中<br /><br />
 
-		[link:https://en.wikipedia.org/wiki/Clamping_(graphics) Clamps] the [page:Vector3 point] within the bounds of this box.<br />
+		是这个点[page:Vector3 point] [link:https://en.wikipedia.org/wiki/Clamping_(graphics) Clamps](处于范围内) 处于包围盒边界范围内。<br />
 		</p>
 
 		<h3>[method:Box3 clone]()</h3>
-		<p>Returns a new [page:Box3] with the same [page:.min min] and [page:.max max] as this one.</p>
+		<p>返回一个与该包围盒子有相同下边界[page:.min min] 和上边界 [page:.max max]的新包围盒。</p>
 
 		<h3>[method:Boolean containsBox]( [param:Box3 box] )</h3>
 		<p>
-		[page:Box3 box] - [page:Box3 Box3] to test for inclusion.<br /><br />
-
-		Returns true if this box includes the entirety of [page:Box3 box]. If this and [page:Box3 box] are identical, <br>
-		this function also returns true.
+		[page:Box3 box] - 需要检测是否在当前包围盒内的 [page:Box3 Box3]。<br /><br />
+		传入的 [page:Box3 box] 整体都被包含在该对象中则返回true。如果他们两个包围盒是一样的也返回true。
 		</p>
 
 		<h3>[method:Boolean containsPoint]( [param:Vector3 point] )</h3>
 		<p>
-		[page:Vector3 point] - [page:Vector3] to check for inclusion.<br /><br />
+		[page:Vector3 point] - 需要检测是否在当前包围盒内的 [page:Vector3]。<br /><br />
 
-		Returns true if the specified [page:Vector3 point] lies within or on the boundaries of this box.
+		当传入的值 [page:Vector3 point] 在包围盒内部或者边界都会返回true。
 		</p>
 
 		<h3>[method:Box3 copy]( [param:Box3 box] )</h3>
 		<p>
-		[page:Box3 box]  - [page:Box3] to copy.<br /><br />
+		[page:Box3 box]  - 需要复制的包围盒 [page:Box3] 。<br /><br />
 
-		Copies the [page:.min min] and [page:.max max] from [page:Box3 box] to this box.
+		将传入的值 [page:Box3 box] 中的 [page:.min min] 和 [page:.max max] 拷贝到当前对象。
 		</p>
 
 		<h3>[method:Float distanceToPoint]( [param:Vector3 point] )</h3>
 		<p>
-		[page:Vector3 point] - [page:Vector3] to measure distance to.<br /><br />
+		[page:Vector3 point] - 用来测试距离的点 [page:Vector3]。<br /><br />
 
-		Returns the distance from any edge of this box to the specified point.
-		If the [page:Vector3 point] lies inside of this box, the distance will be 0.
+		返回这个box的任何边缘到指定点的距离。如果这个点位于这个盒子里,距离将是0。
 		</p>
 
 
 		<h3>[method:Boolean equals]( [param:Box3 box] )</h3>
 		<p>
-		[page:Box3 box] - Box to compare with this one.<br /><br />
+		[page:Box3 box] - 将box与当前对象做比较。<br /><br />
 
-		Returns true if this box and [page:Box3 box] share the same lower and upper bounds.
+		返回true如果传入的值与当前的对象 [page:Box3 box] 有相同的上下边界。
 		</p>
 
 		<h3>[method:Box3 expandByObject]( [param:Object3D object] )</h3>
 		<p>
-		[page:Object3D object] - [page:Object3D] to expand the box by.<br /><br />
+		[page:Object3D object] - 包裹在包围盒中的3d对象 [page:Object3D]。<br /><br />
 
-		Expands the boundaries of this box to include [page:Object3D object] and its children,
-		accounting for the object's, and children's, world transforms.
+		扩展此包围盒的边界,使得对象及其子对象在包围盒内,包括对象和子对象的世界坐标的变换。
 
 		</p>
 
 		<h3>[method:Box3 expandByPoint]( [param:Vector3 point] )</h3>
 		<p>
-		[page:Vector3 point] - [page:Vector3] that should be included in the box.<br /><br />
+		[page:Vector3 point] - 需要在包围盒中的点 [page:Vector3]。<br /><br />
 
-		Expands the boundaries of this box to include [page:Vector3 point].
+		扩展这个包围盒的边界使得该点([page:Vector3 point])在包围盒内。
 		</p>
 
 		<h3>[method:Box3 expandByScalar]( [param:float scalar] )</h3>
 		<p>
-		[page:float scalar] - Distance to expand the box by.<br /><br />
+		[page:float scalar] - 扩展包围盒的比例。<br /><br />
 
-		Expands each dimension of the box by [page:float scalar]. If negative, the dimensions of the box
-		will be contracted.
+		按 [page:float scalar] 的值展开盒子的每个维度。如果是负数,盒子的尺寸会缩小。
 		</p>
 
 		<h3>[method:Box3 expandByVector]( [param:Vector3 vector] )</h3>
 		<p>
-		[page:Vector3 vector] - [page:Vector3] to expand the box by.<br /><br />
+		[page:Vector3 vector] - 扩展包围盒的数值 [page:Vector3] 。<br /><br />
+
+		按 [page:Vector3 vector] 每个纬度的值展开这个箱子。
+		这个盒子的宽度将由 [page:Vector3 vector] 的x分量在两个方向上展开。
+		这个盒子的高度将由 [page:Vector3 vector] 两个方向上的y分量展开。
+		这个盒子的深度将由 [page:Vector3 vector] z分量在两个方向上展开。
 
-		Expands this box equilaterally by [page:Vector3 vector]. The width of this box will be
-		expanded by the x component of [page:Vector3 vector] in both directions. The height of
-		this box will be expanded by the y component of [page:Vector3 vector] in both directions.
-		The depth of this box will be expanded by the z component of *vector* in both directions.
 		</p>
 
 		<h3>[method:Sphere getBoundingSphere]( [param:Sphere target] )</h3>
 		<p>
-		[page:Sphere target] — the result will be copied into this Sphere.<br /><br />
+		[page:Sphere target] — 如果指定了target ,结果将会被拷贝到target。<br /><br />
 
-		Gets a [page:Sphere] that bounds the box.
+		获取一个包围球 [page:Sphere]。
 		</p>
 
 		<h3>[method:Vector3 getCenter]( [param:Vector3 target] )</h3>
 		<p>
-		[page:Vector3 target] — the result will be copied into this Vector3.<br /><br />
+		[page:Vector3 target] — 如果指定了target ,结果将会被拷贝到target。<br /><br />
 
-		Returns the center point of the box as a [page:Vector3].
+		返回包围盒的中心点 [page:Vector3]。
 		</p>
 
 		<h3>[method:Vector3 getParameter]( [param:Vector3 point], [param:Vector3 target] ) </h3>
 		<p>
 		[page:Vector3 point] - [page:Vector3].<br/>
-		[page:Vector3 target] — the result will be copied into this Vector3.<br /><br />
+		[page:Vector3 target] — 如果指定了target ,结果将会被拷贝到target。<br /><br />
 
-		Returns a point as a proportion of this box's width and height.
+		返回一个点为这个盒子的宽度和高度的比例。
 		</p>
 
 		<h3>[method:Vector3 getSize]( [param:Vector3 target] )</h3>
 		<p>
-		[page:Vector3 target] — the result will be copied into this Vector3.<br /><br />
+		[page:Vector3 target] — 如果指定了target ,结果将会被拷贝到target。<br /><br />
 
-		Returns the width, height and depth of this box.
+		返回包围盒的宽度,高度,和深度。
 		</p>
 
 		<h3>[method:Box3 intersect]( [param:Box3 box] )</h3>
 		<p>
-		[page:Box3 box] - Box to intersect with.<br /><br />
+		[page:Box3 box] - 与包围盒的交集<br /><br />
 
-		Returns the intersection of this and [page:Box3 box], setting the upper bound of this box to the lesser
-		of the two boxes' upper bounds and the lower bound of this box to the greater of the two boxes'
-		lower bounds.
+		返回此包围盒和 [page:Box3 box] 的交集,将此框的上界设置为两个框的max的较小部分,
+		将此包围盒的下界设置为两个包围盒的min的较大部分。
 		</p>
 
 		<h3>[method:Boolean intersectsBox]( [param:Box3 box] )</h3>
 		<p>
-		[page:Box3 box] - Box to check for intersection against.<br /><br />
+		[page:Box3 box] - 用来检测是否相交的包围盒<br /><br />
 
-		Determines whether or not this box intersects [page:Box3 box].
+		确定当前包围盒是否与传入包围盒[page:Box3 box] 相交。
 		</p>
 
 		<h3>[method:Boolean intersectsPlane]( [param:Plane plane] )</h3>
 		<p>
-		[page:Plane plane] - [page:Plane] to check for intersection against.<br /><br />
+		[page:Plane plane] - 用来检测是否相交的 [page:Plane]。<br /><br />
 
-		Determines whether or not this box intersects [page:Plane plane].
+		确定当前包围盒是否与平面 [page:Plane plane] 相交。
 		</p>
 
 		<h3>[method:Boolean intersectsSphere]( [param:Sphere sphere] )</h3>
 		<p>
-		[page:Sphere sphere] - [page:Sphere] to check for intersection against.<br /><br />
+		[page:Sphere sphere] - 用来检测是否相交的球体 [page:Sphere]。<br /><br />
 
-		Determines whether or not this box intersects [page:Sphere sphere].
+		确定当前包围盒是否与球体 [page:Sphere sphere] 相交。
 		</p>
 
 		<h3>[method:Boolean intersectsTriangle]( [param:Triangle triangle] )</h3>
 		<p>
-		[page:Triangle triangle] - [page:Triangle] to check for intersection against.<br /><br />
+		[page:Triangle triangle] - 用来检测是否相交的三角形 [page:Triangle]。<br /><br />
 
-		Determines whether or not this box intersects [page:Triangle triangle].
+		确定当前包围盒是否与三角形 [page:Triangle triangle] 相交。
 		</p>
 
 		<h3>[method:Boolean isEmpty]()</h3>
 		<p>
-		Returns true if this box includes zero points within its bounds.<br>
-		Note that a box with equal lower and upper bounds still includes one point,
-		the one both bounds share.
+		如果这个盒子包含0个顶点,则返回true。<br>
+		注意,下界和上界相等的方框仍然包含一个点,即两个边界共享的那个点。
 		</p>
 
 		<h3>[method:Box3 makeEmpty]()</h3>
-		<p>Makes this box empty.</p>
+		<p>清空包围盒。</p>
 
 		<h3>[method:Box3 set]( [param:Vector3 min], [param:Vector3 max] )</h3>
 		<p>
-		[page:Vector3 min] - [page:Vector3] representing the lower (x, y, z) boundary of the box.<br />
-		[page:Vector3 max] - [page:Vector3] representing the lower upper (x, y, z) boundary of the box.<br /><br />
+		[page:Vector3 min] - [page:Vector3] 表示下边界每个纬度(x,y,z)的值。<br />
+		[page:Vector3 max] - [page:Vector3] 表示上边界每个纬度(x,y,z)的值。<br /><br />
 
-		Sets the lower and upper (x, y, z) boundaries of this box.
+		设置包围盒上下边界每个纬度(x,y,z)的值。 
 		</p>
 
 		<h3>[method:Box3 setFromArray]( [param:Array array] ) [param:Box3 this]</h3>
 		<p>
-		array -- An array of position data that the resulting box will envelop.<br /><br />
+		array -- 数组当中的所有的点都将被包围盒包裹。<br /><br />
 
-		Sets the upper and lower bounds of this box to include all of the data in *array*.
+		设置包围盒的上下边界使得数组 *array* 中的所有点的点都被包含在内。
 		</p>
 
 		<h3>[method:Box3 setFromBufferAttribute]( [param:BufferAttribute attribute] ) [param:Box3 this]</h3>
 		<p>
-		[page:BufferAttribute attribute] - A buffer attribute of position data that the resulting box will envelop.<br /><br />
+		[page:BufferAttribute attribute] - 位置的缓冲数据,包含在返回的包围盒内。<br /><br />
 
-		Sets the upper and lower bounds of this box to include all of the data in [page:BufferAttribute attribute].
+		设置此包围盒的上边界和下边界,以包含 [page:BufferAttribute attribute] 中的所有位置数据。
 		</p>
 
-		<h3>[method:Box3 setFromCenterAndSize]( [param:Vector3 center], [param:Vector3 size] )</h3>
+<!--	<h3>[method:Box3 setFromCenterAndSize]( [param:Vector3 center], [param:Vector3 size] )</h3>
 		<p>
-		[page:Vector3 center] - Desired center position of the box ([page:Vector3]). <br>
-		[page:Vector3 size] - Desired x, y and z dimensions of the box ([page:Vector3]).<br /><br />
+		[page:Vector3 center] - 包围盒的中心位置 ([page:Vector3]). <br>
+		[page:Vector3 size] - 需要设置包围盒x,y,z的分量 ([page:Vector3]).<br /><br />
 
-		Centers this box on [page:Vector3 center] and sets this box's width and height to the values specified
-		in [page:Vector3 size].
-		</p>
+		将包围盒的中心点设为 [page:Vector3 center] ,然后将包围盒的宽高设为指定的 [page:Vector3 size]。
+		</p>-->	
 
 		<h3>[method:Box3 setFromCenterAndSize]( [param:Vector3 center], [param:Vector3 size] ) [param:Box3 this]</h3>
 		<p>
-		[page:Vector3 center], - Desired center position of the box. <br>
-		[page:Vector3 size] - Desired x, y and z dimensions of the box.<br /><br />
+		[page:Vector3 center], - 包围盒所要设置的中心位置。 <br>
+		[page:Vector3 size] - 包围盒所要设置的x、y和z尺寸(宽/高/长)。<br /><br />
 
-		Centers this box on [page:Vector3 center] and sets this box's width, height and depth to the values specified <br>
-		in [page:Vector3 size]
+		将当前包围盒的中心点设置为 [page:Vector3 center] ,并将此包围盒的宽度,高度和深度设置为大小指定 [page:Vector3 size] 的值。
 		</p>
 
 		<h3>[method:Box3 setFromObject]( [param:Object3D object] )</h3>
 		<p>
-		[page:Object3D object] - [page:Object3D] to compute the bounding box of.<br /><br />
+		[page:Object3D object] - 用来计算包围盒的3D对象 [page:Object3D]。<br /><br />
 
-		Computes the world-axis-aligned bounding box of an [page:Object3D] (including its children),
-		accounting for the object's, and children's, world transforms.
+		计算和世界轴对齐的一个对象 [page:Object3D] (含其子对象)的包围盒,计算对象和子对象的世界坐标变换。
 
 		</p>
 
 		<h3>[method:Box3 setFromPoints]( [param:Array points] )</h3>
 		<p>
-		[page:Array points] - Array of [page:Vector3 Vector3s] that the resulting box will contain.<br /><br />
+		[page:Array points] - 计算出的包围盒将包含数组中所有的点 [page:Vector3 Vector3s]<br /><br />
 
-		Sets the upper and lower bounds of this box to include all of the points in [page:Array points].
+		设置此包围盒的上边界和下边界,以包含数组 [page:Array points] 中的所有点。
 		</p>
 
 		<h3>[method:Box3 translate]( [param:Vector3 offset] )</h3>
 		<p>
-		[page:Vector3 offset] - Direction and distance of offset.<br /><br />
+		[page:Vector3 offset] - 偏移方向和距离。<br /><br />
 
-		Adds [page:Vector3 offset] to both the upper and lower bounds of this box, effectively moving this box
-		[page:Vector3 offset] units in 3D space.
+		给包围盒的上下边界添加偏移量 [page:Vector3 offset],这样可以有效的在3D空间中移动包围盒。
+		偏移量为 [page:Vector3 offset] 大小。
 		</p>
 
 		<h3>[method:Box3 union]( [param:Box3 box] )</h3>
 		<p>
-		[page:Box3 box] - Box that will be unioned with this box.<br /><br />
+		[page:Box3 box] - 要结合在一起的包围盒。<br /><br />
 
-		Unions this box with [page:Box3 box], setting the upper bound of this box to the greater of the
-		two boxes' upper bounds and the lower bound of this box to the lesser of the two boxes'
-		lower bounds.
+		在 [page:Box3 box] 参数的上边界和已有box对象的上边界之间取较大者,而对两者的下边界取较小者,这样获得一个新的较大的联合盒子。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 96 - 103
docs/api/zh/math/Color.html

@@ -8,15 +8,15 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>颜色([name]</h1>
 
 		<p class="desc">
-		Class representing a color.
+		表示一个颜色。
 		</p>
 
 
-		<h2>Examples</h2>
-		A Color can be initialised in any of the following ways:
+		<h2>示例(Examples)</h2>
+		颜色可以用以下任意一种方式初始化。
 		<code>
 //empty constructor - will default white
 var color = new THREE.Color();
@@ -41,25 +41,25 @@ var color = new THREE.Color( 1, 0, 0 );
 
 
 
-		<h2>Constructor</h2>
+		<h2>构造器(Constructor</h2>
 
 
 		<h3>[name]( [param:Color_Hex_or_String r], [param:Float g], [param:Float b] )</h3>
 		<p>
-		[page:Color_Hex_or_String r] - (optional) If arguments [page:Float g] and [page:Float b] are defined, the red component of the color.
-		If they are not defined, it can be a [link:https://en.wikipedia.org/wiki/Web_colors#Hex_triplet hexadecimal triplet] (recommended), a CSS-style string, or another Color instance.<br />
-		[page:Float g] - (optional) If it is defined, the green component of the color.<br />
-		[page:Float b] - (optional) If it is defined, the blue component of the color.<br /><br />
+		[page:Color_Hex_or_String r] - (可选参数)  如果参数g和b被定义,则r表示颜色中的红色分量。
+		如果未被定义,r可以是一个十六进制 [link:https://en.wikipedia.org/wiki/Web_colors#Hex_triplet hexadecimal triplet] 颜色值或CSS样式的字符串或一个Color实例。<br />
+		[page:Float g] - (可选参数) 如果被定义,表示颜色中的绿色分量。<br />
+		[page:Float b] - (可选参数) 如果被定义,表示颜色中的蓝色分量。<br /><br />
 
-		Note that standard method of specifying color in three.js is with a [link:https://en.wikipedia.org/wiki/Web_colors#Hex_triplet hexadecimal triplet], and that method is used
-		throughout the rest of the documentation.<br /><br />
+		注意使用十六进制 [link:https://en.wikipedia.org/wiki/Web_colors#Hex_triplet hexadecimal triplet] 定义一个颜色在three.js中是标准的方法,而且其余
+		文档也将会使用这个方法。<br /><br />
 
-		When all arguments are defined then [page:Color_Hex_or_String r] is the red component, [page:Float g] is the green component and [page:Float b] is the blue component of the color.<br />
-		When only [page:Color_Hex_or_String r] is defined:<br />
+		当所有参数被定义时,r是红色分量,g是绿色分量,b是蓝色分量。<br />
+		当只有 [page:Color_Hex_or_String r] 被定义时:<br />
 		<ul>
-			<li>It can be a [link:https://en.wikipedia.org/wiki/Web_colors#Hex_triplet hexadecimal triplet] representing the color (recommended).</li>
-			<li>It can be an another Color instance.</li>
-			<li>It can be a CSS-style string. For example:
+			<li>它可用一个十六进制 [link:https://en.wikipedia.org/wiki/Web_colors#Hex_triplet hexadecimal triplet] 值表示颜色(推荐)。</li>
+			<li>它可以是一个另一个颜色实例。</li>
+			<li>它可以是另外一个CSS样式。例如:
 				<ul>
 					<li>'rgb(250, 0,0)'</li>
 					<li>'rgb(100%,0%,0%)'</li>
@@ -73,28 +73,28 @@ var color = new THREE.Color( 1, 0, 0 );
 		</ul>
 		</p>
 
-		<h2>Properties</h2>
+		<h2>属性(Properties</h2>
 
 		<h3>[property:Boolean isColor]</h3>
 		<p>
-			Used to check whether this or derived classes are Colors. Default is *true*.<br /><br />
+			用来检测此类或者派生类是否为颜色。默认值是 *true*。<br /><br />
 
-			You should not change this, as it used internally for optimisation.
+			不应该去改变这个值,因为它在内部用于优化。
 		</p>
 
 		<h3>[property:Float r]</h3>
 		<p>
-		Red channel value between 0 and 1. Default is 1.
+			红色通道的值在0到1之间。默认值为1。
 		</p>
 
 		<h3>[property:Float g]</h3>
 		<p>
-		Green channel value between 0 and 1. Default is 1.
+			绿色通道的值在0到1之间。默认值为1。
 		</p>
 
 		<h3>[property:Float b]</h3>
 		<p>
-		Blue channel value between 0 and 1. Default is 1.
+			蓝色通道的值在0到1之间。默认值为1。
 		</p>
 
 
@@ -102,102 +102,99 @@ var color = new THREE.Color( 1, 0, 0 );
 
 
 
-		<h2>Methods</h2>
+		<h2>方法(Methods</h2>
 
 		<h3>[method:Color add]( [param:Color color] ) </h3>
-		<p>Adds the RGB values of [page:Color color] to the RGB values of this color.</p>
+		<p>将给定颜色的RGB值添加到此颜色的RGB值。</p>
 
 		<h3>[method:Color addColors]( [param:Color color1], [param:Color color2] ) </h3>
-		<p>Sets this color's RGB values to the sum of the RGB values of [page:Color color1] and [page:Color color2].</p>
+		<p>将此颜色的RGB值设置为 [page:Color color1] 和 [page:Color color2] 的RGB值之和。</p>
 
 		<h3>[method:Color addScalar]( [param:Number s] ) </h3>
-		<p>Adds [page:Number s] to the RGB values of this color.</p>
+		<p>给现有的RGB值都加上 [page:Number s] 。</p>
 
 		<h3>[method:Color clone]() </h3>
-		<p>Returns a new Color with the same [page:.r r], [page:.g g] and [page:.b b] values as this one.</p>
+		<p>返回一个与当前颜色的 [page:.r r], [page:.g g] 和 [page:.b b] 相同的颜色。</p>
 
 		<h3>[method:Color copy]( [param:Color color] ) </h3>
 		<p>
-			Copies the [page:.r r], [page:.g g] and [page:.b b] parameters from [page:Color color] in to this color.
+			从 [page:Color color] 中拷贝 [page:.r r], [page:.g g] 和 [page:.b b] 值到当前的颜色。
 		</p>
 
 		<h3>[method:Color convertGammaToLinear]( [param:Float gammaFactor] ) </h3>
 		<p>
-		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
-		Converts this color from gamma space to linear space by taking [page:.r r], [page:.g g] and [page:.b b] to the power of [page:Float gammaFactor].
+		[page:Float gammaFactor] - (可选参数). 默认值 *2.0*.<br /><br />
+		通过取颜色 [page:.r r], [page:.g g] and [page:.b b] 的 [page:Float gammaFactor] 次方将颜色从伽马空间转换成线性空间。
 		</p>
 		
 		<h3>[method:Color convertLinearToGamma]( [param:Float gammaFactor] ) </h3>
 		<p>
-		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
-		Converts this color from linear space to gamma space by taking [page:.r r], [page:.g g] and [page:.b b] to the power of 1 / [page:Float gammaFactor].
+		[page:Float gammaFactor] - (可选参数). 默认值 *2.0*.<br /><br />
+		通过取颜色 [page:.r r], [page:.g g] and [page:.b b] 的 1/[page:Float gammaFactor] 次方将颜色从线性空间转换成伽马空间。
 		</p>
 
 		<h3>[method:Color convertLinearToSRGB]() </h3>
 		<p>
-		Converts this color from linear space to sRGB space.
+			将此颜色从线性空间转换成sRGB空间。
 		</p>
 
 		<h3>[method:Color convertSRGBToLinear]() </h3>
 		<p>
-		Converts this color from sRGB space to linear space.
+			将此颜色从sRGB空间转换成线性空间。
 		</p>
 
 		<h3>[method:Color copyGammaToLinear]( [param:Color color], [param:Float gammaFactor] ) </h3>
 		<p>
-		[page:Color color] — Color to copy.<br />
-		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
+		[page:Color color] — 需要拷贝的颜色。<br />
+		[page:Float gammaFactor] - (可选参数). 默认值为 *2.0*.<br /><br />
 
-		Copies the given color into this color, and then converts this color from gamma space to linear space
-		by taking [page:.r r], [page:.g g] and [page:.b b] to the power of [page:Float gammaFactor].
+		将传入的 [param:Color color] 从伽马空间转换到线性空间然后复制给当前颜色。
 		</p>
 
 		<h3>[method:Color copyLinearToGamma]( [param:Color color], [param:Float gammaFactor] ) </h3>
 		<p>
-		[page:Color color] — Color to copy.<br />
-		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
+		[page:Color color] — 需要拷贝的颜色。<br />
+		[page:Float gammaFactor] - (可选参数). 默认值为 *2.0*.<br /><br />
 
-		Copies the given color into this color, and then converts this color from linear space to gamma space
-		by taking [page:.r r], [page:.g g] and [page:.b b] to the power of 1 / [page:Float gammaFactor].
+		将传入的 [param:Color color] 从线性空间转换到伽马空间然后复制给当前颜色。
 		</p>
 
 		<h3>[method:Color copyLinearToSRGB]( [param:Color color]] ) </h3>
 		<p>
-		[page:Color color] — Color to copy.<br />
+		[page:Color color] — 需要拷贝的颜色。<br />
 
-		Copies the given color into this color, and then converts this color from linear space to sRGB space.
+		将传入的 [param:Color color] 拷贝给当前颜色,然后将当前颜色从线性空间转换到sRGB空间。
 		</p>
 
 		<h3>[method:Color copySRGBToLinear]( [param:Color color] ) </h3>
 		<p>
-		[page:Color color] — Color to copy.<br />
+		[page:Color color] — 需要拷贝的颜色。<br />
 
-		Copies the given color into this color, and then converts this color from sRGB space to linear space.
+		将传入的 [param:Color color] 拷贝给当前颜色,然后将当前颜色从sRGB空间转换到线性空间。
 		</p>
 
 		<h3>[method:Boolean equals]( [param:Color color] ) </h3>
-		<p>Compares the RGB values of [page:Color color] with those of this object. Returns true if they are the same, false otherwise.</p>
+		<p>将 [param:Color color] 的RGB值与该对象的RGB值进行比较。如果它们都是相同的,返回true,否则返回false。</p>
 
 		<h3>[method:Color fromArray]( [param:Array array], [param:Integer offset] ) </h3>
 		<p>
-		[page:Array array] - [page:Array] of floats in the form [ [page:Float r], [page:Float g], [page:Float b] ].<br />
-		[page:Integer offset] - An optional offset into the array.<br /><br />
+		[page:Array array] - 格式为 [ [page:Float r], [page:Float g], [page:Float b] ] 的数组 [page:Array]。<br />
+		[page:Integer offset] - 数组中可选偏移量<br /><br />
 
-		Sets this color's components based on an array formatted like [ [page:Float r], [page:Float g], [page:Float b] ].
+		从格式为[ [page:Float r], [page:Float g], [page:Float b] ]的数组数据中来创建Color对象。
 		</p>
 
 		<h3>[method:Integer getHex]()</h3>
-		<p>Returns the hexadecimal value of this color.</p>
+		<p>返回此颜色的十六进制值。</p>
 
 		<h3>[method:String getHexString]()</h3>
-		<p>Returns the hexadecimal value of this color as a string (for example, 'FFFFFF').</p>
+		<p>将此颜色的十六进制值作为字符串返回 (例如, 'FFFFFF')。</p>
 
 		<h3>[method:Object getHSL]( [param:Object target] )</h3>
 		<p>
-			[page:Object target] — the result will be copied into this Object. Adds h, s and l keys to the object (if not already present).<br /><br />
+			[page:Object target] — 结果将复制到这个对象中。向对象添加h、s和l键(如果不存在)。<br /><br />
 
-			Convert this Color's [page:.r r], [page:.g g] and [page:.b b] values to [link:https://en.wikipedia.org/wiki/HSL_and_HSV HSL]
-			format and returns an object of the form:
+			将此颜色的 [page:.r r], [page:.g g] 和 [page:.b b] 值转换为 [link:https://en.wikipedia.org/wiki/HSL_and_HSV HSL]格式,然后返回一个格式如下的对象:
 
 			<code>
 				{ h: 0, s: 0, l: 0 }
@@ -206,117 +203,113 @@ var color = new THREE.Color( 1, 0, 0 );
 		</p>
 
 		<h3>[method:String getStyle]()</h3>
-		<p>Returns the value of this color as a CSS style string. Example: 'rgb(255,0,0)'.</p>
+		<p>以CSS样式字符串的形式返回该颜色的值。例如:“rgb(255,0,0)”。</p>
 
 		<h3>[method:Color lerp]( [param:Color color], [param:Float alpha] ) </h3>
 		<p>
-		[page:Color color] - color to converge on.<br />
-		[page:Float alpha] - interpolation factor in the closed interval [0, 1].<br /><br />
+		[page:Color color] - 用于收敛的颜色。<br />
+		[page:Float alpha] - 介于0到1的数字。<br /><br />
 
-		Linearly interpolates this color's RGB values toward the RGB values of the passed argument.
-		The alpha argument can be thought of as the ratio between the two colors, where 0.0 is
-		this color and 1.0 is the first argument.
+		将该颜色的RGB值线性插值到传入参数的RGB值。alpha参数可以被认为是两种颜色之间的比例值,其中0是当前颜色和1.0是第一个参数的颜色。
 		</p>
 
 		<h3>[method:Color lerpHSL]( [param:Color color], [param:Float alpha] ) </h3>
 		<p>
-		[page:Color color] - color to converge on.<br />
-		[page:Float alpha] - interpolation factor in the closed interval [0, 1].<br /><br />
-
-		Linearly interpolates this color's HSL values toward the HSL values of the passed argument.
-		It differs from the classic [page:.lerp] by not interpolating straight from one color to the other,
-		but instead going through all the hues in between those two colors.
-		The alpha argument can be thought of as the ratio between the two colors, where 0.0 is
-		this color and 1.0 is the first argument.
+		[page:Color color] - 用于收敛的颜色。<br />
+		[page:Float alpha] - 介于0到1的数字。<br /><br />
+
+		将该颜色的HSL值线性插值到传递参数的HSL值。它不同于上诉的[page:lerp]。通过不直接从一种颜色插入到另一种颜色,
+		而是通过插值这两种颜色之间的所有色相(H)、亮度(L)、饱和度(S)。alpha参数可以被认为是两种颜色之间的比例值,
+		其中0是当前颜色和1.0是第一个参数的颜色。
 		</p>
 
 		<h3>[method:Color multiply]( [param:Color color] ) </h3>
-		<p>Multiplies this color's RGB values by the given [page:Color color]'s RGB values.</p>
+		<p>将此颜色的RGB值乘以给定的[page: color color]的RGB值。</p>
 
 		<h3>[method:Color multiplyScalar]( [param:Number s] ) </h3>
-		<p>Multiplies this color's RGB values by [page:Number s].</p>
+		<p>将此颜色的RGB值乘以给定的[page:Number s]的值。</p>
 
 		<h3>[method:Color offsetHSL]( [param:Float h], [param:Float s], [param:Float l] ) </h3>
 		<p>
-			Adds the given [page:Float h], [page:Float s], and [page:Float l] to this color's values.
-			Internally, this converts the color's [page:.r r], [page:.g g] and [page:.b b] values to HSL, adds
-			[page:Float h], [page:Float s], and [page:Float l], and then converts the color back to RGB.
+			将给定的 [page:Float h], [page:Float s], 和 [page:Float l]值加到当前颜色值。
+			内部的机制为:先将该颜色的 [page:.r r], [page:.g g] 和 [page:.b b] 值转换为HSL,然后与传入的[page:Float h], [page:Float s], 和 [page:Float l]
+			相加,最后再将结果转成RGB值。
 		</p>
 
 		<h3>[method:Color set]( [param:Color_Hex_or_String value] ) </h3>
 		<p>
-		[page:Color_Hex_or_String value] - Value to set this color to.<br /><br />
+		[page:Color_Hex_or_String value] - 用于设置该颜色的值。<br /><br />
 
-		See the Constructor above for full details of what [page:Color_Hex_or_String value] can be.
-		Delegates to [page:.copy], [page:.setStyle], or [page:.setHex] depending on input type.
+		有关 [page:Color_Hex_or_String value] 的详细信息,请参阅上面的构造函数。
+		根据输入类型,将会委托给 [page:.copy], [page:.setStyle], 或者 [page:.setHex] 函数处理。
 		</p>
 
 		<h3>[method:Color setHex]( [param:Integer hex] ) </h3>
 		<p>
-		[page:Integer hex] — [link:https://en.wikipedia.org/wiki/Web_colors#Hex_triplet hexadecimal triplet] format.<br /><br />
+		[page:Integer hex] — [link:https://en.wikipedia.org/wiki/Web_colors#Hex_triplet hexadecimal triplet] 格式。<br /><br />
+
+		采用十六进制值设置此颜色。
 
-		Sets this color from a hexadecimal value.
 		</p>
 
 		<h3>[method:Color setHSL]( [param:Float h], [param:Float s], [param:Float l] ) </h3>
 		<p>
-		[page:Float h] — hue value between 0.0 and 1.0 <br />
-		[page:Float s] — saturation value between 0.0 and 1.0 <br />
-		[page:Float l] — lightness value between 0.0 and 1.0<br /><br />
+		[page:Float h] — 色相值处于0到1之间。hue value between 0.0 and 1.0 <br />
+		[page:Float s] — 饱和度值处于0到1之间。<br />
+		[page:Float l] — 亮度值处于0到1之间。<br /><br />
 
-		Sets color from HSL values.
+		采用HLS值设置此颜色。
 		</p>
 
 		<h3>[method:Color setRGB]( [param:Float r], [param:Float g], [param:Float b] ) </h3>
 		<p>
-		[page:Float r] — Red channel value between 0.0 and 1.0.<br />
-		[page:Float g] — Green channel value between 0.0 and 1.0.<br />
-		[page:Float b] — Blue channel value between 0.0 and 1.0.<br /><br />
+		[page:Float r] — 红色通道的值在0到1之间。<br />
+		[page:Float g] — 绿色通道的值在0到1之间。<br />
+		[page:Float b] — 蓝色通道的值在0到1之间。<br /><br />
 
-		Sets this color from RGB values.
+		采用RGB值设置此颜色。
 		</p>
 
 		<h3>[method:Color setScalar]( [param:Float scalar] ) </h3>
 		<p>
-		[page:Float scalar] — a value between 0.0 and 1.0.<br /><br />
+		[page:Float scalar] — 处于0到1之间的值<br /><br />
 
-		Sets all three color components to the value [page:Float scalar].
+		将颜色的RGB值都设为该 [page:Float scalar] 的值。
 		</p>
 
 		<h3>[method:Color setStyle]( [param:String style] ) </h3>
 		<p>
-		[page:String style] — color as a CSS-style string.<br /><br />
+		[page:String style] — 颜色css样式的字符串<br /><br />
 
-		Sets this color from a CSS-style string. For example,
+		采用ccs样式的字符串设置此颜色。例如,
 		"rgb(250, 0,0)",
 		"rgb(100%, 0%, 0%)",
 		"hsl(0, 100%, 50%)",
 		"#ff0000",
-		"#f00", or
-		"red" ( or any [link:https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart X11 color name]
-		- all 140 color names are supported ).<br />
+		"#f00", 或者
+		"red" ( 或者任何 [link:https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart X11 color name]
+		- 所有140种颜色名称都支持 ).<br />
 
-		Translucent colors such as "rgba(255, 0, 0, 0.5)" and "hsla(0, 100%, 50%, 0.5)" are also accepted,
-		but the alpha-channel coordinate will be discarded.<br /><br />
+		半透明颜色例如 "rgba(255, 0, 0, 0.5)" and "hsla(0, 100%, 50%, 0.5)" 也能支持,
+		但是alpha通道的值将会被丢弃。<br /><br />
 
-		Note that for X11 color names, multiple words such as Dark Orange become the string 'darkorange' (all lowercase).
+		注意,对于X11颜色名称,多个单词(如暗橙色)变成字符串“darkorange”(全部是小写字母)。
 		</p>
 
 		<h3>[method:Color sub]( [param:Color color] ) </h3>
 		<p>
-		Subtracts the RGB components of the given color from the RGB components of this color.
-		If this results in a negative component, that component is set to zero.
+		从该颜色的RGB分量中减去传入颜色的RGB分量。如果分量结果是负,则该分量为零。
 		</p>
 
 		<h3>[method:Array toArray]( [param:Array array], [param:Integer offset] ) </h3>
 		<p>
-		[page:Array array] - An optional array to store the color to. <br />
-		[page:Integer offset] - An optional offset into the array.<br /><br />
+		[page:Array array] -  存储颜色的可选数组 <br />
+		[page:Integer offset] - 数组的可选偏移量<br /><br />
 
-		Returns an array of the form [ r, g, b ].
+		返回一个格式为[ r, g, b ] 数组。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 17 - 19
docs/api/zh/math/Cylindrical.html

@@ -8,26 +8,25 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>圆柱体[name]</h1>
 
 		<p class="desc">
 			A point's [link:https://en.wikipedia.org/wiki/Cylindrical_coordinate_system cylindrical coordinates].
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器(Constructor</h2>
 
 		<h3>[name]( [param:Float radius], [param:Float theta], [param:Float y] )</h3>
 		<p>
-		[page:Float radius] - distance from the origin to a point in the x-z plane.
-		Default is *1.0*.<br />
-		[page:Float theta] - counterclockwise angle in the x-z plane measured in radians
-		from the positive z-axis. Default is *0*.<br />
-		[page:Float y] - height above the x-z plane. Default is *0*.
+		[page:Float radius] - 从原点到x-z平面上一点的距离
+		默认值为 *1.0*.<br />
+		[page:Float theta] - 在x-z平面内的逆时针角度,以z轴正方向的计算弧度。默认值为0。<br />
+		[page:Float y] - x-z平面以上的高度 默认值为 *0*.
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性(Properties</h2>
 
 		<h3>[property:Float radius]</h3>
 
@@ -40,33 +39,32 @@
 
 		<h3>[method:Cylindrical clone]()</h3>
 		<p>
-		Returns a new cylindrical with the same [page:.radius radius], [page:.theta theta]
-		and [page:.y y] properties as this one.
+			返回一个与当前拥有相同 [page:.radius radius], [page:.theta theta] 和 [page:.y y] 属性的圆柱体。
 		</p>
 
 		<h3>[method:Cylindrical copy]( [param:Cylindrical other] )</h3>
 		<p>
-			Copies the values of the passed Cylindrical's [page:.radius radius], [page:.theta theta]
-			and [page:.y y] properties to this cylindrical.
+			将传入的圆柱体对象的 [page:.radius radius], [page:.theta theta] 和 [page:.y y] 属性赋给当前对象。
 		</p>
 
 		<h3>[method:Cylindrical set]( [param:Float radius], [param:Float theta], [param:Float y] )</h3>
-		<p>Sets values of this cylindrical's [page:.radius radius], [page:.theta theta]
-		and [page:.y y] properties.</p>
+		<p>设置该对象的 [page:.radius radius], [page:.theta theta]
+		和 [page:.y y] 属性。</p>
 
 		<h3>[method:Cylindrical setFromVector3]( [param:Vector3 vec3] )</h3>
 		<p>
-			Sets values of this cylindrical's [page:.radius radius], [page:.theta theta]
-			and [page:.y y] properties from the [page:Vector3 Vector3].
+			从 [page:Vector3 Vector3] 中取x,y,z,并调用setFromCartesianCoords来设置圆柱体的
+			[page:.radius radius]、[page:.theta theta] 和 [page:.y y] 的属性值。
+
 		</p>
 
 		<h3>[method:Cylindrical setFromCartesianCoords]( [param:Float x], [param:Float y], [param:Float z] )</h3>
 		<p>
-			Sets values of this cylindrical's [page:.radius radius], [page:.theta theta]
-			and [page:.y y] properties from Cartesian coordinates.
+			使用笛卡尔坐标来设置该圆柱体的 [page:.radius radius], [page:.theta theta]
+			and [page:.y y] 属性值。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 64 - 75
docs/api/zh/math/Euler.html

@@ -11,13 +11,11 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			A class representing [link:http://en.wikipedia.org/wiki/Euler_angles Euler Angles].<br /><br />
-
-			Euler angles describe a rotational transformation by rotating an object on its various
-			axes in specified amounts per axis, and a specified axis order.
+			表示 [link:http://en.wikipedia.org/wiki/Euler_angles Euler] 的类。<br /><br />
+			欧拉角描述一个旋转变换,通过指定轴顺序和其各个轴向上的指定旋转角度来旋转一个物体。
 		</p>
 
-		<h2>Example</h2>
+		<h2>示例(Example</h2>
 
 		<code>var a = new THREE.Euler( 0, 1, 1.57, 'XYZ' );
 		var b = new THREE.Vector3( 1, 0, 1 );
@@ -25,167 +23,158 @@
 		</code>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器(Constructor</h2>
 
 
 		<h3>[name]( [param:Float x], [param:Float y], [param:Float z], [param:String order] )</h3>
 		<p>
-		[page:Float x] - (optional) the angle of the x axis in radians. Default is *0*.<br />
-		[page:Float y] - (optional) the angle of the y axis in radians. Default is *0*.<br />
-		[page:Float z] - (optional) the angle of the z axis in radians. Default is *0*.<br />
-		[page:String order] - (optional) a string representing the order that the rotations are applied,
-		defaults to 'XYZ' (must be upper case).<br /><br />
+		[page:Float x] - (optional) 用弧度表示x轴旋转量。 默认值是 *0*。<br />
+		[page:Float y] - (optional) 用弧度表示y轴旋转量。 默认值是 *0*。<br />
+		[page:Float z] - (optional) 用弧度表示z轴旋转量。 默认值是 *0*。<br />
+		[page:String order] - (optional) 表示旋转顺序的字符串,默认为'XYZ'(必须是大写)。<br /><br />
 
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性(Properties</h2>
 
 		<h3>[property:Boolean isEuler]</h3>
 		<p>
-			Used to check whether this or derived classes are Eulers. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
+			用于判定此对象或者此类的派生对象是否是欧拉角。默认值为 *true*。<br /><br />
+			
+			不应该改变该值,因为它在内部用于优化。
 		</p>
 
 		<h3>[property:String order]</h3>
 		<p>
-			The order in which to apply rotations. Default is 'XYZ', which means that the object will first be
-			rotated around its X axis, then its Y axis and finally its Z axis. Other possibilities are:
-			'YZX', 'ZXY', 'XZY', 'YXZ' and 'ZYX'. These must be in upper case.<br /><br />
+			order值应用于旋转顺序。默认值为 'XYZ',这意味着对象将首先是
+			绕X轴旋转,然后是Y轴,最后是Z轴。其他可能性包括:
+			'YZX', 'ZXY', 'XZY', 'YXZ'和'ZYX'。这些必须是大写字母。<br /><br />
+			Three.js 使用<em>intrinsic</em> Tait-Bryan angles(Yaw、Pitch、Roll)。
+			这意味着旋转是在<em>本地</em>坐标系下进行的。也就是说,对于“XYZ”订单,首先是围绕local-X轴旋转(与world- x轴相同),
+			然后是local-Y(现在可能与world y轴不同),然后是local-Z(可能与world z轴不同)。<br /><br />
 
-			Three.js uses <em>intrinsic</em> Tait-Bryan angles. This means that rotations are performed with respect
-			to the <em>local</em> coordinate system. That is, for order 'XYZ', the rotation is first around the local-X
-			axis (which is the same as the world-X axis), then around local-Y (which may now be different from the
-			world Y-axis), then local-Z (which may be different from the world Z-axis).<br /><br />
-
-			If the order is changed, [page:.onChangeCallback onChangeCallback] will be called.
+			如果order值被改变,[page:.onChangeCallback onChangeCallback] 会被调用。
 		</p>
 
 		<h3>[property:Float x]</h3>
 		<p>
-			The current value of the x component.<br /><br />
+			当前x分量的值。<br /><br />
 
-			If this is changed, [page:.onChangeCallback onChangeCallback] will be called.
+			如果这个值发生变化,[page:.onChangeCallback onChangeCallback] 会被调用。
 		</p>
 
 		<h3>[property:Float y]</h3>
 		<p>
-			The current value of the y component.<br /><br />
+			当前y分量的值。<br /><br />
 
-			If this is changed, [page:.onChangeCallback onChangeCallback] will be called.
+			如果这个值发生变化,[page:.onChangeCallback onChangeCallback] 会被调用。
 		</p>
 
 		<h3>[property:Float z]</h3>
 		<p>
-			The current value of the z component.<br /><br />
+			当前z分量的值。<br /><br />
 
-			If this is changed, [page:.onChangeCallback onChangeCallback] will be called.
+			如果这个值发生变化,[page:.onChangeCallback onChangeCallback] 会被调用。
 		</p>
 
-		<h2>Methods</h2>
+		<h2>方法(Methods</h2>
 
 		<h3>[method:Euler copy]( [param:Euler euler] )</h3>
-		<p>Copies value of [page:Euler euler] to this euler.</p>
+		<p>将 [page:Euler euler] 的属性拷贝到当前对象。</p>
 
 		<h3>[method:Euler clone]()</h3>
-		<p>Returns a new Euler with the same parameters as this one.</p>
+		<p>返回一个与当前参数相同的新欧拉角。</p>
 
 		<h3>[method:Boolean equals]( [param:Euler euler] )</h3>
-		<p>Checks for strict equality of this euler and [page:Euler euler].</p>
+		<p>检查 [page:Euler euler] 是否与当前对象相同。</p>
 
 		<h3>[method:Euler fromArray]( [param:Array array] )</h3>
 		<p>
-		[page:Array array] of length 3 or 4. The optional 4th argument corresponds to the [page:.order order].<br /><br />
-
-		Assigns this euler's [page:.x x] angle to array[0]. <br />
-		Assigns this euler's [page:.y y] angle to array[1]. <br />
-		Assigns this euler's [page:.z z] angle to array[2]. <br />
-		Optionally assigns this euler's [page:.order order] to array[3].
+		长度为3或4的一个 [page:Array array] 。array[3] 是一个可选的 [page:.order order] 参数。<br /><br />
+		
+		将欧拉角的x分量设置为 array[0]。 <br />
+		将欧拉角的x分量设置为 array[1]。 <br />
+		将欧拉角的x分量设置为 array[2]。 <br />
+		将array[3]设置给欧拉角的 [page:.order order] 。可选。
 		</p>
 
 		<h3>[method:Euler onChange]( [param:Function onChangeCallback] )</h3>
 		<p>
-			[page:Function onChangeCallback] - set the value of the onChangeCallback() function.
+			[page:Function onChangeCallback] - 为 onChangeCallback() 函数赋值。
 		</p>
 
 		<h3>[method:Euler onChangeCallback](  )</h3>
 		<p>
-			By default this is an empty function, however it can be set via [page:.onChange onChange]().<br />
-			It gets called after changing the [page:.x x], [page:.y y], [page:.z z] or [page:.order order] properties,
-			and also after calling most setter functions (see those for details).
+			默认情况下,这个函数为空,但是它可以通过[page:.onChange onChange]()来设置。<br />
+			在更改 [page:.x x], [page:.y y], [page:.z z] 或 [page:.order order] 属性之后调用它,
+			在调用大多数setter函数之后也会调用它(详细信息请参阅那些函数)。
 		</p>
 
 		<h3>[method:Euler reorder]( [param:String newOrder] )</h3>
 		<p>
-		Resets the euler angle with a new order by creating a quaternion from this euler angle
-		and then setting this euler angle with the quaternion and the new order. <br /><br />
+		通过这个欧拉角创建一个四元数,然后用这个四元数和新顺序设置这个欧拉角。 <br /><br />
 
-		<em>WARNING</em>: this discards revolution information.
+		<em>警告</em>: 这将弃用旋转信息。
 		</p>
 
 		<h3>[method:Euler set]( [param:Float x], [param:Float y], [param:Float z], [param:String order] )</h3>
 		<p>
-			[page:.x x] - the angle of the x axis in radians.<br />
-			[page:.y y] - the angle of the y axis in radians.<br />
-			[page:.z z] - the angle of the z axis in radians.<br />
-			[page:.order order] - (optional) a string representing the order that the rotations are applied.<br /><br />
+			[page:.x x] - 用弧度表示x轴旋转量。<br />
+			[page:.y y] - 用弧度表示y轴旋转量。<br />
+			[page:.z z] - 用弧度表示z轴旋转量。<br />
+			[page:.order order] - (optional) 表示旋转顺序的字符串。<br /><br />
 
-			Sets the angles of this euler transform and optionally the [page:.order order] and then call [page:.onChangeCallback onChangeCallback]().
+			设置该欧拉变换的角度和旋转顺序 [page:.order order] ,然后调用  [page:.onChangeCallback onChangeCallback]()。
 		</p>
 
 		<h3>[method:Euler setFromRotationMatrix]( [param:Matrix4 m], [param:String order], [param:Boolean update] )</h3>
 		<p>
-		[page:Matrix4 m] - a [page:Matrix4] of which the upper 3x3 of matrix is a pure
-		[link:https://en.wikipedia.org/wiki/Rotation_matrix rotation matrix] (i.e. unscaled).<br />
-		[page:.order order] - (optional) a string representing the order that the rotations are applied.<br />
-		[page:Boolean update] - (optional) whether to call [page:.onChangeCallback onChangeCallback]() after applying
-		the matrix.<br /><br />
+		[page:Matrix4 m] - [page:Matrix4] 矩阵上面的3x3部分是一个纯旋转矩阵[link:https://en.wikipedia.org/wiki/Rotation_matrix rotation matrix]
+		(也就是不发生缩放)<br />
+		[page:.order order] - (可选参数) 表示旋转顺序的字符串。<br />
+		[page:Boolean update] - (可选参数) 表示设置完变换矩阵后是否调用 [page:.onChangeCallback onChangeCallback]。<br /><br />
 
-		Sets the angles of this euler transform from a pure rotation matrix based on the orientation
-		specified by order.
+		使用基于 [page:.order order] 顺序的纯旋转矩阵来设置当前欧拉角。
 		</p>
 
 		<h3>[method:Euler setFromQuaternion]( [param:Quaternion q], [param:String order], [param:Boolean update] )</h3>
 		<p>
-		[page:Quaternion q] - a normalized quaternion.<br />
-		[page:.order order] - (optional) a string representing the order that the rotations are applied.<br />
-		[page:Boolean update] - (optional) whether to call [page:.onChangeCallback onChangeCallback]() after applying
-		the matrix.<br /><br />
+		[page:Quaternion q] - 归一化的四元数。<br />
+		[page:.order order] - (可选参数) 表示旋转顺序的字符串。<br />
+		[page:Boolean update] - (可选参数) 表示设置完变换矩阵后是否调用 [page:.onChangeCallback onChangeCallback]。<br /><br />
 
-		Sets the angles of this euler transform from a normalized quaternion based on the orientation
-		specified by [page:.order order].
+		根据 [page:.order order] 指定的方向,使用归一化四元数设置这个欧拉变换的角度。
 		</p>
 
 
 		<h3>[method:Euler setFromVector3]( [param:Vector3 vector], [param:String order] )</h3>
 		<p>
 		[page:Vector3 vector] - [page:Vector3].<br />
-		[page:.order order] - (optional) a string representing the order that the rotations are applied.<br /><br />
+		[page:.order order] - (可选参数) 表示旋转顺序的字符串。<br /><br />
 
-		Set the [page:.x x], [page:.y y] and [page:.z z], and optionally update the [page:.order order]. [page:.onChangeCallback onChangeCallback]()
-		is called after these changes are made.
+		设置 [page:.x x], [page:.y y] and [page:.z z] 并且选择性更新 [page:.order order]。
+		更改完成之后调用 [page:.onChangeCallback onChangeCallback]()。
 		</p>
 
 
 		<h3>[method:Array toArray]( [param:Array array], [param:Integer offset] )</h3>
 		<p>
-		[page:Array array] - (optional) array to store the euler in.<br />
-		[page:Integer offset] (optional) offset in the array.<br />
+		[page:Array array] - (可选参数) 存储欧拉角的数组。<br />
+		[page:Integer offset] (可选参数) 数组的偏移量。<br />
 
-		Returns an array of the form [[page:.x x], [page:.y y], [page:.z z], [page:.order order ]].
+		返回一个数组:[[page:.x x], [page:.y y], [page:.z z], [page:.order order ]]。
 		</p>
 
 		<h3>[method:Vector3 toVector3]( [param:Vector3 optionalResult] )</h3>
 		<p>
-			[page:Vector3 optionalResult] — (optional) If specified, the result will be copied into this Vector,
-			otherwise a new one will be created. <br /><br />
+			[page:Vector3 optionalResult] — (可选参数) 如果指定了该参数结果将会被复制给该参数,否者会创建一个新的 Vector3 <br /><br />
 
-			Returns the Euler's [page:.x x], [page:.y y] and [page:.z z] properties as a [page:Vector3].
+			以 [page:Vector3] 的形式返回欧拉角的 [page:.x x], [page:.y y] 和 [page:.z z]。
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源码(Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 33 - 36
docs/api/zh/math/Frustum.html

@@ -8,99 +8,96 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>视锥体([name]</h1>
 
 		<p class="desc">
-			[link:http://en.wikipedia.org/wiki/Frustum Frustums] are used to determine what is
-			inside the camera's field of view. They help speed up the rendering process - object which lie
-			outside a camera's frustum can safely be excluded from rendering.<br /><br />
+			[link:http://en.wikipedia.org/wiki/Frustum Frustums] 用于确定相机视野内的东西。
+			它有助于加速渲染过程——位于摄像机视锥体外的物体可以安全地排除在渲染之外。<br /><br />
 
-			This class is mainly intended for use internally by a renderer for calculating
-			a [page:Camera camera] or [page:LightShadow.camera shadowCamera]'s frustum.
+			该类主要用于渲染器内部计算 [page:Camera camera] 或 [page:LightShadow.camera shadowCamera]的视锥体。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器(Constructor)</h2>
 
 
 		<h3>[name]([param:Plane p0], [param:Plane p1], [param:Plane p2], [param:Plane p3], [param:Plane p4], [param:Plane p5])</h3>
 		<p>
-			[page:Plane p0] - (optional) defaults to a new [page:Plane].<br />
-			[page:Plane p1] - (optional) defaults to a new [page:Plane].<br />
-			[page:Plane p2] - (optional) defaults to a new [page:Plane].<br />
-			[page:Plane p3] - (optional) defaults to a new [page:Plane].<br />
-			[page:Plane p4] - (optional) defaults to a new [page:Plane].<br />
-			[page:Plane p5] - (optional) defaults to a new [page:Plane].<br /><br />
-
-			Creates a new [name].
+			[page:Plane p0] - (可选参数)  [page:Plane].<br />
+			[page:Plane p1] - (可选参数)  [page:Plane].<br />
+			[page:Plane p2] - (可选参数)  [page:Plane].<br />
+			[page:Plane p3] - (可选参数)  [page:Plane].<br />
+			[page:Plane p4] - (可选参数)  [page:Plane].<br />
+			[page:Plane p5] - (可选参数)  [page:Plane].<br /><br />
+
+			使用6个面来构建一个视锥体。
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性(Properties</h2>
 
 		<h3>[property:Array planes]</h3>
-		<p>Array of 6 [page:Plane planes].</p>
+		<p>包含6个平面 [page:Plane planes] 的数组。</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法(Methods</h2>
 
 		<h3>[method:Frustum clone]()</h3>
-		<p>Return a new Frustum with the same parameters as this one.</p>
+		<p>返回一个与当前对象有相同参数的视锥体。</p>
 
 
 		<h3>[method:Boolean containsPoint]( [param:Vector3 point] )</h3>
 		<p>
 		[page:Vector3 point] - [page:Vector3] to test.<br /><br />
 
-		Checks to see if the frustum contains the [page:Vector3 point].
+		检测该点 [page:Vector3 point] 是否在视锥体内。
 		</p>
 
 		<h3>[method:Frustum copy]( [param:Frustum frustum] )</h3>
 		<p>
-		[page:Frustum frustum] - The frustum to copy<br /><br />
+		[page:Frustum frustum] - 用于拷贝的视锥体。<br /><br />
 
-		Copies the properties of the passed [page:Frustum frustum] into this one.
+		将传入 [page:Frustum frustum] 的属性拷贝到当前对象。
 		</p>
 
 		<h3>[method:Boolean intersectsBox]( [param:Box3 box] )</h3>
 		<p>
-		[page:Box3 box] - [page:Box3] to check for intersection.<br /><br />
-
-	 	Return true if [page:Box3 box] intersects with this frustum.
+		[page:Box3 box] - [page:Box3] 用于检测是否要交的包围盒。<br /><br />
+		
+		返回 true 如果该 [page:Box3 box] 与视锥体相交。
 		</p>
 
 		<h3>[method:Boolean intersectsObject]( [param:Object3D object] )</h3>
 		<p>
-			Checks whether the [page:Object3D object]'s [page:Geometry.boundingSphere bounding sphere] is intersecting the Frustum.<br /><br />
+			检测 [page:Object3D object] 的包围球 [page:Geometry.boundingSphere bounding sphere] 是否与视锥体相交。<br /><br />
 
-			Note that the object must have a [page:Geometry] or [page:BufferGeometry] so that the bounding sphere
-			can be calculated.
+			注意:该对象必须有一个 [page:Geometry] 或 [page:BufferGeometry] ,因为这样才能计算出包围球。
 		</p>
 
 		<h3>[method:Boolean intersectsSphere]( [param:Sphere sphere] )</h3>
 		<p>
-		[page:Sphere sphere] - [page:Sphere] to check for intersection.<br /><br />
+		[page:Sphere sphere] - [page:Sphere] 用于检查是否相交。<br /><br />
 
-	 	Return true if [page:Sphere sphere] intersects with this frustum.
+		返回true 如果球[page:Sphere sphere]与视锥体相交。
 		</p>
 
 		<h3>[method:Boolean intersectsSprite]( [param:Sprite sprite] )</h3>
 		<p>
-			Checks whether the [page:Sprite sprite] is intersecting the Frustum.<br /><br />
+			检查精灵[page:Sprite sprite]是否与截锥体相交。<br /><br />
 		</p>
 
 		<h3>[method:Frustum set]( [param:Plane p0], [param:Plane p1], [param:Plane p2], [param:Plane p3], [param:Plane p4], [param:Plane p5] )</h3>
 		<p>
-		Sets the current frustum from the passed planes. No plane order is implicitely implied.
+			使用传入的平面设置当前视锥体。没有隐式的顺序。
 		</p>
 
 		<h3>[method:Frustum setFromMatrix]( [param:Matrix4 matrix] )</h3>
 		<p>
-			[page:Matrix4 matrix] - [page:Matrix4] used to set the [page:.planes planes]<br /><br />
+			[page:Matrix4 matrix] - [page:Matrix4] 用于设置 [page:.planes planes]<br /><br />
 
-			This is used by the [page:WebGLRenderer] to set up the Frustum from a [page:Camera Camera]'s
-			[page:Camera.projectionMatrix projectionMatrix] and [page:Camera.matrixWorldInverse matrixWorldInverse].
-		</p>
+			[page:WebGLRenderer] 使用 [page:Camera Camera]的投影矩阵([page:Camera.projectionMatrix projectionMatrix] )
+			和相机世界变换矩阵的逆矩阵 [page:Camera.matrixWorldInverse matrixWorldInverse] 来设置视锥体。
+				</p>
 
 
 

+ 10 - 11
docs/api/zh/math/Interpolant.html

@@ -8,21 +8,20 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>插值器([name]</h1>
 
 		<p class="desc">
-		Abstract base class of interpolants over parametric samples.<br /><br />
+		A参数样本上插值的抽象基类 <br /><br />
 
-		The parameter domain is one dimensional, typically the time or a path along a curve defined by the data.<br /><br />
+		参数域是一维的,通常是数据定义的曲线上的时间或路径。<br /><br />
 
-		The sample values can have any dimensionality and derived classes may apply special interpretations to the data.<br /><br />
+		示例值可以具有任何维度,派生类可以对数据应用特殊的解释。<br /><br />
 
-		This class provides the interval seek in a Template Method, deferring the actual interpolation to derived classes.<br /><br />
+		该类提供间隔查找的模板方法,将实际的插值延迟到派生类。<br /><br />
 
-		Time complexity is *O(1)* for linear access crossing at most two points and *O(log N)* for random access,
-		where *N* is the number of positions.<br /><br />
+		对于最多两个点之间的访问时间复杂度为O(1),对于随机访问时间复杂度为O(log N),其中N为位置数。<br /><br />
 
-		References:	[link:http://www.oodesign.com/template-method-pattern.html http://www.oodesign.com/template-method-pattern.html]
+		相关:	[link:http://www.oodesign.com/template-method-pattern.html http://www.oodesign.com/template-method-pattern.html]
 		</p>
 
 
@@ -38,7 +37,7 @@
 		sampleSize -- number of samples<br />
 		resultBuffer -- buffer to store the interpolation results.<br /><br />
 
-		Note: This is not designed to be called directly.
+		注意: 这不是设计为直接调用的。
 		</p>
 
 		<h2>Properties</h2>
@@ -74,10 +73,10 @@
 
 		<h3>[method:null evaluate]( [param:Number t] )</h3>
 		<p>
-		Evaluate the interpolant at position *t*.
+			计算补间函数在位置 *t* 的值。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 34 - 40
docs/api/zh/math/Line3.html

@@ -8,79 +8,75 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>三维几何线段([name]</h1>
 
-		<p class="desc">A geometric line segment represented by a start and end point.</p>
+		<p class="desc">用起点和终点表示的几何线段。</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器(Constructor</h2>
 
 
 		<h3>[name]( [param:Vector3 start], [param:Vector3 end] )</h3>
 		<p>
-		[page:Vector3 start] - Start of the line segment. Default is (0, 0, 0).<br />
-		[page:Vector3 end] - End of the line segment. Default is (0, 0, 0).<br /><br />
+		[page:Vector3 start] - 线段的起始点。默认值为 (0, 0, 0)。<br />
+		[page:Vector3 end] - 线段的终点。默认值为 (0, 0, 0)。<br /><br />
 
-		Creates a new [name].
+		创建一个三维几何线段 [name]。
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性(Properties</h2>
 
 		<h3>[property:Vector3 start]</h3>
-		<p>[page:Vector3] representing the start point of the line.</p>
+		<p>[page:Vector3] 表示线段的起点。</p>
 
 		<h3>[property:Vector3 end]</h3>
-		<p>[page:Vector3] representing the end point of the line.</p>
+		<p>[page:Vector3] 表示线段的终点</p>
 
 
 
 
 
-		<h2>Methods</h2>
+		<h2>方法(Methods</h2>
 
 		<h3>[method:Line3 applyMatrix4]( [param:Matrix4 matrix] )</h3>
-		<p>Applies a matrix transform to the line segment.</p>
+		<p>对此线段应用矩阵变换。</p>
 
 		<h3>[method:Vector3 at]( [param:Float t], [param:Vector3 target] )</h3>
 		<p>
-		[page:Float t] - Use values 0-1 to return a position along the line segment. <br />
-		[page:Vector3 target] — the result will be copied into this Vector3.<br /><br />
-
-		Returns a vector at a certain position along the line. When [page:Float t] = 0, it returns the start vector,
-		and when [page:Float t] = 1 it returns the end vector.<br />
+		[page:Float t] - 使用值0-1返回沿线段的位置。<br />
+		[page:Vector3 target] — 计算结果会被拷贝到target。<br /><br />
+		
+		返回一个线段某一位置的向量,当 [page:Float t] = 0的时候返回起始点,当[page:Float t] = 1的时候返回终点。<br />
 		</p>
 
 		<h3>[method:Line3 clone]()</h3>
-		<p>Returns a new [page:Line3] with the same [page:.start start] and [page:.end end] vectors as this one.</p>
+		<p>返回一个与此线段拥有相同起始点 [page:.start start] 和 终点[page:.end end] 的线段。</p>
 
 		<h3>[method:Vector3 closestPointToPoint]( [param:Vector3 point], [param:Boolean clampToLine], [param:Vector3 target] )</h3>
 		<p>
-		[page:Vector3 point] - return the closest point on the line to this point.<br />
-		[page:Boolean clampToLine] - whether to clamp the returned value to the line segment.<br />
-		[page:Vector3 target] — the result will be copied into this Vector3.<br /><br />
+		[page:Vector3 point] - 用于计算线段上到该点最近的点。<br />
+		[page:Boolean clampToLine] - 是否将结果限制在线段起始点和终点之间。<br />
+		[page:Vector3 target] — 结果会拷贝到target。<br /><br />
 
-		Returns the closets point on the line. If [page:Boolean clampToLine] is true, then the returned value will be
-		clamped to the line segment.
+		返回线段上到point最近的点。如果参数 [page:Boolean clampToLine] 为true。返回值将会在线段之间。
 		</p>
 
 		<h3>[method:Float closestPointToPointParameter]( [param:Vector3 point], [param:Boolean clampToLine] )</h3>
 		<p>
-		[page:Vector3 point] - the point for which to return a point parameter. <br />
-		[page:Boolean clampToLine] - Whether to clamp the result to the range [0, 1].<br /><br />
+		[page:Vector3 point] - 用于计算返回值的点 <br />
+		[page:Boolean clampToLine] - 结果是否处于 [0, 1]之间。<br /><br />
 
-		Returns a point parameter based on the closest point as projected on the line segement.
-		If [page:Boolean clampToLine] is true, then the returned value will be between 0 and 1.
+		返回一个基于点投影到线段上的点的参数。如果 [page:Boolean clampToLine] 为true则返回值将在0到1之间。
 		</p>
 
 		<h3>[method:Line3 copy]( [param:Line3 line] )</h3>
-		<p>Copies the passed line's [page:.start start] and [page:.end end] vectors to this line.</p>
+		<p>拷贝传入线段的起始点 [page:.start start] 和终点 [page:.end end] 向量到当前线段。</p>
 
 		<h3>[method:Vector3 delta]( [param:Vector3 target] )</h3>
 		<p>
-		[page:Vector3 target] — the result will be copied into this Vector3.<br /><br />
-
-			Returns the delta vector of the line segment ( [page:.end end] vector minus the [page:.start start] vector).
+		[page:Vector3 target] — 结果将会拷贝到target。<br /><br />
+			返回线段的向量。(终点[page:.end end]向量减去起始点[page:.start start]向量)。
 		</p>
 
 		<h3>[method:Float distance]()</h3>
@@ -89,34 +85,32 @@
 
 		<h3>[method:Float distanceSq]()</h3>
 		<p>
-			Returns the square of the [link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean distance]
-			(straight-line distance) between the line's [page:.start start]
-			and [page:.end end] vectors.
+			返回起始点[page:.start start]和终点[page:.end end]的欧几里得距离[link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean distance]。(直线距离)
 		</p>
 
 		<h3>[method:Boolean equals]( [param:Line3 line] )</h3>
 		<p>
 		[page:Line3 line]  - [page:Line3] to compare with this one.<br /><br />
 
-		Returns true if both line's [page:.start start] and [page:.end en] points are equal.
+		如果给定线段与当前线段的起始点[page:.start start]和终点[page:.end end]都相同则返回true。
 		</p>
 
 		<h3>[method:Vector3 getCenter]( [param:Vector3 target] )</h3>
 		<p>
-		[page:Vector3 target] — the result will be copied into this Vector3.<br /><br />
+		[page:Vector3 target] — 结果会写入target。<br /><br />
 
-		Returns the center of the line segment.
+		返回线段的中心点。
 		</p>
 
 		<h3>[method:Line3 set]( [param:Vector3 start], [param:Vector3 end] )</h3>
 		<p>
-		[page:Vector3 start] - set the [page:.start start point] of the line.<br />
-		[page:Vector3 end] - set the [page:.end end point] of the line.<br /><br />
+		[page:Vector3 start] - 设置线段的起点 [page:.start start point]。<br />
+		[page:Vector3 end] - 设置线段的终点 [page:.end end point]。<br /><br />
 
-		Sets the start and end values by copying the provided vectors.
+		将传入的向量设置到线段的起始点和终点。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 38 - 43
docs/api/zh/math/Math.html

@@ -8,101 +8,96 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>数学函数([name]</h1>
 
-		<p class="desc">An object with several math utility functions.</p>
+		<p class="desc">具有多个数学实用函数的对象。</p>
 
-		<h2>Functions</h2>
+		<h2>函数(Functions</h2>
 
 		<h3>[method:Float clamp]( [param:Float value], [param:Float min], [param:Float max] )</h3>
 		<p>
-		[page:Float value] — Value to be clamped.<br />
-		[page:Float min] — Minimum value.<br />
-		[page:Float max] — Maximum value.<br /><br />
+		[page:Float value] — 需要clamp处理的值。<br />
+		[page:Float min] — 最小值。<br />
+		[page:Float max] — 最大值。<br /><br />
 
-		Clamps the [page:Float value] to be between [page:Float min] and [page:Float max].
+		限制数值[page:Float value]处于最小值[page:Float min]和最大值[page:Float max]之间。
 		</p>
 
 		<h3>[method:Float degToRad]( [param:Float degrees] )</h3>
-		<p>Converts degrees to radians.</p>
+		<p>将度转化为弧度。</p>
 
 		<h3>[method:Integer euclideanModulo]( [param:Integer n], [param:Integer m] )</h3>
 		<p>
-		[page:Integer n], [page:Integer m] - Integers<br /><br />
-
-		Computes the Euclidean modulo of [page:Integer m] % [page:Integer n], that is:
+		[page:Integer n], [page:Integer m] - 整型<br /><br />
+		计算 [page:Integer m] % [page:Integer n] 的欧几里得模:
 		<code>( ( n % m ) + m ) % m</code>
 		</p>
 
 		<h3>[method:UUID generateUUID]( )</h3>
 		<p>
-		Generate a [link:https://en.wikipedia.org/wiki/Universally_unique_identifier UUID]
-		(universally unique identifier).
+			创建一个全局唯一标识符 [link:https://en.wikipedia.org/wiki/Universally_unique_identifier UUID]。
 		</p>
 
 		<h3>[method:Boolean isPowerOfTwo]( [param:Number n] )</h3>
-		<p>Return *true* if [page:Number n] is a power of 2.</p>
+		<p>如果 [page:Number n] 是2的幂,返回true。</p>
 
 		<h3>[method:Float lerp]( [param:Float x], [param:Float y], [param:Float t] )</h3>
 		<p>
-		[page:Float x] - Start point. <br />
-		[page:Float y] - End point. <br />
-		[page:Float t] - interpolation factor in the closed interval [0, 1].<br><br />
+		[page:Float x] - 起始点。 <br />
+		[page:Float y] - 终点。 <br />
+		[page:Float t] - 封闭区间[0,1]内的插值因子。<br><br />
 
-		Returns a value [link:https://en.wikipedia.org/wiki/Linear_interpolation linearly interpolated]
-		from two known points based on the given interval - [page:Float t] = 0 will return [page:Float x]
-		and [page:Float t] = 1 will return [page:Float y].
+		返回给定区间的线性插值[link:https://en.wikipedia.org/wiki/Linear_interpolation linearly interpolated]结果 - [page:Float t] = 0 将会返回 [page:Float x]
+		如果 [page:Float t] = 1 将会返回 [page:Float y].
 		</p>
 
 		<h3>[method:Float mapLinear]( [param:Float x], [param:Float a1], [param:Float a2], [param:Float b1], [param:Float b2] )</h3>
 		<p>
-		[page:Float x] — Value to be mapped.<br />
-		[page:Float a1] — Minimum value for range A.<br />
-		[page:Float a2] — Maximum value for range A.<br />
-		[page:Float b1] — Minimum value for range B.<br />
-		[page:Float b2] — Maximum value for range B.<br /><br />
+		[page:Float x] — 用于映射的值。<br />
+		[page:Float a1] — A区间最小值。<br />
+		[page:Float a2] — A区间最大值。<br />
+		[page:Float b1] — B区间最小值。<br />
+		[page:Float b2] — A区间最大值。<br /><br />
 
-		Linear mapping of [page:Float x] from range [[page:Float a1], [page:Float a2]] to range [[page:Float b1], [page:Float b2]].
+		x从范围[[page:Float a1], [page:Float a2]] 到范围[[page:Float b1], [page:Float b2]]的线性映射。
 		</p>
 
 		<h3>[method:Integer ceilPowerOfTwo]( [param:Number n] )</h3>
-		<p>Returns the smallest power of 2 that is greater than or equal to [page:Number n].</p>
+		<p>返回大于等于 [page:Number n] 的2的最小次幂。</p>
 
 		<h3>[method:Integer floorPowerOfTwo]( [param:Number n] )</h3>
-		<p>Returns the largest power of 2 that is less than or equal to [page:Number n].</p>
+		<p>返回小于等于 [page:Number n] 的2的最大幂。</p>
 
 		<h3>[method:Float radToDeg]( [param:Float radians] )</h3>
-		<p>Converts radians to degrees.</p>
+		<p>将弧度转换为角度。</p>
 
 		<h3>[method:Float randFloat]( [param:Float low], [param:Float high] )</h3>
-		<p>Random float in the interval [page:Float low] to [page:Float high].</p>
+		<p>在区间[page:Float low] 到 [page:Float high]随机一个浮点数。</p>
 
 		<h3>[method:Float randFloatSpread]( [param:Float range] )</h3>
-		<p>Random float in the interval *- [page:Float range] / 2* to *[page:Float range] / 2*.</p>
+		<p>在区间*- [page:Float range] / 2* 到 *[page:Float range] / 2*随机一个浮点数。</p>
 
 		<h3>[method:Integer randInt]( [param:Integer low], [param:Integer high] )</h3>
-		<p>Random integer in the interval [page:Float low] to [page:Float high].</p>
+		<p>在区间[page:Float low] 到 [page:Float high]随机一个整数。</p>
 
 		<h3>[method:Float smoothstep]( [param:Float x], [param:Float min], [param:Float max] )</h3>
 		<p>
-		[page:Float x] - The value to evaluate based on its position between min and max. <br />
-		[page:Float min] - Any x value below min will be 0.<br />
-		[page:Float max] - Any x value above max will be 1.<br /><br />
+		[page:Float x] - 根据其在最小值和最大值之间的位置来计算的值。 <br />
+		[page:Float min] - 任何x比最小值还小会返回0.<br />
+		[page:Float max] - 任何x比最大值还大会返回0.<br /><br />
 
-		Returns a value between 0-1 that represents the percentage that x has moved between min and max,
-		but smoothed or slowed down the closer X is to the min and max.<br/><br/>
+		返回0-1之间的值,该值表示x在最小值和最大值之间移动的百分比,但是当x接近最小值和最大值时,变化程度会平滑或减慢。<br/><br/>
 
-		See [link:http://en.wikipedia.org/wiki/Smoothstep Smoothstep] for details.
+		查看更多详情请移步到 [link:http://en.wikipedia.org/wiki/Smoothstep Smoothstep] 。
 		</p>
 
 		<h3>[method:Float smootherstep]( [param:Float x], [param:Float min], [param:Float max] )</h3>
 		<p>
-		[page:Float x] - The value to evaluate based on its position between min and max. <br />
-		[page:Float min] - Any x value below min will be 0.<br />
-		[page:Float max] - Any x value above max will be 1.<br /><br />
+			[page:Float x] - 根据其在最小值和最大值之间的位置来计算的值。 <br />
+			[page:Float min] - 任何x比最小值还小会返回0.<br />
+			[page:Float max] - 任何x比最大值还大会返回0.<br /><br />
 
-		Returns a value between 0-1. A [link:https://en.wikipedia.org/wiki/Smoothstep#Variations variation on smoothstep]
-		that has zero 1st and 2nd order derivatives at x=0 and x=1.
+		返回一个0-1之间的值。它和smoothstep相同,但变动更平缓。[link:https://en.wikipedia.org/wiki/Smoothstep#Variations variation on smoothstep] 在x=0和x=1处有0阶和二阶导数。
 		</p>
 
 		<h2>Source</h2>

+ 63 - 71
docs/api/zh/math/Matrix3.html

@@ -8,38 +8,37 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>三维矩阵([name]</h1>
 
 		<p class="desc">
-			A class representing a 3x3 [link:https://en.wikipedia.org/wiki/Matrix_(mathematics) matrix].
+			一个表示3X3矩阵[link:https://en.wikipedia.org/wiki/Matrix_(mathematics) matrix].的类。
 		</p>
 
-		<h2>Example</h2>
+		<h2>示例(Example</h2>
 		<code>
 var m = new Matrix3();
 		</code>
 
-		<h2>A Note on Row-Major and Column-Major Ordering</h2>
+		<h2>注意行优先列优先的顺序。</h2>
 		<p>
-			The [page:set]() method takes arguments in [link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order row-major]
-			order, while internally they are stored in the [page:.elements elements] array in column-major order.<br /><br />
+			[page:set]()方法参数采用行优先[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order row-major]
+			而它们在内部是用列优先[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order column-major]顺序存储在数组当中。<br /><br />
 
-			This means that calling
+			这意味着
 		<code>
 m.set( 11, 12, 13,
        21, 22, 23,
        31, 32, 33 );
 		</code>
-		will result in the [page:.elements elements] array containing:
+		元素数组[page:.elements elements]将存储为:
 		<code>
 m.elements = [ 11, 21, 31,
               12, 22, 32,
               13, 23, 33 ];
 		</code>
-		and internally all calculations are performed using column-major ordering. However, as the actual ordering
-		makes no difference mathematically and most people are used to thinking about matrices in row-major order,
-		the three.js documentation shows matrices in row-major order. Just bear in mind that if you are reading the source
-		code, you'll have to take the [link:https://en.wikipedia.org/wiki/Transpose transpose] of any matrices outlined here to make sense of the calculations.
+		在内部,所有的计算都是使用列优先顺序进行的。然而,由于实际的排序在数学上没有什么不同,
+		而且大多数人习惯于以行优先顺序考虑矩阵,所以three.js文档以行为主的顺序显示矩阵。
+		请记住,如果您正在阅读源代码,您必须对这里列出的任何矩阵进行转置[link:https://en.wikipedia.org/wiki/Transpose transpose],以理解计算。
 		</p>
 
 		<h2>Constructor</h2>
@@ -47,87 +46,81 @@ m.elements = [ 11, 21, 31,
 
 		<h3>[name]()</h3>
 		<p>
-		Creates and initializes the [name] to the 3x3
-		[link:https://en.wikipedia.org/wiki/Identity_matrix identity matrix].
+		创建并初始化一个3X3的单位矩阵[link:https://en.wikipedia.org/wiki/Identity_matrix identity matrix].
 		</p>
 
 
 
-		<h2>Properties</h2>
+		<h2>属性(Properties</h2>
 
 		<h3>[property:Float32Array elements]</h3>
 		<p>
-		A [link:https://en.wikipedia.org/wiki/Row-_and_column-major_order column-major]
-		 list of matrix values.
+			矩阵列优先[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order column-major]列表。
 		</p>
 
 		<h3>[property:Boolean isMatrix3]</h3>
 		<p>
-			Used to check whether this or derived classes are Matrix3s. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
+				用于判定此对象或者此类的派生对象是否是三维矩阵。默认值为 *true*。<br /><br />
+			
+				不应该改变该值,因为它在内部用于优化。
 		</p>
 
 
 
-		<h2>Methods</h2>
+		<h2>方法(Methods</h2>
 
 		<h3>[method:Array applyToBufferAttribute]( [param:BufferAttribute attribute] )</h3>
 		<p>
-		[page:BufferAttribute attribute] - An attribute of floats that represent 3D vectors.<br /><br />
+		[page:BufferAttribute attribute] - 表示三维向量缓存属性。<br /><br />
 
-		Multiplies (applies) this matrix to every 3D vector in the [page:BufferAttribute attribute].
+		用这个矩阵乘以缓存属性[page:BufferAttribute attribute]里的所有3d向量。
 		</p>
 
 
 		<h3>[method:Matrix3 clone]()</h3>
-		<p>Creates a new Matrix3 and with identical elements to this one.</p>
+		<p>创建一个新的矩阵,元素 [page:.elements elements] 与该矩阵相同。</p>
 
 		<h3>[method:this copy]( [param:Matrix3 m] )</h3>
-		<p>Copies the elements of matrix [page:Matrix3 m] into this matrix.</p>
+		<p>将矩阵[page:Matrix3 m]的元素复制到当前矩阵中。</p>
 
 		<h3>[method:Float determinant]()</h3>
 		<p>
-		Computes and returns the
-		[link:https://en.wikipedia.org/wiki/Determinant determinant] of this matrix.
+			计算并返回矩阵的行列式[link:https://en.wikipedia.org/wiki/Determinant determinant] 。
 		</p>
 
 		<h3>[method:Boolean equals]( [param:Matrix3 m] )</h3>
-		<p>Return true if this matrix and [page:Matrix3 m] are equal.</p>
+		<p>如果矩阵[page:Matrix3 m] 与当前矩阵所有对应元素相同则返回true。</p>
 
 		<h3>[method:this fromArray]( [param:Array array], [param:Integer offset] )</h3>
 		<p>
-		[page:Array array] - the array to read the elements from.<br />
-		[page:Integer offset] - (optional) index of first element in the array. Default is 0.<br /><br />
+		[page:Array array] - 用来存储设置元素数据的数组<br />
+		[page:Integer offset] - (可选参数) 数组的偏移量,默认值为 0。<br /><br />
 
-		Sets the elements of this matrix based on an array in
-		[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major] format.
+		使用基于列优先格式[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major]的数组来设置该矩阵。
 		</p>
 
 		<h3>[method:this getInverse]( [param:Matrix3 m], [param:Boolean throwOnDegenerate] )</h3>
 		<p>
-		[page:Matrix3 m] - the matrix to take the inverse of.<br />
-		[page:Boolean throwOnDegenerate] - (optional) If true, throw an error if the matrix is degenerate (not invertible).<br /><br />
-
-		Set this matrix to the [link:https://en.wikipedia.org/wiki/Invertible_matrix inverse] of the passed matrix [page:Matrix3 m],
-		using the [link:https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution analytic method].
-
-		If [page:Boolean throwOnDegenerate] is not set and the matrix is not invertible, set this to the 3x3 identity matrix.
+		[page:Matrix3 m] - 取逆的矩阵。<br />
+		[page:Boolean throwOnDegenerate] - (optional) 如果设置为true,如果矩阵是退化的(如果不可逆的话),则会抛出一个错误。<br /><br />
+		
+		使用逆矩阵计算方法[link:https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution analytic method],
+		将当前矩阵设置为给定矩阵的逆矩阵[link:https://en.wikipedia.org/wiki/Invertible_matrix inverse],如果[page:Boolean throwOnDegenerate]
+		参数没有设置且给定矩阵不可逆,那么将当前矩阵设置为3X3单位矩阵。
 		</p>
 
 		<h3>[method:this getNormalMatrix]( [param:Matrix4 m] )</h3>
 		<p>
 		[page:Matrix4 m] - [page:Matrix4]<br /><br />
 
-		Sets this matrix as the upper left 3x3 of the [link:https://en.wikipedia.org/wiki/Normal_matrix normal matrix]
-		of the passed [page:Matrix4 matrix4]. The normal matrix is the [link:https://en.wikipedia.org/wiki/Invertible_matrix inverse] [link:https://en.wikipedia.org/wiki/Transpose transpose]
-	  of the matrix [page:Matrix4 m].
+		将这个矩阵设置为给定矩阵的正规矩阵[link:https://en.wikipedia.org/wiki/Normal_matrix normal matrix](左上角的3x3)。
+		正规矩阵是矩阵[page:Matrix4 m]的逆矩阵[link:https://en.wikipedia.org/wiki/Invertible_matrix inverse] 的转置[link:https://en.wikipedia.org/wiki/Transpose transpose]。
 		</p>
 
 		<h3>[method:this identity]()</h3>
 		<p>
-		Resets this matrix to the 3x3 identity matrix:
-		<code>
+			将此矩阵重置为3x3单位矩阵:
+				<code>
 1, 0, 0
 0, 1, 0
 0, 0, 1
@@ -136,22 +129,22 @@ m.elements = [ 11, 21, 31,
 		</p>
 
 		<h3>[method:this multiply]( [param:Matrix3 m] )</h3>
-		<p>Post-multiplies this matrix by [page:Matrix3 m].</p>
+		<p>将当前矩阵乘以矩阵[page:Matrix3 m]。</p>
 
 		<h3>[method:this multiplyMatrices]( [param:Matrix3 a], [param:Matrix3 b] )</h3>
-		<p>Sets this matrix to [page:Matrix3 a] x [page:Matrix3 b].</p>
+		<p>设置当前矩阵为矩阵[page:Matrix3 a] x 矩阵[page:Matrix3 b]。</p>
 
 		<h3>[method:this multiplyScalar]( [param:Float s] )</h3>
-		<p>Multiplies every component of the matrix by the scalar value *s*.</p>
+		<p>当前矩阵所有的元素乘以该缩放值*s*</p>
 
 		<h3>[method:this set]( [param:Float n11], [param:Float n12], [param:Float n13], [param:Float n21], [param:Float n22], [param:Float n23], [param:Float n31], [param:Float n32], [param:Float n33] )</h3>
 		<p>
-		[page:Float n11] - value to put in row 1, col 1.<br />
-		[page:Float n12] - value to put in row 1, col 2.<br />
+		[page:Float n11] - 设置第一行第一列的值。<br />
+		[page:Float n12] - 设置第一行第二列的值。<br />
 		...<br />
 		...<br />
-		[page:Float n32] - value to put in row 3, col 2.<br />
-		[page:Float n33] - value to put in row 3, col 3.<br /><br />
+		[page:Float n32] - 设置第三行第二列的值。<br />
+		[page:Float n33] - 设置第三行第三列的值。<br /><br />
 
 		Sets the 3x3 matrix values to the given
 		[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order row-major]
@@ -159,45 +152,44 @@ m.elements = [ 11, 21, 31,
 		</p>
 
 		<h3>[method:this premultiply]( [param:Matrix3 m] )</h3>
-		<p>Pre-multiplies this matrix by [page:Matrix3 m].</p>
+		<p>将矩阵[page:Matrix3 m]乘以当前矩阵。</p>
 
 		<h3>[method:this setFromMatrix4]( [param:Matrix4 m] )</h3>
-		<p>Set this matrx to the upper 3x3 matrix of the Matrix4 [page:Matrix4 m].</p>
+		<p>将当前矩阵设置为4X4矩阵[page:Matrix4 m]左上3X3</p>
 
 		<h3>[method:this setUvTransform]( [param:Float tx], [param:Float ty], [param:Float sx], [param:Float sy], [param:Float rotation], [param:Float cx], [param:Float cy] )</h3>
 		<p>
-		[page:Float tx] - offset x<br />
-		[page:Float ty] - offset y<br />
-		[page:Float sx] - repeat x<br />
-		[page:Float sy] - repeat y<br />
-		[page:Float rotation] - rotation (in radians)<br />
-		[page:Float cx] - center x of rotation<br />
-		[page:Float cy] - center y of rotation<br /><br />
-
-		Sets the UV transform matrix from offset, repeat, rotation, and center.
+		[page:Float tx] - x偏移量<br />
+		[page:Float ty] - y偏移量<br />
+		[page:Float sx] - x方向的重复比例<br />
+		[page:Float sy] - y方向的重复比例<br />
+		[page:Float rotation] - 旋转(弧度)<br />
+		[page:Float cx] - 旋转中心x<br />
+		[page:Float cy] - 旋转中心y<br /><br />
+
+		使用偏移,重复,旋转和中心点位置设置UV变换矩阵。
 		</p>
 
 		<h3>[method:Array toArray]( [param:Array array], [param:Integer offset] )</h3>
 		<p>
-		[page:Array array] - (optional) array to store the resulting vector in. If not given a new array will be created.<br />
-		[page:Integer offset] - (optional) offset in the array at which to put the result.<br /><br />
+		[page:Array array] - (可选参数) 存储矩阵元素的数组,如果未指定会创建一个新的数组。<br />
+		[page:Integer offset] - (可选参数) 存放矩阵元素数组的偏移量。<br /><br />
 
-		Writes the elements of this matrix to an array in
-		[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major] format.
+		使用列优先[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major]格式将此矩阵的元素写入数组中。
 		</p>
 
 		<h3>[method:this transpose]()</h3>
-		<p>[link:https://en.wikipedia.org/wiki/Transpose Transposes] this matrix in place.</p>
+		<p>将该矩阵转置[link:https://en.wikipedia.org/wiki/Transpose Transposes]</p>
 
 		<h3>[method:this transposeIntoArray]( [param:Array array] )</h3>
 		<p>
-		[page:Array array] -  array to store the resulting vector in.<br /><br />
+		[page:Array array] -  用于存储当前矩阵转置结果的数组。<br /><br />
 
-		[link:https://en.wikipedia.org/wiki/Transpose Transposes] this matrix into the supplied array,
-		and returns itself unchanged.
+		将当前矩阵的转置[link:https://en.wikipedia.org/wiki/Transpose Transposes]存入给定的数组[param:Array array]但不改变当前矩阵,
+		并返回当前矩阵。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 109 - 130
docs/api/zh/math/Matrix4.html

@@ -8,53 +8,48 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>四维矩阵([name]</h1>
 
 		<p class="desc">
-			A class representing a 4x4 [link:https://en.wikipedia.org/wiki/Matrix_(mathematics) matrix].<br /><br />
+			表示为一个 4x4 [link:https://en.wikipedia.org/wiki/Matrix_(mathematics) matrix].<br /><br />
 
-			The most common use of a 4x4 matrix in 3D computer graphics is as a
-			[link:https://en.wikipedia.org/wiki/Transformation_matrix Transformation Matrix].
-			For an introduction to transformation matrices as used in WebGL, check out
-			[link:http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices this tutorial].<br /><br />
+			在3D计算机图形学中,4x4矩阵最常用的用法是作为一个变换矩阵[link:https://en.wikipedia.org/wiki/Transformation_matrix Transformation Matrix]。
+			有关WebGL中使用的变换矩阵的介绍,请参阅本教程[link:http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices this tutorial]。<br /><br />
 
-			This allows a [page:Vector3] representing a point in 3D space to undergo transformations
-			such as translation, rotation, shear, scale, reflection, orthogonal or perspective projection
-			and so on, by being multiplied by the matrix. This is known as	<em>applying</em>
-			the matrix to the vector.<br /><br />
+			这使得表示三维空间中的一个点的向量[page:Vector3]通过乘以矩阵来进行转换,如平移、旋转、剪切、缩放、反射、正交或透视投影等。这就是把矩阵<em>应用</em>到向量上。<br /><br />
 
-			Every [page:Object3D] has three associated Matrix4s:
+			任何3D物体[page:Object3D]都有三个关联的矩阵:
 			<ul>
 				<li>
-					[page:Object3D.matrix]: This stores the local transform of the object. This is the object's transformation relative to its parent.
+					[page:Object3D.matrix]: 存储物体的本地变换。 这是对象相对于其父对象的变换。
 				</li>
 				<li>
-					[page:Object3D.matrixWorld]: The global or world transform of the object. If the object has no parent, then this is identical to the local transform stored in [page:Object3D.matrix matrix].
+					[page:Object3D.matrixWorld]: 对象的全局或世界变换。如果对象没有父对象,那么这与存储在矩阵[page:Object3D.matrix matrix]中的本地变换相同。
 				</li>
 				<li>
-					[page:Object3D.modelViewMatrix]: This represents the object's transformation relative to the camera's coordinate system.
-					An object's modelViewMatrix is the object's matrixWorld pre-multiplied by the camera's matrixWorldInverse.
+					[page:Object3D.modelViewMatrix]: 表示对象相坐标相对于摄像机空间坐标转换,
+					一个对象的 modelViewMatrix 是物体世界变换矩阵乘以摄像机相对于世界空间变换矩阵的逆矩阵。
 				</li>
 			</ul>
 
-			[page:Camera Cameras] have two additional Matrix4s:
+			摄像机[page:Camera Cameras] 有两个额外的四维矩阵:
 			<ul>
 				<li>
-					[page:Camera.matrixWorldInverse]: The view matrix - the inverse of the Camera's [page:Object3D.matrixWorld matrixWorld].
+					[page:Camera.matrixWorldInverse]: 视矩阵 - 摄像机世界坐标变换的逆矩阵。
 				</li>
 				<li>
-					[page:Camera.projectionMatrix]: Represents the information how to project the scene to clip space.
+					[page:Camera.projectionMatrix]: 表示将场景中的信息投影到裁剪空间。
 				</li>
 			</ul>
-			Note: [page:Object3D.normalMatrix] is not a Matrix4, but a [page:Matrix3].
+			注意:物体的正规矩阵 [page:Object3D.normalMatrix] 并不是一个4维矩阵,而是一个三维矩阵[page:Matrix3]。
 		</p>
 
-		<h2>A Note on Row-Major and Column-Major Ordering</h2>
+		<h2>注意行优先列优先的顺序。</h2>
 		<p>
-			The [page:set]() method takes arguments in [link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order row-major]
-			order, while internally they are stored in the [page:.elements elements] array in column-major order.<br /><br />
+				设置[page:set]()方法参数采用行优先[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order row-major]
+				而它们在内部是用列优先[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order column-major]顺序存储在数组当中。<br /><br />
 
-			This means that calling
+				这意味着
 		<code>
 var m = new Matrix4();
 
@@ -64,107 +59,99 @@ m.set( 11, 12, 13, 14,
        41, 42, 43, 44 );
 
 		</code>
-		will result in the [page:.elements elements] array containing:
+		元素数组[page:.elements elements]将存储为:
 		<code>
 m.elements = [ 11, 21, 31, 41,
                12, 22, 32, 42,
                13, 23, 33, 43,
                14, 24, 34, 44 ];
 		</code>
-		and internally all calculations are performed using column-major ordering. However, as the actual ordering
-		makes no difference mathematically and most people are used to thinking about matrices in row-major order,
-		the three.js documentation shows matrices in row-major order. Just bear in mind that if you are reading the source
-		code, you'll have to take the [link:https://en.wikipedia.org/wiki/Transpose transpose] of any matrices outlined here to make sense of the calculations.
+		在内部,所有的计算都是使用列优先顺序进行的。然而,由于实际的排序在数学上没有什么不同,
+		而且大多数人习惯于以行优先顺序考虑矩阵,所以three.js文档以行为主的顺序显示矩阵。
+		请记住,如果您正在阅读源代码,您必须对这里列出的任何矩阵进行转置[link:https://en.wikipedia.org/wiki/Transpose transpose],以理解计算。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器(Constructor</h2>
 
 
 		<h3>[name]()</h3>
 
 		<p>
-			Creates and initializes the [name] to the 4x4
-			[link:https://en.wikipedia.org/wiki/Identity_matrix identity matrix].
+			创建并初始化一个4X4的单位矩阵[link:https://en.wikipedia.org/wiki/Identity_matrix identity matrix].
 	</p>
 
-		<h2>Properties</h2>
+		<h2>属性(Properties</h2>
 
 		<h3>[property:Float32Array elements]</h3>
 		<p>
-		A [link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major]
-		 list of matrix values.
+		矩阵列优先[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order column-major]列表。
 		</p>
 
 		<h3>[property:Boolean isMatrix4]</h3>
 		<p>
-			Used to check whether this or derived classes are Matrix4s. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
+			用于判定此对象或者此类的派生对象是否是三维矩阵。默认值为 *true*。<br /><br />
+		
+			不应该改变该值,因为它在内部用于优化。
 		</p>
 
 
 
 
-		<h2>Methods</h2>
+		<h2>方法(Methods</h2>
 
 		<h3>[method:Array applyToBufferAttribute]( [param:BufferAttribute attribute] )</h3>
 		<p>
-		[page:BufferAttribute attribute] - An attribute of floats that represent 3D vectors.<br /><br />
+		[page:BufferAttribute attribute] - 表示三维向量缓存属性。<br /><br />
 
-		Multiplies (applies) this matrix to every 3D vector in the [page:BufferAttribute attribute].
+		用这个矩阵乘以缓存属性[page:BufferAttribute attribute]里的所有3d向量。
 		</p>
 
 
 		<h3>[method:Matrix4 clone]()</h3>
-		<p>Creates a new Matrix4 with identical [page:.elements elements] to this one.</p>
+		<p>创建一个新的矩阵,元素[page:.elements elements]与该矩阵相同。</p>
 
 		<h3>[method:this compose]( [param:Vector3 position], [param:Quaternion quaternion], [param:Vector3 scale] )</h3>
 		<p>
-		Sets this matrix to the transformation composed of [page:Vector3 position],
-		[page:Quaternion quaternion] and [page:Vector3 scale]. Internally this calls
-		[page:.makeRotationFromQuaternion makeRotationFromQuaternion]( [page:Quaternion quaternion] )
-		followed by [page:.scale scale]( [page:Vector3 scale] ), then finally
-		[page:.setPosition setPosition]( [page:Vector3 position] ).
+		设置将该对象由位置[page:Vector3 position],四元数[page:Quaternion quaternion] 和 缩放[page:Vector3 scale]
+		组合变换的矩阵。内部先调用[page:.makeRotationFromQuaternion makeRotationFromQuaternion]( [page:Quaternion quaternion] )
+		再调用缩放[page:.scale scale]( [page:Vector3 scale] )最后是平移[page:.setPosition setPosition]( [page:Vector3 position] )。
 		</p>
 
 		<h3>[method:this copy]( [param:Matrix4 m] )</h3>
-		<p>Copies the [page:.elements elements] of matrix [page:Matrix4 m] into this matrix.</p>
+		<p>将矩阵[page:Matrix3 m]的元素[page:.elements elements]复制到当前矩阵中。</p>
 
 		<h3>[method:this copyPosition]( [param:Matrix4 m] )</h3>
 		<p>
-		Copies the translation component of the supplied matrix [page:Matrix4 m] into this
-		matrix's translation component.
+		将给定矩阵[param:Matrix4 m] 的平移分量拷贝到当前矩阵中。
 		</p>
 
 		<h3>[method:null decompose]( [param:Vector3 position], [param:Quaternion quaternion], [param:Vector3 scale] )</h3>
 		<p>
-		Decomposes this matrix into it's [page:Vector3 position], [page:Quaternion quaternion] and
-		[page:Vector3 scale] components.
+			将矩阵分解到给定的平移[page:Vector3 position] ,旋转 [page:Quaternion quaternion],缩放[page:Vector3 scale]分量中。
 		</p>
 
 		<h3>[method:Float determinant]()</h3>
 		<p>
-		Computes and returns the
-		[link:https://en.wikipedia.org/wiki/Determinant determinant] of this matrix.<br /><br />
+				计算并返回矩阵的行列式[link:https://en.wikipedia.org/wiki/Determinant determinant] 。<br /><br />
 
-		Based on the method outlined [link:http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm here].
+		基于这个的方法概述[link:http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm here]。
 		</p>
 
 		<h3>[method:Boolean equals]( [param:Matrix4 m] )</h3>
-		<p>Return true if this matrix and [page:Matrix4 m] are equal.</p>
+		<p>如果矩阵[page:Matrix3 m] 与当前矩阵所有对应元素相同则返回true。</p>
 
 		<h3>[method:this extractBasis]( [param:Vector3 xAxis], [param:Vector3 yAxis], [param:Vector3 zAxis] )</h3>
 		<p>
-		Extracts the [link:https://en.wikipedia.org/wiki/Basis_(linear_algebra) basis] of this
-		matrix into the three axis vectors provided. If this matrix is:
+			将矩阵的基向量[link:https://en.wikipedia.org/wiki/Basis_(linear_algebra) basis]提取到指定的3个轴向量中。
+			如果矩阵如下:
 		<code>
 a, b, c, d,
 e, f, g, h,
 i, j, k, l,
 m, n, o, p
 		</code>
-		then the [page:Vector3 xAxis], [page:Vector3 yAxis], [page:Vector3 zAxis] will be set to:
+		然后x轴y轴z轴被设为:
 		<code>
 xAxis = (a, e, i)
 yAxis = (b, f, j)
@@ -174,58 +161,54 @@ zAxis = (c, g, k)
 
 		<h3>[method:this extractRotation]( [param:Matrix4 m] )</h3>
 		<p>
-		Extracts the rotation component of the supplied matrix [page:Matrix4 m] into this matrix's
-		rotation component.
+		将给定矩阵[page:Matrix4 m]的旋转分量提取到该矩阵的旋转分量中。
 		</p>
 
 		<h3>[method:this fromArray]( [param:Array array], [param:Integer offset] )</h3>
 		<p>
-		[page:Array array] - the array to read the elements from.<br />
-		[page:Integer offset] - ( optional ) offset into the array. Default is 0.<br /><br />
-
-		Sets the elements of this matrix based on an [page:Array array] in
-		[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major] format.
-		</p>
+			[page:Array array] - 用来存储设置元素数据的数组<br />
+			[page:Integer offset] - (可选参数) 数组的偏移量,默认值为 0。<br /><br />
+	
+			使用基于列优先格式[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major]的数组来设置该矩阵。
+			</p>
 
 		<h3>[method:this getInverse]( [param:Matrix4 m], [param:Boolean throwOnDegenerate] )</h3>
 		<p>
-		[page:Matrix4 m] - the matrix to take the inverse of.<br />
-		[page:Boolean throwOnDegenerate] - (optional) If true, throw an error if the matrix is degenerate (not invertible).<br /><br />
-
-		Set this matrix to the [link:https://en.wikipedia.org/wiki/Invertible_matrix inverse] of the passed matrix [page:Matrix4 m],
-		using the method outlined [link:http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm here].
-
-		If [page:Boolean throwOnDegenerate] is not set and the matrix is not invertible, set this to the 4x4 identity matrix.
-		</p>
+			[page:Matrix3 m] - 取逆的矩阵。<br />
+			[page:Boolean throwOnDegenerate] - (optional) 如果设置为true,如果矩阵是退化的(如果不可逆的话),则会抛出一个错误。<br /><br />
+			
+			使用逆矩阵计算方法[link:https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution analytic method],
+			将当前矩阵设置为给定矩阵的逆矩阵[link:https://en.wikipedia.org/wiki/Invertible_matrix inverse],如果[page:Boolean throwOnDegenerate]
+			参数没有设置且给定矩阵不可逆,那么将当前矩阵设置为3X3单位矩阵。
+				</p>
 
 
 		<h3>[method:Float getMaxScaleOnAxis]()</h3>
-		<p>Gets the maximum scale value of the 3 axes.</p>
+		<p>获取3个轴方向的最大缩放值。</p>
 
 		<h3>[method:this identity]()</h3>
-		<p>Resets this matrix to the [link:https://en.wikipedia.org/wiki/Identity_matrix identity matrix].</p>
+		<p>将当前矩阵重置为单位矩阵[link:https://en.wikipedia.org/wiki/Identity_matrix identity matrix]。</p>
 
 		<h3>[method:this lookAt]( [param:Vector3 eye], [param:Vector3 center], [param:Vector3 up], )</h3>
 		<p>
-			Constructs a rotation matrix, looking from [page:Vector3 eye] towards [page:Vector3 center]
-			oriented by the [page:Vector3 up] vector.
+			构造一个旋转矩阵,从[page:Vector3 eye] 指向 [page:Vector3 center],由向量 [param:Vector3 up] 定向。
+<!--			Constructs a rotation matrix, looking from [page:Vector3 eye] towards [page:Vector3 center]
+			oriented by the [page:Vector3 up] vector.-->
 		</p>
 
 		<h3>[method:this makeRotationAxis]( [param:Vector3 axis], [param:Float theta] )</h3>
 		<p>
-		[page:Vector3 axis] — Rotation axis, should be normalized.<br />
-		[page:Float theta] — Rotation angle in radians.<br /><br />
+		[page:Vector3 axis] — 旋转轴,需要被归一化。<br />
+		[page:Float theta] — 旋转量(弧度)。<br /><br />
 
-		Sets this matrix as rotation transform around [page:Vector3 axis] by [page:Float theta] radians.<br />
+		设置当前矩阵为围绕轴 [page:Vector3 axis] 旋转量为 [page:Float theta]弧度。<br />
 
-		This is a somewhat controversial but mathematically sound alternative to rotating via [page:Quaternions].
-		See the discussion [link:http://www.gamedev.net/reference/articles/article1199.asp here].
+		这是一种有点争议但在数学上可以替代通过四元数[page:Quaternions]旋转的办法。 请参阅此处[link:http://www.gamedev.net/reference/articles/article1199.asp here]的讨论。
 		</p>
 
 		<h3>[method:this makeBasis]( [param:Vector3 xAxis], [param:Vector3 yAxis], [param:Vector3 zAxis] )</h3>
 		<p>
-		Set this to the [link:https://en.wikipedia.org/wiki/Basis_(linear_algebra) basis] matrix consisting
-		of the three provided basis vectors:
+			通过给定的三个向量设置该矩阵为基矩阵[link:https://en.wikipedia.org/wiki/Basis_(linear_algebra) basis]:
 		<code>
 xAxis.x, yAxis.x, zAxis.x, 0,
 xAxis.y, yAxis.y, zAxis.y, 0,
@@ -236,28 +219,27 @@ xAxis.z, yAxis.z, zAxis.z, 0,
 
 		<h3>[method:this makePerspective]( [param:Float left], [param:Float right], [param:Float top], [param:Float bottom], [param:Float near], [param:Float far] )</h3>
 		<p>
-			Creates a [link:https://en.wikipedia.org/wiki/3D_projection#Perspective_projection perspective projection] matrix.
-			This is used internally by [page:PerspectiveCamera.updateProjectionMatrix]()
+			创建一个透视投影矩阵[link:https://en.wikipedia.org/wiki/3D_projection#Perspective_projection perspective projection]。
+			在引擎内部由[page:PerspectiveCamera.updateProjectionMatrix]()使用。
 		</p>
 
 		<h3>[method:this makeOrthographic]( [param:Float left], [param:Float right], [param:Float top], [param:Float bottom], [param:Float near], [param:Float far] )</h3>
 		<p>
-		Creates an [link:https://en.wikipedia.org/wiki/Orthographic_projection orthographic projection] matrix.
-		This is used internally by [page:OrthographicCamera.updateProjectionMatrix]().
+			创建一个正交投影矩阵[link:https://en.wikipedia.org/wiki/Orthographic_projection orthographic projection]。
+			在引擎内部由[page:OrthographicCamera.updateProjectionMatrix]()使用。
 		</p>
 
 		<h3>[method:this makeRotationFromEuler]( [param:Euler euler] )</h3>
 		<p>
-		Sets the rotation component (the upper left 3x3 matrix) of this matrix to the rotation specified by the given [page:Euler Euler Angle].
-		The rest of the matrix is set to the identity. Depending on the [page:Euler.order order] of the [page:Euler euler], there are six possible outcomes.
-		See [link:https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix this page] for a complete list.
+		将传入的欧拉角转换为该矩阵的旋转分量(左上角的3x3矩阵)。
+		矩阵的其余部分被设为单位矩阵。根据欧拉角[page:Euler euler]的旋转顺序[page:Euler.order order],总共有六种可能的结果。
+		详细信息,请参阅本页[link:https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix this page]。
 		</p>
 
 		<h3>[method:this makeRotationFromQuaternion]( [param:Quaternion q] )</h3>
 		<p>
-		Sets the rotation component of this matrix to the rotation specified by [page:Quaternion q], as outlined
-		[link:https://en.wikipedia.org/wiki/Rotation_matrix#Quaternion here].
-		The rest of the matrix is set to the identity. So, given [page:Quaternion q] = w + xi + yj + zk, the resulting matrix will be:
+		将这个矩阵的旋转分量设置为四元数[page:Quaternion q]指定的旋转,如下链接所诉[link:https://en.wikipedia.org/wiki/Rotation_matrix#Quaternion here]。
+		矩阵的其余部分被设为单位矩阵。因此,给定四元数[page:Quaternion q] = w + xi + yj + zk,得到的矩阵为:
 		<code>
 1-2y²-2z²    2xy-2zw    2xz+2yw    0
 2xy+2zw      1-2x²-2z²  2yz-2xw    0
@@ -269,9 +251,9 @@ xAxis.z, yAxis.z, zAxis.z, 0,
 		<h3>[method:this makeRotationX]( [param:Float theta] )</h3>
 		<p>
 		[page:Float theta] — Rotation angle in radians.<br /><br />
-
-		Sets this matrix as a rotational transformation around the X axis by [page:Float theta] (&theta;) radians.
-		The resulting matrix will be:
+		
+		把该矩阵设置为绕x轴旋转弧度[page:Float theta] (&theta;)大小的矩阵。
+		结果如下:
 		<code>
 1 0      0        0
 0 cos(&theta;) -sin(&theta;)  0
@@ -284,8 +266,8 @@ xAxis.z, yAxis.z, zAxis.z, 0,
 		<p>
 		[page:Float theta] — Rotation angle in radians.<br /><br />
 
-		Sets this matrix as a rotational transformation around the Y axis by [page:Float theta] (&theta;) radians.
-		The resulting matrix will be:
+		把该矩阵设置为绕Y轴旋转弧度[page:Float theta] (&theta;)大小的矩阵。
+		结果如下:
 		<code>
 cos(&theta;)  0 sin(&theta;) 0
 0       1 0      0
@@ -298,8 +280,8 @@ cos(&theta;)  0 sin(&theta;) 0
 		<p>
 		[page:Float theta] — Rotation angle in radians.<br /><br />
 
-		Sets this matrix as a rotational transformation around the Z axis by [page:Float theta] (&theta;) radians.
-		The resulting matrix will be:
+		把该矩阵设置为绕z轴旋转弧度[page:Float theta] (&theta;)大小的矩阵。
+		结果如下:
 		<code>
 cos(&theta;) -sin(&theta;) 0 0
 sin(&theta;) cos(&theta;)  0 0
@@ -310,11 +292,11 @@ sin(&theta;) cos(&theta;)  0 0
 
 		<h3>[method:this makeScale]( [param:Float x], [param:Float y], [param:Float z] )</h3>
 		<p>
-			[page:Float x] - the amount to scale in the X axis.<br />
-			[page:Float y] - the amount to scale in the Y axis.<br />
-			[page:Float z] - the amount to scale in the Z axis.<br /><br />
+			[page:Float x] - 在X轴方向的缩放比。<br />
+			[page:Float y] - 在Y轴方向的缩放比。<br />
+			[page:Float z] - 在Z轴方向的缩放比。<br /><br />
 
-			Sets this matrix as scale transform:
+			将这个矩阵设置为缩放变换:
 			<code>
 x, 0, 0, 0,
 0, y, 0, 0,
@@ -325,11 +307,11 @@ x, 0, 0, 0,
 
 		<h3>[method:this makeShear]( [param:Float x], [param:Float y], [param:Float z] )</h3>
 		<p>
-		[page:Float x] - the amount to shear in the X axis.<br />
-		[page:Float y] - the amount to shear in the Y axis.<br />
-		[page:Float z] - the amount to shear in the Z axis.<br /><br />
+		[page:Float x] - 在X轴上剪切的量。<br />
+		[page:Float y] - 在Y轴上剪切的量。<br />
+		[page:Float z] - 在Z轴上剪切的量。<br /><br />
 
-		Sets this matrix as a shear transform:
+		将此矩阵设置为剪切变换:
 <code>
 1, y, z, 0,
 x, 1, z, 0,
@@ -340,11 +322,11 @@ x, y, 1, 0,
 
 		<h3>[method:this makeTranslation]( [param:Float x], [param:Float y], [param:Float z] )</h3>
 		<p>
-			[page:Float x] - the amount to translate in the X axis.<br />
-			[page:Float y] - the amount to translate in the Y axis.<br />
-			[page:Float z] - the amount to translate in the Z axis.<br /><br />
+			[page:Float x] - 在X轴上的平移量。<br />
+			[page:Float y] - 在Y轴上的平移量。<br />
+			[page:Float z] - 在Z轴上的平移量。<br /><br />
 
-		Sets this matrix as a translation transform:
+		设置该矩阵为平移变换:
 		<code>
 1, 0, 0, x,
 0, 1, 0, y,
@@ -354,37 +336,35 @@ x, y, 1, 0,
 		</p>
 
 		<h3>[method:this multiply]( [param:Matrix4 m] )</h3>
-		<p>Post-multiplies this matrix by [page:Matrix4 m].</p>
+		<p>将当前矩阵乘以矩阵[page:Matrix4 m]。</p>
 
 		<h3>[method:this multiplyMatrices]( [param:Matrix4 a], [param:Matrix4 b] )</h3>
-		<p>Sets this matrix to [page:Matrix4 a] x [page:Matrix4 b].</p>
+		<p>设置当前矩阵为矩阵[page:Matrix4 a] x 矩阵[page:Matrix4 b]。</p>
 
 		<h3>[method:this multiplyScalar]( [param:Float s] )</h3>
-		<p>Multiplies every component of the matrix by a scalar value [page:Float s].</p>
+		<p>当前矩阵所有的元素乘以该缩放值*s*</p>
 
 		<h3>[method:this premultiply]( [param:Matrix4 m] )</h3>
-		<p>Pre-multiplies this matrix by [page:Matrix4 m].</p>
+		<p>将矩阵[page:Matrix4 m]乘以当前矩阵。</p>
 
 		<h3>[method:this scale]( [param:Vector3 v] )</h3>
-		<p>Multiplies the columns of this matrix by vector [page:Vector3 v].</p>
+		<p>将该矩阵的列向量乘以对应向量[page:Vector3 v]的分量。</p>
 
 		<h3>[method:this set]( [param:Float n11], [param:Float n12], [param:Float n13], [param:Float n14], [param:Float n21], [param:Float n22], [param:Float n23], [param:Float n24], [param:Float n31], [param:Float n32], [param:Float n33], [param:Float n34], [param:Float n41], [param:Float n42], [param:Float n43], [param:Float n44] )</h3>
 		<p>
-			Set the [page:.elements elements] of this matrix to the supplied row-major values [page:Float n11],
-			[page:Float n12], ... [page:Float n44].
+			以行优先的格式将传入的数值设置给该矩阵中的元素[page:.elements elements]。
 		</p>
 
 		<h3>[method:this setPosition]( [param:Vector3 v] )</h3>
 		<p>
-			Sets the position component for this matrix from vector [page:Vector3 v], without affecting the
-			rest of the matrix - i.e. if the matrix is currently:
+			取传入参数[param:Vector3 v]中值设置该矩阵的位置分量,不影响该矩阵的其余部分——即,如果该矩阵当前为:
 <code>
 a, b, c, d,
 e, f, g, h,
 i, j, k, l,
 m, n, o, p
 </code>
-This becomes:
+变成:
 <code>
 a, b, c, v.x,
 e, f, g, v.y,
@@ -395,17 +375,16 @@ m, n, o, p
 
 		<h3>[method:Array toArray]( [param:Array array], [param:Integer offset] )</h3>
 		<p>
-		[page:Array array] - (optional) array to store the resulting vector in.<br />
-		[page:Integer offset] - (optional) offset in the array at which to put the result.<br /><br />
+		[page:Array array] - (可选参数) 存储矩阵元素的数组,如果未指定会创建一个新的数组。<br />
+		[page:Integer offset] -  (可选参数) 存放矩阵元素数组的偏移量。<br /><br />
 
-		Writes the elements of this matrix to an array in
-		[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major] format.
+		使用列优先[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major]格式将此矩阵的元素写入数组中。
 		</p>
 
 		<h3>[method:this transpose]()</h3>
-		<p>[link:https://en.wikipedia.org/wiki/Transpose Transposes] this matrix.</p>
+		<p>将该矩阵转置[link:https://en.wikipedia.org/wiki/Transpose Transposes]</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 49 - 58
docs/api/zh/math/Plane.html

@@ -8,165 +8,156 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>平面([name]</h1>
 
 		<p class="desc">
-			A two dimensional surface that extends infinitely in 3d space, represented in [link:http://mathworld.wolfram.com/HessianNormalForm.html Hessian normal form]
-			by a unit length normal vector and a constant.
+			在三维空间中无限延伸的二维平面,平面方程用单位长度的法向量和常数表示为海塞法向量[link:http://mathworld.wolfram.com/HessianNormalForm.html Hessian normal form]形式。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器(Constructor</h2>
 
 
 		<h3>[name]( [param:Vector3 normal], [param:Float constant] )</h3>
 		<p>
-		[page:Vector3 normal] - (optional) a unit length [page:Vector3] defining the normal of the plane. Default is *(1, 0, 0)*.<br />
-		[page:Float constant] - (optional) the signed distance from the origin to the plane. Default is *0*.
+		[page:Vector3 normal] - (可选参数) 定义单位长度的平面法向量[page:Vector3]。默认值为 *(1, 0, 0)*。<br />
+		[page:Float constant] - (可选参数) 从原点到平面的有符号距离。 默认值为 *0*.
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性(Properties</h2>
 
 		<h3>[property:Vector3 normal]</h3>
 
 		<h3>[property:Float constant]</h3>
 
-		<h2>Methods</h2>
+		<h2>方法(Methods</h2>
 
 		<h3>[method:Plane applyMatrix4]( [param:Matrix4 matrix], [param:Matrix3 optionalNormalMatrix] )</h3>
 		<p>
-		[page:Matrix4 matrix] - the [Page:Matrix4] to apply.<br />
-		[page:Matrix3 optionalNormalMatrix] - (optional) pre-computed normal [Page:Matrix3] of the Matrix4 being applied.<br /><br />
+		[page:Matrix4 matrix] - 要应用的四位矩阵([Page:Matrix4])。<br />
+		[page:Matrix3 optionalNormalMatrix] - (可选参数) 预先计算好的上述Matrix4参数的法线矩阵 [Page:Matrix3]。<br /><br />
 
-		Apply a Matrix4 to the plane. The matrix must be an affine, homogeneous transform.<br />
-		If supplying an [page:Matrix3 optionalNormalMatrix], it can be created like so:
+		在平面上应用矩阵。矩阵必须是仿射齐次变换。<br />
+		如果提供一个optionalNormalMatrix,可以这样创建:
 		<code>
 		var optionalNormalMatrix = new THREE.Matrix3().getNormalMatrix( matrix );
 		</code>
 		</p>
 
 		<h3>[method:Plane clone]()</h3>
-		<p>Returns a new plane with the same [page:.normal normal] and [page:.constant constant] as this one.</p>
+		<p>返回一个与当前平面有相同法线 [page:.normal normal],常量 [page:.constant constant] 距离的平面。</p>
 
 		<h3>[method:Vector3 coplanarPoint]( [param:Vector3 target] )</h3>
 		<p>
-		[page:Vector3 target] — the result will be copied into this Vector3.<br /><br />
+		[page:Vector3 target] — 结果会拷贝到该向量中。<br /><br />
 
-		Returns a [page:Vector3] coplanar to the plane, by calculating the projection of the
-		normal vector at the origin onto the plane.
+		返回一个共面点,通过原点的法向量在平面上投影算得。
 		</p>
 
 		<h3>[method:Plane copy]( [param:Plane plane] )</h3>
 		<p>
-		Copies the values of the passed plane's [page:.normal normal] and [page:.constant constant]
-		properties to this plane.
+			拷贝给定平面,将其中的法线 [page:.normal normal],距离常量 [page:.constant constant]属性拷贝给该对象。
 		</p>
 
 		<h3>[method:Float distanceToPoint]( [param:Vector3 point] )</h3>
-		<p>Returns the signed distance from the [page:Vector3 point] to the plane.</p>
+		<p>返回点[page:Vector3 point]到平面的有符号距离。</p>
 
 		<h3>[method:Float distanceToSphere]( [param:Sphere sphere] )</h3>
-		<p>Returns the signed distance from the [page:Sphere sphere] to the plane.</p>
+		<p>返回球面 [page:Sphere sphere] 的边缘到平面的最短距离。</p>
 
 		<h3>[method:Boolean equals]( [param:Plane plane] )</h3>
 		<p>
-			Checks to see if two planes are equal (their [page:.normal normal] and
-			[page:.constant constant] properties match).
+			检查两个平面是否相等。(法线 [page:.normal normal] 以及常量 [page:.constant constant] 都相同)。
 		</p>
 
 		<h3>[method:Vector3 intersectLine]( [param:Line3 line], [param:Vector3 target] )</h3>
 		<p>
-		[page:Line3 line] - the [page:Line3] to check for intersection.<br />
-		[page:Vector3 target] — the result will be copied into this Vector3.<br /><br />
+		[page:Line3 line] - 检测是否相交的三维几何线段 [page:Line3]。<br />
+		[page:Vector3 target] — 结果将会写入该向量中。<br /><br />
 
-		Returns the intersection point of the passed line and the plane. Returns undefined
-		 if the line does not intersect. Returns the line's starting point if the line is
-		 coplanar with the plane.
+		返回给定线段和平面的交点。如果不相交则返回undefined。如果线与平面共面,则返回该线段的起始点。
 		</p>
 
 		<h3>[method:Boolean intersectsBox]( [param:Box3 box] )</h3>
 		<p>
-		[page:Box3 box] - the [page:Box3] to check for intersection.<br /><br />
+		[page:Box3 box] - 检查是否相交的包围盒 [page:Box3]。<br /><br />
 
-		Determines whether or not this plane intersects [page:Box3 box].
+		确定该平面是否与给定3d包围盒[page:Box3]相交。
 		</p>
 
 		<h3>[method:Boolean intersectsLine]( [param:Line3 line] )</h3>
 		<p>
-		[page:Line3 line] - the [page:Line3] to check for intersection.<br /><br />
+		[page:Line3 line] - 检查是否相交的三维线段 [page:Line3]。<br /><br />
 
-		Tests whether a line segment intersects with (passes through) the plane.
+		测试线段是否与平面相交。
 		</p>
 
 		<h3>[method:Boolean intersectsSphere]( [param:Sphere sphere] )</h3>
 		<p>
-		[page:Sphere sphere]  - the [page:Sphere] to check for intersection.<br /><br />
+		[page:Sphere sphere]  - 检查是否相交的球体 [page:Sphere]。<br /><br />
 
-		Determines whether or not this plane intersects [page:Sphere sphere].
+		确定该平面是否与给定球体 [page:Sphere] 相交。
 		</p>
 
 		<h3>[method:Plane negate]()</h3>
 		<p>
-		Negates both the normal vector and the constant.
+			将法向量与常量求反(乘以-1)。
 		</p>
 
 		<h3>[method:Plane normalize]()</h3>
 		<p>
-			Normalizes the [page:.normal normal] vector, and adjusts the [page:.constant constant]
-			value accordingly.
+			归一化法向量 [page:.normal normal] ,并相应的调整常量 [page:.constant constant]数值。
 		</p>
 
 		<h3>[method:Vector3 projectPoint]( [param:Vector3 point], [param:Vector3 target] )</h3>
 		<p>
-		[page:Vector3 point] - the [page:Vector3] to project onto the plane.<br />
-		[page:Vector3 target] — the result will be copied into this Vector3.<br /><br />
+		[page:Vector3 point] - 需要投射到该平面的点。<br />
+		[page:Vector3 target] — 在该平面上离投射点最近的点。<br /><br />
 
-		Projects a [page:Vector3 point] onto the plane.
+		将一个点[page:Vector3 point]投射到该平面上。
 		</p>
 
 		<h3>[method:Plane set]( [param:Vector3 normal], [param:Float constant] )</h3>
 		<p>
-			[page:Vector3 normal] - a unit length [page:Vector3] defining the normal of the plane.<br />
-			[page:Float constant] - the signed distance from the origin to the plane. Default is *0*.<br /><br />
+			[page:Vector3 normal] - 单位长度的向量表示平面的法向量。<br />
+			[page:Float constant] - 原点到平面有符号距离。默认值为 *0*。<br /><br />
 
-			 Sets the plane's [page:.normal normal] and [page:.constant constant] properties.
+			设置平面 [page:.normal normal] 的法线和常量 [page:.constant constant] 属性值。
 		</p>
 
 		<h3>[method:Plane setComponents]( [param:Float x], [param:Float y], [param:Float z], [param:Float w] )</h3>
 		<p>
-		[page:Float x] - x value of the unit length normal vector.<br />
-		[page:Float y] - y value of the unit length normal vector.<br />
-		[page:Float z] - z value of the unit length normal vector.<br />
-		[page:Float w] - the value of the plane's [page:.constant constant] property.<br /><br />
+		[page:Float x] - 单位长度法向量的x值。<br />
+		[page:Float y] - 单位长度法向量的y值。<br />
+		[page:Float z] - 单位长度法向量的z值。<br />
+		[page:Float w] - 原点沿法向量到平面常量 [page:.constant constant] 距离。<br /><br />
 
-		Set the individual components that define the plane.
+		设置定义平面的各个变量。
 		</p>
 
 		<h3>[method:Plane setFromCoplanarPoints]( [param:Vector3 a], [param:Vector3 b], [param:Vector3 c] )</h3>
 		<p>
-		 [page:Vector3 a] - first point on the plane.<br />
-		 [page:Vector3 b] - second point on the plane.<br />
-		 [page:Vector3 c] - third point on the plane.<br /><br />
+		 [page:Vector3 a] - 用于确定平面的第一个点。<br />
+		 [page:Vector3 b] - 用于确定平面的第二个点。<br />
+		 [page:Vector3 c] - 用于确定平面的第三个点。<br /><br />
 
-		Defines the plane based on the 3 provided points. The winding order is assumed to be counter-clockwise,
-		and determines the direction of the [page:.normal normal].
+		 根据给定的三个点确定平面。如果三个点共线将会抛出错误。通过右手螺旋规则确定(向量叉乘)法向量 [page:.normal normal]。
 		</p>
 
 		<h3>[method:Plane setFromNormalAndCoplanarPoint]( [param:Vector3 normal], [param:Vector3 point] ) [param:Vector3 this]</h3>
 		<p>
-		[page:Vector3 normal] - a unit length [page:Vector3] defining the normal of the plane.<br />
-		[page:Vector3 point] - [page:Vector3]<br /><br />
+		[page:Vector3 normal] - 平面单位法向量<br />
+		[page:Vector3 point] - 平面上的点<br /><br />
 
-		Sets the plane's properties as defined by a [page:Vector3 normal] and an arbitrary coplanar [page:Vector3 point].
+		通过平面上的一点以及法线确定原点到平面的最短距离(常量)。
 		</p>
 
 		<h3>[method:Plane translate]( [param:Vector3 offset] )</h3>
 		<p>
-		[page:Vector3 offset] - the amount to move the plane by.<br /><br />
+		[page:Vector3 offset] - 平移量<br /><br />
 
-		Translates the plane by the distance defined by the [page:Vector3 offset] vector.
-		Note that this only affects the plane constant and will not affect the normal vector.
+		将平面平移给定向量大小,注意:这只会影响平面的常量不会影响平面的法向量。
 		</p>
 
 		<h2>Source</h2>

+ 41 - 28
docs/api/zh/objects/SkinnedMesh.html

@@ -38,41 +38,60 @@
 		<h2>示例</h2>
 
 		<code>
-		var geometry = new THREE.CylinderGeometry( 5, 5, 5, 5, 15, 5, 30 );
+		var geometry = new THREE.CylinderBufferGeometry( 5, 5, 5, 5, 15, 5, 30 );
 
-		//Create the skin indices and skin weights
-		for ( var i = 0; i < geometry.vertices.length; i ++ ) {
+		// create the skin indices and skin weights
 
-			// Imaginary functions to calculate the indices and weights
-			// This part will need to be changed depending your skeleton and model
-			var skinIndex = calculateSkinIndex( geometry.vertices, i );
-			var skinWeight = calculateSkinWeight( geometry.vertices, i );
+		var position = geometry.attributes.position;
 
-			// Ease between each bone
-			geometry.skinIndices.push( new THREE.Vector4( skinIndex, skinIndex + 1, 0, 0 ) );
-			geometry.skinWeights.push( new THREE.Vector4( 1 - skinWeight, skinWeight, 0, 0 ) );
+		var vertex = new THREE.Vector3();
+
+		var skinIndices = [];
+		var skinWeights = [];
+
+		for ( var i = 0; i < position.count; i ++ ) {
+
+			vertex.fromBufferAttribute( position, i );
+
+			// compute skinIndex and skinWeight based on some configuration data
+
+			var y = ( vertex.y + sizing.halfHeight );
+
+			var skinIndex = Math.floor( y / sizing.segmentHeight );
+			var skinWeight = ( y % sizing.segmentHeight ) / sizing.segmentHeight;
+
+			skinIndices.push( skinIndex, skinIndex + 1, 0, 0 );
+			skinWeights.push( 1 - skinWeight, skinWeight, 0, 0 );
 
 		}
 
+		geometry.addAttribute( 'skinIndex', new THREE.Uint16BufferAttribute( skinIndices, 4 ) );
+		geometry.addAttribute( 'skinWeight', new THREE.Float32BufferAttribute( skinWeights, 4 ) );
+
+		// create skinned mesh and skeleton
+
 		var mesh = new THREE.SkinnedMesh( geometry, material );
+		var skeleton = new THREE.Skeleton( bones );
+
+		// see example from THREE.Skeleton
 
-		// See example from THREE.Skeleton for the armSkeleton
-		var rootBone = armSkeleton.bones[ 0 ];
+		var rootBone = skeleton.bones[ 0 ];
 		mesh.add( rootBone );
 
-		// Bind the skeleton to the mesh
-		mesh.bind( armSkeleton );
+		// bind the skeleton to the mesh
+
+		mesh.bind( skeleton );
+
+		// move the bones and manipulate the model
 
-		// Move the bones and manipulate the model
-		armSkeleton.bones[ 0 ].rotation.x = -0.1;
-		armSkeleton.bones[ 1 ].rotation.x = 0.2;
+		skeleton.bones[ 0 ].rotation.x = -0.1;
+		skeleton.bones[ 1 ].rotation.x = 0.2;
 		</code>
 
 		<h2>构造器</h2>
-		<h3>[name]( [param:Geometry geometry], [param:Material material] )</h3>
+		<h3>[name]( [param:BufferGeometry geometry], [param:Material material] )</h3>
 		<p>
-    [page:Geometry geometry] —— 一个[page:Geometry]或者[page:BufferGeometry](推荐)的实例。
-	[page:Geometry.skinIndices skinIndices] 和 [page:Geometry.skinWeights skinWeights] 在几何体上应当被设置为true。<br />
+    [page:BufferGeometry geometry] —— TODO<br />
     [page:Material material] —— (可选)一个[page:Material]的实例,默认值是一个新的[page:MeshBasicMaterial]。
 		</p>
 
@@ -108,7 +127,7 @@
 
 		<h3>[property:Skeleton skeleton]</h3>
 		<p>
-			[page:Skeleton]是由从构造函数中传入的[page:Geometry]中的[page:Geometry.bones bones]来创建的。
+			TODO
 		</p>
 
 
@@ -121,7 +140,6 @@
 		[page:Skeleton skeleton] —— 由一棵[page:Bone Bones]树创建的[page:Skeleton]。<br/>
 		[page:Matrix4 bindMatrix] —— 代表着骨架基本变换的[page:Matrix4](4x4矩阵)。<br /><br />
 		将骨架绑定到一个蒙皮网格上。bindMatrix会被保存到.bindMatrix属性中,其逆矩阵.bindMatrixInverse也会被计算出来。
-		它在构造函数中会被自动调用,其骨架是由传入到构造函数的[page:Geometry]中的[page:Geometry.bones bones]来创建的。
 		</p>
 
 		<h3>[method:SkinnedMesh clone]()</h3>
@@ -131,7 +149,7 @@
 
 		<h3>[method:null normalizeSkinWeights]()</h3>
 		<p>
-		规范化[page:Geometry.skinWeights]矢量。不会对[page:BufferGeometry]产生影响。
+		TODO
 		</p>
 
 		<h3>[method:null pose]()</h3>
@@ -144,11 +162,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>

+ 12 - 12
docs/api/zh/textures/DataTexture3D.html

@@ -12,39 +12,39 @@
 
 		<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>
+		<p class="desc">创建一个三维的纹理贴图。这种纹理贴图只能被用于WebGL 2渲染环境中。</p>
 
-		<h2>Constructor</h2>
+		<h2>构造函数</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:Object data] -- 纹理的数据。<br />
 
-			[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:Number depth] -- depth of the texture.
+			[page:Number depth] -- 纹理的深度。
 		</p>
 
-		<h2>Example</h2>
+		<h2>示例</h2>
 
 		<div>[example:webgl2_materials_texture3d WebGL2 / materials / texture3d]</div>
 		<div>[example:webgl2_materials_texture3d_volume WebGL2 / materials / texture3d / volume]</div>
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 		<p>
-		See the base [page:Texture Texture] class for common properties.
+		请参阅其基类[page:Texture Texture]来了解共有属性。
 		</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>

+ 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>

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

@@ -31,7 +31,7 @@
 			<li>KHR_draco_mesh_compression</li>
 			<li>KHR_materials_pbrSpecularGlossiness</li>
 			<li>KHR_materials_unlit</li>
-			<li>KHR_lights_punctual (experimental)</li>
+			<li>KHR_lights_punctual</li>
 			<li>KHR_texture_transform<sup>*</sup></li>
 			<li>MSFT_texture_dds</li>
 		</ul>

+ 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>
 

+ 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>

+ 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>

+ 50 - 51
docs/list.js

@@ -233,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",
@@ -427,15 +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",
-				"How to use WebGL 2": "manual/zh/introduction/How-to-use-WebGL2",
+				"如何使用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",
@@ -445,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,7 +470,7 @@ var list = {
 				"PropertyMixer": "api/zh/animation/PropertyMixer"
 			},
 
-			"Animation / Tracks": {
+			"动画 / 轨道": {
 				"BooleanKeyframeTrack": "api/zh/animation/tracks/BooleanKeyframeTrack",
 				"ColorKeyframeTrack": "api/zh/animation/tracks/ColorKeyframeTrack",
 				"NumberKeyframeTrack": "api/zh/animation/tracks/NumberKeyframeTrack",
@@ -479,7 +479,7 @@ var list = {
 				"VectorKeyframeTrack": "api/zh/animation/tracks/VectorKeyframeTrack"
 			},
 
-			"Audio": {
+			"音频": {
 				"Audio": "api/zh/audio/Audio",
 				"AudioAnalyser": "api/zh/audio/AudioAnalyser",
 				"AudioContext": "api/zh/audio/AudioContext",
@@ -487,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",
@@ -496,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",
@@ -506,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",
@@ -525,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",
@@ -548,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",
@@ -561,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",
@@ -610,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",
@@ -629,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",
@@ -639,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",
@@ -657,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",
@@ -665,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",
@@ -689,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",
@@ -712,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",
@@ -733,26 +732,26 @@ 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",
@@ -765,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",
@@ -798,16 +797,16 @@ var list = {
 				"PRWMLoader": "examples/loaders/PRWMLoader"
 			},
 
-			"Objects": {
+			"物体": {
 				"Lensflare": "examples/objects/Lensflare",
 			},
 
-			"Exporters": {
+			"导出器": {
 				"GLTFExporter": "examples/exporters/GLTFExporter",
 				"PLYExporter": "examples/exporters/PLYExporter"
 			},
 
-			"Plugins": {
+			"插件": {
 				"LookupTable": "examples/Lut",
 			},
 
@@ -819,27 +818,27 @@ var list = {
 				"VertexList": "examples/quickhull/VertexList"
 			},
 
-			"Renderers": {
+			"渲染器": {
 				"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>

+ 2 - 2
docs/manual/en/introduction/Browser-support.html

@@ -13,7 +13,7 @@
 	<h2>Overview</h2>
 	<div>
 		<p>
-			Three.js can use WebGL to render your scenes on all modern browsers. For older browsers, especially Internet Explorer 10 and below, you may have to fallback to one of the other [link:https://github.com/mrdoob/three.js/tree/master/examples/js/renderers renderers] (CSS2DRenderer, CSS3DRenderer, SVGRenderer, CanvasRenderer). Additionally, you may have to include some polyfills, especially if you are using files from the [link:https://github.com/mrdoob/three.js/tree/master/examples /examples] folder.
+			Three.js can use WebGL to render your scenes on all modern browsers. For older browsers, especially Internet Explorer 10 and below, you may have to fallback to one of the other [link:https://github.com/mrdoob/three.js/tree/master/examples/js/renderers renderers] (CSS2DRenderer, CSS3DRenderer, SVGRenderer). Additionally, you may have to include some polyfills, especially if you are using files from the [link:https://github.com/mrdoob/three.js/tree/master/examples /examples] folder.
 		</p>
 		<p>
 			Note: if you don't need to support these old browsers, then it is not recommended to use the other renderers as they are slower and support less features than the WebGLRenderer.
@@ -120,4 +120,4 @@
 		</ul>
 	</div>
 </body>
-</html>
+</html>

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

@@ -122,64 +122,6 @@ ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot =>
 				</ol>
 			</div>
 
-		<h2>Change local files security policy</h2>
-		<div>
-			<h3>Safari</h3>
-			<div>
-				<p>
-					Enable the develop menu using the preferences panel, under Advanced -&gt; "Show develop menu
-					in menu bar".
-				</p>
-
-				<p>
-					Then from the safari "Develop" menu, select "Disable local file restrictions", it is also
-					worth noting safari has some odd behaviour with caches, so it is advisable to use the
-					"Disable caches" option in the same menu; if you are editing &amp; debugging using safari.
-				</p>
-			</div>
-
-
-			<h3>Chrome</h3>
-			<div>
-				<p>Close all running Chrome instances first. The important word here is 'all'.</p>
-
-				<p>
-					On Windows, you may check for Chrome instances using the Windows Task Manager.
-					Alternatively, if you see a Chrome icon in the system tray, then you may open its context
-					menu and click 'Exit'. This should close all Chrome instances.
-				</p>
-
-				<p>Then start the Chrome executable with a command line flag:</p>
-
-				<code>chrome --allow-file-access-from-files</code>
-
-				<p>
-					On Windows, probably 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>
-
-				<p>On Mac OSX, you can do this with</p>
-
-				<code>open /Applications/Google\ Chrome.app --args --allow-file-access-from-files</code>
-			</div>
-
-			<h3>Firefox</h3>
-			<div>
-				<ol>
-				<li>
-					In the address bar, type <code>about:config</code>
-				</li>
-				<li>
-					Find the <code>security.fileuri.strict_origin_policy</code> parameter
-				</li>
-				<li>
-					Set it to <em>false</em>
-				</li>
-				</ol>
-			</div>
-
-		</div>
-
 			<p>
 				Other simple alternatives are [link:http://stackoverflow.com/q/12905426/24874 discussed here]
 				on Stack Overflow.

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

@@ -79,7 +79,7 @@
 	<h2>Loading</h2>
 
 	<p>
-		Only a few loaders ([page:ObjectLoader] and [page:JSONLoader]) are included by default with
+		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>

+ 60 - 69
docs/manual/zh/buildTools/Testing-with-NPM.html

@@ -8,69 +8,67 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>使用NPM进行测试([name]</h1>
 
 		<p class="desc">
-			This article shows how to get three.js into a [link:https://nodejs.org/en/ node.js] environment so that you
-			can execute automated tests. Tests can be run on the command line, or by automated
-			CI tools like [link:https://travis-ci.org/ Travis].
+			这篇文章展示了如何将three.js置入[link:https://nodejs.org/en/ node.js]环境中,
+			这样你就可以执行自动化测试了。测试可以通过命令行或者类似[link:https://travis-ci.org/ Travis]的CI工具来运行。
 		</p>
 
-		<h2>The short version</h2>
+		<h2>一句话概括</h2>
 
 		<p>
-			If you're comfortable with node and npm,
+			如果你习惯使用node和npm,
 			<code>
 				$ npm install three --save-dev
 			</code>
-			and add
+			并将
 		<code>
 			var THREE = require('three');
 		</code>
-			to your test.
+			添加到你的测试中。
 		</p>
 
-		<h2>Create a testable project from scratch</h2>
+		<h2>从头创建一个可测试的项目</h2>
 		<p>
-			If you're not familiar with these tools, here's a quick guide (for linux, the installation process
-			will be slightly different using windows, but the NPM commands are identical).
+			如果你不太熟悉这些工具,下面是一个快速入门。(基于linux,在windows上的安装过程会稍稍有点不一样,不过NPM指令是相同的。)
 		</p>
 
-		<h3>Basic setup</h3>
+		<h3>基本设置</h3>
 		<div>
 			<ol>
 				<li>
-					Install [link:https://www.npmjs.org/ npm] and nodejs. The shortest path typically looks something like
+					安装[link:https://www.npmjs.org/ npm]和nodejs。最简单的方式一般像这样
 					<code>
 $ sudo apt-get install -y npm nodejs-legacy
-# fix any problems with SSL in the default registry URL
+# 修复默认registry URL中任何SSL的问题
 $ npm config set registry http://registry.npmjs.org/
 					</code>
 				</li>
 
 				<li>
-					Make a new project directory
+					新建一个项目路径
 					<code>
 						 $ mkdir test-example; cd test-example
 					</code>
 				</li>
 
 				<li>
-					Ask npm to create a new project file for you:
+					让npm为你创建一份新的项目文件:
 					<code>
 					 $ npm init
 					</code>
-					 and accept all defaults by hitting Enter on all the prompts.
-					 This will create package.json.
+					 在所有出现的提示中敲击回车键来接受默认值。
+					 这样,一份package.json就建立好了。
 				</li><br />
 
 				<li>
-					Try and start the test feature with
+					尝试启动测试功能
 					<code>
 $ npm test
 					</code>
-					This will fail, which is expected.
-					If you look in the package.json, the definition of the test script is
+					当然,这一定会失败。
+					如果你检查一下package.json,test script的定义是这样的
 					<code>
 						"test": "echo \"Error: no test specified\" && exit 1"
 					</code>
@@ -79,78 +77,75 @@ $ npm test
 			</ol>
 		</div>
 
-		<h2>Add mocha</h2>
+		<h2>添加mocha</h2>
 		<div>
-			We're going to use [link:https://mochajs.org/ mocha].
+			我们将使用[link:https://mochajs.org/ mocha]。
 
 			<ol>
 				<li>
-					Install mocha with
+					安装mocha
 					<code>
 $ npm install mocha --save-dev
 					</code>
-					Notice that node_modules/ is created and your dependencies appear in there.
-				  Also notice that your package.json has been updated: the property devDependencies
-					is added and updated by the use of --save-dev.
+					你会注意到 node_modules/ 被创建了,并且你的依赖都出现在了这里面。
+					还有你的package.json被更新了,--save-dev指令向其中加入并更新了devDependencies属性。
 				</li><br />
 
 				<li>
-					Edit package.json to use mocha for testing. When test is invoked, we just want to run
-					mocha and specify a verbose reporter. By default this will run anything in test/
-					(not having directory test/ can run into npm ERR!, create it by mkdir test)
+					编辑package.json来使用mocha进行测试。当调用测试的时候,我们只想运行mocha并且生成一份详细的报告。
+					默认情况下这会运行 test/ 中的任何东西。
+					(如果项目中没有 test/ 目录的话,会导致npm报错。你可以通过mkdir test来创建这个目录)
 					<code>
 						"test": "mocha --reporter list"
 					</code>
 				</li>
 
 				<li>
-					Rerun the test with
+					重新运行测试
 					<code>
 						$ npm test
 					</code>
 
-					This should now succeed, reporting 0 passing (1ms)
-				 	or similar.
+					现在应该就能成功执行了,生成类似 0 passing (1ms) 的报告。
 				</li>
 
 			</ol>
 		</div>
 
-		<h2>Add three.js</h2>
+		<h2>添加three.js</h2>
 		<div>
 			<ol>
 				<li>
-					Let's pull in our three.js dependency with
+					现在添加我们的three.js依赖
 					<code>
 $ npm install three --save-dev
 					</code>
 					<ul>
 						<li>
-							If you need a different three version, use
+							如果你需要three.js的其他版本,使用
 							<code>
 								$ npm show three versions
 							</code>
-						  to see
-							what's available. To tell npm the right one, use
+						  	来确认哪些是可用的。要让npm使用正确的版本,执行
 							<code>
  $ npm install [email protected] --save
 							</code>
-							(0.84.0 in this example). --save makes this a dependency of this project, rather than
-							dev dependency. See the docs [link:https://www.npmjs.org/doc/json.html here] for more info.
+							(例子中用的是0.84.0)。 --save 指令将此加入项目的dependency而不是dev dependency。
+							更多信息请参阅<a href="https://www.npmjs.org/doc/json.html">这份文档</a>。
 						</li>
 					</ul>
 				</li>
 
 				<li>
-					Mocha will look for tests in test/, so let's
+					Mocha会在 test/ 目录中寻找测试文件,所以我们先创建这个目录:
 					<code>
 					$ mkdir test
 					</code>
 				</li>
 
 				<li>
-					Finally we actually need a JS test to run. Let's add a simple test that will verify that
-					the three.js object is available and working. Create test/verify-three.js containing:
+					最后我们需要一份JS测试文件来运行。我们就添加一段简单的测试程序,这段程序会检验three.js对象是否能正常工作。
+					在 test/ 目录下创建verify-three.js包含以下代码:
 <code>
 var THREE = require('three');
 var assert = require("assert");
@@ -169,8 +164,7 @@ describe('The THREE object', function() {
 				</li>
 
 				<li>
-				Finally let's test again with $ npm test. This should run the tests above and succeed,
-				showing something like:
+				最后再次通过$ npm test来测试。这次应该能正确执行上面的代码,并且返回类似:
 				<code>
 The THREE object should have a defined BasicShadowMap constant: 0ms
 The THREE object should be able to construct a Vector3 with default of x=0: 0ms
@@ -180,33 +174,33 @@ The THREE object should be able to construct a Vector3 with default of x=0: 0ms
 			</ol>
 		</div>
 
-		<h2>Add your own code</h2>
+		<h2>加入你自己的代码</h2>
 		<div>
-			You need to do three things:
+			你需要做下面三件事:
 
 			<ol>
 				<li>
-					Write a test for the expected behaviour of your code, and place it under test/.
-					[link:https://github.com/air/encounter/blob/master/test/Physics-test.js Here] is an example from a real project.
+					为你的代码写一段测试程序来检验期望结果,并把它放在 test/ 目录下。
+					<a href="https://github.com/air/encounter/blob/master/test/Physics-test.js">这里</a>有一个实际项目的例子。
 				</li>
 
 				<li>
-					Export your functional code in such a way that nodejs can see it, for use in conjunction with require.
-					See it [link:https://github.com/air/encounter/blob/master/js/Physics.js here].
+					将你的代码以nodejs承认的方式导出,即可以通过require的方式引用。
+					参考<a href="https://github.com/air/encounter/blob/master/js/Physics.js">这份代码</a>。
 				</li>
 
 				<li>
-					Require your code into the test file, in the same way we did a require('three') in the example above.
+					在测试程序中通过require引入你自己的代码,就像上面例子中我们通过require('three')来引入一样。
 				</li>
 			</ol>
 
 			<p>
-				Items 2 and 3 will vary depending on how you manage your code. In the example of Physics.js
-		  	given above, the export part is right at the end. We assign an object to module.exports:
+				第2、3条会根据你组织代码的方式而改变。在上面给出的Physics.js的例子中,导出的部分在代码的最末尾。
+				我们将module.exports赋值为一个对象:
 			</p>
 			<code>
 //=============================================================================
-// make available in nodejs
+// 为了在nodejs中可用
 //=============================================================================
 if (typeof exports !== 'undefined')
 {
@@ -215,38 +209,35 @@ if (typeof exports !== 'undefined')
 			</code>
 		</div>
 
-		<h2>Dealing with dependencies</h2>
+		<h2>处理依赖</h2>
 		<div>
 			<p>
-				If you're already using something clever like require.js or browserify, skip this part.
+				如果你已经在使用require.js或者browserify之类的便捷工具,就跳过这个部分。
 			</p>
 			<p>
-				Typically a three.js project is going to run in the browser. Module loading is hence done by
-				the browser executing a bunch of script tags. Your individual files don't have to worry
-				about dependencies. In a nodejs context however, there is no index.html binding everything
-				together, so you have to be explicit.
+				一般来说,一个three.js项目将在浏览器中运行,浏览器会通过执行一系列script标签来加载模块。
+				你自己的文件不用考虑依赖的问题。然而在nodejs环境中,没有一个关联所有文件的index.html,所以你需要显式地加载。
 			</p>
 			<p>
-				If you're exporting a module that depends on other files, you're going to have to tell node to load them.
-				Here is one approach:
+				如果你要导出的模块还依赖其他文件,你需要告诉node去加载它们。下面是一种方式:
 			</p>
 			<ol>
 				<li>
-					At the start of your module, check to see if you're in a nodejs environment.
+					在你的模块顶部,检查是否处于nodejs环境中。
 				</li>
 				<li>
-					If so, explicitly declare your dependencies.
+					如果是,那就显式地声明你的依赖。
 				</li>
 				<li>
-					If not, you're probably in a browser so you don't need to do anything else.
+					如果不是,你多半处于浏览器环境中。这时候你不需要做任何多余操作。
 				</li>
 			</ol>
-			Example code from Physics.js:
+			用Physics.js中的代码举例:
 			<code>
 //=============================================================================
-// setup for server-side testing
+// 服务器端测试配置
 //=============================================================================
-if (typeof require === 'function') // test for nodejs environment
+if (typeof require === 'function') // 检测nodejs环境
 {
   var THREE = require('three');
   var MY3 = require('./MY3.js');

+ 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>

+ 1 - 1
docs/manual/zh/introduction/Browser-support.html

@@ -13,7 +13,7 @@
 	<h2>总览</h2>
 	<div>
 		<p>
-            在所有现代浏览器中,Three.js可以使用WebGL来渲染场景。对于较旧的浏览器,特别是Internet Explorer 10或者更低版本浏览器,你将需要回落到其它[link:https://github.com/mrdoob/three.js/tree/master/examples/js/renderers renderers](CSS2DRenderer、CSS3DRenderer、SVGRenderer、CanvasRenderer)。此外,你或许不得不包含一些额外的“填充物”来解决兼容性问题,特别是当你使用[link:https://github.com/mrdoob/three.js/tree/master/examples /examples]目录中的文件时。
+            在所有现代浏览器中,Three.js可以使用WebGL来渲染场景。对于较旧的浏览器,特别是Internet Explorer 10或者更低版本浏览器,你将需要回落到其它[link:https://github.com/mrdoob/three.js/tree/master/examples/js/renderers renderers](CSS2DRenderer、CSS3DRenderer、SVGRenderer)。此外,你或许不得不包含一些额外的“填充物”来解决兼容性问题,特别是当你使用[link:https://github.com/mrdoob/three.js/tree/master/examples /examples]目录中的文件时。
 		</p>
 		<p>
             注意:如果你并不需要支持较旧的浏览器,那就不推荐使用其他渲染器来进行渲染,因为与WebGLRenderer相比,其它渲染器渲染较慢,并且不支持WebGL的诸多特性。

+ 1 - 1
docs/manual/zh/introduction/FAQ.html

@@ -47,7 +47,7 @@ visible_height = 2 * Math.tan( ( Math.PI / 180 ) * camera.fov / 2 ) * distance_f
 		<h2>为什么我的物体的一部分是不可见的?</h2>
 		<p>
 			这可能是由于面消隐而导致的。面是具有朝向的,这个朝向决定了哪边是正面或者哪边是背面。
-			在正常情况下,渲染时会将背面进行消隐。要查看这是不是你所遇到的问题,请将material的slide更改为THREE.DoubleSide。
+			在正常情况下,渲染时会将背面进行消隐。要查看这是不是你所遇到的问题,请将material的side更改为THREE.DoubleSide。
 			<code>material.side = THREE.DoubleSide</code>
 		</p>
 	</body>

+ 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>

+ 33 - 34
docs/manual/zh/introduction/How-to-update-things.html

@@ -8,7 +8,7 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>如何更新场景([name]</h1>
 		<div>
 			<p>默认情况下,所有对象都会自动更新它们的矩阵(如果它们已添加到场景中)</p>
 			<code>
@@ -21,7 +21,7 @@ var object1 = new THREE.Object3D();
 var object2 = new THREE.Object3D();
 
 object1.add( object2 );
-scene.add( object1 ); //object1 and object2 will automatically update their matrices
+scene.add( object1 ); //object1 和 object2 会自动更新它们的矩阵
 			</code>
 		</div>
 
@@ -32,27 +32,27 @@ object.matrixAutoUpdate  = false;
 object.updateMatrix();
 		</code>
 
-		<h2>Geometries(几何形状)</h2>
+		<h2>几何形状(Geometries)</h2>
 		<div>
 			<h3>[page:BufferGeometry]</h3>
 			<div>
 				<p>
-					BufferGeometries 将信息(例如顶点位置,面索引,法线,颜色,uv和任何自定义属性) 存储在 [page:BufferAttribute buffers] - 也就是,
+					BufferGeometries 将信息(例如顶点位置,面索引,法线,颜色,uv和任何自定义属性)存储在[page:BufferAttribute buffers] —— 也就是,
 					[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays typed arrays].
 					这使得它们通常比标准Geometries更快,缺点是更难用。
 				</p>
 				<p>
-					关于更新BufferGeometries, 最重要的是理解你不能调整 buffers 大小(这种操作开销很大,	相当于创建了个新的geometry).
-					但你可以更新 buffers的内容.
+					关于更新BufferGeometries,最重要的是理解你不能调整 buffers 大小(这种操作开销很大,相当于创建了个新的geometry)。
+					但你可以更新 buffers的内容
 				</p>
 				<p>
 					这意味着如果你知道BufferGeometry的一个属性会增长,比如顶点的数量,
 					你必须预先分配足够大的buffer来容纳可能创建的任何新顶点。
-					当然,这也意味着BufferGeometry将有一个最大大小 - 无法创建一个可以高效地无限扩展的BufferGeometry。
+					当然,这也意味着BufferGeometry将有一个最大大小 —— 无法创建一个可以高效地无限扩展的BufferGeometry。
 				</p>
 				<p>
 					我们以在渲染时扩展的line来示例。我们将分配可容纳500个顶点的空间但起初仅绘制2个,使用
-					在500个顶点的缓冲区中,但首先只使用 [page:BufferGeometry.drawRange].
+					在500个顶点的缓冲区中,但首先只使用 [page:BufferGeometry.drawRange]
 				</p>
 				<code>
 var MAX_POINTS = 500;
@@ -106,14 +106,14 @@ line.geometry.setDrawRange( 0, newValue );
 					如果要在第一次渲染后更改position数值,则需要像这样设置needsUpdate标志:
 				</p>
 				<code>
-line.geometry.attributes.position.needsUpdate = true; // required after the first render
+line.geometry.attributes.position.needsUpdate = true; // 需要加在第一次渲染之后
 				</code>
 
 				<p>
-					[link:http://jsfiddle.net/w67tzfhx/ 这个fiddle] 展示了一个你可以参考的运动的line.
+					<a href="http://jsfiddle.net/w67tzfhx/">这个fiddle</a>展示了一个你可以参考的运动的line。
 				</p>
 
-				<h3>Examples:</h3>
+				<h3>例子:</h3>
 					[example:webgl_custom_attributes WebGL / custom / attributes]<br />
 					[example:webgl_buffergeometry_custom_attributes_particles WebGL / buffergeometry / custom / attributes / particles]
 
@@ -123,10 +123,9 @@ line.geometry.attributes.position.needsUpdate = true; // required after the firs
 			<h3>[page:Geometry]</h3>
 			<div>
 				<p>
-					以下标志控制各种geometry属性的更新. 仅对于需要更新的属性设置标志
-					,因为更新成本很高. 一旦buffers
-					改变, 这些标志位会自动重置为false. 你需要保持这些设置为true,如果你想要持续更新buffers. 请注意这仅适用于[page:Geometry]
-					而不是 [page:BufferGeometry].
+					以下标志控制各种geometry属性的更新。仅对于需要更新的属性设置标志,因为更新成本很高。
+					一旦buffers改变,这些标志位会自动重置为false。如果你想要持续更新buffers,你需要保持这些设置为true。
+					请注意这仅适用于[page:Geometry]而不是[page:BufferGeometry]。
 				</p>
 				<code>
 var geometry = new THREE.Geometry();
@@ -140,8 +139,8 @@ geometry.tangentsNeedUpdate = true;
 				</code>
 
 				<p>
-					在早于 [link:https://github.com/mrdoob/three.js/releases/tag/r66 r66]版本中, meshes
-					需要额外设定 <em>dynamic</em> 标志true (为了维持内部的 typed arrays):
+					在早于[link:https://github.com/mrdoob/three.js/releases/tag/r66 r66]版本中,meshes
+					需要额外设定 <em>dynamic</em> 标志为true (为了维持内部的 typed arrays):
 				</p>
 
 				<code>
@@ -149,7 +148,7 @@ geometry.tangentsNeedUpdate = true;
 		geometry.dynamic = true;
 				</code>
 
-				<h3>Examples:</h3>
+				<h3>例子:</h3>
 					[example:webgl_geometry_dynamic WebGL / geometry / dynamic]<br />
 			</div>
 
@@ -158,19 +157,19 @@ geometry.tangentsNeedUpdate = true;
 
 
 
-		<h2>Materials(材质)</h2>
+		<h2>材质(Materials)</h2>
 		<div>
-			<p>所有uniforms值都可以自由改变 (e.g. colors, textures, opacity, etc), 这些数值在每帧都发给shader .</p>
+			<p>所有uniforms值都可以自由改变(比如 colors, textures, opacity 等等),这些数值在每帧都发给shader。</p>
 
-			<p>GL状态相关参数也可以随时改变 (depthTest, blending, polygonOffset, etc).</p>
+			<p>GL状态相关参数也可以随时改变(depthTest, blending, polygonOffset 等)。</p>
 
-			<p>平滑/平滑阴影被作到法线. 你需要重置法线 buffer (见上).</p>
+			<p>平整/光滑阴影被作到法线。你需要重置法线 buffer(见上)。</p>
 
-			<p>在运行时无法轻松更改以下属性 (一旦material被渲染了一次):</p>
+			<p>在运行时无法轻松更改以下属性(一旦material被渲染了一次):</p>
 			<ul>
 				<li>uniforms的数量和类型</li>
 				<li>lights的数量和类型</li>
-				<li>存在与否
+				<li>是否存在
 					<ul>
 						<li>texture</li>
 						<li>fog</li>
@@ -183,42 +182,42 @@ geometry.tangentsNeedUpdate = true;
 				</li>
 			</ul>
 
-			<p>这些变化需要建立新的shader程序. 你需要设置</p>
+			<p>这些变化需要建立新的shader程序你需要设置</p>
 			<code>material.needsUpdate = true</code>
 
-			<p>请记住,这可能会非常缓慢并导致帧率的波动。 (特别是在Windows上,因为shader编译在directx中比opengl慢).</p>
+			<p>请记住,这可能会非常缓慢并导致帧率的波动。(特别是在Windows上,因为shader编译在directx中比opengl慢)。</p>
 
-			<p>为了获得更流畅的体验,您可以通过“虚拟”值(如零强度光,白色纹理或零密度雾)在一定程度上模拟这些功能的变化.</p>
+			<p>为了获得更流畅的体验,您可以通过“虚拟”值(如零强度光,白色纹理或零密度雾)在一定程度上模拟这些功能的变化</p>
 
-			<p>您可以自由更改用于几何块的材质,但是无法更改对象如何划分为块(根据面材料). </p>
+			<p>您可以自由更改用于几何块的材质,但是无法更改对象如何划分为块(根据面材料)</p>
 
 			<h3>如果你需要在运行时使用不同的材料配置:</h3>
-			<p>如果材料/块的数量很少,您可以事先预先划分物体(例如,人的头发/脸部/身体/上衣/裤子,汽车的前部/侧面/顶部/玻璃/轮胎/内部). </p>
+			<p>如果材料/块的数量很少,您可以事先预先划分物体(例如,人的头发/脸部/身体/上衣/裤子,汽车的前部/侧面/顶部/玻璃/轮胎/内部)</p>
 
 			<p>如果数量很大(例如,每个面可能有所不同),请考虑不同的解决方案,例如使用属性/纹理来驱动不同的每个面部外观。</p>
 
-			<h3>Examples:</h3>
+			<h3>例子:</h3>
 			[example:webgl_materials_cars WebGL / materials / cars]<br />
 			[example:webgl_postprocessing_dof WebGL / webgl_postprocessing / dof]
 		</div>
 
 
-		<h2>Textures(纹理)</h2>
+		<h2>纹理(Textures)</h2>
 		<div>
 			<p>如果更改了图像,画布,视频和数据纹理,则需要设置以下标志:</p>
 			<code>
 				texture.needsUpdate = true;
 			</code>
-			<p>Render targets update automatically.</p>
+			<p>渲染对象就会自动更新。</p>
 
-			<h3>Examples:</h3>
+			<h3>例子:</h3>
 			[example:webgl_materials_video WebGL / materials / video]<br />
 			[example:webgl_rtt WebGL / rtt]
 
 		</div>
 
 
-		<h2>Cameras(相机)</h2>
+		<h2>相机(Cameras)</h2>
 		<div>
 			<p>相机的位置和目标会自动更新。 如果你需要改变</p>
 			<ul>

+ 17 - 19
docs/manual/zh/introduction/How-to-use-WebGL2.html

@@ -10,20 +10,19 @@
 </head>
 
 <body>
-	<h1>[name]</h1>
+	<h1>如何使用WebGL 2([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.
+		从R95版本起,three.js便开始支持使用WebGL 2环境来进行渲染。默认情况下,当创建一个*WebGLRenderer*实例时,
+		three.js总是使用WebGL 1环境。如果你希望来使用WebGL 2环境,请参阅以下的工作流程。
 	</p>
 
-	<h2>Workflow</h2>
+	<h2>工作流程</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.
+		由于WebGL 2并不被所有支持WebGL 1的设备所支持,因此检查各种设备上WebGL 2的可用性是非常重要的。
+		要对其可用性进行检查,请将[link:https://github.com/mrdoob/three.js/blob/master/examples/js/WebGL.js WebGL.js]包含到你的项目中。
 	</p>
 
 	<code>
@@ -31,7 +30,7 @@
 	</code>
 
 	<p>
-		Next, use a code similar to the following in order to perform the availability check.
+		接下来,使用和下列代码相似的代码来进行可用性检查。
 	</p>
 
 	<code>
@@ -44,9 +43,8 @@ if ( WEBGL.isWebGL2Available() === false ) {
 	</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.
+		现在,你就可以将由*WebGLRenderer*所构造的renderer,应用到HTML5 Canvas元素和对应的WebGL 2绘图环境上了。
+		最终,three.js将在内部使用所给定的绘图环境来渲染,并自动将内置的材质的着色器代码转化为GLSL ES 3.00。
 	</p>
 
 	<code>
@@ -56,8 +54,8 @@ 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.
+		有时候,写一些自定义着色器也是非常必要的。请使用下列的代码模板作为你自己来进行实现的基础。
+		首先是GLSL ES 3.00代码。
 	</p>
 
 	<code>
@@ -85,7 +83,7 @@ void main() {
 &lt;/script&gt;
 	</code>
 	<p>
-		Second, the corresponding material creation in JavaScript.
+		然后是使用JavaScript来创建的对应的材质。
 	</p>
 	<code>
 var material = new THREE.ShaderMaterial( {
@@ -94,20 +92,20 @@ var material = new THREE.ShaderMaterial( {
 } );
 	</code>
 
-	<h2>Next Steps</h2>
+	<h2>接下来</h2>
 
 	<p>
-		Have a look at one of the official examples in order to see WebGL 2 features in action.<br /><br />
+		请参阅官方示例,来看一看WebGL 2各种特性的运行。<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>
+	<h2>支持的特性</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.
+		当前,three.js引擎仅支持所有现有的WebGL 2特性的一个子集。
+		下列列表展现了在最新版本three.js中,已可用的特性的概览。
 		<ul>
 			<li>3D Textures</li>
 		</ul>

+ 14 - 14
docs/manual/zh/introduction/Matrix-transformations.html

@@ -8,24 +8,24 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>矩阵变换([name]</h1>
 
 		<p>
-				Three.js使用*matrix*编码3D变换 - 平移(位置),旋转和缩放。 [page:Object3D]的每个实例都有一个[page:Object3D.matrix matrix],用于存储该对象的位置,旋转和比例。 本页介绍如何更新对象的转换。
+				Three.js使用*matrix*编码3D变换 —— 平移(位置),旋转和缩放。
+				[page:Object3D]的每个实例都有一个[page:Object3D.matrix matrix],用于存储该对象的位置,旋转和比例。本页介绍如何更新对象的变换。
 		</p>
 
-		<h2>Convenience properties and *matrixAutoUpdate*(便利属性和 *matrixAutoUpdate*)</h2>
+		<h2>便利的属性和*matrixAutoUpdate*(Convenience properties and *matrixAutoUpdate*)</h2>
 
 		有两种方法可以更新对象的转换:
 		<ol>
 			<li>
-				修改对象的* position *,* quaternion *和* scale *属性,让three.js重新计算
-				来自这些属性的对象矩阵:
+				修改对象的*position*,*quaternion*和*scale*属性,让three.js重新计算来自这些属性的对象矩阵:
 				<code>
 				object.position.copy(start_position);
 				object.quaternion.copy(quaternion);
 				</code>
-				默认情况下,* matrixAutoUpdate *属性设置为true,并且将自动重新计算矩阵。
+				默认情况下,*matrixAutoUpdate*属性设置为true,并且将自动重新计算矩阵。
 如果对象是静态的,或者您希望在重新计算时手动控制,则可以通过将属性设置为false来获得更好的性能:
 				<code>
 				object.matrixAutoUpdate = false;
@@ -42,25 +42,25 @@
 				object.matrix.setPosition(start_position);
 				object.matrixAutoUpdate = false;
 				</code>
-				请注意,在这种情况下,* matrixAutoUpdate * <em>必须</em>设置为* false *,并且您应该确保<em>不</em>调用* updateMatrix *。 调用* updateMatrix *将破坏对矩阵所做的手动更改,从* position *,* scale *重新计算矩阵,依此类推。
+				请注意,在这种情况下,*matrixAutoUpdate* <em> 必须 </em>设置为*false*,并且您应该确保<em> 不 </em>调用*updateMatrix*。
+				调用*updateMatrix*将破坏对矩阵所做的手动更改,从*position*,*scale*重新计算矩阵,依此类推。
 			</li>
 		</ol>
 
-		<h2>Object and world matrices(对象和世界矩阵)</h2>
+		<h2>对象和世界矩阵(Object and world matrices)</h2>
 		<p>
-		对象的[page:Object3D.matrix matrix]将对象的转换<em> 相对于 </em>对象的[page:Object3D.parent parent]; 要在<em> 世界 </em>坐标中获取对象的转换,您必须访问该对象的[page:Object3D.matrixWorld]。
-		An object's [page:Object3D.matrix matrix] stores the object's transformation 
+		一个对象的[page:Object3D.matrix matrix]存储了该对象<em> 相对于 </em>其[page:Object3D.parent](父节点)的变换。要在<em> 世界 </em>坐标系中获取对象的转换,您必须访问该对象的[page:Object3D.matrixWorld]。
 		</p>
 		<p>
-		当父对象或子对象的转换发生更改时,可以通过调用[page:Object3D.updateMatrixWorld updateMatrixWorld]()来请求更新子对象的[page:Object3D.matrixWorld matrixWorld]。
+		当父对象或子对象的变换发生更改时,可以通过调用[page:Object3D.updateMatrixWorld updateMatrixWorld()]来请求更新子对象的[page:Object3D.matrixWorld matrixWorld]。
 		</p>
 
-		<h2>Rotation and Quaternion(旋转和四元数)</h2>
+		<h2>旋转和四元数(Rotation and Quaternion)</h2>
 		<p>
-		Three.js提供了两种表示3D旋转的方式:[page:Euler Euler angles]和[page:Quaternion Quaternions],以及两者之间的转换方法。 欧拉角受到称为“万向节锁定”的问题,其中某些配置可能失去一定程度的自由度(防止物体绕一个轴旋转)。 因此,对象旋转<em>始终</em>存储在对象的[page:Object3D.quaternion quaternion]中。
+		Three.js提供了两种表示3D旋转的方式:[page:Euler Euler angles](欧拉角)和[page:Quaternion Quaternions](四元数),以及两者之间的转换方法。 欧拉角有称为“万向节锁定”的问题,其中某些配置可能失去一定程度的自由度(防止物体绕一个轴旋转)。 因此,对象旋转<em> 始终 </em>存储在对象的[page:Object3D.quaternion quaternion]中。
 		</p>
 		<p>
-		该库的早期版本包含* useQuaternion *属性,当设置为false时,将导致对象的[page:Object3D.matrix矩阵]从欧拉角计算。 这种做法已被弃用 - 相反,您应该使用[page:Object3D.setRotationFromEuler setRotationFromEuler]方法,该方法将更新四元数。	
+		该库的早期版本包含*useQuaternion*属性,当设置为false时,将导致对象的[page:Object3D.matrix matrix]从欧拉角计算。这种做法已被弃用 - 作为代替,您应该使用[page:Object3D.setRotationFromEuler setRotationFromEuler]方法,该方法将更新四元数。
 		</p>
 
 	</body>

+ 34 - 25
docs/scenes/bones-browser.html

@@ -43,12 +43,10 @@
 			var gui, scene, camera, renderer, orbit, lights, mesh, bones, skeletonHelper;
 
 			var state = {
-
-				animateBones : false
-
+				animateBones: false
 			};
 
-			function initScene () {
+			function initScene() {
 
 				gui = new dat.GUI();
 				scene = new THREE.Scene();
@@ -92,35 +90,46 @@
 
 			}
 
-			function createGeometry ( sizing ) {
+			function createGeometry( sizing ) {
 
-				var geometry = new THREE.CylinderGeometry(
-					5,                       // radiusTop
-					5,                       // radiusBottom
-					sizing.height,           // height
-					8,                       // radiusSegments
+				var geometry = new THREE.CylinderBufferGeometry(
+					5, // radiusTop
+					5, // radiusBottom
+					sizing.height, // height
+					8, // radiusSegments
 					sizing.segmentCount * 3, // heightSegments
-					true                     // openEnded
+					true // openEnded
 				);
 
-				for ( var i = 0; i < geometry.vertices.length; i ++ ) {
+				var position = geometry.attributes.position;
+
+				var vertex = new THREE.Vector3();
+
+				var skinIndices = [];
+				var skinWeights = [];
+
+				for ( var i = 0; i < position.count; i ++ ) {
+
+					vertex.fromBufferAttribute( position, i );
 
-					var vertex = geometry.vertices[ i ];
 					var y = ( vertex.y + sizing.halfHeight );
 
 					var skinIndex = Math.floor( y / sizing.segmentHeight );
 					var skinWeight = ( y % sizing.segmentHeight ) / sizing.segmentHeight;
 
-					geometry.skinIndices.push( new THREE.Vector4( skinIndex, skinIndex + 1, 0, 0 ) );
-					geometry.skinWeights.push( new THREE.Vector4( 1 - skinWeight, skinWeight, 0, 0 ) );
+					skinIndices.push( skinIndex, skinIndex + 1, 0, 0 );
+					skinWeights.push( 1 - skinWeight, skinWeight, 0, 0 );
 
 				}
 
+				geometry.addAttribute( 'skinIndex', new THREE.Uint16BufferAttribute( skinIndices, 4 ) );
+				geometry.addAttribute( 'skinWeight', new THREE.Float32BufferAttribute( skinWeights, 4 ) );
+
 				return geometry;
 
 			}
 
-			function createBones ( sizing ) {
+			function createBones( sizing ) {
 
 				bones = [];
 
@@ -142,10 +151,10 @@
 
 			}
 
-			function createMesh ( geometry, bones ) {
+			function createMesh( geometry, bones ) {
 
 				var material = new THREE.MeshPhongMaterial( {
-					skinning : true,
+					skinning: true,
 					color: 0x156289,
 					emissive: 0x072534,
 					side: THREE.DoubleSide,
@@ -167,7 +176,7 @@
 
 			}
 
-			function setupDatGui () {
+			function setupDatGui() {
 
 				var folder = gui.addFolder( "General Options" );
 
@@ -213,7 +222,7 @@
 
 			}
 
-			function initBones () {
+			function initBones() {
 
 				var segmentHeight = 8;
 				var segmentCount = 4;
@@ -221,10 +230,10 @@
 				var halfHeight = height * 0.5;
 
 				var sizing = {
-					segmentHeight : segmentHeight,
-					segmentCount : segmentCount,
-					height : height,
-					halfHeight : halfHeight
+					segmentHeight: segmentHeight,
+					segmentCount: segmentCount,
+					height: height,
+					halfHeight: halfHeight
 				};
 
 				var geometry = createGeometry( sizing );
@@ -236,7 +245,7 @@
 
 			}
 
-			function render () {
+			function render() {
 
 				requestAnimationFrame( render );
 

+ 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 {

+ 4 - 6
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-12-02 -->
-		<meta http-equiv="origin-trial" data-feature="WebXR Device API (For Chrome M69+)" data-expires="2018-12-02" content="Ah46myef4Ax/+fcLtkeotXmIqnvun4lg4bYbHVttuJvbsWiE4oacrvroId7hbCEb4/byxFHIO6+uwq4pwr6RfQkAAABTeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkRldmljZU02OSIsImV4cGlyeSI6MTU0Mzc1ODIyNn0=">
-		<!-- Origin Trial Token, feature = WebXR Gamepad Support, origin = https://threejs.org, expires = 2018-12-02 -->
-		<meta http-equiv="origin-trial" data-feature="WebXR Gamepad Support" data-expires="2018-12-02" content="AqI9LIanbGxr/HoTOsYCUNxG82Vy94NZbjhv83R+bF+5NX2jiZOaf7ny+mFoTUP5wrWpYlPjQ6+HeVas9f1lRwYAAABYeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkdhbWVwYWRTdXBwb3J0IiwiZXhwaXJ5IjoxNTQzNzU4MjI2fQ==">
+		<!-- 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" />

+ 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;
 

+ 2 - 2
editor/js/Menubar.Play.js

@@ -20,13 +20,13 @@ Menubar.Play = function ( editor ) {
 		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 );

+ 4 - 2
editor/js/Sidebar.Geometry.BufferGeometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.BufferGeometry = function ( editor ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -20,7 +22,7 @@ Sidebar.Geometry.BufferGeometry = function ( editor ) {
 			container.clear();
 			container.setDisplay( 'block' );
 
-			var text = new UI.Text( 'Attributes' ).setWidth( '90px' );
+			var text = new UI.Text( strings.getKey( 'sidebar/geometry/buffer_geometry/attributes' ) ).setWidth( '90px' );
 			container.add( text );
 
 			var container2 = new UI.Span().setDisplay( 'inline-block' ).setWidth( '160px' );
@@ -30,7 +32,7 @@ Sidebar.Geometry.BufferGeometry = function ( editor ) {
 
 			if ( index !== null ) {
 
-				container2.add( new UI.Text( 'index' ).setWidth( '80px' ) );
+				container2.add( new UI.Text( strings.getKey( 'sidebar/geometry/buffer_geometry/index' ) ).setWidth( '80px' ) );
 				container2.add( new UI.Text( ( index.count ).format() ).setFontSize( '12px' ) );
 				container2.add( new UI.Break() );
 

+ 6 - 4
editor/js/Sidebar.Geometry.CircleGeometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.CircleGeometry = function ( editor, object ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -16,7 +18,7 @@ Sidebar.Geometry.CircleGeometry = function ( editor, object ) {
 	var radiusRow = new UI.Row();
 	var radius = new UI.Number( parameters.radius ).onChange( update );
 
-	radiusRow.add( new UI.Text( 'Radius' ).setWidth( '90px' ) );
+	radiusRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/circle_geometry/radius' ) ).setWidth( '90px' ) );
 	radiusRow.add( radius );
 
 	container.add( radiusRow );
@@ -26,7 +28,7 @@ Sidebar.Geometry.CircleGeometry = function ( editor, object ) {
 	var segmentsRow = new UI.Row();
 	var segments = new UI.Integer( parameters.segments ).setRange( 3, Infinity ).onChange( update );
 
-	segmentsRow.add( new UI.Text( 'Segments' ).setWidth( '90px' ) );
+	segmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/circle_geometry/segments' ) ).setWidth( '90px' ) );
 	segmentsRow.add( segments );
 
 	container.add( segmentsRow );
@@ -36,7 +38,7 @@ Sidebar.Geometry.CircleGeometry = function ( editor, object ) {
 	var thetaStartRow = new UI.Row();
 	var thetaStart = new UI.Number( parameters.thetaStart * THREE.Math.RAD2DEG ).setStep( 10 ).onChange( update );
 
-	thetaStartRow.add( new UI.Text( 'Theta start' ).setWidth( '90px' ) );
+	thetaStartRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/circle_geometry/thetastart' ) ).setWidth( '90px' ) );
 	thetaStartRow.add( thetaStart );
 
 	container.add( thetaStartRow );
@@ -46,7 +48,7 @@ Sidebar.Geometry.CircleGeometry = function ( editor, object ) {
 	var thetaLengthRow = new UI.Row();
 	var thetaLength = new UI.Number( parameters.thetaLength * THREE.Math.RAD2DEG ).setStep( 10 ).onChange( update );
 
-	thetaLengthRow.add( new UI.Text( 'Theta length' ).setWidth( '90px' ) );
+	thetaLengthRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/circle_geometry/thetalength' ) ).setWidth( '90px' ) );
 	thetaLengthRow.add( thetaLength );
 
 	container.add( thetaLengthRow );

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

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.CylinderGeometry = function ( editor, object ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -16,7 +18,7 @@ Sidebar.Geometry.CylinderGeometry = function ( editor, object ) {
 	var radiusTopRow = new UI.Row();
 	var radiusTop = new UI.Number( parameters.radiusTop ).onChange( update );
 
-	radiusTopRow.add( new UI.Text( 'Radius top' ).setWidth( '90px' ) );
+	radiusTopRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/cylinder_geometry/radiustop' ) ).setWidth( '90px' ) );
 	radiusTopRow.add( radiusTop );
 
 	container.add( radiusTopRow );
@@ -26,7 +28,7 @@ Sidebar.Geometry.CylinderGeometry = function ( editor, object ) {
 	var radiusBottomRow = new UI.Row();
 	var radiusBottom = new UI.Number( parameters.radiusBottom ).onChange( update );
 
-	radiusBottomRow.add( new UI.Text( 'Radius bottom' ).setWidth( '90px' ) );
+	radiusBottomRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/cylinder_geometry/radiusbottom' ) ).setWidth( '90px' ) );
 	radiusBottomRow.add( radiusBottom );
 
 	container.add( radiusBottomRow );
@@ -36,7 +38,7 @@ Sidebar.Geometry.CylinderGeometry = 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/cylinder_geometry/height' ) ).setWidth( '90px' ) );
 	heightRow.add( height );
 
 	container.add( heightRow );
@@ -46,7 +48,7 @@ Sidebar.Geometry.CylinderGeometry = function ( editor, object ) {
 	var radialSegmentsRow = new UI.Row();
 	var radialSegments = new UI.Integer( parameters.radialSegments ).setRange( 1, Infinity ).onChange( update );
 
-	radialSegmentsRow.add( new UI.Text( 'Radial segments' ).setWidth( '90px' ) );
+	radialSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/cylinder_geometry/radialsegments' ) ).setWidth( '90px' ) );
 	radialSegmentsRow.add( radialSegments );
 
 	container.add( radialSegmentsRow );
@@ -56,7 +58,7 @@ Sidebar.Geometry.CylinderGeometry = 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 segments' ).setWidth( '90px' ) );
+	heightSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/cylinder_geometry/heightsegments' ) ).setWidth( '90px' ) );
 	heightSegmentsRow.add( heightSegments );
 
 	container.add( heightSegmentsRow );
@@ -66,7 +68,7 @@ Sidebar.Geometry.CylinderGeometry = function ( editor, object ) {
 	var openEndedRow = new UI.Row();
 	var openEnded = new UI.Checkbox( parameters.openEnded ).onChange( update );
 
-	openEndedRow.add( new UI.Text( 'Open ended' ).setWidth( '90px' ) );
+	openEndedRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/cylinder_geometry/openended' ) ).setWidth( '90px' ) );
 	openEndedRow.add( openEnded );
 
 	container.add( openEndedRow );

部分文件因为文件数量过多而无法显示