Преглед изворни кода

Merge remote-tracking branch 'upstream/dev' into dev

Dukuo пре 6 година
родитељ
комит
ef698b9021
100 измењених фајлова са 3392 додато и 3369 уклоњено
  1. 1 1
      .travis.yml
  2. 4 4
      docs/api/en/core/BufferAttribute.html
  3. 5 0
      docs/api/en/core/Layers.html
  4. 1 1
      docs/api/en/textures/Texture.html
  5. 8 8
      docs/api/zh/animation/AnimationClip.html
  6. 21 30
      docs/api/zh/animation/AnimationMixer.html
  7. 20 23
      docs/api/zh/animation/AnimationObjectGroup.html
  8. 11 9
      docs/api/zh/animation/AnimationUtils.html
  9. 58 91
      docs/api/zh/animation/KeyframeTrack.html
  10. 12 13
      docs/api/zh/animation/PropertyBinding.html
  11. 17 18
      docs/api/zh/animation/PropertyMixer.html
  12. 1 1
      docs/api/zh/cameras/ArrayCamera.html
  13. 22 26
      docs/api/zh/cameras/Camera.html
  14. 20 20
      docs/api/zh/cameras/CubeCamera.html
  15. 52 51
      docs/api/zh/cameras/OrthographicCamera.html
  16. 61 64
      docs/api/zh/cameras/PerspectiveCamera.html
  17. 14 17
      docs/api/zh/cameras/StereoCamera.html
  18. 5 5
      docs/api/zh/constants/Animation.html
  19. 5 5
      docs/api/zh/constants/Core.html
  20. 9 9
      docs/api/zh/constants/CustomBlendingEquations.html
  21. 17 19
      docs/api/zh/constants/DrawModes.html
  22. 33 32
      docs/api/zh/constants/Materials.html
  23. 22 22
      docs/api/zh/constants/Renderer.html
  24. 151 157
      docs/api/zh/constants/Textures.html
  25. 196 209
      docs/api/zh/deprecated/DeprecatedList.html
  26. 8 8
      docs/api/zh/extras/objects/ImmediateRenderObject.html
  27. 12 20
      docs/api/zh/lights/shadows/DirectionalLightShadow.html
  28. 25 31
      docs/api/zh/lights/shadows/LightShadow.html
  29. 13 24
      docs/api/zh/lights/shadows/SpotLightShadow.html
  30. 24 37
      docs/api/zh/materials/LineBasicMaterial.html
  31. 21 26
      docs/api/zh/materials/LineDashedMaterial.html
  32. 273 330
      docs/api/zh/materials/Material.html
  33. 44 70
      docs/api/zh/materials/MeshBasicMaterial.html
  34. 29 47
      docs/api/zh/materials/MeshDepthMaterial.html
  35. 55 88
      docs/api/zh/materials/MeshLambertMaterial.html
  36. 17 23
      docs/api/zh/materials/MeshNormalMaterial.html
  37. 67 124
      docs/api/zh/materials/MeshPhongMaterial.html
  38. 21 30
      docs/api/zh/materials/MeshPhysicalMaterial.html
  39. 80 141
      docs/api/zh/materials/MeshStandardMaterial.html
  40. 17 21
      docs/api/zh/materials/MeshToonMaterial.html
  41. 17 20
      docs/api/zh/materials/PointsMaterial.html
  42. 13 18
      docs/api/zh/materials/RawShaderMaterial.html
  43. 112 174
      docs/api/zh/materials/ShaderMaterial.html
  44. 15 18
      docs/api/zh/materials/ShadowMaterial.html
  45. 19 20
      docs/api/zh/materials/SpriteMaterial.html
  46. 59 86
      docs/api/zh/math/Box2.html
  47. 11 11
      docs/api/zh/math/interpolants/CubicInterpolant.html
  48. 9 9
      docs/api/zh/math/interpolants/DiscreteInterpolant.html
  49. 11 11
      docs/api/zh/math/interpolants/LinearInterpolant.html
  50. 11 11
      docs/api/zh/math/interpolants/QuaternionLinearInterpolant.html
  51. 14 15
      docs/api/zh/objects/Bone.html
  52. 10 11
      docs/api/zh/objects/Group.html
  53. 24 26
      docs/api/zh/objects/Skeleton.html
  54. 30 36
      docs/api/zh/objects/SkinnedMesh.html
  55. 21 25
      docs/api/zh/objects/Sprite.html
  56. 38 47
      docs/api/zh/renderers/WebGLRenderTarget.html
  57. 27 31
      docs/api/zh/renderers/WebGLRenderTargetCube.html
  58. 153 186
      docs/api/zh/renderers/WebGLRenderer.html
  59. 1 0
      docs/list.js
  60. 84 0
      docs/manual/en/introduction/How-to-create-VR-content.html
  61. 48 68
      docs/manual/zh/introduction/Animation-system.html
  62. 17 15
      docs/manual/zh/introduction/Browser-support.html
  63. 7 7
      docs/manual/zh/introduction/Code-style-guide.html
  64. 24 23
      docs/manual/zh/introduction/Creating-a-scene.html
  65. 24 34
      docs/manual/zh/introduction/Creating-text.html
  66. 13 11
      docs/manual/zh/introduction/Drawing-lines.html
  67. 19 20
      docs/manual/zh/introduction/FAQ.html
  68. 46 54
      docs/manual/zh/introduction/How-to-run-things-locally.html
  69. 43 49
      docs/manual/zh/introduction/How-to-update-things.html
  70. 17 17
      docs/manual/zh/introduction/Import-via-modules.html
  71. 39 59
      docs/manual/zh/introduction/Loading-3D-models.html
  72. 17 16
      docs/manual/zh/introduction/Matrix-transformations.html
  73. 5 6
      docs/manual/zh/introduction/Migration-guide.html
  74. 21 25
      docs/manual/zh/introduction/Useful-links.html
  75. 4 6
      docs/manual/zh/introduction/WebGL-compatibility-check.html
  76. 4 0
      editor/index.html
  77. 2 0
      examples/files.js
  78. 63 6
      examples/js/controls/PointerLockControls.js
  79. 18 3
      examples/js/loaders/AssimpJSONLoader.js
  80. 17 2
      examples/js/loaders/AssimpLoader.js
  81. 11 3
      examples/js/loaders/ColladaLoader.js
  82. 234 119
      examples/js/loaders/FBXLoader.js
  83. 18 0
      examples/js/loaders/PLYLoader.js
  84. 324 0
      examples/js/shaders/VolumeShader.js
  85. 25 66
      examples/misc_controls_pointerlock.html
  86. 0 120
      examples/models/json/lightmap/lightmap.json
  87. 14 0
      examples/models/nrrd/README.txt
  88. BIN
      examples/models/nrrd/stent.nrrd
  89. BIN
      examples/textures/cm_gray.png
  90. BIN
      examples/textures/cm_viridis.png
  91. 0 1
      examples/webgl_animation_skinning_morph.html
  92. 1 1
      examples/webgl_decals.html
  93. 2 2
      examples/webgl_geometry_nurbs.html
  94. 2 2
      examples/webgl_geometry_shapes.html
  95. 3 6
      examples/webgl_geometry_spline_editor.html
  96. 1 1
      examples/webgl_interactive_buffergeometry.html
  97. 0 13
      examples/webgl_interactive_lines.html
  98. 154 0
      examples/webgl_layers.html
  99. 1 1
      examples/webgl_lines_dashed.html
  100. 3 3
      examples/webgl_lines_sphere.html

+ 1 - 1
.travis.yml

@@ -1,5 +1,5 @@
 language: node_js
 node_js:
-  - "8.9.4"
+  - node
 script:
   - npm run travis

+ 4 - 4
docs/api/en/core/BufferAttribute.html

@@ -35,12 +35,12 @@
 		attribute is storing a 3-component vector (such as a position, normal, or color), then itemSize should be 3.
 		<br /><br />
 
-		[page:Boolean normalized] -- (optional) Indicates how the underlying data in the buffer maps
-		to the values in the GLSL code. For instance, if [page:TypedArray array] is an instance of
-		UInt16Array, and [page:Boolean normalized] is true, the values 0 - +65535 in the array
+		[page:Boolean normalized] -- (optional) Applies to integer data only. Indicates how the underlying data
+		in the buffer maps to the values in the GLSL code. For instance, if [page:TypedArray array] is an instance
+		of UInt16Array, and [page:Boolean normalized] is true, the values 0 - +65535 in the array
 		 data will be mapped to 0.0f - +1.0f in the GLSL attribute. An Int16Array (signed) would map
 		 from -32767 - +32767  to -1.0f - +1.0f. If [page:Boolean normalized] is false, the values
-		 will be converted to floats which contain the exact value, i.e. 32767 becomes 32767.0f.
+		 will be converted to floats unmodified, i.e. 32767 becomes 32767.0f.
 		</p>
 
 		<h2>Properties</h2>

+ 5 - 0
docs/api/en/core/Layers.html

@@ -21,6 +21,11 @@
 			All classes that inherit from [page:Object3D] have an [page:Object3D.layers] property which is an instance of this class.
 		</p>
 
+		<h2>Examples</h2>
+
+		<p>
+			[example:webgl_layers WebGL / layers]
+		</p>
 
 		<h2>Constructor</h2>
 

+ 1 - 1
docs/api/en/textures/Texture.html

@@ -149,7 +149,7 @@
 
 		<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*.
+		How much the texture is rotated around the center point, in radians. Positive values are counter-clockwise. Default is *0*.
 		</p>
 
 		<h3>[property:Vector2 center]</h3>

+ 8 - 8
docs/api/zh/animation/AnimationClip.html

@@ -11,7 +11,7 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			动画剪辑(AnimationClip)是一个可重用的关键帧轨集,它代表动画。<br /><br />
+			动画剪辑(AnimationClip)是一个可重用的关键帧轨集,它代表动画。<br /><br />
 
 			在使用手册的“下一步”章节中,“动画系统”一文对three.js动画系统中的不同元素作出了概述
 		</p>
@@ -24,7 +24,7 @@
 		<p>
 			[page:String name] - 此剪辑的名称<br />
 			[page:Number duration] - 持续时间 (单位秒). 如果传入负数, 持续时间将会从传入的数组中计算得到。<br />
-			[page:Array tracks] - 一个由关键帧轨([page:KeyframeTrack KeyframeTracks])组成的数组。<br /><br />
+			[page:Array tracks] - 一个由关键帧轨([page:KeyframeTrack KeyframeTracks])组成的数组。<br /><br />
 
 			说明: 与其直接调用构造函数实例化一个动画剪辑, 不如使用其静态方法中的一个来创建:
 			用JSON ([page:.parse parse]), 用变形目标序列([page:.CreateFromMorphTargetSequence CreateFromMorphTargetSequence],
@@ -38,7 +38,7 @@
 
 		<h3>[property:Number duration]</h3>
 		<p>
-			剪辑的持续时间 (单位秒). 可以通过[page:.resetDuration resetDuration]从轨数组([page:.tracks tracks])计算出来。
+			剪辑的持续时间 (单位秒). 可以通过[page:.resetDuration resetDuration]从轨数组([page:.tracks tracks])计算出来。
 
 		</p>
 
@@ -49,7 +49,7 @@
 
 		<h3>[property:Array tracks]</h3>
 		<p>
-            一个包含该剪辑中有动画的所有属性的关键帧轨([page:KeyframeTrack])的数组。
+            一个包含该剪辑中有动画的所有属性的关键帧轨([page:KeyframeTrack])的数组。
 		</p>
 
 		<h3>[property:String uuid]</h3>
@@ -64,24 +64,24 @@
 
 		<h3>[method:this optimize]()</h3>
 		<p>
-            通过移除等效的顺序键(在变形目标序列中很常见)来优化每一个轨
+            通过移除等效的顺序键(在变形目标序列中很常见)来优化每一个轨
 
 		</p>
 
 		<h3>[method:this resetDuration]()</h3>
 		<p>
-			将剪辑的持续时间([page:.duration duration])设为最长的关键帧轨([page:KeyframeTrack])的持续时间。
+			将剪辑的持续时间([page:.duration duration])设为最长的关键帧轨([page:KeyframeTrack])的持续时间。
 			.
 		</p>
 
 		<h3>[method:this trim]()</h3>
 		<p>
-			修剪所有的轨到该剪辑的持续时间。
+			修剪所有的轨到该剪辑的持续时间。
 		</p>
 
 		<h3>[method:Boolean validate]()</h3>
 		<p>
-            对剪辑中的每个轨执行最小验证。如果所有轨道都有效,返回true。
+            对剪辑中的每个轨执行最小验证。如果所有轨道都有效,返回true。
 		</p>
 
 

+ 21 - 30
docs/api/zh/animation/AnimationMixer.html

@@ -11,98 +11,89 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			The AnimationMixer is a player for animations on a particular object in the scene. When
-			multiple objects in the scene are animated independently, one AnimationMixer may be used for
-			each object.<br /><br />
+            动画混合器是用于场景中特定对象的动画的播放器。当场景中的多个对象独立动画时,每个对象都可以使用同一个动画混合器。<br /><br />
 
-			For an overview of the different elements of the three.js animation system see the
-			"Animation System" article in the "Next Steps" section of the manual.
+			在使用手册的“下一步”章节中,“动画系统”一文对three.js动画系统中的不同元素作出了概述
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 
 		<h3>[name]( [param:Object3D rootObject] )</h3>
 		<p>
-			[page:Object3D rootObject] - the object whose animations shall be played by this mixer.<br />
+			[page:Object3D rootObject] - 混合器播放的动画所属的对象<br />
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 
 		<h3>[property:Number time]</h3>
 		<p>
-			The global mixer time (in seconds; starting with 0 on the mixer's creation).
+			全局的混合器时间(单位秒; 混合器创建的时刻记作0时刻)
 		</p>
 
 		<h3>[property:Number timeScale]</h3>
 		<p>
-			A scaling factor for the global [page:.time mixer time].<br /><br />
+			全局时间([page:.time mixer time])的比例因子<br /><br />
 
-			Note: Setting the mixer's timeScale to 0 and later back to 1 is a possibility to pause/unpause
-			all actions that are controlled by this mixer.
+			说明: 将混合器的时间比例设为0, 稍后再设置为1,可以暂停/取消暂停由该混合器控制的所有动作。
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 
 		<h3>[method:AnimationAction clipAction]([param:AnimationClip clip], [param:Object3D optionalRoot])</h3>
 		<p>
-			Returns an [page:AnimationAction] for the passed clip, optionally using a root object different
-			from the mixer's default root. The first parameter can be either an [page:AnimationClip] object
-			or the name of an AnimationClip.<br /><br />
+			返回所传入的剪辑参数的[page:AnimationAction], 根对象参数可选,默认值为混合器的默认根对象。第一个参数可以是动画剪辑([page:AnimationClip])对象或者动画剪辑的名称。<br /><br />
 
-			If an action fitting the clip and root parameters doesn't yet exist, it will be created by
-			this method. Calling this method several times with the same clip and root parameters always
-			returns the same clip instance.
+			如果不存在符合传入的剪辑和根对象这两个参数的动作, 该方法将会创建一个。传入相同的参数多次调用将会返回同一个剪辑实例。
 		</p>
 
 		<h3>[method:AnimationAction existingAction]([param:AnimationClip clip], [param:Object3D optionalRoot])</h3>
 		<p>
-			Returns an existing [page:AnimationAction] for the passed clip, optionally using a root object
-			different from the mixer's default root.<br /><br />
+			返回传入剪辑的已有[page:AnimationAction], 根对象参数可选,默认值为混合器的默认根对象。<br /><br />
 
-			The first parameter can be either an [page:AnimationClip] object or the name of an AnimationClip.
+			第一个参数可以是动画剪辑([page:AnimationClip])对象或者动画剪辑的名称。
 		</p>
 
 		<h3>[method:Object3D getRoot]()</h3>
 		<p>
-			Returns this mixer's root object.
+			返回混合器的根对象
 		</p>
 
 		<h3>[method:AnimationMixer stopAllAction]()</h3>
 		<p>
-			Deactivates all previously scheduled actions on this mixer.
+			停用混合器上所有预定的动作
 		</p>
 
 		<h3>[method:AnimationMixer update]([param:Number deltaTimeInSeconds]) </h3>
 		<p>
-			Advances the global mixer time and updates the animation.<br /><br />
+			推进混合器时间并更新动画 <br /><br />
 
-			This is usually done in the render loop, passing [page:Clock.getDelta clock.getDelta] scaled by the mixer's [page:.timeScale timeScale]).
+			通常在渲染循环中完成, 传入按照混合器的时间比例([page:.timeScale timeScale])缩放过的[page:Clock.getDelta clock.getDelta]
 		</p>
 
 		<h3>[method:null uncacheClip]([param:AnimationClip clip])</h3>
 
 		<p>
-			Deallocates all memory resources for a clip.
+			释放剪辑的所有内存资源
 		</p>
 
 		<h3>[method:null uncacheRoot]([param:Object3D root]) </h3>
 		<p>
-			Deallocates all memory resources for a root object.
+			释放根对象的所有内存资源
 		</p>
 
 		<h3>[method:null uncacheAction]([param:AnimationClip clip], [param:Object3D optionalRoot])</h3>
 		<p>
-			Deallocates all memory resources for an action.
+			释放动作的所有内存资源
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 20 - 23
docs/api/zh/animation/AnimationObjectGroup.html

@@ -10,74 +10,71 @@
 	<body>
 		<h1>[name]</h1>
 
-		<p class="desc">A group of objects that receives a shared animation state.<br /><br />
+		<p class="desc">接收共享动画状态的一组对象。<br /><br />
 
-			For an overview of the different elements of the three.js animation system see the
-			"Animation System" article in the "Next Steps" section of the manual.
+			在使用手册的“下一步”章节中,“动画系统”一文对three.js动画系统中的不同元素作出了概述
 		</p>
 
-		<h2>Usage:</h2>
+		<h2>用法:</h2>
 
 		<p class="desc">
-			Add objects you would otherwise pass as 'root' to the constructor or the [page:AnimationMixer.clipAction clipAction]
-			method of [page:AnimationMixer AnimationMixer] and instead pass this object as 'root'.<br /><br />
+            将本来要作为根对象传入构造器或者动画混合器([page:AnimationMixer AnimationMixer])的[page:AnimationMixer.clipAction clipAction]方法中的对象加入组中,并将这个组对象作为根对象传递。
+			<br /><br />
 
-			Note that objects of this class appear as one object to the mixer,
-			so cache control of the individual objects must be done	on the group.
+		    注意,这个类的实例作为混合器中的一个对象,因此,必须对组内的单个对象做缓存控制。
 		</p>
 
 
-		<h2>Limitations</h2>
+		<h2>限制</h2>
 		<p class="desc">
-			The animated properties must be compatible among all objects in the group.<br /><br />
+			动画属性必须在组中的所有对象之间兼容。<br /><br />
 
-			A single property can either be controlled through a target group or directly, but not both.
+			单个属性可以通过目标组控制或者直接控制,但不能两者同时。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 
 		<h3>[name]( [param:object obj1], [param:object obj2], [param:object obj3], ... )</h3>
-		[page:object obj] - an abitrary number of meshes that share the same animation state.<br />
+		[page:object obj] - 共享同一动画状态的任意数量的网格<br />
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 
 		<h3>[property:object stats]</h3>
 		<p>
-			An object that contains some informations of this *AnimationObjectGroup* (total number, number
-			in use, number of bindings per object)
+			一个包含此动画对象组(AnimationObjectGroup)的一些信息的对象 (总数, 使用中的数量,绑定到每个对象上的数量)
+
 		</p>
 
 		<h3>[property:String uuid]</h3>
 		<p>
-			The [link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] of this
-			*AnimationObjectGroup*. It gets automatically assigned and shouldn't be edited.
+			这个动画对象组(AnimationObjectGroup)的[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID]。它是自动分配的,不可被编辑。
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 
 		<h3>[method:null add]( [param:object obj1], [param:object obj2], [param:object obj3], ... )</h3>
 		<p>
-			Adds an arbitrary number of objects to this *AnimationObjectGroup*.
+			将任意数量的对象添加到这个动画对象组(AnimationObjectGroup)。
 		</p>
 
 		<h3>[method:null remove]( [param:object obj1], [param:object obj2], [param:object obj3], ... )</h3>
 		<p>
-			Removes an arbitrary number of objects from this *AnimationObjectGroup*.
+			将任意数量的对象从这个动画对象组(AnimationObjectGroup)中删除。
 		</p>
 
 		<h3>[method:null uncache]( [param:object obj1], [param:object obj2], [param:object obj3], ... )</h3>
 		<p>
-			Deallocates all memory resources for the passed objects of this *AnimationObjectGroup*.
+			释放此动画对象组(AnimationObjectGroup)传递的对象的所有内存资源
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 11 - 9
docs/api/zh/animation/AnimationUtils.html

@@ -11,45 +11,47 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-		An object with various functions to assist with animations, used internally.
+            一个提供各种动画辅助方法的对象,内部使用。
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 
 		<h3>[method:Array arraySlice]( array, from, to )</h3>
 		<p>
-		This is the same as  Array.prototype.slice, but also works on typed arrays.
+		和Array.prototype.slice作用一样, 但也适用于类型化数组.
 		</p>
 
 		<h3>[method:Array convertArray]( array, type, forceClone )</h3>
 		<p>
-		Converts an array to a specific type.
+            将数组转换为某种特定类型。
 		</p>
 
 		<h3>[method:Array flattenJSON]( jsonKeys, times, values, valuePropertyName  )</h3>
 		<p>
-		Used for parsing AOS keyframe formats.
+            用于解析AOS关键帧格式。
 		</p>
 
 		<h3>[method:Array getKeyframeOrder]( times )</h3>
 		<p>
-		Returns an array by which times and values can be sorted.
+            返回一个数组,时间和值可以根据此数组排序。
 		</p>
 
 		<h3>[method:Boolean isTypedArray]( object )</h3>
 		<p>
-		Returns *true* if the object is a typed array.
+            如果该对象是类型化数组,返回*true*
+
 		</p>
 
 		<h3>[method:Array sortedArray]( values, stride, order )</h3>
 		<p>
-		Sorts the array previously returned by [page:AnimationUtils.getKeyframeOrder getKeyframeOrder].
+            将[page:AnimationUtils.getKeyframeOrder getKeyframeOrder]方法返回的数组排序。
+
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 58 - 91
docs/api/zh/animation/KeyframeTrack.html

@@ -12,39 +12,31 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			A KeyframeTrack is a timed sequence of [link:https://en.wikipedia.org/wiki/Key_frame keyframes],
-			which are composed of lists of times and related values, and which are used to animate a
-			specific property of an object.
+			关键帧轨道(KeyframeTrack)是关键帧([link:https://en.wikipedia.org/wiki/Key_frame keyframes])的定时序列,
+			它由时间和相关值的列表组成, 用来让一个对象的某个特定属性动起来。
 		</p>
 
 		<p>
-			For an overview of the different elements of the three.js animation system see the
-			"Animation System" article in the "Next Steps" section of the manual.
+            在使用手册的“下一步”章节中,“动画系统”一文对three.js动画系统中的不同元素作出了概述
 		</p>
 
 		<p>
-			In contrast to the animation hierarchy of the
-			[link:https://github.com/mrdoob/three.js/wiki/JSON-Model-format-3 JSON model format] a
-			*KeyframeTrack* doesn't store its single keyframes as objects in a "keys" array (holding the
-			times and the values for each frame together in one place).
+            和[link:https://github.com/mrdoob/three.js/wiki/JSON-Model-format-3 JSON model format]的动画层级相反,
+            关键帧轨道(KeyframeTrack)不会将单帧作为对象存储在“key”数组(一个存有每一帧的时间和值的地方)中。
+
 		</p>
 
 		<p>
-			Instead of this there are always two arrays in a *KeyframeTrack*: the [page:.times times] array
-			stores the time values for all keyframes of this track in sequential order, and the
-			[page:.values values] array contains the corresponding changing values of the animated property.
+            关键帧轨道(KeyframeTrack)中总是存在两个数组:[page:.times times]数组按顺序存储该轨道的所有关键帧的时间值,而[page:.values values]数组包含动画属性的相应更改值。
 		</p>
 
 		<p>
-			A single value, belonging to a certain point of time, can not only be a simple number, but (for
-			example) a vector (if a position is animated) or a quaternion (if a rotation is animated). For
-			this reason the values array (which is a flat array, too) might be three or four times as long as the
-			times array.
+            值数组中的每一个成员,属于某一特定时间点,不仅可以是一个简单的数字,还可以是(比如)一个向量(如果是位置动画)或者是一个四元数(如果是旋转动画)。
+            因此,值数组(也是一个平面阵列)的长度可能是时间数组的三四倍。
 		</p>
 
 		<p>
-			Corresponding to the different possible types of animated values there are several subclasses of
-			*KeyframeTrack*, inheriting the most properties and methods:
+            与不同类型的动画值对应,存在若干关键帧轨道(KeyframeTrack)的子类,继承了它大多数属性和方法:
 		</p>
 
 		<ul>
@@ -57,206 +49,181 @@
 		</ul>
 
 		<p>
-			Some examples of how to manually create [page:AnimationClip AnimationClips] with different sorts
-			of KeyframeTracks can be found in the [link:https://threejs.org/examples/js/AnimationClipCreator.js]
-			file.
+            可以在[link:https://threejs.org/examples/js/AnimationClipCreator.js]文件中找到用不同类型的关键帧轨道创建动画剪辑([page:AnimationClip AnimationClips])的示例。
 		</p>
 
 		<p>
-			Since explicit values are only specified for the discrete points of time stored in the times array,
-			all values in between have to be interpolated.
+            由于显式值仅针对存储在时间数组中的离散时间点指定,因此必须在两个时间点之间进行插值
 		</p>
 
 		<p>
-			The track's name is important for the connection of this track with a specific property of the
-			animated node (done by [page:PropertyBinding]).
+            轨道的名称对于这个轨道与动画节点的特定属性的连接(由[page:PropertyBinding]完成)很重要。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 
 		<h3>[name]( [param:String name], [param:Array times], [param:Array values], [param:Constant interpolation] )</h3>
 		<p>
-			[page:String name] - the identifier for the *KeyframeTrack*.<br />
-			[page:Array times] - an array of keyframe times, converted internally to a
+			[page:String name] - 关键帧轨道(KeyframeTrack)的标识符.<br />
+			[page:Array times] - 关键帧的时间数组, 被内部转化为
 			[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array].<br />
-			[page:Array values] - an array with the values related to the times array, converted internally to a
+			[page:Array values] - 与时间数组中的时间点相关的值组成的数组, 被内部转化为
 			[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array].<br />
-			[page:Constant interpolation] - the type of interpolation to use. See
+			[page:Constant interpolation] - 使用的插值类型。 参见
 			[page:Animation Animation Constants] for possible values. Default is [page:Animation InterpolateLinear].
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 
 		<h3>[property:String name]</h3>
 		<p>
-			The track's name can refer to [page:Geometry.morphTargets morph targets] or
-			[page:SkinnedMesh bones] or possibly other values within an animated object. See
-			[page:PropertyBinding.parseTrackName] for the forms of strings that can be parsed for property
-			binding:
+            轨道的名称可以指动画对象中的变形目标([page:Geometry.morphTargets morph targets])、骨骼([page:SkinnedMesh bones])或可能的其他值
+			查看[page:PropertyBinding.parseTrackName]可获知哪些形式的字符串可以解析出绑定的属性:
 		</p>
-
 		<p>
-			The name can specify the node either using its name or its uuid (although it needs to be in the
-			subtree of the scene graph node passed into the mixer). Or, if the track name starts with a dot,
-			the track applies to the root node that was passed into the mixer.
+            可以使用节点名称或uuid(尽管它需要位于传递到混合器的场景图节点的子树中)引用到某节点。或者, 如果轨道名称的首字符是点,
+			该轨道会应用到传入到混合器的根节点上。
 		</p>
 
 		<p>
-			Usually after the node a property will be specified directly. But you can also specify a
-			subproperty, such as .rotation[x], if you just want to drive the X component of the rotation
-			via a float track.
+			通常,在该节点之后会直接指定一个属性。 但是也可以再指定一个子属性, 例如 如果只是想通过浮动轨道使X组件旋转,可使用 .rotation[x]。
 		</p>
 
 		<p>
-			You can also specify bones or multimaterials by using an object name, for example:
-			.bones[R_hand].scale; the red channel of the diffuse color of the fourth material in a
-			materials array - as a further example - can be accessed with .materials[3].diffuse[r].
+            还可以使用对象名称来指定骨骼或多材质,例如:.bones[R_hand].scale;再比如,材料数组中的第四个材料的漫反射颜色的红通道可以通过 .materials[3].diffuse[r]访问到。
 		</p>
 
 		<p>
-			PropertyBinding will also resolve morph target names, for example: .morphTargetInfluences[run].
+			属性绑定也会解析变形目标名称, 例如: .morphTargetInfluences[run]
 		</p>
 
 		<p>
-			Note: The track's name does not necessarily have to be unique. Multiple tracks can drive the same
-			property. The result should be based on a weighted blend between the multiple tracks according to
-			the weights of their respective actions.
+			说明: 轨道名称不一定得唯一。 多个轨道可驱动统一属性, 此时结果应该基于多个轨道之间根据其各自动作的权重的加权混合。
 		</p>
 
 		<h3>[property:Float32Array times]</h3>
 		<p>
-			A [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array],
-			converted from the times array which is passed in the constructor.
+			一个[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array]类型的值,由传入构造器中时间数组参数转化而来。
 		</p>
 
 		<h3>[property:Float32Array values]</h3>
 		<p>
-			A [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array],
-			converted from the values array which is passed in the constructor.
+			一个[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array]类型的值,
+			由传入构造器中值数组参数转化而来
 		</p>
 
 		<h3>[property:Constant DefaultInterpolation]</h3>
 		<p>
-			The default interpolation type: [page:Animation InterpolateLinear].
+			默认的参数插值类型: [page:Animation InterpolateLinear].
 		</p>
 
 		<h3>[property:Constant TimeBufferType ]</h3>
 		<p>
 			[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array],
-			the type of the buffer internally used for the times.
+			内部用于时间数组的缓冲区的类型
 		</p>
 
 		<h3>[property:Constant ValueBufferType ]</h3>
 		<p>
 			[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array],
-			the type of the buffer internally used for the values.
+			内部用于值数组的缓冲区的类型
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 
 		<h3>[method:null createInterpolant]()</h3>
 		<p>
-			Creates a [page:LinearInterpolant LinearInterpolant], [page:CubicInterpolant CubicInterpolant]
-			or [page:DiscreteInterpolant DiscreteInterpolant], depending on the value of the interpolation
-			parameter passed in the constructor.
+			根据传入构造器中的插值类型参数,创建线性插值([page:LinearInterpolant LinearInterpolant]),立方插值([page:CubicInterpolant CubicInterpolant])或离散插值
+			([page:DiscreteInterpolant DiscreteInterpolant])
 		</p>
 
 		<h3>[method:null getInterpolation]()</h3>
 		<p>
-			Returns the interpolation type.
+			返回插值类型
 		</p>
 
 		<h3>[method:Number getValueSize]()</h3>
 		<p>
-			Returns the size of each value (that is the length of the [page:.values values] array divided
-			by the length of the [page:.times times] array).
+			返回每个值的大小(即[page:.values values]数组的长度除以[page:.times times]数组的长度
+
 		</p>
 
 		<h3>[method:DiscreteInterpolant InterpolantFactoryMethodDiscrete]( [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array result] )</h3>
 		<p>
-			Creates a new [page:DiscreteInterpolant DiscreteInterpolant] from the
-			[page:KeyframeTrack.times times] and [page:KeyframeTrack.times values]. A Float32Array can be
-			passed which will receive the results. Otherwise a new array with the appropriate size will be
-			created automatically.
+            根据时间([page:KeyframeTrack.times times])和值([page:KeyframeTrack.times values])创建一个新的离散插值([page:DiscreteInterpolant DiscreteInterpolant])。
+            可传入一个Float32Array类型的变量来接收结果, 否则会自动创建一个长度适宜的新数组。
 		</p>
 
 		<h3>[method:null InterpolantFactoryMethodLinear]( [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array result] )</h3>
 		<p>
-			Creates a new [page:LinearInterpolant LinearInterpolant] from the
-			[page:KeyframeTrack.times times] and [page:KeyframeTrack.times values]. A Float32Array can be
-			passed which will receive the results. Otherwise a new array with the appropriate size will be
-			created automatically.
+            根据时间([page:KeyframeTrack.times times])和值([page:KeyframeTrack.times values])创建一个新的线性插值([page:LinearInterpolant LinearInterpolant])。
+            可传入一个Float32Array类型的变量来接收结果, 否则会自动创建一个长度适宜的新数组。
 		</p>
 
 		<h3>[method:null InterpolantFactoryMethodSmooth]( [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array result] )</h3>
 		<p>
-			Create a new [page:CubicInterpolant CubicInterpolant] from the
-			[page:KeyframeTrack.times times] and [page:KeyframeTrack.times values]. A Float32Array can be
-			passed which will receive the results. Otherwise a new array with the appropriate size will be
-			created automatically.
+            根据时间([page:KeyframeTrack.times times])和值([page:KeyframeTrack.times values])创建一个新的立方插值([page:CubicInterpolant CubicInterpolant])。
+            可传入一个Float32Array类型的变量来接收结果, 否则会自动创建一个长度适宜的新数组。
 		</p>
 
 		<h3>[method:this optimize]()</h3>
 		<p>
-			Removes equivalent sequential keys, which are common in morph target sequences.
+            删除等效的顺序键,这些键在变形目标序列中很常见。
 		</p>
 
 		<h3>[method:this scale]()</h3>
 		<p>
-			Scales all keyframe times by a factor.<br /><br />
+            缩放所有关键帧的时间。<br /><br />
 
-			Note: This is useful, for example, for conversions to a certain rate of frames per seconds (as it
-			is done internally by
-			[page:AnimationClip.CreateFromMorphTargetSequence animationClip.CreateFromMorphTargetSequence]).
+			说明: 这个方法很有用,例如, 可用于转化为某一特定帧率(正如[page:AnimationClip.CreateFromMorphTargetSequence animationClip.CreateFromMorphTargetSequence]内部所做的一样)。
 		</p>
 
 		<h3>[method:this setInterpolation]( [param:Constant interpolationType] )</h3>
 		<p>
-			Sets the interpolation type. See [page:Animation Animation Constants] for choices.
+			设置插值类型。 参阅[page:Animation Animation Constants]以供选择。
 		</p>
 
 		<h3>[method:this shift]( [param:Number timeOffsetInSeconds] )</h3>
 		<p>
-			Moves all keyframes either forward or backward in time.
+            及时删除之前或之后的所有关键帧。
 		</p>
 
 
 		<h3>[method:this trim]( [param:Number startTimeInSeconds], [param:Number endTimeInSeconds] )</h3>
 		<p>
-			Removes keyframes before *startTime* and after *endTime*,
-			without changing any values within the range [*startTime*, *endTime*].
+			删除开始时间(startTime)之前以及结束时间(endTime)之后的关键帧,不改变[*startTime*, *endTime*]范围内的任何值。
 		</p>
 
 		<h3>[method:Boolean validate]()</h3>
 		<p>
-			Performs minimal validation on the tracks. Returns true if valid.
+            在轨道上执行最小验证,有效则返回true
 		</p>
 
 		<p>
-			This method logs errors to the console, if a track is empty, if the [page:.valueSize value size] is not valid, if an item
-			in the [page:.times times] or [page:.values values] array is not a valid number or if the items in the *times* array are out of order.
+			如果出现以下情况,该方法会在控制台输出错误日志: 轨道为空; [page:.valueSize value size]值不可靠;
+			[page:.times times]数组或[page:.values values]数组中的元素不是数字;*times*数组中的元素乱序。
 		</p>
 
-		<h2>Static Methods</h2>
+		<h2>静态方法</h2>
 
 		<h3>[method:KeyframeTrack parse]( [param:JSON json] )</h3>
 		<p>
-		Parses a JSON object and returns a new keyframe track of the correct type.
+            解析JSON对象并返回一个正确类型的新关键帧轨道。
 		</p>
 
 		<h3>[method:JSON toJSON]( [param:KeyframeTrack track] )</h3>
 		<p>
-		Converts the track to JSON.
+		    将该轨道转化为JSON
 		</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/PropertyBinding.html

@@ -11,22 +11,22 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			This holds a reference to a real property in the scene graph; used internally.
+            对场景图中某一真实属性的引用,内部使用。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 
 		<h3>[name]( [param:Object3D rootNode], path, parsedPath )</h3>
 		<p>
 			-- [page:Object3D rootNode]:
 			-- path
-			-- parsedPath (optional)
+			-- parsedPath (可选)
 
 		</p>
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 		<h3>[property:Number path]</h3>
 		<p>
@@ -70,7 +70,7 @@
 
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 		<h3>[method:null getValue]( [param:Array targetArray], [param:Number offset] )</h3>
 		<p>
@@ -82,28 +82,27 @@
 
 		<h3>[method:null bind]( )</h3>
 		<p>
-			Create getter / setter pair for a property in the scene graph. Used internally by
-			[page:PropertyBinding.getValue getValue] and [page:PropertyBinding.setValue setValue].
+			为场景图中的属性创建 getter / setter对。 被[page:PropertyBinding.getValue getValue]和[page:PropertyBinding.setValue setValue]方法内部使用。
 		</p>
 
 		<h3>[method:null unbind]( )</h3>
 		<p>
-			Unbind getter / setter pair for a property in the scene graph.
+			解绑场景图中某属性的getter / setter对。
 		</p>
 
 		<h3>[method:Constructor Composite]( targetGroup, path, optionalParsedPath )</h3>
 		<p>
-			Create a new Composite PropertyBinding.
+			创建一个新的复合属性绑定(Composite PropertyBinding)
 		</p>
 
 		<h3>[method:Constructor create]( root, path, parsedPath )</h3>
 		<p>
-			Create a new Composite PropertyBinding (if root is an [page:AnimationObjectGroup]) or PropertyBinding.
+            创建一个新的复合属性绑定(Composite PropertyBinding) (如果根对象是[page:AnimationObjectGroup])或普通属性绑定
 		</p>
 
 		<h3>[method:Constructor parseTrackName]( trackName )</h3>
 		<p>
-			Matches strings in the following forms:<br />
+			匹配以下形式的字符串:<br />
 			-- nodeName.property<br />
 			-- nodeName.property[accessor]<br />
 			-- nodeName.material.property[accessor]<br />
@@ -117,13 +116,13 @@
 
 		<h3>[method:Constructor findNode]( root, nodeName )</h3>
 		<p>
-			Find a node in a node tree or [page:Skeleton Skeleton].
+            从节点树或骨骼([page:Skeleton Skeleton])中找出某节点
 		</p>
 
 
 
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

+ 17 - 18
docs/api/zh/animation/PropertyMixer.html

@@ -11,11 +11,11 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-		Buffered scene graph property that allows weighted accumulation; used internally.
+        允许加权累加的缓冲场景图属性,内部使用
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 
 		<h3>[name]( [param:PropertyBinding binding], [param:String typeName], [param:Number valueSize] )</h3>
@@ -26,7 +26,7 @@
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 
 		<h3>[property:PropertyBinding binding]</h3>
@@ -36,16 +36,15 @@
 
 		<h3>[property:TypedArray buffer]</h3>
 		<p>
-			Buffer with size [page:PropertyMixer valueSize] * 4. <br /><br />
-			This has the layout: [ incoming | accu0 | accu1 | orig ]<br /><br />
-			Interpolators can use .buffer as their .result and the data then goes to 'incoming'.
-			'accu0' and 'accu1' are used frame-interleaved for the cumulative result and
-			are compared to detect changes. 'orig' stores the original state of the property.
+			大小为 4 * [page:PropertyMixer valueSize] 的缓冲区 <br /><br />
+			布局为: [ incoming | accu0 | accu1 | orig ]<br /><br />
+			插值器可使用 .buffer 作为 .result 且数据会进入'incoming'区.
+			'accu0'和'accu1'用于按帧交错累加‘incoming’中的数据并进行比较以侦测变化。'orig'存储着属性的原始状态。
 		</p>
 
 		<h3>[property:Number cumulativeWeight]</h3>
 		<p>
-			Default is *0*.
+			默认值是0
 		</p>
 
 		<h3>[property:Number valueSize]</h3>
@@ -55,42 +54,42 @@
 
 		<h3>[property:Number referenceCount]</h3>
 		<p>
-			Default is *0*.
+            默认值是0
 		</p>
 
 		<h3>[property:Number useCount]</h3>
 		<p>
-			Default is *0*.
+           默认值是0
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 
 		<h3>[method:null accumulate]( [param:Number accuIndex], [param:Number weight] )</h3>
 		<p>
-			Accumulate data in [page:PropertyMixer.buffer buffer][accuIndex] 'incoming' region into 'accu[i]'.<br />
+			将[page:PropertyMixer.buffer buffer][accuIndex]中'incoming'区的数据累加到'accu[i]'区中。<br />
 
-			If weight is *0* this does nothing.
+			如果权值为0,则什么都不做。
 		</p>
 
 		<h3>[method:null apply]( [param:Number accuIndex] )</h3>
 		<p>
-			Apply the state of [page:PropertyMixer.buffer buffer] 'accu[i]' to the binding when accus differ.
+			当累加值不同时,将[page:PropertyMixer.buffer buffer] 'accu[i]区的状态应用于绑定.
 		</p>
 
 		<h3>[method:null saveOriginalState]( )</h3>
 		<p>
-			Remember the state of the bound property and copy it to both accus.
+			记住绑定属性的状态并复制到两个'accu'区中.
 		</p>
 
 		<h3>[method:null restoreOriginalState](  )</h3>
 		<p>
-			Apply the state previously taken via 'saveOriginalState' to the binding.
+            将预先通过'saveOriginalState'方法取得的状态应用于绑定。
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>方法</h2>
 
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]

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

@@ -10,7 +10,7 @@
 	<body>
 		[page:PerspectiveCamera] &rarr;
 
-		<h1>[name]</h1>
+		<h1>阵列摄像机([name]</h1>
 
 		<p class="desc">
 			[name] 可以被用来更加高效地用一组已经预定义好的摄像机来渲染一个场景。 这对于VR场景的渲染来说,是非常重要的一个性能体现。<br />

+ 22 - 26
docs/api/zh/cameras/Camera.html

@@ -10,77 +10,73 @@
 	<body>
 		[page:Object3D] &rarr;
 
-		<h1>[name]</h1>
+		<h1>摄像机([name]</h1>
 
 		<p class="desc">
-			Abstract base class for cameras. This class should always be inherited when you build a new camera.
+			摄像机的抽象基类,你创建一个摄像机总会继承这个类。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 
 		<h3>[name]()</h3>
 		<p>
-			Creates a new [name]. Note that this class is not intended to be called directly;
-			you probably want a [page:PerspectiveCamera] or [page:OrthographicCamera] instead.
+			创建一个新的[name](摄像机)。注意:这个类并不是被直接调用的;你所想要的或许是一个 [page:PerspectiveCamera](透视摄像机)或者 [page:OrthographicCamera](正交摄像机)。
 		</p>
 
 
-		<h2>Properties</h2>
-		<p>See the base [page:Object3D] class for common properties.</p>
+		<h2>属性</h2>
+		<p>请参阅其基类[page:Object3D]来查看共有属性。</p>
 
 		<h3>[property:Boolean isCamera]</h3>
 		<p>
-			Used to check whether this or derived classes are cameras. Default is *true*.<br /><br />
+			用于来检查这个类或者派生的类是否为摄像机,默认为*true*。
+			<br /><br />
 
-			You should not change this, as it used internally by the renderer for optimisation.
+			你不应当对这个属性进行改变,因为它在内部由渲染器使用,以用于优化。
 		</p>
 
 		<h3>[property:Layers layers]</h3>
 		<p>
-		The [page:Layers layers] that the camera is a member of. This is an inherited
-		property from [page:Object3D].<br /><br />
-
-		Objects must share at least one layer with the camera to be seen
-		when the camera's viewpoint is rendered.
+		摄像机是一个[page:Layers layers]的成员. 这是一个从[page:Object3D]继承而来的属性。<br /><br />
+			 当摄像机的视点被渲染的时候,物体必须和当前被看到的摄像机共享至少一个层。
 		</p>
 
 		<h3>[property:Matrix4 matrixWorldInverse]</h3>
 		<p>
-			This is the inverse of matrixWorld. MatrixWorld contains the Matrix which has
-			the world transform of the Camera.
+			这是matrixWorld矩阵的逆矩阵。 MatrixWorld包含了相机的世界变换矩阵。
 		</p>
 
 		<h3>[property:Matrix4 projectionMatrix]</h3>
-		<p>This is the matrix which contains the projection.</p>
+		<p>这是投影变换矩阵。</p>
 
 		<h3>[property:Matrix4 projectionMatrixInverse]</h3>
-		<p>The inverse of projectionMatrix.</p>
+		<p>这是投影变换矩阵的逆矩阵。</p>
 
 
-		<h2>Methods</h2>
-		<p>See the base [page:Object3D] class for common methods.</p>
+		<h2>方法</h2>
+		<p>请参阅其基类[page:Object3D]来查看其共有方法。</p>
 
 		<h3>[method:Camera clone]( )</h3>
 		<p>
-			Return a new camera with the same properties as this one.
+			 返回一个具有和当前相机的属性一样的新的相机。
 		</p>
 
 		<h3>[method:Camera copy]( [param:Camera source], [param:Boolean recursive] )</h3>
 		<p>
-		Copy the properties from the source camera into this one.
+		将源摄像机的属性复制到新摄像机中。
 		</p>
 
 		<h3>[method:Vector3 getWorldDirection]( [param:Vector3 target] )</h3>
 		<p>
-		[page:Vector3 target] — the result will be copied into this Vector3. <br /><br />
+		[page:Vector3 target] — 调用该函数的结果将复制给该Vector3对象。<br /><br />
 
-		Returns a [page:Vector3] representing the world space direction in which the camera is looking.
-		(Note: A camera looks down its local, negative z-axis).<br /><br />
+		返回一个能够表示当前摄像机所正视的世界空间方向的[page:Vector3]对象。
+		(注意:摄像机俯视时,其Z轴坐标为负。)<br /><br />
 		</p>
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 20 - 20
docs/api/zh/cameras/CubeCamera.html

@@ -10,11 +10,11 @@
 	<body>
 		[page:Object3D] &rarr;
 
-		<h1>[name]</h1>
+		<h1>立方相机([name]</h1>
 
-		<p class="desc">Creates 6 cameras that render to a [page:WebGLRenderTargetCube].</p>
+		<p class="desc">创建6个摄像机,并将它们所拍摄的场景渲染到[page:WebGLRenderTargetCube]上。</p>
 
-		<h2>Examples</h2>
+		<h2>示例</h2>
 
 		<p>[example:webgl_materials_cubemap_dynamic materials / cubemap / dynamic ]</p>
 		<p>[example:webgl_materials_cubemap_dynamic2 materials / cubemap / dynamic2 ]</p>
@@ -40,49 +40,49 @@
 		</code>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 
 		<h3>[name]( [param:Number near], [param:Number far], [param:Number cubeResolution] )</h3>
 		<p>
-		near -- The near clipping distance. <br />
-		far -- The far clipping distance <br />
-		cubeResolution -- Sets the length of the cube's edges.
+		near -- 远剪切面的距离<br />
+		far -- 近剪切面的距离<br />
+		cubeResolution -- 设置立方体边缘的长度
 		</p>
 		<p>
-		Constructs a CubeCamera that contains 6 [page:PerspectiveCamera PerspectiveCameras] that
-		render to a [page:WebGLRenderTargetCube].
+			构造一个包含6个[page:PerspectiveCamera PerspectiveCameras](透视摄像机)的立方摄像机,并将其拍摄的场景渲染到一个[page:WebGLRenderTargetCube]上。
 		</p>
 
 
-		<h2>Properties</h2>
-		<p>See the base [page:Object3D] class for common properties.</p>
+		<h2>属性</h2>
+		<p>请参阅其基类[page:Object3D]来查看共有属性。</p>
 
 		<h3>[property:WebGLRenderTargetCube renderTarget]</h3>
 		<p>
-		The cube texture that gets generated.
+			生成的立方体纹理<br>
+			(译注:生成的立方体纹理保存在其中的.texture对象中,可作为贴图赋值给其他材质)
 		</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Object3D] class for common methods.</p>
+		<h2>方法</h2>
+		<p>请参阅其基类[page:Object3D]来查看其共有方法。</p>
 
 
 		<h3>[method:null update]( [param:WebGLRenderer renderer], [param:Scene scene] )</h3>
 		<p>
-		renderer -- The current WebGL renderer <br />
-		scene -- The current scene
+		renderer -- 当前的WebGL渲染器<br />
+		scene -- 当前的场景
 		</p>
 		<p>
-		Call this to update the [page:CubeCamera.renderTarget renderTarget].
+			这个方法用来更新[page:CubeCamera.renderTarget renderTarget](渲染目标对象)。
 		</p>
 
 		<h3>[method:null clear]( [param:WebGLRenderer renderer], [param:Boolean color], [param:Boolean depth], [param:Boolean stencil] )</h3>
 		<p>
-		Call this to clear the [page:CubeCamera.renderTarget renderTarget] color, depth, and/or stencil buffers.
-		The color buffer is set to the renderer's current clear color. Arguments default to *true*.
+			这个方法用来来清除[page:CubeCamera.renderTarget renderTarget]的颜色、深度和/或模板缓冲区。
+			颜色缓冲区设置为渲染器当前的“清除”色。参数默认值均为*true*。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 52 - 51
docs/api/zh/cameras/OrthographicCamera.html

@@ -10,19 +10,20 @@
 	<body>
 		[page:Object3D] &rarr; [page:Camera] &rarr;
 
-		<h1>[name]</h1>
+		<h1>正交相机([name]</h1>
 
 		<p class="desc">
-			Camera that uses [link:https://en.wikipedia.org/wiki/Orthographic_projection orthographic projection].<br /><br />
+			这一摄像机使用[link:https://en.wikipedia.org/wiki/Orthographic_projection orthographic projection](正交投影)来进行投影。<br /><br />
 
-			In this projection mode, an object's size in the rendered image stays constant
-			regardless of its distance from the camera.<br /><br />
+			在这种投影模式下,无论物体距离相机距离远或者近,在最终渲染的图片中物体的大小都保持不变。
+			<br /><br />
 
-			This can be useful for rendering 2D scenes and UI elements, amongst other things.
+
+			这对于渲染2D场景或者UI元素是非常有用的。
 		</p>
 
 
-		<h2>Example</h2>
+		<h2>示例</h2>
 
 		<p>[example:canvas_camera_orthographic camera / orthographic ]</p>
 		<p>[example:webgl_camera camera ]</p>
@@ -40,104 +41,104 @@
 scene.add( camera );</code>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 
 		<h3>[name]( [param:Number left], [param:Number right], [param:Number top], [param:Number bottom], [param:Number near], [param:Number far] )</h3>
 		<p>
-		left — Camera frustum left plane.<br />
-		right — Camera frustum right plane.<br />
-		top — Camera frustum top plane.<br />
-		bottom — Camera frustum bottom plane.<br />
-		near — Camera frustum near plane.<br />
-		far — Camera frustum far plane.<br /><br />
-
-		Together these define the camera's [link:https://en.wikipedia.org/wiki/Viewing_frustum viewing frustum].
+		left — 摄像机视锥体左侧面。<br />
+		right — 摄像机视锥体右侧面。<br />
+		top — 摄像机视锥体上侧面。<br />
+		bottom — 摄像机视锥体下侧面。<br />
+		near — 摄像机视锥体近端面。<br />
+		far — 摄像机视锥体远端面。<br /><br />
+
+		这些参数一起定义了摄像机的[link:https://en.wikipedia.org/wiki/Viewing_frustum viewing frustum](视锥体)。
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 		<p>
-			See the base [page:Camera] class for common properties.<br>
- 			Note that after making changes to most of these properties you will have to call
- 			[page:OrthographicCamera.updateProjectionMatrix .updateProjectionMatrix] for the changes to take effect.
+			请参阅其基类[page:Camera]来查看其共有属性。
+			<br>
+			请注意,在大多数属性发生改变之后,你将需要调用[page:OrthographicCamera.updateProjectionMatrix .updateProjectionMatrix]来使得这些改变生效。
 		</p>
 
 		<h3>[property:Float bottom]</h3>
-		<p>Camera frustum bottom plane.</p>
+		<p>摄像机视锥体下侧面。</p>
 
 		<h3>[property:Float far]</h3>
 		<p>
-		Camera frustum far plane. Default is *2000*.<br /><br />
-
-		The valid range is between the current value of the [page:.near near] plane and infinity.
+			摄像机视锥体远端面,其默认值为*2000*。<br /><br />
+			其值的有效范围介于[page:.near near](摄像机视锥体近端面)和无穷大之间。
 		</p>
 
 		<h3>[property:Boolean isOrthographicCamera]</h3>
 		<p>
-			Used to test whether this or derived classes are OrthographicCameras. Default is *true*.<br /><br />
-
-			This should not be changed as it is used internally by the renderer for optimisation.
+			用于测试这个类或者派生类是否为OrthographicCameras,默认为*true*。<br /><br />
+			你不应当对这个属性进行改变,因为它在内部由渲染器使用,以用于优化。
 		</p>
 
 		<h3>[property:Float left]</h3>
-		<p>Camera frustum left plane.</p>
+		<p>摄像机视锥体左侧面。</p>
 
 		<h3>[property:Float near]</h3>
 		<p>
-			Camera frustum near plane. Default is *0.1*.<br /><br />
+			摄像机视锥体近端面。其默认值为*0.1*.<br /><br />
+
+			其值的有效范围介于0和[page:.far far](摄像机视锥体远端面)之间。
+			<br>
+			请注意,和[page:PerspectiveCamera]不同,*0*对于OrthographicCamera的近端面来说是一个有效值。
 
-			The valid range is between 0 and the current value of the [page:.far far] plane.
-			Note that, unlike for the [page:PerspectiveCamera], *0* is a valid value for an
-			OrthographicCamera's near plane.
 		</p>
 
 		<h3>[property:Float right]</h3>
-		<p>Camera frustum right plane.</p>
+		<p>摄像机视锥体右侧面。</p>
 
 		<h3>[property:Float top]</h3>
-		<p>Camera frustum top plane.</p>
+		<p>摄像机视锥体上侧面。</p>
 
 		<h3>[property:Object view]</h3>
-		<p>Set by [page:OrthographicCamera.setViewOffset setViewOffset]. Default is *null*.</p>
+		<p>这个值是由[page:OrthographicCamera.setViewOffset setViewOffset]来设置的,其默认值为*null*。</p>
 
 		<h3>[property:number zoom]</h3>
-		<p>Gets or sets the zoom factor of the camera. Default is *1*.</p>
+		<p>
+			获取或者设置摄像机的缩放倍数,其默认值为*1*。</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Camera] class for common methods.</p>
+		<h2>方法</h2>
+		<p>请参阅其基类[page:Camera]来查看其共有方法。</p>
 
 		<h3>[method:null setViewOffset]( [param:Float fullWidth], [param:Float fullHeight], [param:Float x], [param:Float y], [param:Float width], [param:Float height] )</h3>
 		<p>
-		fullWidth — full width of multiview setup<br />
-		fullHeight — full height of multiview setup<br />
-		x — horizontal offset of subcamera<br />
-		y — vertical offset of subcamera<br />
-		width — width of subcamera<br />
-		height — height of subcamera<br /><br />
-
-			Sets an offset in a larger [link:https://en.wikipedia.org/wiki/Viewing_frustum viewing frustum].
-			This is useful for multi-window or multi-monitor/multi-machine setups.
-			For an example on how to use it see [page:PerspectiveCamera.setViewOffset PerspectiveCamera].
+		fullWidth — 多视图的全宽设置<br />
+		fullHeight — 多视图的全高设置<br />
+		x — 副摄像机的水平偏移<br />
+		y — 副摄像机的垂直偏移<br />
+		width — 副摄像机的宽度<br />
+		height — 副摄像机的高度<br /><br />
+
+			在较大的[link:https://en.wikipedia.org/wiki/Viewing_frustum viewing frustum](视锥体)中设置偏移量,对于多窗口或者多显示器的设置是很有用的。
+			对于如何使用它,请查看[page:PerspectiveCamera.setViewOffset PerspectiveCamera]中的示例。
+
 		</p>
 
 		<h3>[method:null clearViewOffset]()</h3>
 		<p>
-		Removes any offset set by the .setViewOffset method.
+			清除任何由.setViewOffset设置的偏移量。
 		</p>
 
 		<h3>[method:null updateProjectionMatrix]()</h3>
 		<p>
-		Updates the camera projection matrix. Must be called after any change of parameters.
+			更新摄像机投影矩阵。在任何参数被改变以后必须被调用。
 		</p>
 
 		<h3>[method:JSON toJSON]()</h3>
 		<p>
-		Return the camera's data in JSON format.
+		使用JSON格式来返回摄像机数据。
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 61 - 64
docs/api/zh/cameras/PerspectiveCamera.html

@@ -10,17 +10,17 @@
 	<body>
 		[page:Object3D] &rarr; [page:Camera] &rarr;
 
-		<h1>[name]</h1>
+		<h1>透视相机([name]</h1>
 
 		<p class="desc">
-			Camera that uses [link:https://en.wikipedia.org/wiki/Perspective_(graphical) perspective projection].<br /><br />
+			这一摄像机使用[link:https://en.wikipedia.org/wiki/Perspective_(graphical) perspective projection](透视投影)来进行投影。<br /><br />
+
+			这一投影模式被用来模拟人眼所看到的景象,它是3D场景的渲染中使用得最普遍的投影模式。
 
-			This projection mode is designed to mimic the way the human eye sees. It is the most
-			common projection mode used for rendering a 3D scene.
 		</p>
 
 
-		<h2>Example</h2>
+		<h2>示例</h2>
 
 		<p>[example:canvas_geometry_birds geometry / birds ]</p>
 		<p>[example:canvas_geometry_cube geometry / cube ]</p>
@@ -34,126 +34,123 @@
 scene.add( camera );</code>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 		<h3>[name]( [param:Number fov], [param:Number aspect], [param:Number near], [param:Number far] )</h3>
 		<p>
-		fov — Camera frustum vertical field of view.<br />
-		aspect — Camera frustum aspect ratio.<br />
-		near — Camera frustum near plane.<br />
-		far — Camera frustum far plane.<br /><br />
+		fov — 摄像机视锥体垂直视野角度<br />
+		aspect — 摄像机视锥体长宽比<br />
+		near — 摄像机视锥体近端面<br />
+		far — 摄像机视锥体远端面<br /><br />
 
-			Together these define the camera's [link:https://en.wikipedia.org/wiki/Viewing_frustum viewing frustum].
+		这些参数一起定义了摄像机的[link:https://en.wikipedia.org/wiki/Viewing_frustum viewing frustum](视锥体)。
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 		<p>
-			See the base [page:Camera] class for common properties.<br>
-			Note that after making changes to most of these properties you will have to call
-			[page:PerspectiveCamera.updateProjectionMatrix .updateProjectionMatrix] for the changes to take effect.
+			请参阅其基类 [page:Camera] 来查看共有属性。<br>
+			请注意,在大多数属性发生改变之后,你将需要调用[page:PerspectiveCamera.updateProjectionMatrix .updateProjectionMatrix]来使得这些改变生效。
 		</p>
 
 		<h3>[property:Float aspect]</h3>
-		<p>Camera frustum aspect ratio, usually the canvas width / canvas height. Default is *1* (square canvas).</p>
+		<p>摄像机视锥体的长宽比,通常是使用画布的宽/画布的高。默认值是*1*(正方形画布)。</p>
 
 		<h3>[property:Float far]</h3>
 		<p>
-			Camera frustum far plane. Default is *2000*.<br /><br />
-
-			The valid range is between the current value of the [page:.near near] plane and infinity.
+			摄像机的远端面,默认值是*2000*。
+			<br /><br />
+			其有效值范围是在当前摄像机[page:.near near] plane(近端面)的值到无穷远之间。
 		</p>
 
 		<h3>[property:Float filmGauge]</h3>
-		<p>Film size used for the larger axis. Default is 35 (millimeters). This parameter does not influence the projection matrix unless .filmOffset is set to a nonzero value.</p>
+		<p>胶片尺寸,其默认值为35(毫米)。
+			这个参数不会影响摄像机的投影矩阵,除非.filmOffset被设置为了一个非零的值。</p>
 
 		<h3>[property:Float filmOffset]</h3>
-		<p>Horizontal off-center offset in the same unit as .filmGauge. Default is *0*.</p>
+		<p>水平偏离中心偏移量,和.filmGauge单位相同。默认值为*0*。</p>
 
 		<h3>[property:Float focus]</h3>
-		<p>Object distance used for stereoscopy and depth-of-field effects.
-			This parameter does not influence the projection matrix unless a [page:StereoCamera] is being used.
-			Default is *10*.
+		<p>用于立体视觉和景深效果的物体的距离。
+		   这个参数不会影响摄像机的投影矩阵,除非使用了[page:StereoCamera]。
+			默认值是*10*。
 		</p>
 
 		<h3>[property:Float fov]</h3>
-		<p>Camera frustum vertical field of view, from bottom to top of view, in degrees. Default is *50*.</p>
+		<p>摄像机视锥体垂直视野角度,从视图的底部到顶部,以角度来表示。默认值是*50*。</p>
 
 		<h3>[property:Boolean isPerspectiveCamera]</h3>
 		<p>
-			Used to test whether this or derived classes are PerspectiveCameras. Default is *true*.<br /><br />
 
-			This should not be changed as it is used internally by the renderer for optimisation.
+			用于测试这个类或者派生类是否为PerspectiveCameras,默认为true。
+			<br /><br />
+
+			你不应当对这个属性进行改变,因为它在内部由渲染器使用,以用于优化。
 		</p>
 
 
 		<h3>[property:Float near]</h3>
 		<p>
-			Camera frustum near plane. Default is *0.1*.<br /><br />
-
-			The valid range is greater than 0 and less than the current value of the [page:.far far] plane.
-			Note that, unlike for the [page:OrthographicCamera], *0* is <em>not</em> a valid value
-			for a PerspectiveCamera's near plane.
+			摄像机的近端面,默认值是*0.1*。<br /><br />
+			其有效值范围是0到当前摄像机[page:.far far] plane(远端面)的值之间。
+			请注意,和[page:OrthographicCamera]不同,*0*对于PerspectiveCamera的近端面来说<em>不是</em>一个有效值。
 		</p>
 
 		<h3>[property:Object view]</h3>
 		<p>
 			Frustum window specification or null.
-			This is set using the [page:PerspectiveCamera.setViewOffset .setViewOffset] method
-			and cleared using [page:PerspectiveCamera.clearViewOffset .clearViewOffset].
+			这个值使用[page:PerspectiveCamera.setViewOffset .setViewOffset]方法来进行设置,使用[page:PerspectiveCamera.clearViewOffset .clearViewOffset]方法来进行清除。
 		</p>
 
 		<h3>[property:number zoom]</h3>
-		<p>Gets or sets the zoom factor of the camera. Default is *1*.</p>
+		<p>获取或者设置摄像机的缩放倍数,其默认值为*1*。</p>
 
 
-		<h2>Methods</h2>
-		<p>See the base [page:Camera] class for common methods.</p>
+		<h2>方法</h2>
+		<p>请参阅其基类[page:Camera]来查看共有属性。</p>
 
 		<h3>[method:null clearViewOffset]()</h3>
-		<p>Removes any offset set by the [page:PerspectiveCamera.setViewOffset .setViewOffset] method.</p>
+		<p>清除任何由[page:PerspectiveCamera.setViewOffset .setViewOffset]设置的偏移量。</p>
 
 		<h3>[method:Float getEffectiveFOV]()</h3>
-		<p>Returns the current vertical field of view angle in degrees considering .zoom.</p>
+		<p>结合.zoom(缩放倍数),以角度返回当前垂直视野角度。</p>
 
 		<h3>[method:Float getFilmHeight]()</h3>
 		<p>
-		Returns the height of the image on the film. If .aspect is less than or equal to one
-		(portrait format), the result equals .filmGauge.
+			返回当前胶片上图像的高,如果.aspect小于或等于1(肖像格式、纵向构图),则结果等于.filmGauge。
+
 		</p>
 
 		<h3>[method:Float getFilmWidth]()</h3>
 		<p>
-		Returns the width of the image on the film. If .aspect is greater than or equal to one
-		(landscape format), the result equals .filmGauge.
+			返回当前胶片上图像的宽,如果.aspect大于或等于1(景观格式、横向构图),则结果等于.filmGauge。
 		</p>
 
 		<h3>[method:Float getFocalLength]()</h3>
-		<p>Returns the focal length of the current .fov in respect to .filmGauge.</p>
+		<p>返回当前.fov(视野角度)相对于.filmGauge(胶片尺寸)的焦距。
 
 		<h3>[method:null setFocalLength]( [param:Float focalLength] )</h3>
 		<p>
-		Sets the FOV by focal length in respect to the current [page:PerspectiveCamera.filmGauge .filmGauge].<br /><br />
-
-		By default, the focal length is specified for a 35mm (full frame) camera.
-		</p>
+			通过相对于当前[page:PerspectiveCamera.filmGauge .filmGauge]的焦距,设置FOV。
+		<br /><br />
+			默认情况下,焦距是为35mm(全画幅)摄像机而指定的。</p>
 
 		<h3>[method:null setViewOffset]( [param:Float fullWidth], [param:Float fullHeight], [param:Float x], [param:Float y], [param:Float width], [param:Float height] )</h3>
 		<p>
-		fullWidth — full width of multiview setup<br />
-		fullHeight — full height of multiview setup<br />
-		x — horizontal offset of subcamera<br />
-		y — vertical offset of subcamera<br />
-		width — width of subcamera<br />
-		height — height of subcamera
+		fullWidth — 多视图的全宽设置<br />
+		fullHeight — 多视图的全高设置<br />
+		x — 副摄像机的水平偏移<br />
+		y — 副摄像机的垂直偏移<br />
+		width — 副摄像机的宽度<br />
+		height — 副摄像机的高度
 		</p>
 
 		<p>
-		Sets an offset in a larger frustum. This is useful for multi-window or multi-monitor/multi-machine setups.
+				在较大的viewing frustum(视锥体)中设置偏移量,对于多窗口或者多显示器的设置是很有用的。
 		</p>
 
 		<p>
-		For example, if you have 3x2 monitors and each monitor is 1920x1080 and the monitors are in grid like this:<br />
+			例如,如果你有一个3x2的显示器阵列,每个显示器分辨率都是1920x1080,且这些显示器排列成像这样的网格:<br />
 
 		<pre>
 +---+---+---+
@@ -162,8 +159,7 @@ scene.add( camera );</code>
 | D | E | F |
 +---+---+---+
 		</pre>
-
-		then for each monitor you would call it like this:<br />
+		那对于每个显示器,你可以这样来设置、调用:<br />
 
 		<code>var w = 1920;
 var h = 1080;
@@ -183,21 +179,22 @@ camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );
 // F
 camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );
 </code>
-
-		Note there is no reason monitors have to be the same size or in a grid.
+		请注意,显示器的不必具有相同的大小,或者不必在网格中。
 		</p>
 
 		<h3>[method:null updateProjectionMatrix]()</h3>
 		<p>
-		Updates the camera projection matrix. Must be called after any change of parameters.
+
+		更新摄像机投影矩阵。在任何参数被改变以后必须被调用。
+
 		</p>
 
 		<h3>[method:JSON toJSON]()</h3>
 		<p>
-		Return camera data in JSON format.
-		</p>
+				使用JSON格式来返回摄像机数据。
+			</p>
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 14 - 17
docs/api/zh/cameras/StereoCamera.html

@@ -9,58 +9,55 @@
 	</head>
 	<body>
 
-		<h1>[name]</h1>
+		<h1>立体相机([name]</h1>
 
 		<p class="desc">
-		Dual [page:PerspectiveCamera PerspectiveCamera]s used for effects such as
-		[link:https://en.wikipedia.org/wiki/Anaglyph_3D 3D Anaglyph] or [link:https://en.wikipedia.org/wiki/parallax_barrier Parallax Barrier].
+			双透视摄像机(立体相机)常被用于创建[link:https://en.wikipedia.org/wiki/Anaglyph_3D 3D Anaglyph](3D立体影像)或者[link:https://en.wikipedia.org/wiki/parallax_barrier Parallax Barrier](视差效果)。
+
 		</p>
 
 
-		<h2>Example</h2>
+		<h2>示例</h2>
 
 		<p>[example:webgl_effects_anaglyph effects / anaglyph ]</p>
 		<p>[example:webgl_effects_parallaxbarrier effects / parallaxbarrier ]</p>
 		<p>[example:webgl_effects_stereo effects / stereo ]</p>
 
 		<p>
-		This class is used internally in the files<br /><br />
+			这些类在以上示例中的文件内部使用:<br /><br />
 		[link:https://github.com/mrdoob/three.js/blob/master/examples/js/effects/AnaglyphEffect.js examples/js/effects/AnaglyphEffect.js]<br /><br />
 		[link:https://github.com/mrdoob/three.js/blob/master/examples/js/effects/ParallaxBarrierEffect.js examples/js/effects/ParallaxBarrierEffect.js]<br /><br />
 		[link:https://github.com/mrdoob/three.js/blob/master/examples/js/effects/StereoEffect.js examples/js/effects/StereoEffect.js]<br /><br />
-		used in the above examples.
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 		<h3>[name]( )</h3>
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 		<h3>[property:Float aspect]</h3>
-		<p>Default is *1*.</p>
+		<p>默认值是*1*.</p>
 
 		<h3>[property:Float eyeSep]</h3>
-		<p>Default is *0.064*.</p>
+		<p>默认值是*0.064*.</p>
 
 		<h3>[property:PerspectiveCamera cameraL]</h3>
-		<p>Left camera. This is added to [page:Layers layer 1] - objects to be rendered
-		by the left camera must also be added to this layer.</p>
+		<p>左摄像机,它被加入到了[page:Layers layer 1]中 —— 需要被左摄像机渲染的物体也应当要加入到这一层中。</p>
 
 		<h3>[property:PerspectiveCamera cameraR]</h3>
-		<p>Right camera.This is added to [page:Layers layer 2] - objects to be rendered
-		by the right camera must also be added to this layer.</p>
+		<p>右摄像机,它被加入到了[page:Layers layer 2]中 —— 需要被右摄像机渲染的物体也应当要加入到这一层中。</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 		<h3>[method:null update]( [param:PerspectiveCamera camera] )</h3>
 		<p>
-		Update the stereo cameras based on the camera passed in.
+			基于摄像机通过场景,更新立体摄像机。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 5 - 5
docs/api/zh/constants/Animation.html

@@ -8,9 +8,9 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>Animation Constants</h1>
+		<h1>动画常量(Animation Constants</h1>
 
-		<h2>Loop Modes</h2>
+		<h2>循环模式</h2>
     
 		<code>
 THREE.LoopOnce
@@ -18,21 +18,21 @@ THREE.LoopRepeat
 THREE.LoopPingPong
 		</code>
 
-    <h2>Interpolation Modes</h2>
+    <h2>插值模式</h2>
     <code>
 THREE.InterpolateDiscrete
 THREE.InterpolateLinear
 THREE.InterpolateSmooth
     </code>
 
-    <h2>Ending Modes</h2>
+    <h2>结束模式</h2>
     <code>
 THREE.ZeroCurvatureEnding
 THREE.ZeroSlopeEnding
 THREE.WrapAroundEnding
     </code>
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
 	</body>

+ 5 - 5
docs/api/zh/constants/Core.html

@@ -8,26 +8,26 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>Core Constants</h1>
+		<h1>核心常量(Core Constants</h1>
 
-		<h2>Revision Number</h2>
+		<h2>修订版本号</h2>
 
 		<code>
 		THREE.REV
 		</code>
 
 		<div id="rev">
-			The current three.js [link:https://github.com/mrdoob/three.js/releases revision number].
+			当前three.js的修订版本号( [link:https://github.com/mrdoob/three.js/releases revision number])。
 		</div>
 
-    <h2>Mouse Buttons</h2>
+    <h2>鼠标按钮</h2>
     <code>
 		THREE.MOUSE.LEFT
 		THREE.MOUSE.MIDDLE
 		THREE.MOUSE.RIGHT
     </code>
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
 

+ 9 - 9
docs/api/zh/constants/CustomBlendingEquations.html

@@ -8,15 +8,15 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>Custom Blending Equation Constants</h1>
+		<h1>自定义混合方程常量(Custom Blending Equation Constants</h1>
 
 
-		<h2>Example</h2>
+		<h2>示例</h2>
 		<p>[example:webgl_materials_blending_custom materials / blending / custom ]</p>
 
-		<h2>Usage</h2>
+		<h2>用法</h2>
 		<p>
-			These work with all material types. First set the material's blending mode to THREE.CustomBlending, then set the desired Blending Equation, Source Factor and Destination Factor.
+			这个常量可以用于所有的材质类型。首先将材质的混合模式设置为THREE.CustomBlending,然后设置所需要的混合方程、源因子和目标因子。
 		</p>
 
 		<code>
@@ -27,7 +27,7 @@
 		material.blendDst = THREE.OneMinusSrcAlphaFactor; //default
 		</code>
 
-		<h2>Blending Equations</h2>
+		<h2>混合方程</h2>
 		<code>
 		THREE.AddEquation
 		THREE.SubtractEquation
@@ -36,7 +36,7 @@
 		THREE.MaxEquation
 		</code>
 
-		<h2>Source Factors</h2>
+		<h2>源因子</h2>
 		<code>
 		THREE.ZeroFactor
 		THREE.OneFactor
@@ -51,12 +51,12 @@
 		THREE.SrcAlphaSaturateFactor
 		</code>
 
-		<h2>Destination Factors</h2>
+		<h2>目标因子</h2>
 		<p>
-			All of the Source Factors are valid as Destination Factors, except for <code>THREE.SrcAlphaSaturateFactor</code>
+			所有的源因子的值,在目标因子中都是有效的。除了:<code>THREE.SrcAlphaSaturateFactor</code>
 		</p>
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
 	</body>

+ 17 - 19
docs/api/zh/constants/DrawModes.html

@@ -8,52 +8,50 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>Draw Mode Constants</h1>
+		<h1>绘图模式常量(Draw Mode Constants</h1>
 
 		<p class="desc">
-			These are valid values for [page:Mesh.drawMode], and control how the list of vertices is interpeted once sent to the GPU.<br /><br />
-
-			Note that these only work when [page:Mesh.geometry] is a [page:BufferGeometry]. Changing this
-			when [page:Mesh.geometry] is a [page:Geometry] will have no effect.<br /><br />
+			这些是[page:Mesh.drawMode]的有效值,控制着顶点列表一旦被发送到GPU中将如何被解释。
+			请注意,只有当[page:Mesh.geometry]是一个[page:BufferGeometry]的时候,这些值才会生效。当[page:Mesh.geometry]是一个
+			[page:Geometry]的时候,改变这个值不会有任何效果。
+<br /><br />
 
 
 
 		</p>
 
-		<h2>Draw Modes</h2>
+
+		<h2>绘图模式</h2>
 
 		<code>
 			THREE.TrianglesDrawMode
 		</code>
 		<p>
-			This is the default, and results in every three consecutive vertices (v0, v1, v2), (v2, v3, v5), ...
-			being interpreted as a separate triangle. <br />
-			If the number of vertices is not a multiple of 3, excess vertices are ignored.
+			这是默认值,这将使得每三个连续顶点(v0, v1, v2),(v2, v3, v5),……被解释为一个单独的三角形。
+			<br />
+			如果顶点的数量不是3的倍数,那么将会忽略多余的顶点。
 		</p>
 
 		<code>
 			THREE.TriangleStripDrawMode
 		</code>
 		<p>
-			This will result in a series of triangles connected in a strip, given by (v0, v1, v2), (v2, v1, v3), (v2, v3, v4), ...
-			so that every subsequent triangle shares two vertices with the previous triangle.
+			这将使得一系列的三角形(由(v0, v1, v2),(v2, v1, v3),(v2, v3, v4),……给定)一个一个地连在一起,每一个连续的三角形将和前一个三角形共享两个顶点。
 		</p>
 
 		<code>
 			THREE.TriangleFanDrawMode
 		</code>
 		<p>
-			This will result in a series of triangles each sharing the first vertex (like a fan),
-			given by (v0, v1, v2), (v0, v2, v3), (v0, v3, v4), ... <br /><br />
+这将会使得一个序列中的每一个三角形(由(v0, v1, v2),(v0, v2, v3),(v0, v3, v4),……给定)共享它们的第一个顶点(就像风扇一样)。<br /><br />
 
-			<em>Note:</em> As of [link:https://en.wikipedia.org/wiki/DirectX#DirectX_10 DirectX10], this mode is not supported. As Chrome and Firefox
-			render WebGL using [link:https://en.wikipedia.org/wiki/ANGLE_(software) ANGLE] on Windows,
-			internally this mode will be converted to a supported mode, which will likely lead to lowered
-			performance on those browsers.
+			<em>注意:</em>截至[link:https://en.wikipedia.org/wiki/DirectX#DirectX_10 DirectX10]这个模式还没有被支持。
+			由于Chorme和Firefox在Windows上是使用[link:https://en.wikipedia.org/wiki/ANGLE_(software) ANGLE]来渲染WebGL的,所以这种模式将会在内部转换为受支持的模式,
+			但可能会导致这些浏览器在性能上降低一些。
 		</p>
 
 
-		<h2>Usage</h2>
+		<h2>用法</h2>
 
 		<code>
 		var geometry = new THREE.Geometry();
@@ -76,7 +74,7 @@
 
 
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
 	</body>

+ 33 - 32
docs/api/zh/constants/Materials.html

@@ -8,40 +8,40 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>Material Constants</h1>
+		<h1>材质常量(Material Constants</h1>
 
 		<p class="desc">
-		These constants define properties common to all material types,
-		with the exception of Texture Combine Operations which only apply to [page:MeshBasicMaterial.combine MeshBasicMaterial], [page:MeshLambertMaterial.combine MeshLambertMaterial] and [page:MeshPhongMaterial.combine MeshPhongMaterial].<br />
+			由这些常量定义的属性对所有的材质类型都生效,除了Texture Combine Operations只应用于
+			[page:MeshBasicMaterial.combine MeshBasicMaterial],[page:MeshLambertMaterial.combine MeshLambertMaterial]和[page:MeshPhongMaterial.combine MeshPhongMaterial]。<br />
 		</p>
 
 
-		<h2>Side</h2>
+		<h2></h2>
 		<code>
 		THREE.FrontSide
 		THREE.BackSide
 		THREE.DoubleSide
 		</code>
 		<p>
-		Defines which side of faces will be rendered - front, back or both.
-		Default is [page:Constant FrontSide].
+			定义了哪一边的面将会被渲染 —— 正面,或是反面,还是两个面都渲染。
+			默认值是[page:Constant FrontSide](只渲染正面)。
 		</p>
 
 
-		<h2>Colors</h2>
+		<h2>颜色</h2>
 		<code>
 		THREE.NoColors
 		THREE.FaceColors
 		THREE.VertexColors
 		</code>
 		<p>
-		[page:Constant NoColors] is the default and applies the material's color to all faces.<br />
-		[page:Constant FaceColors] colors faces according to each [page:Face3 Face3] [page:Color Color] value.<br />
-		[page:Constant VertexColors] colors faces according to each [page:Face3 Face3] vertexColors value. This is an array of three [page:Color Color]s, one for each vertex in the face.<br />
-		See the [example:webgl_geometry_colors geometry / colors] example.
+		[page:Constant NoColors] 是默认值,且会将材质的颜色应用到所有面。<br />
+		[page:Constant FaceColors] 根据每个[page:Face3 Face3]的[page:Color Color]值来对面进行着色。<br />
+		[page:Constant VertexColors] 根据每个 [page:Face3 Face3]的vertexColors(顶点颜色)值来对面进行着色。 这是一个包含有三个[page:Color Color]的数组,数组中每一项都对应着面中的每一个顶点。<br />
+		请查看示例:[example:webgl_geometry_colors geometry / colors]。
 		</p>
 
-		<h2>Blending Mode</h2>
+		<h2>混合模式</h2>
 		<code>
 		THREE.NoBlending
 		THREE.NormalBlending
@@ -53,13 +53,13 @@
 
 
 		<p>
-		These control the source and destination blending equations for the material's RGB and Alpha sent to the WebGLRenderer for use by WebGL.<br />
-		[page:Constant NormalBlending] is the default.<br />
-		Note that [page:Constant CustomBlending] must be set to use [page:CustomBlendingEquation Custom Blending Equations].<br />
-		See the [example:webgl_materials_blending materials / blending] example.<br />
+			这些值控制着源和目标材质中,被发送到WebGLRenderer,来给WebGL使用的包含有RGB和Alpha数据的混合方程。<br />
+			默认值是[page:Constant NormalBlending]。<br />
+			请注意,[page:Constant CustomBlending]必须被设置为自定义混合方程([page:CustomBlendingEquation Custom Blending Equations])常量中的值。<br />
+			请查看示例:[example:webgl_materials_blending materials / blending]。<br />
 		</p>
 
-		<h2>Depth Mode</h2>
+		<h2>深度模式</h2>
 		<code>
 		THREE.NeverDepth
 		THREE.AlwaysDepth
@@ -70,31 +70,32 @@
 		THREE.NotEqualDepth
 		</code>
 		<p>
-		Which depth function the material uses to compare incoming pixels Z-depth against the current Z-depth buffer value. If the result of the comparison is true, the pixel will be drawn.<br />
-		[page:Materials NeverDepth] will never return true.<br />
-		[page:Materials AlwaysDepth] will always return true.<br />
-		[page:Materials LessDepth] will return true if the incoming pixel Z-depth is less than the current buffer Z-depth.<br />
-		[page:Materials LessEqualDepth] is the default and will return true if the incoming pixel Z-depth is less than or equal to the current buffer Z-depth.<br />
-		[page:Materials GreaterEqualDepth] will return true if the incoming pixel Z-depth is greater than or equal to the current buffer Z-depth.<br />
-		[page:Materials GreaterDepth] will return true if the incoming pixel Z-depth is greater than the current buffer Z-depth.<br />
-		[page:Materials NotEqualDepth] will return true if the incoming pixel Z-depth is not equal to the current buffer Z-depth.<br />
+			材质使用这些深度函数来比较输入像素和缓冲器中Z-depth的值。
+			如果比较的结果为true,则将绘制像素。<br />
+		[page:Materials NeverDepth] 永远不返回true。<br />
+		[page:Materials AlwaysDepth] 总是返回true。<br />
+		[page:Materials LessDepth] 当输入像素Z-depth小于当前缓冲器Z-depth时,返回true。<br />
+		[page:Materials LessEqualDepth] 为默认值,当输入像素Z-depth小于或等于当前缓冲器Z-depth时,返回true。<br />
+		[page:Materials GreaterEqualDepth] 当输入像素Z-depth大于或等于当前缓冲器Z-depth时,返回true。 <br />
+		[page:Materials GreaterDepth] 当输入像素Z-depth大于当前缓冲器Z-depth时,返回true。<br />
+		[page:Materials NotEqualDepth] 当输入像素Z-depth不等于当前缓冲器Z-depth时,返回true。<br />
 		</p>
 
-		<h2>Texture Combine Operations</h2>
+		<h2>纹理结合操作</h2>
 		<code>
 		THREE.MultiplyOperation
 		THREE.MixOperation
 		THREE.AddOperation
 		</code>
 		<p>
-		These define how the result of the surface's color is combined with the environment map (if present), for [page:MeshBasicMaterial.combine MeshBasicMaterial], [page:MeshLambertMaterial.combine MeshLambertMaterial] and [page:MeshPhongMaterial.combine MeshPhongMaterial]. <br />
-		[page:Constant MultiplyOperation] is the default and multiplies the environment map color with the surface color.<br />
-		[page:Constant MixOperation] uses reflectivity to blend between the two colors.<br />
-		[page:Constant AddOperation] adds the two colors.
-		</p>
+			这些常量定义了物体表面颜色与环境贴图(如果存在的话)相结合的结果,
+			用在[page:MeshBasicMaterial.combine MeshBasicMaterial]、[page:MeshLambertMaterial.combine MeshLambertMaterial]和[page:MeshPhongMaterial.combine MeshPhongMaterial]当中。<br />
+		[page:Constant MultiplyOperation] 是默认值,它将环境贴图和物体表面颜色进行相乘。<br />
+		[page:Constant MixOperation] 使用反射率来混和两种颜色。uses reflectivity to blend between the two colors.<br />
+		[page:Constant AddOperation] 用于对两种颜色进行相加。</p>
 
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
 	</body>

+ 22 - 22
docs/api/zh/constants/Renderer.html

@@ -8,9 +8,9 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>WebGLRenderer Constants</h1>
+		<h1>WebGL渲染器常量(WebGLRenderer Constants</h1>
 
-		<h2>Cull Face Modes</h2>
+		<h2>面剔除模式</h2>
 		<code>
 		THREE.CullFaceNone
 		THREE.CullFaceBack
@@ -18,37 +18,37 @@
 		THREE.CullFaceFrontBack
 		</code>
 		<p>
-		[page:constant CullFaceNone] disables face culling.<br />
-		[page:constant CullFaceBack] culls back faces (default).<br />
-		[page:constant CullFaceFront] culls front faces.<br />
-		[page:constant CullFaceFrontBack] culls both front and back faces.
+		[page:constant CullFaceNone] 禁用面剔除。<br />
+		[page:constant CullFaceBack] 为默认值,剔除背面。<br />
+		[page:constant CullFaceFront] 剔除正面。<br />
+		[page:constant CullFaceFrontBack] 剔除正面和背面。
 		</p>
 
-		<h2>Front Face Direction</h2>
+		<h2>正面方向</h2>
 		<code>
 		THREE.FrontFaceDirectionCW
 		THREE.FrontFaceDirectionCCW
 		</code>
 		<p>
-		[page:constant FrontFaceDirectionCW] sets the winding order for polygons to clockwise.<br />
-		[page:constant FrontFaceDirectionCCW] sets the winding order for polygons to counter-clockwise (default).
+		[page:constant FrontFaceDirectionCW] 将多边形的缠绕顺序设置为顺时针方向。 <br />
+		[page:constant FrontFaceDirectionCCW] 为默认值,将多边形的缠绕顺序设置为逆时针方向。
 		</p>
 
-		<h2>Shadow Types</h2>
+		<h2>阴影类型</h2>
 		<code>
 		THREE.BasicShadowMap
 		THREE.PCFShadowMap
 		THREE.PCFSoftShadowMap
 		</code>
 		<p>
-		These define the WebGLRenderer's [page:WebGLRenderer.shadowMap.type shadowMap.type] property.<br /><br />
+			这些常量定义了WebGLRenderer中[page:WebGLRenderer.shadowMap.type shadowMap.type]的属性。<br /><br />
 
-		[page:constant BasicShadowMap] gives unfiltered shadow maps - fastest, but lowest quality.<br />
-		[page:constant PCFShadowMap] filters shadow maps using the Percentage-Closer Filtering (PCF) algorithm (default).<br />
-		[page:constant PCFSoftShadowMap] filters shadow maps using the Percentage-Closer Soft Shadows (PCSS) algorithm.
+		[page:constant BasicShadowMap] 能够给出没有经过过滤的阴影映射 —— 速度最快,但质量最差。<br />
+		[page:constant PCFShadowMap] 为默认值,使用Percentage-Closer Filtering (PCF)算法来过滤阴影映射。<br />
+		[page:constant PCFSoftShadowMap] 使用Percentage-Closer Soft Shadows (PCSS) 算法来过滤阴影映射。
 		</p>
 
-		<h2>Tone Mapping</h2>
+		<h2>色调映射</h2>
 		<code>
 		THREE.NoToneMapping
 		THREE.LinearToneMapping
@@ -57,19 +57,19 @@
 		THREE.CineonToneMapping
 		</code>
 		<p>
-		These define the WebGLRenderer's [page:WebGLRenderer.toneMapping toneMapping] property.
-		This is used to approximate the appearance of high dynamic range (HDR) on the
-		low dynamic range medium of a standard computer monitor or mobile device's screen.<br /><br />
+				这些常量定义了WebGLRenderer中[page:WebGLRenderer.toneMapping toneMapping]的属性。
 
-		[page:constant NoToneMapping] disables tone mapping.<br />
-		[page:constant LinearToneMapping] is the default.<br /><br />
+				这个属性用于在普通计算机显示器或者移动设备屏幕等低动态范围介质上,模拟、逼近高动态范围(HDR)效果。<br /><br />
 
-		See the [example:webgl_tonemapping WebGL / tonemapping] example.
+		[page:constant NoToneMapping] 禁用色调映射。<br />
+		[page:constant LinearToneMapping] 为默认值,线性色调映射。<br /><br />
+
+		请查看示例:[example:webgl_tonemapping WebGL / tonemapping]。
 
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
 	</body>

+ 151 - 157
docs/api/zh/constants/Textures.html

@@ -1,17 +1,19 @@
 <!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>Texture Constants</h1>
-
-		<h2>Mapping Modes</h2>
-		<code>
+
+<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>材质常量(Texture Constants)</h1>
+
+	<h2>映射模式</h2>
+	<code>
 		THREE.UVMapping
 		THREE.CubeReflectionMapping
 		THREE.CubeRefractionMapping
@@ -22,70 +24,65 @@
 		THREE.CubeUVRefractionMapping
 		</code>
 
-		<p>
-		These define the texture's mapping mode.<br />
-		[page:Constant UVMapping] is the default, and maps the texture using the mesh's UV coordinates.<br /><br />
+	<p>
+		这些常量定义了纹理贴图的映射模式。<br />
+		[page:Constant UVMapping]是默认值,纹理使用网格的坐标来进行映射。<br /><br />
+		其它的值定义了环境映射的类型。<br /><br />
 
-		The rest define environment mapping types.<br /><br />
+		[page:Constant CubeReflectionMapping] 和 [page:Constant CubeRefractionMapping] 用于 [page:CubeTexture CubeTexture] ——
+		由6个纹理组合而成,每个纹理都是立方体的一个面。
 
-		[page:Constant CubeReflectionMapping] and [page:Constant CubeRefractionMapping] are for
-		use with a [page:CubeTexture CubeTexture], which is made up of six textures, one for each face of the cube.
-		[page:Constant CubeReflectionMapping] is the default for a [page:CubeTexture CubeTexture]. <br /><br />
+		对于[page:CubeTexture CubeTexture]来说,[page:Constant CubeReflectionMapping]是其默认值。<br /><br />
 
-		[page:Constant EquirectangularReflectionMapping] and [page:Constant EquirectangularRefractionMapping]
-		are for use with an equirectangular environment map.  Also called a lat-long map, an equirectangular
-		texture represents a 360-degree view along the horizontal centerline, and a 180-degree view along the
-		vertical axis, with the top and bottom edges of the image corresponding to the north and south poles
-		of a mapped sphere.<br /><br />
+		[page:Constant EquirectangularReflectionMapping] 和 [page:Constant EquirectangularRefractionMapping]
+		用于等距圆柱投影的环境贴图,也被叫做经纬线映射贴图。等距圆柱投影贴图表示沿着其水平中线360°的视角,以及沿着其垂直轴向180°的视角。贴图顶部和底部的边缘分别对应于它所映射的球体的北极和南极。
+		<br /><br />
 
-		[page:Constant SphericalReflectionMapping] is for use with a spherical reflection map such as may be obtained
-		by cropping a photograph of a mirrored ball.  Sphere maps will be rendered "facing" the camera, irrespective
-		of the position of the camera relative to the cubemapped object or surface.<br /><br />
+		[page:Constant SphericalReflectionMapping] 用球形反射贴图,例如它可以通过剪裁镜面球的照片来获得。
+		无论摄像机相对于立方贴图对象或者表面的位置时怎样的,球形贴图被渲染时将会“面朝”摄像机。<br /><br />
 
-		See the [example:webgl_materials_envmaps materials / envmaps] example.
-		</p>
+		请查看示例:[example:webgl_materials_envmaps materials / envmaps] 。
+	</p>
 
 
-		<h2>Wrapping Modes</h2>
-		<code>
+	<h2>包裹模式</h2>
+	<code>
 		THREE.RepeatWrapping
 		THREE.ClampToEdgeWrapping
 		THREE.MirroredRepeatWrapping
 		</code>
-		<p>
-		These define the texture's [page:Texture.wrapS wrapS] and [page:Texture.wrapT wrapT] properties,
-		which define horizontal and vertical texture wrapping.<br /><br />
+	<p>
+		这些常量定义了纹理贴图的 [page:Texture.wrapS wrapS] 和 [page:Texture.wrapT wrapT] 属性,定义了水平和垂直方向上纹理的包裹方式。
+		<br /><br />
 
+		使用[page:constant RepeatWrapping],纹理将简单地重复到无穷大。
 		With [page:constant RepeatWrapping] the texture will simply repeat to infinity.<br /><br />
 
-		[page:constant ClampToEdgeWrapping] is the default.
-		The last pixel of the texture stretches to the edge of the mesh.<br /><br />
+		[page:constant ClampToEdgeWrapping]是默认值,纹理中的最后一个像素将延伸到网格的边缘。<br /><br />
 
-		With [page:constant MirroredRepeatWrapping] the texture will repeats to infinity, mirroring on each repeat.
-		</p>
+		使用[page:constant MirroredRepeatWrapping], 纹理将重复到无穷大,在每次重复时将进行镜像。
+	</p>
 
-		<h2>Magnification Filters</h2>
-		<code>
+	<h2>Magnification Filters
+		放大滤镜
+	</h2>
+	<code>
 		THREE.NearestFilter
 		THREE.LinearFilter
 		</code>
 
-		<p>
-		For use with a texture's [page:Texture.magFilter magFilter]	property,
-		these define the texture magnification function to be used when the pixel being textured maps to an
-		area less than or equal to one texture element (texel).<br /><br />
+	<p>
+		这些常量用于纹理的[page:Texture.magFilter magFilter]属性,它们定义了当被纹理化的像素映射到小于或者等于1纹理元素(texel)的区域时,将要使用的纹理放大函数。<br /><br />
 
-		[page:constant NearestFilter] returns the value of the texture element that is nearest
-		(in Manhattan distance) to the specified texture coordinates.<br /><br />
+		[page:constant NearestFilter]返回与指定纹理坐标(在曼哈顿距离之内)最接近的纹理元素的值。<br /><br />
+		[page:constant LinearFilter]是默认值,返回距离指定的纹理坐标最近的四个纹理元素的加权平均值,
+		并且可以包含纹理的其他部分中,被包裹或者被重复的项目,具体取决于 [page:Texture.wrapS wrapS] 和 [page:Texture.wrapT wrapT] 的值,and on the exact mapping。
 
-		[page:constant LinearFilter] is the default and returns the weighted average
-		of the four texture elements that are closest to the specified texture coordinates,
-		and can include items wrapped or repeated from other parts of a texture,
-		depending on the values of [page:Texture.wrapS wrapS] and [page:Texture.wrapT wrapT], and on the exact mapping.
-		</p>
+	</p>
 
-		<h2>Minification Filters</h2>
-		<code>
+	<h2>缩小滤镜
+		Minification Filters</h2>
+	<code>
 		THREE.NearestFilter
 		THREE.NearestMipMapNearestFilter
 		THREE.NearestMipMapLinearFilter
@@ -94,37 +91,32 @@
 		THREE.LinearMipMapLinearFilter
 		</code>
 
-		<p>
-		For use with a texture's [page:Texture.minFilter minFilter]	property, these define
-		the texture minifying function that is used whenever the pixel being textured maps
-		to an area greater than one texture element (texel).<br /><br />
+	<p>
+		这些常量用于纹理的[page:Texture.minFilter minFilter]属性,它们定义了当被纹理化的像素映射到大于1纹理元素(texel)的区域时,将要使用的纹理缩小函数。<br /><br />
 
-		In addition to [page:constant NearestFilter] and [page:constant LinearFilter],
-		the following four functions can be used for minification:<br /><br />
+		除了[page:constant NearestFilter] 和 [page:constant LinearFilter],
+		下面的四个函数也可以用于缩小:<br /><br />
 
-		[page:constant NearestMipMapNearestFilter] chooses the mipmap that most closely
-		matches the size of the pixel being textured
-		and uses the [page:constant NearestFilter] criterion (the texel nearest to the
-		center of the pixel) to produce a texture value.<br /><br />
+		[page:constant NearestMipMapNearestFilter]选择与被纹理化像素的尺寸最匹配的mipmap,并以[page:constant
+		NearestFilter](最靠近像素中心的纹理元素)为标准来生成纹理值。
+		<br /><br />
 
-		[page:constant NearestMipMapLinearFilter] chooses the two mipmaps that most closely
-		match the size of the pixel being textured and uses the [page:constant NearestFilter] criterion to produce
-		a texture value from each mipmap. The final texture value is a weighted average of those two values.<br /><br />
+		[page:constant NearestMipMapLinearFilter]选择与被纹理化像素的尺寸最接近的两个mipmap,并以[page:constant
+		NearestFilter]为标准来从每个mipmap中生成纹理值。最终的纹理值是这两个值的加权平均值。
+		<br /><br />
 
-		[page:constant LinearMipMapNearestFilter] chooses the mipmap that most closely matches
-		the size of the pixel being textured and uses the [page:constant LinearFilter] criterion
-		(a weighted average of the four texels that are closest to the center of the pixel)
-		to produce a texture value.<br /><br />
+		[page:constant LinearMipMapNearestFilter]选择与被纹理化像素的尺寸最匹配的mipmap,并以[page:constant
+		LinearFilter](最靠近像素中心的四个纹理元素的加权平均值)为标准来生成纹理值。
+		<br /><br />
 
-		[page:constant LinearMipMapLinearFilter] is the default and chooses the two mipmaps
-		that most closely match the size of the pixel being textured and uses the [page:constant LinearFilter] criterion
-		to produce a texture value from each mipmap. The final texture value is a weighted average of those two values.<br /><br />
+		[page:constant LinearMipMapLinearFilter]是默认值,它选择与被纹理化像素的尺寸最接近的两个mipmap,并以[page:constant
+		LinearFilter]为标准来从每个mipmap中生成纹理值。最终的纹理值是这两个值的加权平均值。<br /><br />
 
-		See the [example:webgl_materials_texture_filters materials / texture / filters] example.
-		</p>
+		请查看示例:[example:webgl_materials_texture_filters materials / texture / filters]。
+	</p>
 
-		<h2>Types</h2>
-		<code>
+	<h2>类型</h2>
+	<code>
 		THREE.UnsignedByteType
 		THREE.ByteType
 		THREE.ShortType
@@ -138,14 +130,14 @@
 		THREE.UnsignedShort565Type
 		THREE.UnsignedInt248Type
 		</code>
-		<p>
-		For use with a texture's [page:Texture.type type]	property, which must correspond to the correct format. See below for details.<br /><br />
+	<p>
+		这些常量用于纹理的[page:Texture.type type]属性,这些属性必须与正确的格式相对应。详情请查看下方。<br /><br />
 
-		[page:constant UnsignedByteType] is the default.
-		</p>
+		[page:constant UnsignedByteType] 是默认值。
+	</p>
 
-		<h2>Formats</h2>
-		<code>
+	<h2>格式</h2>
+	<code>
 		THREE.AlphaFormat
 		THREE.RGBFormat
 		THREE.RGBAFormat
@@ -155,91 +147,93 @@
 		THREE.DepthFormat
 		THREE.DepthStencilFormat
 		</code>
-		<p>
-		For use with a texture's [page:Texture.format format]	property, these define
-		how elements of a 2d texture, or *texels*, are read by shaders.<br /><br />
+	<p>
+		这些常量用于纹理的[page:Texture.format format]属性,它们定义了shader(着色器)将如何读取的2D纹理或者*texels*(纹理元素)的元素。.<br /><br />
 
-		[page:constant AlphaFormat] discards the red, green and blue components and reads just the alpha component.<br /><br />
+		[page:constant AlphaFormat] 丢弃红、绿、蓝分量,仅读取Alpha分量。<br /><br />
 
-		[page:constant RGBFormat] discards the alpha components and reads the red, green and blue components.<br /><br />
+		[page:constant RGBFormat] 丢弃Alpha分量,仅读取红、绿、蓝分量。<br /><br />
 
-		[page:constant RGBAFormat] is the default and reads the red, green, blue and alpha components.<br /><br />
+		[page:constant RGBAFormat] 是默认值,它将读取红、绿、蓝和Alpha分量。<br /><br />
 
-		[page:constant LuminanceFormat] reads each element as a single luminance component.
-		 This is then converted to a floating point, clamped to the range [0,1], and then assembled
-		 into an RGBA element by placing the luminance value in the red, green and blue channels,
-		 and attaching 1.0 to the alpha channel.<br /><br />
 
-		[page:constant LuminanceAlphaFormat] reads each element as a luminance/alpha double.
-		The same process occurs as for the [page:constant LuminanceFormat], except that the
-		alpha channel may have values other than *1.0*.<br /><br />
+		[page:constant LuminanceFormat] 将每个元素作为单独的亮度分量来读取。
+		将其转换为范围限制在[0,1]区间的浮点数,然后通过将亮度值放入红、绿、蓝通道,并将1.0赋给Alpha通道,来组装成一个RGBA元素。<br /><br />
 
-		[page:constant RGBEFormat] is identical to [page:constant RGBAFormat].<br /><br />
 
-		[page:constant DepthFormat] reads each element as a single depth value, converts it to floating point, and clamps to the range [0,1].
-		This is the default for [page:DepthTexture DepthTexture].<br /><br />
+		[page:constant LuminanceAlphaFormat] 将每个元素同时作为亮度分量和Alpha分量来读取。
+		和上面[page:constant LuminanceFormat]的处理过程是一致的,除了Alpha分量具有除了*1.0*以外的值。<br /><br />
 
-		[page:constant DepthStencilFormat] reads each element is a pair of depth and stencil values.
-		The depth component of the pair is interpreted as in [page:constant DepthFormat].
-		The stencil component is interpreted based on the depth + stencil internal format.
-		<br /><br />
+		[page:constant RGBEFormat] 与 [page:constant RGBAFormat] 是相同的。<br /><br />
+
+		[page:constant DepthFormat]将每个元素作为单独的深度值来读取,将其转换为范围限制在[0,1]区间的浮点数。
+		它是[page:DepthTexture DepthTexture]的默认值。<br /><br />
 
-		Note that the texture must have the correct [page:Texture.type type] set, as described above.
-		See [link:https://developer.mozilla.org/en/docs/Web/API/WebGLRenderingContext/texImage2D WebGLRenderingContext.texImage2D] for details.
-		</p>
+		[page:constant DepthStencilFormat]将每个元素同时作为一对深度值和模板值来读取。
+		其中的深度分量解释为[page:constant DepthFormat]。
+		模板分量基于深度+模板的内部格式来进行解释。
+
+		<br /><br />
+		请注意,纹理必须具有正确的[page:Texture.type type]设置,正如上一节所描述的那样。
+		请参阅[link:https://developer.mozilla.org/en/docs/Web/API/WebGLRenderingContext/texImage2D
+		WebGLRenderingContext.texImage2D]来获得有关详细信息。
+	</p>
 
-		<h2>DDS / ST3C Compressed Texture Formats</h2>
-		<code>
+	<h2>DDS / ST3C 压缩纹理格式</h2>
+	<code>
 		THREE.RGB_S3TC_DXT1_Format
 		THREE.RGBA_S3TC_DXT1_Format
 		THREE.RGBA_S3TC_DXT3_Format
 		THREE.RGBA_S3TC_DXT5_Format
 		</code>
-		<p>
-		For use with a [page:CompressedTexture CompressedTexture]'s [page:Texture.format format]	property,
-		these require support for the
-		[link:https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/ WEBGL_compressed_texture_s3tc]
-		extension. <br /><br />
-
-		There are four [link:https://en.wikipedia.org/wiki/S3_Texture_Compression S3TC] formats available via this extension. These are:<br />
-		[page:constant RGB_S3TC_DXT1_Format]: A DXT1-compressed image in an RGB image format.<br />
-		[page:constant RGBA_S3TC_DXT1_Format]: A DXT1-compressed image in an RGB image format with a simple on/off alpha value.<br />
-		[page:constant RGBA_S3TC_DXT3_Format]: A DXT3-compressed image in an RGBA image format. Compared to a 32-bit RGBA texture, it offers 4:1 compression.<br />
-		[page:constant RGBA_S3TC_DXT5_Format]: A DXT5-compressed image in an RGBA image format. It also provides a 4:1 compression, but differs to the DXT3 compression in how the alpha compression is done.<br />
-		</p>
-
-		<h2>PVRTC Compressed Texture Formats</h2>
-		<code>
+	<p>
+		要使用[page:CompressedTexture CompressedTexture]中的[page:Texture.format
+		format]属性,需要获得[link:https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/
+		WEBGL_compressed_texture_s3tc]扩展的支持。<br /><br />
+
+		通过这个扩展,这里的四种[link:https://en.wikipedia.org/wiki/S3_Texture_Compression S3TC]格式将可以使用:<br />
+
+		[page:constant RGB_S3TC_DXT1_Format]:RGB图像格式的DXT1压缩图像。
+		[page:constant RGBA_S3TC_DXT1_Format]:RGB图像格式的DXT1压缩图像,Alpha仅具有是/否透明两个值。<br />
+		[page:constant RGBA_S3TC_DXT3_Format]:RGBA图像格式的DXT3压缩图像,和32位RGBA纹理贴图相比,它提供了4:1的压缩比。<br />
+		[page:constant RGBA_S3TC_DXT5_Format]:RGBA图像格式的DXT5压缩图像,它也提供了4:1的压缩比,但与DX3格式的不同之处在于其Alpha是如何被压缩的。<br />
+	</p>
+
+	<h2>PVRTC 压缩纹理格式
+		PVRTC Compressed Texture Formats</h2>
+	<code>
 		THREE.RGB_PVRTC_4BPPV1_Format
 		THREE.RGB_PVRTC_2BPPV1_Format
 		THREE.RGBA_PVRTC_4BPPV1_Format
 		THREE.RGBA_PVRTC_2BPPV1_Format
 		</code>
-		<p>
-		For use with a [page:CompressedTexture CompressedTexture]'s [page:Texture.format format]	property,
-		these require support for the [link:https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/ WEBGL_compressed_texture_pvrtc]
-		extension. <br />
-		PVRTC is typically only available on mobile devices with PowerVR chipsets, which are mainly Apple devices.<br /><br />
-
-		There are four [link:https://en.wikipedia.org/wiki/PVRTC PVRTC] formats available via this extension. These are:<br />
-		[page:constant RGB_PVRTC_4BPPV1_Format]: RGB compression in 4-bit mode. One block for each 4×4 pixels.<br />
-		[page:constant RGB_PVRTC_2BPPV1_Format]: RGB compression in 2-bit mode. One block for each 8×4 pixels.<br />
-		[page:constant RGBA_PVRTC_4BPPV1_Format]: RGBA compression in 4-bit mode. One block for each 4×4 pixels.<br />
-		[page:constant RGBA_PVRTC_2BPPV1_Format]: RGBA compression in 2-bit mode. One block for each 8×4 pixels.<br />
-		</p>
-
-		<h2>ETC Compressed Texture Format</h2>
-		<code>
+	<p>
+		要使用[page:CompressedTexture CompressedTexture]中的[page:Texture.format format]属性,需要获得
+		[link:https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/
+		WEBGL_compressed_texture_pvrtc]扩展的支持。<br />
+		PVRTC通常只在具有PowerVR芯片的移动设备上可用,这些设备主要是苹果设备。<br /><br />
+
+
+		通过这个扩展,这里的四种[link:https://en.wikipedia.org/wiki/PVRTC PVRTC]格式将可以使用:<br />
+
+		[page:constant RGB_PVRTC_4BPPV1_Format]:4位模式下的RGB压缩,每4x4像素一个块。<br />
+		[page:constant RGB_PVRTC_2BPPV1_Format]:2位模式下的RGB压缩,每8x4像素一个块。<br />
+		[page:constant RGBA_PVRTC_4BPPV1_Format]: 4位模式下的RGBA压缩,每4x4像素一个块。<br />
+		[page:constant RGBA_PVRTC_2BPPV1_Format]: 2位模式下的RGB压缩,每8x4像素一个块。<br />
+	</p>
+
+	<h2>ETC 压缩纹理格式</h2>
+	<code>
 		THREE.RGB_ETC1_Format
 		</code>
-		<p>
-		For use with a [page:CompressedTexture CompressedTexture]'s [page:Texture.format format]	property,
-		these require support for the [link:https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc1/ WEBGL_compressed_texture_etc1]
-		extension. <br /><br />
-		</p>
-
-		<h2>Encoding</h2>
-		<code>
+	<p>
+		要使用[page:CompressedTexture CompressedTexture]中的[page:Texture.format format]属性,需要获得
+		[link:https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc1/
+		WEBGL_compressed_texture_etc1]扩展的支持。<br /><br />
+	</p>
+
+	<h2>编码</h2>
+	<code>
 		THREE.LinearEncoding
 		THREE.sRGBEncoding
 		THREE.GammaEncoding
@@ -251,18 +245,18 @@
 		THREE.BasicDepthPacking
 		THREE.RGBADepthPacking
 		</code>
-		<p>
-		For use with a Texture's [page:Texture.encoding encoding]	property.<br /><br />
+	<p>
+		这些常量用于纹理的[page:Texture.encoding encoding]属性。<br /><br />
 
-		If the encoding type is changed after the texture has already been used by a material,
-		you will need to set [page:Material.needsUpdate Material.needsUpdate] to *true* to make the material recompile.<br /><br />
+		如果编码类型在纹理已被一个材质使用之后发生了改变,
+		你需要来设置[page:Material.needsUpdate Material.needsUpdate]为*true*来使得材质重新编译。<br /><br />
 
-		[page:constant LinearEncoding] is the default.
-		Values other than this are only valid for a material's map, envMap and emissiveMap.
-		</p>
+		[page:constant LinearEncoding]是默认值。
+		除此之外的其他值仅在材质的贴图、envMap和emissiveMap中有效。
+	</p>
 
-		<h2>Source</h2>
+	<h2>源代码</h2>
+	[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
+</body>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
-	</body>
-</html>
+</html>

+ 196 - 209
docs/api/zh/deprecated/DeprecatedList.html

@@ -8,81 +8,68 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>Deprecated API List</h1>
+		<h1>已被弃用API列表(Deprecated API List</h1>
 
 		<p>
-			As three.js has a rapidly evolving interface, you may come across examples that
-			suggest the use of API elements that are no longer part of the core.<br /><br />
-
-			Below is a list of such elements, along with info regarding their replacements.
+			由于three.js具有一个快速发展的接口,你可能会遇上类似“提示你当前所调用的API元素不再是Three.js核心的一部分”的提示。<br /><br />
+			下面就列举出了这些API元素,以及一些关于他们的替代信息。
 		</p>
 
-
-
-
-
-
-
-
-
-
-		<h2>Audio</h2>
+		
+		
+		
+		
+		<h2>音频(Audio)</h2>
 
 		<h3>[page:Audio]</h3>
-		<p>Audio.load has been deprecated. Use [page:AudioLoader] instead.</p>
+		<p>Audio.load 已被弃用。 请使用 [page:AudioLoader]。</p>
 
 		<h3>[page:AudioAnalyser]</h3>
-		<p>AudioAnalyser.getData() has been renamed to [page:AudioAnalyser.getFrequencyData]().</p>
+		<p>AudioAnalyser.getData() 已被重命名为 [page:AudioAnalyser.getFrequencyData]()。</p>
 
 		<h3>[page:BinaryTextureLoader]</h3>
-		<p>BinaryTextureLoader has been renamed to [page:DataTextureLoader].</p>
-
-
-
-
-
-
-
-
-
+		<p>BinaryTextureLoader 已被重命名为 [page:DataTextureLoader]。</p>
 
 
-		<h2>Buffers</h2>
+		
+		
+		
+		<h2>缓冲器(Buffers)</h2>
 
 		<h3>[page:BufferAttribute]</h3>
-		<p>BufferAttribute.length has been renamed to [page:BufferAttribute.count].</p>
-		<p>BufferAttribute.copyIndicesArray() has been removed.</p>
+		<p>BufferAttribute.length 已被重命名为 [page:BufferAttribute.count]。</p>
+		<p>BufferAttribute.copyIndicesArray() 已被删除。</p>
 
 
 		<h3>[page:DynamicBufferAttribute]</h3>
-		<p>DynamicBufferAttribute has been removed. Use [page:BufferAttribute.setDynamic]( true ) instead.</p>
+		<p>DynamicBufferAttribute 已被删除。 请使用[page:BufferAttribute.setDynamic]( true )。</p>
 
 		<h3>[page:Int8Attribute]</h3>
-		<p>Int8Attribute has been removed. Use [page:BufferAttributeTypes Int8BufferAttribute] instead.</p>
+		<p>Int8Attribute 已被删除。 请使用[page:BufferAttributeTypes Int8BufferAttribute]。</p>
 
 		<h3>[page:Uint8Attribute]</h3>
-		<p>Uint8Attribute has been removed. Use [page:BufferAttributeTypes Uint8BufferAttribute] instead.</p>
+		<p>Uint8Attribute 已被删除。 请使用[page:BufferAttributeTypes Uint8BufferAttribute]。</p>
 
 		<h3>[page:Uint8ClampedAttribute]</h3>
-		<p>Uint8ClampedAttribute has been removed. Use [page:BufferAttributeTypes Uint8ClampedBufferAttribute] instead.</p>
+		<p>Uint8ClampedAttribute 已被删除。 请使用[page:BufferAttributeTypes Uint8ClampedBufferAttribute]。</p>
 
 		<h3>[page:Int16Attribute]</h3>
-		<p>Int16Attribute has been removed. Use [page:BufferAttributeTypes Int16BufferAttribute] instead.</p>
+		<p>Int16Attribute 已被删除。 请使用[page:BufferAttributeTypes Int16BufferAttribute]。</p>
 
 		<h3>[page:Uint16Attribute]</h3>
-		<p>Uint16Attribute has been removed. Use [page:BufferAttributeTypes Uint16BufferAttribute] instead.</p>
+		<p>Uint16Attribute 已被删除。 请使用[page:BufferAttributeTypes Uint16BufferAttribute]。</p>
 
 		<h3>[page:Int32Attribute]</h3>
-		<p>Int32Attribute has been removed. Use [page:BufferAttributeTypes Int32BufferAttribute] instead.</p>
+		<p>Int32Attribute 已被删除。 请使用[page:BufferAttributeTypes Int32BufferAttribute]。</p>
 
 		<h3>[page:Uint32Attribute]</h3>
-		<p>Uint32Attribute has been removed. Use [page:BufferAttributeTypes Uint32BufferAttribute] instead.</p>
+		<p>Uint32Attribute 已被删除。 请使用[page:BufferAttributeTypes Uint32BufferAttribute]。</p>
 
 		<h3>[page:Float32Attribute]</h3>
-		<p>Float32Attribute has been removed. Use [page:BufferAttributeTypes Float32BufferAttribute] instead.</p>
+		<p>Float32Attribute 已被删除。 请使用[page:BufferAttributeTypes Float32BufferAttribute]。</p>
 
 		<h3>[page:Float64Attribute]</h3>
-		<p>Float64Attribute has been removed. Use [page:BufferAttributeTypes Float64BufferAttribute] instead.</p>
+		<p>Float64Attribute 已被删除。 请使用[page:BufferAttributeTypes Float64BufferAttribute]。</p>
 
 
 
@@ -90,12 +77,12 @@
 
 
 
-		<h2>Cameras</h2>
+		<h2>摄像机(Cameras</h2>
 
 		<h3>[page:PerspectiveCamera]</h3>
 		<p>
-		PerspectiveCamera.setLens() is deprecated. Use [page:PerspectiveCamera.setFocalLength]()
-		 and [page:PerspectiveCamera.filmGauge]() for a photographic setup.
+		PerspectiveCamera.setLens() 已被弃用。 请使用[page:PerspectiveCamera.setFocalLength]()
+		 和 [page:PerspectiveCamera.filmGauge]() 来对摄像机拍摄进行设置。
 		</p>
 
 
@@ -104,33 +91,33 @@
 
 
 
-		<h2>Constants</h2>
+		<h2>常量(Constants</h2>
 
 		<h3>[page:LineStrip]</h3>
 
 		<h3>[page:LinePieces]</h3>
 		<p>
-		LinePieces mode is no longer supported for [page:Line]s. Create a [page:LineSegments] instead.
+		LinePieces mode 已经不再对 [page:Line]s 进行支持。 请创建一个 [page:LineSegments] 。
 		</p>
 
 
 
 
 
-		<h2>Core</h2>
+		<h2>核心(Core</h2>
 
 		<h3>[page:EventDispatcher]</h3>
-		<p>EventDispatcher.apply has been removed. Inherit or Object.assign the prototype to mix-in instead.</p>
+		<p>EventDispatcher.apply 已被删除。 请继承或者Object.assign其原型来“混合”。Inherit or Object.assign the prototype to mix-in。</p>
 
 		<h3>[page:Raycaster]</h3>
-		<p>Raycaster.params.PointCloud has been renamed to [page:Raycaster.params.Points].</p>
+		<p>Raycaster.params.PointCloud 已被重命名为 [page:Raycaster.params.Points]。</p>
 
 
 		<h3>[page:Uniform]</h3>
 		<p>
-			Uniform.dynamic has been removed. Use object.onBeforeRender() instead.<br /><br />
+			Uniform.dynamic 已被删除。 请使用object.onBeforeRender()。<br /><br />
 
-			Uniform.onUpdate has been removed. Use object.onBeforeRender() instead.
+			Uniform.onUpdate 已被删除。 请使用object.onBeforeRender() 。
 		</p>
 
 
@@ -138,13 +125,13 @@
 
 
 
-		<h2>Extras</h2>
+		<h2>附件(Extras</h2>
 
 		<h3>[page:ClosedSplineCurve3]</h3>
-		<p>ClosedSplineCurve3 has been deprecated. Use [page:CatmullRomCurve3] instead.</p>
+		<p>ClosedSplineCurve3 已被弃用。 请使用[page:CatmullRomCurve3]。</p>
 
 		<h3>[page:SplineCurve3]</h3>
-		<p>SplineCurve3 has been deprecated. Use [page:CatmullRomCurve3] instead.</p>
+		<p>SplineCurve3 已被弃用。 请使用[page:CatmullRomCurve3]。</p>
 
 
 
@@ -152,48 +139,48 @@
 
 
 
-		<h2>Geometry</h2>
+		<h2>几何体(Geometry</h2>
 
 		<p>
-			Geometry.computeTangents() has been removed.<br /><br />
+			Geometry.computeTangents() 已被删除。<br /><br />
 
-			Geometry.computeLineDistances() has been removed. Use [page:Line.computeLineDistances] instead.<br /><br />
+			Geometry.computeLineDistances() 已被删除。 请使用[page:Line.computeLineDistances]。<br /><br />
 		</p>
 
 		<h3>[page:BufferGeometry]</h3>
 		<p>
-			BufferGeometry.addIndex has been renamed to [page:BufferGeometry.setIndex].<br /><br />
+			BufferGeometry.addIndex 已被重命名为 [page:BufferGeometry.setIndex]。<br /><br />
 
-			BufferGeometry.addDrawCall is now [page:BufferGeometry.addGroup].<br /><br />
+			BufferGeometry.addDrawCall 现在是 [page:BufferGeometry.addGroup]。<br /><br />
 
-			BufferGeometry.clearDrawCalls is now [page:BufferGeometry.clearGroups].<br /><br />
+			BufferGeometry.clearDrawCalls 现在是 [page:BufferGeometry.clearGroups]。<br /><br />
 
-			BufferGeometry.computeTangents has been removed.<br /><br />
+			BufferGeometry.computeTangents 已被删除。<br /><br />
 
-			BufferGeometry.computeOffsets has been removed.<br /><br />
+			BufferGeometry.computeOffsets 已被删除。<br /><br />
 
-			BufferGeometry.drawcalls has been renamed to [page:BufferGeometry.groups].<br /><br />
+			BufferGeometry.drawcalls 已被重命名为 [page:BufferGeometry.groups]。<br /><br />
 
-			BufferGeometry.offsets has been renamed to [page:BufferGeometry.groups].<br /><br />
+			BufferGeometry.offsets 已被重命名为 [page:BufferGeometry.groups]。<br /><br />
 
 		</p>
 
 		<h3>[page:CubeGeometry]</h3>
-		<p>CubeGeometry has been renamed to [page:BoxGeometry].</p>
+		<p>CubeGeometry 已被重命名为 [page:BoxGeometry]。</p>
 
 		<h3>[page:Geometry]</h3>
-		<p>Geometry.computeTangents() has been removed.</p>
+		<p>Geometry.computeTangents() 已被删除。</p>
 
 		<h3>[page:GeometryUtils]</h3>
 		<p>
-			GeometryUtils.merge has been moved to [page:Geometry]. Use [page:Geometry.merge]( geometry2, matrix, materialIndexOffset ) instead.<br /><br />
+			GeometryUtils.merge 已被移动到了 [page:Geometry],请使用[page:Geometry.merge]( geometry2, matrix, materialIndexOffset )。<br /><br />
 
-			GeometryUtils.center has been moved to [page:Geometry]. Use [page:Geometry.center]( ) instead.
+			GeometryUtils.center 已被移动到了 [page:Geometry],请使用[page:Geometry.center]( ) 。
 		</p>
 
 		<h3>[page:Plane]</h3>
 		<p>
-			Plane.isIntersectionLine() has been renamed to	[page:Plane.intersectsLine]().
+			Plane.isIntersectionLine() 已被重命名为	[page:Plane.intersectsLine]()。
 		</p>
 
 
@@ -203,46 +190,46 @@
 
 
 
-		<h2>Helpers</h2>
+		<h2>辅助工具(Helpers</h2>
 
 		<h3>[page:BoundingBoxHelper]</h3>
-		<p>BoundingBoxHelper has been deprecated. Use [page:BoxHelper] instead.</p>
+		<p>BoundingBoxHelper 已被弃用。 请使用[page:BoxHelper]。</p>
 
 		<h3>[page:EdgesHelper]</h3>
-		<p>EdgesHelper has been removed. Use [page:EdgesGeometry] instead.</p>
+		<p>EdgesHelper 已被删除。 请使用[page:EdgesGeometry]。</p>
 
 		<h3>[page:GridHelper]</h3>
-		<p>GridHelper.setColors() has been deprecated, pass them in the constructor instead.</p>
+		<p>GridHelper.setColors() 已被弃用,请在构造器中传递它们。</p>
 
 		<h3>[page:WireframeHelper WireframeHelper]</h3>
-		<p>WireframeHelper has been removed. Use [page:WireframeGeometry] instead.</p>
+		<p>WireframeHelper 已被删除。 请使用[page:WireframeGeometry]。</p>
 
 
 
 
-		<h2>Lights</h2>
+		<h2>灯光(Lights</h2>
 
 		<h3>[page:Light]</h3>
 		<p>
-			Light.onlyShadow has been removed.<br /><br />
+			Light.onlyShadow 已被删除。<br /><br />
 
-			Light.shadowCameraLeft is now [page:Light.shadow.camera.left].<br /><br />
+			Light.shadowCameraLeft 现在是 [page:Light.shadow.camera.left]。<br /><br />
 
-			Light.shadowCameraRight is now [page:Light.shadow.camera.right].<br /><br />
+			Light.shadowCameraRight 现在是 [page:Light.shadow.camera.right]。<br /><br />
 
-			Light.shadowCameraTop is now [page:Light.shadow.camera.top].<br /><br />
+			Light.shadowCameraTop 现在是 [page:Light.shadow.camera.top]。<br /><br />
 
-			Light.shadowCameraBottom is now [page:Light.shadow.camera.bottom].<br /><br />
+			Light.shadowCameraBottom 现在是 [page:Light.shadow.camera.bottom]。<br /><br />
 
-			Light.shadowCameraNear is now [page:Light.shadow.camera.near].<br /><br />
+			Light.shadowCameraNear 现在是 [page:Light.shadow.camera.near]。<br /><br />
 
-			Light.shadowCameraFar is now [page:Light.shadow.camera.far].<br /><br />
+			Light.shadowCameraFar 现在是 [page:Light.shadow.camera.far]。<br /><br />
 
-			Light.shadowCameraVisible has been removed. Use [page:CameraHelper] ( light.shadow.camera ) instead.<br /><br />
+			Light.shadowCameraVisible 已被删除。 请使用[page:CameraHelper] ( light.shadow.camera )。<br /><br />
 
-			Light.shadowMapWidth is now [page:Light.shadow.mapSize.width].<br /><br />
+			Light.shadowMapWidth 现在是 [page:Light.shadow.mapSize.width]。<br /><br />
 
-			Light.shadowMapHeight is now [page:Light.shadow.mapSize.height].
+			Light.shadowMapHeight 现在是 [page:Light.shadow.mapSize.height]。
 		</p>
 
 
@@ -252,10 +239,10 @@
 
 
 
-		<h2>Loaders</h2>
+		<h2>加载器(Loaders</h2>
 
 		<h3>[page:XHRLoader]</h3>
-		<p>XHRLoader has been renamed to [page:FileLoader].</p>
+		<p>XHRLoader 已被重命名为 [page:FileLoader]。</p>
 
 
 
@@ -264,146 +251,146 @@
 
 
 
-		<h2>Maths</h2>
+		<h2>数学(Maths</h2>
 
 		<h3>[page:Box2]</h3>
 		<p>
-			Box2.center has been renamed to [page:Box2.getCenter]().<br /><br />
+			Box2.center 已被重命名为 [page:Box2.getCenter]()。<br /><br />
 
-			Box2.empty has been renamed to [page:Box2.isEmpty]().<br /><br />
+			Box2.empty 已被重命名为 [page:Box2.isEmpty]()。<br /><br />
 
-			Box2.isIntersectionBox has been renamed to [page:Box2.intersectsBox]().<br /><br />
+			Box2.isIntersectionBox 已被重命名为 [page:Box2.intersectsBox]()。<br /><br />
 
-			Box2.size has been renamed to [page:Box2.getSize]().
+			Box2.size 已被重命名为 [page:Box2.getSize]()。
 
 		</p>
 
 		<h3>[page:Box3]</h3>
 		<p>
-			Box3.center has been renamed to [page:Box3.getCenter]().<br /><br />
+			Box3.center 已被重命名为 [page:Box3.getCenter]()。<br /><br />
 
-			Box3.empty has been renamed to [page:Box3.isEmpty]().<br /><br />
+			Box3.empty 已被重命名为 [page:Box3.isEmpty]()。<br /><br />
 
-			Box3.isIntersectionBox has been renamed to [page:Box3.intersectsBox]().<br /><br />
+			Box3.isIntersectionBox 已被重命名为 [page:Box3.intersectsBox]()。<br /><br />
 
-			Box3.isIntersectionSphere has been renamed to [page:Box3.intersectsSphere]().<br /><br />
+			Box3.isIntersectionSphere 已被重命名为 [page:Box3.intersectsSphere]()。<br /><br />
 
-			Box3.size has been renamed to [page:Box3.getSize]().
+			Box3.size 已被重命名为 [page:Box3.getSize]()。
 		</p>
 
 		<h3>[page:Face4]</h3>
-		<p>Face4 has been removed. Use [page:Face3] instead.</p>
+		<p>Face4 已被删除。 请使用[page:Face3]。</p>
 
 		<h3>[page:Line3]</h3>
-		<p>Line3.center has been renamed to [page:Line3.getCenter]().</p>
+		<p>Line3.center 已被重命名为 [page:Line3.getCenter]()。</p>
 
 		<h3>[page:Math]</h3>
 		<p>
-			Math.random16() has been deprecated. Use Math.random() instead.
+			Math.random16() 已被弃用。 请使用Math.random() 。
 		</p>
 
 		<h3>[page:Matrix3]</h3>
 		<p>
-			Matrix3.flattenToArrayOffset is deprecated. Use [page:Matrix3.toArray]() instead.<br /><br />
+			Matrix3.flattenToArrayOffset 已被弃用。请使用[page:Matrix3.toArray]()。<br /><br />
 
-			Matrix3.multiplyVector3 has been removed. Use vector.applyMatrix3( matrix ) instead.<br /><br />
+			Matrix3.multiplyVector3 已被删除。 请使用vector.applyMatrix3( matrix )。<br /><br />
 
-			Matrix3.multiplyVector3Array has been renamed to [page:Matrix3.applyToVector3Array]( array ).<br /><br />
+			Matrix3.multiplyVector3Array 已被重命名为 [page:Matrix3.applyToVector3Array]( array )。<br /><br />
 
-			Matrix3.applyToBuffer has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.<br /><br />
+			Matrix3.applyToBuffer 已被删除。 请使用matrix.applyToBufferAttribute( attribute )。<br /><br />
 
-			Matrix3.applyToVector3Array has been removed.
+			Matrix3.applyToVector3Array 已被删除。
 		<p>
 
 		<h3>[page:Matrix4]</h3>
 		<p>
-			Matrix4.flattenToArrayOffset() is deprecated. Use [page:Matrix4.toArray]() instead.<br /><br />
+			Matrix4.flattenToArrayOffset() 已被弃用。请使用[page:Matrix4.toArray]()。<br /><br />
 
-			Matrix4.extractPosition() has been renamed to [page:Matrix4.copyPosition]( matrix ).<br /><br />
+			Matrix4.extractPosition() 已被重命名为 [page:Matrix4.copyPosition]( matrix )。<br /><br />
 
-			Matrix4.getPosition() has been removed. Use [page:Vector3.setFromMatrixPosition]( matrix ) instead.<br /><br />
+			Matrix4.getPosition() 已被删除。 请使用[page:Vector3.setFromMatrixPosition]( matrix )。<br /><br />
 
-			Matrix4.setRotationFromQuaternion() has been renamed to [page:Matrix4.makeRotationFromQuaternion]( quaternion ).<br /><br />
+			Matrix4.setRotationFromQuaternion() 已被重命名为 [page:Matrix4.makeRotationFromQuaternion]( quaternion )。<br /><br />
 
-			Matrix4.multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.<br /><br />
+			Matrix4.multiplyVector3() 已被删除。 请使用vector.applyMatrix4( matrix )。<br /><br />
 
-			Matrix4.multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.<br /><br />
+			Matrix4.multiplyVector4() 已被删除。 请使用vector.applyMatrix4( matrix )。<br /><br />
 
-			Matrix4.multiplyVector3Array() has been renamed to [page:Matrix4.applyToVector3Array] ( array ).<br /><br />
+			Matrix4.multiplyVector3Array() 已被重命名为 [page:Matrix4.applyToVector3Array] ( array )。<br /><br />
 
-			Matrix4.rotateAxis() has been removed. Use [page:Matrix4.transformDirection]( matrix ) instead.<br /><br />
+			Matrix4.rotateAxis() 已被删除。 请使用[page:Matrix4.transformDirection]( matrix )。<br /><br />
 
-			Matrix4.crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.<br /><br />
+			Matrix4.crossVector() 已被删除。 请使用vector.applyMatrix4( matrix )。<br /><br />
 
-			Matrix4.rotateX() has been removed.<br /><br />
+			Matrix4.rotateX() 已被删除。<br /><br />
 
-			Matrix4.rotateY() has been removed.<br /><br />
+			Matrix4.rotateY() 已被删除。<br /><br />
 
-			Matrix4.rotateZ() has been removed.<br /><br />
+			Matrix4.rotateZ() 已被删除。<br /><br />
 
-			Matrix4.rotateByAxis() has been removed.<br /><br />
+			Matrix4.rotateByAxis() 已被删除。<br /><br />
 
-			Matrix4.applyToBuffer() has been removed. Use matrix.applyToBufferAttribute() instead.<br /><br />
+			Matrix4.applyToBuffer() 已被删除。 请使用matrix.applyToBufferAttribute()。<br /><br />
 
-			Matrix4.applyToVector3Array() has been removed.<br /><br />
+			Matrix4.applyToVector3Array() 已被删除。<br /><br />
 
-			Matrix4.makeFrustum() has been removed. Use [page:Matrix4.makePerspective]( left, right, top, bottom, near, far ) instead.
+			Matrix4.makeFrustum() 已被删除。 请使用[page:Matrix4.makePerspective]( left, right, top, bottom, near, far ) 。
 		</p>
 
 
 		<h3>[page:Quaternion.multiplyVector3]</h3>
-		<p>Quaternion.multiplyVector3() has been removed. Use vector.applyQuaternion( quaternion ) instead.</p>
+		<p>Quaternion.multiplyVector3() 已被删除。 请使用vector.applyQuaternion( quaternion )。</p>
 
 		<h3>[page:Ray]</h3>
 		<p>
-			Ray.isIntersectionBox() has been renamed to [page:Ray.intersectsBox]().<br /><br />
+			Ray.isIntersectionBox() 已被重命名为 [page:Ray.intersectsBox]()。<br /><br />
 
-			Ray.isIntersectionPlane has been renamed to [page:Ray.intersectsPlane].<br /><br />
+			Ray.isIntersectionPlane 已被重命名为 [page:Ray.intersectsPlane]。<br /><br />
 
-			Ray.isIntersectionSphere has been renamed to [page:Ray.intersectsSphere].
+			Ray.isIntersectionSphere 已被重命名为 [page:Ray.intersectsSphere]。
 		</p>
 
 		<h3>[page:Triangle]</h3>
 		<p>
-			Triangle.area() has been renamed to [page:Triangle.getArea]().<br /><br />
-			Triangle.barycoordFromPoint() has been renamed to [page:Triangle.getBarycoord]().<br /><br />
-			Triangle.midpoint() has been renamed to [page:Triangle.getMidpoint]().<br /><br />
-			Triangle.normal() has been renamed to [page:Triangle.getNormal]().<br /><br />
-			Triangle.plane() has been renamed to [page:Triangle.getPlane]().
+			Triangle.area() 已被重命名为 [page:Triangle.getArea]()。<br /><br />
+			Triangle.barycoordFromPoint() 已被重命名为 [page:Triangle.getBarycoord]()。<br /><br />
+			Triangle.midpoint() 已被重命名为 [page:Triangle.getMidpoint]()。<br /><br />
+			Triangle.normal() 已被重命名为 [page:Triangle.getNormal]()。<br /><br />
+			Triangle.plane() 已被重命名为 [page:Triangle.getPlane]()。
 		</p>
 
 		<h3>[page:Vector2]</h3>
 		<p>
-			Vector2.fromAttribute() has been renamed to [page:Vector2.fromBufferAttribute]().
+			Vector2.fromAttribute() 已被重命名为 [page:Vector2.fromBufferAttribute]()。
 		</p>
 
 		<h3>[page:Vector3]</h3>
 		<p>
-			Vector3.setEulerFromRotationMatrix() has been removed. Use [page:Euler.setFromRotationMatrix]() instead.<br /><br />
+			Vector3.setEulerFromRotationMatrix() 已被删除。 请使用[page:Euler.setFromRotationMatrix]()。<br /><br />
 
-			Vector3.setEulerFromQuaternion() has been removed. Use [page:Euler.setFromQuaternion]() instead.<br /><br />
+			Vector3.setEulerFromQuaternion() 已被删除。 请使用[page:Euler.setFromQuaternion]()。<br /><br />
 
-			Vector3.getPositionFromMatrix() has been renamed to [page:Vector3.setFromMatrixPosition]().<br /><br />
+			Vector3.getPositionFromMatrix() 已被重命名为 [page:Vector3.setFromMatrixPosition]()。<br /><br />
 
-			Vector3.getScaleFromMatrix() has been renamed to [page:Vector3.setFromMatrixScale]().<br /><br />
+			Vector3.getScaleFromMatrix() 已被重命名为 [page:Vector3.setFromMatrixScale]()。<br /><br />
 
-			Vector3.getColumnFromMatrix() has been renamed to [page:Vector3.setFromMatrixColumn]().<br /><br />
+			Vector3.getColumnFromMatrix() 已被重命名为 [page:Vector3.setFromMatrixColumn]()。<br /><br />
 
-			Vector3.applyProjection() has been removed. Use [page:Vector3.applyMatrix4]() instead.<br /><br />
+			Vector3.applyProjection() 已被删除。 请使用[page:Vector3.applyMatrix4]()。<br /><br />
 
-			Vector3.fromAttribute() has been renamed to [page:Vector3.fromBufferAttribute]().
+			Vector3.fromAttribute() 已被重命名为 [page:Vector3.fromBufferAttribute]()。
 		</p>
 
 		<h3>[page:Vector4]</h3>
 		<p>
-			Vector4.fromAttribute() has been renamed to [page:Vector4.fromBufferAttribute]().
+			Vector4.fromAttribute() 已被重命名为 [page:Vector4.fromBufferAttribute]().
 		</p>
 
 		<h3>[page:Vertex]</h3>
-		<p>Vertex has been removed. Use [page:Vector3] instead.</p>
+		<p>Vertex 已被删除。 请使用[page:Vector3]。</p>
 
 		<h3>[page:Spline]</h3>
-		<p>Spline has been removed. Use [page:CatmullRomCurve3] instead.</p>
+		<p>Spline 已被删除。 请使用[page:CatmullRomCurve3]。</p>
 
 
 
@@ -416,36 +403,36 @@
 
 
 
-		<h2>Materials</h2>
+		<h2>材质(Materials</h2>
 
 		<h3>[page:Material]</h3>
 		<p>
-			Material.wrapAround has been removed.<br /><br />
+			Material.wrapAround 已被删除。<br /><br />
 
-			Material.wrapRGB has been removed.
+			Material.wrapRGB 已被删除。
 
 		</p>
 
 		<h3>[page:MeshFaceMaterial]</h3>
-		<p>MeshFaceMaterial has been removed. Use an array of materials instead.</p>
+		<p>MeshFaceMaterial 已被删除。 请使用一个材质数组。</p>
 
 		<h3>[page:MultiMaterial]</h3>
-		<p>MultiMaterial has been removed. Use an array of materials instead.</p>
+		<p>MultiMaterial 已被删除。 请使用一个材质数组。</p>
 
 		<h3>[page:MeshPhongMaterial]</h3>
-		<p>MeshPhongMaterial.metal has been removed. Use [page:MeshStandardMaterial] instead.</p>
+		<p>MeshPhongMaterial.metal 已被删除。 请使用[page:MeshStandardMaterial]。</p>
 
 		<h3>[page:ParticleBasicMaterial]</h3>
-		<p>ParticleBasicMaterial has been renamed to [page:PointsMaterial].</p>
+		<p>ParticleBasicMaterial 已被重命名为 [page:PointsMaterial]。</p>
 
 		<h3>[page:ParticleSystemMaterial]</h3>
-		<p>ParticleBasicMaterial has been renamed to [page:PointsMaterial].</p>
+		<p>ParticleBasicMaterial 已被重命名为 [page:PointsMaterial]。</p>
 
 		<h3>[page:PointCloudMaterial]</h3>
-		<p>PointCloudMaterial has been renamed to [page:PointsMaterial].</p>
+		<p>PointCloudMaterial 已被重命名为 [page:PointsMaterial]。</p>
 
 		<h3>[page:ShaderMaterial.derivatives]</h3>
-		<p>ShaderMaterial.derivatives has been moved to [page:ShaderMaterial.extensions.derivatives].</p>
+		<p>ShaderMaterial.derivatives 已被移动到了 [page:ShaderMaterial.extensions.derivatives]。</p>
 
 
 
@@ -454,44 +441,44 @@
 
 
 
-		<h2>Objects</h2>
+		<h2>物体(Objects</h2>
 
 		<h3>[page:LOD.objects]</h3>
-		<p>LOD.objects has been renamed to [page:LOD.levels].</p>
+		<p>LOD.objects 已被重命名为 [page:LOD.levels]。</p>
 
 		<h3>[page:Object3D]</h3>
 		<p>
-			Object3D.eulerOrder is now [page:Object3D.rotation.order].<br /><br />
+			Object3D.eulerOrder 现在是 [page:Object3D.rotation.order]。<br /><br />
 
-			Object3D.getChildByName() has been renamed to [page:Object3D.getObjectByName]().<br /><br />
+			Object3D.getChildByName() 已被重命名为 [page:Object3D.getObjectByName]()。<br /><br />
 
-			Object3D.renderDepth has been removed. Use [page:Object3D.renderOrder] instead.<br /><br />
+			Object3D.renderDepth 已被删除。 请使用[page:Object3D.renderOrder]。<br /><br />
 
-			Object3D.translate() has been removed. Use [page:Object3D.translateOnAxis]( axis, distance ) instead.<br /><br />
+			Object3D.translate() 已被删除。 请使用[page:Object3D.translateOnAxis]( axis, distance )。<br /><br />
 
-			Object3D.useQuaternion has been removed. The library now uses quaternions by default.
+			Object3D.useQuaternion 已被删除。 默认情况下,Three.js库是使用quaternions(四元数)的。
 		</p>
 
 		<h3>[page:LensFlare]</h3>
 		<p>
-			LensFlare has been moved to [link:https://github.com/mrdoob/three.js/blob/master/examples/js/objects/Lensflare.js /examples/js/objects/Lensflare.js].
+			LensFlare 已被移动到了 [link:https://github.com/mrdoob/three.js/blob/master/examples/js/objects/Lensflare.js /examples/js/objects/Lensflare.js].
 		</p>
 
 
 		<h3>[page:Particle]</h3>
-		<p>Particle has been renamed to [page:Sprite].</p>
+		<p>Particle 已被重命名为 [page:Sprite]。</p>
 
 		<h3>[page:ParticleSystem]</h3>
-		<p>ParticleSystem has been renamed to [page:Points].</p>
+		<p>ParticleSystem 已被重命名为 [page:Points]。</p>
 
 		<h3>[page:PointCloud]</h3>
-		<p>PointCloud has been renamed to [page:Points].</p>
+		<p>PointCloud 已被重命名为 [page:Points]。</p>
 
 		<h3>[page:Shape]</h3>
 		<p>
-			Shape.extrude has been removed. Use [page:ExtrudeGeometry] instead.<br /><br />
+			Shape.extrude 已被删除。 请使用[page:ExtrudeGeometry]。<br /><br />
 
-			Shape.makeGeometry has been removed. Use [page:ShapeGeometry] instead.
+			Shape.makeGeometry 已被删除。 请使用[page:ShapeGeometry] 。
 		</p>
 
 
@@ -501,117 +488,117 @@
 
 
 
-		<h2>Renderer</h2>
+		<h2>渲染器(Renderer</h2>
 
 		<h3>[page:Projector]</h3>
 		<p>
-			CanvasRenderer has been moved to [link:https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/CanvasRenderer.js /examples/js/renderers/CanvasRenderer.js].
+			CanvasRenderer 已被移动到了 [link:https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/CanvasRenderer.js /examples/js/renderers/CanvasRenderer.js].
 		</p>
 
 		<h3>[page:Projector]</h3>
 		<p>
-			Projector has been moved to
-			[link:https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/Projector.js 	/examples/js/renderers/Projector.js].<br /><br />
+			Projector 已被移动到了
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/Projector.js 	/examples/js/renderers/Projector.js]<br /><br />
 
-			Projector.projectVector() is now [page:Vector.project]().<br /><br />
+			Projector.projectVector() 现在是 [page:Vector.project]()。<br /><br />
 
-			Projector.unprojectVector() is now [page:Vector.unproject]().<br /><br />
+			Projector.unprojectVector() 现在是 [page:Vector.unproject]()。<br /><br />
 
-			Projector:.pickingRay() is now [page:Raycaster.setFromCamera]().
+			Projector:.pickingRay() 现在是 [page:Raycaster.setFromCamera]()。
 		</p>
 
 		<h3>[page:WebGLProgram]</h3>
 		<p>
-			WebGLProgram.uniforms is now [page:WebGLProgram.getUniforms]().<br /><br />
+			WebGLProgram.uniforms 现在是 [page:WebGLProgram.getUniforms]()。<br /><br />
 
-			WebGLProgram.attributes is now [page:WebGLProgram.getAttributes]().
+			WebGLProgram.attributes 现在是 [page:WebGLProgram.getAttributes]()。
 		</p>
 
 		<h3>[page:WebGLRenderer]</h3>
 		<p>
-			WebGLRenderer.supportsFloatTextures() is now [page:WebGLRenderer.extensions.get]( 'OES_texture_float' ).<br /><br />
+			WebGLRenderer.supportsFloatTextures() 现在是 [page:WebGLRenderer.extensions.get]( 'OES_texture_float' )。<br /><br />
 
-			WebGLRenderer.supportsHalfFloatTextures() is now [page:WebGLRenderer.extensions.get]( 'OES_texture_half_float' ).<br /><br />
+			WebGLRenderer.supportsHalfFloatTextures() 现在是 [page:WebGLRenderer.extensions.get]( 'OES_texture_half_float' )。<br /><br />
 
-			WebGLRenderer.supportsStandardDerivatives() is now [page:WebGLRenderer.extensions.get]( 'OES_standard_derivatives' ).<br /><br />
+			WebGLRenderer.supportsStandardDerivatives() 现在是 [page:WebGLRenderer.extensions.get]( 'OES_standard_derivatives' )。<br /><br />
 
-			WebGLRenderer.supportsCompressedTextureS3TC() is now [page:WebGLRenderer.extensions.get]( 'WEBGL_compressed_texture_s3tc' ).<br /><br />
+			WebGLRenderer.supportsCompressedTextureS3TC() 现在是 [page:WebGLRenderer.extensions.get]( 'WEBGL_compressed_texture_s3tc' )。<br /><br />
 
-			WebGLRenderer.supportsCompressedTexturePVRTC() is now [page:WebGLRenderer.extensions.get]( 'WEBGL_compressed_texture_pvrtc' ).<br /><br />
+			WebGLRenderer.supportsCompressedTexturePVRTC() 现在是 [page:WebGLRenderer.extensions.get]( 'WEBGL_compressed_texture_pvrtc' )。<br /><br />
 
-			WebGLRenderer.supportsBlendMinMax() is now [page:WebGLRenderer.extensions.get]( 'EXT_blend_minmax' ).<br /><br />
+			WebGLRenderer.supportsBlendMinMax() 现在是 [page:WebGLRenderer.extensions.get]( 'EXT_blend_minmax' )。<br /><br />
 
-			WebGLRenderer.supportsVertexTextures() is now [page:WebGLRenderer.capabilities.vertexTextures].<br /><br />
+			WebGLRenderer.supportsVertexTextures() 现在是 [page:WebGLRenderer.capabilities.vertexTextures]。<br /><br />
 
-			WebGLRenderer.supportsInstancedArrays() is now [page:WebGLRenderer.extensions.get]( 'ANGLE_instanced_arrays' ).<br /><br />
+			WebGLRenderer.supportsInstancedArrays() 现在是 [page:WebGLRenderer.extensions.get]( 'ANGLE_instanced_arrays' )。<br /><br />
 
-			WebGLRenderer.enableScissorTest() is now [page:WebGLRenderer.setScissorTest]().<br /><br />
+			WebGLRenderer.enableScissorTest() 现在是 [page:WebGLRenderer.setScissorTest]()。<br /><br />
 
-			WebGLRenderer.initMaterial() has been removed.<br /><br />
+			WebGLRenderer.initMaterial() 已被删除。<br /><br />
 
-			WebGLRenderer.addPrePlugin() has been removed.<br /><br />
+			WebGLRenderer.addPrePlugin() 已被删除。<br /><br />
 
-			WebGLRenderer.addPostPlugin() has been removed.<br /><br />
+			WebGLRenderer.addPostPlugin() 已被删除。<br /><br />
 
-			WebGLRenderer.updateShadowMap() has been removed.<br /><br />
+			WebGLRenderer.updateShadowMap() 已被删除。<br /><br />
 
-			WebGLRenderer.setFaceCulling() has been removed.<br /><br />
+			WebGLRenderer.setFaceCulling() 已被删除。<br /><br />
 
-			WebGLRenderer.setTexture is deprecated, use [page:WebGLRenderer.setTexture2D]() instead.<br /><br />
+			WebGLRenderer.setTexture is deprecated, 请使用[page:WebGLRenderer.setTexture2D]()。<br /><br />
 
-			WebGLRenderer.shadowMapEnabled is now [page:WebGLRenderer.shadowMap.enabled].<br /><br />
+			WebGLRenderer.shadowMapEnabled 现在是 [page:WebGLRenderer.shadowMap.enabled]。<br /><br />
 
-			WebGLRenderer.shadowMapType is now [page:WebGLRenderer.shadowMap.type].<br /><br />
+			WebGLRenderer.shadowMapType 现在是 [page:WebGLRenderer.shadowMap.type]。<br /><br />
 
-			WebGLRenderer.shadowMapCullFace has been removed. Set [page:Material.shadowSide] instead.<br /><br />
+			WebGLRenderer.shadowMapCullFace 已被删除。请设置[page:Material.shadowSide]。<br /><br />
 
-			WebGLRenderer.shadowMap.cullFace has been removed. Set [page:Material.shadowSide] instead.<br /><br />
+			WebGLRenderer.shadowMap.cullFace 已被删除。请设置[page:Material.shadowSide]。<br /><br />
 
-			WebGLRenderer.shadowMap.renderReverseSided has been removed. Set [page:Material.shadowSide] instead.<br /><br />
+			WebGLRenderer.shadowMap.renderReverseSided 已被删除。请设置[page:Material.shadowSide]。<br /><br />
 
-			WebGLRenderer.shadowMap.renderSingleSided has been removed. Set [page:Material.shadowSide] instead.
+			WebGLRenderer.shadowMap.renderSingleSided 已被删除。请设置[page:Material.shadowSide]。
 
 		</p>
 
 		<h3>[page:WebGLRenderTarget]</h3>
 		<p>
-			WebGLRenderTarget.wrapS is now [page:WebGLRenderTarget.texture.wrapS].<br /><br />
+			WebGLRenderTarget.wrapS 现在是 [page:WebGLRenderTarget.texture.wrapS]。<br /><br />
 
-			WebGLRenderTarget.wrapT is now [page:WebGLRenderTarget.texture.wrapT].<br /><br />
+			WebGLRenderTarget.wrapT 现在是 [page:WebGLRenderTarget.texture.wrapT]。<br /><br />
 
-			WebGLRenderTarget.magFilter is now [page:WebGLRenderTarget.texture.magFilter].<br /><br />
+			WebGLRenderTarget.magFilter 现在是 [page:WebGLRenderTarget.texture.magFilter]。<br /><br />
 
-			WebGLRenderTarget.minFilter is now [page:WebGLRenderTarget.texture.minFilter].<br /><br />
+			WebGLRenderTarget.minFilter 现在是 [page:WebGLRenderTarget.texture.minFilter]。<br /><br />
 
-			WebGLRenderTarget.anisotropy is now [page:WebGLRenderTarget.texture.anisotropy].<br /><br />
+			WebGLRenderTarget.anisotropy 现在是 [page:WebGLRenderTarget.texture.anisotropy]。<br /><br />
 
-			WebGLRenderTarget.offset is now [page:WebGLRenderTarget.texture.offset].<br /><br />
+			WebGLRenderTarget.offset 现在是 [page:WebGLRenderTarget.texture.offset]。<br /><br />
 
-			WebGLRenderTarget.repeat is now [page:WebGLRenderTarget.texture.repeat].<br /><br />
+			WebGLRenderTarget.repeat 现在是 [page:WebGLRenderTarget.texture.repeat]。<br /><br />
 
-			WebGLRenderTarget.format is now [page:WebGLRenderTarget.texture.format].<br /><br />
+			WebGLRenderTarget.format 现在是 [page:WebGLRenderTarget.texture.format]。<br /><br />
 
-			WebGLRenderTarget.type is now [page:WebGLRenderTarget.texture.type].<br /><br />
+			WebGLRenderTarget.type 现在是 [page:WebGLRenderTarget.texture.type]。<br /><br />
 
-			WebGLRenderTarget.generateMipmaps is now [page:WebGLRenderTarget.texture.generateMipmaps].
+			WebGLRenderTarget.generateMipmaps 现在是 [page:WebGLRenderTarget.texture.generateMipmaps].
 		</p>
 
 
-		<h2>Textures</h2>
+		<h2>纹理(Textures</h2>
 
 		<h3>[page:ImageUtils]</h3>
 		<p>
-			ImageUtils.loadTexture has been deprecated. Use [page:TextureLoader] instead.<br /><br />
+			ImageUtils.loadTexture 已被弃用。 请使用[page:TextureLoader]。<br /><br />
 
-			ImageUtils.loadTextureCube has been deprecated. Use [page:CubeTextureLoader] instead.<br /><br />
+			ImageUtils.loadTextureCube 已被弃用。 请使用[page:CubeTextureLoader]。<br /><br />
 
-			ImageUtils.loadCompressedTexture has been removed. Use [page:DDSLoader] instead.<br /><br />
+			ImageUtils.loadCompressedTexture 已被删除。 请使用[page:DDSLoader]。<br /><br />
 
-			ImageUtils.loadCompressedTextureCube has been removed. Use [page:DDSLoader] instead.
+			ImageUtils.loadCompressedTextureCube 已被删除。 请使用[page:DDSLoader] 。
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/Three.Legacy.js src/Three.Legacy.js]
 

+ 8 - 8
docs/api/zh/extras/objects/ImmediateRenderObject.html

@@ -10,32 +10,32 @@
 	<body>
 		[page:Object3D] &rarr;
 
-		<h1>[name]</h1>
+		<h1>及时渲染对象([name])</h1>
 
-		<p class="desc">base class for immediate rendering objects.</p>
+		<p class="desc">及时渲染对象的基类。</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 
 		<h3>[name]()</h3>
 		<p>
-		This creates a new [name].
+			这会创建一个新的 [name]。
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法(Methods)</h2>
 
 
 		<h3>[method:null render]([param:Function renderCallback])</h3>
 		<p>
-		renderCallback -- A function to render the generated object.
+		renderCallback -- 生成对象的渲染函数。
 		</p>
 		<p>
-		This function needs to be overridden to start the creation of the object and should call renderCallback when finished.
+		需要重写此函数以开始创建对象,并在完成时调用renderCallback。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 12 - 20
docs/api/zh/lights/shadows/DirectionalLightShadow.html

@@ -13,14 +13,12 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			This is used internally by [page:DirectionalLight DirectionalLights] for calculating shadows.<br /><br />
+			这是用于在[page:DirectionalLight DirectionalLights]内部计算阴影<br /><br />
 
-			Unlike the other shadow classes, this uses an [page:OrthographicCamera] to calculate the shadows,
-			rather than a [page:PerspectiveCamera]. This is because light rays from a [page:DirectionalLight]
-			are parallel.
+			与其他阴影类不同,它是使用OrthographicCamera来计算阴影,而不是PerspectiveCamera。这是因为来自DirectionalLight的光线是平行的。
 		</p>
 
-		<h2>Example</h2>
+		<h2>例子</h2>
 		<p>
 			<code>
 //Create a WebGLRenderer and turn on shadows in the renderer
@@ -61,36 +59,30 @@ scene.add( helper );
 			</code>
 		</p>
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 		<h3>[name]( )</h3>
 		<p>
-			Creates a new [name]. This is not intended to be called directly - it is called
-			internally by [page:DirectionalLight].
+			创建一个新的[name],不能直接调用-它是在[page:DirectionalLight DirectionalLights]内部调用使用
+
 		</p>
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 		<p>
-			See the base [page:LightShadow LightShadow] class for common properties.
+			参阅[page:LightShadow LightShadow]类来了解常用的基本属性
 		</p>
 
 		<h3>[property:Camera camera]</h3>
 		<p>
-			The light's view of the world. This is used to generate a depth map of the scene; objects behind
-			other objects from the light's perspective will be in shadow.<br /><br />
-
-			The default is an [page:OrthographicCamera] with [page:OrthographicCamera.left left] and
-			[page:OrthographicCamera.bottom bottom] set to -5,  [page:OrthographicCamera.right right]
-			and  [page:OrthographicCamera.top top] set to 5, the [page:OrthographicCamera.near near]
-			clipping plane at 0.5 and the [page:OrthographicCamera.far far] clipping plane at 500.
+			在光的世界里。这用于生成场景的深度图;从光的角度来看,其他物体背后的物体将处于阴影中。<br /><br />
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 		<p>
-			See the base [page:LightShadow LightShadow] class for common methods.
+			有关常用方法,请参阅基础[page:LightShadow LightShadow]类。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/lights/[name].js src/lights/[name].js]
 	</body>

+ 25 - 31
docs/api/zh/lights/shadows/LightShadow.html

@@ -12,12 +12,11 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			This is used internally by [page:PointLight PointLights] for calculating shadows, and also serves as
-			a base class for the other shadow classes.
+			这在 [page:PointLight PointLights] 内部用于计算阴影,也可用作其他阴影类的基类。
 		</p>
 
 
-		<h2>Example</h2>
+		<h2>例子</h2>
 		<p>
 			<code>
 //Create a WebGLRenderer and turn on shadows in the renderer
@@ -58,83 +57,78 @@ scene.add( helper );
 			</code>
 		</p>
 
-		<h2>Constructor</h2>
+		<h2>构造函数</h2>
 
 		<h3>[name]( [param:Camera camera] )</h3>
 		<p>
-		[page:Camera camera] - the light's view of the world.<br /><br />
+		[page:Camera camera] - 在光的世界里<br /><br />
 
-		Create a new [name]. This is not intended to be called directly - it is called
-		internally by [page:PointLight] or used as a base class by other light shadows.
+			创建一个新的[name]。这不能直接调用的 - 它由[page:PointLight]在内部调用,或者由其他阴影用作基类。
 		</p>
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 		<h3>[property:Camera camera]</h3>
 		<p>
-			The light's view of the world. This is used to generate a depth map of the scene; objects behind
-			other objects from the light's perspective will be in shadow.
+			光的世界里。这用于生成场景的深度图;从光的角度来看,其他物体背后的物体将处于阴影中。
 		</p>
 
 		<h3>[property:Float bias]</h3>
 		<p>
-			Shadow map bias, how much to add or subtract from the normalized depth when deciding whether a surface is in shadow.<br />
-			The default is 0. Very tiny adjustments here (in the order of 0.0001) may help reduce artefacts in shadows
+			阴影贴图偏差,在确定曲面是否在阴影中时,从标准化深度添加或减去多少。<br />
+			默认值为0.此处非常小的调整(大约0.0001)可能有助于减少阴影中的伪影
 		</p>
 
 		<h3>[property:WebGLRenderTarget map]</h3>
 		<p>
-			The depth map generated using the internal camera; a location beyond a pixel's depth is
-			in shadow. Computed internally during rendering.
+			使用内置摄像头生成的深度图;超出像素深度的位置在阴影中。在渲染期间内部计算。
 		</p>
 
 
 		<h3>[property:Vector2 mapSize]</h3>
 		<p>
-			A [Page:Vector2] defining the width and height of the shadow map.<br /><br />
+			一个[Page:Vector2]定义阴影贴图的宽度和高度。<br /><br />
 
-			Higher values give better quality shadows at the cost of computation time. Values must be
-			powers of 2, up to the [page:WebGLRenderer.capabilities].maxTextureSize for a given device,
-			although the width and height don't have to be the same (so, for example, (512, 1024) is valid).
-			The default is *( 512, 512 )*.
+			较高的值会以计算时间为代价提供更好的阴影质量。值必须是2的幂,直到给定设备的[page:WebGLRenderer.capabilities].maxTextureSize,
+			虽然宽度和高度不必相同(例如,(512,1024)有效)。
+			默认值为*(512,512)*。
 		</p>
 
 
 		<h3>[property:Matrix4 matrix]</h3>
 		<p>
-			Model to shadow camera space, to compute location and depth in shadow map. Stored
-			in a [page:Matrix4 Matrix4]. This is computed internally during rendering.
+			模拟阴影相机空间,计算阴影贴图中的位置和深度。存储在[page:Matrix4 Matrix4]中。这是在渲染期间内部计算的。
 		</p>
 
 		<h3>[property:Float radius]</h3>
 		<p>
-			Setting this to values greater than 1 will blur the edges of the shadow.<br />
+			将此值设置为大于1的值将模糊阴影的边缘。<br />
 
-			High values will cause unwanted banding effects in the shadows - a greater [page:.mapSize mapSize]
-			will allow for a higher value to be used here before these effects become visible.<br /><br />
 
-			Note that this has no effect if the [page:WebGLRenderer.shadowMap.type] is set to [page:Renderer BasicShadowMap].
+			较高的值会在阴影中产生不必要的条带效果 - 更大的[page:.mapSize mapSize]将允许在这些效果变得可见之前使用更高的值。<br /><br />
+
+			请注意,如果[page:WebGLRenderer.shadowMap.type]设置为[page:Renderer BasicShadowMap],将会无效。
+
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 		<h3>[method:LightShadow copy]( [param:LightShadow source] )</h3>
 		<p>
-		Copies value of all the properties from the [page:LightShadow source] to this
-		SpotLight.
+			将[page:LightShadow]中的所有属性的值复制到 SpotLight。
 		</p>
 
 		<h3>[method:LightShadow clone]()</h3>
 		<p>
-		Creates a new LightShadow with the same properties as this one.
+			克隆与此相同属性的新LightShadow。
 		</p>
 
 		<h3>[method:Object toJSON]()</h3>
 		<p>
-		Serialize this LightShadow.
+			序列化这个LightShadow。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/lights/[name].js src/lights/[name].js]
 	</body>

+ 13 - 24
docs/api/zh/lights/shadows/SpotLightShadow.html

@@ -13,10 +13,10 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			This is used internally by [page:SpotLight SpotLights] for calculating shadows.
+			这在SpotLights内部用于计算阴影。
 		</p>
 
-		<h2>Example</h2>
+		<h2>例子</h2>
 		<p>
 			<code>
 //Create a WebGLRenderer and turn on shadows in the renderer
@@ -57,41 +57,30 @@ scene.add( helper );
 		</p>
 
 
-		<h2>Constructor</h2>
-
-		The constructor creates a [param:PerspectiveCamera PerspectiveCamera] to manage the shadow's view of the world.
-
-		<h2>Properties</h2>
-		See the base [page:LightShadow LightShadow] class for common properties.
-
-
+		<h2>构造函数</h2>
+	        	构造函数创建一个 [param:PerspectiveCamera PerspectiveCamera] 来管理阴影的世界视图
+		<h2>属性</h2>
+		有关常用属性,请参阅基础LightShadow类。
 	 <h3>[property:Camera camera]</h3>
 	 <p>
-		 The light's view of the world. This is used to generate a depth map of the scene; objects behind
-		 other objects from the light's perspective will be in shadow.<br /><br />
+		 在光的世界里。这用于生成场景的深度图;从光的角度来看,其他物体背后的物体将处于阴影中。<br /><br />
 
-		 The default is a  [page:PerspectiveCamera] with [page:PerspectiveCamera.near near] clipping plane at 0.5.
-		 The [page:PerspectiveCamera.fov fov] will track the [page:SpotLight.angle angle] property of the owning
-		 [page:SpotLight SpotLight] via the [page:SpotLightShadow.update update] method. Similarly, the
-		 [page:PerspectiveCamera.aspect aspect] property will track the aspect of the
-		 [page:LightShadow.mapSize mapSize]. If the [page:SpotLight.distance distance] property of the light is
-		 set, the [page:PerspectiveCamera.far far] clipping plane will track that, otherwise it defaults to 500.
+		 默认值为PerspectiveCamera,近剪裁平面为0.5。 fov将通过更新方法跟踪拥有SpotLight的角度属性。同样,aspect属性将跟踪mapSize的方面。如果设置了灯光的距离属性,则远剪裁平面将跟踪该值,否则默认为500。
 
 	 </p>
 
 	 <h3>[property:Boolean isSpotLightShadow]</h3>
 	 <p>
-		 Used to check whether this or derived classes are spot light shadows. Default is *true*.<br /><br />
 
-		 You should not change this, as it used internally for optimisation.
+		 用于检查此类或派生类是否为聚光灯阴影。默认为true。<br /><br />
+		 您不应该更改它,因为它在内部用于优化。
 	 </p>
 
-		<h2>Methods</h2>
-		See the base [page:LightShadow LightShadow] class for common methods.
-
+		<h2>方法</h2>
+		有关常用方法,请参阅基础LightShadow类。
 		<h3>[method:SpotLightShadow update]( [param:SpotLight light] )</h3>
 		<p>
-		Updates the internal perspective [page:.camera camera] based on the passed in [page:SpotLight light].
+			根据传入的[page:SpotLight light]更新内部透视[page:.camera camera]。
 		</p>
 
 		<h2>Source</h2>

+ 24 - 37
docs/api/zh/materials/LineBasicMaterial.html

@@ -10,11 +10,11 @@
 	<body>
 		[page:Material] &rarr;
 
-		<h1>[name]</h1>
+		<h1>基础线条材质([name]</h1>
 
-		<p class="desc">A material for drawing wireframe-style geometries.</p>
+			<p class="desc">一种用于绘制线框样式几何体的材质。</p>
 
-		<h2>Examples</h2>
+		<h2>例子(Examples)</h2>
 
 		<p>
 			[example:webgl_buffergeometry_drawcalls WebGL / buffergeometry / drawcalls]<br />
@@ -43,65 +43,52 @@ var material = new THREE.LineBasicMaterial( {
 } );
 		</code>
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( [param:Object parameters] )</h3>
 
 		<p>
-		[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-		Any property of the material (including any property inherited from [page:Material]) can be passed in here.<br /><br />
-
-		The exception is the property [page:Hexadecimal color], which can be passed in as a hexadecimal
-		string and is *0xffffff* (white) by default. [page:Color.set]( color ) is called internally.
+		[page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。材质的任何属性都可以从此处传入(包括从[page:Material]继承的任何属性)。<br /><br />
+		属性[page:Hexadecimal color]例外,其可以作为十六进制字符串传递,默认情况下为 *0xffffff*(白色),内部调用[page:Color.set](color)。
 		</p>
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] class for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]。</p>
 
 		<h3>[property:Color color]</h3>
-		<p>[page:Color] of the material, by default set to white (0xffffff).</p>
+		<p>材质的颜色([page:Color]),默认值为白色 (0xffffff)。</p>
 
 		<h3>[property:Boolean isLineBasicMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are line basic materials. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
+		<p>用于检查此类或派生类是否为基础线条材质。默认值为 *true*。<br /><br />
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 		<h3>[property:Boolean lights]</h3>
-		<p>Whether the material is affected by lights. Default is *false*.</p>
+		<p>材质是否受到光照的影响。默认值为 *false*。</p>
 
 		<h3>[property:Float linewidth]</h3>
-		<p>
-			Controls line 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]
-			with the [page:WebGLRenderer WebGL] renderer on most platforms linewidth will
-			always be 1 regardless of the set value.
+		<p> 控制线宽。默认值为 *1*。<br /><br />
+			由于[link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf OpenGL Core Profile]与
+			大多数平台上[page:WebGLRenderer WebGL]渲染器的限制,无论如何设置该值,线宽始终为1。
 		</p>
 
 		<h3>[property:String linecap]</h3>
-		<p>
-			Define appearance of line ends. Possible values are 'butt', 'round' and 'square'.
-			Default is 'round'.<br /><br />
-
-			This corresponds to the [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap 2D Canvas lineCap]
-			property and it is ignored by the [page:WebGLRenderer WebGL] renderer.
+		<p> 定义线两端的样式。可选值为 'butt', 'round' 和 'square'。默认值为 'round'。<br /><br />
+			该属性对应[link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap 2D Canvas lineCap]属性,
+			并且会被[page:WebGLRenderer WebGL]渲染器忽略。
 		</p>
 
 		<h3>[property:String linejoin]</h3>
-		<p>
-			Define appearance of line joints. Possible values are 'round', 'bevel' and 'miter'. Default is 'round'. <br /><br />
-
-			This corresponds to the [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]
-			property and it is ignored by the [page:WebGLRenderer WebGL] renderer.
+		<p> 定义线连接节点的样式。可选值为 'round', 'bevel' 和 'miter'。默认值为 'round'。<br /><br />
+			该属性对应[link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]属性,
+			并且会被[page:WebGLRenderer WebGL]渲染器忽略。
 		</p>
 
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] class for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material]。</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 21 - 26
docs/api/zh/materials/LineDashedMaterial.html

@@ -10,11 +10,11 @@
 	<body>
 		[page:Material] &rarr;
 
-		<h1>[name]</h1>
+		<h1>虚线材质([name])</h1>
 
-		<p class="desc">A material for drawing wireframe-style geometries with dashed lines.</p>
+		<p class="desc">一种用于绘制虚线样式几何体的材质。</p>
 
-		<h2>Examples</h2>
+		<h2>例子(Examples)</h2>
 
 		<p>
 			[example:webgl_lines_dashed WebGL / lines / dashed]<br />
@@ -31,59 +31,54 @@ var material = new THREE.LineDashedMaterial( {
 } );
 		</code>
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 
 		<h3>[name]( [param:Object parameters] )</h3>
 		<p>
-		[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-		Any property of the material (including any property inherited from [page:Material]) can be passed in here.<br /><br />
-
-		The exception is the property [page:Hexadecimal color], which can be passed i	as a hexadecimal
-		string and is *0xffffff* (white) by default. [page:Color.set]( color ) is called internally.
+		[page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。材质的任何属性都可以从此处传入(包括从[page:Material]继承的任何属性)。<br /><br />
+		属性[page:Hexadecimal color]例外,其可以作为十六进制字符串传递,默认情况下为 *0xffffff*(白色),内部调用[page:Color.set](color)。
 		</p>
 
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] class for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]。</p>
 
 		<h3>[property:Color color]</h3>
-		<p>[page:Color] of the material, by default set to white (0xffffff).</p>
+		<p>材质的颜色([page:Color]),默认值为白色 (0xffffff)。</p>
 
 		<h3>[property:number dashSize]</h3>
-		<p>The size of the dash. This is both the gap with the stroke. Default is *3*.</p>
+		<p>虚线的大小,是指破折号和间隙之和。默认值为 *3*。</p>
 
 		<h3>[property:number gapSize]</h3>
-		<p>The size of the gap. Default is *1*.</p>
+		<p>间隙的大小,默认值为 *1*。</p>
 
 		<h3>[property:Boolean isLineDashedMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are line dashed materials. Default is *true*.<br /><br />
+		<p>用于检查此类或派生类是否为虚线材质。默认值为 *true*。<br /><br />
 
-			You should not change this, as it used internally for optimisation.
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 		<h3>[property:Boolean lights]</h3>
-		<p>Whether the material is affected by lights. Default is *false*.</p>
+		<p>材质是否受到光照的影响。默认值为 *false*。</p>
 
 		<h3>[property:Float linewidth]</h3>
 		<p>
-			Controls line thickness. Default is *1*.<br /><br />
+			控制线宽。默认值为 *1*。<br /><br />
 
-			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.
+			由于[link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf OpenGL Core Profile]与
+			大多数平台上[page:WebGLRenderer WebGL]渲染器的限制,无论如何设置该值,线宽始终为1。
 		</p>
 
 		<h3>[property:number scale]</h3>
-		<p>The scale of the dashed part of a line. Default is *1*.</p>
+		<p>线条中虚线部分的占比。默认值为 *1*。</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] class for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material]。</p>
 
 
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 273 - 330
docs/api/zh/materials/Material.html

@@ -1,333 +1,276 @@
 <!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">
-		Abstract base class for materials.<br /><br />
-
-		Materials describe the appearance of [page:Object objects].
-		They are defined in a (mostly) renderer-independent way, so you don't have to
-		rewrite materials if you decide to use a different renderer.<br /><br />
-
-		The following properties and methods are inherited by all other material types
-		(although they may have different defaults).
-		</p>
-
-		<h2>Constructor</h2>
-
-
-		<h3>[name]()</h3>
-		<p>This creates a generic material.</p>
-
-
-		<h2>Properties</h2>
-
-		<h3>[property:Float alphaTest]</h3>
-		<p>
-		Sets the alpha value to be used when running an alpha test.
-		The material will not be renderered if the opacity is lower than this value.
-		Default is *0*.
-		</p>
-
-		<h3>[property:Integer blendDst]</h3>
-		<p>
-		Blending destination. Default is [page:CustomBlendingEquation OneMinusSrcAlphaFactor].
-		See the destination factors [page:CustomBlendingEquation constants] for all possible values.<br />
-		The material's [page:Constant blending] must be set to [page:Materials CustomBlending] for this to have any effect.
-		</p>
-
-		<h3>[property:Integer blendDstAlpha]</h3>
-		<p>The transparency of the [page:.blendDst]. Default is *null*.</p>
-
-		<h3>[property:Integer blendEquation]</h3>
-		<p>
-		Blending equation to use when applying blending. Default is [page:CustomBlendingEquation AddEquation].
-		See the blending equation [page:CustomBlendingEquation constants] for all possible values.<br />
-		The material's [page:Constant blending] must be set to [page:Materials CustomBlending] for this to have any effect.
-		</p>
-
-		<h3>[property:Integer blendEquationAlpha]</h3>
-		<p>The tranparency of the [page:.blendEquation]. Default is *null*.</p>
-
-		<h3>[property:Blending blending]</h3>
-		<p>
-		Which blending to use when displaying objects with this material. <br />
-		This must be set to [page:Materials CustomBlending] to use custom [page:Constant blendSrc], [page:Constant blendDst] or [page:Constant blendEquation].<br />
-		See the blending mode [page:Materials constants] for all possible values. Default is [page:Materials NormalBlending].
-		</p>
-
-		<h3>[property:Integer blendSrc]</h3>
-		<p>
-		Blending source. Default is [page:CustomBlendingEquation SrcAlphaFactor].
-		See the source factors [page:CustomBlendingEquation constants] for all possible values.<br />
-		The material's [page:Constant blending] must be set to [page:Materials CustomBlending] for this to have any effect.
-		</p>
-
-		<h3>[property:Integer blendSrcAlpha]</h3>
-		<p>The tranparency of the [page:.blendSrc]. Default is *null*.</p>
-
-		<h3>[property:Boolean clipIntersection]</h3>
-		<p>
-		Changes the behavior of clipping planes so that only their intersection is clipped, rather than their union.
-		Default is *false*.
-		</p>
-
-		<h3>[property:Array clippingPlanes]</h3>
-		<p>
-		User-defined clipping planes specified as THREE.Plane objects in world space.
-		These planes apply to the objects this material is attached to.
-		Points in space whose signed distance to the plane is negative are clipped (not rendered).
-		This requires [page:WebGLRenderer.localClippingEnabled] to be *true*.
-		See the [example:webgl_clipping_intersection WebGL / clipping /intersection] example.
-		Default is *null*.
-		</p>
-
-		<h3>[property:Boolean clipShadows]</h3>
-		<p>
-		Defines whether to clip shadows according to the clipping planes specified on this material. Default is *false*.
-		</p>
-
-		<h3>[property:Boolean colorWrite]</h3>
-		<p>
-		Whether to render the material's color.
-		This can be used in conjunction with a mesh's [page:Integer renderOrder] property to create invisible objects that occlude other objects. Default is *true*.
-		</p>
-
-		<h3>[property:Material customDepthMaterial]</h3>
-		<p>
-		Custom depth material to be used by this material when rendering to the depth map.
-		When shadow-casting with a [page:DirectionalLight] or [page:SpotLight], if you are (a) modifying vertex positions in the vertex shader,
-		(b) using a displacement map, (c) using an alpha map with alphaTest, or (d) using a transparent texture with alphaTest,
-		you must specify a customDepthMaterial for proper shadows. Default is *undefined*.
-		</p>
-
-		<h3>[property:Material customDistanceMaterial]</h3>
-		<p>
-		Same as customDepthMaterial, but used with [page:PointLight]. Default is *undefined*.
-		</p>
-
-		<h3>[property:Object defines]</h3>
-		<p>
-		Custom defines to be injected into the shader. These are passed in form of an object literal, with key/value pairs. { MY_CUSTOM_DEFINE: '' , PI2: Math.PI * 2 }. The pairs are defined in both vertex and fragment shaders.  Default is *undefined*.
-		</p>
-
-		<h3>[property:Integer depthFunc]</h3>
-		<p>
-		Which depth function to use. Default is [page:Materials LessEqualDepth]. See the depth mode [page:Materials constants] for all possible values.
-		</p>
-
-		<h3>[property:Boolean depthTest]</h3>
-		<p>
-		Whether to have depth test enabled when rendering this material. Default is *true*.
-		</p>
-
-		<h3>[property:Boolean depthWrite]</h3>
-		<p>
-		Whether rendering this material has any effect on the depth buffer. Default is *true*.<br /><br />
-
-		When drawing 2D overlays it can be useful to disable the depth writing in order to layer several things together without creating z-index artifacts.
-		</p>
-
-		<h3>[property:Boolean flatShading]</h3>
-		<p>
-		Define whether the material is rendered with flat shading. Default is false.
-		</p>
-
-		<h3>[property:Boolean fog]</h3>
-		<p>Whether the material is affected by fog. Default is *true*.</p>
-
-		<h3>[property:Integer id]</h3>
-		<p>Unique number for this material instance.</p>
-
-		<h3>[property:Boolean isMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are materials. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
-		</p>
-
-		<h3>[property:Boolean lights]</h3>
-		<p>Whether the material is affected by lights. Default is *true*.</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:Boolean needsUpdate]</h3>
-		<p>
-		Specifies that the material needs to be recompiled.<br />
-		This property is automatically set to *true* when instancing a new material.
-		</p>
-
-		<h3>[property:Float opacity]</h3>
-		<p>
-		Float in the range of *0.0* - *1.0* indicating how transparent the material is.
-		A value of *0.0* indicates fully transparent, *1.0* is fully opaque.<br />
-		If the material's [page:Boolean transparent] property is not set to *true*, the material will remain
-		fully opaque and this value will only affect its color. <br />
-		Default is *1.0*.
-		</p>
-
-		<h3>[property:Float overdraw]</h3>
-		<p>
-		Amount of triangle expansion at draw time.
-		This is a workaround for cases when gaps appear between triangles when using [page:CanvasRenderer].
-		*0.5* tends to give good results across browsers. Default is *0*.
-		</p>
-
-		<h3>[property:Boolean polygonOffset]</h3>
-		<p>
-		Whether to use polygon offset. Default is *false*. This corresponds to the *GL_POLYGON_OFFSET_FILL* WebGL feature.
-		</p>
-
-		<h3>[property:Integer polygonOffsetFactor]</h3>
-		<p>Sets the polygon offset factor. Default is *0*.</p>
-
-		<h3>[property:Integer polygonOffsetUnits]</h3>
-		<p>Sets the polygon offset units. Default is *0*.</p>
-
-		<h3>[property:String precision]</h3>
-		<p>
-		Override the renderer's default precision for this material. Can be "*highp*", "*mediump*" or "*lowp*".
-		Default is *null*.
-		</p>
-
-		<h3>[property:Boolean premultipliedAlpha]</h3>
-		<p>
-		Whether to premultiply the alpha (transparency) value.
-		See [Example:webgl_materials_transparency WebGL / Materials / Transparency] for an example of the difference.
-		Default is *false*.
-		</p>
-
-		<h3>[property:Boolean dithering]</h3>
-		<p>
-		Whether to apply dithering to the color to remove the appearance of banding.
-		Default is *false*.
-		</p>
-
-		<h3>[property:Integer shadowSide]</h3>
-		<p>
-		Defines which side of faces cast shadows.
-		When set, can be [page:Materials THREE.FrontSide], [page:Materials THREE.BackSide], or [page:Materials THREE.DoubleSide]. Default is *null*. <br />
-		If *null*, the side casting shadows is determined as follows: <br />
-
-		<table>
-			<thead>
-				<tr>
-					<th>[page:Material.side]</th>
-					<th>Side casting shadows</th>
-				</tr>
-			</thead>
-			<tbody>
-
-				<tr>
-					<td>THREE.FrontSide</td>
-					<td>back side</td>
-				</tr>
-				<tr>
-					<td>THREE.BackSide</td>
-					<td>front side</td>
-				</tr>
-				<tr>
-					<td>THREE.DoubleSide</td>
-					<td>both sides</td>
-				</tr>
-			</tbody>
-		</table>
-
-
-		</p>
-
-		<h3>[property:Integer side]</h3>
-		<p>
-		Defines which side of faces will be rendered - front, back or both.
-		Default is [page:Materials THREE.FrontSide].
-		Other options are [page:Materials THREE.BackSide] and [page:Materials THREE.DoubleSide].
-		</p>
-
-		<h3>[property:Boolean transparent]</h3>
-		<p>
-		Defines whether this material is transparent. This has an effect on rendering
-		as transparent objects need special treatment and are rendered after
-		non-transparent objects. <br />
-		When set to true, the extent to which the material is transparent is
-		controlled by setting it's [page:Float opacity] property. <br />
-		Default is *false*.
-		</p>
-
-		<h3>[property:String type]</h3>
-		<p>
-		Value is the string 'Material'. This shouldn't be changed, and can be used to
-		find all objects of this type in a scene.
-		</p>
-
-		<h3>[property:String uuid]</h3>
-		<p>
-		[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] of this material instance.
-		This gets automatically assigned, so this shouldn't be edited.
-		</p>
-
-		<h3>[property:Integer vertexColors]</h3>
-		<p>
-		Defines whether vertex coloring is used.
-		Default is [page:Materials THREE.NoColors].
-		Other options are [page:Materials THREE.VertexColors] and [page:Materials THREE.FaceColors].
-		</p>
-
-		<h3>[property:Boolean visible]</h3>
-		<p>
-		Defines whether this material is visible. Default is *true*.
-		</p>
-
-		<h3>[property:object userData]</h3>
-		<p>
-		An object that can be used to store custom data about the Material. It should not hold
-		references to functions as these will not be cloned.
-		</p>
-
-		<h2>Methods</h2>
-
-		<h3>[page:EventDispatcher EventDispatcher] methods are available on this class.</h3>
-
-		<h3>[method:Material clone]( )</h3>
-		<p>Return a new material with the same parameters as this material.</p>
-
-		<h3>[method:Material copy]( [param:material material] )</h3>
-		<p>Copy the parameters from the passed material into this material.</p>
-
-		<h3>[method:null dispose]()</h3>
-		<p>
-		This disposes the material. Textures of a material don't get disposed.
-		These needs to be disposed by [page:Texture Texture].
-		</p>
-
-		<h3>[method:null onBeforeCompile]( [param:Object shader], [param:WebGLRenderer renderer] )</h3>
-		<p>
-		An optional callback that is executed immediately before the shader program is compiled.
-		This function is called with the shader source code as a parameter. Useful for the modification of built-in materials.
-		</p>
-
-		<h3>[method:null setValues]( [param:object values] )</h3>
-		<p>
-		values -- a container with parameters.<br />
-		Sets the properties based on the *values*.
-		</p>
-
-		<h3>[method:null toJSON]( [param:object meta] )</h3>
-		<p>
-		meta -- object containing metadata such as textures or images for the material.<br />
-		Convert the material to three.js JSON format.
-		</p>
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
+<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">材质的抽象基类。<br/><br/>
+    材质描述了对象[page:Object objects]的外观。它们的定义方式与渲染器无关,
+    因此,如果您决定使用不同的渲染器,不必重写材质。<br/><br/>
+    所有其他材质类型都继承了以下属性和方法(尽管它们可能具有不同的默认值)。
+</p>
+
+<h2>构造函数(Constructor)</h2>
+
+
+<h3>[name]()</h3>
+<p>该方法创建一个通用材质。</p>
+
+
+<h2>属性(Properties)</h2>
+
+<h3>[property:Float alphaTest]</h3>
+<p>设置运行alphaTest时要使用的alpha值。如果不透明度低于此值,则不会渲染材质。默认值为*0*。
+</p>
+
+<h3>[property:Integer blendDst]</h3>
+<p> 混合目标。默认值为[page:CustomBlendingEquation OneMinusSrcAlphaFactor]。
+    目标因子所有可能的取值请参阅[page:CustomBlendingEquation constants]。
+    必须将材质的[page:Constant blending]设置为[page:Materials CustomBlending]才能生效。<br/>
+</p>
+
+<h3>[property:Integer blendDstAlpha]</h3>
+<p> [page:.blendDst]的透明度。 默认值为 *null*.</p>
+
+<h3>[property:Integer blendEquation]</h3>
+<p> 使用混合时所采用的混合方程式。默认值为[page:CustomBlendingEquation AddEquation]。
+    混合方程式所有可能的取值请参阅[page:CustomBlendingEquation constants]。
+    必须将材质的[page:Constant blending]设置为[page:Materials CustomBlending]才能生效。<br/>
+</p>
+
+<h3>[property:Integer blendEquationAlpha]</h3>
+<p>[page:.blendEquation] 的透明度. 默认值为 *null*.</p>
+
+<h3>[property:Blending blending]</h3>
+<p> 在使用此材质显示对象时要使用何种混合。<br/>
+    必须将其设置为[page:Materials CustomBlending]才能使用自定义[page:Constant blendSrc], [page:Constant blendDst] 或者 [page:Constant
+    blendEquation]。
+    混合模式所有可能的取值请参阅[page:Materials constants]。默认值为[page:Materials NormalBlending]。
+</p>
+
+<h3>[property:Integer blendSrc]</h3>
+<p> 混合源。默认值为[page:CustomBlendingEquation SrcAlphaFactor]。
+    源因子所有可能的取值请参阅[page:CustomBlendingEquation constants]。<br/>
+    必须将材质的[page:Constant blending]设置为[page:Materials CustomBlending]才能生效。
+</p>
+
+<h3>[property:Integer blendSrcAlpha]</h3>
+<p> [page:.blendSrc]的透明度。 默认值为 *null*.</p>
+
+<h3>[property:Boolean clipIntersection]</h3>
+<p>更改剪裁平面的行为,以便仅剪切其交叉点,而不是它们的并集。默认值为 *false*。
+</p>
+
+<h3>[property:Array clippingPlanes]</h3>
+<p>
+    用户定义的剪裁平面,在世界空间中指定为THREE.Plane对象。这些平面适用于所有使用此材质的对象。空间中与平面的有符号距离为负的点被剪裁(未渲染)。
+    这需要[page:WebGLRenderer.localClippingEnabled]为*true*。
+    示例请参阅[example:webgl_clipping_intersection WebGL / clipping /intersection]。默认值为 *null*。
+</p>
+
+<h3>[property:Boolean clipShadows]</h3>
+<p>定义是否根据此材质上指定的剪裁平面剪切阴影。默认值为 *false*。
+</p>
+
+<h3>[property:Boolean colorWrite]</h3>
+<p> 是否渲染材质的颜色。
+    这可以与网格的[page:Integer renderOrder]属性结合使用,以创建遮挡其他对象的不可见对象。默认值为*true*。
+</p>
+
+<h3>[property:Material customDepthMaterial]</h3>
+<p>渲染到深度贴图时此材质要使用的自定义深度材质。
+    当使用[page:DirectionalLight]或[page:SpotLight]进行阴影投射时,如果您正在(a)修改顶点着色器中的顶点位置,
+    (b)使用位移贴图,(c)alphaTest中使用alpha贴图,或(d)alphaTest中使用透明纹理,
+    您必须指定customDepthMaterial以得到合适的阴影。默认值*undefined*。
+</p>
+
+<h3>[property:Material customDistanceMaterial]</h3>
+<p>与customDepthMaterial相同,但与[page:PointLight]一起使用。默认值为*undefined*。
+</p>
+
+<h3>[property:Object defines]</h3>
+<p> 注入shader的自定义对象。 以键值对形式的对象传递,{ MY_CUSTOM_DEFINE: '' , PI2: Math.PI * 2 }。
+    这些键值对在顶点和片元着色器中定义。默认值为*undefined*。
+</p>
+
+<h3>[property:Integer depthFunc]</h3>
+<p> 使用何种深度函数。默认为[page:Materials LessEqualDepth]。
+    深度模式所有可能的取值请查阅[page:Materials constants]。
+</p>
+
+<h3>[property:Boolean depthTest]</h3>
+<p>是否在渲染此材质时启用深度测试。默认为 *true*。
+</p>
+
+<h3>[property:Boolean depthWrite]</h3>
+<p>渲染此材质是否对深度缓冲区有任何影响。默认为*true*。<br/><br/>
+    在绘制2D叠加时,将多个事物分层在一起而不创建z-index时,禁用深度写入会很有用。
+</p>
+
+<h3>[property:Boolean flatShading]</h3>
+<p> 定义材质是否使用平面着色进行渲染。默认值为false。
+</p>
+
+<h3>[property:Boolean fog]</h3>
+<p>材质是否受雾影响。默认为*true*。</p>
+
+<h3>[property:Integer id]</h3>
+<p>此材质实例的唯一编号。</p>
+
+<h3>[property:Boolean isMaterial]</h3>
+<p>用于检查此类或派生类是否为材质。默认值为 *true*。<br/><br/>
+
+    因为其通常用在内部优化,所以不应该更改该属性值。
+</p>
+
+<h3>[property:Boolean lights]</h3>
+<p>材质是否受到光照的影响。默认为*true*。</p>
+
+<h3>[property:String name]</h3>
+<p>对象的可选名称(不必是唯一的)。默认值为空字符串。</p>
+
+<h3>[property:Boolean needsUpdate]</h3>
+<p>指定需要重新编译材质。<br/>
+    实例化新材质时,此属性自动设置为true。
+</p>
+
+<h3>[property:Float opacity]</h3>
+<p> 在0.0 - 1.0的范围内的浮点数,表明材质的透明度。值*0.0*表示完全透明,*1.0*表示完全不透明。<br/>
+    如果材质的[page:Boolean transparent]属性未设置为*true*,则材质将保持完全不透明,此值仅影响其颜色。
+    默认值为*1.0*。 <br/>
+
+</p>
+
+<h3>[property:Float overdraw]</h3>
+<p>绘制时的三角形扩展量。对于使用[page:CanvasRenderer]时三角形之间出现间隙的情况,这是一种解决方法。
+    *0.5*往往会在浏览器中有良好的结果。默认值为*0*。
+</p>
+
+<h3>[property:Boolean polygonOffset]</h3>
+<p> 是否使用多边形偏移。默认值为*false*。这对应于WebGL的*GL_POLYGON_OFFSET_FILL*功能。
+</p>
+
+<h3>[property:Integer polygonOffsetFactor]</h3>
+<p>设置多边形偏移系数。默认值为*0*。</p>
+
+<h3>[property:Integer polygonOffsetUnits]</h3>
+<p>设置多边形偏移单位。默认值为*0*。</p>
+
+<h3>[property:String precision]</h3>
+<p> 重写此材质渲染器的默认精度。可以是"*highp*", "*mediump*" 或 "*lowp*"。默认值为*null*。
+</p>
+
+<h3>[property:Boolean premultipliedAlpha]</h3>
+<p> 是否预乘alpha(透明度)值。有关差异的示例,请参阅[Example:webgl_materials_transparency WebGL / Materials / Transparency]。
+    默认值为*false*。
+</p>
+
+<h3>[property:Boolean dithering]</h3>
+<p> 是否对颜色应用抖动以消除条带的外观。默认值为 *false*。
+</p>
+
+<h3>[property:Integer shadowSide]</h3>
+<p> 定义投影的面。设置时,可以是[page:Materials THREE.FrontSide], [page:Materials THREE.BackSide], 或[page:Materials]。默认值为 *null*。
+     <br/>
+    如果为*null*, 则面投射阴影确定如下: <br/>
+
+<table>
+    <thead>
+    <tr>
+        <th>[page:Material.side]</th>
+        <th>Side casting shadows</th>
+    </tr>
+    </thead>
+    <tbody>
+
+    <tr>
+        <td>THREE.FrontSide</td>
+        <td>背面</td>
+    </tr>
+    <tr>
+        <td>THREE.BackSide</td>
+        <td>前面</td>
+    </tr>
+    <tr>
+        <td>THREE.DoubleSide</td>
+        <td>双面</td>
+    </tr>
+    </tbody>
+</table>
+
+
+</p>
+
+<h3>[property:Integer side]</h3>
+<p> 定义将要渲染哪一面 - 正面,背面或两者。
+    默认为[page:Materials THREE.FrontSide]。其他选项有[page:Materials THREE.BackSide]和[page:Materials THREE.DoubleSide]。
+</p>
+
+<h3>[property:Boolean transparent]</h3>
+<p>
+    定义此材质是否透明。这对渲染有影响,因为透明对象需要特殊处理,并在非透明对象之后渲染。
+    <br/>
+    设置为true时,通过设置材质的[page:Float opacity]属性来控制材质透明的程度。<br/>
+    默认值为*false*。
+</p>
+
+<h3>[property:String type]</h3>
+<p> 值是字符串'Material'。不应该被更改,并且可以用于在场景中查找此类型的所有对象。
+</p>
+
+<h3>[property:String uuid]</h3>
+<p> 此材质实例的[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID],会自动分配,不应该被更改。
+</p>
+
+<h3>[property:Integer vertexColors]</h3>
+<p> 是否使用顶点着色。默认值为[page:Materials THREE.NoColors]。
+    其他选项有[page:Materials THREE.VertexColors] 和 [page:Materials THREE.FaceColors]。
+</p>
+
+<h3>[property:Boolean visible]</h3>
+<p> 此材质是否可见。默认为*true*。
+</p>
+
+<h3>[property:object userData]</h3>
+<p> 一个对象,可用于存储有关Material的自定义数据。它不应该包含对函数的引用,因为这些函数不会被克隆。
+</p>
+
+<h2>方法(Methods)</h2>
+
+<h3>[page:EventDispatcher EventDispatcher] 方法在此类中可用。</h3>
+
+<h3>[method:Material clone]( )</h3>
+<p> 返回与此材质具有相同参数的新材质。</p>
+
+<h3>[method:Material copy]( [param:material material] )</h3>
+<p> 将被传入材质中的参数复制到此材质中。</p>
+
+<h3>[method:null dispose]()</h3>
+<p> 处理材质。材质的纹理不会被处理。需要通过[page:Texture Texture]处理。
+</p>
+
+<h3>[method:null onBeforeCompile]( [param:Object shader], [param:WebGLRenderer renderer] )</h3>
+<p> 在编译shader程序之前立即执行的可选回调。此函数使用shader源码作为参数。用于修改内置材质。
+</p>
+
+<h3>[method:null setValues]( [param:object values] )</h3>
+<p> values -- 具有参数的容器。
+    根据*values*设置属性。<br/>
+</p>
+
+<h3>[method:null toJSON]( [param:object meta] )</h3>
+<p> meta -- 包含元素,例如材质的纹理或图像。
+    将材质转换为three.js JSON格式。<br/>
+</p>
+
+<h2>源码(Source)</h2>
+
+[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+</body>
 </html>

+ 44 - 70
docs/api/zh/materials/MeshBasicMaterial.html

@@ -10,12 +10,11 @@
 	<body>
 		[page:Material] &rarr;
 
-		<h1>[name]</h1>
+		<h1>基础网格材质([name])</h1>
 
 		<p class="desc">
-			A material for drawing geometries in a simple shaded (flat or wireframe) way.<br /><br />
-
-			This material is not affected by lights.
+			一个以简单着色(平面或线框)方式来绘制几何体的材质。<br /><br />
+			这种材质不受光照的影响。
 		</p>
 
 
@@ -37,129 +36,104 @@
 
 		</script>
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-			[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-			Any property of the material (including any property inherited from [page:Material]) can be passed in here.<br /><br />
-
-			The exception is the property [page:Hexadecimal color], which can be passed in as a hexadecimal
-			string and is *0xffffff* (white) by default. [page:Color.set]( color ) is called internally.
+		<p>[page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。材质的任何属性都可以从此处传入(包括从[page:Material]继承的任何属性)。<br /><br />
+			属性[page:Hexadecimal color]例外,其可以作为十六进制字符串传递,默认情况下为 *0xffffff*(白色),内部调用[page:Color.set](color)。
 		</p>
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] class for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]。</p>
 
 		<h3>[property:Texture alphaMap]</h3>
-		<p>The alpha map is a grayscale texture that controls the opacity across the surface
-			(black: fully transparent; white: fully opaque). Default is null.<br /><br />
-
-			Only the color of the texture is used, ignoring the alpha channel if one exists.
-			For RGB and RGBA textures, the [page:WebGLRenderer WebGL] renderer will use the
-			green channel when sampling this texture due to the extra bit of precision provided
-			for green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
-			luminance/alpha textures will also still work as expected.
+		<p> alpha贴图是一种灰度纹理,用于控制整个表面的不透明度(黑色:完全透明;白色:完全不透明)。默认值为null。<br /><br />
+			仅使用纹理的颜色,忽略alpha通道(如果存在)。对于RGB和RGBA纹理,[page:WebGLRenderer WebGL]渲染器在采样此纹理时将使用绿色通道,
+			因为在DXT压缩和未压缩RGB 565格式中为绿色提供了额外的精度。Luminance-only以及luminance/alpha纹理也仍然有效。
 		</p>
 
 		<h3>[property:Texture aoMap]</h3>
-		<p>The red channel of this texture is used as the ambient occlusion map. Default is null.
-		The aoMap requires a second set of UVs, and consequently will ignore the [page:Texture repeat]
-		and [page:Texture offset] Texture properties.</p>
+		<p>该纹理的红色通道用作环境遮挡贴图。默认值为null。aoMap需要第二组UVs,因此将忽略[page:Texture repeat]和[page:Texture offset]属性。</p>
 
 		<h3>[property:Float aoMapIntensity]</h3>
-		<p>Intensity of the ambient occlusion effect. Default is 1. Zero is no occlusion effect.</p>
+		<p>环境遮挡效果的强度。默认值为1。零是不遮挡效果。</p>
 
 		<h3>[property:Color color]</h3>
-		<p>[page:Color] of the material, by default set to white (0xffffff).</p>
+		<p>材质的颜色([page:Color]),默认值为白色 (0xffffff)。</p>
 
 		<h3>[property:Integer combine]</h3>
-		<p>
-			How to combine the result of the surface's color with the environment map, if any.<br /><br />
-
-			Options are [page:Materials THREE.Multiply] (default), [page:Materials THREE.MixOperation],
-			[page:Materials THREE.AddOperation]. If mix is chosen, the [page:.reflectivity] is used to
-			blend between the two colors.
+		<p> 如何将表面颜色的结果与环境贴图(如果有)结合起来。<br /><br />
+			选项为[page:Materials THREE.Multiply](默认值),[page:Materials THREE.MixOperation],
+			[page:Materials THREE.AddOperation]。如果选择多个,则使用[page:.reflectivity]在两种颜色之间进行混合。
 		</p>
 
 		<h3>[property:Boolean isMeshBasicMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are mesh basic materials. Default is *true*.<br /><br />
+		<p>用于检查此类或派生类是否为网格基础材质。默认值为 *true*。<br /><br />
 
-			You should not change this, as it used internally for optimisation.
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 		<h3>[property:TextureCube envMap]</h3>
-		<p>The environment map. Default is null.</p>
+		<p>环境贴图。默认值为null。</p>
 
 		<h3>[property:Texture lightMap]</h3>
-		<p>The light map. Default is null. The lightMap requires a second set of UVs,
-		and consequently will ignore the [page:Texture repeat] and [page:Texture offset]
-		Texture properties.</p>
+		<p>光照贴图。默认值为null。lightMap需要第二组UVs,因此将忽略[page:Texture repeat]和[page:Texture offset]纹理属性。</p>
 
 		<h3>[property:Float lightMapIntensity]</h3>
-		<p>Intensity of the baked light. Default is 1.</p>
+		<p>烘焙光的强度。默认值为1。</p>
 
 		<h3>[property:Boolean lights]</h3>
-		<p>Whether the material is affected by lights. Default is *false*.</p>
+		<p>材质是否受到光照的影响。默认值为 *false*。</p>
 
 		<h3>[property:Texture map]</h3>
-		<p>The color map. Default is  null.</p>
+		<p> 颜色贴图。默认为null。</p>
 
 		<h3>[property:Boolean morphTargets]</h3>
-		<p>Define whether the material uses morphTargets. Default is false.</p>
+		<p>材质是否使用morphTargets。默认值为false。</p>
 
 
 		<h3>[property:Float reflectivity]</h3>
-		<p>
-			How much the environment map affects the surface; also see [page:.combine].
-			The default value is 1 and the valid range is between 0 (no reflections) and 1 (full reflections).
+		<p> 环境贴图对表面的影响程度; 见[page:.combine]。默认值为1,有效范围介于0(无反射)和1(完全反射)之间。
 		</p>
 
 		<h3>[property:Float refractionRatio]</h3>
-		<p>
-			The index of refraction (IOR) of air (approximately 1) divided by the index of refraction of the material.
-			It is used with environment mapping modes [page:Textures THREE.CubeRefractionMapping] and [page:Textures THREE.EquirectangularRefractionMapping].
-			The refraction ratio should not exceed 1. Default is *0.98*.
+		<p> 空气的折射率(IOR)(约为1)除以材质的折射率。它与环境映射模式[page:Textures THREE.CubeRefractionMapping]
+			和[page:Textures THREE.EquirectangularRefractionMapping]一起使用。
+			折射率不应超过1。默认值为*0.98*。
 		</p>
 
 		<h3>[property:Boolean skinning]</h3>
-		<p>Define whether the material uses skinning. Default is false.</p>
+		<p> 材质是否使用蒙皮。默认值为false。</p>
 
 		<h3>[property:Texture specularMap]</h3>
-		<p>Specular map used by the material. Default is null.</p>
+		<p> 材质使用的高光贴图。默认值为null。</p>
 
 		<h3>[property:Boolean wireframe]</h3>
-		<p>Render geometry as wireframe. Default is *false* (i.e. render as flat polygons).</p>
+		<p> 将几何体渲染为线框。默认值为*false*(即渲染为平面多边形)。</p>
 
 		<h3>[property:String wireframeLinecap]</h3>
-		<p>
-			Define appearance of line ends. Possible values are "butt", "round" and "square". Default is 'round'.<br /><br />
-
-			This corresponds to the [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap 2D Canvas lineCap]
-			property and it is ignored by the [page:WebGLRenderer WebGL] renderer.
+		<p> 定义线两端的外观。可选值为 'butt','round' 和 'square'。默认为'round'。<br /><br />
+			该属性对应[link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]属性,
+			并且会被[page:WebGLRenderer WebGL]渲染器忽略。
 		</p>
 
 		<h3>[property:String wireframeLinejoin]</h3>
 		<p>
-			Define appearance of line joints. Possible values are "round", "bevel" and "miter". Default is 'round'.<br /><br />
-
-			This corresponds to the [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]
-			property and it is ignored by the [page:WebGLRenderer WebGL] renderer.
+			定义线连接节点的样式。可选值为 'round', 'bevel' 和 'miter'。默认值为 'round'。<br /><br />
+			该属性对应[link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]属性,
+			并且会被[page:WebGLRenderer WebGL]渲染器忽略。
 		</p>
 
 		<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]
-		with the [page:WebGLRenderer WebGL] renderer on most platforms linewidth will
-		always be 1 regardless of the set value.
+		<p>控制线框宽度。默认值为1。<br /><br />
+			由于[link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf OpenGL Core Profile]与大多数平台上[page:WebGLRenderer WebGL]渲染器的限制,
+			无论如何设置该值,线宽始终为1。
 		</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] class for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material]。</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 29 - 47
docs/api/zh/materials/MeshDepthMaterial.html

@@ -10,9 +10,9 @@
 	<body>
 		[page:Material] &rarr;
 
-		<h1>[name]</h1>
+		<h1>深度网格材质([name])</h1>
 
-		<p class="desc">A material for drawing geometry by depth. Depth is based off of the camera near and far plane. White is nearest, black is farthest.</p>
+		<p class="desc">一种按深度绘制几何体的材质。深度基于相机远近平面。白色最近,黑色最远。</p>
 
 		<iframe id="scene" src="scenes/material-browser.html#MeshDepthMaterial"></iframe>
 
@@ -32,91 +32,73 @@
 
 		</script>
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-			[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-			Any property of the material (including any property inherited from [page:Material]) can be passed in here.
+		<p>[page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。
+			材质的任何属性都可以从此处传入(包括从[page:Material]继承的任何属性)。
 		</p>
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] class for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]。</p>
 
 		<h3>[property:Texture alphaMap]</h3>
-		<p>The alpha map is a grayscale texture that controls the opacity across the surface
-			(black: fully transparent; white: fully opaque). Default is null.<br /><br />
-
-			Only the color of the texture is used, ignoring the alpha channel if one exists.
-			For RGB and RGBA textures, the [page:WebGLRenderer WebGL] renderer will use the
-			green channel when sampling this texture due to the extra bit of precision provided
-			for green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
-			luminance/alpha textures will also still work as expected.
+		<p>alpha贴图是一种灰度纹理,用于控制整个表面的不透明度(黑色:完全透明;白色:完全不透明)。默认值为null。<br /><br />
+			仅使用纹理的颜色,忽略alpha通道(如果存在)。对于RGB和RGBA纹理,[page:WebGLRenderer WebGL]渲染器在采样此纹理时将使用绿色通道,
+			因为在DXT压缩和未压缩RGB 565格式中为绿色提供了额外的精度。Luminance-only以及luminance/alpha纹理也仍然有效。
 		</p>
 
 		<h3>[property:Constant depthPacking]</h3>
-		<p>Encoding for depth packing. Default is [page:Textures BasicDepthPacking].</p>
+		<p> depth packing的编码。默认为[page:Textures BasicDepthPacking]。</p>
 
 		<h3>[property:Texture displacementMap]</h3>
-		<p>
-			The displacement map affects the position of the mesh's vertices. Unlike other maps
-			which only affect the light and shade of the material the displaced vertices can cast shadows,
-			block other objects, and otherwise act as real geometry. The displacement texture is
-			an image where the value of each pixel (white being the highest) is mapped against,
-			and repositions, the vertices of the mesh.
+		<p> 位移贴图会影响网格顶点的位置,与仅影响材质的光照和阴影的其他贴图不同,移位的顶点可以投射阴影,阻挡其他对象,以及充当真实的几何体。
+			位移纹理是指:网格的所有顶点被映射为图像中每个像素的值(白色是最高的),并且被重定位。
 		</p>
 
 		<h3>[property:Float displacementScale]</h3>
-		<p>
-			How much the displacement map affects the mesh (where black is no displacement,
-			and white is maximum displacement). Without a displacement map set, this value is not applied.
-			 Default is 1.
+		<p>位移贴图对网格的影响程度(黑色是无位移,白色是最大位移)。如果没有设置位移贴图,则不会应用此值。默认值为1。
 		</p>
 
 		<h3>[property:Float displacementBias]</h3>
-		<p>
-			The offset of the displacement map's values on the mesh's vertices.
-			Without a displacement map set, this value is not applied. Default is 0.
+		<p> 位移贴图在网格顶点上的偏移量。如果没有设置位移贴图,则不会应用此值。默认值为0。
 		</p>
 
 		<h3>[property:Boolean fog]</h3>
-		<p>Whether the material is affected by fog. Default is *false*.</p>
+		<p> 材质是否受雾影响。默认值为*false*。</p>
 
 		<h3>[property:Boolean isMeshDepthMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are mesh depth materials. Default is *true*.<br /><br />
+		<p> 用于检查此类或派生类是否为深度网格材质。默认值为 *true*。<br /><br />
 
-			You should not change this, as it used internally for optimisation.
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 		<h3>[property:Boolean lights]</h3>
-		<p>Whether the material is affected by lights. Default is *false*.</p>
+		<p>材质是否受到光照的影响。默认值为 *false*。</p>
 
 		<h3>[property:Texture map]</h3>
-		<p>The color map. Default is  null.</p>
+		<p>颜色贴图。默认为null。</p>
 
 		<h3>[property:boolean morphTargets]</h3>
-		<p>Define whether the material uses morphTargets. Default is false.</p>
+		<p>材质是否使用morphTargets。默认值为false。</p>
 
 		<h3>[property:Boolean skinning]</h3>
-		<p>Define whether the material uses skinning. Default is false.</p>
+		<p>材质是否使用蒙皮。默认值为false。</p>
 
 		<h3>[property:boolean wireframe]</h3>
-		<p>Render geometry as wireframe. Default is false (i.e. render as smooth shaded).</p>
+		<p> 将几何体渲染为线框。默认值为*false*(即渲染为平滑着色)。</p>
 
 		<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]
-		with the [page:WebGLRenderer WebGL] renderer on most platforms linewidth will
-		always be 1 regardless of the set value.
+		<p>控制线框宽度。默认值为1。<br /><br />
+		由于[link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf OpenGL Core Profile]
+		与大多数平台上[page:WebGLRenderer WebGL]渲染器限制,无论如何设置该值,线宽始终为1。
 		</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] class for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material]。</p>
 
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 55 - 88
docs/api/zh/materials/MeshLambertMaterial.html

@@ -10,24 +10,17 @@
 	<body>
 		[page:Material] &rarr;
 
-		<h1>[name]</h1>
+		<h1>Lambert网格材质([name])</h1>
 
-		<p class="desc">
-			A material for non-shiny surfaces, without specular highlights.<br /><br />
+		<p class="desc"> 一种非光泽表面的材质,没有镜面高光。<br /><br />
+			该材质使用基于非物理的[link:https://en.wikipedia.org/wiki/Lambertian_reflectance Lambertian]模型来计算反射率。
+			这可以很好地模拟一些表面(例如未经处理的木材或石材),但不能模拟具有镜面高光的光泽表面(例如涂漆木材)。<br /><br />
 
-			The material uses a non-physically based [link:https://en.wikipedia.org/wiki/Lambertian_reflectance Lambertian]
-			model for calculating reflectance. This can simulate some surfaces (such as untreated wood or stone) well,
-			but cannot simulate shiny surfaces with specular highlights (such as varnished wood).<br /><br />
 
-
-
-			Shading is calculated using a [link:https://en.wikipedia.org/wiki/Gouraud_shading Gouraud] shading model.
-			This calculates shading per vertex (i.e. in the [link:https://en.wikipedia.org/wiki/Shader#Vertex_shaders vertex shader])
-			and interpolates the results over the polygon's faces.<br /><br />
-
-			Due to the simplicity of the reflectance and illumination models, performance will be greater
-			when using this material over the [page:MeshPhongMaterial],	[page:MeshStandardMaterial] or [page:MeshPhysicalMaterial],
-			at the cost of some graphical accuracy.
+			使用[link:https://en.wikipedia.org/wiki/Gouraud_shading Gouraud]着色模型计算着色。这将计算每个顶点的着色
+			(即在[link:https://en.wikipedia.org/wiki/Shader#Vertex_shaders vertex shader]中)并在多边形的面上插入结果。<br /><br />
+			由于反射率和光照模型的简单性,[page:MeshPhongMaterial],[page:MeshStandardMaterial]或者[page:MeshPhysicalMaterial]
+			上使用这种材质时会以一些图形精度为代价,得到更高的性能。
 		</p>
 
 		<iframe id="scene" src="scenes/material-browser.html#MeshLambertMaterial"></iframe>
@@ -48,144 +41,118 @@
 
 		</script>
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-			[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-			Any property of the material (including any property inherited from [page:Material]) can be passed in here.<br /><br />
-
-			The exception is the property [page:Hexadecimal color], which can be passed in as a hexadecimal
-			string and is *0xffffff* (white) by default. [page:Color.set]( color ) is called internally.
+		<p>[page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。
+			材质的任何属性都可以从此处传入(包括从[page:Material]继承的任何属性)。<br /><br />
+			属性[page:Hexadecimal color]例外,其可以作为十六进制字符串传递,默认情况下为 *0xffffff*(白色),内部调用[page:Color.set](color)。
 		</p>
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] class for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]。</p>
 
 		<h3>[property:Texture alphaMap]</h3>
-		<p>The alpha map is a grayscale texture that controls the opacity across the surface
-			(black: fully transparent; white: fully opaque). Default is null.<br /><br />
-
-			Only the color of the texture is used, ignoring the alpha channel if one exists.
-			For RGB and RGBA textures, the [page:WebGLRenderer WebGL] renderer will use the
-			green channel when sampling this texture due to the extra bit of precision provided
-			for green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
-			luminance/alpha textures will also still work as expected.
+		<p>alpha贴图是一种灰度纹理,用于控制整个表面的不透明度(黑色:完全透明;白色:完全不透明)。默认值为null。<br /><br />
+
+			仅使用纹理的颜色,忽略alpha通道(如果存在)。对于RGB和RGBA纹理,[page:WebGLRenderer WebGL]渲染器在采样此纹理时将使用绿色通道,
+			因为在DXT压缩和未压缩RGB 565格式中为绿色提供了额外的精度。Luminance-only以及luminance/alpha纹理也仍然有效。
 		</p>
 
 		<h3>[property:Texture aoMap]</h3>
-		<p>The red channel of this texture is used as the ambient occlusion map. Default is null.
-		The aoMap requires a second set of UVs, and consequently will ignore the [page:Texture repeat]
-		and [page:Texture offset] Texture properties.</p>
+		<p> 该纹理的红色通道用作环境遮挡贴图。默认值为null。aoMap需要第二组UVs,因此将忽略[page:Texture repeat]和[page:Texture offset]纹理属性。</p>
 
 		<h3>[property:Float aoMapIntensity]</h3>
-		<p>Intensity of the ambient occlusion effect. Default is 1. Zero is no occlusion effect.</p>
+		<p> 环境遮挡效果的强度。默认值为1。零是不遮挡效果。</p>
 
 		<h3>[property:Color color]</h3>
-		<p>[page:Color] of the material, by default set to white (0xffffff).</p>
+		<p> 材质的颜色([page:Color]),默认值为白色 (0xffffff)。</p>
 
 		<h3>[property:Integer combine]</h3>
-		<p>
-			How to combine the result of the surface's color with the environment map, if any.<br /><br />
+		<p> 如何将表面颜色的结果与环境贴图(如果有)结合起来。<br /><br />
 
-			Options are [page:Materials THREE.Multiply] (default), [page:Materials THREE.MixOperation],
-			[page:Materials THREE.AddOperation]. If mix is chosen, the [page:.reflectivity] is used to
-			blend between the two colors.
+			选项为[page:Materials THREE.Multiply](默认值),[page:Materials THREE.MixOperation],
+			[page:Materials THREE.AddOperation]。如果选择多个,则使用[page:.reflectivity]在两种颜色之间进行混合。
 		</p>
 
 		<h3>[property:Color emissive]</h3>
-		<p>
-		Emissive (light) color of the material, essentially a solid color unaffected by other lighting.
-		Default is black.
+		<p> 材质的放射(光)颜色,基本上是不受其他光照影响的固有颜色。默认为黑色。
 		</p>
 
 		<h3>[property:Texture emissiveMap]</h3>
-		<p>
-		Set emissive (glow) map. Default is null. The emissive map color is modulated by
-		the emissive color and the emissive intensity. If you have an emissive map, be sure to
-		set the emissive color to something other than black.
+		<p> 设置放射(发光)贴图。默认值为null。放射贴图颜色由放射颜色和强度所调节。
+			如果你有一个放射贴图,请务必将放射颜色设置为黑色以外的其他颜色。
 		</p>
 
 		<h3>[property:Float emissiveIntensity]</h3>
-		<p>Intensity of the emissive light. Modulates the emissive color. Default is 1.</p>
+		<p> 放射光强度。调节发光颜色。默认为1。</p>
 
 		<h3>[property:TextureCube envMap]</h3>
-		<p>The environment map. Default is null.</p>
+		<p> 环境贴图。默认值为null。</p>
 
 		<h3>[property:Boolean isMeshLambertMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are mesh Lambert materials. Default is *true*.<br /><br />
+		<p> 用于检查此类或派生类是否为Lambert网格材质。默认值为 *true*。<br /><br />
 
-			You should not change this, as it used internally for optimisation.
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 		<h3>[property:Texture lightMap]</h3>
-		<p>The light map. Default is null. The lightMap requires a second set of UVs,
-		and consequently will ignore the [page:Texture repeat] and [page:Texture offset]
-		Texture properties.</p>
+		<p>光照贴图。默认值为null。lightMap需要第二组UVs,因此将忽略[page:Texture repeat]和[page:Texture offset]纹理属性。</p>
 
 		<h3>[property:Float lightMapIntensity]</h3>
-		<p>Intensity of the baked light. Default is 1.</p>
+		<p>烘焙光的强度。默认值为1。</p>
 
 		<h3>[property:Texture map]</h3>
-		<p>The color map. Default is  null.</p>
+		<p>颜色贴图。默认为null。</p>
 
 		<h3>[property:boolean morphNormals]</h3>
-		<p>
-			Defines whether the material uses morphNormals. Set as true to pass morphNormal
-			attributes from the [page:Geometry]	to the shader. Default is *false*.
+		<p> 定义是否使用morphNormals。设置为true可将morphNormal属性从[page:Geometry]传递到shader。默认值为*false*。
 		</p>
 
 		<h3>[property:Boolean morphTargets]</h3>
-		<p>Define whether the material uses morphTargets. Default is false.</p>
+		<p>定义材质是否使用morphTargets。默认值为false。</p>
 
 		<h3>[property:Float reflectivity]</h3>
-		<p>How much the environment map affects the surface; also see [page:.combine].</p>
+		<p> 环境贴图对表面的影响程度; 见[page:.combine]。默认值为1,有效范围介于0(无反射)和1(完全反射)之间。</p>
 
 		<h3>[property:Float refractionRatio]</h3>
-		<p>
-			The index of refraction (IOR) of air (approximately 1) divided by the index of refraction of the material.
-			It is used with environment mapping modes [page:Textures THREE.CubeRefractionMapping] and [page:Textures THREE.EquirectangularRefractionMapping].
-			The refraction ratio should not exceed 1. Default is *0.98*.
+		<p>空气的折射率(IOR)(约为1)除以材质的折射率。它与环境映射模式[page:Textures THREE.CubeRefractionMapping]
+			和[page:Textures THREE.EquirectangularRefractionMapping]一起使用。
+			折射率不应超过1。默认值为*0.98*。
 		</p>
 
 		<h3>[property:Boolean skinning]</h3>
-		<p>Define whether the material uses skinning. Default is false.</p>
+		<p>材质是否使用蒙皮。默认值为false。</p>
 
 		<h3>[property:Texture specularMap]</h3>
-		<p>Specular map used by the material. Default is null.</p>
+		<p>材质使用的高光贴图。默认值为null。</p>
 
 		<h3>[property:Boolean wireframe]</h3>
-		<p>Render geometry as wireframe. Default is *false* (i.e. render as flat polygons).</p>
+		<p>将几何体渲染为线框。默认值为*false*(即渲染为平面多边形)。</p>
 
 		<h3>[property:String wireframeLinecap]</h3>
-		<p>
-			Define appearance of line ends. Possible values are "butt", "round" and "square". Default is 'round'.<br /><br />
-
-			This corresponds to the [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap 2D Canvas lineCap]
-			property and it is ignored by the [page:WebGLRenderer WebGL] renderer.
+		<p>定义线两端的外观。可选值为 'butt','round' 和 'square'。默认为'round'。<br /><br />
+			该属性对应[link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]属性,
+			并且会被[page:WebGLRenderer WebGL]渲染器忽略。
 		</p>
 
 		<h3>[property:String wireframeLinejoin]</h3>
 		<p>
-			Define appearance of line joints. Possible values are "round", "bevel" and "miter". Default is 'round'.<br /><br />
-
-			This corresponds to the [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]
-			property and it is ignored by the [page:WebGLRenderer WebGL] renderer.
+			定义线连接节点的样式。可选值为 'round', 'bevel' 和 'miter'。默认值为 'round'。<br /><br />
+			该属性对应[link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]属性,
+			并且会被[page:WebGLRenderer WebGL]渲染器忽略。
 		</p>
 
 		<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]
-		with the [page:WebGLRenderer WebGL] renderer on most platforms linewidth will
-		always be 1 regardless of the set value.
+		<p> 控制线框宽度。默认值为1。<br /><br />
+			由于[link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf OpenGL Core Profile]与
+			大多数平台上[page:WebGLRenderer WebGL]渲染器的限制,无论如何设置该值,线宽始终为1。
 		</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] class for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material]。</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 17 - 23
docs/api/zh/materials/MeshNormalMaterial.html

@@ -10,9 +10,9 @@
 	<body>
 		[page:Material] &rarr;
 
-		<h1>[name]</h1>
+		<h1>法线网格材质([name])</h1>
 
-		<p class="desc">A material that maps the normal vectors to RGB colors.</p>
+		<p class="desc">一种把法向量映射到RGB颜色的材质。</p>
 
 		<iframe id="scene" src="scenes/material-browser.html#MeshNormalMaterial"></iframe>
 
@@ -32,53 +32,47 @@
 
 		</script>
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-			[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-			Any property of the material (including any property inherited from [page:Material]) can be passed in here.
+		<p> [page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。材质的任何属性都可以从此处传入(包括从[page:Material]继承的任何属性)。
 		</p>
 
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] class for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]。</p>
 
 		<h3>[property:Boolean fog]</h3>
-		<p>Whether the material is affected by fog. Default is *false*.</p>
+		<p>材质是否受雾影响。默认值为*false*。</p>
 
 		<h3>[property:Boolean isMeshNormalMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are mesh normal materials. Default is *true*.<br /><br />
+		<p> 用于检查此类或派生类是否为法线网格材质。默认值为 *true*。<br /><br />
 
-			You should not change this, as it used internally for optimisation.
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 		<h3>[property:Boolean lights]</h3>
-		<p>Whether the material is affected by lights. Default is *false*.</p>
+		<p>材质是否受到光照的影响。默认值为 *false*。</p>
 
 		<h3>[property:boolean morphTargets]</h3>
-		<p>Define whether the material uses morphTargets. Default is false.</p>
+		<p>定义材质是否使用morphTargets。默认值为false。</p>
 
 		<h3>[property:boolean wireframe]</h3>
 		<p>
-			Render geometry as wireframe. Default is false (i.e. render as smooth shaded).
+			将几何体渲染为线框。默认值为*false*(即渲染为平滑着色)。
 		</p>
 
 		<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]
-		with the [page:WebGLRenderer WebGL] renderer on most platforms linewidth will
-		always be 1 regardless of the set value.
+		<p>控制线框宽度。默认值为1。<br /><br />
+			由于[link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf OpenGL Core Profile]与大多数平台上[page:WebGLRenderer WebGL]渲染器的限制,无论如何设置该值,线宽始终为1。
 		</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] class for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material]。</p>
 
 
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 67 - 124
docs/api/zh/materials/MeshPhongMaterial.html

@@ -10,23 +10,15 @@
 	<body>
 		[page:Material] &rarr;
 
-		<h1>[name]</h1>
+		<h1>Phong网格材质([name])</h1>
 
-		<p class="desc">
-			A material for shiny surfaces with specular highlights.<br /><br />
-
-			The material uses a non-physically based [link:https://en.wikipedia.org/wiki/Blinn-Phong_shading_model Blinn-Phong]
-			model for calculating reflectance. Unlike the Lambertian model used in the [page:MeshLambertMaterial]
-			this can simulate shiny surfaces with specular highlights (such as varnished wood).<br /><br />
-
-			Shading is calculated using a [link:https://en.wikipedia.org/wiki/Phong_shading Phong] shading model.
-			This calculates shading per pixel (i.e. in the [link:https://en.wikipedia.org/wiki/Shader#Pixel_shaders fragment shader],
-			AKA pixel shader)	which gives more accurate results than the Gouraud model used by [page:MeshLambertMaterial],
-			at the cost of some performance. The [page:MeshStandardMaterial] and [page:MeshPhysicalMaterial]
-			also use this shading model.<br /><br />
-
-			Performance will generally be greater when using this material over the	[page:MeshStandardMaterial]
-			or [page:MeshPhysicalMaterial], at the cost of some graphical accuracy.
+		<p class="desc"> 一种用于具有镜面高光的光泽表面的材质。<br /><br />
+			该材质使用非物理的[link:https://en.wikipedia.org/wiki/Blinn-Phong_shading_model Blinn-Phong]模型来计算反射率。
+			与[page:MeshLambertMaterial]中使用的Lambertian模型不同,该材质可以模拟具有镜面高光的光泽表面(例如涂漆木材)。<br /><br />
+			使用[link:https://en.wikipedia.org/wiki/Phong_shading Phong]着色模型计算着色时,会计算每个像素的阴影(在[link:https://en.wikipedia.org/wiki/Shader#Pixel_shaders fragment shader],
+			AKA pixel shader中),与[page:MeshLambertMaterial]使用的Gouraud模型相比,该模型的结果更准确,但代价是牺牲一些性能。
+			[page:MeshStandardMaterial]和[page:MeshPhysicalMaterial]也使用这个着色模型。<br /><br />
+			在[page:MeshStandardMaterial]或[page:MeshPhysicalMaterial]上使用此材质时,性能通常会更高	,但会牺牲一些图形精度。
 		</p>
 
 		<iframe id="scene" src="scenes/material-browser.html#MeshPhongMaterial"></iframe>
@@ -47,215 +39,166 @@
 
 		</script>
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-			[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-			Any property of the material (including any property inherited from [page:Material]) can be passed in here.<br /><br />
-
-			The exception is the property [page:Hexadecimal color], which can be passed in as a hexadecimal
-			string and is *0xffffff* (white) by default. [page:Color.set]( color ) is called internally.
+		<p>[page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。
+			材质的任何属性都可以从此处传入(包括从[page:Material]继承的任何属性)。<br /><br />
+			属性[page:Hexadecimal color]例外,其可以作为十六进制字符串传递,默认情况下为 *0xffffff*(白色),内部调用[page:Color.set](color)。
 		</p>
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] class for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]。</p>
 
 		<h3>[property:Texture alphaMap]</h3>
-		<p>The alpha map is a grayscale texture that controls the opacity across the surface
-			(black: fully transparent; white: fully opaque). Default is null.<br /><br />
-
-			Only the color of the texture is used, ignoring the alpha channel if one exists.
-			For RGB and RGBA textures, the [page:WebGLRenderer WebGL] renderer will use the
-			green channel when sampling this texture due to the extra bit of precision provided
-			for green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
-			luminance/alpha textures will also still work as expected.
+		<p>Talpha贴图是一种灰度纹理,用于控制整个表面的不透明度(黑色:完全透明;白色:完全不透明)。默认值为null。<br /><br />
+			仅使用纹理的颜色,忽略alpha通道(如果存在)。对于RGB和RGBA纹理,[page:WebGLRenderer WebGL]渲染器在采样此纹理时将使用绿色通道,
+			因为在DXT压缩和未压缩RGB 565格式中为绿色提供了额外的精度。Luminance-only以及luminance/alpha纹理也仍然有效。
 		</p>
 
 		<h3>[property:Texture aoMap]</h3>
-		<p>The red channel of this texture is used as the ambient occlusion map. Default is null.
-		The aoMap requires a second set of UVs, and consequently will ignore the [page:Texture repeat]
-		and [page:Texture offset] Texture properties.</p>
+		<p>该纹理的红色通道用作环境遮挡贴图。默认值为null。aoMap需要第二组UVs,因此将忽略[page:Texture repeat]和[page:Texture offset]属性。</p>
 
 		<h3>[property:Float aoMapIntensity]</h3>
-		<p>Intensity of the ambient occlusion effect. Default is 1. Zero is no occlusion effect.</p>
+		<p>环境遮挡效果的强度。默认值为1。零是不遮挡效果。</p>
 
 		<h3>[property:Texture bumpMap]</h3>
-		<p>
-			The texture to create a bump map. The black and white values map to the perceived depth in relation to the lights.
-			Bump doesn't actually affect the geometry of the object, only the lighting. If a normal map is defined this will
-			be ignored.
+		<p> 用于创建凹凸贴图的纹理。黑色和白色值映射到与光照相关的感知深度。凹凸实际上不会影响对象的几何形状,只影响光照。如果定义了法线贴图,则将忽略该贴图。
 		</p>
 
 		<h3>[property:Float bumpScale]</h3>
-		<p>How much the bump map affects the material. Typical ranges are 0-1. Default is 1.</p>
+		<p> 凹凸贴图会对材质产生多大影响。典型范围是0-1。默认值为1。</p>
 
 
 		<h3>[property:Color color]</h3>
-		<p>[page:Color] of the material, by default set to white (0xffffff).</p>
+		<p>材质的颜色([page:Color]),默认值为白色 (0xffffff)。</p>
 
 		<h3>[property:Integer combine]</h3>
-		<p>
-			How to combine the result of the surface's color with the environment map, if any.<br /><br />
+		<p> 如何将表面颜色的结果与环境贴图(如果有)结合起来。<br /><br />
 
-			Options are [page:Materials THREE.Multiply] (default), [page:Materials THREE.MixOperation],
-			[page:Materials THREE.AddOperation]. If mix is chosen, the [page:.reflectivity] is used to
-			blend between the two colors.
+			选项为[page:Materials THREE.Multiply](默认值),[page:Materials THREE.MixOperation],
+			[page:Materials THREE.AddOperation]。如果选择多个,则使用[page:.reflectivity]在两种颜色之间进行混合。
 		</p>
 
 		<h3>[property:Texture displacementMap]</h3>
-		<p>
-			The displacement map affects the position of the mesh's vertices. Unlike other maps
-			which only affect the light and shade of the material the displaced vertices can cast shadows,
-			block other objects, and otherwise act as real geometry. The displacement texture is
-			an image where the value of each pixel (white being the highest) is mapped against,
-			and repositions, the vertices of the mesh.
+		<p> 位移贴图会影响网格顶点的位置,与仅影响材质的光照和阴影的其他贴图不同,移位的顶点可以投射阴影,阻挡其他对象,
+			以及充当真实的几何体。位移纹理是指:网格的所有顶点被映射为图像中每个像素的值(白色是最高的),并且被重定位。
 		</p>
 
 		<h3>[property:Float displacementScale]</h3>
-		<p>
-			How much the displacement map affects the mesh (where black is no displacement,
-			and white is maximum displacement). Without a displacement map set, this value is not applied.
-			 Default is 1.
+		<p> 位移贴图对网格的影响程度(黑色是无位移,白色是最大位移)。如果没有设置位移贴图,则不会应用此值。默认值为1。
 		</p>
 
 		<h3>[property:Float displacementBias]</h3>
 		<p>
-			The offset of the displacement map's values on the mesh's vertices.
-			Without a displacement map set, this value is not applied. Default is 0.
+			位移贴图在网格顶点上的偏移量。如果没有设置位移贴图,则不会应用此值。默认值为0。
 		</p>
 
 		<h3>[property:Color emissive]</h3>
-		<p>
-		Emissive (light) color of the material, essentially a solid color unaffected by other lighting.
-		Default is black.
+		<p> 材质的放射(光)颜色,基本上是不受其他光照影响的固有颜色。默认为黑色。
 		</p>
 
 		<h3>[property:Texture emissiveMap]</h3>
-		<p>
-		Set emisssive (glow) map. Default is null. The emissive map color is modulated by
-		the emissive color and the emissive intensity. If you have an emissive map, be sure to
-		set the emissive color to something other than black.
+		<p> 设置放射(发光)贴图。默认值为null。放射贴图颜色由放射颜色和强度所调节。
+			如果你有一个放射贴图,请务必将放射颜色设置为黑色以外的其他颜色。
 		</p>
 
 		<h3>[property:Float emissiveIntensity]</h3>
-		<p>Intensity of the emissive light. Modulates the emissive color. Default is 1.</p>
+		<p>放射光强度。调节发光颜色。默认为1。</p>
 
 		<h3>[property:TextureCube envMap]</h3>
-		<p>The environment map. Default is null.</p>
+		<p>环境贴图。默认值为null。</p>
 
 		<h3>[property:Boolean isMeshPhongMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are mesh Phong materials. Default is *true*.<br /><br />
+		<p> 用于检查此类或派生类是否为Phong网格材质。默认值为 *true*。<br /><br />
 
-			You should not change this, as it used internally for optimisation.
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 
 		<h3>[property:Texture lightMap]</h3>
-		<p>The light map. Default is null. The lightMap requires a second set of UVs,
-		and consequently will ignore the [page:Texture repeat] and [page:Texture offset]
-		Texture properties.</p>
+		<p>光照贴图。默认值为null。lightMap需要第二组UVs,因此将忽略[page:Texture repeat]和[page:Texture offset]纹理属性。</p>
 
 		<h3>[property:Float lightMapIntensity]</h3>
-		<p>Intensity of the baked light. Default is 1.</p>
+		<p>烘焙光的强度。默认值为1。</p>
 
 		<h3>[property:Texture map]</h3>
-		<p>The color map. Default is null. The texture map color is modulated by the diffuse [page:.color].</p>
+		<p>颜色贴图。默认为null。纹理贴图颜色由漫反射颜色[page:.color]调节。</p>
 
 		<h3>[property:boolean morphNormals]</h3>
-		<p>
-			Defines whether the material uses morphNormals. Set as true to pass morphNormal
-			attributes from the [page:Geometry]	to the shader. Default is *false*.
+		<p> 定义是否使用morphNormals。设置为true可将morphNormal属性从[page:Geometry]传递到shader。默认值为*false*。
 		</p>
 
 		<h3>[property:Boolean morphTargets]</h3>
-		<p>Define whether the material uses morphTargets. Default is false.</p>
+		<p>定义材质是否使用morphTargets。默认值为false。</p>
 
 		<h3>[property:Texture normalMap]</h3>
-		<p>
-			The texture to create a normal map. The RGB values affect the surface normal for each pixel fragment and change
-			the way the color is lit. Normal maps do not change the actual shape of the surface, only the lighting.
+		<p> 用于创建法线贴图的纹理。RGB值会影响每个像素片段的曲面法线,并更改颜色照亮的方式。法线贴图不会改变曲面的实际形状,只会改变光照。
 		</p>
 
 		<h3>[property:Integer normalMapType]</h3>
-		<p>
-			The type of normal map.<br /><br />
-
-			Options are [page:constant THREE.TangentSpaceNormalMap] (default), and [page:constant THREE.ObjectSpaceNormalMap].
+		<p> 法线贴图的类型。<br /><br />
+			选项为[page:constant THREE.TangentSpaceNormalMap](默认)和[page:constant THREE.ObjectSpaceNormalMap]。
 		</p>
 
 		<h3>[property:Vector2 normalScale]</h3>
-		<p>
-			How much the normal map affects the material. Typical ranges are 0-1.
-			Default is a [page:Vector2] set to (1,1).
+		<p> 法线贴图对材质的影响程度。典型范围是0-1。默认值是[page:Vector2]设置为(1,1)。
 		</p>
 
 
 		<h3>[property:Float reflectivity]</h3>
-		<p>
-			How much the environment map affects the surface; also see [page:.combine].
-			The default value is 1 and the valid range is between 0 (no reflections) and 1 (full reflections).
+		<p> 环境贴图对表面的影响程度; 见[page:.combine]。默认值为1,有效范围介于0(无反射)和1(完全反射)之间。
 		</p>
 
 		<h3>[property:Float refractionRatio]</h3>
-		<p>
-			The index of refraction (IOR) of air (approximately 1) divided by the index of refraction of the material.
-			It is used with environment mapping modes [page:Textures THREE.CubeRefractionMapping] and [page:Textures THREE.EquirectangularRefractionMapping].
-			The refraction ratio should not exceed 1. Default is *0.98*.
+		<p> 空气的折射率(IOR)(约为1)除以材质的折射率。它与环境映射模式[page:Textures THREE.CubeRefractionMapping]
+			和[page:Textures THREE.EquirectangularRefractionMapping]一起使用。
+			折射率不应超过1。默认值为*0.98*。
 		</p>
 
 		<h3>[property:Float shininess]</h3>
-		<p>How shiny the [page:.specular] highlight is; a higher value gives a sharper highlight. Default is *30*.</p>
+		<p> [page:.specular]高亮的程度,越高的值越闪亮。默认值为 *30*。</p>
 
 
 		<h3>[property:Boolean skinning]</h3>
-		<p>Define whether the material uses skinning. Default is false.</p>
+		<p>材质是否使用蒙皮。默认值为false。</p>
 
 		<h3>[property:Color specular]</h3>
-		<p>
-			Specular color of the material. Default is a [page:Color] set to *0x111111* (very dark grey).<br /><br />
-
-			This defines how shiny the material is and the color of its shine.
+		<p> 材质的高光颜色。默认值为*0x111111*(深灰色)的颜色[page:Color]。<br /><br />
+			这定义了材质的光泽度和光泽的颜色。
 		</p>
 
 		<h3>[property:Texture specularMap]</h3>
-		<p>
-			The specular map value affects both how much the specular surface highlight
-			contributes and how much of the environment map affects the surface. Default is null.
+		<p> 镜面反射贴图值会影响镜面高光以及环境贴图对表面的影响程度。默认值为null。
 		</p>
 
 		<h3>[property:Boolean wireframe]</h3>
-		<p>Render geometry as wireframe. Default is *false* (i.e. render as flat polygons).</p>
+		<p>将几何体渲染为线框。默认值为*false*(即渲染为平面多边形)。</p>
 
 		<h3>[property:String wireframeLinecap]</h3>
-		<p>
-			Define appearance of line ends. Possible values are "butt", "round" and "square". Default is 'round'.<br /><br />
+		<p> 定义线两端的外观。可选值为 'butt','round' 和 'square'。默认为'round'。<br /><br />
 
-			This corresponds to the [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap 2D Canvas lineCap]
-			property and it is ignored by the [page:WebGLRenderer WebGL] renderer.
+			该属性对应[link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]属性,
+			并且会被[page:WebGLRenderer WebGL]渲染器忽略。
 		</p>
 
 		<h3>[property:String wireframeLinejoin]</h3>
 		<p>
-			Define appearance of line joints. Possible values are "round", "bevel" and "miter". Default is 'round'.<br /><br />
-
-			This corresponds to the [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]
-			property and it is ignored by the [page:WebGLRenderer WebGL] renderer.
+			定义线连接节点的样式。可选值为 'round', 'bevel' 和 'miter'。默认值为 'round'。<br /><br />
+			该属性对应[link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]属性,
+			并且会被[page:WebGLRenderer WebGL]渲染器忽略。
 		</p>
 
 		<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]
-		with the [page:WebGLRenderer WebGL] renderer on most platforms linewidth will
-		always be 1 regardless of the set value.
+		<p>控制线框宽度。默认值为1。<br /><br />
+			由于[link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf OpenGL Core Profile]与
+			大多数平台上[page:WebGLRenderer WebGL]渲染器的限制,无论如何设置该值,线宽始终为1。
 		</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] class for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material]。</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 21 - 30
docs/api/zh/materials/MeshPhysicalMaterial.html

@@ -10,12 +10,10 @@
 	<body>
 		[page:Material] &rarr; [page:MeshStandardMaterial] &rarr;
 
-		<h1>[name]</h1>
+		<h1>物理网格材质([name])</h1>
 
-		<p class="desc">
-			An extension of the [page:MeshStandardMaterial] that allows for greater control over reflectivity.<br /><br />
-
-			Note that for best results you should always specify an [page:.envMap environment map] when using this material.
+		<p class="desc"> [page:MeshStandardMaterial]的扩展,能够更好地控制反射率。<br /><br />
+			请注意,为了获得最佳效果,您在使用此材质时应始终指定环境贴图。
 		</p>
 
 		<iframe id="scene" src="scenes/material-browser.html#MeshPhysicalMaterial"></iframe>
@@ -36,61 +34,54 @@
 
 		</script>
 
-		<h2>Examples</h2>
+		<h2>例子(Examples)</h2>
 		[example:webgl_materials_variations_physical materials / variations / physical]<br />
 		[example:webgl_materials_reflectivity materials / reflectivity]
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-		[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-		Any property of the material (including any property inherited from [page:Material] and [page:MeshStandardMaterial]) can be passed in here.<br /><br />
-
-		The exception is the property [page:Hexadecimal color], which can be passed in as a hexadecimal
-		string and is *0xffffff* (white) by default. [page:Color.set]( color ) is called internally.
+		<p> [page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。
+			材质的任何属性都可以从此处传入(包括从[page:Material]继承的任何属性)<br /><br />
+			属性[page:Hexadecimal color]例外,其可以作为十六进制字符串传递,默认情况下为 *0xffffff*(白色),内部调用[page:Color.set](color)。
 		</p>
 
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] and [page:MeshStandardMaterial] classes for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]。</p>
 
 		<h3>[property:Float clearCoat]</h3>
 		<p>
-		ClearCoat level, from *0.0* to *1.0*. Default is *0.0*.
+			ClearCoat级别,从*0.0*到*1.0*。默认值为*0.0*。
 		</p>
 
 		<h3>[property:Float clearCoatRoughness]</h3>
-		<p>How rough the clearCoat appears, from *0.0* to *1.0*. Default is *0.0*.</p>
+		<p> clearCoat看起来的粗糙程度,从*0.0*到*1.0*。默认值为*0.0*。</p>
 
 		<h3>[property:Boolean isMeshPhysicalMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are mesh physical materials. Default is *true*.<br /><br />
+		<p> 用于检查此类或派生类是否为Lambert网格材质。默认值为 *true*。<br /><br />
 
-			You should not change this, as it used internally for optimisation.
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 		<h3>[property:Object defines]</h3>
-		<p>An object of the form:
+		<p> 如下形式的对象:
 			<code>
 				{ 'PHYSICAL': '' };
 			</code>
-
-			This is used by the [page:WebGLRenderer] for selecting shaders.
+			[page:WebGLRenderer]使用它来选择shaders。
 		</p>
 
 		<h3>[property:Float reflectivity]</h3>
-		<p>
-		Degree of reflectivity, from *0.0* to *1.0*. Default is *0.5*.<br />
-
-		This models the reflectivity of non-metallic materials. It has no effect when [page:MeshStandardMaterial.metalness metalness] is *1.0*
+		<p> 反射度,从*0.0*到*1.0*。默认值为*0.5*。<br />
+			这模拟了非金属材质的反射率。当[page:MeshStandardMaterial]为*1.0*时,此属性无效。
 		</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] and [page:MeshStandardMaterial] classes for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material] 和[page:MeshStandardMaterial]。</p>
 
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 80 - 141
docs/api/zh/materials/MeshStandardMaterial.html

@@ -10,35 +10,24 @@
 	<body>
 		[page:Material] &rarr;
 
-		<h1>[name]</h1>
+		<h1>标准网格材质([name])</h1>
 
-		<p class="desc">
-			A standard physically based material, using Metallic-Roughness workflow.<br /><br />
+		<p class="desc"> 一种基于物理的标准材质,使用Metallic-Roughness工作流程。<br /><br />
+			基于物理的渲染(PBR)最近已成为许多3D应用程序的标准,例如[link:https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/ Unity],
+			[link:https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/ Unreal]和
+			[link:http://area.autodesk.com/blogs/the-3ds-max-blog/what039s-new-for-rendering-in-3ds-max-2017 3D Studio Max]。<br /><br />
+			这种方法与旧方法的不同之处在于,不使用近似值来表示光与表面的相互作用,而是使用物理上正确的模型。
+			我们的想法是,不是在特定照明下调整材质以使其看起来很好,而是可以创建一种材质,能够“正确”地应对所有光照场景。<br /><br />
 
-			Physically based rendering (PBR) has recently become the standard in many 3D applications, such as
-			[link:https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/ Unity],
-			[link:https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/ Unreal] and
-			[link:http://area.autodesk.com/blogs/the-3ds-max-blog/what039s-new-for-rendering-in-3ds-max-2017 3D Studio Max].<br /><br />
+			在实践中,该材质提供了比[page:MeshLambertMaterial] 或[page:MeshPhongMaterial] 更精确和逼真的结果,代价是计算成本更高。<br /><br />
 
-			This approach differs from older approaches in that instead of using approximations for the way in which
-			light	interacts with a surface, a physically correct model is used. The idea is that, instead of
-			tweaking materials to look good under specific lighting, a material can	be created that
-			will react 'correctly' under all lighting scenarios.<br /><br />
 
-			In practice this gives a more	accurate and realistic looking result than the [page:MeshLambertMaterial]
-			or [page:MeshPhongMaterial], at the cost of being somewhat more computationally expensive.<br /><br />
+			计算着色的方式与[page:MeshPhongMaterial]相同,都使用[link:https://en.wikipedia.org/wiki/Phong_shading Phong]着色模型,
+			这会计算每个像素的阴影(即在[link:https://en.wikipedia.org/wiki/Shader#Pixel_shaders fragment shader],
+			AKA pixel shader中), 与[page:MeshLambertMaterial]使用的Gouraud模型相比,该模型的结果更准确,但代价是牺牲一些性能。<br /><br />
 
-			Shading is calculated in the same way as for the [page:MeshPhongMaterial], using a
-			[link:https://en.wikipedia.org/wiki/Phong_shading Phong] shading model.	This calculates shading
-			per pixel (i.e. in the [link:https://en.wikipedia.org/wiki/Shader#Pixel_shaders fragment shader],
-			AKA pixel shader) which gives more accurate results than the Gouraud model used by
-			[page:MeshLambertMaterial], at the cost of some performance.<br /><br />
-
-			Note that for best results you should always specify an [page:.envMap environment map] when using
-			this material.<br /><br />
-
-			For a non-technical introduction to the concept of PBR and how to set up a PBR material,
-			check out these articles by the people at [link:https://www.marmoset.co marmoset]:
+			请注意,为获得最佳效果,您在使用此材质时应始终指定[page:.envMap environment map]。<br /><br />
+			有关PBR概念的非技术性介绍以及如何设置PBR材质,请查看[link:https://www.marmoset.co marmoset]成员的这些文章:
 			<ul>
 				<li>
 					[link:https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/ Basic Theory of Physically Based Rendering]
@@ -48,10 +37,9 @@
 				</li>
 			</ul>
 		</p>
-		<p>
-			Technical details of the approach used in three.js (and most other PBR systems) can be found is this
-			[link:https://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf paper from Disney] (pdf),
-			by Brent Burley.
+		<p>在 three.js(以及其他大多数PBR系统)中使用方法的技术细节,
+			可以在Brent Burley撰写的[link:https://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf paper from Disney] (pdf)
+			中查看。
 		</p>
 
 		<iframe id="scene" src="scenes/material-browser.html#MeshStandardMaterial"></iframe>
@@ -72,224 +60,175 @@
 
 		</script>
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-			[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-			Any property of the material (including any property inherited from [page:Material]) can be passed in here.<br /><br />
-
-			The exception is the property [page:Hexadecimal color], which can be passed in as a hexadecimal
-			string and is *0xffffff* (white) by default. [page:Color.set]( color ) is called internally.
+		<p> [page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。
+			材质的任何属性都可以从此处传入(包括从[page:Material]继承的任何属性)。<br /><br />
+			属性[page:Hexadecimal color]例外,其可以作为十六进制字符串传递,默认情况下为 *0xffffff*(白色),内部调用[page:Color.set](color)。
 		</p>
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] class for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]。</p>
 
 		<h3>[property:Texture alphaMap]</h3>
-		<p>The alpha map is a grayscale texture that controls the opacity across the surface
-			(black: fully transparent; white: fully opaque). Default is null.<br /><br />
-
-			Only the color of the texture is used, ignoring the alpha channel if one exists.
-			For RGB and RGBA textures, the [page:WebGLRenderer WebGL] renderer will use the
-			green channel when sampling this texture due to the extra bit of precision provided
-			for green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
-			luminance/alpha textures will also still work as expected.
+		<p>alpha贴图是一种灰度纹理,用于控制整个表面的不透明度(黑色:完全透明;白色:完全不透明)。默认值为null。<br /><br />
+			仅使用纹理的颜色,忽略alpha通道(如果存在)。对于RGB和RGBA纹理,[page:WebGLRenderer WebGL]渲染器在采样此纹理时将使用绿色通道,
+			因为在DXT压缩和未压缩RGB 565格式中为绿色提供了额外的精度。Luminance-only以及luminance/alpha纹理也仍然有效。
 		</p>
 
 		<h3>[property:Texture aoMap]</h3>
-		<p>The red channel of this texture is used as the ambient occlusion map. Default is null.
-		The aoMap requires a second set of UVs, and consequently will ignore the [page:Texture repeat]
-		and [page:Texture offset] Texture properties.</p>
+		<p>该纹理的红色通道用作环境遮挡贴图。默认值为null。aoMap需要第二组UVs,因此将忽略[page:Texture repeat]和[page:Texture offset]属性。</p>
 
 		<h3>[property:Float aoMapIntensity]</h3>
-		<p>Intensity of the ambient occlusion effect. Default is 1. Zero is no occlusion effect.</p>
+		<p>环境遮挡效果的强度。默认值为1。零是不遮挡效果。</p>
 
 		<h3>[property:Texture bumpMap]</h3>
-		<p>
-			The texture to create a bump map. The black and white values map to the perceived depth in relation to the lights.
-			Bump doesn't actually affect the geometry of the object, only the lighting. If a normal map is defined this will
-			be ignored.
+		<p> 用于创建凹凸贴图的纹理。黑色和白色值映射到与光照相关的感知深度。凹凸实际上不会影响对象的几何形状,只影响光照。如果定义了法线贴图,则将忽略该贴图。
 		</p>
 
 		<h3>[property:Float bumpScale]</h3>
-		<p>How much the bump map affects the material. Typical ranges are 0-1. Default is 1.</p>
+		<p>凹凸贴图会对材质产生多大影响。典型范围是0-1。默认值为1。</p>
 
 
 		<h3>[property:Color color]</h3>
-		<p>[page:Color] of the material, by default set to white (0xffffff).</p>
+		<p>材质的颜色([page:Color]),默认值为白色 (0xffffff)。</p>
 
 		<h3>[property:Object defines]</h3>
-		<p>An object of the form:
+		<p>如下形式的对象:
 			<code>
 				{ 'STANDARD': '' };
 			</code>
-
-			This is used by the [page:WebGLRenderer] for selecting shaders.
+			[page:WebGLRenderer]使用它来选择shaders。
 		</p>
 
 		<h3>[property:Texture displacementMap]</h3>
-		<p>
-			The displacement map affects the position of the mesh's vertices. Unlike other maps
-			which only affect the light and shade of the material the displaced vertices can cast shadows,
-			block other objects, and otherwise act as real geometry. The displacement texture is
-			an image where the value of each pixel (white being the highest) is mapped against,
-			and repositions, the vertices of the mesh.
+		<p> 位移贴图会影响网格顶点的位置,与仅影响材质的光照和阴影的其他贴图不同,移位的顶点可以投射阴影,阻挡其他对象,
+			以及充当真实的几何体。位移纹理是指:网格的所有顶点被映射为图像中每个像素的值(白色是最高的),并且被重定位。
 		</p>
 
 		<h3>[property:Float displacementScale]</h3>
 		<p>
-			How much the displacement map affects the mesh (where black is no displacement,
-			and white is maximum displacement). Without a displacement map set, this value is not applied.
-			 Default is 1.
+			位移贴图对网格的影响程度(黑色是无位移,白色是最大位移)。如果没有设置位移贴图,则不会应用此值。默认值为1。
 		</p>
 
 		<h3>[property:Float displacementBias]</h3>
 		<p>
-			The offset of the displacement map's values on the mesh's vertices.
-			Without a displacement map set, this value is not applied. Default is 0.
+			位移贴图在网格顶点上的偏移量。如果没有设置位移贴图,则不会应用此值。默认值为0。
 		</p>
 
 		<h3>[property:Color emissive]</h3>
-		<p>
-		Emissive (light) color of the material, essentially a solid color unaffected by other lighting.
-		Default is black.
+		<p>材质的放射(光)颜色,基本上是不受其他光照影响的固有颜色。默认为黑色。
 		</p>
 
 		<h3>[property:Texture emissiveMap]</h3>
-		<p>
-		Set emisssive (glow) map. Default is null. The emissive map color is modulated by
-		the emissive color and the emissive intensity. If you have an emissive map, be sure to
-		set the emissive color to something other than black.
+		<p>设置放射(发光)贴图。默认值为null。放射贴图颜色由放射颜色和强度所调节。
+			如果你有一个放射贴图,请务必将放射颜色设置为黑色以外的其他颜色。
 		</p>
 
 		<h3>[property:Float emissiveIntensity]</h3>
-		<p>Intensity of the emissive light. Modulates the emissive color. Default is 1.</p>
+		<p>放射光强度。调节发光颜色。默认为1。</p>
 
 		<h3>[property:TextureCube envMap]</h3>
-		<p>The environment map. Default is null.  Note that in order for the material roughness
-		property to correctly blur out the environment map, the shader must have access to mipmaps
-		of the env texture.  TextureCubes created with default settings are correctly configured;
-		if adjusting texture parameters manually, ensure minFilter is set to one of the MipMap options,
-		and that mip maps have not been otherwise forcibly disabled.</p>
+		<p> 环境贴图。默认值为null。
+			请注意,为了使材质粗糙度属性能够正确地模糊环境贴图,shader必须能够访问环境纹理的mipmaps。
+			使用默认设置创建的TextureCubes已正确配置; 如果手动调整纹理参数,
+			请确保将minFilter设置为其中一个MipMap选项,并且未强制禁用mip贴图。</p>
 		<p>
-		Note: only [link:https://threejs.org/docs/#api/textures/CubeTexture cube environment maps] are supported 
-		for MeshStandardMaterial. If you want to use an equirectangular map you will need to use the 
-		[link:https://github.com/mrdoob/three.js/blob/dev/examples/js/loaders/EquirectangularToCubeGenerator.js EquirectangularToCubeGenerator]. 
-		See this [link:https://threejs.org/examples/webgl_materials_envmaps_exr.html example] for details.
+			注意:MeshStandardMaterial 仅支持[link:https://threejs.org/docs/#api/textures/CubeTexture cube environment maps]。
+			如果要使用equirectangular贴图,则需要使用 [link:https://github.com/mrdoob/three.js/blob/dev/examples/js/loaders/EquirectangularToCubeGenerator.js EquirectangularToCubeGenerator]。
+			详细信息请参阅此示例[link:https://threejs.org/examples/webgl_materials_envmaps_exr.html example]。
 		</p>
 
 		<h3>[property:Float envMapIntensity]</h3>
-		<p>Scales the effect of the environment map by multiplying its color.</p>
+		<p> 通过乘以环境贴图的颜色来缩放环境贴图的效果。</p>
 
 		<h3>[property:Boolean isMeshStandardMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are mesh standard materials. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
+		<p> 用于检查此类或派生类是否为标准网格材质。默认值为 *true*。<br /><br />
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 
 		<h3>[property:Texture lightMap]</h3>
-		<p>The light map. Default is null. The lightMap requires a second set of UVs,
-		and consequently will ignore the [page:Texture repeat] and [page:Texture offset]
-		Texture properties.</p>
+		<p>光照贴图。默认值为null。lightMap需要第二组UVs,因此将忽略[page:Texture repeat]和[page:Texture offset]纹理属性。</p>
 
 		<h3>[property:Float lightMapIntensity]</h3>
-		<p>Intensity of the baked light. Default is 1.</p>
+		<p>烘焙光的强度。默认值为1。</p>
 
 		<h3>[property:Texture map]</h3>
-		<p>The color map. Default is null. The texture map color is modulated by the diffuse [page:.color].</p>
+		<p>颜色贴图。默认为null。纹理贴图颜色由漫反射颜色[page:.color]调节。</p>
 
 		<h3>[property:Float metalness]</h3>
-		<p>
-			How much the material is like a metal. Non-metallic materials such as wood or stone use 0.0, metallic use 1.0, with nothing
-			(usually) in between. Default is 0.5. A value between 0.0 and 1.0 could be used for a rusty metal look. If metalnessMap is
-			also provided, both values are multiplied.
+		<p> 材质与金属的相似度。非金属材质,如木材或石材,使用0.0,金属使用1.0,通常没有中间值。
+			默认值为0.5。0.0到1.0之间的值可用于生锈金属的外观。如果还提供了metalnessMap,则两个值相乘。
 		</p>
 
 		<h3>[property:Texture metalnessMap]</h3>
-		<p>The blue channel of this texture is used to alter the metalness of the material.</p>
+		<p> 该纹理的蓝色通道用于改变材质的金属度。</p>
 
 		<h3>[property:boolean morphNormals]</h3>
-		<p>
-			Defines whether the material uses morphNormals. Set as true to pass morphNormal
-			attributes from the [page:Geometry]	to the shader. Default is *false*.
+		<p> 定义是否使用morphNormals。设置为true可将morphNormal属性从[page:Geometry]传递到shader。默认值为*false*。
 		</p>
 
 		<h3>[property:Boolean morphTargets]</h3>
-		<p>Define whether the material uses morphTargets. Default is false.</p>
+		<p>定义材质是否使用morphTargets。默认值为false。</p>
 
 		<h3>[property:Texture normalMap]</h3>
-		<p>
-			The texture to create a normal map. The RGB values affect the surface normal for each pixel fragment and change
-			the way the color is lit. Normal maps do not change the actual shape of the surface, only the lighting.
+		<p>用于创建法线贴图的纹理。RGB值会影响每个像素片段的曲面法线,并更改颜色照亮的方式。法线贴图不会改变曲面的实际形状,只会改变光照。
 		</p>
 
 		<h3>[property:Integer normalMapType]</h3>
-		<p>
-			The type of normal map.<br /><br />
-
-			Options are [page:constant THREE.TangentSpaceNormalMap] (default), and [page:constant THREE.ObjectSpaceNormalMap].
+		<p>法线贴图的类型。<br /><br />
+			选项为[page:constant THREE.TangentSpaceNormalMap](默认)和[page:constant THREE.ObjectSpaceNormalMap]。
 		</p>
 
 		<h3>[property:Vector2 normalScale]</h3>
-		<p>
-			How much the normal map affects the material. Typical ranges are 0-1.
-			Default is a [page:Vector2] set to (1,1).
+		<p> 法线贴图对材质的影响程度。典型范围是0-1。默认值是[page:Vector2]设置为(1,1)。
 		</p>
 
 		<h3>[property:Float refractionRatio]</h3>
-		<p>
-			The index of refraction (IOR) of air (approximately 1) divided by the index of refraction of the material.
-			It is used with environment mapping modes [page:Textures THREE.CubeRefractionMapping] and [page:Textures THREE.EquirectangularRefractionMapping].
-			The refraction ratio should not exceed 1. Default is *0.98*.
+		<p> 空气的折射率(IOR)(约为1)除以材质的折射率。它与环境映射模式[page:Textures THREE.CubeRefractionMapping]
+			和[page:Textures THREE.EquirectangularRefractionMapping]一起使用。
+			折射率不应超过1。默认值为*0.98*。
 		</p>
 
 		<h3>[property:Float roughness]</h3>
-		<p>
-			How rough the material appears. 0.0 means a smooth mirror reflection, 1.0 means fully diffuse. Default is 0.5.
-			If roughnessMap is also provided, both values are multiplied.
+		<p> 材质的粗糙程度。0.0表示平滑的镜面反射,1.0表示完全漫反射。默认值为0.5。如果还提供roughnessMap,则两个值相乘。
 		</p>
 
 		<h3>[property:Texture roughnessMap]</h3>
-		<p>The green channel of this texture is used to alter the roughness of the material.</p>
+		<p>该纹理的绿色通道用于改变材质的粗糙度。</p>
 
 		<h3>[property:Boolean skinning]</h3>
-		<p>Define whether the material uses skinning. Default is false.</p>
+		<p>材质是否使用蒙皮。默认值为false。</p>
 
 		<h3>[property:Boolean wireframe]</h3>
-		<p>Render geometry as wireframe. Default is *false* (i.e. render as flat polygons).</p>
+		<p>将几何体渲染为线框。默认值为*false*(即渲染为平面多边形)。</p>
 
 		<h3>[property:String wireframeLinecap]</h3>
-		<p>
-			Define appearance of line ends. Possible values are "butt", "round" and "square". Default is 'round'.<br /><br />
-
-			This corresponds to the [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap 2D Canvas lineCap]
-			property and it is ignored by the [page:WebGLRenderer WebGL] renderer.
+		<p> 定义线两端的外观。可选值为 'butt','round' 和 'square'。默认为'round'。<br /><br />
+			该属性对应[link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]属性,
+			并且会被[page:WebGLRenderer WebGL]渲染器忽略。
 		</p>
 
 		<h3>[property:String wireframeLinejoin]</h3>
 		<p>
-			Define appearance of line joints. Possible values are "round", "bevel" and "miter". Default is 'round'.<br /><br />
+			定义线连接节点的样式。可选值为 'round', 'bevel' 和 'miter'。默认值为 'round'。<br /><br />
 
-			This corresponds to the [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]
-			property and it is ignored by the [page:WebGLRenderer WebGL] renderer.
+			该属性对应[link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]属性,
+			并且会被[page:WebGLRenderer WebGL]渲染器忽略。
 		</p>
 
 		<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]
-		with the [page:WebGLRenderer WebGL] renderer on most platforms linewidth will
-		always be 1 regardless of the set value.
+		<p>控制线框宽度。默认值为1。<br /><br />
+			由于[link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf OpenGL Core Profile]与大多数平台上[page:WebGLRenderer WebGL]渲染器的限制,无论如何设置该值,线宽始终为1。
 		</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] class for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material]。</p>
 
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 17 - 21
docs/api/zh/materials/MeshToonMaterial.html

@@ -10,9 +10,9 @@
 	<body>
 		[page:Material] &rarr; [page:MeshPhongMaterial] &rarr;
 
-		<h1>[name]</h1>
+		<h1>卡通网格材质([name])</h1>
 
-		<div class="desc">An extension of the [page:MeshPhongMaterial] with toon shading.</div>
+		<div class="desc">[page:MeshPhongMaterial]卡通着色的扩展。</div>
 
 		<!-- <iframe id="scene" src="scenes/material-browser.html#MeshStandardMaterial"></iframe>
 
@@ -32,49 +32,45 @@
 
 		</script> -->
 
-		<h2>Examples</h2>
+		<h2>例子(Examples)</h2>
 		[example:webgl_materials_variations_toon materials / variations / toon]<br />
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-		[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-		Any property of the material (including any property inherited from [page:Material] and [page:MeshStandardMaterial]) can be passed in here.<br /><br />
-
-		The exception is the property [page:Hexadecimal color], which can be passed in as a hexadecimal
-		string and is *0xffffff* (white) by default. [page:Color.set]( color ) is called internally.
+		<p> [page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。
+			材质的任何属性都可以从此处传入(包括从[page:Material]和[page:MeshStandardMaterial]继承的任何属性)。<br /><br />
+			属性[page:Hexadecimal color]例外,其可以作为十六进制字符串传递,默认情况下为 *0xffffff*(白色),内部调用[page:Color.set](color)。
 		</p>
 
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] and [page:MeshPhongMaterial] classes for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]和[page:MeshPhongMaterial]。</p>
 
 		<h3>[property:Texture gradientMap]</h3>
-		<p>Gradient map for the toon shading. Default is *null*.</p>
+		<p> 卡通着色的渐变贴图,默认值为*null*。</p>
 
 		<h3>[property:Boolean isMeshToonMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are mesh toon materials. Default is *true*.<br /><br />
+		<p> 用于检查此类或派生类是否为卡通网格材质。默认值为 *true*。<br /><br />
 
-			You should not change this, as it used internally for optimisation.
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 		<h3>[property:Object defines]</h3>
-		<p>An object of the form:
+		<p>如下形式的对象:
 			<code>
 				{ 'TOON': '' };
 			</code>
 
-			This is used by the [page:WebGLRenderer] for selecting shaders.
+			[page:WebGLRenderer]使用它来选择shaders。
 		</p>
 
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] and [page:MeshPhongMaterial] classes for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material]和[page:MeshPhongMaterial]。</p>
 
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 17 - 20
docs/api/zh/materials/PointsMaterial.html

@@ -10,11 +10,11 @@
 	<body>
 		[page:Material] &rarr;
 
-		<h1>[name]</h1>
+		<h1>点材质([name])</h1>
 
-		<p class="desc">The default material used by [page:Points].</p>
+		<p class="desc">[page:Points]使用的默认材质。</p>
 
-		<h2>Examples</h2>
+		<h2>例子(Examples)</h2>
 		<p>
 			[example:misc_controls_fly misc / controls / fly]<br />
 			[example:webgl_buffergeometry_drawcalls WebGL / BufferGeometry / drawcalls]<br />
@@ -56,44 +56,41 @@ scene.add( starField );
 		</code>
 
 		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-			[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-			Any property of the material (including any property inherited from [page:Material]) can be passed in here.<br /><br />
+		<p> [page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。
+			材质的任何属性都可以从此处传入(包括从[page:Material]继承的任何属性)。<br /><br />
 
-			The exception is the property [page:Hexadecimal color], which can be passed in as a hexadecimal
-			string and is *0xffffff* (white) by default. [page:Color.set]( color ) is called internally.
+			属性[page:Hexadecimal color]例外,其可以作为十六进制字符串传递,默认情况下为 *0xffffff*(白色),内部调用[page:Color.set](color)。
 		</p>
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] class for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]。</p>
 
 		<h3>[property:Color color]</h3>
-		<p>[page:Color] of the material, by default set to white (0xffffff).</p>
+		<p>材质的颜色([page:Color]),默认值为白色 (0xffffff)。</p>
 
 		<h3>[property:Boolean isPointsMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are points materials. Default is *true*.<br /><br />
+		<p> 用于检查此类或派生类是否为点材质。默认值为 *true*。<br /><br />
 
-			You should not change this, as it used internally for optimisation.
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 		<h3>[property:Texture map]</h3>
 
-		<p>Sets the color of the points using data from a [page:Texture].</p>
+		<p>使用[page:Texture]中的数据设置点的颜色。</p>
 
 		<h3>[property:Boolean morphTargets]</h3>
-		<p>Define whether the material uses morphTargets. Default is false.</p>
+		<p>材质是否使用morphTargets。默认值为false。</p>
 
 		<h3>[property:Number size]</h3>
-		<p>Sets the size of the points. Default is 1.0.</p>
+		<p>设置点的大小。默认值为1.0。</p>
 
 		<h3>[property:Boolean sizeAttenuation]</h3>
-		<p>Specify whether points' size is attenuated by the camera depth. (Perspective camera only.) Default is true.</p>
+		<p>指定点的大小是否因相机深度而衰减。(仅限透视摄像头。)默认为true。 </p>
 
 
-		<h2>Methods</h2>
+		<h2>方法(Methods)</h2>
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 13 - 18
docs/api/zh/materials/RawShaderMaterial.html

@@ -10,14 +10,12 @@
 	<body>
 		[page:ShaderMaterial] &rarr;
 
-		<h1>[name]</h1>
+		<h1>原始着色器材质([name])</h1>
 
-		<p class="desc">
-			This class works just like [page:ShaderMaterial], except that definitions of
-			built-in uniforms and attributes are not automatically prepended to the GLSL shader code.
+		<p class="desc"> 此类的工作方式与[page:ShaderMaterial]类似,不同之处在于内置的uniforms和attributes的定义不会自动添加到GLSL shader代码中。
 		</p>
 
-		<h2>Examples</h2>
+		<h2>例子(Examples)</h2>
 		<p>
 			[example:webgl_buffergeometry_rawshader WebGL / buffergeometry / rawshader]<br />
 			[example:webgl_buffergeometry_instancing_billboards WebGL / buffergeometry / instancing / billboards]<br />
@@ -40,31 +38,28 @@ var material = new THREE.RawShaderMaterial( {
 } );
 		</code>
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-			[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-			Any property of the material (including any property inherited from [page:Material] and [page:ShaderMaterial]) can be passed in here.<br /><br />
+		<p> [page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。
+			材质的任何属性都可以从此处传入(包括从[page:Material] 和 [page:ShaderMaterial]继承的任何属性)。<br /><br />
 		</p>
 
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] and [page:ShaderMaterial] classes for common methods.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]和[page:ShaderMaterial]。</p>
 
 		<h3>[property:Boolean isRawShaderMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are raw shader materials. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
+		<p> 用于检查此类或派生类是否为点材质。默认值为 *true*。<br /><br />
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] and [page:ShaderMaterial] classes for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material]和[page:ShaderMaterial]。</p>
 
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 112 - 174
docs/api/zh/materials/ShaderMaterial.html

@@ -10,52 +10,41 @@
 	<body>
 		[page:Material] &rarr;
 
-		<h1>[name]</h1>
+		<h1>着色器材质([name])</h1>
 
-		<p class="desc">
-			A material rendered with custom shaders. A shader is a small program written in
-			[link:https://www.khronos.org/files/opengles_shading_language.pdf GLSL] that runs on the GPU.
-			You may want to use a custom shader if you need to:
+		<p class="desc"> 使用自定义shader渲染的材质。
+			shader是一个用[link:https://www.khronos.org/files/opengles_shading_language.pdf GLSL]编写的小程序 ,在GPU上运行。
+			您可能需要使用自定义shader,如果你要:
 		<ul>
-			<li>implement an effect not included with any of the built-in [page:Material materials]</li>
-			<li>combine many objects into a single [page:Geometry] or [page:BufferGeometry] in order to improve performance</li>
+			<li>要实现内置 [page:Material materials] 之外的效果。</li>
+			<li>将许多对象组合成单个[page:Geometry]或[page:BufferGeometry]以提高性能。</li>
 		</ul>
-		There are the following notes to bear in mind when using a *ShaderMaterial*:
-
+		使用*ShaderMaterial*时需要注意以下注意事项:
 		<ul>
-			<li>
-				A *ShaderMaterial* will only be rendered properly by [page:WebGLRenderer],
-				since the GLSL code in the [link:https://en.wikipedia.org/wiki/Shader#Vertex_shaders vertexShader]
-				and [link:https://en.wikipedia.org/wiki/Shader#Pixel_shaders fragmentShader] properties must
-				be compiled and run on the GPU using WebGL.
+			<li>*ShaderMaterial* 只有使用 [page:WebGLRenderer] 才可以绘制正常,
+				因为 [link:https://en.wikipedia.org/wiki/Shader#Vertex_shaders vertexShader]
+				和 [link:https://en.wikipedia.org/wiki/Shader#Pixel_shaders fragmentShader]
+				属性中GLSL代码必须使用WebGL来编译并运行在GPU中。
 			</li>
-			<li>
-				As of THREE r72, directly assigning attributes in a ShaderMaterial is no longer supported.
-				A [page:BufferGeometry] instance (instead of a [page:Geometry] instance) must be used instead,
-				using [page:BufferAttribute] instances to define custom attributes.
+			<li> 从 THREE r72开始,不再支持在ShaderMaterial中直接分配属性。
+				必须使用 [page:BufferGeometry]实例 (而不是 [page:Geometry] 实例),使用[page:BufferAttribute]实例来定义自定义属性。
 			</li>
-			<li>
-				As of THREE r77, [page:WebGLRenderTarget] or [page:WebGLRenderTargetCube] instances
-				are no longer supposed to be used as uniforms. Their [page:Texture texture] property
-				must be used instead.
+			<li> 从 THREE r77开始,[page:WebGLRenderTarget] 或 [page:WebGLRenderTargetCube] 实例不再被用作uniforms。
+				必须使用它们的[page:Texture texture] 属性。
 			</li>
-			<li>
-				Built in attributes and uniforms are passed to the shaders along with your code.
-				If you don't want the [page:WebGLProgram] to add anything to your shader code, you can use
-				[page:RawShaderMaterial] instead of this class.
+			<li> 内置attributes和uniforms与代码一起传递到shaders。
+				如果您不希望[page:WebGLProgram]向shader代码添加任何内容,则可以使用[page:RawShaderMaterial]而不是此类。
 			</li>
-			<li>
-				You can use the directive #pragma unroll_loop in order to unroll a *for* loop in GLSL by the shader preprocessor.
-				The directive has to be placed right above the loop. The loop formatting has to correspond to a defined standard.
+			<li> 您可以使用指令#pragma unroll_loop,以便通过shader预处理器在GLSL中展开for循环。
+				该指令必须放在循环的正上方。循环格式必须与定义的标准相对应。
 				<ul>
-					<li>
-						The loop has to be [link:https://en.wikipedia.org/wiki/Normalized_loop normalized].
+					<li> 循环必须标准化[link:https://en.wikipedia.org/wiki/Normalized_loop normalized]。
 					</li>
 					<li>
-						The loop variable has to be *i*.
+						循环变量必须是*i*。
 					</li>
 					<li>
-						The loop has to use a certain whitespace formatting.
+						循环必须使用某种空格格式。
 					</li>
 				</ul>
 				<code>
@@ -70,7 +59,7 @@
 		</ul>
 		</p>
 
-		<h2>Examples</h2>
+		<h2>例子(Examples)</h2>
 
 		<p>
 			[example:webgl_animation_cloth webgl / animation / cloth ]<br />
@@ -122,95 +111,80 @@
 		} );
 		</code>
 
-		<h2>Vertex shaders and fragment shaders</h2>
+		<h2>顶点着色器和片元着色器(Vertex shaders and fragment shaders)</h2>
 
 		<div>
-			<p>You can specify two different types of shaders for each material:</p>
+			<p>您可以为每种材质指定两种不同类型的shaders::</p>
 			<ul>
-				<li>
-					The vertex shader runs first; it receives *attributes*, calculates / manipulates
-					the position of each individual vertex, and passes additional data (*varying*s) to the fragment shader.
+				<li> 顶点着色器首先运行; 它接收*attributes*,
+					计算/操纵每个单独顶点的位置,并将其他数据(*varying*s)传递给片元着色器。
 				</li>
 				<li>
-					The fragment ( or pixel ) shader runs second; it sets the color of each individual "fragment"
-					(pixel) rendered to the screen.
+					片元(或像素)着色器后运行; 它设置渲染到屏幕的每个单独的“片元”(像素)的颜色。
 				</li>
 			</ul>
-			<p>There are three types of variables in shaders: uniforms, attributes, and varyings:</p>
+			<p>shader中有三种类型的变量: uniforms, attributes, 和 varyings:</p>
 			<ul>
-				<li>
-					*Uniforms* are variables that have the same value for all vertices - lighting, fog,
-					and shadow maps are examples of data that would be stored in uniforms.
-					Uniforms can be accessed by both the vertex shader and the fragment shader.
+				<li>*Uniforms*是所有顶点都具有相同的值的变量。
+					比如灯光,雾,和阴影贴图就是被储存在uniforms中的数据。
+					uniforms可以通过顶点着色器和片元着色器来访问。
 				</li>
-				<li>
-					*Attributes* are variables associated with each vertex---for instance, the vertex position,
-					face normal, and vertex color are all examples of data that would be stored in attributes.
-					Attributes can <em>only</em> be accessed within the vertex shader.
+				<li> *Attributes* 与每个顶点关联的变量。例如,顶点位置,法线和顶点颜色都是存储在attributes中的数据。attributes <em>只</em>
+					可以在顶点着色器中访问。
 				</li>
-				<li>
-					*Varyings* are variables that are passed from the vertex shader to the fragment shader.
-					For each fragment, the value of each varying will be smoothly interpolated from the values of adjacent vertices.
+				<li> *Varyings* 是从顶点着色器传递到片元着色器的变量。对于每一个片元,每一个varying的值将是相邻顶点值的平滑插值。
 				</li>
 			</ul>
-			<p>
-				Note that <em>within</em> the shader itself, uniforms and attributes act like constants;
-				you can only modify their values by passing different values to the buffers from your JavaScript code.
+			<p> 注意:在shader <em>内部</em>,uniforms和attributes就像常量;你只能使用JavaScript代码通过缓冲区来修改它们的值。
 			</p>
 		</div>
 
 
-	<h2>Built-in attributes and uniforms</h2>
+	<h2>内置attributes 和 uniforms(Built-in attributes and uniforms)</h2>
 
 	<div>
 			<p>
-			The [page:WebGLRenderer] provides many attributes and uniforms to shaders by default;
-			definitions of these variables are prepended to your *fragmentShader* and *vertexShader*
-			code by the [page:WebGLProgram] when the shader is compiled; you don't need to declare them yourself.
-			See [page:WebGLProgram] for details of these variables.
+				[page:WebGLRenderer]默认情况下为shader提供了许多attributes和uniforms;
+				这些变量定义在shader程序编译时被自动添加到*片元着色器*和*顶点着色器*代码的前面,你不需要自己声明它们。
+				这些变量的描述请参见[page:WebGLProgram]。
 			</p>
 			<p>
-			Some of these uniforms or attributes (e.g. those pertaining lighting, fog, etc.)
-			require properties to be set on the material in order for [page:WebGLRenderer] to copy
-			the appropriate values to the GPU - make sure to set these flags if you want to use these
-			features in your own shader.
+				这些uniforms或attributes(例如,那些和照明,雾等相关的)要求属性设置在材质上,
+				以便 [page:WebGLRenderer]来拷贝合适的值到GPU中。
+				如果你想在自己的shader中使用这些功能,请确保设置这些标志。
 			</p>
 			<p>
-			If you don't want [page:WebGLProgram] to add anything to your shader code, you can use
-			[page:RawShaderMaterial] instead of this class.
+				如果你不希望[page:WebGLProgram] 向你的shader代码中添加任何东西,
+				你可以使用[page:RawShaderMaterial] 而不是这个类。
 			</p>
 		</div>
 
 
-		<h2>Custom attributes and uniforms</h2>
+		<h2>自定义 attributes 和 uniforms(Custom attributes and uniforms)</h2>
 
 		<div>
 			<p>
-				Both custom attributes and uniforms must be declared in your GLSL shader code
-				(within *vertexShader* and/or *fragmentShader*). Custom uniforms must be defined in <em>both</em>
-				the *uniforms* property of your *ShaderMaterial*, whereas any custom attributes must be
-				defined via [page:BufferAttribute] instances. Note that *varying*s only need to
-				be declared within the shader code (not within the material).
+				自定义attributes和uniforms必须在GLSL着色器代码中声明(在 *vertexShader* 和/或 *fragmentShader* 中)。
+				自定义uniforms必须定义为 *ShaderMaterial* 的  *uniforms* 属性,
+				而任何自定义attribtes必须通过[page:BufferAttribute]实例来定义。
+				注意 *varying*s 只需要在shader代码中声明(而不必在材质中)。
 			</p>
-			<p>
-				To declare a custom attribute, please reference the [page:BufferGeometry] page for an overview,
-				and the [page:BufferAttribute] page for a detailed look at the *BufferAttribute* API.
+			<p> 要声明一个自定义属性,更多细节请参考[page:BufferGeometry]页面,
+				以及 [page:BufferAttribute] 页面关于*BufferAttribute* 接口。
 			</p>
 			<p>
-				When creating your attributes, each typed array that you create to hold your
-				attribute's data must be a multiple of your data type's size. For example, if your
-				attribute is a [page:Vector3 THREE.Vector3] type, and you have 3000 vertices in your
-				[page:BufferGeometry], your typed array value must be created with a length of 3000 * 3,
-				or 9000 (one value per-component). A table of each data type's size is shown below for reference:
+				当创建attributes时,您创建的用来保存属性数据的每个类型化数组(typed array)必须是您的数据类型大小的倍数。
+				比如,如果你的属性是一个[page:Vector3 THREE.Vector3]类型,并且在你的缓存几何模型[page:BufferGeometry]中有3000个顶点,
+				那么你的类型化数组的长度必须是3000 * 3,或者9000(一个顶点一个值)。每个数据类型的尺寸如下表所示:
 			</p>
 
 			<table>
-				<caption><a id="attribute-sizes">Attribute sizes</a></caption>
+				<caption><a id="attribute-sizes">属性尺寸</a></caption>
 				<thead>
 					<tr>
-						<th>GLSL type</th>
-						<th>JavaScript type</th>
-						<th>Size</th>
+						<th>GLSL 类型</th>
+						<th>JavaScript 类型</th>
+						<th>尺寸</th>
 					</tr>
 				</thead>
 				<tbody>
@@ -243,13 +217,13 @@
 			</table>
 
 			<p>
-				Note that attribute buffers are <em>not</em> refreshed automatically when their values change. To update custom attributes,
-				set the *needsUpdate* flag to true on the [page:BufferAttribute] of the geometry (see [page:BufferGeometry]
-				for further details).
+				请注意,属性缓冲区 <em>不会</em> 在其值更改时自动刷新。要更新自定义属性,
+				需要在模型的[page:BufferAttribute]中设置*needsUpdate*为true。
+				(查看[page:BufferGeometry]了解细节)。
 			</p>
 
 			<p>
-			To declare a custom [page:Uniform], use the *uniforms* property:
+				要声明一个自定义的[page:Uniform],使用*uniforms*属性:
 			<code>
 			uniforms: {
 				time: { value: 1.0 },
@@ -259,34 +233,29 @@
 			</p>
 
 			<p>
-			You're recommended to update custom [page:Uniform] values depending on [page:Object3D object] and [page:Camera camera]
-			in [page:Object3D.onBeforeRender] because [page:Material] can be shared among [page:Mesh meshes], [page:Matrix4 matrixWorld]
-			of [page:Scene] and [page:Camera] are updated in [page:WebGLRenderer.render], and some effects(ex:VREffect) render a [page:Scene scene]
-			with private their own [page:Camera cameras].
+				在[page:Object3D.onBeforeRender]中,建议根据[page:Object3D object]和[page:Camera camera]来更新自定义[page:Uniform]的值。
+				因为 [page:Material] 可以被[page:Mesh meshes],[page:Scene]的[page:Matrix4 matrixWorld]以及[page:Camera]共享,
+				会在[page:WebGLRenderer.render]中更新,并会对拥有私有[page:Camera cameras]的[page:Scene scene]的渲染造成影响。
 			</p>
 
 		</div>
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-			[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-			Any property of the material (including any property inherited from [page:Material]) can be passed in here.
+		<p> [page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。
+			材质的任何属性都可以从此处传入(包括从[page:Material]继承的任何属性)。
 		</p>
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] class for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]。</p>
 
 		<h3>[property:Boolean clipping]</h3>
-		<p>
-		Defines whether this material supports clipping; true to let the renderer pass the clippingPlanes uniform. Default is false.
+		<p> 定义此材质是否支持剪裁; 如果渲染器传递clippingPlanes uniform,则为true。默认值为false。
 		</p>
 
 		<h3>[property:Object defaultAttributeValues]</h3>
-		<p>
-			When the rendered geometry doesn't include these attributes but the material does,
-			 these default values will be passed to the shaders. This avoids errors when buffer data is missing.
+		<p> 当渲染的几何体不包含这些属性但材质包含这些属性时,这些默认值将传递给shaders。这可以避免在缓冲区数据丢失时出错。
 
 			<code>
 this.defaultAttributeValues = {
@@ -300,26 +269,22 @@ this.defaultAttributeValues = {
 
 
 		<h3>[property:Object defines]</h3>
-		<p>
-		Defines custom constants using *#define* directives within the GLSL code for both the
-		vertex shader and the fragment shader; each key/value pair yields another directive:
+		<p> 使用 #define 指令在GLSL代码为顶点着色器和片段着色器定义自定义常量;每个键/值对产生一行定义语句:
 		<code>
 		defines: {
 			FOO: 15,
 			BAR: true
 		}
 		</code>
-		yields the lines
+		这将在GLSL代码中产生如下定义语句:
 		<code>
 		#define FOO 15
 		#define BAR true
 		</code>
-		in the GLSL code.
 		</p>
 
 		<h3>[property:Object extensions]</h3>
-		<p>
-		An object with the following properties:
+		<p> 一个有如下属性的对象:
 		<code>
 this.extensions = {
 	derivatives: false, // set to use derivatives
@@ -332,138 +297,111 @@ this.extensions = {
 
 
 		<h3>[property:Boolean fog]</h3>
-		<p>
-			Define whether the material color is affected by global fog settings; true to pass
-			fog uniforms to the shader. Default is false.
+		<p> 定义材质颜色是否受全局雾设置的影响; 如果将fog uniforms传递给shader,则为true。默认值为false。
 		</p>
 
 
 		<h3>[property:String fragmentShader]</h3>
 		<p>
-		Fragment shader GLSL code.  This is the actual code for the shader. In the example above,
-		the *vertexShader* and *fragmentShader* code is extracted from the DOM; it could be passed
-		as a string directly or loaded via AJAX instead.
+			片元着色器的GLSL代码。这是shader程序的实际代码。在上面的例子中,
+			*vertexShader*  和 *fragmentShader* 代码是从DOM(HTML文档)中获取的;
+			它也可以作为一个字符串直接传递或者通过AJAX加载。
 		</p>
 
 		<h3>[property:String index0AttributeName]</h3>
-		<p>
-			If set, this calls [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindAttribLocation gl.bindAttribLocation]
-			to bind a generic vertex index to an attribute variable.
-			Default is undefined.
+		<p> 如果设置,则调用[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindAttribLocation gl.bindAttribLocation]
+			将通用顶点索引绑定到属性变量。默认值未定义。
 
 		</p>
 
 		<h3>[property:Boolean isShaderMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are shader materials. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
+		<p> 用于检查此类或派生类是否为着色器材质。默认值为 *true*。<br /><br />
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 
 
 
 		<h3>[property:Boolean lights]</h3>
-		<p>
-		Defines whether this material uses lighting; true to pass uniform data related to lighting to this shader. Default is false.
+		<p> 材质是否受到光照的影响。默认值为 *false*。如果传递与光照相关的uniform数据到这个材质,则为true。默认是false。
 		</p>
 
 		<h3>[property:Float linewidth]</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]
-		with the [page:WebGLRenderer WebGL] renderer on most platforms linewidth will
-		always be 1 regardless of the set value.
+		<p>控制线框宽度。默认值为1。<br /><br />
+			由于[link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf OpenGL Core Profile]与大多数平台上[page:WebGLRenderer WebGL]渲染器的限制,无论如何设置该值,线宽始终为1。
 		</p>
 
 
 		<h3>[property:Boolean morphTargets]</h3>
-		<p>
-		Defines whether the material uses morphTargets; true morphTarget attributes to this shader
+		<p> 定义材质是否使用 morphTargets。如果将morphTarget attributes传递到此shader,则为true。
 		</p>
 
 		<h3>[property:boolean morphNormals]</h3>
-		<p>
-			Defines whether the material uses morphNormals. Set as true to pass morphNormal attributes from the [page:Geometry]
-			to the shader. Default is *false*.
+		<p> 定义材质是否使用 morphNormals。设置为true,将从[page:Geometry]传递morphNormal属性给shader。默认值是*false*。
 		</p>
 
 
 		<h3>[property:WebGLProgram program]</h3>
-		<p>
-		The compiled shader program associated with this material, generated by [page:WebGLRenderer].
-		You should not need to access this property.
+		<p> 与此材质相关联的编译后的shader程序,由[page:WebGLRenderer]生成。您应该不需要访问此属性。
 		</p>
 
 		<h3>[property:Boolean flatShading]</h3>
-		<p>
-		Define whether the material is rendered with flat shading. Default is false.
+		<p> 定义材质是否使用平面着色进行渲染。默认值为false。
 		</p>
 
 
 		<h3>[property:Boolean skinning]</h3>
-		<p>
-		Define whether the material uses skinning; true to pass skinning attributes to the shader. Default is false.
+		<p> 定义材质是否使用蒙皮; 如果将蒙皮属性传递给shader,则为true。默认值为false。
 		</p>
 
 		<h3>[property:Object uniforms]</h3>
-		<p>
-			An object of the form:
+		<p> 如下形式的对象:
 			<code>
 { "uniform1": { value: 1.0 }, "uniform2": { value: 2 } }
 			</code>
-		specifying the uniforms to be passed to the shader code; keys are uniform names, values are definitions of the form
+			指定要传递给shader代码的uniforms;键为uniform的名称,值(value)是如下形式:
 		<code>
 		{ value: 1.0 }
 		</code>
-		where *value* is the value of the uniform. Names must match the name of the uniform,
-		as defined in the GLSL code. Note that uniforms are refreshed on every frame,
-		so updating the value of the uniform will immediately update the value available to the GLSL code.
+			这里 *value* 是uniform的值。名称必须匹配 uniform 的name,和GLSL代码中的定义一样。
+			注意,uniforms逐帧被刷新,所以更新uniform值将立即更新GLSL代码中的相应值。
 		</p>
 
 
 		<h3>[property:Number vertexColors]</h3>
-		<p>
-		Define how the vertices are colored, by defining how the *colors* attribute gets populated.
-		Possible values are [page:Materials THREE.NoColors], [page:Materials THREE.FaceColors] and
-		[page:Materials THREE.VertexColors]. Default is THREE.NoColors.
+		<p> 通过定义*colors*属性的生成方式来定义顶点是如何着色的。
+			可选值为[page:Materials THREE.NoColors], [page:Materials THREE.FaceColors] 和
+			[page:Materials THREE.VertexColors]。 缺省为 THREE.NoColors。
 		</p>
 
 		<h3>[property:String vertexShader]</h3>
-		<p>
-		Vertex shader GLSL code.  This is the actual code for the shader. In the example above,
-		the *vertexShader* and *fragmentShader* code is extracted from the DOM; it could be passed
-		as a string directly or loaded via AJAX instead.
+		<p> 顶点着色器的GLSL代码。这是shader程序的实际代码。
+			在上面的例子中,*vertexShader* 和 *fragmentShader* 代码是从DOM(HTML文档)中获取的;
+			它也可以作为一个字符串直接传递或者通过AJAX加载。
 		</p>
 
 		<h3>[property:Boolean wireframe]</h3>
-		<p>
-		Render geometry as wireframe (using GL_LINES instead of GL_TRIANGLES). Default is false (i.e. render as flat polygons).
+		<p> 将几何体渲染为线框(通过GL_LINES而不是GL_TRIANGLES)。默认值为*false*(即渲染为平面多边形)。
 		</p>
 
 		<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)
-		with the [page:WebGLRenderer WebGL] renderer on most platforms linewidth will
-		always be 1 regardless of the set value.
+		<p>控制线框宽度。默认值为1。<br /><br />
+			由于[link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf OpenGL Core Profile]与大多数平台上[page:WebGLRenderer WebGL]渲染器的限制,无论如何设置该值,线宽始终为1。
 		</p>
 
 
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] class for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material]。</p>
 
 		<h3>[method:ShaderMaterial clone]() [param:ShaderMaterial this]</h3>
-		<p>
-		Generates a shallow copy of this material. Note that the vertexShader and fragmentShader
-		are copied <em>by reference</em>, as are the definitions of the *attributes*; this means
-		that clones of the material will share the same compiled [page:WebGLProgram]. However, the
-		*uniforms* are copied <em>by value</em>, which allows you to have different sets of uniforms
-		for different copies of the material.
+		<p> 创建该材质的一个浅拷贝。需要注意的是,vertexShader和fragmentShader使用<em>引用拷贝</em>;
+			*attributes*的定义也是如此;
+			这意味着,克隆的材质将共享相同的编译[page:WebGLProgram];
+			但是,*uniforms* 是 <em>值拷贝</em>,这样对不同的材质我们可以有不同的uniforms变量。
 		</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 15 - 18
docs/api/zh/materials/ShadowMaterial.html

@@ -10,13 +10,13 @@
 	<body>
 		[page:Material] &rarr; [page:ShaderMaterial] &rarr;
 
-		<h1>[name]</h1>
+		<h1>阴影材质([name])</h1>
 
 		<p class="desc">
-		This material can receive shadows, but otherwise is completely transparent.
+			此材质可以接收阴影,但在其他方面完全透明。
 		</p>
 
-		<h3>Example</h3>
+		<h3>例子(Example)</h3>
 		[example:webgl_geometry_spline_editor geometry / spline / editor]
 
 		<code>
@@ -32,35 +32,32 @@ plane.receiveShadow = true;
 scene.add( plane );
 		</code>
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-			[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-			Any property of the material (including any property inherited from [page:Material] and [page:ShaderMaterial]) can be passed in here.<br /><br />
+		<p> [page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。
+			材质的任何属性都可以从此处传入(包括从[page:Material] 和 [page:ShaderMaterial]继承的任何属性)。<br /><br />
 		</p>
 
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] and [page:ShaderMaterial] classes for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]和[page:ShaderMaterial]。</p>
 
 		<h3>[property:Boolean isShadowMaterial]</h3>
-		<p>
-			Used to check whether this or derived classes are shadow materials. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
+		<p> 用于检查此类或派生类是否为阴影材质。默认值为 *true*。<br /><br />
+			因为其通常用在内部优化,所以不应该更改该属性值。
 		</p>
 
 		<h3>[property:Boolean lights]</h3>
-		<p>Whether the material is affected by lights. Default is *true*.</p>
+		<p> 材质是否受到光照的影响。默认值为 *true*。</p>
 
 		<h3>[property:Boolean transparent]</h3>
-		<p>Defines whether this material is transparent. Default is *true*.</p>
+		<p>定义此材质是否透明。默认值为 *true*。</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] and [page:ShaderMaterial] classes for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material]和[page:ShaderMaterial]。</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 19 - 20
docs/api/zh/materials/SpriteMaterial.html

@@ -10,11 +10,11 @@
 	<body>
 		[page:Material] &rarr;
 
-		<h1>[name]</h1>
+		<h1>点精灵材质([name])</h1>
 
-		<p class="desc">A material for a use with a [page:Sprite].</p>
+		<p class="desc">一种使用[page:Sprite]的材质。</p>
 
-		<h2>Examples</h2>
+		<h2>例子(Examples)</h2>
 		<div>
 			[example:webgl_sprites WebGL / sprites]<br />
 			[example:misc_ubiquity_test misc / ubiquity / test]<br />
@@ -39,41 +39,40 @@ scene.add( sprite );
 
 		<h3>[name]( [param:Object parameters] )</h3>
 		<p>
-			[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance.
-			Any property of the material (including any property inherited from [page:Material]) can be passed in here.<br /><br />
+			[page:Object parameters] - (可选)用于定义材质外观的对象,具有一个或多个属性。
+			材质的任何属性都可以从此处传入(包括从[page:Material] 和 [page:ShaderMaterial]继承的任何属性)。<br /><br />
 
-			The exception is the property [page:Hexadecimal color], which can be passed in as a hexadecimal
-			string and is *0xffffff* (white) by default. [page:Color.set]( color ) is called internally.
-
-			SpriteMaterials are not clipped by using [page:Material.clippingPlanes].
+			属性[page:Hexadecimal color]例外,其可以作为十六进制字符串传递,默认情况下为 *0xffffff*(白色),
+			内部调用[page:Color.set](color)。
+			SpriteMaterials不会被[page:Material.clippingPlanes]裁剪。
 		</p>
 
 
-		<h2>Properties</h2>
-		<p>See the base [page:Material] class for common properties.</p>
+		<h2>属性(Properties)</h2>
+		<p>常用属性请参见基类[page:Material]。</p>
 
 		<h3>[property:Color color]</h3>
-		<p>[page:Color] of the material, by default set to white (0xffffff). The [page:.map] is mutiplied by the color.</p>
+		<p>材质的颜色([page:Color]),默认值为白色 (0xffffff)。 [page:.map]会和 color 相乘。</p>
 
 		<h3>[property:boolean fog]</h3>
-		<p>Whether or not this material affected by the scene's fog. Default is false</p>
+		<p>材质是否受场景雾的影响。默认值为*false*。</p>
 
 		<h3>[property:Boolean lights]</h3>
-		<p>Whether the material is affected by lights. Default is *false*.</p>
+		<p>材质是否受到光照的影响。默认值为 *false*。</p>
 
 		<h3>[property:Texture map]</h3>
-		<p>The texture map. Default is null.</p>
+		<p>颜色贴图。默认为null。</p>
 
 		<h3>[property:Radians rotation]</h3>
-		<p>The rotation of the sprite in radians. Default is 0.</p>
+		<p> sprite的转动,以弧度为单位。默认值为0。</p>
 
 		<h3>[property:Boolean sizeAttenuation]</h3>
-		<p>Whether the size of the sprite is attenuated by the camera depth. (Perspective camera only.) Default is *true*.</p>
+		<p> 精灵的大小是否会被相机深度衰减。(仅限透视摄像头。)默认为*true*。</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Material] class for common methods.</p>
+		<h2>方法(Methods)</h2>
+		<p>常用方法请参见基类[page:Material]。</p>
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 59 - 86
docs/api/zh/math/Box2.html

@@ -11,208 +11,181 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			Represents a box in 2D space.
+			表示二维空间中的一个包围盒。
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 
 		<h3>[name]( [param:Vector2 min], [param:Vector2 max] )</h3>
 		<p>
-		[page:Vector2 min] - (optional) [page:Vector2] representing the lower (x, y) boundary of the box.
-		Default is ( + Infinity, + Infinity ).<br>
+		[page:Vector2 min] - (可选) [page:Vector2] 表示该盒子的下边界(x, y)。默认值为( + Infinity, + Infinity )。<br>
 
-		[page:Vector2 max] - (optional) [page:Vector2] representing the upper (x, y) boundary of the box.
-		Default is ( - Infinity, - Infinity ).<br /><br />
-
-		Creates a [name] bounded by min and max.
+		[page:Vector2 max] - (可选) [page:Vector2] 表示该盒子的上边界(x, y)。默认值为( - Infinity, - Infinity )。<br /><br />
+		创建一个介于最小和最大值之间的[name]。
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性(Properties)</h2>
 
 
 
 		<h3>[property:Vector2 min]</h3>
 		<p>
-			[page:Vector2] representing the lower (x, y) boundary of the box.<br />
-			Default is ( + Infinity, + Infinity ).
+			[page:Vector2] 表示该盒子的下边界(x, y)。<br />
+			默认值为( + Infinity, + Infinity )。
 		</p>
 
 		<h3>[property:Vector2 max]</h3>
 		<p>
-			[page:Vector2] representing the lower upper (x, y) boundary of the box.<br />
-			Default is ( - Infinity, - Infinity ).
+			[page:Vector2] 表示该盒子的上边界(x, y)。<br />
+			默认值为( - Infinity, - Infinity )。
 		</p>
 
 
 
-		<h2>Methods</h2>
+		<h2>方法(Methods)</h2>
 
 		<h3>[method:Vector2 clampPoint]( [param:Vector2 point], [param:Vector2 target] )</h3>
 		<p>
-		[page:Vector2 point] - [page:Vector2] to clamp. <br>
-		[page:Vector2 target] — the result will be copied into this Vector2.<br /><br />
-
-		[link:https://en.wikipedia.org/wiki/Clamping_(graphics) Clamps] the [page:Vector2 point] within the bounds of this box.<br />
+		[page:Vector2 point] - clamp 的位置 ([page:Vector2])  <br>
+		[page:Vector2 target] — 结果会被复制到该二维向量中。<br /><br />
+		在该盒子范围内夹紧([link:https://en.wikipedia.org/wiki/Clamping_(graphics) Clamps])[page:Vector2 point]。<br />
 		</p>
 
 		<h3>[method:Box2 clone]()</h3>
-		<p>Returns a new [page:Box2] with the same [page:.min min] and [page:.max max] as this one.</p>
+		<p>返回一个新的[page:Box2],其[page:.min min]和[page:.max max]与此盒子相同。</p>
 
 		<h3>[method:Boolean containsBox]( [param:Box2 box] )</h3>
 		<p>
-		[page:Box2 box] - [page:Box2 Box2] to test for inclusion.<br /><br />
-
-		Returns true if this box includes the entirety of [page:Box2 box]. If this and [page:Box2 box] are identical, <br>
-		this function also returns true.
+		[page:Box2 box] - 要检查是否被包含的盒子。<br /><br />
+        如果盒子包含整个被检查盒子,则返回true。如果两者重叠,<br>
+		也会返回true。
 		</p>
 
 		<h3>[method:Boolean containsPoint]( [param:Vector2 point] )</h3>
 		<p>
-		[page:Vector2 point] - [page:Vector2] to check for inclusion.<br /><br />
-
-		Returns true if the specified [page:Vector2 point] lies within or on the boundaries of this box.
+		[page:Vector2 point] - 要检查是否被包含的点[page:Vector2]。<br /><br />
+		如果指定的点([page:Vector2 point])位于盒子的边界内或边界上,则返回true。
 		</p>
 
 		<h3>[method:Box2 copy]( [param:Box2 box] )</h3>
 		<p>
-		Copies the [page:.min min] and [page:.max max] from [page:Box2 box] to this box.
+			将[page:Box2 box]的[page:.min min] 和 [page:.max max]复制到此盒子中。
 		</p>
 
 		<h3>[method:Float distanceToPoint]( [param:Vector2 point] )</h3>
 		<p>
-		[page:Vector2 point] - [page:Vector2] to measure distance to.<br /><br />
-
-		Returns the distance from any edge of this box to the specified point.
-		If the [page:Vector2 point] lies inside of this box, the distance will be 0.
+		[page:Vector2 point] - 要测量距离的点([page:Vector2])。<br /><br />
+		返回这个盒子的任何边缘到指定点的距离。如果这个点([page:Vector2 point])位于这个盒子里,距离将是0。
 		</p>
 
 		<h3>[method:Boolean equals]( [param:Box2 box] )</h3>
 		<p>
-		[page:Box2 box] - Box to compare with this one.<br /><br />
-
-		Returns true if this box and [page:Box2 box] share the same lower and upper bounds.
+		[page:Box2 box] - 要对比的盒子<br /><br />
+		如果这个盒子和被对比盒子具有相同的上下边界,则返回true。
 		</p>
 
 		<h3>[method:Box2 expandByPoint]( [param:Vector2 point] )</h3>
 		<p>
-		[page:Vector2 point] - [page:Vector2] that should be included in the box.<br /><br />
-
-		Expands the boundaries of this box to include [page:Vector2 point].
+		[page:Vector2 point] - 应该被盒子包含的点。<br /><br />
+		扩展盒子的边界来包含该点。
 		</p>
 
 		<h3>[method:Box2 expandByScalar]( [param:float scalar] )</h3>
 		<p>
-		[page:float scalar] - Distance to expand the box by.<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] - 盒子扩展的距离。<br /><br />
+		在每个维度上扩展参数scalar所指定的距离,如果为负数,则盒子空间将收缩。
 		</p>
 
 		<h3>[method:Box2 expandByVector]( [param:Vector2 vector] )</h3>
 		<p>
-		[page:Vector2 vector] - [page:Vector2] to expand the box by.<br /><br />
-
-		Expands this box equilaterally by [page:Vector2 vector]. The width of this box will be
-		expanded by the x component of [page:Vector2 vector] in both directions. The height of
-		this box will be expanded by the y component of [page:Vector2 vector] in both directions.
+		[page:Vector2 vector] - 按照该向量扩展。<br /><br />
+		在每个维度中按vector的数值进行扩展。宽度在两个方向上的扩展将由vector的x分量确定,
+			高度在两个方向上的扩展则由y分量确定。
 		</p>
 
 		<h3>[method:Vector2 getCenter]( [param:Vector2 target] )</h3>
 		<p>
-		[page:Vector2 target] — the result will be copied into this Vector2.<br /><br />
-
-		Returns the center point of the box as a [page:Vector2].
+		[page:Vector2 target] — 结果将被复制到此二维向量中。<br /><br />
+		以二维向量形式返回盒子的中心点。
 		</p>
 
 		<h3>[method:Vector2 getParameter]( [param:Vector2 point], [param:Vector2 target] ) </h3>
 		<p>
-		[page:Vector2 point] - [page:Vector2].<br/>
-		[page:Vector2 target] — the result will be copied into this Vector2.<br /><br />
+		[page:Vector2 point] - 二维向量([page:Vector2]).<br/>
+		[page:Vector2 target] — 结果将被复制到此二维向量中。<br /><br />
 
-		Returns a point as a proportion of this box's width and height.
+			返回一个点作为此盒子的宽度和高度的比例。
 		</p>
 
 		<h3>[method:Vector2 getSize]( [param:Vector2 target] )</h3>
 		<p>
-		[page:Vector2 target] — the result will be copied into this Vector2.<br /><br />
+		[page:Vector2 target] — 结果将被复制到此二维向量中。<br /><br />
 
-		Returns the width and height of this box.
+			返回此盒子的宽度和高度。
 		</p>
 
 		<h3>[method:Box2 intersect]( [param:Box2 box] )</h3>
 		<p>
-		[page:Box2 box] - Box to intersect with.<br /><br />
-
-		Returns the intersection of this and [page:Box2 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:Box2 box] - 要相交的盒子。<br /><br />
+		返回两者的相交后的盒子,并将相交后的盒子的上限设置为两者的上限中的较小者,将下限设置为两者的下限中的较大者。
 		</p>
 
 		<h3>[method:Boolean intersectsBox]( [param:Box2 box] )</h3>
 		<p>
-		[page:Box2 box] - Box to check for intersection against.<br /><br />
-
-		Determines whether or not this box intersects [page:Box2 box].
+		[page:Box2 box] - 用来检查相交的盒子。<br /><br />
+		确定该盒子是否和其相交。
 		</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:Box2 makeEmpty]()</h3>
-		<p>Makes this box empty.</p>
+		<p>使此盒子为空。</p>
 
 
 		<h3>[method:Box2 set]( [param:Vector2 min], [param:Vector2 max] )</h3>
 		<p>
-			[page:Vector2 min] - (required ) [page:Vector2] representing the lower (x, y) boundary of the box. <br>
-			[page:Vector2 max]  - (required) [page:Vector2] representing the upper (x, y) boundary of the box. <br /><br />
+			[page:Vector2 min] - (必须 ) 表示该盒子的下边界(x, y)。 <br>
+			[page:Vector2 max]  - (必须) 表示该盒子的上边界(x, y)。 <br /><br />
 
-			Sets the lower and upper (x, y) boundaries of this box.
+			设置这个盒子的上下(x, y)的界限。
 		</p>
 
 		<h3>[method:Box2 setFromCenterAndSize]( [param:Vector2 center], [param:Vector2 size] )</h3>
 		<p>
-		[page:Vector2 center] - Desired center position of the box ([page:Vector2]). <br>
-		[page:Vector2 size] - Desired x and y dimensions of the box ([page:Vector2]).<br /><br />
+		[page:Vector2 center] - 盒子所要设置的中心位置。 ([page:Vector2]). <br>
+		[page:Vector2 size] - 盒子所要设置的x和y尺寸 ([page:Vector2]).<br /><br />
 
-		Centers this box on [page:Vector2 center] and sets this box's width and height to the values specified
-		in [page:Vector2 size].
+		使盒子的中心点位于[page:Vector2 center],并设置宽高为[page:Vector2 size]中指定的值。
 		</p>
 
 		<h3>[method:Box2 setFromPoints]( [param:Array points] )</h3>
 		<p>
-		[page:Array points] - Array of [page:Vector2 Vector2s] that the resulting box will contain.<br /><br />
-
-		Sets the upper and lower bounds of this box to include all of the points in [page:Array points].
+		[page:Array points] - 点的集合,由这些点确定的空间将被盒子包围。<br /><br />
+		设置这个盒子的上下边界,来包含所有设置在[page:Array points]参数中的点。
 		</p>
 
 		<h3>[method:Box2 translate]( [param:Vector2 offset] )</h3>
 		<p>
-		[page:Vector2 offset] - Direction and distance of offset.<br /><br />
-
-		Adds [page:Vector2 offset] to both the upper and lower bounds of this box, effectively moving this box
-		[page:Vector2 offset] units in 2D space.
+		[page:Vector2 offset] - 偏移方向和距离。<br /><br />
+		添加 [page:Vector2 offset] 到这个盒子的上下边界,实际上在2D空间移动这个盒子[page:Vector2 offset]个单位。
 		</p>
 
 		<h3>[method:Box2 union]( [param:Box2 box] )</h3>
 		<p>
-		[page:Box2 box] - Box that will be unioned with this box.<br /><br />
-
-		Unions this box with [page:Box2 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:Box2 box] - 将要与该盒子联合的盒子<br /><br />
+		在[page:Box2 box]参数的上边界和该盒子的上边界之间取较大者,而对两者的下边界取较小者,这样获得一个新的较大的联合盒子。
 		</p>
 
 
 
-		<h2>Source</h2>
+		<h2>源码(Source)</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 11 - 11
docs/api/zh/math/interpolants/CubicInterpolant.html

@@ -10,13 +10,13 @@
 	<body>
 		[page:Interpolant] &rarr;
 
-		<h1>[name]</h1>
+		<h1>三次插值([name])</h1>
 
 		<p class="desc">
 
 		</p>
 
-		<h2>Example</h2>
+		<h2>例子(Example</h2>
 
 		<code>
 var interpolant = new THREE.[name](
@@ -30,19 +30,19 @@ interpolant.evaluate( 0.5 );
 		</code>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( parameterPositions, sampleValues, sampleSize, resultBuffer )</h3>
 		<p>
-		parameterPositions -- array of positions<br />
-		sampleValues -- array of samples<br />
-		sampleSize -- number of samples<br />
-		resultBuffer -- buffer to store the interpolation results.<br /><br />
+		parameterPositions -- 位置数组<br />
+		sampleValues -- 样本数组<br />
+		sampleSize -- 样本数量<br />
+		resultBuffer -- 用于存储插值结果的缓冲区。<br /><br />
 
 
 		</p>
 
-		<h2>Properties</h2>
+		<h2>属性(Properties)</h2>
 
 
 
@@ -71,14 +71,14 @@ interpolant.evaluate( 0.5 );
 
 		</p>
 
-		<h2>Methods</h2>
+		<h2>方法(Methods)</h2>
 
 		<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>

+ 9 - 9
docs/api/zh/math/interpolants/DiscreteInterpolant.html

@@ -10,13 +10,13 @@
 	<body>
 		[page:Interpolant] &rarr;
 
-		<h1>[name]</h1>
+		<h1>离散插值([name])</h1>
 
 		<p class="desc">
 
 		</p>
 
-		<h2>Example</h2>
+		<h2>例子(Example)</h2>
 
 		<code>
 var interpolant = new THREE.[name](
@@ -34,15 +34,15 @@ interpolant.evaluate( 0.5 );
 
 		<h3>[name]( parameterPositions, sampleValues, sampleSize, resultBuffer )</h3>
 		<p>
-		parameterPositions -- array of positions<br />
-		sampleValues -- array of samples<br />
-		sampleSize -- number of samples<br />
-		resultBuffer -- buffer to store the interpolation results.<br /><br />
+		parameterPositions -- 位置数组<br />
+		sampleValues -- 样本数组<br />
+		sampleSize -- 样本数量<br />
+		resultBuffer -- 用于存储插值结果的缓冲区。<br /><br />
 
 
 		</p>
 
-		<h2>Properties</h2>
+		<h2>属性(Properties)</h2>
 
 
 
@@ -75,10 +75,10 @@ interpolant.evaluate( 0.5 );
 
 		<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>

+ 11 - 11
docs/api/zh/math/interpolants/LinearInterpolant.html

@@ -10,13 +10,13 @@
 	<body>
 		[page:Interpolant] &rarr;
 
-		<h1>[name]</h1>
+		<h1>线性插值([name])</h1>
 
 		<p class="desc">
 
 		</p>
 
-		<h2>Example</h2>
+		<h2>例子(Example)</h2>
 
 		<code>
 var interpolant = new THREE.[name](
@@ -30,19 +30,19 @@ interpolant.evaluate( 0.5 );
 		</code>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( parameterPositions, sampleValues, sampleSize, resultBuffer )</h3>
 		<p>
-		parameterPositions -- array of positions<br />
-		sampleValues -- array of samples<br />
-		sampleSize -- number of samples<br />
-		resultBuffer -- buffer to store the interpolation results.<br /><br />
+		parameterPositions -- 位置数组<br />
+		sampleValues -- 样本数组<br />
+		sampleSize -- 样本数量<br />
+		resultBuffer -- 用于存储插值结果的缓冲区。<br /><br />
 
 
 		</p>
 
-		<h2>Properties</h2>
+		<h2>属性(Properties)</h2>
 
 
 
@@ -71,14 +71,14 @@ interpolant.evaluate( 0.5 );
 
 		</p>
 
-		<h2>Methods</h2>
+		<h2>方法(Methods)</h2>
 
 		<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>

+ 11 - 11
docs/api/zh/math/interpolants/QuaternionLinearInterpolant.html

@@ -10,13 +10,13 @@
 	<body>
 		[page:Interpolant] &rarr;
 
-		<h1>[name]</h1>
+		<h1>四元数线性插值([name])</h1>
 
 		<p class="desc">
 
 		</p>
 
-		<h2>Example</h2>
+		<h2>例子(Example)</h2>
 
 		<code>
 var interpolant = new THREE.[name](
@@ -30,19 +30,19 @@ interpolant.evaluate( 0.5 );
 		</code>
 
 
-		<h2>Constructor</h2>
+		<h2>构造函数(Constructor)</h2>
 
 		<h3>[name]( parameterPositions, sampleValues, sampleSize, resultBuffer )</h3>
 		<p>
-		parameterPositions -- array of positions<br />
-		sampleValues -- array of samples<br />
-		sampleSize -- number of samples<br />
-		resultBuffer -- buffer to store the interpolation results.<br /><br />
+		parameterPositions -- 位置数组<br />
+		sampleValues -- 样本数组<br />
+		sampleSize -- 样本数量<br />
+		resultBuffer -- 用于存储插值结果的缓冲区。<br /><br />
 
 
 		</p>
 
-		<h2>Properties</h2>
+		<h2>属性(Properties)</h2>
 
 
 
@@ -71,14 +71,14 @@ interpolant.evaluate( 0.5 );
 
 		</p>
 
-		<h2>Methods</h2>
+		<h2>方法(Methods)</h2>
 
 		<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>

+ 14 - 15
docs/api/zh/objects/Bone.html

@@ -10,14 +10,14 @@
 	<body>
 		[page:Object3D] &rarr;
 
-		<h1>[name]</h1>
+		<h1>骨骼([name]</h1>
 
 		<p class="desc">
-		A bone which is part of a [page:Skeleton]. The skeleton in turn is used by the [page:SkinnedMesh].
-		Bones are almost identical to a blank [page:Object3D].
+			骨骼是[page:Skeleton](骨架)的一部分。骨架是由[page:SkinnedMesh](蒙皮网格)依次来使用的。
+			骨骼几乎和空白[page:Object3D]相同。
 		</p>
 
-		<h3>Example</h3>
+		<h3>示例</h3>
 
 		<code>
 		var root = new THREE.Bone();
@@ -27,32 +27,31 @@
 		child.position.y = 5;
 		</code>
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 		<h3>[name]( )</h3>
 		<p>
-		Creates a new [name].
+		创建一个新的[name].
 		</p>
 
-		<h2>Properties</h2>
-		<p>See the base [page:Object3D] class for common properties.</p>
+		<h2>属性</h2>
+		<p>请参阅其基类[page:Object3D]来查看共有属性。</p>
 
 		<h3>[property:Boolean isBone]</h3>
 		<p>
-			Used to check whether this or derived classes are bones. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
+			用于检查这个类或其派生类是否为骨骼。默认值为*true*。<br /><br />
+			你不应当对这个属性进行改变,因为它在内部使用,以用于优化。
 		</p>
 
 
 		<h3>[property:String type]</h3>
-		<p>Set to 'Bone', this can be used to find all Bones in a scene.</p>
+		<p>设置为“Bone”,这可以用于在一个场景中找到所有的Bones。</p>
 
 
-		<h2>Methods</h2>
-		<p>See the base [page:Object3D] class for common methods.</p>
+		<h2>方法</h2>
+		<p>请参阅其基类[page:Object3D]来查看其共有方法。</p>
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 10 - 11
docs/api/zh/objects/Group.html

@@ -10,15 +10,14 @@
 	<body>
 		[page:Object3D] &rarr;
 
-		<h1>[name]</h1>
+		<h1>组([name]</h1>
 
 		<p class="desc">
-			This is almost identical to an [page:Object3D Object3D]. Its purpose is to make working
-			with groups of objects syntactically clearer.
+			它几乎和[page:Object3D Object3D]是相同的,其目的是使得组中对象在语法上的结构更加清晰。
 		</p>
 
 
-		<h2>Example</h2>
+		<h2>示例</h2>
 
 		<code>
 		var geometry = new THREE.BoxBufferGeometry( 1, 1, 1 );
@@ -40,20 +39,20 @@
 		</code>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 		<h3>[name]( )</h3>
 
-		<h2>Properties</h2>
-		<p>See the base [page:Object3D] class for common properties.</p>
+		<h2>属性</h2>
+		<p>请参阅其基类[page:Object3D]来查看公共属性。</p>
 
 		<h3>[property:String type]</h3>
-		<p>A string 'Group'. This should not be changed.</p>
+		<p>一个字符串:“Group”。这个属性不应当被改变。</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Object3D] class for common methods.</p>
+		<h2>方法</h2>
+		<p>请参阅其基类[page:Object3D]来查看其公共方法。</p>
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 24 - 26
docs/api/zh/objects/Skeleton.html

@@ -9,14 +9,13 @@
 	</head>
 	<body>
 
-		<h1>[name]</h1>
+		<h1>骨架([name]</h1>
 
 		<p class="desc">
-		Use an array of [page:Bone bones] to create a skeleton that can be used by a
-		[page:SkinnedMesh].
+			使用一个[page:Bone bones]数组来创建一个可以由[page:SkinnedMesh]使用的骨架。
 		</p>
 
-		<h2>Example</h2>
+		<h2>实例</h2>
 <code>
 // Create a simple "arm"
 
@@ -40,76 +39,75 @@ hand.position.y = 5;
 var armSkeleton = new THREE.Skeleton( bones );
 </code>
 		<p>
-			See the [page:SkinnedMesh] page for an example of usage with standard [page:BufferGeometry].
+			请查看[page:SkinnedMesh]页面,来查看其在标准的[page:BufferGeometry]中使用的示例。
  		</p>
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 
 		<h3>[name]( [param:Array bones], [param:Array boneInverses] )</h3>
 		<p>
-		[page:Array bones] - The array of [page:Bone bones]. Default is an empty array.<br/>
-		[page:Array boneInverses] - (optional) An array of [page:Matrix4 Matrix4s].<br /><br />
+		[page:Array bones] —— 包含有一组[page:Bone bone]的数组,默认值是一个空数组。<br/>
+		[page:Array boneInverses] —— (可选) 包含[page:Matrix4 Matrix4]的数组。<br /><br />
 
-		Creates a new [name].
+		创建一个新的[name].
 		</p>
 
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 		<h3>[property:Array bones]</h3>
 		<p>
-		The array of [page:bone bones]. Note this is a copy of the original array, not a reference,
-		so you can modify the original array without effecting this one.
+		包含有一组[page:Bone bone]的数组。请注意,这是一份原始数组的拷贝,不是引用,所以你可以在不对当前数组造成影响的情况下,修改原始数组。
 		</p>
 
 		<h3>[property:Array boneInverses]</h3>
 		<p>
-		An array of [page:Matrix4 Matrix4s] that represent the inverse of the [page:Matrix4 matrixWorld]
-		of the individual bones.
+		包含有一组[page:Matrix4 Matrix4],表示每个独立骨骼[page:Matrix4 matrixWorld]矩阵的逆矩阵。
 		</p>
 
 		<h3>[property:Float32Array boneMatrices]</h3>
 		<p>
-		The array buffer holding the bone data when using a vertex texture.
+		当使用顶点纹理时,数组缓冲区保存着骨骼数据。
 		</p>
 
 		<h3>[property:DataTexture boneTexture]</h3>
 		<p>
-		The [page:DataTexture] holding the bone data when using a vertex texture.
+		当使用顶点纹理时,[page:DataTexture]保存着骨骼数据。
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 		<h3>[method:Skeleton clone]()</h3>
 		<p>
-		Returns a clone of this Skeleton object.
+			返回一个当前Skeleton对象的克隆。
 		</p>
 
 
 		<h3>[method:null calculateInverses]()</h3>
-		<p>Generates the [page:.boneInverses boneInverses] array if not provided in the constructor.</p>
+		<p>如果没有在构造器中提供,生成[page:.boneInverses boneInverses]数组。
+		</p>
 
 
 		<h3>[method:null pose]()</h3>
-		<p>Returns the skeleton to the base pose.</p>
+		<p>返回骨架的基础姿势。</p>
 
 
 		<h3>[method:null update]()</h3>
 		<p>
-		Updates the [page:Float32Array boneMatrices] and [page:DataTexture boneTexture] after changing the bones.
-		This is called automatically by the [page:WebGLRenderer] if the skeleton is used with a [page:SkinnedMesh].
+			在改变骨骼后,更新[page:Float32Array boneMatrices] 和 [page:DataTexture boneTexture]的值。
+			如果骨架被用于[page:SkinnedMesh],则它将会被[page:WebGLRenderer]自动调用。
 		</p>
 
 		<h3>[method:Bone getBoneByName]( [param:String name] )</h3>
 		<p>
-		name -- String to match to the Bone's .name property. <br /><br />
-
-		Searches through the skeleton's bone array and returns the first with a matching name.<br />
+			
+		name -- 匹配Bone对象中.name属性的字符串。<br /><br />
+		在骨架中的骨骼数组中遍览,并返回第一个能够和name匹配上的骨骼对象。<br />
 		</p>
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 30 - 36
docs/api/zh/objects/SkinnedMesh.html

@@ -10,11 +10,11 @@
 	<body>
 		[page:Object3D] &rarr; [page:Mesh] &rarr;
 
-		<h1>[name]</h1>
+		<h1>蒙皮网格([name]</h1>
 
 		<p class="desc">
-			A mesh that has a [page:Skeleton] with [page:Bone bones] that can then be used to animate the vertices of the geometry.
-			The material must support skinning and have skinning enabled - see [page:MeshStandardMaterial.skinning].
+			具有[page:Skeleton](骨架)和[page:Bone bones](骨骼)的网格,可用于给几何体上的顶点添加动画。
+			其材质必须支持蒙皮,并且已经启用了蒙皮 —— 请阅读[page:MeshStandardMaterial.skinning]。
 		</p>
 
 		<iframe id="scene" src="scenes/bones-browser.html"></iframe>
@@ -35,7 +35,7 @@
 
 		</script>
 
-		<h2>Example</h2>
+		<h2>示例</h2>
 
 		<code>
 		var geometry = new THREE.CylinderGeometry( 5, 5, 5, 5, 15, 5, 30 );
@@ -68,94 +68,88 @@
 		armSkeleton.bones[ 1 ].rotation.x = 0.2;
 		</code>
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 		<h3>[name]( [param:Geometry 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:Material material] - (optional) an instance of [page:Material]. Default is a new [page:MeshBasicMaterial].
+    [page:Geometry geometry] —— 一个[page:Geometry]或者[page:BufferGeometry](推荐)的实例。
+	[page:Geometry.skinIndices skinIndices] 和 [page:Geometry.skinWeights skinWeights] 在几何体上应当被设置为true。<br />
+    [page:Material material] —— (可选)一个[page:Material]的实例,默认值是一个新的[page:MeshBasicMaterial]。
 		</p>
 
 
 
 
 
-		<h2>Properties</h2>
-		<p>See the base [page:Mesh] class for common properties.</p>
+		<h2>属性</h2>
+		<p>请参阅其基类[page:Mesh]来查看共有属性。</p>
 
 		<h3>[property:string bindMode]</h3>
 		<p>
-		Either "attached" or "detached". "attached" uses the [page:SkinnedMesh.matrixWorld]
-		property for the base transform	matrix of the bones. "detached" uses the
-		[page:SkinnedMesh.bindMatrix]. Default is "attached".
+			“attached”(附加)或者“detached”(分离)。“attached”使用[page:SkinnedMesh.matrixWorld]
+			属性作为对骨骼的基本变换矩阵,“detached”则使用[page:SkinnedMesh.bindMatrix]。
+			默认值是“attached”。
 		</p>
 
 		<h3>[property:Matrix4 bindMatrix]</h3>
 		<p>
-		The base matrix that is used for the bound bone transforms.
+		用于绑定的骨骼变换的基础矩阵。
 		</p>
 
 		<h3>[property:Matrix4 bindMatrixInverse]</h3>
 		<p>
-		The base matrix that is used for resetting the bound bone transforms.
+		用于重置绑定的骨骼变换的基础矩阵。
 		</p>
 
 		<h3>[property:Boolean isSkinnedMesh]</h3>
 		<p>
-			Used to check whether this or derived classes are skinned meshes. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
+			用于检查这个类或者其派生类是否为蒙皮网格,默认值为*true*。<br /><br />
+			你不应当对这个属性进行改变,因为它在使用,以用于优化。
 		</p>
 
 		<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]是由从构造函数中传入的[page:Geometry]中的[page:Geometry.bones bones]来创建的。
 		</p>
 
 
 
-		<h2>Methods</h2>
-		<p>See the base [page:Mesh] class for common methods.</p>
+		<h2>方法</h2>
+		<p>请参阅其基类[page:Mesh]来查看共有方法。</p>
 
 		<h3>[method:null bind]( [param:Skeleton skeleton], [param:Matrix4 bindMatrix] )</h3>
 		<p>
-		[page:Skeleton skeleton] - [page:Skeleton] created from a [page:Bone Bones] tree.<br/>
-		[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.
+		[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>
 		<p>
-		Returns a clone of this SkinnedMesh object and any descendants.
+		返回当前SkinnedMesh对象的一个克隆及其任何后代。
 		</p>
 
 		<h3>[method:null normalizeSkinWeights]()</h3>
 		<p>
-		Normalizes the [page:Geometry.skinWeights] vectors. Does not affect [page:BufferGeometry].
+		规范化[page:Geometry.skinWeights]矢量。不会对[page:BufferGeometry]产生影响。
 		</p>
 
 		<h3>[method:null pose]()</h3>
 		<p>
-		This method sets the skinned mesh in the rest pose (resets the pose).
+		这个方法设置了在“休息”状态下蒙皮网格的姿势(重置姿势)。
 		</p>
 
 		<h3>[method:null updateMatrixWorld]( [param:Boolean force] )</h3>
 		<p>
-		Updates the [page:Matrix4 MatrixWorld].
+		更新[page:Matrix4 MatrixWorld]矩阵。
 		</p>
 
 		<h3>[method:null initBones]()</h3>
 		<p>
-		Creates an array of hierarchical [page:Bone bones] objects from the internal geometry.
+		从内部几何体中创建一个分层[page:Bone bones]对象的数组。
 		</p>
 
-		<h2>Source</h2>
-
+		<h2>源代码</h2>
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>
 </html>

+ 21 - 25
docs/api/zh/objects/Sprite.html

@@ -10,16 +10,14 @@
 	<body>
 		[page:Object3D] &rarr;
 
-		<h1>[name]</h1>
+		<h1>精灵([name]</h1>
 
 		<p class="desc">
-			A sprite is a plane that always faces towards the camera, generally with a
-			partially transparent texture applied.<br /><br />
-
-			Sprites do not cast shadows, setting <code>castShadow = true</code> will have no effect.
+			精灵是一个总是面朝着摄像机的平面,通常含有使用一个半透明的纹理。<br /><br />
+			精灵不会投射任何阴影,即使设置了<code>castShadow = true</code>也将不会有任何效果。
 		</p>
 
-		<h2>Example</h2>
+		<h2>示例</h2>
 
 		<code>
 var spriteMap = new THREE.TextureLoader().load( "sprite.png" );
@@ -29,61 +27,59 @@ scene.add( sprite );
 		</code>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 		<h3>[name]( [param:Material material] )</h3>
 		<p>
-    [page:Material material] - (optional) an instance of [page:SpriteMaterial]. Default is a white [page:SpriteMaterial].<br /><br />
+    	[page:Material material] - (可选值)是[page:SpriteMaterial]的一个实例。 默认值是一个白色的[page:SpriteMaterial]。<br /><br />
 
-		Creates a new [name].
+		创建一个新的[name]。
 		</p>
 
 
-		<h2>Properties</h2>
-		<p>See the base [page:Object3D] class for common properties.</p>
+		<h2>属性</h2>
+		<p>请参阅其基类[page:Object3D]来查看共有属性。</p>
 
 		<h3>[property:Boolean isSprite]</h3>
 		<p>
-			Used to check whether this or derived classes are sprites. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
+			用于检查这个类或者其派生类是否为精灵,默认值为*true*。<br /><br />
+			你不应当对这个属性进行改变,因为它在使用,以用于优化。
 		</p>
 
 
 		<h3>[property:SpriteMaterial material]</h3>
 		<p>
-		An instance of [page:SpriteMaterial], defining the object's appearance.
-		Default is a white [page:SpriteMaterial].
+		[page:SpriteMaterial]的一个实例,定义了这个对象的外观。默认值是一个白色的[page:SpriteMaterial]。
 		</p>
 
 
 		<h3>[property:Vector2 center]</h3>
 		<p>
-		The sprite's anchor point, and the point around which the sprite rotates. A value of (0.5, 0.5) corresponds to the midpoint of the sprite.
-		A value of (0, 0) corresponds to the lower left corner of the sprite. The default is (0.5, 0.5).
+			这个精灵的锚点,也就是精灵旋转时,围绕着旋转的点。当值为(0.5,0.5)时,对应着这个精灵的中心点;当值为(0,0)时,对应着这个精灵左下角的点。<br>
+			其默认值是(0.5,0.5)。
 		</p>
 
-		<h2>Methods</h2>
-		<p>See the base [page:Object3D] class for common methods.</p>
+		<h2>方法</h2>
+		<p>请参阅其基类[page:Object3D]来查看共有方法。</p>
 
 		<h3>[method:Sprite clone]()</h3>
 		<p>
-		Returns a clone of this Sprite object and any descendants.
+			返回当前Sprite对象的一个克隆及其任何后代。
 		</p>
 
 		<h3>[method:Sprite copy]( [param:Sprite sprite] )</h3>
 		<p>
-		Copies the properties of the passed sprite to this one.
+			将前一个Sprite对象的属性复制给当前的这个对象。
 		</p>
 
 		<h3>[method:null raycast]( [param:Raycaster raycaster], [param:Array intersects] )</h3>
 		<p>
-		Get intersections between a casted ray and this sprite.
-		[page:Raycaster.intersectObject] will call this method.
+			在投射的光线和精灵之前产生交互。
+			[page:Raycaster.intersectObject]将会调用这个方法。
 		</p>
 
 
-		<h2>Source</h2>
+		<h2>源代码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 38 - 47
docs/api/zh/renderers/WebGLRenderTarget.html

@@ -11,118 +11,109 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			A [link:https://msdn.microsoft.com/en-us/library/ff604997.aspx render target] is a buffer
-			where the video card draws pixels for a scene that	is being rendered in the background.
-			It is used in different effects, such as applying postprocessing to a rendered image
-			before displaying it on the screen.
+			[link:https://msdn.microsoft.com/en-us/library/ff604997.aspx render target]是一个缓冲,就是在这个缓冲中,视频卡为正在后台渲染的场景绘制像素。
+			它用于不同的效果,例如用于在一个图像显示在屏幕上之前先做一些处理。
+
 		</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 
 		<h3>[name]([param:Number width], [param:Number height], [param:Object options])</h3>
 
 		<p>
-		[page:Float width] - The width of the renderTarget. <br />
-		[page:Float height] - The height of the renderTarget.<br />
-		options - (optional object that holds texture parameters for an auto-generated target
-		texture and depthBuffer/stencilBuffer booleans.
-
-		For an explanation of the texture parameters see [page:Texture Texture]. The following are
-		valid options:<br /><br />
-
-		[page:Constant wrapS] - default is [page:Textures ClampToEdgeWrapping]. <br />
-		[page:Constant wrapT] - default is [page:Textures ClampToEdgeWrapping]. <br />
-		[page:Constant magFilter] - default is [page:Textures LinearFilter]. <br />
-		[page:Constant minFilter] - default is [page:Textures LinearFilter]. <br />
-		[page:Constant format] - default is [page:Textures RGBAFormat]. <br />
-		[page:Constant type] - default is [page:Textures UnsignedByteType]. <br />
-		[page:Number anisotropy] - default is *1*. See [page:Texture.anistropy]<br />
-		[page:Constant encoding] - default is [page:Textures LinearEncoding]. <br />
-		[page:Boolean depthBuffer] - default is *true*. Set this to false if you don't need it. <br />
-		[page:Boolean stencilBuffer] - default is *true*. Set this to false if you don't need it.<br /><br />
-
-		Creates a new [name]
+		[page:Float width] -renderTarget的宽度 <br />
+		[page:Float height] - renderTarget的高度 <br />
+		options - (可选)一个保存着自动生成的目标纹理的纹理参数以及表示是否使用深度缓存/模板缓存的布尔值的对象
+		以下是一些合法选项:<br /><br />
+
+		[page:Constant wrapS] - 默认是[page:Textures ClampToEdgeWrapping]. <br />
+		[page:Constant wrapT] - 默认是[page:Textures ClampToEdgeWrapping]. <br />
+		[page:Constant magFilter] - 默认是[page:Textures LinearFilter]. <br />
+		[page:Constant minFilter] - 默认是[page:Textures LinearFilter]. <br />
+		[page:Constant format] - 默认是[page:Textures RGBAFormat]. <br />
+		[page:Constant type] - 默认是[page:Textures UnsignedByteType]. <br />
+		[page:Number anisotropy] - 默认是*1*. 参见[page:Texture.anistropy]<br />
+		[page:Constant encoding] - 默认是[page:Textures LinearEncoding]. <br />
+		[page:Boolean depthBuffer] - 默认是*true*. 如果不需要就设为false <br />
+		[page:Boolean stencilBuffer] - 默认是*true*. 如果不需要就设为false <br /><br />
+
+		创建一个新[name]
 		</p>
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 		<h3>[property:number width]</h3>
 		<p>
-		The width of the render target.
+		渲染目标宽度
 		</p>
 
 		<h3>[property:number height]</h3>
 		<p>
-		The height of the render target.
+		渲染目标高度
 		</p>
 
 		<h3>[property:Vector4 scissor]</h3>
 		<p>
-		A rectangular area inside the render target's viewport. Fragments that are outside the area will be discarded.
+        渲染目标视口内的一个矩形区域,区域之外的片元将会被丢弃
 		</p>
 
 		<h3>[property:boolean scissorTest]</h3>
 		<p>
-		Indicates whether the scissor test is active or not.
+        表明是否激活了剪裁测试
 		</p>
 
 		<h3>[property:Vector4 viewport]</h3>
 		<p>
-		The viewport of this render target.
+		渲染目标的视口
 		</p>
 
 		<h3>[property:Texture texture]</h3>
 		<p>
-		This texture instance holds the rendered pixels. Use it as input for further processing.
+        纹理实例保存这渲染的像素,用作进一步处理的输入值
 		</p>
 
 		<h3>[property:boolean depthBuffer]</h3>
 		<p>
-		Renders to the depth buffer. Default is true.
+		渲染到深度缓冲区。默认true.
 		</p>
 
 		<h3>[property:boolean stencilBuffer]</h3>
 		<p>
-		Renders to the stencil buffer. Default is true.
+        渲染到模板缓冲区。默认true.
 		</p>
 
 		<h3>[property:DepthTexture depthTexture]</h3>
 		<p>
-		If set, the scene depth will be rendered to this texture. Default is null.
+        如果设置,那么场景的深度将会被渲染到慈纹理上。默认是null.
 		</p>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 		<h3>[method:null setSize]( [param:Number width], [param:Number height] )</h3>
 		<p>
-		Sets the size of the render target.
+		设置渲染目标的大小
 		</p>
 
 		<h3>[method:WebGLRenderTarget clone]()</h3>
 		<p>
-		Creates a copy of this render target.
+		创建一个渲染目标副本
 		</p>
 
 		<h3>[method:WebGLRenderTarget copy]( [param:WebGLRenderTarget source] )</h3>
 		<p>
-		Adopts the settings of the given render target.
+        采用传入的渲染目标的设置
 		</p>
 
 		<h3>[method:null dispose]()</h3>
 		<p>
-		Dispatches a dispose event.
+		发出一个处理事件
 		</p>
+		<h3>[page:EventDispatcher EventDispatcher]方法可从此类中获得</h3>
 
-
-
-
-
-		<h3>[page:EventDispatcher EventDispatcher] methods are available on this class.</h3>
-
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 27 - 31
docs/api/zh/renderers/WebGLRenderTargetCube.html

@@ -13,58 +13,54 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			Used by the [page:CubeCamera] as its [page:WebGLRenderTarget].
+		被[page:CubeCamera]作为它的[page:WebGLRenderTarget]使用
 		</p>
 
-		<h2>Examples</h2>
+		<h2>例子</h2>
 
-		<p>See [page:CubeCamera] for examples.</p>
+		<p>有关示例请参阅[page:CubeCamera]</p>
 
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 
 		<h3>[name]([param:Number width], [param:Number height], [param:Object options])</h3>
 		<p>
-		[page:Float width] - The width of the renderTarget. <br />
-		[page:Float height] - The height of the renderTarget. <br />
-		options - (optional) object that holds texture parameters for an auto-generated target
-		texture and depthBuffer/stencilBuffer booleans.
-
-		For an explanation of the texture parameters see [page:Texture Texture]. The following are
-		valid options:<br /><br />
-
-		[page:Constant wrapS] - default is [page:Textures ClampToEdgeWrapping]. <br />
-		[page:Constant wrapT] - default is [page:Textures ClampToEdgeWrapping]. <br />
-		[page:Constant magFilter] - default is [page:Textures .LinearFilter]. <br />
-		[page:Constant minFilter] - default is [page:Textures LinearFilter]. <br />
-		[page:Constant format] - default is [page:Textures RGBAFormat]. <br />
-		[page:Constant type] - default is [page:Textures UnsignedByteType]. <br />
-		[page:Number anisotropy] - default is *1*. See [page:Texture.anistropy]<br />
-		[page:Constant encoding] - default is [page:Textures LinearEncoding]. <br />
-		[page:Boolean depthBuffer] - default is *true*. Set this to false if you don't need it. <br />
-		[page:Boolean stencilBuffer] - default is *true*. Set this to false if you don't need it.<br /><br />
-
-		Creates a new [name]
+		[page:Float width] - renderTarget的宽度 <br />
+		[page:Float height] - renderTarget的高度 <br />
+		options - (可选)一个保存着自动生成的目标纹理的纹理参数以及表示是否使用深度缓存/模板缓存的布尔值的对象。
+		有关纹理参数的说明,请参阅[page:Texture Texture]. 以下是合理选项:<br /><br />
+
+		[page:Constant wrapS] - 默认是[page:Textures ClampToEdgeWrapping]. <br />
+		[page:Constant wrapT] - 默认是[page:Textures ClampToEdgeWrapping]. <br />
+		[page:Constant magFilter] - 默认是[page:Textures .LinearFilter]. <br />
+		[page:Constant minFilter] - 默认是[page:Textures LinearFilter]. <br />
+		[page:Constant format] - 默认是[page:Textures RGBAFormat]. <br />
+		[page:Constant type] - 默认是[page:Textures UnsignedByteType]. <br />
+		[page:Number anisotropy] - 默认是 *1*. 参见[page:Texture.anistropy]<br />
+		[page:Constant encoding] - 默认是[page:Textures LinearEncoding]. <br />
+		[page:Boolean depthBuffer] - 默认是*true*.如果不需要就设为false <br />
+		[page:Boolean stencilBuffer] - 默认是*true*.如果不需要就设为false<br /><br />
+
+		创建一个新[name]
 		</p>
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 		<h3>[property:integer activeCubeFace]</h3>
 		<p>
-		The activeCubeFace property corresponds to a cube side (PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5) and is
-		used and set internally by the [page:CubeCamera].
+		activeCubeFace属性对应立方体的面(PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5) 并由[page:CubeCamera]内部使用和设置
 		</p>
 
-		<h3>See [page:WebGLRenderTarget] for inherited properties</h3>
+		<h3>继承属性,请参阅[page:WebGLRenderTarget]</h3>
 
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
-		<h3>See [page:WebGLRenderTarget] for inherited methods</h3>
+		<h3>继承方法,请参阅[page:WebGLRenderTarget]</h3>
 
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 153 - 186
docs/api/zh/renderers/WebGLRenderer.html

@@ -11,140 +11,118 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			The WebGL renderer displays your beautifully crafted scenes using
-			[link:https://en.wikipedia.org/wiki/WebGL WebGL].
+            WebGL Render 用[link:https://en.wikipedia.org/wiki/WebGL WebGL]渲染出你精心制作的场景。
 		</p>
 
-		<h2>Constructor</h2>
+		<h2>构造器</h2>
 
 		<h3>[name]( [param:Object parameters] )</h3>
 		<p>
-		[page:Object parameters] - (optional) object with properties defining the renderer's behaviour.
-			The constructor also accepts no parameters at all. In all cases, it will assume sane defaults
-			when parameters are missing. The following are valid parameters:<br /><br />
+        [page:Object parameters] - (可选) 该对象的属性定义了渲染器的行为。也可以完全不传参数。在所有情况下,当缺少参数时,它将采用合理的默认值。
+            以下是合法参数:<br /><br />
 
-		[page:DOMElement canvas] - A [link:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas canvas]
-		where the renderer draws its output.
-		This corresponds to the [page:WebGLRenderer.domElement domElement] property below.
-		If not passed in here, a new canvas element will be created.<br />
+		[page:DOMElement canvas] - 一个供渲染器绘制其输出的[link:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas canvas]
+		它和下面的[page:WebGLRenderer.domElement domElement]属性对应。
+		如果没有传这个参数,会创建一个新canvas<br />
 
 
-		[page:WebGLRenderingContext context] - This can be used to attach the renderer to an existing
-	  [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext RenderingContext].
-		Default is null.<br />
+		[page:WebGLRenderingContext context] - 可用于将渲染器附加到已有的渲染环境([link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext RenderingContext])中。默认值是null<br />
 
-		[page:String precision] - Shader precision. Can be *"highp"*, *"mediump"* or *"lowp"*.
-		Defaults to *"highp"* if supported by the device. See the note in "Things to Avoid"
-		[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/WebGL_best_practices here].<br />
+		[page:String precision] - 着色器精度. 可以是 *"highp"*, *"mediump"* 或者 *"lowp"*.
+	    如果设备支持,默认为*"highp"* . 点击[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/WebGL_best_practices here] 查看"应该避免的事"<br />
 
-		[page:Boolean alpha] - whether the canvas contains an alpha (transparency) buffer or not.
-	  Default is *false*.<br />
+		[page:Boolean alpha] - canvas是否包含alpha (透明度)。默认为 *false*<br />
 
-		[page:Boolean premultipliedAlpha] - whether the renderer will assume that colors have
+		[page:Boolean premultipliedAlpha] - renderer是否假设颜色有
 		[link:https://en.wikipedia.org/wiki/Glossary_of_computer_graphics#Premultiplied_alpha premultiplied alpha].
-		Default is *true*.<br />
+		默认为*true* <br />
 
-		[page:Boolean antialias] - whether to perform antialiasing. Default is *false*.<br />
+		[page:Boolean antialias] - 是否执行抗锯齿。默认为*false*.<br />
 
-		[page:Boolean stencil] - whether the drawing buffer has a
-		[link:https://en.wikipedia.org/wiki/Stencil_buffer stencil buffer] of at least 8 bits.
-		Default is *true*.<br />
+		[page:Boolean stencil] - 绘图缓存是否有一个至少8位的模板缓存([link:https://en.wikipedia.org/wiki/Stencil_buffer stencil buffer])。默认为*true*<br />
 
-		[page:Boolean preserveDrawingBuffer] - whether to preserve the buffers until manually cleared
-		or overwritten. Default is *false*.<br />
+		[page:Boolean preserveDrawingBuffer] -是否保留缓直到手动清除或被覆盖。 默认*false*.<br />
 
-		[page:String powerPreference] - Provides a hint to the user agent indicating what configuration
-		of GPU is suitable for this WebGL context. Can be *"high-performance"*, *"low-power"* or *"default"*. Default is *"default"*.
-		See the [link:https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2 WebGL spec] for more information.<br />
+		[page:String powerPreference] - 提示用户代理怎样的配置更适用于当前WebGL环境。 可能是*"high-performance"*, *"low-power"* 或 *"default"*。默认是*"default"*.
+		详见[link:https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2 WebGL spec]<br />
 
-		[page:Boolean depth] - whether the drawing buffer has a
-		[link:https://en.wikipedia.org/wiki/Z-buffering depth buffer] of at least 16 bits.
-		Default is *true*.<br />
+		[page:Boolean depth] - 绘图缓存是否有一个至少6位的深度缓存([link:https://en.wikipedia.org/wiki/Z-buffering depth buffer] )。
+		默认是*true*.<br />
 
-		[page:Boolean logarithmicDepthBuffer] -  whether to use a logarithmic depth buffer. It may
-		be neccesary to use this if dealing with huge differences in scale in a single scene.
-		Default is *false*. See the [example:webgl_camera_logarithmicdepthbuffer camera / logarithmicdepthbuffer] example.
+		[page:Boolean logarithmicDepthBuffer] -  是否使用对数深度缓存。如果要在单个场景中处理巨大的比例差异,就有必要使用。
+		默认是*false*。 示例:[example:webgl_camera_logarithmicdepthbuffer camera / logarithmicdepthbuffer]
 		</p>
 
-		<h2>Properties</h2>
+		<h2>属性</h2>
 
 		<h3>[property:Boolean autoClear]</h3>
-		<p>Defines whether the renderer should automatically clear its output before rendering a frame.</p>
+		<p>定义渲染器是否在渲染每一帧之前自动清除其输出。</p>
 
 
 		<h3>[property:Boolean autoClearColor]</h3>
 		<p>
-			If [page:.autoClear autoClear] is true, defines whether the renderer should clear the color buffer.
-			Default is *true*.
+			如果[page:.autoClear autoClear]为true, 定义renderer是否清除颜色缓存。
+			默认是*true*
 		</p>
 
 
 		<h3>[property:Boolean autoClearDepth]</h3>
 		<p>
-			If [page:.autoClear autoClear] is true, defines whether the renderer should clear the depth buffer.
-			Default is *true*.
+			如果[page:.autoClear autoClear]是true, 定义renderer是否清除深度缓存。
+			默认是*true*
 		</p>
 
 
 		<h3>[property:Boolean autoClearStencil]</h3>
 		<p>
-			If [page:.autoClear autoClear] is true, defines whether the renderer should clear the stencil buffer.
-			Default is *true*.
+			如果[page:.autoClear autoClear]是true, 定义renderer是否清除模板缓存.
+			默认是*true*
 		</p>
 
 		<h3>[property:Object capabilities]</h3>
 		<p>
-		An object containing details about the capabilities of the current [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext RenderingContext].<br />
-
-		- [page:Boolean floatFragmentTextures]: whether the context supports the [link:https://developer.mozilla.org/en-US/docs/Web/API/OES_texture_float OES_texture_float] extension.
-			According to [link:https://webglstats.com/ WebGLStats], as of February 2016 over 95% of WebGL enabled devices support this.<br />
-		- [page:Boolean floatVertexTextures]: *true* if [page:Boolean floatFragmentTextures] and [page:Boolean vertexTextures] are both true.<br />
-		- [page:Method getMaxAnisotropy](): Returns the maximum available anisotropy.<br />
-		- [page:Method getMaxPrecision](): Returns the maximum available precision for vertex and fragment shaders. <br />
-		- [page:Boolean logarithmicDepthBuffer]: *true* if the [page:parameter logarithmicDepthBuffer] was set to true in the constructor and
-		the context supports the [link:https://developer.mozilla.org/en-US/docs/Web/API/EXT_frag_depth EXT_frag_depth] extension.
-			According to [link:https://webglstats.com/ WebGLStats], as of February 2016 around 66% of WebGL enabled devices support this.<br />
-		- [page:Integer maxAttributes]: The value of *gl.MAX_VERTEX_ATTRIBS*.<br />
-		- [page:Integer maxCubemapSize]: The value of *gl.MAX_CUBE_MAP_TEXTURE_SIZE*.
-		Maximum height * width of cube map textures that a shader can use.<br />
-		- [page:Integer maxFragmentUniforms]: The value of *gl.MAX_FRAGMENT_UNIFORM_VECTORS*.
-		  The number of uniforms that can be used by a fragment shader.<br />
-		- [page:Integer maxTextureSize]: The value of *gl.MAX_TEXTURE_SIZE*.
-		Maximum height * width of a texture that a shader use.<br />
-		- [page:Integer maxTextures]: The value of *gl.MAX_TEXTURE_IMAGE_UNITS*.
-		  The maximum number of textures that can be used by a shader.<br />
-		- [page:Integer maxVaryings]: The value of *gl.MAX_VARYING_VECTORS*.
-		  The number of varying vectors that can used by shaders.<br />
-		- [page:Integer maxVertexTextures]: The value of *gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS*.
-		   The number of textures that can be used in a vertex shader.<br />
-		- [page:Integer maxVertexUniforms]: The value of *gl.MAX_VERTEX_UNIFORM_VECTORS*.
-		   The maximum number of uniforms that can be used in a vertex shader.<br />
-		- [page:String precision]: The shader precision currently being used by the renderer.<br />
-		- [page:Boolean vertexTextures]: *true* if [property:Integer maxVertexTextures] is greater than 0 (i.e. vertext textures can be used).<br />
+            一个包含当前渲染环境([link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext RenderingContext])的功能细节的对象。<br />
+
+		- [page:Boolean floatFragmentTextures]: 环境是否支持[link:https://developer.mozilla.org/en-US/docs/Web/API/OES_texture_float OES_texture_float]扩展。
+			根据[link:https://webglstats.com/ WebGLStats], 截至2016年2月,超过95%的支持WebGL的设备支持此功能<br />
+		- [page:Boolean floatVertexTextures]: 如果[page:Boolean floatFragmentTextures]和[page:Boolean vertexTextures]都是true, 则此值为*true* <br />
+		- [page:Method getMaxAnisotropy](): 返回最大可用各向异性。<br />
+		- [page:Method getMaxPrecision](): 返回顶点着色器和片元着色器的最大可用精度。 <br />
+		- [page:Boolean logarithmicDepthBuffer]: 如果[page:parameter logarithmicDepthBuffer]在构造器中被设为true且
+		环境支持[link:https://developer.mozilla.org/en-US/docs/Web/API/EXT_frag_depth EXT_frag_depth]扩展,则此值为*true*
+			根据[link:https://webglstats.com/ WebGLStats], 截至2016年2月, 约66%的支持WebGL的设备支持此功能<br />
+		- [page:Integer maxAttributes]: *gl.MAX_VERTEX_ATTRIBS*的值<br />
+		- [page:Integer maxCubemapSize]: *gl.MAX_CUBE_MAP_TEXTURE_SIZE* 的值,着色器可使用的立方体贴图纹理的最大宽度*高度<br />
+		- [page:Integer maxFragmentUniforms]: *gl.MAX_FRAGMENT_UNIFORM_VECTORS*的值,片元着色器可使用的全局变量(uniforms)数量<br />
+		- [page:Integer maxTextureSize]: *gl.MAX_TEXTURE_SIZE*的值,着色器可使用纹理的最大宽度*高度<br />
+		- [page:Integer maxTextures]: *gl.MAX_TEXTURE_IMAGE_UNITS的值,着色器可使用的纹理数量<br />
+		- [page:Integer maxVaryings]: *gl.MAX_VARYING_VECTORS*的值,着色器可使用矢量的数量<br />
+		- [page:Integer maxVertexTextures]: *gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS*的值,顶点着色器可使用的纹理数量。<br />
+		- [page:Integer maxVertexUniforms]: *gl.MAX_VERTEX_UNIFORM_VECTORS*的值,顶点着色器可使用的全局变量(uniforms)数量<br />
+		- [page:String precision]: 渲染器当前使用的着色器的精度<br />
+		- [page:Boolean vertexTextures]: 如果[property:Integer maxVertexTextures]大于0,此值为*true* (即可以使用顶点纹理)<br />
 		</p>
 
 		<h3>[property:Array clippingPlanes]</h3>
 		<p>
-		User-defined clipping planes specified as THREE.Plane objects in world space.
-			These planes apply globally. Points in space whose dot product with the plane is negative are cut away.
-		 Default is [].
+            用户自定义的剪裁平面,在世界空间中被指定为THREE.Plane对象。
+            这些平面全局使用。空间中与该平面点积为负的点将被切掉。
+            默认值是[]
 		</p>
 
 		<h3>[property:WebGLRenderingContext context]</h3>
 		<p>
-		The renderer obtains a [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext RenderingContext] context
-		  from its [page:WebGLRenderer.domElement domElement] by default, using
-			[link:https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext HTMLCanvasElement.getContext]().<br /><br />
+            渲染器默认使用[link:https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext HTMLCanvasElement.getContext]()从其
+            [page:WebGLRenderer.domElement domElement]获取渲染环境([link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext RenderingContext])<br /><br />
+
+		    你可以手动创建创建它,但它必须与[page:WebGLRenderer.domElement domElement]对应,才能呈现到屏幕上。
 
-		You can create this manually, however it must correspond to the
-		[page:WebGLRenderer.domElement domElement] in order to render to the screen.
 		</p>
 
 		<h3>[property:DOMElement domElement]</h3>
 		<p>
-		A [link:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas canvas] where the renderer draws its output.<br />
-			This is automatically created by the renderer in the constructor (if not provided already);
-			you just need to add it to your page like so:<br />
+		一个[link:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas canvas],渲染器在其上绘制输出。<br />
+		渲染器的构造函数会自动创建(如果没有传入canvas参数);你需要做的仅仅是像下面这样将它加页面里去<br />
 		<code>
 			document.body.appendChild( renderer.domElement );
 		</code>
@@ -152,23 +130,22 @@
 
 		<h3>[property:Object extensions]</h3>
 		<p>
-		A wrapper for the [page:WebGLRenderer.extensions.get .extensions.get] method, used to check whether
-		various WebGL extensions are supported.
+		[page:WebGLRenderer.extensions.get .extensions.get]方法的包装, 用于检查是否支持各种WebGL扩展
 		</p>
 
 		<h3>[property:Float gammaFactor]</h3>
-		<p>Default is *2*. </p>
+		<p>默认是 *2*. </p>
 
 
 		<h3>[property:Boolean gammaInput]</h3>
-		<p>If set, then it expects that all textures and colors are premultiplied gamma. Default is *false*.</p>
+		<p>如果设置,那么所有的纹理和颜色都会预乘gamma。 默认值是*false*.</p>
 
 
 		<h3>[property:Boolean gammaOutput]</h3>
-		<p>If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is *false*.</p>
+		<p>如果设置, 那么它期望所有纹理和颜色需要乘以gamma输出。 默认值*false*.</p>
 
 		<h3>[property:Object info]</h3>
-		<p>An object with a series of statistical information about the graphics board memory and the rendering process. Useful for debugging or just for the sake of curiosity. The object contains the following fields:</p>
+		<p>一个对象,包含有关图形板内存和渲染过程的一系列统计信息。这些信息可用于调试或仅仅满足下好奇心。改对象包含以下字段:</p>
 		<p>
 		<ul>
 			<li>memory:
@@ -189,7 +166,7 @@
 			</li>
 		</ul>
 		</p>
-		<p>By default these data are reset at each render calls, but when using the composer or mirrors it can be preferred to reset them with a custom pattern :
+		<p>默认情况下,每次调用渲染时这些数据都会重置。 但当时用一个或多个镜像时,最好使用自定义模式重置它们:
 		<code>
 		renderer.info.autoReset = false;
 		renderer.info.reset();
@@ -197,138 +174,134 @@
 		</p>
 
 		<h3>[property:Boolean localClippingEnabled]</h3>
-		<p>Defines whether the renderer respects object-level clipping planes. Default is *false*.</p>
+		<p>定义渲染器是否考虑对象级剪切平面。 默认为*false*.</p>
 
 		<h3>[property:Integer maxMorphTargets]</h3>
 		<p>
-		Default is 8. The maximum number of MorphTargets allowed in a shader.
-			Keep in mind that the standard materials only allow 8 MorphTargets.
+        默认是8。 一个着色器中允许的最大MorphTargets数。
+        切记标准材质只允许8个MorphTargets。
 		</p>
 
 		<h3>[property:Integer maxMorphNormals]</h3>
 		<p>
-		Default is 4. The maximum number of MorphNormals allowed in a shader.
-			Keep in mind that the standard materials only allow 4 MorphNormals.
+		默认是4。 色器中允许的最大MorphNormal数。
+		切记标准材质只允许4个MorphNormal。
 		</p>
 
 		<h3>[property:Boolean physicallyCorrectLights]</h3>
 		<p>
-		Whether to use physically correct lighting mode. Default is *false*.
-		See the [example:webgl_lights_physical lights / physical] example.
+		是否使用物理上正确的光照模式。 默认是*false*。
+		示例:[example:webgl_lights_physical lights / physical]
 		</p>
 
 		<h3>[property:Object properties]</h3>
 		<p>
-		Used internally by the renderer to keep track of various sub object properties.
+		渲染器内部使用,以跟踪各种子对象属性。
 		</p>
 
 		<h3>[property:WebGLRenderLists renderLists]</h3>
 		<p>
-		Used internally to handle ordering of scene object rendering.
+        在内部用于处理场景渲染对象的排序。
 		</p>
 
 		<h3>[property:WebGLShadowMap shadowMap]</h3>
 		<p>
-		This contains the reference to the shadow map, if used.
+        如果使用,它包含阴影贴图的引用。
 		</p>
 
 		<h3>[property:Boolean shadowMap.enabled]</h3>
-		<p>If set, use shadow maps in the scene. Default is *false*.</p>
+		<p>如果设置, 请在场景中使用阴影贴图。 默认是 *false*</p>
 
 		<h3>[property:Boolean shadowMap.autoUpdate]</h3>
-		<p>Enables automatic updates to the shadows in the scene. Default is *true*.</p>
-		<p>If you do not require dynamic lighting / shadows, you may set this to *false* when the renderer is instantiated.</p>
+		<p>启用场景中的阴影自动更新。默认是*true*</p>
+		<p>如果不需要动态光照/阴影, 则可以在实例化渲染器时将之设为false</p>
 
 		<h3>[property:Boolean shadowMap.needsUpdate]</h3>
-		<p>When set to *true*, shadow maps in the scene will be updated in the next *render* call. Default is *false*. </p>
-		<p>If you have disabled automatic updates to shadow maps (*shadowMap.autoUpdate = false*), you will need to set this to *true* and then make a render call to update the shadows in your scene.</p>
+		<p>当被设为*true*, 场景中的阴影贴图会在下次*render*调用时刷新。默认是*false* </p>
+		<p>如果你已经禁用了阴影贴图的自动更新(*shadowMap.autoUpdate = false*), 那么想要在下一次渲染时更新阴影的话就需要将此值设为*true*</p>
 
 		<h3>[property:Integer shadowMap.type]</h3>
-		<p>Defines shadow map type (unfiltered, percentage close filtering, percentage close filtering with bilinear filtering in shader)</p>
-		<p>Options are THREE.BasicShadowMap, THREE.PCFShadowMap (default), THREE.PCFSoftShadowMap. See [page:Renderer Renderer constants] for details.</p>
+		<p>定义阴影贴图类型 (未过滤, 关闭部分过滤, 关闭部分双线性过滤)</p>
+		<p>可选值有THREE.BasicShadowMap, THREE.PCFShadowMap (默认), THREE.PCFSoftShadowMap。 详见[page:Renderer Renderer constants]</p>
 
 		<h3>[property:Boolean sortObjects]</h3>
 		<p>
-		Defines whether the renderer should sort objects. Default is *true*.<br /><br />
+        定义渲染器是否应对对象进行排序。默认是*true*.<br /><br />
 
-		Note: Sorting is used to attempt to properly render objects that have some degree of transparency.
-		By definition, sorting objects may not work in all cases.  Depending on the needs of application,
-		it may be neccessary to turn off sorting and use other methods to deal with transparency
-		rendering e.g. manually determining each object's rendering order.
+        说明: 排序用于尝试正确渲染出具有一定透明度的对象。根据定义,排序可能不总是有用。根据应用的需求,可能需要关闭排序并使其他方法来处理透明度的渲染,例如,
+        手动确定每个对象的显然顺序。
 		</p>
 
 		<h3>[property:Object state]</h3>
 		<p>
-		Contains functions for setting various properties of the [page:WebGLRenderer.context] state.
+        包含设置[page:WebGLRenderer.context]状态的各种属性的函数。
 		</p>
 
 		<h3>[property:Constant toneMapping]</h3>
 		<p>
-		Default is [page:Renderer LinearToneMapping]. See the [page:Renderer Renderer constants] for other choices.
+		默认是[page:Renderer LinearToneMapping]。查看[page:Renderer Renderer constants]以获取其它备选项
 		</p>
 
 		<h3>[property:Number toneMappingExposure]</h3>
 		<p>
-		Exposure level of tone mapping. Default is *1*.
+		色调映射的曝光级别。默认是*1*
 		</p>
 
 		<h3>[property:Number toneMappingWhitePoint]</h3>
 		<p>
-		Tone mapping white point. Default is *1*.
+		色调映射的白点。默认是*1*
 		</p>
 
-		<h2>Methods</h2>
+		<h2>方法</h2>
 
 		<h3>[method:Integer allocTextureUnit]</h3>
 		<p>
-		Attempt to allocate a texture unit for use by a shader. Will warn if trying to allocate
-		more texture units than the GPU supports. This is mainly used internally.
-		See [page:WebGLRenderer.capabilities capabilities.maxTextures].
+		尝试分配纹理单元以供着色器使用。如果尝试分配超过GPU支持量的纹理单元,则会报警告。主要供内部使用。
+		请参阅[page:WebGLRenderer.capabilities capabilities.maxTextures]。
 		</p>
 
 		<h3>[method:null clear]( [param:Boolean color], [param:Boolean depth], [param:Boolean stencil] )</h3>
 		<p>
-		Tells the renderer to clear its color, depth or stencil drawing buffer(s).
-			This method initializes the color buffer to the current clear color value.<br />
-		Arguments default to *true*.
+		告诉渲染器清除颜色、深度或模板缓存.
+		此方法将颜色缓存初始化为当前颜色。参数们默认都是*true*
 		</p>
 
 		<h3>[method:null clearColor]( )</h3>
-		<p>Clear the color buffer. Equivalent to calling [page:WebGLRenderer.clear .clear]( true, false, false ).</p>
+		<p>清除颜色缓存。 相当于调用[page:WebGLRenderer.clear .clear]( true, false, false )</p>
 
 		<h3>[method:null clearDepth]( )</h3>
-		<p>Clear the depth buffer. Equivalent to calling [page:WebGLRenderer.clear .clear]( false, true, false ).</p>
+		<p>清除深度缓存。相当于调用[page:WebGLRenderer.clear .clear]( false, true, false )</p>
 
 		<h3>[method:null clearStencil]( )</h3>
-		<p>Clear the stencil buffers. Equivalent to calling [page:WebGLRenderer.clear .clear]( false, false, true ).</p>
+		<p>清除模板缓存。相当于调用[page:WebGLRenderer.clear .clear]( false, false, true )</p>
 
 		<h3>[method:null clearTarget]([param:WebGLRenderTarget renderTarget], [param:boolean color], [param:boolean depth], [param:boolean stencil])</h3>
 		<p>
-		renderTarget -- The [page:WebGLRenderTarget renderTarget] that needs to be cleared.<br />
-		color -- If set, then the color gets cleared. <br />
-		depth -- If set, then the depth gets cleared. <br />
-		stencil -- If set, then the stencil gets cleared.
+		renderTarget -- 需要被清除的[page:WebGLRenderTarget renderTarget]<br />
+		color -- 如果设置, 颜色会被清除 <br />
+		depth -- 如果设置, 深度缓存会被清除 <br />
+		stencil -- 如果设置, 模板缓存会被清除
 		</p>
 		<p>
-		This method clears a rendertarget. To do this, it activates the rendertarget.
+		该方法清楚了一个rendertarget。为此它会激活此endertarget
 		</p>
 
 		<h3>[method:null compile]( [param:Scene scene], [param:Camera camera] )</h3>
-		<p>Compiles all materials in the scene with the camera. This is useful to precompile shaders before the first rendering.</p>
+		<p>使用相机编译场景中的所有材质。这对于在首次渲染之前预编译着色器很有用。</p>
 
 		<h3>[method:null copyFramebufferToTexture]( [param:Vector2 position], [param:Texture texture], [param:Number level] )</h3>
-		<p>Copies pixels from the current WebGLFramebuffer into a 2D texture. Enables access to [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/copyTexImage2D WebGLRenderingContext.copyTexImage2D].</p>
+		<p>将当前WebGLFramebuffer中的像素复制到2D纹理中。可访问[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/copyTexImage2D WebGLRenderingContext.copyTexImage2D].</p>
 
 		<h3>[method:null copyTextureToTexture]( [param:Vector2 position], [param:Texture srcTexture], [param:Texture dstTexture], [param:Number level] )</h3>
-		<p>Copies all pixels of a texture to an existing texture starting from the given position. Enables access to [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texSubImage2D WebGLRenderingContext.texSubImage2D].</p>
+		<p>将纹理的所有像素复制到一个已有的从给定位置开始的纹理中。可访问[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texSubImage2D WebGLRenderingContext.texSubImage2D].</p>
 
 		<h3>[method:null dispose]( )</h3>
-		<p>Dispose of the current rendering context.</p>
+		<p>处理当前的渲染环境</p>
 
 		<h3>[method:Object extensions.get]( [param:String extensionName] )</h3>
 		<p>
-		Used to check whether various extensions are supported and returns an object with details of the extension if available.
-		This method can check for the following extensions:<br /><br />
+        用于检查是否支持各种扩展,并返回一个对象,其中包含扩展的详细信息。
+        该方法检查以下扩展:<br /><br />
 
 		- *WEBGL_depth_texture*<br />
 		- *EXT_texture_filter_anisotropic*<br />
@@ -339,131 +312,125 @@
 
 		<h3>[method:null forceContextLoss]( )</h3>
 		<p>
-		Simulate loss of the WebGL context. This requires support for the
-			[link:https://developer.mozilla.org/en-US/docs/Web/API/WEBGL_lose_context WEBGL_lose_context] extensions.
-		According to [link:https://webglstats.com/ WebGLStats], as of February 2016 90% of WebGL enabled devices support this.
+        模拟WebGL环境的丢失。需要支持
+			[link:https://developer.mozilla.org/en-US/docs/Web/API/WEBGL_lose_context WEBGL_lose_context]扩展才能用。
+		根据[link:https://webglstats.com/ WebGLStats], as of February 2016 90% of WebGL enabled devices support this.
 		</p>
 
 		<h3>[method:Float getClearAlpha]()</h3>
-		<p>Returns a [page:Float float] with the current clear alpha. Ranges from 0 to 1.</p>
+		<p>返回一个表示当前alpha值的[page:Float float],范围0到1</p>
 
 		<h3>[method:Color getClearColor]()</h3>
-		<p>Returns a [page:Color THREE.Color] instance with the current clear color.</p>
+		<p>返回一个表示当前颜色值的[page:Color THREE.Color]实例</p>
 
 		<h3>[method:WebGLRenderingContext getContext]()</h3>
-		<p>Return the current WebGL context.</p>
+		<p>返回当前WebGL环境</p>
 
 		<h3>[method:WebGLContextAttributes getContextAttributes]()</h3>
-		<p>Returns an object that describes the attributes set on the WebGL context when it was created.</p>
+		<p>返回一个对象,这个对象中存有在WebGL环境在创建的时候所设置的属性</p>
 
 		<h3>[method:RenderTarget getRenderTarget]()</h3>
-		<p>Returns the current RenderTarget, if any.</p>
+		<p>如果当前存在RenderTarget,返回当前它</p>
 
 		<h3>[method:RenderTarget getCurrentViewport]()</h3>
-		<p>Returns the current viewport.</p>
+		<p>返回当前视口</p>
 
 		<h3>[method:Object getDrawingBufferSize]()</h3>
-		<p>Returns an object containing the width and height of the renderer's drawing buffer, in pixels.</p>
+		<p>返回一个包含渲染器绘图缓存宽度和高度(单位像素)的对象。</p>
 
 		<h3>[method:number getPixelRatio]()</h3>
-		<p>Returns current device pixel ratio used.</p>
+		<p>返回当前使用设备像素比</p>
 
 		<h3>[method:Object getSize]()</h3>
-		<p>Returns an object containing the width and height of the renderer's output canvas, in pixels.</p>
+		<p>返回包含渲染器输出canvas的宽度和高度(单位像素)的对象。</p>
 
 		<h3>[method:null resetGLState]( )</h3>
-		<p>Reset the GL state to default. Called internally if the WebGL context is lost.</p>
+		<p>将GL状态重置为默认值。WebGL环境丢失时会内部调用</p>
 
 		<h3>[method:null readRenderTargetPixels]( [param:WebGLRenderTarget renderTarget], [param:Float x], [param:Float y], [param:Float width], [param:Float height], buffer )</h3>
-		<p>Reads the pixel data from the renderTarget into the buffer you pass in. This is a wrapper around [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/readPixels WebGLRenderingContext.readPixels]().<br />
-		See the [example:webgl_interactive_cubes_gpu interactive / cubes / gpu] example.
+		<p>将enderTarget中的像素数据读取到传入的缓冲区中。这是link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/readPixels WebGLRenderingContext.readPixels]()的包装器<br />
+		示例:[example:webgl_interactive_cubes_gpu interactive / cubes / gpu]
 		</p>
 
 		<h3>[method:null render]( [param:Scene scene], [param:Camera camera], [param:WebGLRenderTarget renderTarget], [param:Boolean forceClear] )</h3>
 		<p>
-			Render a [page:Scene scene] using a [page:Camera camera].<br />
+			用相机([page:Camera camera])渲染一个场景([page:Scene scene])<br />
 
-			The render is done to the [page:WebGLRenderTarget renderTarget] (if specified) or to the canvas as usual.<br />
+			渲染一般是在canvas上完成的,或者是[page:WebGLRenderTarget renderTarget](如果有指定)<br />
 
-			If [page:Boolean forceClear] is *true*, the depth, stencil and color buffers will be cleared
-			before rendering even if the renderer's [page:WebGLRenderer.autoClear autoClear] property is false.<br />
+			如果[page:Boolean forceClear]值是*true*,那么颜色、深度及模板缓存将会在渲染之前清除,即使渲染器的[page:WebGLRenderer.autoClear autoClear]属性值是false<br />
 
-			Even with forceClear set to true you can prevent certain buffers being cleared by setting
-			either the [page:WebGLRenderer.autoClearColor autoClearColor], [page:WebGLRenderer.autoClearStencil autoClearStencil] or [page:WebGLRenderer.autoClearDepth autoClearDepth] properties to false.
+			即便forceClear设为true, 也可以通过将[page:WebGLRenderer.autoClearColor autoClearColor]、[page:WebGLRenderer.autoClearStencil autoClearStencil]或[page:WebGLRenderer.autoClearDepth autoClearDepth]属性的值设为false来阻止对应缓存被清除。
 		</p>
 
 		<h3>[method:null renderBufferDirect]( [param:Camera camera], [param:Fog fog], [param:Geometry geometry], [param:Material material], [param:Object3D object], [param:Object group] )</h3>
-		<p>Render a buffer geometry group using the camera and with the specified material.</p>
+		<p>使用相机和指定材质渲染缓冲几何组。</p>
 
 		<h3>[method:null renderBufferImmediate]( [param:Object3D object], [param:shaderprogram program], [param:Material shading] )</h3>
-		<p>object - an instance of [page:Object3D]<br />
-		program - an instance of shaderProgram<br />
-		shading - an instance of Material<br /><br />
+		<p>object - 一个[page:Object3D]实例<br />
+		program - 一个shaderProgram实例<br />
+		shading - 一个Material实例<br /><br />
 
-		Render an immediate buffer. Gets called by renderImmediateObject.
+		渲染即使缓冲,由enderImmediateObject对象调用
 		</p>
 
 		<h3>[method:null setAnimationLoop]( [param:Function callback] )</h3>
-		<p>[page:Function callback] — The function will be called every available frame. If `null` is passed it will stop any already ongoing animation.</p>
-		<p>A build in function that can be used instead of [link:https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame requestAnimationFrame]. For WebVR projects this function must be used.</p>
+		<p>[page:Function callback] — 每个可用帧都会调用的函数。 如果传入‘null’,所有正在进行的动画都会停止。</p>
+		<p>可用来代替[link:https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame requestAnimationFrame]的内置函数. 对于WebVR想谬,必须使用此功能</p>
 
 		<h3>[method:null setClearAlpha]( [param:Float alpha] )</h3>
-		<p>Sets the clear alpha. Valid input is a float between *0.0* and *1.0*.</p>
+		<p>设置alpha。合法参数是一个*0.0*到 *1.0*之间的浮点数</p>
 
 		<h3>[method:null setClearColor]( [param:Color color], [param:Float alpha] )</h3>
-		<p>Sets the clear color and opacity.</p>
+		<p>设置颜色及其透明度</p>
 
 		<h3>[method:null setPixelRatio]( [param:number value] )</h3>
-		<p>Sets device pixel ratio. This is usually used for HiDPI device to prevent bluring output canvas.</p>
+		<p>设置设备像素比。通常用于避免HiDPI设备上绘图模糊</p>
 
 		<h3>[method:null setRenderTarget]( [param:WebGLRenderTarget renderTarget] )</h3>
 		<p>
-		renderTarget -- The [page:WebGLRenderTarget renderTarget] that needs to be activated (optional).<br /><br />
-		This method sets the active rendertarget. If the parameter is omitted the canvas is set as the active rendertarget.
+		renderTarget -- 需要被激活的[page:WebGLRenderTarget renderTarget](可选).<br /><br />
+		该方法设置活跃rendertarget. 参数缺省则将canvas设置成活跃rendertarget
 		</p>
 
 		<h3>[method:null setScissor]( [param:Integer x], [param:Integer y], [param:Integer width], [param:Integer height] )</h3>
 		<p>
-		Sets the scissor area from (x, y) to (x + width, y + height)
+        将剪裁区域设为(x, y)到(x + width, y + height)
+		Sets the scissor area from
 		</p>
 
 		<h3>[method:null setScissorTest]( [param:Boolean boolean] )</h3>
 		<p>
-		Enable or disable the scissor test. When this is enabled, only the pixels within the defined
-			scissor area will be affected by further renderer actions.
+        启用或禁用剪裁检测. 若启用,则只有在所定义的裁剪区域内的像素才会受之后的渲染器影响。
 		</p>
 
 		<h3>[method:null setSize]( [param:Integer width], [param:Integer height], [param:Boolean updateStyle] )</h3>
 		<p>
-		Resizes the output canvas to (width, height) with device pixel ratio taken into account,
-			and also sets the viewport to fit that size, starting in (0, 0).
-			Setting [page:Boolean updateStyle] to false prevents any style changes to the output canvas.
+		将输出canvas的大小调整为(width, height)并考虑设备像素比,且将视口从(0, 0)开始调整到适合大小
+		将[page:Boolean updateStyle]设置为false以阻止对canvas的样式做任何改变。
 		</p>
 
 		<h3>[method:null setTexture2D]( [param:Texture texture], [param:number slot] )</h3>
 		<p>
-		texture -- The [page:Texture texture] that needs to be set.<br />
-		slot -- The number indicating which slot should be used by the texture.<br /><br />
-
-		This method sets the correct texture to the correct slot for the WebGL shader.
-		The slot number can be found as a value of the uniform of the sampler.<br /><br />
+		texture -- 需被设置的[page:Texture texture]<br />
+		slot -- 纹理应该使用的插槽号<br /><br />
+        该方法为WebGL着色器将正确的纹理设置到正确的插槽中。插槽号可作为取样器的全局变量(uniform)<br /><br />
 
-		Note: This method replaces the older [method:null setTexture] method.
+		说明: 该方法取代了旧的[method:null setTexture]方法
 		</p>
 
 		<h3>[method:null setTextureCube]( [param:CubeTexture cubeTexture], [param:Number slot] )</h3>
 		<p>
-		texture -- The [page:CubeTexture cubeTexture] that needs to be set.<br />
-		slot -- The number indicating which slot should be used by the texture.<br /><br />
+		texture -- 需要被设置的[page:CubeTexture cubeTexture]<br />
+		slot -- 纹理应该使用的插槽号<br /><br />
 
-		This method sets the correct texture to the correct slot for the WebGL shader.
-		The slot number can be found as a value of the uniform of the sampler.
+        该方法为WebGL着色器将正确的纹理设置到正确的插槽中。插槽号可作为取样器的全局变量(uniform)
 		</p>
 
 		<h3>[method:null setViewport]( [param:Integer x], [param:Integer y], [param:Integer width], [param:Integer height] )</h3>
-		<p>Sets the viewport to render from (x, y) to (x + width, y + height).</p>
+		<p>将视口大小设置为(x, y)到 (x + width, y + height).</p>
 
-		<h2>Source</h2>
+		<h2>源码</h2>
 
 		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 	</body>

+ 1 - 0
docs/list.js

@@ -19,6 +19,7 @@ var list = {
 
 		"Next Steps": {
 			"How to update things": "manual/{lan}/introduction/How-to-update-things",
+			"How to create VR content": "manual/{lan}/introduction/How-to-create-VR-content",
 			"Matrix transformations": "manual/{lan}/introduction/Matrix-transformations",
 			"Animation system": "manual/{lan}/introduction/Animation-system"
 		},

+ 84 - 0
docs/manual/en/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>[name]</h1>
+	<br />
+
+	<p>
+		This guide provides a brief overview of the basic components of a web-based VR application
+		made with three.js.
+	</p>
+
+	<h2>Workflow</h2>
+
+	<p>
+		First, you have to include [link:https://github.com/mrdoob/three.js/blob/master/examples/js/vr/WebVR.js WebVR.js]
+		into your project.
+	</p>
+
+	<code>
+&lt;script src="/path/to/WebVR.js"&gt;&lt;/script&gt;
+	</code>
+
+	<p>
+		*WEBVR.createButton()* does two important things: It creates a button which indicates
+		VR compatibility. Besides, it initiates a VR session if the user activates the button. The only thing you have
+		to do is to add the following line of code to your app.
+	</p>
+
+	<code>
+document.body.appendChild( WEBVR.createButton( renderer ) );
+	</code>
+
+	<p>
+		Next, you have to tell your instance of *WebGLRenderer* to enable VR rendering.
+	</p>
+
+	<code>
+renderer.vr.enabled = true;
+	</code>
+
+	<p>
+		Finally, you have to adjust your animation loop since we can't use our well known
+		*window.requestAnimationFrame()* function. For VR projects we use [page:WebGLRenderer.setAnimationLoop setAnimationLoop]. 
+		The minimal code looks like this:
+	</p>
+
+	<code>
+renderer.setAnimationLoop( function () {
+
+	renderer.render( scene, camera );
+
+} );
+	</code>
+
+	<h2>Next Steps</h2>
+
+	<p>
+		Have a look at one of the official WebVR examples to see this workflow in action.<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>

+ 48 - 68
docs/manual/zh/introduction/Animation-system.html

@@ -10,100 +10,80 @@
 	<body>
 		<h1>[name]</h1>
 
-		<h2>Overview</h2>
+		<h2>Overview(概述)</h2>
 
 		<p class="desc">
-			Within the three.js animation system you can animate various properties of your models:
-			the bones of a [page:SkinnedMesh skinned and rigged model],
-			[page:Geometry.morphTargets morph targets], different material properties (colors,
-			opacity, booleans), visibility and transforms. The animated properties can be faded in,
-			faded out, crossfaded and warped. The weight and time scales of different simultaneous
-			animations on the same object as well as on different objects can be changed
-			independently. Various animations on the same and on different objects can be
-			synchronized.<br /><br />
-
-			To achieve all this in one homogeneous system, the three.js animation system
-			[link:https://github.com/mrdoob/three.js/issues/6881 has completely changed in 2015]
-			(be aware of outdated information!), and it has now an architecture similar to
-			Unity/Unreal Engine 4. This page gives a short overview of the main components of the
-			system and how they work together.
-
+			在three.js动画系统中,您可以为模型的各种属性设置动画:
+			[page:SkinnedMesh 蒙皮和装配模型]的骨头,[page:Geometry.morphTargets 变形目标],不同的材料属性(颜色,
+			不透明度,布尔运算),可见性和变换。 动画属性可以淡入,淡出,交叉淡化和扭曲。 不同时间的重量和时间尺度
+			可以更改同一对象以及不同对象上的动画独立。 可以在相同和不同对象上进行各种动画同步。
+			<br /><br />
+			在一个同构系统中实现所有这一切,即three.js动画系统
+			[link:https://github.com/mrdoob/three.js/issues/6881在2015年彻底改变]
+			(注意过时的信息!),它现在有一个与Unity /虚幻引擎4类似的架构.此页面简要概述了主要组件系统以及它们如何协同工作。
 		</p>
 
-		<h3>Animation Clips</h3>
+		<h3>Animation Clips(动画片段)</h3>
 
 		<p class="desc">
-
-			If you have successfully imported an animated 3D object (it doesn't matter if it has
-			bones or morph targets or both) — for example exporting it from Blender with the
-			[link:https://github.com/KhronosGroup/glTF-Blender-Exporter glTF Blender exporter] and
-			loading it into a three.js scene using [page:GLTFLoader] — one of the response fields
-			should be an array named "animations", containing the [page:AnimationClip AnimationClips]
-			for this model (see a list of possible loaders below).<br /><br />
-
-			Each *AnimationClip* usually holds the data for a certain activity of the object. If the
-			mesh is a character, for example, there may be one AnimationClip for a walkcycle, a second
-			for a jump, a third for sidestepping and so on.
-
+			如果您已成功导入动画3D对象(如果有,则无关紧要)
+			骨骼或变形目标或两者) - 例如使用[link:https://github.com/KhronosGroup/glTF-Blender-Exporter glTF Blender导出器]从Blender导出它
+			使用[page:GLTFLoader]将其加载到three.js场景中 - 其中一个响应字段应该是一个名为“animations”的数组,其中包含此模型的[page:AnimationClip AnimationClips](请参阅下面的可能加载器列表)。
+			<br /><br />
+			每个* AnimationClip *通常保存对象的某个活动的数据。 如果
+			mesh是一个字符,例如,可以有一个用于walkcycle的动画片段,第二个
+			跳跃,三分之一的回避等等。		
 		</p>
 
-		<h3>Keyframe Tracks</h3>
+		<h3>Keyframe Tracks(关键帧轨道)</h3>
 
 		<p class="desc">
-
-			Inside of such an *AnimationClip* the data for each animated property are stored in a
-			separate [page:KeyframeTrack]. Assumed a character object has a [page:Skeleton skeleton],
-			one keyframe track could store the data for the position changes of the lower arm bone
-			over time, a different track the data for the rotation changes of the same bone, a third
-			the track position, rotation or scaling of another bone, and so on. It should be clear,
-			that an AnimationClip can be composed of lots of such tracks.<br /><br />
-
-			Assumed the model has [page:Geometry.morphTargets morph targets] (for example one morph
-			target showing a friendly face and another showing an angry face), each track holds the
-			information as to how the [page:Mesh.morphTargetInfluences influence] of a certain morph
-			target changes during the performance of the clip.
-
+			在这样的* AnimationClip *里面,每个动画属性的数据都存储在一个
+			单独[page:KeyframeTrack]。 假设一个角色对象有一个[page:Skeleton skeleton],
+			一个关键帧轨道可以存储下臂骨骼位置变化的数据
+			随着时间的推移,不同的轨道数据为同一骨骼的旋转变化,三分之一
+			轨道位置,旋转或缩放另一个骨骼,等等。 应该很清楚,
+			AnimationClip可以由许多这样的轨道组成。
+			.<br /><br />
+			假设模型具有[page:Geometry.morphTargets 变形目标](例如一个变形
+			目标显示一个友好的面孔,另一个显示愤怒的脸),每个轨道持有
+			关于某个变形的[page:Mesh.morphTargetInfluences 影响]的信息
+			目标在剪辑执行期间发生变化。
 		</p>
 
-		<h3>Animation Mixer</h3>
+		<h3>Animation Mixer(动画混音器)</h3>
 
 		<p class="desc">
-
-			The stored data form only the basis for the animations - actual playback is controlled by
-			the [page:AnimationMixer]. You can imagine this not only as a player for animations, but
-			as a simulation of a hardware like a real mixer console, which can control several animations
-			simultaneously, blending and merging them.
-
+			存储的数据仅构成动画的基础 - 实际播放由控制
+			[page:AnimationMixer]。 你可以想象这不仅仅是动画的播放器,而是
+			作为硬件的模拟,如真正的调音台控制台,可以控制几个动画
+			同时,混合和合并它们。
 		</p>
 
 		<h3>Animation Actions</h3>
 
 		<p class="desc">
-
-			The *AnimationMixer* itself has only very few (general) properties and methods, because it
-			can be controlled by the [page:AnimationAction AnimationActions]. By configuring an
-			*AnimationAction* you can determine when a certain *AnimationClip* shall be played, paused
-			or stopped on one of the mixers, if and how often the clip has to be repeated, whether it
-			shall be performed with a fade or a time scaling, and some additional things, such crossfading
-			or synchronizing.
-
+			* AnimationMixer *本身只有很少(通用)属性和方法,因为它
+			可以通过[page:AnimationAction AnimationActions]来控制。 通过配置
+			* AnimationAction *您可以确定何时播放某个* AnimationClip *,暂停
+			或者停在其中一个混音器上,是否以及频率必须重复,无论是否
+			应使用淡入淡出或时间缩放以及一些其他内容(例如交叉渐变)来执行
+			或同步。
 		</p>
 
-		<h3>Animation Object Groups</h3>
+		<h3>Animation Object Groups(动画对象组)</h3>
 
 		<p class="desc">
-
-			If you want a group of objects to receive a shared animation state, you can use an
-			[page:AnimationObjectGroup].
+				如果您希望一组对象接收共享动画状态,则可以使用[page:AnimationObjectGroup].
 
 		</p>
 
-		<h3>Supported Formats and Loaders</h3>
+		<h3>Supported Formats and Loaders(支持的格式和加载器)</h3>
 
 		<p class="desc">
-			Note that not all model formats include animation (OBJ notably does not), and that only some
-			three.js loaders support [page:AnimationClip AnimationClip] sequences. Several that <i>do</i>
-			support this animation type:
+			请注意,并非所有模型格式都包含动画(尤其是OBJ,没有),而且只有一些
+			three.js加载器支持[page:AnimationClip AnimationClip]序列。 以下几个<i>确实</ i>
+			支持此动画类型:		
 		</p>
 
 			<ul>
@@ -118,8 +98,8 @@
 			</ul>
 
 		<p class="desc">
-			Note that 3ds max and Maya currently can't export multiple animations (meaning animations which are not
-			on the same timeline) directly to a single file.
+			请注意,3ds max和Maya当前无法导出多个动画(这意味着动画不是
+			在同一时间线上)直接到一个文件。
 		</p>
 
 		<h2>Example</h2>

+ 17 - 15
docs/manual/zh/introduction/Browser-support.html

@@ -8,36 +8,38 @@
 	<link type="text/css" rel="stylesheet" href="page.css" />
 </head>
 <body>
-	<h1>[name]</h1>
+	<h1>浏览器支持([name]</h1>
 
-	<h2>Overview</h2>
+	<h2>总览</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可以使用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]目录中的文件时。
 		</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.
+            注意:如果你并不需要支持较旧的浏览器,那就不推荐使用其他渲染器来进行渲染,因为与WebGLRenderer相比,其它渲染器渲染较慢,并且不支持WebGL的诸多特性。
 		</p>
 	</div>
 
-	<h2>Browsers that support WebGL</h2>
+	<h2>支持WebGL的渲染器</h2>
 	<div>
 		<p>
-			Google Chrome 9+, Firefox 4+, Opera 15+, Safari 5.1+, Internet Explorer 11 and Microsoft Edge. You can find which browsers support WebGL at [link:https://caniuse.com/#feat=webgl Can I use WebGL].
+			Google Chrome 9+、Firefox 4+、Opera 15+、Safari 5.1+、Internet Explorer 11 和 Microsoft Edge。你可以点击[link:https://caniuse.com/#feat=webgl Can I use WebGL]来查阅各个浏览器对WebGL的支持性。
 		</p>
 	</div>
 
-	<h2>JavaScript Language Features or Web APIs Used in three.js</h2>
+	<h2>
+        在Three.js中所使用到的JavaScript语言特性或者Web API
+        </h2>
 	<div>
 		<p>
-			Here are some features used in three.js. Some of them may require additional polyfills.
+            这里是一些在Three.js中使用到的特性,其中的一部分需要额外的“填充物”来解决兼容性问题。
 		</p>
 		<table>
 			<thead>
 				<tr>
-					<th>Feature</th>
-					<th>Use Scope</th>
-					<th>Modules</th>
+					<th>特性</th>
+					<th>适用范围</th>
+					<th>模块</th>
 				</tr>
 			</thead>
 			<tbody>
@@ -90,16 +92,16 @@
 		</table>
 	</div>
 
-	<h2>Polyfills</h2>
+	<h2>关于用于解决兼容性问题的“填充物”</h2>
 	<div>
-		<p>Just import polyfills based on your requirements. Taking IE9 as an example, you need to polyfill at least these features:</p>
+		<p>根据你的需求,引入相关的“填充物”即可。以IE9为例,你至少需要来使用“填充物”完成以下的功能。</p>
 		<ul>
 			<li>Typed Arrays</li>
 			<li>Blob</li>
 		</ul>
 	</div>
 
-	<h3>Suggested polyfills</h3>
+	<h3>建议的“填充物”</h3>
 	<div>
 		<ul>
 			<li>
@@ -120,4 +122,4 @@
 		</ul>
 	</div>
 </body>
-</html>
+</html>

+ 7 - 7
docs/manual/zh/introduction/Code-style-guide.html

@@ -8,15 +8,15 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</a></h1>
+		<h1>代码风格指南([name]</a></h1>
 
 		<p class="desc">
-			All code and examples in three.js are written using Mr.doob's Code Style.
-			Of course you are free to use whatever style you prefer for your own work, but
-			if you are adding code to the library or examples then you must follow this guide.<br /><br />
-
-			You can find details
-			<a href="https://github.com/mrdoob/three.js/wiki/Mr.doob%27s-Code-Style%E2%84%A2" target="_blank">here</a>.
+			在three.js中的所有文档和示例使用的是Mr.doob的代码风格。
+			当然,你也可以自由选择你更加喜欢的风格来为你工作,
+			但是,如果你希望添加代码或者添加示例到three.js的库中,你将必须遵守这个指南。
+			<br /><br />
+			有关代码风格的详细信息,请
+			<a href="https://github.com/mrdoob/three.js/wiki/Mr.doob%27s-Code-Style%E2%84%A2" target="_blank">点击此处</a>进行浏览。
 		</p>
 	</body>
 </html>

+ 24 - 23
docs/manual/zh/introduction/Creating-a-scene.html

@@ -8,13 +8,13 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1><br />
+		<h1>创建一个场景([name]</h1><br />
 
-		<p>这一部分的目标是对three.js来做一个简要的介绍。我们将建立一个包含有旋转立方体的场景来开始这一部分。为了防止你遇到麻烦时需要帮助,一个已经完成的例子在可以在页面下方找到。</p>
+		<p>这一部分将对three.js来做一个简要的介绍。在这一部分里,我们将以搭建一个包含有旋转立方体的场景。在页面下方有一个已经完成的例子,当你遇到麻烦,或者需要帮助的时候,可以看一看。</p>
 
 		<h2>开始之前</h2>
 		<p>
-		在你开始使用three.js之前,你需要一个地方来显示它;将下列HTML代码保存为你电脑上的一个HTML页面,同时将[link:https://threejs.org/build/three.js three.js]复制到js/目录下,然后在你的浏览器中打开这个页面
+			在你开始使用three.js之前,你需要一个地方来显示它。将下列HTML代码保存为你电脑上的一个HTML文件,同时将[link:https://threejs.org/build/three.js three.js]复制到该HTML文件所在的目录下的js/目录下,然后在你的浏览器中打开这个HTML文件
 		</p>
 		<code>
 		&lt;!DOCTYPE html&gt;
@@ -51,11 +51,11 @@
 		document.body.appendChild( renderer.domElement );
 		</code>
 
-		<p>在这儿我们花一点点时间来解释一下这儿发生了什么。我们现在建立了场景、相机和渲染器。</p>
+		<p>我们花一点点时间来解释一下这里发生了什么。我们现在建立了场景、相机和渲染器。</p>
 
 		<p>three.js里有几种不同的相机,在这里,我们使用的是<strong>PerspectiveCamera</strong>(透视摄像机)。</p>
 
-		<p>第一个属性是<strong>视场角(FOV)</strong>。视场角就是无论在什么时候,你所能在显示器上看到的场景的范围,它的值是一个角度。</p>
+		<p>第一个属性是<strong>视野角度(FOV)</strong>。视野角度就是无论在什么时候,你所能在显示器上看到的场景的范围,它的值是一个角度。</p>
 
 		<p>第二个值是<strong>长宽比(aspect ratio)</strong>。 也就是你用一个物体的宽除以它的高的比值。比如说,当你在一个宽屏电视上播放老电影时,可以看到图像仿佛是被压扁的。</p>
 
@@ -63,13 +63,13 @@
 
 		<p>接下来是渲染器。这里是施展魔法的地方。除了我们在这里用到的WebGLRenderer渲染器之外,Three.js同时提供了其他几种渲染器,当用户所使用的浏览器过于老旧,或者由于其他原因不支持WebGL时,可以使用这几种渲染器进行降级。</p>
 
-		<p>除了创建一个渲染器的实例之外,我们还需要在我们的应用程序里设置一个渲染器的大小尺寸。比如说,我们可以使用所需要的这个渲染区域的宽高,来将渲染器渲染出的场景,使其填充满我们的应用程序。因此,我们可以将渲染器宽高设置为浏览器窗口宽高。 对于性能比较敏感的应用程序来说,你可以给<strong>setSize</strong>传入一个较小的值,例如<strong>window.innerWidth/2</strong>和<strong>window.innerHeight/2</strong>,这将使得app在渲染时以一半的长宽尺寸渲染场景。</p>
+		<p>除了创建一个渲染器的实例之外,我们还需要在我们的应用程序里设置一个渲染器的大小尺寸。比如说,我们可以使用所需要的渲染区域的宽高,来让渲染器渲染出的场景填充满我们的应用程序。因此,我们可以将渲染器宽高设置为浏览器窗口宽高。对于性能比较敏感的应用程序来说,你可以给<strong>setSize</strong>传入一个较小的值,例如<strong>window.innerWidth/2</strong>和<strong>window.innerHeight/2</strong>,这将使得应用程序在渲染时,以一半的长宽尺寸渲染场景。</p>
 
-		<p>If you wish to keep the size of your app but render it at a lower resolution, you can do so by calling <strong>setSize</strong> with false as <strong>updateStyle</strong> (the third argument). For example, <strong>setSize(window.innerWidth/2, window.innerHeight/2, false)</strong> will render your app at half resolution, given that your &lt;canvas&gt; has 100% width and height.</p>
+		<p>如果你希望保持你的应用程序的尺寸,但是以较低的分辨率来渲染,你可以在调用<strong>setSize</strong>时,给<strong>updateStyle</strong>(第三个参数)传入false。例如,假设你的&lt;canvas&gt; 标签现在已经具有了100%的宽和高,调用<strong>setSize(window.innerWidth/2, window.innerHeight/2, false)</strong>将使得你的应用程序以一半的分辨率来进行渲染。</p>
 
-		<p>Last but not least, we add the <strong>renderer</strong> element to our HTML document. This is a &lt;canvas&gt; element the renderer uses to display the scene to us.</p>
+		<p>最后,我们将<strong>renderer</strong>(渲染器)这个元素添加到我们的HTML文档中,这也就是渲染器使用&lt;canvas&gt;元素来将场景展现给我们。</p>
 
-		<p><em>"That's all good, but where's that cube you promised?"</em> Let's add it now.</p>
+		<p><em>“嗯,看起来很不错,那你说的那个立方体在哪儿?”</em>我们接下来来对它继续进行添加吧。</p>
 
 		<code>
 		var geometry = new THREE.BoxGeometry( 1, 1, 1 );
@@ -80,17 +80,17 @@
 		camera.position.z = 5;
 		</code>
 
-		<p>To create a cube, we need a <strong>BoxGeometry</strong>. This is an object that contains all the points (<strong>vertices</strong>) and fill (<strong>faces</strong>) of the cube. We'll explore this more in the future.</p>
+		<p>要创建一个立方体,我们需要一个<strong>BoxGeometry</strong>(立方体)对象. 这个对象包含了一个立方体中所有的顶点(<strong>vertices</strong>)和面<strong>faces</strong>。未来我们将在这方面进行更多的探索。</p>
 
-		<p>In addition to the geometry, we need a material to color it. Three.js comes with several materials, but we'll stick to the <strong>MeshBasicMaterial</strong> for now. All materials take an object of properties which will be applied to them. To keep things very simple, we only supply a color attribute of <strong>0x00ff00</strong>, which is green. This works the same way that colors work in CSS or Photoshop (<strong>hex colors</strong>).</p>
+		<p>接下来,对于这个立方体,我们需要给它一个材质,来让它有颜色。Three.js自带了几种材质,但在这里我们使用的是<strong>MeshBasicMaterial</strong>。所有的材质是都一个将会被应用于立方体的属性对象。在这里为了简单起见,我们只设置一个color属性,值为<strong>0x00ff00</strong>,也就是绿色。这里所做的事情,就相当于是在CSS或者Photoshop中使用十六进制(<strong>hex colors</strong>)的颜色格式来设置颜色。</p>
 
-		<p>The third thing we need is a <strong>Mesh</strong>. A mesh is an object that takes a geometry, and applies a material to it, which we then can insert to our scene, and move freely around.</p>
+		<p>第三步,我们需要一个<strong>Mesh</strong>(网格)。 网格是包含有一个几何体以及应用在在此几何体上的材质的对象,我们可以直接将网格对象放入到我们的场景中,并让它在场景中自由移动。</p>
 
-		<p>By default, when we call <strong>scene.add()</strong>, the thing we add will be added to the coordinates <strong>(0,0,0)</strong>. This would cause both the camera and the cube to be inside each other. To avoid this, we simply move the camera out a bit.</p>
+		<p>默认情况下,当我们调用<strong>scene.add()</strong>的时候,物体将会被添加到坐标为<strong>(0,0,0)</strong>的位置。但这可能会使得摄像机的位置和立方体相互重叠(也就是摄像机位于立方体中)。为了防止这种情况的发生,我们只需要将摄像机稍微向外移动一些即可。</p>
 
-		<h2>Rendering the scene</h2>
+		<h2>渲染场景</h2>
 
-		<p>If you copied the code from above into the HTML file we created earlier, you wouldn't be able to see anything. This is because we're not actually rendering anything yet. For that, we need what's called a <strong>render or animate loop</strong>.</p>
+		<p>现在,如果你已经从上面复制了我们已经写好的代码到HTML文件中,你将不会在其中看到任何东西。这是因为我们还没有对它进行真正的渲染。为此,我们需要调用一个被叫做“<strong>渲染</strong>”或者“<strong>动画循环</strong>”的东西。</p>
 
 		<code>
 		function animate() {
@@ -100,25 +100,26 @@
 		animate();
 		</code>
 
-		<p>This will create a loop that causes the renderer to draw the scene every time the screen is refreshed (on a typical screen this means 60 times per second). If you're new to writing games in the browser, you might say <em>"why don't we just create a setInterval ?"</em> The thing is - we could, but <strong>requestAnimationFrame</strong> has a number of advantages. Perhaps the most important one is that it pauses when the user navigates to another browser tab, hence not wasting their precious processing power and battery life.</p>
+		<p>在这里我们创建了一个循环——这使得渲染器能够在每次屏幕刷新时对场景进行绘制(在大多数屏幕上,刷新率一般是60次/秒)。如果你正在浏览器里写一个游戏,你或许会说<em>“为什么我们不直接用setInterval来实现刷新的功能呢?”</em>当然啦,我们的确可以用setInterval,但是,<strong>requestAnimationFrame</strong>有很多的优点。最重要的一点或许就是当用户切换到其它的标签页时,它会暂停,因此不会浪费用户宝贵的处理器资源,以及损耗电池的使用寿命。</p>
 
-		<h2>Animating the cube</h2>
+		<h2>使立方体动起来</h2>
 
-		<p>If you insert all the code above into the file you created before we began, you should see a green box. Let's make it all a little more interesting by rotating it.</p>
+		<p>
+			在开始之前,如果你已经将上面的代码写入到了你所创建的文件中,你应当已经可以看到一个绿色的立方体。让我们来做一些更加有趣的事——让它旋转起来。</p>
 
-		<p>Add the following right above the <strong>renderer.render</strong> call in your <strong>animate</strong> function:</p>
+		<p>将下列代码添加到animate()函数中<strong>renderer.render</strong>调用的上方:</p>
 
 		<code>
 		cube.rotation.x += 0.01;
 		cube.rotation.y += 0.01;
 		</code>
 
-		<p>This will be run every frame (normally 60 times per second), and give the cube a nice rotation animation. Basically, anything you want to move or change while the app is running has to go through the animate loop. You can of course call other functions from there, so that you don't end up with a <strong>animate</strong> function that's hundreds of lines.</p>
+		<p>这一段代码将在每一帧时被渲染时调用(正常情况下是60次/秒),这就让立方体有了一个看起来很不错的旋转动画。基本上来说,当应用程序运行时,如果你想要移动或者改变任何场景中的东西,都必须要经过这个动画循环。当然,在这个动画循环函数里,你也可以调用别的函数,这样你在写<strong>animate</strong>函数的时候,这样你在写animate函数的时候,就不用在这里以成千上万的代码来结尾了。</p>
 
-		<h2>The result</h2>
-		<p>Congratulations! You have now completed your first three.js application. It's simple, you have to start somewhere.</p>
+		<h2>结果</h2>
+		<p>祝贺你!你现在已经成功完成了你的第一个Three.js应用程序。它现在很简单, 你现在已经有了一个起点。</p>
 
-		<p>The full code is available below. Play around with it to get a better understanding of how it works.</p>
+		<p>下面是完整的代码,请尽情运行它或者修改它,这将可以让你对它的工作机制有更加深入的了解。</p>
 
 		<code>
 		&lt;html&gt;

+ 24 - 34
docs/manual/zh/introduction/Creating-text.html

@@ -8,26 +8,22 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>创建文字([name]</h1>
 		<div>
-			<p>
-				There are often times when you might need to use text in your three.js application - here are
-				a couple of ways that you can do so.
+			<p>有时候,您可能需要在你的Three.js应用程序中使用到文本,这里有几种方法可以做到。
 			</p>
 		</div>
 
 		<h2>1. DOM + CSS</h2>
 		<div>
 			<p>
-				Using HTML is generally the easiest and fastest manner to add text. This is the method
-				used for descriptive overlays in most three.js examples.
+				使用HTML通常是最简单、最快速的添加文本的方法,这是大多数的Three.js示例中用于添加描述性叠加文字的方法。
 			</p>
-			<p>You can add content to a</p>
+			<p>你可以在这里添加内容</p>
 			<code>&lt;div id="info"&gt;Description&lt;/div&gt;</code>
 
 			<p>
-				and use CSS markup to position absolutely at a position above all others with a
-				z-index especially if you are running three.js full screen.
+				然后使用CSS来将其绝对定位在其它具有z-index的元素之上,尤其是当你全屏运行three.js的时候。
 			</p>
 
 			<code>
@@ -45,66 +41,60 @@
 
 
 
-		<h2>2. Draw text to canvas and use as a [page:Texture]</h2>
+		<h2>2. 将文字绘制到画布中,并将其用作[page:Texture](纹理)</h2>
 		<div>
-			<p>Use this method if you wish to draw text easily on a plane in your three.js scene.</p>
+			<p>如果你希望在three.js的场景中的平面上轻松地绘制文本,请使用此方法。</p>
 		</div>
 
 
-		<h2>3. Create a model in your favourite 3D application and export to three.js</h2>
+		<h2>3. 在你所喜欢的3D软件里创建模型,并导出给three.js
+			 </h2>
 		<div>
-			<p>Use this method if you prefer working with your 3d applications and importing the models to three.js</p>
+			<p>如果你更喜欢使用3D建模软件来工作并导出模型到three.js,请使用这种方法。</p>
 		</div>
 
 
 
-		<h2>4. Procedural Text Geometry</h2>
+		<h2>4. three.js自带的文字几何体</h2>
 		<div>
 			<p>
-				If you prefer to work purely in THREE.js or to create procedural and dynamic 3D
-				text geometries, you can create a mesh whose geometry is an instance of THREE.TextGeometry:
+				如果你更喜欢使用纯three.js来工作,或者创建能够由程序改变的、动态的3D文字,你可以创建一个其几何体为THREE.TextGeometry的实例的网格:
 			</p>
 			<p>
 				<code>new THREE.TextGeometry( text, parameters );</code>
 			</p>
 			<p>
-				In order for this to work, however, your TextGeometry will need an instance of THREE.Font
-				to be set on its "font" parameter.
-
-				See the [page:TextGeometry] page for more info on how this can be done, descriptions of each
-				accepted parameter, and a list of the JSON fonts that come with the THREE.js distribution itself.
+				然而,为了使得它能够工作,你的TextGeometry需要在其“font”参数上设置一个THREE.Font的实例。
+<br>
+				请参阅 [page:TextGeometry] 页面来阅读如何完成此操作的详细信息,以及每一个接收的参数的描述,还有由three.js分发、自带的JSON字体的列表。
 			</p>
 
-			<h3>Examples</h3>
+			<h3>示例</h3>
 			[example:webgl_geometry_text WebGL / geometry / text]<br />
 			[example:canvas_geometry_text canvas / geometry / text]<br />
 			[example:webgl_shadowmap WebGL / shadowmap]
 
 			<p>
-				If Typeface is down, or you want to use a font that is not there, there's a tutorial
-				with a python script for blender that allows you to export text to Three.js's JSON format:
-				[link:http://www.jaanga.com/2012/03/blender-to-threejs-create-3d-text-with.html]
+				如果Typeface已经关闭,或者没有你所想使用的字体,这有一个教程:[link:http://www.jaanga.com/2012/03/blender-to-threejs-create-3d-text-with.html]<br>
+				这是一个在blender上运行的python脚本,能够让你将文字导出为Three.js的JSON格式。
 				</p>
 
 		</div>
 
 
 
-		<h2>5. Bitmap Fonts</h2>
+		<h2>5. 位图字体</h2>
 		<div>
 			<p>
-				BMFonts (bitmap fonts) allow batching glyphs into a single BufferGeometry. BMFont rendering
-				supports word-wrapping, letter spacing, kerning, signed distance fields with standard
-				derivatives, multi-channel signed distance fields, multi-texture fonts, and more.
-				See [link:https://github.com/Jam3/three-bmfont-text three-bmfont-text].
+				BMFonts (位图字体) 可以将字形批处理为单个BufferGeometry。BMFont的渲染支持自动换行、字母间距、字句调整、signed distance fields with standard derivatives、multi-channel signed distance fields、多纹理字体等特性。
+				详情请参阅[link:https://github.com/Jam3/three-bmfont-text three-bmfont-text]。
 			</p>
 			<p>
-				Stock fonts are available in projects like
-				[link:https://github.com/etiennepinchon/aframe-fonts A-Frame Fonts], or you can create your own
-				from any .TTF font, optimizing to include only characters required for a project.
+				现有库存的字体在项目中同样可用,就像[link:https://github.com/etiennepinchon/aframe-fonts A-Frame Fonts]一样,
+				或者你也可以从任何TTF字体中创建你自己的字体,优化时,只需要包含项目中所需的字符即可。
 			</p>
 			<p>
-				Some helpful tools:
+				这是一些有用的工具:
 			</p>
 			<ul>
 				<li>[link:http://msdf-bmfont.donmccurdy.com/ msdf-bmfont-web] <i>(web-based)</i></li>

+ 13 - 11
docs/manual/zh/introduction/Drawing-lines.html

@@ -8,14 +8,14 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>画线([name]</h1>
 		<div>
 			<p>
-				Let's say you want to draw a line or a circle, not a wireframe [page:Mesh].
-				First we need to setup the [page:WebGLRenderer renderer], [page:Scene scene] and camera (see the Creating a scene page).
+				假设你将要画一个圆或者画一条线,而不是一个线框,或者说不是一个[page:Mesh](网格)。
+				第一步我们要做的,是设置好[page:WebGLRenderer renderer](渲染器)、[page:Scene scene](场景)和[page:Camera camera](相机)-(如果对这里所提到的东西,还不了解,请阅读本手册第一章“创建一个场景 - Creating a scene”)。
 			</p>
 
-			<p>Here is the code that we will use:</p>
+			<p>这是我们将要用到的代码:</p>
 			<code>
 var renderer = new THREE.WebGLRenderer();
 renderer.setSize( window.innerWidth, window.innerHeight );
@@ -27,15 +27,17 @@ camera.lookAt( 0, 0, 0 );
 
 var scene = new THREE.Scene();
 			</code>
-			<p>Next thing we will do is define a material. For lines we have to use [page:LineBasicMaterial] or [page:LineDashedMaterial].</p>
+			<p>
+				接下来我们要做的事情是定义一个材质。对于线条来说,我们能使用的材质只有[page:LineBasicMaterial] 或者 [page:LineDashedMaterial]。
+			</p>
 			<code>
 //create a blue LineBasicMaterial
 var material = new THREE.LineBasicMaterial( { color: 0x0000ff } );
 			</code>
 
 			<p>
-				After material we will need a [page:Geometry] or [page:BufferGeometry] with some vertices
-				(it's recommended to use a BufferGeometry as it's more performant, however for simplicity we'll use a Geometry here):
+				定义好材质之后,我们需要一个带有一些顶点的[page:Geometry] 或者 [page:BufferGeometry]。
+				(推荐使用BufferGeometry,因为它在性能上表现得会更好一些;但在这里,为了简单起见,我们使用Geometry):
 			</p>
 
 			<code>
@@ -45,20 +47,20 @@ geometry.vertices.push(new THREE.Vector3( 0, 10, 0) );
 geometry.vertices.push(new THREE.Vector3( 10, 0, 0) );
 			</code>
 
-			<p>Note that lines are drawn between each consecutive pair of vertices, but not between the first and last (the line is not closed.)</p>
+			<p>注意,线是画在每一对连续的顶点之间的,而不是在第一个顶点和最后一个顶点之间绘制线条(线条并未闭合)。</p>
 
-			<p>Now that we have points for two lines and a material, we can put them together to form a line.</p>
+			<p>既然我们已经有了能够画两条线的点和一个材质,那我们现在就可以将他们组合在一起,形成一条线。</p>
 			<code>
 var line = new THREE.Line( geometry, material );
 			</code>
-			<p>All that's left is to add it to the scene and call [page:WebGLRenderer.render render].</p>
+			<p>剩下的事情就是把它添加到场景中,并调用[page:WebGLRenderer.render render](渲染)函数。</p>
 
 			<code>
 scene.add( line );
 renderer.render( scene, camera );
 			</code>
 
-			<p>You should now be seeing an arrow pointing upwards, made from two blue lines.</p>
+			<p>你现在应当已经看到了一个由两条蓝线组成的、指向上的箭头。</p>
 		</div>
 	</body>
 </html>

+ 19 - 20
docs/manual/zh/introduction/FAQ.html

@@ -8,49 +8,48 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>常见问题([name]</h1>
 
-		<h2>Which 3D model format is best supported?</h2>
+		<h2>哪一种三维物体格式能够得到最好地支持呢?</h2>
 		<div>
 			<p>
-				The recommended format for importing and exporting assets is glTF (GL Transmission Format). Because glTF is focused on runtime asset delivery, it is compact to transmit and fast to load.
+			推荐使用glTF(gl传输格式)来对三维物体进行导入和导出,由于glTF这种格式是专注于在程序运行时呈现三维物体的,所以它的传输效率非常高,且加载速度非常快。
 			</p>
-			<p>
-				three.js provides loaders for many other popular formats like FBX, Collada or OBJ as well. Nevertheless, you should always try to establish a glTF based workflow in your projects first. For more information, see [link:#manual/introduction/Loading-3D-models loading 3D models].
+			
+			
+			<p>three.js同样也为其它广受欢迎的格式像FBX、Collada以及OBJ等等提供了载入工具。虽然如此,你应当还是首先尝试着在你的项目里建立一个基于glTF的工作流程。
+				了解更多详细信息,请查看[link:#manual/introduction/Loading-3D-models loading 3D models]。
 			</p>
 		</div>
 
-		<h2>Why are there meta viewport tags in examples?</h2>
+		<h2>为什么在示例中会有一些和viewport相关的meta标签?</h2>
 		<div>
 			<div class="highlight highlight-text-html-basic"><pre>&lt;<span class="pl-ent">meta</span> <span class="pl-e">name</span>=<span class="pl-s"><span class="pl-pds">"</span>viewport<span class="pl-pds">"</span></span> <span class="pl-e">content</span>=<span class="pl-s"><span class="pl-pds">"</span>width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0<span class="pl-pds">"</span></span>&gt;</pre></div>
 
-				<p>These tags control viewport size and scale for mobile browsers (where page content may be rendered at different size than visible viewport).</p>
+				<p>这些标签用于在移动端浏览器上控制视口的大小和缩放(页面内容可能会以与可视区域不同的大小来呈现)。</p>
 
 				<p>[link:https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html Safari: Using the Viewport]</p>
 
 				<p>[link:https://developer.mozilla.org/en/Mobile/Viewport_meta_tag MDN: Using the viewport meta tag]</p>
 		</div>
 
-		<h2>How can scene scale be preserved on resize?</h2>
+		<h2>如何在窗口调整大小时保持场景比例不变?</h2>
 		<p>
-			We want all objects, regardless of their distance from the camera, to appear the same size, even as the window is resized.
-
-			The key equation to solving this is this formula for the visible height at a given distance:
-
+			我们希望所有的物体,无论它们距离摄像机有多远,都能呈现相同尺寸,即使是在窗口被重新调整大小的时候。
+			解决这个问题的关键,是一个很重要的公式:给定距离,求可见高度
 			<code>
-visible_height = 2 * Math.tan( ( Math.PI / 180 ) * camera.fov / 2 ) * distance_from_camera;
+visible_height = 2 * Math.tan( ( Math.PI / 180 ) * camera.fov / 2 ) * distance_from_camera;<br>
 			</code>
-			If we increase the window height by a certain percentage, then what we want is the visible height at all distances
-			to increase by the same percentage.
-
-			This can not be done by changing the camera position. Instead you have to change the camera field-of-view.
-			[link:http://jsfiddle.net/Q4Jpu/ Example].
+			如果我们以一定的百分比增加了窗口的高度,那我们所想要的结果便是所有距离的可见高度都增加相同的百分比。
+			这并不能通过改变摄像机的位置来实现,相反,你得改变摄像机的视野角度(FOV)。这是个示例:[link:http://jsfiddle.net/Q4Jpu/ Example].
 		</p>
 
-		<h2>Why is part of my object invisible?</h2>
+		<h2>为什么我的物体的一部分是不可见的?</h2>
 		<p>
-			This could be because of face culling. Faces have an orientation that  decides which side is which. And the culling removes the backside in normal circumstances. To see if this is your problem, change the material side to THREE.DoubleSide.
+			这可能是由于面消隐而导致的。面是具有朝向的,这个朝向决定了哪边是正面或者哪边是背面。
+			在正常情况下,渲染时会将背面进行消隐。要查看这是不是你所遇到的问题,请将material的slide更改为THREE.DoubleSide。
 			<code>material.side = THREE.DoubleSide</code>
 		</p>
 	</body>
 </html>
+

+ 46 - 54
docs/manual/zh/introduction/How-to-run-things-locally.html

@@ -8,61 +8,58 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1>
+		<h1>如何在本地运行Three.js([name]</h1>
 		<p>
-			If you use just procedural geometries and don't load any textures, webpages should work
-			straight from the file system, just double-click on HTML file in a file manager and it
-			should appear working in the browser (you'll see <em>file:///yourFile.html</em> in the address bar).
+            倘若你只是使用Three.js库中所提供的几何体,且不载入任何纹理贴图,则网页是可以从本地的文件系统中打开,并且是能够直接运行的,只需在文件管理器中双击HTML文件,它就可以在浏览器中进行显示。
+            (此时你将在地址栏中看到类似这样的URL:<em>file:///yourFile.html</em>)
+			
 		</p>
 
-		<h2>Content loaded from external files</h2>
+		<h2>从外部文件载入的内容</h2>
 		<div>
 			<p>
-				If you load models or textures from external files, due to browsers' [link:http://en.wikipedia.org/wiki/Same_origin_policy same origin policy]
-			 	security restrictions, loading from a file system will fail with a security exception.
+                倘若你需要从外部文件里载入几何体或是纹理贴图,由于浏览器[link:http://en.wikipedia.org/wiki/Same_origin_policy same origin policy](同源策略)的安全限制,从本地文件系统载入外部文件将会失败,同时抛出安全性异常。
 		 	</p>
 
-			<p>There are two ways to solve this:</p>
+			<p>这里有两种方法来解决这个问题:</p>
 
 			<ol>
 				<li>
-					Change security for local files in a browser. This allows you to access your page as: <code>file:///yourFile.html</code>
+                    在浏览器中改变本地文件的安全策略,这将使你可以通过<code>file:///yourFile.html</code>来直接运行*本地文件系统*中的文件。
 				</li>
 				<li>
-					Run files from a local web server. This allows you to access your page as: <code>http://localhost/yourFile.html</code>
+                    从本地的服务器运行文件,这可以让你通过<code>http://localhost/yourFile.html</code>来访问运行在*本地服务器*上的文件。
 				</li>
 			</ol>
 
 			<p>
-				If you use option 1, be aware that you may open yourself to some vulnerabilities if using
-				the same browser for a regular web surfing. You may want to create a separate browser
-				profile / shortcut used just for local development to be safe. Let's go over each option in turn.
+                倘若你选择第一种方法,请小心,倘若你使用同一个浏览器来进行日常网络冲浪,你将可能会触发一些漏洞。
+                你或许可以创建一个用于开发环境的独立的浏览器配置文件或者快捷方式,仅仅用于本地开发;这将使得日常使用环境与开发环境相分离,以保证日常使用环境的安全性。
+                接下来,我们来看一看除此之外的别的方法。
 			</p>
 		</div>
 
 
-		<h2>Run a local server</h2>
+		<h2>运行一个本地的服务器</h2>
 		<div>
 			<p>
-				Many programming languages have simple HTTP servers built in. They are not as full featured as
-				production servers such as [link:https://www.apache.org/ Apache] or [link:https://nginx.org NGINX], however they should be sufficient for testing your
-				three.js application.
+                很多的编程语言都具有一个内置的简易HTTP服务器。它们的功能并不像能够被用于生产环境的服务器,例如[link:https://www.apache.org/ Apache] 或者 [link:https://nginx.org NGINX]那样完善,
+                但对于你来测试three.js应用程序来说,它们就已经足够了。
 			</p>
 
 			<h3>Node.js server</h3>
 			<div>
-				<p>Node.js has a simple HTTP server package. To install:</p>
+				<p>Node.js 具有一个简单的HTTP服务器包,如需安装,请执行:</p>
 				<code>npm install http-server -g</code>
 
-				<p>To run (from your local directory):</p>
+				<p>若要从本地目录下运行,请执行:</p>
 				<code>http-server . -p 8000</code>
 			</div>
 
 			<h3>Python server</h3>
 			<div>
 				<p>
-					If you have [link:http://python.org/ Python] installed, it should be enough to run this
-					from a command line (from your working directory):
+					如果你已经安装好了[link:http://python.org/ Python],只需要从命令行里便可以运行它(从工作目录):
 				</p>
 				<code>
 //Python 2.x
@@ -72,14 +69,14 @@ python -m SimpleHTTPServer
 python -m http.server
 				</code>
 
-				<p>This will serve files from the current directory at localhost under port 8000, i.e in the address bar type:</p>
+				<p>这将会在为当前目录在8000端口创建一个服务器,也就是说你可以在地址栏里输入这个地址来访问已经创建好的服务器:</p>
 
 				<code>http://localhost:8000/</code>
 			</div>
 
 			<h3>Ruby server</h3>
 			<div>
-				<p>If you have Ruby installed, you can get the same result running this instead:</p>
+				<p>如果你已经安装好了Ruby,通过执行下列命也可以创建同样的服务器:</p>
 				<code>
 ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
 				</code>
@@ -87,93 +84,89 @@ ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot =>
 
 			<h3>PHP server</h3>
 			<div>
-				<p>PHP also has a built-in web server, starting with php 5.4.0:</p>
+				<p>PHP自从5.4.0版本开始,就内置了一个Web服务器:</p>
 				<code>php -S localhost:8000</code>
 			</div>
 
 			<h3>Lighttpd</h3>
 			<div>
 				<p>
-					Lighttpd is a very lightweight general purpose webserver. We'll cover installing it on OSX with
-					HomeBrew here. Unlike the other servers discussed here, lighttpd is a full fledged production
-					ready server.
+                    Lighttpd是一个轻量级的通用Web服务器,在这里,我们将介绍如何在OS X上使用HomeBrew来安装它。
+                    和我们在这里讨论的其他服务器不同,lighttpd是一个成熟的、准用于生产环境的服务器。
 				</p>
 
 				<ol>
 					<li>
-						Install it via homebrew
+						通过HomeBrew安装lighttpd
 						<code>brew install lighttpd</code>
 					</li>
 					<li>
-						Create a configuration file called lighttpd.conf in the directory where you want to run
-						your webserver. There is a sample [link:http://redmine.lighttpd.net/projects/lighttpd/wiki/TutorialConfiguration here].
+                        在你希望作为服务器来运行的目录里,创建一个名为lighttpd.conf的配置文件。
+                        这是一个配置文件的样本:[link:http://redmine.lighttpd.net/projects/lighttpd/wiki/TutorialConfiguration TutorialConfiguration]。
 					 </li>
 					<li>
-						In the conf file, change the server.document-root to the directory you want to serve files from.
+                        在配置文件里,将server.document-root更改为你将要创建的服务器中的文件的所在的目录。
 					</li>
 					<li>
-						Start it with
+						通过这个命令来启动:
 						<code>lighttpd -f lighttpd.conf</code>
 					</li>
 					<li>
-						Navigate to http://localhost:3000/ and it will serve static files from the directory you
-						chose.
+						使用浏览器打开http://localhost:3000/,然后服务器将可以从你所选择的目录中向你提供静态文件。
 					</li>
 				</ol>
 			</div>
 
-		<h2>Change local files security policy</h2>
+		<h2>更改本地文件的安全策略</h2>
 		<div>
 			<h3>Safari</h3>
 			<div>
 				<p>
-					Enable the develop menu using the preferences panel, under Advanced -&gt; "Show develop menu
-					in menu bar".
+                    在“偏好”面板中启用开发菜单,位于“高级”-&gt“在菜单栏中显示开发菜单”
 				</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.
+                    之后从Safari中的“开发”菜单中,选择“停用本地文件限制”,同样需要注意的是,Safari对于缓存有一些奇怪的行为,
+                    因此建议,在同一菜单中打开“停用缓存”的选项;如果你正在编辑,请使用Safari进行调试。
 				</p>
 			</div>
 
 
 			<h3>Chrome</h3>
 			<div>
-				<p>Close all running Chrome instances first. The important word here is 'all'.</p>
+				<p>请关闭Chrome浏览器正在运行的*所有*实例,注意这里非常重要的关键字是“*所有*”。</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.
+                    在Windows中,你可以在任务管理器中查看所有正在运行的Chorme浏览器的实例。
+                    此外,如果你在系统任务栏中看到了Chrome图标,请鼠标右键打开它的上下文菜单,点击关闭。这样就应当已经关闭所有正在运行的Chrome浏览器实例了。
+
 				</p>
 
-				<p>Then start the Chrome executable with a command line flag:</p>
+				<p>
+                    然后使用命令行执行Chrome浏览器,并在命令行中添加允许访问本地文件的参数:</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).
+                    在Windows中,最简单的做法或许就是创建一个特别的快捷方式图标,快捷方式的目标指向上面的命令行
+                    (右键点击快捷方式图标-&gt;属性-&gt;目标)。
 				</p>
 
-				<p>On Mac OSX, you can do this with</p>
+				<p>在Mac OS X中,你可以用这种方法来添加允许访问本地文件的参数并运行Chrome:</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>
+					在地址栏中,键入<code>about:config</code>
 				</li>
 				<li>
-					Find the <code>security.fileuri.strict_origin_policy</code> parameter
+					找到这个参数<code>security.fileuri.strict_origin_policy</code>
 				</li>
 				<li>
-					Set it to <em>false</em>
+					将其设置为<em>false</em>
 				</li>
 				</ol>
 			</div>
@@ -181,8 +174,7 @@ ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot =>
 		</div>
 
 			<p>
-				Other simple alternatives are [link:http://stackoverflow.com/q/12905426/24874 discussed here]
-				on Stack Overflow.
+                其它简单的替代方案你可以在Stack Overflow上找到:[link:http://stackoverflow.com/q/12905426/24874 click here]。
 			</p>
 		</div>
 

+ 43 - 49
docs/manual/zh/introduction/How-to-update-things.html

@@ -10,12 +10,12 @@
 	<body>
 		<h1>[name]</h1>
 		<div>
-			<p>All objects by default automatically update their matrices if they have been added to the scene with</p>
+			<p>默认情况下,所有对象都会自动更新它们的矩阵(如果它们已添加到场景中)</p>
 			<code>
 var object = new THREE.Object3D();
 scene.add( object );
 			</code>
-			or if they are the child of another object that has been added to the scene:
+			或者它们是已添加到场景中的另一个对象的子节点:
 			<code>
 var object1 = new THREE.Object3D();
 var object2 = new THREE.Object3D();
@@ -25,38 +25,34 @@ scene.add( object1 ); //object1 and object2 will automatically update their matr
 			</code>
 		</div>
 
-		<p>However, if you know object will be static, you can disable this and update the transform matrix manually just when needed.</p>
+		<p>但是,如果你知道对象将是静态的,则可以禁用此选项并在需要时手动更新转换矩阵。</p>
 
 		<code>
 object.matrixAutoUpdate  = false;
 object.updateMatrix();
 		</code>
 
-		<h2>Geometries</h2>
+		<h2>Geometries(几何形状)</h2>
 		<div>
 			<h3>[page:BufferGeometry]</h3>
 			<div>
 				<p>
-					BufferGeometries store information (such as vertex positions, face indices, normals, colors,
-					UVs, and any custom attributes) in [page:BufferAttribute buffers] - that is,
+					BufferGeometries 将信息(例如顶点位置,面索引,法线,颜色,uv和任何自定义属性) 存储在 [page:BufferAttribute buffers] - 也就是,
 					[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays typed arrays].
-					This makes them generally faster than standard Geometries, at the cost of being somewhat harder to
-					work with.
+					这使得它们通常比标准Geometries更快,缺点是更难用。
 				</p>
 				<p>
-					With regards to updating BufferGeometries, the most important thing to understand is that
-					you cannot resize buffers (this is very costly,	basically the equivalent to creating a new geometry).
-					You can however update the content of buffers.
+					关于更新BufferGeometries, 最重要的是理解你不能调整 buffers 大小(这种操作开销很大,	相当于创建了个新的geometry).
+					但你可以更新 buffers的内容.
 				</p>
 				<p>
-					This means that if you know an attribute of your BufferGeometry will grow, say the number of vertices,
-					you must pre-allocate a buffer large enough to hold any new vertices that may be created. Of
-					course, this also means that there will be a maximum size for your BufferGeometry - there is
-					no way to create a BufferGeometry that can efficiently be extended indefinitely.
+					这意味着如果你知道BufferGeometry的一个属性会增长,比如顶点的数量,
+					你必须预先分配足够大的buffer来容纳可能创建的任何新顶点。
+					当然,这也意味着BufferGeometry将有一个最大大小 - 无法创建一个可以高效地无限扩展的BufferGeometry。
 				</p>
 				<p>
-					We'll use the example of a line that gets extended at render time. We'll allocate space
-					in the buffer for 500 vertices but draw only two at first, using [page:BufferGeometry.drawRange].
+					我们以在渲染时扩展的line来示例。我们将分配可容纳500个顶点的空间但起初仅绘制2个,使用
+					在500个顶点的缓冲区中,但首先只使用 [page:BufferGeometry.drawRange].
 				</p>
 				<code>
 var MAX_POINTS = 500;
@@ -80,7 +76,7 @@ var line = new THREE.Line( geometry,  material );
 scene.add( line );
 				</code>
 			 	<p>
-					Next we'll randomly add points to the line using a pattern like:
+					然后我们随机增加顶点到line中,以这样的一种方式:
 				</p>
 				<code>
 var positions = line.geometry.attributes.position.array;
@@ -101,21 +97,20 @@ for ( var i = 0, l = MAX_POINTS; i < l; i ++ ) {
 }
 				</code>
 				<p>
-					If you want to change the <em>number of points</em> rendered after the first render, do this:
+					如果要更改第一次渲染后渲染的<em>点数</em>,执行以下操作:
 				</p>
 				<code>
 line.geometry.setDrawRange( 0, newValue );
 				</code>
 				<p>
-					If you want to change the position data values after the first render, you need to
-					set the needsUpdate flag like so:
+					如果要在第一次渲染后更改position数值,则需要像这样设置needsUpdate标志:
 				</p>
 				<code>
 line.geometry.attributes.position.needsUpdate = true; // required after the first render
 				</code>
 
 				<p>
-					[link:http://jsfiddle.net/w67tzfhx/ Here is a fiddle] showing an animated line which you can adapt to your use case.
+					[link:http://jsfiddle.net/w67tzfhx/ 这个fiddle] 展示了一个你可以参考的运动的line.
 				</p>
 
 				<h3>Examples:</h3>
@@ -128,11 +123,10 @@ line.geometry.attributes.position.needsUpdate = true; // required after the firs
 			<h3>[page:Geometry]</h3>
 			<div>
 				<p>
-					The following flags control updating of various geometry attributes. Set flags only
-					for attributes that you need to update, updates are costly. Once buffers
-					change, these flags reset automatically back to false. You need to keep setting them to
-					true if you want to keep updating buffers. Note that this applies only to [page:Geometry]
-					and not to [page:BufferGeometry].
+					以下标志控制各种geometry属性的更新. 仅对于需要更新的属性设置标志
+					,因为更新成本很高. 一旦buffers
+					改变, 这些标志位会自动重置为false. 你需要保持这些设置为true,如果你想要持续更新buffers. 请注意这仅适用于[page:Geometry]
+					而不是 [page:BufferGeometry].
 				</p>
 				<code>
 var geometry = new THREE.Geometry();
@@ -146,8 +140,8 @@ geometry.tangentsNeedUpdate = true;
 				</code>
 
 				<p>
-					In versions prior to [link:https://github.com/mrdoob/three.js/releases/tag/r66 r66] meshes
-					additionally need the <em>dynamic</em> flag enabled (to keep internal typed arrays):
+					在早于 [link:https://github.com/mrdoob/three.js/releases/tag/r66 r66]版本中, meshes
+					需要额外设定 <em>dynamic</em> 标志true (为了维持内部的 typed arrays):
 				</p>
 
 				<code>
@@ -164,19 +158,19 @@ geometry.tangentsNeedUpdate = true;
 
 
 
-		<h2>Materials</h2>
+		<h2>Materials(材质)</h2>
 		<div>
-			<p>All uniforms values can be changed freely (e.g. colors, textures, opacity, etc), values are sent to the shader every frame.</p>
+			<p>所有uniforms值都可以自由改变 (e.g. colors, textures, opacity, etc), 这些数值在每帧都发给shader .</p>
 
-			<p>Also GLstate related parameters can change any time (depthTest, blending, polygonOffset, etc).</p>
+			<p>GL状态相关参数也可以随时改变 (depthTest, blending, polygonOffset, etc).</p>
 
-			<p>Flat / smooth shading is baked into normals. You need to reset normals buffer (see above).</p>
+			<p>平滑/平滑阴影被作到法线. 你需要重置法线 buffer (见上).</p>
 
-			<p>The following properties can't be easily changed at runtime (once the material is rendered at least once):</p>
+			<p>在运行时无法轻松更改以下属性 (一旦material被渲染了一次):</p>
 			<ul>
-				<li>numbers and types of uniforms</li>
-				<li>numbers and types of lights</li>
-				<li>presence or not of
+				<li>uniforms的数量和类型</li>
+				<li>lights的数量和类型</li>
+				<li>存在与否
 					<ul>
 						<li>texture</li>
 						<li>fog</li>
@@ -189,19 +183,19 @@ geometry.tangentsNeedUpdate = true;
 				</li>
 			</ul>
 
-			<p>Changes in these require building of new shader program. You'll need to set</p>
+			<p>这些变化需要建立新的shader程序. 你需要设置</p>
 			<code>material.needsUpdate = true</code>
 
-			<p>Bear in mind this might be quite slow and induce jerkiness in framerate (especially on Windows, as shader compilation is slower in DirectX than OpenGL).</p>
+			<p>请记住,这可能会非常缓慢并导致帧率的波动。 (特别是在Windows上,因为shader编译在directx中比opengl慢).</p>
 
-			<p>For smoother experience you can emulate changes in these features to some degree by having "dummy" values like zero intensity lights, white textures, or zero density fog.</p>
+			<p>为了获得更流畅的体验,您可以通过“虚拟”值(如零强度光,白色纹理或零密度雾)在一定程度上模拟这些功能的变化.</p>
 
-			<p>You can freely change the material used for geometry chunks, however you cannot change how an object is divided into chunks (according to face materials). </p>
+			<p>您可以自由更改用于几何块的材质,但是无法更改对象如何划分为块(根据面材料). </p>
 
-			<h3>If you need to have different configurations of materials during runtime:</h3>
-			<p>If the number of materials / chunks is small, you could pre-divide the object beforehand (e.g. hair / face / body / upper clothes / trousers for a human, front / sides / top / glass / tire / interior for a car). </p>
+			<h3>如果你需要在运行时使用不同的材料配置:</h3>
+			<p>如果材料/块的数量很少,您可以事先预先划分物体(例如,人的头发/脸部/身体/上衣/裤子,汽车的前部/侧面/顶部/玻璃/轮胎/内部). </p>
 
-			<p>If the number is large (e.g. each face could be potentially different), consider a different solution, such as using attributes / textures to drive different per-face look.</p>
+			<p>如果数量很大(例如,每个面可能有所不同),请考虑不同的解决方案,例如使用属性/纹理来驱动不同的每个面部外观。</p>
 
 			<h3>Examples:</h3>
 			[example:webgl_materials_cars WebGL / materials / cars]<br />
@@ -209,9 +203,9 @@ geometry.tangentsNeedUpdate = true;
 		</div>
 
 
-		<h2>Textures</h2>
+		<h2>Textures(纹理)</h2>
 		<div>
-			<p>Image, canvas, video and data textures need to have the following flag set if they are changed:</p>
+			<p>如果更改了图像,画布,视频和数据纹理,则需要设置以下标志:</p>
 			<code>
 				texture.needsUpdate = true;
 			</code>
@@ -224,9 +218,9 @@ geometry.tangentsNeedUpdate = true;
 		</div>
 
 
-		<h2>Cameras</h2>
+		<h2>Cameras(相机)</h2>
 		<div>
-			<p>A camera's position and target is updated automatically. If you need to change</p>
+			<p>相机的位置和目标会自动更新。 如果你需要改变</p>
 			<ul>
 				<li>
 					fov
@@ -242,7 +236,7 @@ geometry.tangentsNeedUpdate = true;
 				</li>
 			</ul>
 			<p>
-				then you'll need to recompute the projection matrix:
+				那么你需要重新计算投影矩阵:
 			</p>
 			<code>
 camera.aspect = window.innerWidth / window.innerHeight;

+ 17 - 17
docs/manual/zh/introduction/Import-via-modules.html

@@ -8,29 +8,29 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1><br />
+		<h1>通过模块来引入([name]</h1><br />
 
 		<p>
-			While importing three.js via script tags is a great way to get up and running fast, it has a few drawbacks for longer lived projects, for example:
+			虽然通过script标签来引入three.js是一个能够快速起步、快速运行的方式,但这种方式对于一些具有较长生命周期的项目来说是有一些缺点的。比如说:
+
 			<ul>
-				<li>You have to manually fetch and include a copy of the library as part of your project's source code</li>
-				<li>Updating the library's version is a manual process</li>
-				<li>When checking in a new version of the library your version control diffs are cluttered by the many lines of the build file</li>
+				<li>你必须手动获得并在你的源代码中包含这个库的一个拷贝</li>
+				<li>更新这个库的版本是一个手动操作的过程</li>
+				<li>在检查新版本的库时,你的版本差异对比将会被许多行给弄乱。</li>
 			</ul>
 		</p>
 
-		<p>Using a dependency manager like npm avoids these caveats by allowing you to simply download and import your desired version of the library onto your machine.</p>
+		<p>使用像npm这样的依赖包管理器可以很好地避免这些需要注意的问题,只需在你的电脑上下载并导入你所需要的库的版本即可。</p>
 
-		<h2>Installation via npm</h2>
+		<h2>通过npm来安装</h2>
 
-		<p>Three.js is published as an npm module, see: [link:https://www.npmjs.com/package/three npm]. This means all you need to do to include three.js into your project is run "npm install three"</p>
+		<p>Three.js目前已经作为一个npm包来进行了发布,详情请参阅:[link:https://www.npmjs.com/package/three npm]。这意味着,在所有你需要包含three.js库的项目中,只需运行"npm install three"即可。</p>
 
-		<h2>Importing the module</h2>
+		<h2>导入这个模块</h2>
 
-		<p>Assuming that you're bundling your files with a tool such as [link:https://webpack.github.io/ Webpack] or [link:https://github.com/substack/node-browserify Browserify], which allow you to "require('modules') in the browser by bundling up all of your dependencies."</p>
+		<p>假设你正在使用[link:https://webpack.github.io/ Webpack]或者[link:https://github.com/substack/node-browserify Browserify]等允许你“通过打包所有依赖,来在浏览器中使用require('modules')”的打包工具对你的文件进行打包。</p>
 
-		<p>
-			You should now be able to import the module into your source files and continue to use it as per normal.
+		<p>你现在可以在你的源代码中引入模块,并继续像往常一样使用这个库。
 		</p>
 
 		<code>
@@ -41,7 +41,7 @@
 		</code>
 
 		<p>
-			You're also able to leverage [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import ES6 import syntax]:
+			你也可以使用[link:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/import ES6 import](在ES6标准中新增的import语句)
 		</p>
 
 		<code>
@@ -52,7 +52,7 @@
 		</code>
 
 		<p>
-			or if you wish to import only select parts of three.js library, for example Scene:
+			或者,如果你希望只导入three.js库中的特定部分,例如Scene:
 		</p>
 
 		<code>
@@ -62,11 +62,11 @@
 		...
 		</code>
 
-		<h2>Caveats</h2>
+		<h2>注意事项</h2>
 
 		<p>
-			Currently it's not possible to import the files within the "examples/js" directory in this way.
-			This is due to some of the files relying on global namespace pollution of THREE. For more information see <a href="https://github.com/mrdoob/three.js/issues/9562" target="_blank">Transform `examples/js` to support modules #9562</a>.
+			目前,无法用这种方式导入"examples/js"目录中的文件。
+			这是因为一些文件依赖于THREE的全局命名空间污染。了解更多详情,请参阅<a href="https://github.com/mrdoob/three.js/issues/9562" target="_blank">Transform `examples/js` to support modules #9562</a>
 		</p>
 	</body>
 </html>

+ 39 - 59
docs/manual/zh/introduction/Loading-3D-models.html

@@ -10,48 +10,40 @@
 </head>
 
 <body>
-  <h1>[name]</h1>
+  <h1>载入3D模型([name]</h1>
   <br />
 
   <p>
-    3D models are available in hundreds of file formats, each with different
-    purposes, assorted features, and varying complexity. Although
-    <a href="https://github.com/mrdoob/three.js/tree/dev/examples/js/loaders" target="_blank" rel="noopener">
-    three.js provides many loaders</a>, choosing the right format and
-    workflow will save time and frustration later on. Some formats are
-    difficult to work with, inefficient for realtime experiences, or simply not
-    fully supported at this time.
+	3D模型目前的有成千上万种格式可供选择,但每一种格式都具有不同的目的、用途以及复杂性。
+    虽然<a href="https://github.com/mrdoob/three.js/tree/dev/examples/js/loaders" target="_blank" rel="noopener">
+	three.js已经提供了多种导入工具</a>
+	但是选择正确的文件格式以及工作流程将可以节省很多时间,以及避免很多挫折。某些格式难以使用,或者实时体验效率低下,或者目前尚未得到完全支持。
   </p>
 
   <p>
-    This guide provides a workflow recommended for most users, and suggestions
-    for what to try if things don't go as expected.
+		对大多数用户,本指南向你推荐了一个工作流程,并向你提供了一些当没有达到预期效果时的建议。
+
   </p>
 
-  <h2>Before we start</h2>
+  <h2>在开始之前</h2>
 
   <p>
-    If you're new to running a local server, begin with
-    [link:#manual/introduction/How-to-run-things-locally how to run things locally]
-    first. Many common errors viewing 3D models can be avoided by hosting files
-    correctly.
+	  如果你是第一次运行一个本地服务器,可以先阅读[link:#manual/introduction/How-to-run-things-locally how to run things locally]。
+	  正确地托管文件,可以避免很多查看3D模型时的常见错误。
   </p>
 
-  <h2>Recommended workflow</h2>
+  <h2>推荐的工作流程</h2>
 
   <p>
-    Where possible, we recommend using glTF (GL Transmission Format). Both
-    <small>.GLB</small> and <small>.GLTF</small> versions of the format are
-    well supported. Because glTF is focused on runtime asset delivery, it is
-    compact to transmit and fast to load. Features include meshes, materials,
-    textures, skins, skeletons, morph targets, animations, lights, and
-    cameras.
+	  如果有可能的话,我们推荐使用glTF(gl传输格式)。<small>.GLB</small>和<small>.GLTF</small>是这种格式的这两种不同版本,
+	  都可以被很好地支持。由于glTF这种格式是专注于在程序运行时呈现三维物体的,所以它的传输效率非常高,且加载速度非常快。
+	  功能方面则包括了网格、材质、纹理、皮肤、骨骼、变形目标、动画、灯光和摄像机。
   </p>
 
   <p>
-    Public-domain glTF files are available on sites like
+	  公共领域的glTF文件可以在网上找到,例如
     <a href="https://sketchfab.com/models?features=downloadable&sort_by=-likeCount&type=models" target="_blank" rel="noopener">
-    Sketchfab</a>, or various tools include glTF export:
+    Sketchfab</a>,或者很多工具包含了glTF的导出功能:
   </p>
 
   <ul>
@@ -62,66 +54,54 @@
     <li><a href="https://www.allegorithmic.com/products/substance-painter" target="_blank" rel="noopener">Substance Painter</a> by Allegorithmic</li>
     <li><a href="https://www.foundry.com/products/modo" target="_blank" rel="noopener">Modo</a> by Foundry</li>
     <li><a href="https://www.marmoset.co/toolbag/" target="_blank" rel="noopener">Toolbag</a> by Marmoset</li>
-    <li>&hellip;and <a href="https://github.com/khronosgroup/gltf#gltf-tools" target="_blank" rel="noopener">many more</a></li>
+    <li>……<a href="https://github.com/khronosgroup/gltf#gltf-tools" target="_blank" rel="noopener">还有更多</a></li>
   </ul>
 
   <p>
-    If your preferred tools do not support glTF, consider requesting glTF
-    export from the authors, or posting on
-    <a href="https://github.com/KhronosGroup/glTF/issues/1051" target="_blank" rel="noopener">the glTF roadmap thread</a>.
+	  倘若你所喜欢的工具不支持glTF格式,请考虑向该工具的作者请求glTF导出功能,
+	  或者在<a href="https://github.com/KhronosGroup/glTF/issues/1051" target="_blank" rel="noopener">the glTF roadmap thread</a>贴出你的想法。
+
   </p>
 
   <p>
-    When glTF is not an option, popular formats such as FBX, OBJ, or COLLADA
-    are also available and regularly maintained.
+	  当glTF不可用的时候,诸如FBX、OBJ或者COLLADA等等其它广受欢迎的格式在Three.js中也是可以使用、并且定期维护的。
   </p>
 
-  <h2>Troubleshooting</h2>
+  <h2>故障排除</h2>
 
   <p>
-    You've spent hours modeling an artisanal masterpiece, you load it into
-    the webpage, and — oh no! 😭 It's distorted, miscolored, or missing entirely.
-    Start with these troubleshooting steps:
+	  你花了几个小时亲手建了一个堪称杰作的模型,现在你把它给导入到网页中——
+	  哦,天呐~😭它导入以后完全失真了、材质贴图丢了、或者说整个模型完全丢失了!<br>
+	  接下来我们来按照下面的步骤排除故障:
   </p>
 
   <ol>
     <li>
-      Check the JavaScript console for errors, and make sure you've used an
-      <em>onError</em> callback when calling <em>.load()</em> to log the result.
+		在Javascript的Console中查找错误,并确定当你调用<em>.load()</em>的时候,使用了<em>onError</em>回调函数来输出结果。
     </li>
     <li>
-      View the model in another application. For glTF, drag-and-drop viewers
-      are available for
-      <a href="https://gltf-viewer.donmccurdy.com/" target="_blank" rel="noopener">three.js</a> and
-      <a href="http://sandbox.babylonjs.com/" target="_blank" rel="noopener">babylon.js</a>. If the model
-      appears correctly in one or more applications,
-      <a href="https://github.com/mrdoob/three.js/issues/new" target="_blank" rel="noopener">file a bug against three.js</a>.
-      If the model cannot be shown in any application, we strongly encourage
-      filing a bug with the application used to create the model.
+		请在别的应用程序中查看3D模型。对于glTF格式的模型来说,可以直接在下面的应用程序中进行查看:
+      <a href="https://gltf-viewer.donmccurdy.com/" target="_blank" rel="noopener">three.js</a>和
+	  <a href="http://sandbox.babylonjs.com/" target="_blank" rel="noopener">babylon.js</a>。
+	 如果该模型能够在一个或者更多应用程序里正确地呈现,请<a href="https://github.com/mrdoob/three.js/issues/new" target="_blank" rel="noopener">点击这里向three.js提交Bug报告</a>。
+	 如果模型不能在任意一个应用程序里显示,我们强烈鼓励你向我们提交Bug报告,并告知我们你的模型是使用哪一款应用程序创建的。
+
     </li>
     <li>
-      Try scaling the model up or down by a factor of 1000. Many models are
-      scaled differently, and large models may not appear if the camera is
-      inside the model.
+		尝试将模型放大或缩小到原来的1000倍。许多模型的缩放比例各不相同,倘若摄像机位于相机内,则大型模型将可能不会显示。
     </li>
     <li>
-      Look for failed texture requests in the network tab, like
-      <em>C:\\Path\To\Model\texture.jpg</em>. Use paths relative to your
-      model instead, such as <em>images/texture.jpg</em> — this may require
-      editing the model file in a text editor.
+		在网络面板中查找失败的纹理贴图请求,像<em>C:\\Path\To\Model\texture.jpg</em>。使用相对于你的模型的文件路径,例如
+		<em>images/texture.jpg</em>——这或许需要在文本编辑器中来对模型文件进行修改。
     </li>
   </ol>
 
-  <h2>Asking for help</h2>
+  <h2>请求帮助</h2>
 
   <p>
-    If you've gone through the troubleshooting process above and your model
-    still isn't working, the right approach to asking for help will get you to
-    a solution faster. Post a question on the
-    <a href="https://discourse.threejs.org/" target="_blank" rel="noopener">three.js forum</a> and, whenever possible,
-    include your model (or a simpler model with the same problem) in any formats
-    you have available. Include enough information for someone else to reproduce
-    the issue quickly — ideally, a live demo.
+	倘若你已经尝试经历了以上故障排除的过程,但是你的模型仍然无法工作,寻求正确的方法来获得帮助将使您更快地获得解决方案。
+您可以将您的问题发布到<a href="https://discourse.threejs.org/" target="_blank" rel="noopener">three.js forum</a>,
+	同时,尽可能将你的模型(或者一个简单的、具有相同问题的模型)包含在你能够使用的任何格式中,为其他人提供足够的信息,以便快速重现这个问题——最好是一个能够现场演示的Demo。
   </p>
 
 </body>

+ 17 - 16
docs/manual/zh/introduction/Matrix-transformations.html

@@ -11,55 +11,56 @@
 		<h1>[name]</h1>
 
 		<p>
-		Three.js uses *matrices* to encode 3D transformations---translations (position), rotations, and scaling. Every instance of [page:Object3D] has a [page:Object3D.matrix matrix] which stores that object's position, rotation, and scale. This page describes how to update an object's transformation.
+				Three.js使用*matrix*编码3D变换 - 平移(位置),旋转和缩放。 [page:Object3D]的每个实例都有一个[page:Object3D.matrix matrix],用于存储该对象的位置,旋转和比例。 本页介绍如何更新对象的转换。
 		</p>
 
-		<h2>Convenience properties and *matrixAutoUpdate*</h2>
+		<h2>Convenience properties and *matrixAutoUpdate*(便利属性和 *matrixAutoUpdate*)</h2>
 
-		There are two ways to update an object's transformation:
+		有两种方法可以更新对象的转换:
 		<ol>
 			<li>
-				Modify the object's *position*, *quaternion*, and *scale* properties, and let three.js recompute
-				the object's matrix from these properties:
+				修改对象的* position *,* quaternion *和* scale *属性,让three.js重新计算
+				来自这些属性的对象矩阵:
 				<code>
 				object.position.copy(start_position);
 				object.quaternion.copy(quaternion);
 				</code>
-				By default, the *matrixAutoUpdate* property is set true, and the matrix will be automatically recalculated.
-				If the object is static, or you wish to manually control when recalculation occurs, better performance can be obtained by setting the property false:
+				默认情况下,* matrixAutoUpdate *属性设置为true,并且将自动重新计算矩阵。
+如果对象是静态的,或者您希望在重新计算时手动控制,则可以通过将属性设置为false来获得更好的性能:
 				<code>
 				object.matrixAutoUpdate = false;
 				</code>
-				And after changing any properties, manually update the matrix:
+				更改任何属性后,手动更新矩阵:
 				<code>
 				object.updateMatrix();
 				</code>
 			</li>
 			<li>
-				Modify the object's matrix directly. The [page:Matrix4] class has various methods for modifying the matrix:
+				直接修改对象的矩阵。 [page:Matrix4]类有各种修改矩阵的方法:
 				<code>
 				object.matrix.setRotationFromQuaternion(quaternion);
 				object.matrix.setPosition(start_position);
 				object.matrixAutoUpdate = false;
 				</code>
-				Note that *matrixAutoUpdate* <em>must</em> be set to *false* in this case, and you should make sure <em>not</em> to call *updateMatrix*. Calling *updateMatrix* will clobber the manual changes made to the matrix, recalculating the matrix from *position*, *scale*, and so on.
+				请注意,在这种情况下,* 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>
-		An object's [page:Object3D.matrix matrix] stores the object's transformation <em>relative</em> to the object's [page:Object3D.parent parent]; to get the object's transformation in <em>world</em> coordinates, you must access the object's [page:Object3D.matrixWorld].
+		对象的[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 
 		</p>
 		<p>
-		When either the parent or the child object's transformation changes, you can request that the child object's [page:Object3D.matrixWorld matrixWorld] be updated by calling [page:Object3D.updateMatrixWorld updateMatrixWorld]().
+		当父对象或子对象的转换发生更改时,可以通过调用[page:Object3D.updateMatrixWorld updateMatrixWorld]()来请求更新子对象的[page:Object3D.matrixWorld matrixWorld]。
 		</p>
 
-		<h2>Rotation and Quaternion</h2>
+		<h2>Rotation and Quaternion(旋转和四元数)</h2>
 		<p>
-		Three.js provides two ways of representing 3D rotations: [page:Euler Euler angles] and [page:Quaternion Quaternions], as well as methods for converting between the two. Euler angles are subject to a problem called "gimbal lock," where certain configurations can lose a degree of freedom (preventing the object from being rotated about one axis). For this reason, object rotations are <em>always</em> stored in the object's [page:Object3D.quaternion quaternion].
+		Three.js提供了两种表示3D旋转的方式:[page:Euler Euler angles]和[page:Quaternion Quaternions],以及两者之间的转换方法。 欧拉角受到称为“万向节锁定”的问题,其中某些配置可能失去一定程度的自由度(防止物体绕一个轴旋转)。 因此,对象旋转<em>始终</em>存储在对象的[page:Object3D.quaternion quaternion]中。
 		</p>
 		<p>
-		Previous versions of the library included a *useQuaternion* property which, when set to false, would cause the object's [page:Object3D.matrix matrix] to be calculated from an Euler angle. This practice is deprecated---instead, you should use the [page:Object3D.setRotationFromEuler setRotationFromEuler] method, which will update the quaternion.
+		该库的早期版本包含* useQuaternion *属性,当设置为false时,将导致对象的[page:Object3D.matrix矩阵]从欧拉角计算。 这种做法已被弃用 - 相反,您应该使用[page:Object3D.setRotationFromEuler setRotationFromEuler]方法,该方法将更新四元数。	
 		</p>
 
 	</body>

+ 5 - 6
docs/manual/zh/introduction/Migration-guide.html

@@ -8,13 +8,12 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</a></h1>
-
+		<h1>迁移指南([name])</h1>
 		<p class="desc">
-			The migration guide is maintained on the [link:https://github.com/mrdoob/three.js/wiki wiki].
-			It contains a list of changes for each version of three.js going back to r45.<br /><br />
-
-			You can find it [link:https://github.com/mrdoob/three.js/wiki/Migration-Guide here].
+			迁移指南保留在[link:https://github.com/mrdoob/three.js/wiki wiki]中。
+			它包含了从r45起,直到当前版本的每一个版本的更改列表。
+			<br /><br />
+			你可以在这里找到:[link:https://github.com/mrdoob/three.js/wiki/Migration-Guide here]。
 		</p>
 	</body>
 </html>

+ 21 - 25
docs/manual/zh/introduction/Useful-links.html

@@ -8,30 +8,28 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1><br />
+		<h1>一些有用的链接([name]</h1><br />
 
 		<p class="desc">
-			The following is a collection of links that you might find useful when learning three.js.<br />
-			If you find something that you'd like to add here, or think that one of the links below is no longer
-			relevant or working, feel free to click the 'edit' button in the top right and make some changes!<br /><br />
+			下面是一些你在学习three.js过程中或许对你有很大帮助的链接。<br />
+			如果你发现了一些你想要在这里添加的东西,或者下面的某些链接已经不再可用,请尽情点击右上角的编辑按钮来做一些修改。<br /><br />
+请注意,three.js目前正处于快速发展的阶段,这里的很多链接已经过时了;如果一些东西没有按照你所预想情况、或者以下链接中所说的情况来工作,请查看
+浏览器的Console中的错误或者警告,以及相应的文档,特别是[page:DeprecatedList](弃用清单)。<br /><br />
 
-			Note also that as three.js is under rapid development, a lot of these links will contain information that is
-			out of date - if something isn't working as you'd expect or as one of these links says it should,
-			check the browser console for warnings or errors, the relevant docs pages and especially the [page:DeprecatedList].<br /><br />
-
-			In addition to this page, mrdoob maintains a collection of links related to three.js over on Google+.
-			Check them out <a href="https://plus.google.com/+ThreejsOrg">here</a>.
+此外除了这个页面,mrdoob还在Google+上维护了一些和three.js相关的链接。
+<a href="https://plus.google.com/+ThreejsOrg">点击这里</a>来查看它们。
 		</p>
 
-		<h2>Help forums</h2>
+		<h2>帮助论坛</h2>
 		<p>
-			Three.js officially uses [link:http://stackoverflow.com/tags/three.js/info Stack Overflow] for help requests.
-			If you need assistance with something, that's the place to go. Do NOT open an issue on Github for help requests.
+			Three.js官方使用[link:http://stackoverflow.com/tags/three.js/info Stack Overflow]来处理帮助请求。
+			如果你需要一些帮助,这才是你所要去的地方。请<strong>一定不要</strong>在GitHub上提issue来寻求帮助。
+		
 		</p>
 
-		<h2>Tutorials and courses</h2>
+		<h2>教程以及课程</h2>
 
-		<h3>Getting started with three.js</h3>
+		<h3>three.js入门</h3>
 		<ul>
 			<li>
 				[link:https://codepen.io/rachsmith/post/beginning-with-3d-webgl-pt-1-the-scene Beginning with 3D WebGL] by [link:https://codepen.io/rachsmith/ Rachel Smith].
@@ -41,7 +39,7 @@
 			</li>
 		</ul>
 
-		<h3>More extensive / advanced articles and courses</h3>
+		<h3>更加广泛、高级的文章与教程</h3>
 		<ul>
 			<li>
 				[link:http://blog.cjgammon.com/ Collection of tutorials] by [link:http://www.cjgammon.com/ CJ Gammon].
@@ -65,7 +63,7 @@
 		 </li>
 		</ul>
 
-		<h3>Tutorials in other languages</h3>
+		<h3>其它非英语的教程</h3>
 		<ul>
 			<li>
 				[link:http://www.natural-science.or.jp/article/20120220155529.php Building A Physics Simulation Environment] - three.js tutorial in Japanese
@@ -73,7 +71,7 @@
 
 		</ul>
 
-		<h2>News and Updates</h2>
+		<h2>新闻与更新</h2>
 		<ul>
 			<li>
 				[link:http://www.reddit.com/r/threejs/ Three.js on reddit]
@@ -88,8 +86,7 @@
 				[link:https://plus.google.com/104300307601542851567/posts Three.js posts] on Google+ – frequent posts on Three.js
 			</li>
 		</ul>
-
-		<h2>Examples</h2>
+		<h2>示例</h2>
 		<ul>
 			<li>
 				[link:https://github.com/edwinwebb/three-seed/ three-seed] - three.js starter project with ES6 and Webpack
@@ -109,7 +106,7 @@
 			</li>
 		</ul>
 
-	 <h2>Tools</h2>
+	 <h2>工具</h2>
 	 <ul>
 		 <li>
 			[link:http://www.physgl.org/ physgl.org] - javascript front-end with wrappers to three.js, to bring WebGL
@@ -127,17 +124,16 @@
 		</li>
 	 </ul>
 		
-	<h2>WebGL References</h2>
+	<h2>WebGL参考</h2>
 	 <ul>
 		 <li>
 			[link:https://www.khronos.org/files/webgl/webgl-reference-card-1_0.pdf] - Reference of all WebGL and GLSL keywords, terminology, syntex and definations.
 		 </li>
 	 </ul>
 
-	 <h2>Old Links</h2>
+	 <h2>较旧的链接</h2>
 	 <p>
-		These links are kept for historical purposes - you may still find them useful, but be warned that
-		they may have information relating to very old versions of three.js.
+		 这些链接是出于历史的目的而保留的,你或许可以发现它们仍然很有用,但是它们可能含有和three.js非常老旧的版本有关的信息。
 	 </p>
 
 	 <ul>

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

@@ -8,16 +8,14 @@
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
-		<h1>[name]</h1><br />
+		<h1>WebGL兼容性检查([name]</h1><br />
 		<p>
-			Even though this is becoming less and less of a problem, some devices or browsers may still not support WebGL.
-			The following method allows you to check if it is supported and display a message to the user if it is not.
+            虽然这个问题现在已经变得越来越小,但不得不说,有的设备或者浏览器直到现在仍然不支持WebGL。<br>以下的方法可以帮助你检测当前用户所使用的环境是否支持WebGL,倘若不支持,将向用户显示一条信息。
 		</p>
 
 		<p>
-			Add	[link:https://github.com/mrdoob/three.js/blob/master/examples/js/Detector.js]
-			to your javascript and run the following before attempting to render anything.
-		</p>
+			请将[link:https://github.com/mrdoob/three.js/blob/master/examples/js/Detector.js]引入到你的文件,并在尝试开始渲染之前先运行该文件。
+        	</p>
 
 <code>
 if (Detector.webgl) {

+ 4 - 0
editor/index.html

@@ -6,6 +6,10 @@
 		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
 		<!-- Origin Trial Token, feature = WebVR (For Chrome M62+), origin = https://threejs.org, expires = 2018-09-11 -->
 		<meta http-equiv="origin-trial" data-feature="WebVR (For Chrome M62+)" data-expires="2018-09-11" content="AqhFUYKxq/d+E8CDT0fuYRCg8TvlTP52x0Jv7I9t27sLhR30LmcahBRfSwzP89ukjs2+ia99VrrLoRyaFAwJVA0AAABQeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJWUjEuMU02MiIsImV4cGlyeSI6MTUzNjYyNDAwMH0=">
+		<!-- Origin Trial Token, feature = WebXR Device API (For Chrome M69+), origin = https://threejs.org, expires = 2018-10-27 -->
+		<meta http-equiv="origin-trial" data-feature="WebXR Device API (For Chrome M69+)" data-expires="2018-10-27" content="An4ZYOGvf6kVHNxqZxS02TPAvpZESkmBhcVCM/byViDDuEB2XKvCF43aCJjrAU/R8H3WDlv+1bDGTL/XxstHGgoAAABTeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkRldmljZU02OSIsImV4cGlyeSI6MTU0MDY1NTAyMn0=">
+		<!-- Origin Trial Token, feature = WebXR Gamepad Support, origin = https://threejs.org, expires = 2018-10-24 -->
+		<meta http-equiv="origin-trial" data-feature="WebXR Gamepad Support" data-expires="2018-10-24" content="Agrr6lZhlwzv5jmv/mpLZA37DIiVcg3HvX8bH8EWB+OBruV3sUJuzDfYz6qs/je+LcH41DkrmPn4k9RaUaqpQAAAAABYeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkdhbWVwYWRTdXBwb3J0IiwiZXhwaXJ5IjoxNTQwMzg4NjI0fQ==">
 	</head>
 	<body ontouchstart="">
 		<link href="css/main.css" rel="stylesheet" />

+ 2 - 0
examples/files.js

@@ -59,6 +59,7 @@ var files = {
 		"webgl_interactive_raycasting_points",
 		"webgl_interactive_voxelpainter",
 		"webgl_kinect",
+		"webgl_layers",
 		"webgl_lensflares",
 		"webgl_lights_hemisphere",
 		"webgl_lights_physical",
@@ -172,6 +173,7 @@ var files = {
 		"webgl_materials_texture_manualmipmap",
 		"webgl_materials_texture_partialupdate",
 		"webgl_materials_texture_rotation",
+		"webgl_materials_texture3d_volume",
 		"webgl_materials_translucency",
 		"webgl_materials_transparency",
 		"webgl_materials_variations_basic",

+ 63 - 6
examples/js/controls/PointerLockControls.js

@@ -1,11 +1,15 @@
 /**
  * @author mrdoob / http://mrdoob.com/
+ * @author Mugen87 / https://github.com/Mugen87
  */
 
-THREE.PointerLockControls = function ( camera ) {
+THREE.PointerLockControls = function ( camera, domElement ) {
 
 	var scope = this;
 
+	this.domElement = domElement || document.body;
+	this.isLocked = false;
+
 	camera.rotation.set( 0, 0, 0 );
 
 	var pitchObject = new THREE.Object3D();
@@ -17,9 +21,9 @@ THREE.PointerLockControls = function ( camera ) {
 
 	var PI_2 = Math.PI / 2;
 
-	var onMouseMove = function ( event ) {
+	function onMouseMove( event ) {
 
-		if ( scope.enabled === false ) return;
+		if ( scope.isLocked === false ) return;
 
 		var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
 		var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
@@ -29,17 +33,53 @@ THREE.PointerLockControls = function ( camera ) {
 
 		pitchObject.rotation.x = Math.max( - PI_2, Math.min( PI_2, pitchObject.rotation.x ) );
 
+	}
+
+	function onPointerlockChange() {
+
+		if ( document.pointerLockElement === scope.domElement ) {
+
+			scope.dispatchEvent( { type: 'lock' } );
+
+			scope.isLocked = true;
+
+		} else {
+
+			scope.dispatchEvent( { type: 'unlock' } );
+
+			scope.isLocked = false;
+
+		}
+
+	}
+
+	function onPointerlockError() {
+
+		console.error( 'THREE.PointerLockControls: Unable to use Pointer Lock API' );
+
+	}
+
+	this.connect = function () {
+
+		document.addEventListener( 'mousemove', onMouseMove, false );
+		document.addEventListener( 'pointerlockchange', onPointerlockChange, false );
+		document.addEventListener( 'pointerlockerror', onPointerlockError, false );
+
 	};
 
-	this.dispose = function () {
+	this.disconnect = function () {
 
 		document.removeEventListener( 'mousemove', onMouseMove, false );
+		document.removeEventListener( 'pointerlockchange', onPointerlockChange, false );
+		document.removeEventListener( 'pointerlockerror', onPointerlockError, false );
 
 	};
 
-	document.addEventListener( 'mousemove', onMouseMove, false );
+	this.dispose = function () {
+
+		this.disconnect();
 
-	this.enabled = false;
+	};
 
 	this.getObject = function () {
 
@@ -66,4 +106,21 @@ THREE.PointerLockControls = function ( camera ) {
 
 	}();
 
+	this.lock = function () {
+
+		this.domElement.requestPointerLock();
+
+	};
+
+	this.unlock = function () {
+
+		document.exitPointerLock();
+
+	};
+
+	this.connect();
+
 };
+
+THREE.PointerLockControls.prototype = Object.create( THREE.EventDispatcher.prototype );
+THREE.PointerLockControls.prototype.constructor = THREE.PointerLockControls;

+ 18 - 3
examples/js/loaders/AssimpJSONLoader.js

@@ -27,9 +27,10 @@ THREE.AssimpJSONLoader.prototype = {
 
 		var scope = this;
 
-		var path = THREE.LoaderUtils.extractUrlBase( url );
+		var path = ( scope.path === undefined ) ? THREE.LoaderUtils.extractUrlBase( url ) : scope.path;
 
 		var loader = new THREE.FileLoader( this.manager );
+		loader.setPath( scope.path );
 		loader.load( url, function ( text ) {
 
 			var json = JSON.parse( text );
@@ -47,7 +48,7 @@ THREE.AssimpJSONLoader.prototype = {
 					onError( 'THREE.AssimpJSONLoader: Not an assimp2json scene.' );
 					return;
 
-				// check major format version
+					// check major format version
 
 				} else if ( metadata.version < 100 && metadata.version >= 200 ) {
 
@@ -64,6 +65,20 @@ THREE.AssimpJSONLoader.prototype = {
 
 	},
 
+	setPath: function ( value ) {
+
+		this.path = value;
+		return this;
+
+	},
+
+	setResourcePath: function ( value ) {
+
+		this.resourcePath = value;
+		return this;
+
+	},
+
 	setCrossOrigin: function ( value ) {
 
 		this.crossOrigin = value;
@@ -263,7 +278,7 @@ THREE.AssimpJSONLoader.prototype = {
 		}
 
 		var textureLoader = new THREE.TextureLoader( this.manager );
-		textureLoader.setPath( path ).setCrossOrigin( this.crossOrigin );
+		textureLoader.setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );
 
 		var meshes = parseList( json.meshes, parseMesh );
 		var materials = parseList( json.materials, parseMaterial );

+ 17 - 2
examples/js/loaders/AssimpLoader.js

@@ -18,9 +18,10 @@ THREE.AssimpLoader.prototype = {
 
 		var scope = this;
 
-		var path = THREE.LoaderUtils.extractUrlBase( url );
+		var path = ( scope.path === undefined ) ? THREE.LoaderUtils.extractUrlBase( url ) : scope.path;
 
 		var loader = new THREE.FileLoader( this.manager );
+		loader.setPath( scope.path );
 		loader.setResponseType( 'arraybuffer' );
 
 		loader.load( url, function ( buffer ) {
@@ -31,6 +32,20 @@ THREE.AssimpLoader.prototype = {
 
 	},
 
+	setPath: function ( value ) {
+
+		this.path = value;
+		return this;
+
+	},
+
+	setResourcePath: function ( value ) {
+
+		this.resourcePath = value;
+		return this;
+
+	},
+
 	setCrossOrigin: function ( value ) {
 
 		this.crossOrigin = value;
@@ -41,7 +56,7 @@ THREE.AssimpLoader.prototype = {
 	parse: function ( buffer, path ) {
 
 		var textureLoader = new THREE.TextureLoader( this.manager );
-		textureLoader.setPath( path ).setCrossOrigin( this.crossOrigin );
+		textureLoader.setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );
 
 		var Virtulous = {};
 

+ 11 - 3
examples/js/loaders/ColladaLoader.js

@@ -19,9 +19,10 @@ THREE.ColladaLoader.prototype = {
 
 		var scope = this;
 
-		var path = scope.path === undefined ? THREE.LoaderUtils.extractUrlBase( url ) : scope.path;
+		var path = ( scope.path === undefined ) ? THREE.LoaderUtils.extractUrlBase( url ) : scope.path;
 
 		var loader = new THREE.FileLoader( scope.manager );
+		loader.setPath( scope.path );
 		loader.load( url, function ( text ) {
 
 			onLoad( scope.parse( text, path ) );
@@ -37,6 +38,13 @@ THREE.ColladaLoader.prototype = {
 
 	},
 
+	setResourcePath: function ( value ) {
+
+		this.resourcePath = value;
+		return this;
+
+	},
+
 	options: {
 
 		set convertUpAxis( value ) {
@@ -3801,14 +3809,14 @@ THREE.ColladaLoader.prototype = {
 
 		var asset = parseAsset( getElementsByTagName( collada, 'asset' )[ 0 ] );
 		var textureLoader = new THREE.TextureLoader( this.manager );
-		textureLoader.setPath( path ).setCrossOrigin( this.crossOrigin );
+		textureLoader.setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );
 
 		var tgaLoader;
 
 		if ( THREE.TGALoader ) {
 
 			tgaLoader = new THREE.TGALoader( this.manager );
-			tgaLoader.setPath( path );
+			tgaLoader.setPath( this.resourcePath || path );
 
 		}
 

+ 234 - 119
examples/js/loaders/FBXLoader.js

@@ -38,18 +38,19 @@ THREE.FBXLoader = ( function () {
 		crossOrigin: 'anonymous',
 
 		load: function ( url, onLoad, onProgress, onError ) {
+
 			var self = this;
 
-			var resourceDirectory = THREE.LoaderUtils.extractUrlBase( url );
+			var path = ( self.path === undefined ) ? THREE.LoaderUtils.extractUrlBase( url ) : self.path;
 
 			var loader = new THREE.FileLoader( this.manager );
 			loader.setResponseType( 'arraybuffer' );
+
 			loader.load( url, function ( buffer ) {
 
 				try {
 
-					var scene = self.parse( buffer, resourceDirectory );
-					onLoad( scene );
+					onLoad( self.parse( buffer, path ) );
 
 				} catch ( error ) {
 
@@ -64,6 +65,21 @@ THREE.FBXLoader = ( function () {
 				}
 
 			}, onProgress, onError );
+
+		},
+
+		setPath: function ( value ) {
+
+			this.path = value;
+			return this;
+
+		},
+
+		setResourcePath: function ( value ) {
+
+			this.resourcePath = value;
+			return this;
+
 		},
 
 		setCrossOrigin: function ( value ) {
@@ -73,7 +89,7 @@ THREE.FBXLoader = ( function () {
 
 		},
 
-		parse: function ( FBXBuffer, resourceDirectory ) {
+		parse: function ( FBXBuffer, path ) {
 
 			if ( isFbxFormatBinary( FBXBuffer ) ) {
 
@@ -101,7 +117,7 @@ THREE.FBXLoader = ( function () {
 
 			// console.log( fbxTree );
 
-			var textureLoader = new THREE.TextureLoader( this.manager ).setPath( resourceDirectory ).setCrossOrigin( this.crossOrigin );
+			var textureLoader = new THREE.TextureLoader( this.manager ).setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );
 
 			return new FBXTreeParser( textureLoader ).parse( fbxTree );
 
@@ -280,7 +296,10 @@ THREE.FBXLoader = ( function () {
 
 						if ( THREE.Loader.Handlers.get( '.tga' ) === null ) {
 
-							THREE.Loader.Handlers.add( /\.tga$/i, new THREE.TGALoader() );
+							var tgaLoader = new THREE.TGALoader();
+							tgaLoader.setPath( this.textureLoader.path );
+
+							THREE.Loader.Handlers.add( /\.tga$/i, tgaLoader );
 
 						}
 
@@ -710,9 +729,9 @@ THREE.FBXLoader = ( function () {
 					ID: child.ID,
 					indices: [],
 					weights: [],
-					transform: new THREE.Matrix4().fromArray( boneNode.Transform.a ),
 					transformLink: new THREE.Matrix4().fromArray( boneNode.TransformLink.a ),
-					linkMode: boneNode.Mode,
+					// transform: new THREE.Matrix4().fromArray( boneNode.Transform.a ),
+					// linkMode: boneNode.Mode,
 
 				};
 
@@ -813,6 +832,20 @@ THREE.FBXLoader = ( function () {
 
 			this.setupMorphMaterials();
 
+			sceneGraph.traverse( function ( node ) {
+
+				if ( node.userData.transformData ) {
+
+					if ( node.parent ) node.userData.transformData.parentMatrixWorld = node.parent.matrix;
+
+					var transform = generateTransform( node.userData.transformData );
+
+					node.applyMatrix( transform );
+
+				}
+
+			} );
+
 			var animations = new AnimationParser().parse();
 
 			// if all the models where already combined in a single group, just return that
@@ -857,7 +890,10 @@ THREE.FBXLoader = ( function () {
 						case 'NurbsCurve':
 							model = this.createCurve( relationships, geometryMap );
 							break;
-						case 'LimbNode': // usually associated with a Bone, however if a Bone was not created we'll make a Group instead
+						case 'LimbNode':
+						case 'Root':
+							model = new THREE.Bone();
+							break;
 						case 'Null':
 						default:
 							model = new THREE.Group();
@@ -870,7 +906,7 @@ THREE.FBXLoader = ( function () {
 
 				}
 
-				this.setModelTransforms( model, node );
+				this.getTransformData( model, node );
 				modelMap.set( id, model );
 
 			}
@@ -895,6 +931,7 @@ THREE.FBXLoader = ( function () {
 
 							var subBone = bone;
 							bone = new THREE.Bone();
+
 							bone.matrixWorld.copy( rawBone.transformLink );
 
 							// set name and id here - otherwise in cases where "subBone" is created it will not have a name / id
@@ -1108,9 +1145,9 @@ THREE.FBXLoader = ( function () {
 						var penumbra = 0;
 						if ( lightAttribute.OuterAngle !== undefined ) {
 
-						// TODO: this is not correct - FBX calculates outer and inner angle in degrees
-						// with OuterAngle > InnerAngle && OuterAngle <= Math.PI
-						// while three.js uses a penumbra between (0, 1) to attenuate the inner angle
+							// TODO: this is not correct - FBX calculates outer and inner angle in degrees
+							// with OuterAngle > InnerAngle && OuterAngle <= Math.PI
+							// while three.js uses a penumbra between (0, 1) to attenuate the inner angle
 							penumbra = THREE.Math.degToRad( lightAttribute.OuterAngle.value );
 							penumbra = Math.max( penumbra, 1 );
 
@@ -1223,22 +1260,31 @@ THREE.FBXLoader = ( function () {
 
 		},
 
-		// parse the model node for transform details and apply them to the model
-		setModelTransforms: function ( model, modelNode ) {
+		// parse the model node for transform data
+		getTransformData: function ( model, modelNode ) {
 
 			var transformData = {};
 
-			if ( 'RotationOrder' in modelNode ) transformData.eulerOrder = parseInt( modelNode.RotationOrder.value );
+			if ( 'InheritType' in modelNode ) transformData.inheritType = parseInt( modelNode.InheritType.value );
+
+			if ( 'RotationOrder' in modelNode ) transformData.eulerOrder = getEulerOrder( modelNode.RotationOrder.value );
+			else transformData.eulerOrder = 'ZYX';
+
 			if ( 'Lcl_Translation' in modelNode ) transformData.translation = modelNode.Lcl_Translation.value;
-			if ( 'RotationOffset' in modelNode ) transformData.rotationOffset = modelNode.RotationOffset.value;
-			if ( 'Lcl_Rotation' in modelNode ) transformData.rotation = modelNode.Lcl_Rotation.value;
+
 			if ( 'PreRotation' in modelNode ) transformData.preRotation = modelNode.PreRotation.value;
+			if ( 'Lcl_Rotation' in modelNode ) transformData.rotation = modelNode.Lcl_Rotation.value;
 			if ( 'PostRotation' in modelNode ) transformData.postRotation = modelNode.PostRotation.value;
+
 			if ( 'Lcl_Scaling' in modelNode ) transformData.scale = modelNode.Lcl_Scaling.value;
 
-			var transform = generateTransform( transformData );
+			if ( 'ScalingOffset' in modelNode ) transformData.scalingOffset = modelNode.ScalingOffset.value;
+			if ( 'ScalingPivot' in modelNode ) transformData.scalingPivot = modelNode.ScalingPivot.value;
+
+			if ( 'RotationOffset' in modelNode ) transformData.rotationOffset = modelNode.RotationOffset.value;
+			if ( 'RotationPivot' in modelNode ) transformData.rotationPivot = modelNode.RotationPivot.value;
 
-			model.applyMatrix( transform );
+			model.userData.transformData = transformData;
 
 		},
 
@@ -1378,31 +1424,26 @@ THREE.FBXLoader = ( function () {
 
 		setupMorphMaterials: function () {
 
+			var self = this;
 			sceneGraph.traverse( function ( child ) {
 
 				if ( child.isMesh ) {
 
-					if ( child.geometry.morphAttributes.position || child.geometry.morphAttributes.normal ) {
-
-						var uuid = child.uuid;
-						var matUuid = child.material.uuid;
-
-						// if a geometry has morph targets, it cannot share the material with other geometries
-						var sharedMat = false;
+					if ( child.geometry.morphAttributes.position && child.geometry.morphAttributes.position.length ) {
 
-						sceneGraph.traverse( function ( child ) {
+						if ( Array.isArray( child.material ) ) {
 
-							if ( child.isMesh ) {
+							child.material.forEach( function ( material, i ) {
 
-								if ( child.material.uuid === matUuid && child.uuid !== uuid ) sharedMat = true;
+								self.setupMorphMaterial( child, material, i );
 
-							}
+							} );
 
-						} );
+						} else {
 
-						if ( sharedMat === true ) child.material = child.material.clone();
+							self.setupMorphMaterial( child, child.material );
 
-						child.material.morphTargets = true;
+						}
 
 					}
 
@@ -1412,6 +1453,44 @@ THREE.FBXLoader = ( function () {
 
 		},
 
+		setupMorphMaterial: function ( child, material, index ) {
+
+			var uuid = child.uuid;
+			var matUuid = material.uuid;
+
+			// if a geometry has morph targets, it cannot share the material with other geometries
+			var sharedMat = false;
+
+			sceneGraph.traverse( function ( node ) {
+
+				if ( node.isMesh ) {
+
+					if ( Array.isArray( node.material ) ) {
+
+						node.material.forEach( function ( mat ) {
+
+							if ( mat.uuid === matUuid && node.uuid !== uuid ) sharedMat = true;
+
+						} );
+
+					} else if ( node.material.uuid === matUuid && node.uuid !== uuid ) sharedMat = true;
+
+				}
+
+			} );
+
+			if ( sharedMat === true ) {
+
+				var clonedMat = material.clone();
+				clonedMat.morphTargets = true;
+
+				if ( index === undefined ) child.material = clonedMat;
+				else child.material[ index ] = clonedMat;
+
+			} else material.morphTargets = true;
+
+		}
+
 	};
 
 	// parse Geometry data from FBXTree and return map of BufferGeometries
@@ -1493,16 +1572,15 @@ THREE.FBXLoader = ( function () {
 
 			}, null );
 
-			// TODO: if there is more than one model associated with the geometry, AND the models have
-			// different geometric transforms, then this will cause problems
-			// if ( modelNodes.length > 1 ) { }
-
-			// For now just assume one model and get the preRotations from that
+			// Assume one model and get the preRotation from that
+			// if there is more than one model associated with the geometry this may cause problems
 			var modelNode = modelNodes[ 0 ];
 
 			var transformData = {};
 
-			if ( 'RotationOrder' in modelNode ) transformData.eulerOrder = modelNode.RotationOrder.value;
+			if ( 'RotationOrder' in modelNode ) transformData.eulerOrder = getEulerOrder( modelNode.RotationOrder.value );
+			if ( 'InheritType' in modelNode ) transformData.inheritType = parseInt( modelNode.InheritType.value );
+
 			if ( 'GeometricTranslation' in modelNode ) transformData.translation = modelNode.GeometricTranslation.value;
 			if ( 'GeometricRotation' in modelNode ) transformData.rotation = modelNode.GeometricRotation.value;
 			if ( 'GeometricScaling' in modelNode ) transformData.scale = modelNode.GeometricScaling.value;
@@ -2256,7 +2334,6 @@ THREE.FBXLoader = ( function () {
 
 			var animationClips = [];
 
-
 			var rawClips = this.parseClips();
 
 			if ( rawClips === undefined ) return;
@@ -2400,7 +2477,6 @@ THREE.FBXLoader = ( function () {
 					// all the animationCurveNodes used in the layer
 					var children = connection.children;
 
-					var self = this;
 					children.forEach( function ( child, i ) {
 
 						if ( curveNodesMap.has( child.ID ) ) {
@@ -2425,17 +2501,31 @@ THREE.FBXLoader = ( function () {
 									var node = {
 
 										modelName: THREE.PropertyBinding.sanitizeNodeName( rawModel.attrName ),
+										ID: rawModel.id,
 										initialPosition: [ 0, 0, 0 ],
 										initialRotation: [ 0, 0, 0 ],
 										initialScale: [ 1, 1, 1 ],
-										transform: self.getModelAnimTransform( rawModel ),
 
 									};
 
+									sceneGraph.traverse( function ( child ) {
+
+										if ( child.ID = rawModel.id ) {
+
+											node.transform = child.matrix;
+
+											if ( child.userData.transformData ) node.eulerOrder = child.userData.transformData.eulerOrder;
+
+										}
+
+									} );
+
+									if ( ! node.transform ) node.transform = new THREE.Matrix4();
+
 									// if the animated model is pre rotated, we'll have to apply the pre rotations to every
 									// animation value as well
-									if ( 'PreRotation' in rawModel ) node.preRotations = rawModel.PreRotation.value;
-									if ( 'PostRotation' in rawModel ) node.postRotations = rawModel.PostRotation.value;
+									if ( 'PreRotation' in rawModel ) node.preRotation = rawModel.PreRotation.value;
+									if ( 'PostRotation' in rawModel ) node.postRotation = rawModel.PostRotation.value;
 
 									layerCurveNodes[ i ] = node;
 
@@ -2492,26 +2582,6 @@ THREE.FBXLoader = ( function () {
 
 		},
 
-		getModelAnimTransform: function ( modelNode ) {
-
-			var transformData = {};
-
-			if ( 'RotationOrder' in modelNode ) transformData.eulerOrder = parseInt( modelNode.RotationOrder.value );
-
-			if ( 'Lcl_Translation' in modelNode ) transformData.translation = modelNode.Lcl_Translation.value;
-			if ( 'RotationOffset' in modelNode ) transformData.rotationOffset = modelNode.RotationOffset.value;
-
-			if ( 'Lcl_Rotation' in modelNode ) transformData.rotation = modelNode.Lcl_Rotation.value;
-			if ( 'PreRotation' in modelNode ) transformData.preRotation = modelNode.PreRotation.value;
-
-			if ( 'PostRotation' in modelNode ) transformData.postRotation = modelNode.PostRotation.value;
-
-			if ( 'Lcl_Scaling' in modelNode ) transformData.scale = modelNode.Lcl_Scaling.value;
-
-			return generateTransform( transformData );
-
-		},
-
 		// parse nodes in FBXTree.Objects.AnimationStack. These are the top level node in the animation
 		// hierarchy. Each Stack node will be used to create a THREE.AnimationClip
 		parseAnimStacks: function ( layersMap ) {
@@ -2574,7 +2644,7 @@ THREE.FBXLoader = ( function () {
 			if ( rawTracks.transform ) rawTracks.transform.decompose( initialPosition, initialRotation, initialScale );
 
 			initialPosition = initialPosition.toArray();
-			initialRotation = new THREE.Euler().setFromQuaternion( initialRotation ).toArray(); // todo: euler order
+			initialRotation = new THREE.Euler().setFromQuaternion( initialRotation, rawTracks.eulerOrder ).toArray();
 			initialScale = initialScale.toArray();
 
 			if ( rawTracks.T !== undefined && Object.keys( rawTracks.T.curves ).length > 0 ) {
@@ -2586,7 +2656,7 @@ THREE.FBXLoader = ( function () {
 
 			if ( rawTracks.R !== undefined && Object.keys( rawTracks.R.curves ).length > 0 ) {
 
-				var rotationTrack = this.generateRotationTrack( rawTracks.modelName, rawTracks.R.curves, initialRotation, rawTracks.preRotations, rawTracks.postRotations );
+				var rotationTrack = this.generateRotationTrack( rawTracks.modelName, rawTracks.R.curves, initialRotation, rawTracks.preRotation, rawTracks.postRotation, rawTracks.eulerOrder );
 				if ( rotationTrack !== undefined ) tracks.push( rotationTrack );
 
 			}
@@ -2618,7 +2688,7 @@ THREE.FBXLoader = ( function () {
 
 		},
 
-		generateRotationTrack: function ( modelName, curves, initialValue, preRotations, postRotations ) {
+		generateRotationTrack: function ( modelName, curves, initialValue, preRotation, postRotation, eulerOrder ) {
 
 			if ( curves.x !== undefined ) {
 
@@ -2642,23 +2712,23 @@ THREE.FBXLoader = ( function () {
 			var times = this.getTimesForAllAxes( curves );
 			var values = this.getKeyframeTrackValues( times, curves, initialValue );
 
-			if ( preRotations !== undefined ) {
+			if ( preRotation !== undefined ) {
 
-				preRotations = preRotations.map( THREE.Math.degToRad );
-				preRotations.push( 'ZYX' );
+				preRotation = preRotation.map( THREE.Math.degToRad );
+				preRotation.push( eulerOrder );
 
-				preRotations = new THREE.Euler().fromArray( preRotations );
-				preRotations = new THREE.Quaternion().setFromEuler( preRotations );
+				preRotation = new THREE.Euler().fromArray( preRotation );
+				preRotation = new THREE.Quaternion().setFromEuler( preRotation );
 
 			}
 
-			if ( postRotations !== undefined ) {
+			if ( postRotation !== undefined ) {
 
-				postRotations = postRotations.map( THREE.Math.degToRad );
-				postRotations.push( 'ZYX' );
+				postRotation = postRotation.map( THREE.Math.degToRad );
+				postRotation.push( eulerOrder );
 
-				postRotations = new THREE.Euler().fromArray( postRotations );
-				postRotations = new THREE.Quaternion().setFromEuler( postRotations ).inverse();
+				postRotation = new THREE.Euler().fromArray( postRotation );
+				postRotation = new THREE.Quaternion().setFromEuler( postRotation ).inverse();
 
 			}
 
@@ -2669,12 +2739,12 @@ THREE.FBXLoader = ( function () {
 
 			for ( var i = 0; i < values.length; i += 3 ) {
 
-				euler.set( values[ i ], values[ i + 1 ], values[ i + 2 ], 'ZYX' );
+				euler.set( values[ i ], values[ i + 1 ], values[ i + 2 ], eulerOrder );
 
 				quaternion.setFromEuler( euler );
 
-				if ( preRotations !== undefined ) quaternion.premultiply( preRotations );
-				if ( postRotations !== undefined ) quaternion.multiply( postRotations );
+				if ( preRotation !== undefined ) quaternion.premultiply( preRotation );
+				if ( postRotation !== undefined ) quaternion.multiply( postRotation );
 
 				quaternion.toArray( quaternionValues, ( i / 3 ) * 4 );
 
@@ -2954,7 +3024,7 @@ THREE.FBXLoader = ( function () {
 				// if the subnode already exists, append it
 				if ( nodeName in currentNode ) {
 
-				// special case Pose needs PoseNodes as an array
+					// special case Pose needs PoseNodes as an array
 					if ( nodeName === 'PoseNode' ) {
 
 						currentNode.PoseNode.push( node );
@@ -3857,71 +3927,114 @@ THREE.FBXLoader = ( function () {
 
 	}
 
-	var tempMat = new THREE.Matrix4();
 	var tempEuler = new THREE.Euler();
 	var tempVec = new THREE.Vector3();
-	var translation = new THREE.Vector3();
-	var rotation = new THREE.Matrix4();
 
 	// generate transformation from FBX transform data
 	// ref: https://help.autodesk.com/view/FBX/2017/ENU/?guid=__files_GUID_10CDD63C_79C1_4F2D_BB28_AD2BE65A02ED_htm
-	// transformData = {
-	//	 eulerOrder: int,
-	//	 translation: [],
-	//   rotationOffset: [],
-	//	 preRotation
-	//	 rotation
-	//	 postRotation
-	//   scale
-	// }
-	// all entries are optional
+	// ref: http://docs.autodesk.com/FBX/2014/ENU/FBX-SDK-Documentation/index.html?url=cpp_ref/_transformations_2main_8cxx-example.html,topicNumber=cpp_ref__transformations_2main_8cxx_example_htmlfc10a1e1-b18d-4e72-9dc0-70d0f1959f5e
 	function generateTransform( transformData ) {
 
-		var transform = new THREE.Matrix4();
-		translation.set( 0, 0, 0 );
-		rotation.identity();
-
-		var order = ( transformData.eulerOrder ) ? getEulerOrder( transformData.eulerOrder ) : getEulerOrder( 0 );
+		var lTranslationM = new THREE.Matrix4();
+		var lPreRotationM = new THREE.Matrix4();
+		var lRotationM = new THREE.Matrix4();
+		var lPostRotationM = new THREE.Matrix4();
+		var lTransform = new THREE.Matrix4();
 
-		if ( transformData.translation ) translation.fromArray( transformData.translation );
-		if ( transformData.rotationOffset ) translation.add( tempVec.fromArray( transformData.rotationOffset ) );
+		var lScalingM = new THREE.Matrix4();
+		var lScalingPivotM = new THREE.Matrix4();
+		var lScalingOffsetM = new THREE.Matrix4();
+		var lRotationOffsetM = new THREE.Matrix4();
+		var lRotationPivotM = new THREE.Matrix4();
 
-		if ( transformData.rotation ) {
+		var lParentGX = new THREE.Matrix4();
+		var lGlobalT = new THREE.Matrix4();
+		var lGlobalRS = new THREE.Matrix4();
 
-			var array = transformData.rotation.map( THREE.Math.degToRad );
-			array.push( order );
-			rotation.makeRotationFromEuler( tempEuler.fromArray( array ) );
+		var inheritType = ( transformData.inheritType ) ? transformData.inheritType : 0;
 
-		}
+		if ( transformData.translation ) lTranslationM.setPosition( tempVec.fromArray( transformData.translation ) );
 
 		if ( transformData.preRotation ) {
 
 			var array = transformData.preRotation.map( THREE.Math.degToRad );
-			array.push( order );
-			tempMat.makeRotationFromEuler( tempEuler.fromArray( array ) );
+			array.push( transformData.eulerOrder );
+			lPreRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) );
 
-			rotation.premultiply( tempMat );
+		}
+
+		if ( transformData.rotation ) {
+
+			var array = transformData.rotation.map( THREE.Math.degToRad );
+			array.push( transformData.eulerOrder );
+			lRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) );
 
 		}
 
 		if ( transformData.postRotation ) {
 
 			var array = transformData.postRotation.map( THREE.Math.degToRad );
-			array.push( order );
-			tempMat.makeRotationFromEuler( tempEuler.fromArray( array ) );
+			array.push( transformData.eulerOrder );
+			lPostRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) );
+
+		}
+
+		if ( transformData.scale ) lScalingM.scale( tempVec.fromArray( transformData.scale ) );
 
-			tempMat.getInverse( tempMat );
+		// Pivots and offsets
+		if ( transformData.scalingOffset ) lScalingOffsetM.setPosition( tempVec.fromArray( transformData.scalingOffset ) );
+		if ( transformData.scalingPivot ) lScalingPivotM.setPosition( tempVec.fromArray( transformData.scalingPivot ) );
+		if ( transformData.rotationOffset ) lRotationOffsetM.setPosition( tempVec.fromArray( transformData.rotationOffset ) );
+		if ( transformData.rotationPivot ) lRotationPivotM.setPosition( tempVec.fromArray( transformData.rotationPivot ) );
 
-			rotation.multiply( tempMat );
+		// parent transform
+		if ( transformData.parentMatrixWorld ) lParentGX = transformData.parentMatrixWorld;
+
+		// Global Rotation
+		var lLRM = lPreRotationM.multiply( lRotationM ).multiply( lPostRotationM );
+		var lParentGRM = new THREE.Matrix4();
+		lParentGX.extractRotation( lParentGRM );
+
+		// Global Shear*Scaling
+		var lLSM = new THREE.Matrix4();
+		var lParentGSM = new THREE.Matrix4();
+		var lParentGRSM = new THREE.Matrix4();
+		var lParentTM = new THREE.Matrix4();
+
+		lParentTM.copyPosition( lParentGX );
+		lParentGRSM = lParentTM.getInverse( lParentTM ).multiply( lParentGX );
+		lParentGSM = lParentGRM.getInverse( lParentGRM ).multiply( lParentGRSM );
+		lLSM = lScalingM;
+
+		if ( inheritType === 0 ) {
+
+			lGlobalRS = lParentGRM.multiply( lLRM ).multiply( lParentGSM ).multiply( lLSM );
+
+		} else if ( inheritType === 1 ) {
+
+			lGlobalRS = lParentGRM.multiply( lParentGSM ).multiply( lLRM ).multiply( lLSM );
+
+		} else {
+
+			var lParentLSM = new THREE.Matrix4().copy( lScalingM );
+
+			var lParentGSM_noLocal = lParentGSM.multiply( lParentLSM.getInverse( lParentLSM ) );
+
+			lGlobalRS = lParentGRM.multiply( lLRM ).multiply( lParentGSM_noLocal ).multiply( lLSM );
 
 		}
 
-		if ( transformData.scale ) transform.scale( tempVec.fromArray( transformData.scale ) );
+		// Calculate the local transform matrix
+		lTransform = lTranslationM.multiply( lRotationOffsetM ).multiply( lRotationPivotM ).multiply( lPreRotationM ).multiply( lRotationM ).multiply( lPostRotationM ).multiply( lRotationPivotM.getInverse( lRotationPivotM ) ).multiply( lScalingOffsetM ).multiply( lScalingPivotM ).multiply( lScalingM ).multiply( lScalingPivotM.getInverse( lScalingPivotM ) );
 
-		transform.setPosition( translation );
-		transform.multiply( rotation );
+		var lLocalTWithAllPivotAndOffsetInfo = new THREE.Matrix4().copyPosition( lTransform );
 
-		return transform;
+		var lGlobalTranslation = lParentGX.multiply( lLocalTWithAllPivotAndOffsetInfo );
+		lGlobalT.copyPosition( lGlobalTranslation );
+
+		lTransform = lGlobalT.multiply( lGlobalRS );
+
+		return lTransform;
 
 	}
 
@@ -3929,6 +4042,8 @@ THREE.FBXLoader = ( function () {
 	// ref: http://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_class_fbx_euler_html
 	function getEulerOrder( order ) {
 
+		order = order || 0;
+
 		var enums = [
 			'ZYX', // -> XYZ extrinsic
 			'YZX', // -> XZY extrinsic
@@ -3936,7 +4051,7 @@ THREE.FBXLoader = ( function () {
 			'ZXY', // -> YXZ extrinsic
 			'YXZ', // -> ZXY extrinsic
 			'XYZ', // -> ZYX extrinsic
-		//'SphericXYZ', // not possible to support
+			//'SphericXYZ', // not possible to support
 		];
 
 		if ( order === 6 ) {

+ 18 - 0
examples/js/loaders/PLYLoader.js

@@ -236,6 +236,7 @@ THREE.PLYLoader.prototype = {
 				vertices: [],
 				normals: [],
 				uvs: [],
+				faceVertexUvs: [],
 				colors: []
 			};
 
@@ -316,6 +317,13 @@ THREE.PLYLoader.prototype = {
 
 			}
 
+			if ( buffer.faceVertexUvs.length > 0 ) {
+
+				geometry = geometry.toNonIndexed();
+				geometry.addAttribute( 'uv', new THREE.Float32BufferAttribute( buffer.faceVertexUvs, 2 ) );
+
+			}
+
 			geometry.computeBoundingSphere();
 
 			return geometry;
@@ -349,11 +357,20 @@ THREE.PLYLoader.prototype = {
 			} else if ( elementName === 'face' ) {
 
 				var vertex_indices = element.vertex_indices || element.vertex_index; // issue #9338
+				var texcoord = element.texcoord;
 
 				if ( vertex_indices.length === 3 ) {
 
 					buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 2 ] );
 
+					if ( texcoord && texcoord.length === 6 ) {
+
+						buffer.faceVertexUvs.push( texcoord[ 0 ], texcoord[ 1 ] );
+						buffer.faceVertexUvs.push( texcoord[ 2 ], texcoord[ 3 ] );
+						buffer.faceVertexUvs.push( texcoord[ 4 ], texcoord[ 5 ] );
+
+					}
+
 				} else if ( vertex_indices.length === 4 ) {
 
 					buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 3 ] );
@@ -429,6 +446,7 @@ THREE.PLYLoader.prototype = {
 				vertices: [],
 				normals: [],
 				uvs: [],
+				faceVertexUvs: [],
 				colors: []
 			};
 

+ 324 - 0
examples/js/shaders/VolumeShader.js

@@ -0,0 +1,324 @@
+/**
+ * @author Almar Klein / http://almarklein.org
+ *
+ * Shaders to render 3D volumes using raycasting.
+ * The applied techniques are based on similar implementations in the Visvis and Vispy projects.
+ * This is not the only approach, therefore it's marked 1.
+ */
+
+THREE.VolumeRenderShader1 = {
+	uniforms: {
+        "u_size": { value: new THREE.Vector3( 1, 1, 1 ) },
+        "u_renderstyle": { value: 0 },
+        "u_renderthreshold": { value: 0.5 },
+        "u_clim": { value: new THREE.Vector2( 1, 1 ) },
+        "u_data": { value: null },
+        "u_cmdata": { value: null }
+    },
+    vertexShader: [
+        'varying vec4 v_nearpos;',
+        'varying vec4 v_farpos;',
+        'varying vec3 v_position;',
+
+        'mat4 inversemat(mat4 m) {',
+            // Taken from https://github.com/stackgl/glsl-inverse/blob/master/index.glsl
+            // This function is licenced by the MIT license to Mikola Lysenko
+            'float',
+            'a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3],',
+            'a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3],',
+            'a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3],',
+            'a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3],',
+
+            'b00 = a00 * a11 - a01 * a10,',
+            'b01 = a00 * a12 - a02 * a10,',
+            'b02 = a00 * a13 - a03 * a10,',
+            'b03 = a01 * a12 - a02 * a11,',
+            'b04 = a01 * a13 - a03 * a11,',
+            'b05 = a02 * a13 - a03 * a12,',
+            'b06 = a20 * a31 - a21 * a30,',
+            'b07 = a20 * a32 - a22 * a30,',
+            'b08 = a20 * a33 - a23 * a30,',
+            'b09 = a21 * a32 - a22 * a31,',
+            'b10 = a21 * a33 - a23 * a31,',
+            'b11 = a22 * a33 - a23 * a32,',
+
+            'det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;',
+
+        'return mat4(',
+            'a11 * b11 - a12 * b10 + a13 * b09,',
+            'a02 * b10 - a01 * b11 - a03 * b09,',
+            'a31 * b05 - a32 * b04 + a33 * b03,',
+            'a22 * b04 - a21 * b05 - a23 * b03,',
+            'a12 * b08 - a10 * b11 - a13 * b07,',
+            'a00 * b11 - a02 * b08 + a03 * b07,',
+            'a32 * b02 - a30 * b05 - a33 * b01,',
+            'a20 * b05 - a22 * b02 + a23 * b01,',
+            'a10 * b10 - a11 * b08 + a13 * b06,',
+            'a01 * b08 - a00 * b10 - a03 * b06,',
+            'a30 * b04 - a31 * b02 + a33 * b00,',
+            'a21 * b02 - a20 * b04 - a23 * b00,',
+            'a11 * b07 - a10 * b09 - a12 * b06,',
+            'a00 * b09 - a01 * b07 + a02 * b06,',
+            'a31 * b01 - a30 * b03 - a32 * b00,',
+            'a20 * b03 - a21 * b01 + a22 * b00) / det;',
+        '}',
+
+
+        'void main() {',
+            // Prepare transforms to map to "camera view". See also:
+            // https://threejs.org/docs/#api/renderers/webgl/WebGLProgram
+            'mat4 viewtransformf = viewMatrix;',
+            'mat4 viewtransformi = inversemat(viewMatrix);',
+
+            // Project local vertex coordinate to camera position. Then do a step
+            // backward (in cam coords) to the near clipping plane, and project back. Do
+            // the same for the far clipping plane. This gives us all the information we
+            // need to calculate the ray and truncate it to the viewing cone.
+            'vec4 position4 = vec4(position, 1.0);',
+            'vec4 pos_in_cam = viewtransformf * position4;',
+
+            // Intersection of ray and near clipping plane (z = -1 in clip coords)
+            'pos_in_cam.z = -pos_in_cam.w;',
+            'v_nearpos = viewtransformi * pos_in_cam;',
+
+            // Intersection of ray and far clipping plane (z = +1 in clip coords)
+            'pos_in_cam.z = pos_in_cam.w;',
+            'v_farpos = viewtransformi * pos_in_cam;',
+
+            // Set varyings and output pos
+            'v_position = position;',
+            'gl_Position = projectionMatrix * viewMatrix * modelMatrix * position4;',
+        '}',
+    ].join( '\n' ),
+	fragmentShader: [
+        'precision highp float;',
+        'precision mediump sampler3D;',
+
+        'uniform vec3 u_size;',
+        'uniform int u_renderstyle;',
+        'uniform float u_renderthreshold;',
+        'uniform vec2 u_clim;',
+
+        'uniform sampler3D u_data;',
+        'uniform sampler2D u_cmdata;',
+
+        'varying vec3 v_position;',
+        'varying vec4 v_nearpos;',
+        'varying vec4 v_farpos;',
+
+        // The maximum distance through our rendering volume is sqrt(3).
+        'const int MAX_STEPS = 887;  // 887 for 512^3, 1774 for 1024^3',
+        'const int REFINEMENT_STEPS = 4;',
+        'const float relative_step_size = 1.0;',
+        'const vec4 ambient_color = vec4(0.2, 0.4, 0.2, 1.0);',
+        'const vec4 diffuse_color = vec4(0.8, 0.2, 0.2, 1.0);',
+        'const vec4 specular_color = vec4(1.0, 1.0, 1.0, 1.0);',
+        'const float shininess = 40.0;',
+
+        'void cast_mip(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray);',
+        'void cast_iso(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray);',
+
+        'float sample1(vec3 texcoords);',
+        'vec4 apply_colormap(float val);',
+        'vec4 add_lighting(float val, vec3 loc, vec3 step, vec3 view_ray);',
+
+
+        'void main() {',
+            // Normalize clipping plane info
+            'vec3 farpos = v_farpos.xyz / v_farpos.w;',
+            'vec3 nearpos = v_nearpos.xyz / v_nearpos.w;',
+
+            // Calculate unit vector pointing in the view direction through this fragment.
+            'vec3 view_ray = normalize(nearpos.xyz - farpos.xyz);',
+
+            // Compute the (negative) distance to the front surface or near clipping plane.
+            // v_position is the back face of the cuboid, so the initial distance calculated in the dot
+            // product below is the distance from near clip plane to the back of the cuboid
+            'float distance = dot(nearpos - v_position, view_ray);',
+            'distance = max(distance, min((-0.5 - v_position.x) / view_ray.x,',
+                                        '(u_size.x - 0.5 - v_position.x) / view_ray.x));',
+            'distance = max(distance, min((-0.5 - v_position.y) / view_ray.y,',
+                                        '(u_size.y - 0.5 - v_position.y) / view_ray.y));',
+            'distance = max(distance, min((-0.5 - v_position.z) / view_ray.z,',
+                                        '(u_size.z - 0.5 - v_position.z) / view_ray.z));',
+
+                                        // Now we have the starting position on the front surface
+            'vec3 front = v_position + view_ray * distance;',
+
+            // Decide how many steps to take
+            'int nsteps = int(-distance / relative_step_size + 0.5);',
+            'if ( nsteps < 1 )',
+                'discard;',
+
+            // Get starting location and step vector in texture coordinates
+            'vec3 step = ((v_position - front) / u_size) / float(nsteps);',
+            'vec3 start_loc = front / u_size;',
+
+            // For testing: show the number of steps. This helps to establish
+            // whether the rays are correctly oriented
+            //'gl_FragColor = vec4(0.0, float(nsteps) / 1.0 / u_size.x, 1.0, 1.0);',
+            //'return;',
+
+            'if (u_renderstyle == 0)',
+                'cast_mip(start_loc, step, nsteps, view_ray);',
+            'else if (u_renderstyle == 1)',
+                'cast_iso(start_loc, step, nsteps, view_ray);',
+
+            'if (gl_FragColor.a < 0.05)',
+                'discard;',
+        '}',
+
+
+        'float sample1(vec3 texcoords) {',
+            '/* Sample float value from a 3D texture. Assumes intensity data. */',
+            'return texture(u_data, texcoords.xyz).r;',
+        '}',
+
+
+        'vec4 apply_colormap(float val) {',
+            'val = (val - u_clim[0]) / (u_clim[1] - u_clim[0]);',
+            'return texture2D(u_cmdata, vec2(val, 0.5));',
+        '}',
+
+
+        'void cast_mip(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray) {',
+
+            'float max_val = -1e6;',
+            'int max_i = 100;',
+            'vec3 loc = start_loc;',
+
+            // Enter the raycasting loop. In WebGL 1 the loop index cannot be compared with
+            // non-constant expression. So we use a hard-coded max, and an additional condition
+            // inside the loop.
+            'for (int iter=0; iter<MAX_STEPS; iter++) {',
+                'if (iter >= nsteps)',
+                    'break;',
+                // Sample from the 3D texture
+                'float val = sample1(loc);',
+                // Apply MIP operation
+                'if (val > max_val) {',
+                    'max_val = val;',
+                    'max_i = iter;',
+                '}',
+                // Advance location deeper into the volume
+                'loc += step;',
+            '}',
+
+            // Refine location, gives crispier images
+            'vec3 iloc = start_loc + step * (float(max_i) - 0.5);',
+            'vec3 istep = step / float(REFINEMENT_STEPS);',
+            'for (int i=0; i<REFINEMENT_STEPS; i++) {',
+                'max_val = max(max_val, sample1(iloc));',
+                'iloc += istep;',
+            '}',
+
+            // Resolve final color
+            'gl_FragColor = apply_colormap(max_val);',
+        '}',
+
+
+        'void cast_iso(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray) {',
+
+            'gl_FragColor = vec4(0.0);  // init transparent',
+            'vec4 color3 = vec4(0.0);  // final color',
+            'vec3 dstep = 1.5 / u_size;  // step to sample derivative',
+            'vec3 loc = start_loc;',
+
+            'float low_threshold = u_renderthreshold - 0.02 * (u_clim[1] - u_clim[0]);',
+
+            // Enter the raycasting loop. In WebGL 1 the loop index cannot be compared with
+            // non-constant expression. So we use a hard-coded max, and an additional condition
+            // inside the loop.
+            'for (int iter=0; iter<MAX_STEPS; iter++) {',
+                'if (iter >= nsteps)',
+                    'break;',
+
+                    // Sample from the 3D texture
+                'float val = sample1(loc);',
+
+                'if (val > low_threshold) {',
+                // Take the last interval in smaller steps
+                    'vec3 iloc = loc - 0.5 * step;',
+                    'vec3 istep = step / float(REFINEMENT_STEPS);',
+                    'for (int i=0; i<REFINEMENT_STEPS; i++) {',
+                        'val = sample1(iloc);',
+                        'if (val > u_renderthreshold) {',
+                            'gl_FragColor = add_lighting(val, iloc, dstep, view_ray);',
+                            'return;',
+                        '}',
+                        'iloc += istep;',
+                    '}',
+                '}',
+
+                // Advance location deeper into the volume
+                'loc += step;',
+            '}',
+        '}',
+
+
+        'vec4 add_lighting(float val, vec3 loc, vec3 step, vec3 view_ray)',
+        '{',
+            // Calculate color by incorporating lighting
+
+            // View direction
+            'vec3 V = normalize(view_ray);',
+
+            // calculate normal vector from gradient
+            'vec3 N;',
+            'float val1, val2;',
+            'val1 = sample1(loc + vec3(-step[0], 0.0, 0.0));',
+            'val2 = sample1(loc + vec3(+step[0], 0.0, 0.0));',
+            'N[0] = val1 - val2;',
+            'val = max(max(val1, val2), val);',
+            'val1 = sample1(loc + vec3(0.0, -step[1], 0.0));',
+            'val2 = sample1(loc + vec3(0.0, +step[1], 0.0));',
+            'N[1] = val1 - val2;',
+            'val = max(max(val1, val2), val);',
+            'val1 = sample1(loc + vec3(0.0, 0.0, -step[2]));',
+            'val2 = sample1(loc + vec3(0.0, 0.0, +step[2]));',
+            'N[2] = val1 - val2;',
+            'val = max(max(val1, val2), val);',
+
+            'float gm = length(N); // gradient magnitude',
+            'N = normalize(N);',
+
+            // Flip normal so it points towards viewer
+            'float Nselect = float(dot(N, V) > 0.0);',
+            'N = (2.0 * Nselect - 1.0) * N;  // ==  Nselect * N - (1.0-Nselect)*N;',
+
+            // Init colors
+            'vec4 ambient_color = vec4(0.0, 0.0, 0.0, 0.0);',
+            'vec4 diffuse_color = vec4(0.0, 0.0, 0.0, 0.0);',
+            'vec4 specular_color = vec4(0.0, 0.0, 0.0, 0.0);',
+
+            // note: could allow multiple lights
+            'for (int i=0; i<1; i++)',
+            '{',
+                 // Get light direction (make sure to prevent zero devision)
+                'vec3 L = normalize(view_ray);  //lightDirs[i];',
+                'float lightEnabled = float( length(L) > 0.0 );',
+                'L = normalize(L + (1.0 - lightEnabled));',
+
+                // Calculate lighting properties
+                'float lambertTerm = clamp(dot(N, L), 0.0, 1.0);',
+                'vec3 H = normalize(L+V); // Halfway vector',
+                'float specularTerm = pow(max(dot(H, N), 0.0), shininess);',
+
+                // Calculate mask
+                'float mask1 = lightEnabled;',
+
+                // Calculate colors
+                'ambient_color +=  mask1 * ambient_color;  // * gl_LightSource[i].ambient;',
+                'diffuse_color +=  mask1 * lambertTerm;',
+                'specular_color += mask1 * specularTerm * specular_color;',
+            '}',
+
+            // Calculate final color by componing different components
+            'vec4 final_color;',
+            'vec4 color = apply_colormap(val);',
+            'final_color = color * (ambient_color + diffuse_color) + specular_color;',
+            'final_color.a = color.a;',
+            'return final_color;',
+        '}',
+	].join( '\n' )
+};

+ 25 - 66
examples/misc_controls_pointerlock.html

@@ -80,71 +80,6 @@
 
 			var raycaster;
 
-			var blocker = document.getElementById( 'blocker' );
-			var instructions = document.getElementById( 'instructions' );
-
-			// http://www.html5rocks.com/en/tutorials/pointerlock/intro/
-
-			var havePointerLock = 'pointerLockElement' in document || 'mozPointerLockElement' in document || 'webkitPointerLockElement' in document;
-
-			if ( havePointerLock ) {
-
-				var element = document.body;
-
-				var pointerlockchange = function ( event ) {
-
-					if ( document.pointerLockElement === element || document.mozPointerLockElement === element || document.webkitPointerLockElement === element ) {
-
-						controlsEnabled = true;
-						controls.enabled = true;
-
-						blocker.style.display = 'none';
-
-					} else {
-
-						controls.enabled = false;
-
-						blocker.style.display = 'block';
-
-						instructions.style.display = '';
-
-					}
-
-				};
-
-				var pointerlockerror = function ( event ) {
-
-					instructions.style.display = '';
-
-				};
-
-				// Hook pointer lock state change events
-				document.addEventListener( 'pointerlockchange', pointerlockchange, false );
-				document.addEventListener( 'mozpointerlockchange', pointerlockchange, false );
-				document.addEventListener( 'webkitpointerlockchange', pointerlockchange, false );
-
-				document.addEventListener( 'pointerlockerror', pointerlockerror, false );
-				document.addEventListener( 'mozpointerlockerror', pointerlockerror, false );
-				document.addEventListener( 'webkitpointerlockerror', pointerlockerror, false );
-
-				instructions.addEventListener( 'click', function ( event ) {
-
-					instructions.style.display = 'none';
-
-					// Ask the browser to lock the pointer
-					element.requestPointerLock = element.requestPointerLock || element.mozRequestPointerLock || element.webkitRequestPointerLock;
-					element.requestPointerLock();
-
-				}, false );
-
-			} else {
-
-				instructions.innerHTML = 'Your browser doesn\'t seem to support Pointer Lock API';
-
-			}
-
-			var controlsEnabled = false;
-
 			var moveForward = false;
 			var moveBackward = false;
 			var moveLeft = false;
@@ -173,6 +108,30 @@
 				scene.add( light );
 
 				controls = new THREE.PointerLockControls( camera );
+
+				var blocker = document.getElementById( 'blocker' );
+				var instructions = document.getElementById( 'instructions' );
+
+				instructions.addEventListener( 'click', function ( event ) {
+
+					controls.lock();
+
+				}, false );
+
+				controls.addEventListener( 'lock', function() {
+
+					instructions.style.display = 'none';
+					blocker.style.display = 'none';
+
+				} );
+
+				controls.addEventListener( 'unlock', function() {
+
+					blocker.style.display = 'block';
+					instructions.style.display = '';
+
+				} );
+
 				scene.add( controls.getObject() );
 
 				var onKeyDown = function ( event ) {
@@ -338,7 +297,7 @@
 
 				requestAnimationFrame( animate );
 
-				if ( controlsEnabled === true ) {
+				if ( controls.isLocked === true ) {
 
 					raycaster.ray.origin.copy( controls.getObject().position );
 					raycaster.ray.origin.y -= 10;

Разлика између датотеке није приказан због своје велике величине
+ 0 - 120
examples/models/json/lightmap/lightmap.json


+ 14 - 0
examples/models/nrrd/README.txt

@@ -0,0 +1,14 @@
+# Source and license of the files in this directory
+
+
+## stent.nrrd
+
+A 3D volume converted from stent.npz from the imageio project.
+https://imageio.readthedocs.io/en/latest/standardimages.html
+
+It is in the public domain.
+
+
+## l.nrrd
+
+Unknown

BIN
examples/models/nrrd/stent.nrrd


BIN
examples/textures/cm_gray.png


BIN
examples/textures/cm_viridis.png


+ 0 - 1
examples/webgl_animation_skinning_morph.html

@@ -218,7 +218,6 @@
 				scene.add( mesh2 );
 
 				helper = new THREE.SkeletonHelper( mesh );
-				helper.material.linewidth = 3;
 				helper.visible = false;
 				scene.add( helper );
 

+ 1 - 1
examples/webgl_decals.html

@@ -128,7 +128,7 @@
 			var geometry = new THREE.BufferGeometry();
 			geometry.setFromPoints( [ new THREE.Vector3(), new THREE.Vector3() ] );
 
-			line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { linewidth: 4 } ) );
+			line = new THREE.Line( geometry, new THREE.LineBasicMaterial() );
 			scene.add( line );
 
 			loadLeePerrySmith();

+ 2 - 2
examples/webgl_geometry_nurbs.html

@@ -112,7 +112,7 @@
 				var nurbsGeometry = new THREE.BufferGeometry();
 				nurbsGeometry.setFromPoints( nurbsCurve.getPoints( 200 ) );
 
-				var nurbsMaterial = new THREE.LineBasicMaterial( { linewidth: 10, color: 0x333333 } );
+				var nurbsMaterial = new THREE.LineBasicMaterial( { color: 0x333333 } );
 
 				var nurbsLine = new THREE.Line( nurbsGeometry, nurbsMaterial );
 				nurbsLine.position.set( 200, - 100, 0 );
@@ -121,7 +121,7 @@
 				var nurbsControlPointsGeometry = new THREE.BufferGeometry();
 				nurbsControlPointsGeometry.setFromPoints( nurbsCurve.controlPoints );
 
-				var nurbsControlPointsMaterial = new THREE.LineBasicMaterial( { linewidth: 2, color: 0x333333, opacity: 0.25, transparent: true } );
+				var nurbsControlPointsMaterial = new THREE.LineBasicMaterial( { color: 0x333333, opacity: 0.25, transparent: true } );
 
 				var nurbsControlPointsLine = new THREE.Line( nurbsControlPointsGeometry, nurbsControlPointsMaterial );
 				nurbsControlPointsLine.position.copy( nurbsLine.position );

+ 2 - 2
examples/webgl_geometry_shapes.html

@@ -123,7 +123,7 @@
 
 					// solid line
 
-					var line = new THREE.Line( geometryPoints, new THREE.LineBasicMaterial( { color: color, linewidth: 3 } ) );
+					var line = new THREE.Line( geometryPoints, new THREE.LineBasicMaterial( { color: color } ) );
 					line.position.set( x, y, z - 25 );
 					line.rotation.set( rx, ry, rz );
 					line.scale.set( s, s, s );
@@ -131,7 +131,7 @@
 
 					// line from equidistance sampled points
 
-					var line = new THREE.Line( geometrySpacedPoints, new THREE.LineBasicMaterial( { color: color, linewidth: 3 } ) );
+					var line = new THREE.Line( geometrySpacedPoints, new THREE.LineBasicMaterial( { color: color } ) );
 					line.position.set( x, y, z + 25 );
 					line.rotation.set( rx, ry, rz );
 					line.scale.set( s, s, s );

+ 3 - 6
examples/webgl_geometry_spline_editor.html

@@ -258,8 +258,7 @@
 				curve.curveType = 'catmullrom';
 				curve.mesh = new THREE.Line( geometry.clone(), new THREE.LineBasicMaterial( {
 					color: 0xff0000,
-					opacity: 0.35,
-					linewidth: 2
+					opacity: 0.35
 					} ) );
 				curve.mesh.castShadow = true;
 				splines.uniform = curve;
@@ -268,8 +267,7 @@
 				curve.curveType = 'centripetal';
 				curve.mesh = new THREE.Line( geometry.clone(), new THREE.LineBasicMaterial( {
 					color: 0x00ff00,
-					opacity: 0.35,
-					linewidth: 2
+					opacity: 0.35
 					} ) );
 				curve.mesh.castShadow = true;
 				splines.centripetal = curve;
@@ -278,8 +276,7 @@
 				curve.curveType = 'chordal';
 				curve.mesh = new THREE.Line( geometry.clone(), new THREE.LineBasicMaterial( {
 					color: 0x0000ff,
-					opacity: 0.35,
-					linewidth: 2
+					opacity: 0.35
 					} ) );
 				curve.mesh.castShadow = true;
 				splines.chordal = curve;

+ 1 - 1
examples/webgl_interactive_buffergeometry.html

@@ -206,7 +206,7 @@
 				var geometry = new THREE.BufferGeometry();
 				geometry.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( 4 * 3 ), 3 ) );
 
-				var material = new THREE.LineBasicMaterial( { color: 0xffffff, linewidth: 2, transparent: true } );
+				var material = new THREE.LineBasicMaterial( { color: 0xffffff, transparent: true } );
 
 				line = new THREE.Line( geometry, material );
 				scene.add( line );

+ 0 - 13
examples/webgl_interactive_lines.html

@@ -189,26 +189,13 @@
 
 				if ( intersects.length > 0 ) {
 
-					if ( currentIntersected !== undefined ) {
-
-						currentIntersected.material.linewidth = 1;
-
-					}
-
 					currentIntersected = intersects[ 0 ].object;
-					currentIntersected.material.linewidth = 5;
 
 					sphereInter.visible = true;
 					sphereInter.position.copy( intersects[ 0 ].point );
 
 				} else {
 
-					if ( currentIntersected !== undefined ) {
-
-						currentIntersected.material.linewidth = 1;
-
-					}
-
 					currentIntersected = undefined;
 
 					sphereInter.visible = false;

+ 154 - 0
examples/webgl_layers.html

@@ -0,0 +1,154 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<title>three.js webgl - layers</title>
+		<meta charset="utf-8">
+		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
+		<style>
+			body {
+				font-family: Monospace;
+				background-color: #f0f0f0;
+				margin: 0px;
+				overflow: hidden;
+			}
+
+			#info {
+				position: absolute;
+				top: 10px;
+				width: 100%;
+				text-align: center;
+				z-index: 0; // to not conflict with dat.gui
+				display:block;
+			}
+		</style>
+	</head>
+	<body>
+
+		<div id="info">
+			<a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> - webgl layers
+		</div>
+
+		<script src="../build/three.js"></script>
+
+		<script src="js/libs/stats.min.js"></script>
+		<script src='js/libs/dat.gui.min.js'></script>
+
+		<script>
+
+			var container, stats;
+			var camera, scene, renderer;
+
+			var radius = 100, theta = 0;
+
+			init();
+			animate();
+
+			function init() {
+
+				container = document.createElement( 'div' );
+				document.body.appendChild( container );
+
+				camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 10000 );
+				camera.layers.enable( 0 ); // enabled by default
+				camera.layers.enable( 1 );
+				camera.layers.enable( 2 );
+
+				scene = new THREE.Scene();
+				scene.background = new THREE.Color( 0xf0f0f0 );
+
+				var light = new THREE.PointLight( 0xffffff, 1 );
+				light.layers.enable( 0 );
+				light.layers.enable( 1 );
+				light.layers.enable( 2 );
+
+				scene.add( camera );
+				camera.add( light );
+
+				var colors = [ 0xff0000, 0x00ff00, 0x0000ff ];
+				var geometry = new THREE.BoxBufferGeometry( 20, 20, 20 );
+				var layer;
+
+				for ( var i = 0; i < 300; i ++ ) {
+
+					layer = ( i % 3 );
+
+					var object = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial( { color: colors[ layer ] } ) );
+
+					object.position.x = Math.random() * 800 - 400;
+					object.position.y = Math.random() * 800 - 400;
+					object.position.z = Math.random() * 800 - 400;
+
+					object.rotation.x = Math.random() * 2 * Math.PI;
+					object.rotation.y = Math.random() * 2 * Math.PI;
+					object.rotation.z = Math.random() * 2 * Math.PI;
+
+					object.scale.x = Math.random() + 0.5;
+					object.scale.y = Math.random() + 0.5;
+					object.scale.z = Math.random() + 0.5;
+
+					object.layers.set( layer );
+
+					scene.add( object );
+
+				}
+
+				raycaster = new THREE.Raycaster();
+
+				renderer = new THREE.WebGLRenderer();
+				renderer.setPixelRatio( window.devicePixelRatio );
+				renderer.setSize( window.innerWidth, window.innerHeight );
+				container.appendChild(renderer.domElement);
+
+				stats = new Stats();
+				container.appendChild( stats.dom );
+
+				var layers = { red: true, green: true, blue: true };
+
+				//
+				// Init gui
+				var gui = new dat.GUI();
+				gui.add( layers, 'red' ).onChange( function () { camera.layers.toggle( 0 ); } );
+				gui.add( layers, 'green' ).onChange( function () { camera.layers.toggle( 1 ); } );
+				gui.add( layers, 'blue' ).onChange( function () { camera.layers.toggle( 2 ); } );
+
+				window.addEventListener( 'resize', onWindowResize, false );
+
+			}
+
+			function onWindowResize() {
+
+				camera.aspect = window.innerWidth / window.innerHeight;
+				camera.updateProjectionMatrix();
+
+				renderer.setSize( window.innerWidth, window.innerHeight );
+
+			}
+
+			//
+
+			function animate() {
+
+				requestAnimationFrame( animate );
+
+				render();
+				stats.update();
+
+			}
+
+			function render() {
+
+				theta += 0.1;
+
+				camera.position.x = radius * Math.sin( THREE.Math.degToRad( theta ) );
+				camera.position.y = radius * Math.sin( THREE.Math.degToRad( theta ) );
+				camera.position.z = radius * Math.cos( THREE.Math.degToRad( theta ) );
+				camera.lookAt( scene.position );
+
+				renderer.render( scene, camera );
+
+			}
+
+		</script>
+
+	</body>
+</html>

+ 1 - 1
examples/webgl_lines_dashed.html

@@ -76,7 +76,7 @@
 
 				var geometryCube = cube( 50 );
 
-				var lineSegments = new THREE.LineSegments( geometryCube, new THREE.LineDashedMaterial( { color: 0xffaa00, dashSize: 3, gapSize: 1, linewidth: 2 } ) );
+				var lineSegments = new THREE.LineSegments( geometryCube, new THREE.LineDashedMaterial( { color: 0xffaa00, dashSize: 3, gapSize: 1 } ) );
 				lineSegments.computeLineDistances();
 
 				objects.push( lineSegments );

+ 3 - 3
examples/webgl_lines_sphere.html

@@ -75,8 +75,8 @@
 				scene = new THREE.Scene();
 
 				var i, line, material, p,
-					parameters = [ [ 0.25, 0xff7700, 1, 2 ], [ 0.5, 0xff9900, 1, 1 ], [ 0.75, 0xffaa00, 0.75, 1 ], [ 1, 0xffaa00, 0.5, 1 ], [ 1.25, 0x000833, 0.8, 1 ],
-							       [ 3.0, 0xaaaaaa, 0.75, 2 ], [ 3.5, 0xffffff, 0.5, 1 ], [ 4.5, 0xffffff, 0.25, 1 ], [ 5.5, 0xffffff, 0.125, 1 ] ];
+					parameters = [ [ 0.25, 0xff7700, 1 ], [ 0.5, 0xff9900, 1 ], [ 0.75, 0xffaa00, 0.75 ], [ 1, 0xffaa00, 0.5 ], [ 1.25, 0x000833, 0.8 ],
+							       [ 3.0, 0xaaaaaa, 0.75 ], [ 3.5, 0xffffff, 0.5 ], [ 4.5, 0xffffff, 0.25 ], [ 5.5, 0xffffff, 0.125 ] ];
 
 				var geometry = createGeometry();
 
@@ -84,7 +84,7 @@
 
 					p = parameters[ i ];
 
-					material = new THREE.LineBasicMaterial( { color: p[ 1 ], opacity: p[ 2 ], linewidth: p[ 3 ] } );
+					material = new THREE.LineBasicMaterial( { color: p[ 1 ], opacity: p[ 2 ] } );
 
 					line = new THREE.LineSegments( geometry, material );
 					line.scale.x = line.scale.y = line.scale.z = p[ 0 ];

Неке датотеке нису приказане због велике количине промена