Mr.doob 4 years ago
parent
commit
65e7fe62d6
100 changed files with 6374 additions and 439 deletions
  1. 302 169
      build/three.js
  2. 0 0
      build/three.min.js
  3. 268 181
      build/three.module.js
  4. 1 1
      docs/api/en/core/BufferAttribute.html
  5. 1 1
      docs/api/en/core/Layers.html
  6. 1 1
      docs/api/en/core/Raycaster.html
  7. 4 8
      docs/api/en/extras/core/CurvePath.html
  8. 2 2
      docs/api/en/helpers/AxesHelper.html
  9. 1 1
      docs/api/en/materials/MeshBasicMaterial.html
  10. 1 1
      docs/api/en/materials/MeshLambertMaterial.html
  11. 1 2
      docs/api/en/materials/MeshPhongMaterial.html
  12. 7 0
      docs/api/en/materials/MeshPhysicalMaterial.html
  13. 3 11
      docs/api/en/materials/MeshStandardMaterial.html
  14. 0 1
      docs/api/en/materials/ShaderMaterial.html
  15. 1 1
      docs/api/en/math/Frustum.html
  16. 1 1
      docs/api/en/math/Matrix3.html
  17. 1 1
      docs/api/en/math/Matrix4.html
  18. 5 0
      docs/api/en/objects/InstancedMesh.html
  19. 4 1
      docs/api/en/renderers/WebGLRenderer.html
  20. 1 1
      docs/api/en/textures/DataTexture.html
  21. 339 0
      docs/api/ko/animation/AnimationAction.html
  22. 142 0
      docs/api/ko/animation/AnimationClip.html
  23. 113 0
      docs/api/ko/animation/AnimationMixer.html
  24. 86 0
      docs/api/ko/animation/AnimationObjectGroup.html
  25. 62 0
      docs/api/ko/animation/AnimationUtils.html
  26. 245 0
      docs/api/ko/animation/KeyframeTrack.html
  27. 132 0
      docs/api/ko/animation/PropertyBinding.html
  28. 99 0
      docs/api/ko/animation/PropertyMixer.html
  29. 79 0
      docs/api/ko/animation/tracks/BooleanKeyframeTrack.html
  30. 62 0
      docs/api/ko/animation/tracks/ColorKeyframeTrack.html
  31. 63 0
      docs/api/ko/animation/tracks/NumberKeyframeTrack.html
  32. 75 0
      docs/api/ko/animation/tracks/QuaternionKeyframeTrack.html
  33. 77 0
      docs/api/ko/animation/tracks/StringKeyframeTrack.html
  34. 62 0
      docs/api/ko/animation/tracks/VectorKeyframeTrack.html
  35. 233 0
      docs/api/ko/audio/Audio.html
  36. 101 0
      docs/api/ko/audio/AudioAnalyser.html
  37. 43 0
      docs/api/ko/audio/AudioContext.html
  38. 112 0
      docs/api/ko/audio/AudioListener.html
  39. 136 0
      docs/api/ko/audio/PositionalAudio.html
  40. 2 2
      docs/api/zh/core/BufferAttribute.html
  41. 2 2
      docs/api/zh/helpers/AxesHelper.html
  42. 1 1
      docs/api/zh/materials/MeshBasicMaterial.html
  43. 1 1
      docs/api/zh/materials/MeshLambertMaterial.html
  44. 1 1
      docs/api/zh/materials/MeshPhongMaterial.html
  45. 7 0
      docs/api/zh/materials/MeshPhysicalMaterial.html
  46. 3 9
      docs/api/zh/materials/MeshStandardMaterial.html
  47. 0 1
      docs/api/zh/materials/ShaderMaterial.html
  48. 1 1
      docs/api/zh/math/Matrix3.html
  49. 1 1
      docs/api/zh/math/Matrix4.html
  50. 5 0
      docs/api/zh/objects/InstancedMesh.html
  51. 4 1
      docs/api/zh/renderers/WebGLRenderer.html
  52. 1 1
      docs/examples/en/animations/MMDAnimationHelper.html
  53. 1 1
      docs/examples/en/animations/MMDPhysics.html
  54. 2 2
      docs/examples/en/controls/FirstPersonControls.html
  55. 1 1
      docs/examples/en/controls/OrbitControls.html
  56. 2 2
      docs/examples/en/controls/TransformControls.html
  57. 1 1
      docs/examples/en/exporters/ColladaExporter.html
  58. 1 1
      docs/examples/en/helpers/VertexNormalsHelper.html
  59. 1 1
      docs/examples/en/helpers/VertexTangentsHelper.html
  60. 1 0
      docs/examples/en/loaders/GLTFLoader.html
  61. 1 1
      docs/examples/en/loaders/MMDLoader.html
  62. 1 1
      docs/examples/en/loaders/TGALoader.html
  63. 1 1
      docs/examples/en/math/Lut.html
  64. 1 2
      docs/examples/en/math/MeshSurfaceSampler.html
  65. 174 0
      docs/examples/en/math/OBB.html
  66. 1 1
      docs/examples/en/math/convexhull/ConvexHull.html
  67. 1 1
      docs/examples/en/math/convexhull/Face.html
  68. 1 1
      docs/examples/en/math/convexhull/HalfEdge.html
  69. 9 1
      docs/examples/en/postprocessing/EffectComposer.html
  70. 95 0
      docs/examples/ko/controls/DeviceOrientationControls.html
  71. 131 0
      docs/examples/ko/controls/DragControls.html
  72. 164 0
      docs/examples/ko/controls/FirstPersonControls.html
  73. 100 0
      docs/examples/ko/controls/FlyControls.html
  74. 307 0
      docs/examples/ko/controls/OrbitControls.html
  75. 158 0
      docs/examples/ko/controls/PointerLockControls.html
  76. 208 0
      docs/examples/ko/controls/TrackballControls.html
  77. 223 0
      docs/examples/ko/controls/TransformControls.html
  78. 1 0
      docs/examples/zh/loaders/GLTFLoader.html
  79. 1 1
      docs/examples/zh/math/Lut.html
  80. 1 2
      docs/examples/zh/math/MeshSurfaceSampler.html
  81. 174 0
      docs/examples/zh/math/OBB.html
  82. 8 0
      docs/examples/zh/postprocessing/EffectComposer.html
  83. 2 1
      docs/index.html
  84. 87 2
      docs/list.json
  85. 2 4
      docs/manual/ar/introduction/Installation.html
  86. 1 1
      docs/manual/en/introduction/How-to-dispose-of-objects.html
  87. 1 1
      docs/manual/en/introduction/How-to-update-things.html
  88. 2 4
      docs/manual/en/introduction/Installation.html
  89. 250 0
      docs/manual/ko/buildTools/Testing-with-NPM.html
  90. 131 0
      docs/manual/ko/introduction/Animation-system.html
  91. 130 0
      docs/manual/ko/introduction/Browser-support.html
  92. 164 0
      docs/manual/ko/introduction/Creating-a-scene.html
  93. 113 0
      docs/manual/ko/introduction/Creating-text.html
  94. 67 0
      docs/manual/ko/introduction/Drawing-lines.html
  95. 54 0
      docs/manual/ko/introduction/FAQ.html
  96. 80 0
      docs/manual/ko/introduction/How-to-create-VR-content.html
  97. 115 0
      docs/manual/ko/introduction/How-to-dispose-of-objects.html
  98. 150 0
      docs/manual/ko/introduction/How-to-run-things-locally.html
  99. 249 0
      docs/manual/ko/introduction/How-to-update-things.html
  100. 110 0
      docs/manual/ko/introduction/How-to-use-post-processing.html

File diff suppressed because it is too large
+ 302 - 169
build/three.js


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


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


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

@@ -158,7 +158,7 @@
 		<h3>[method:Number getW]( [param:Integer index] ) </h3>
 		<p>Returns the w component of the vector at the given index.</p>
 
-		<h3>[method:null onUpload]( [param:Function callback] ) </h3>
+		<h3>[method:this onUpload]( [param:Function callback] ) </h3>
 		<p>
 		Sets the value of the onUploadCallback property.<br /><br />
 

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

@@ -69,7 +69,7 @@
 		<p>
 			layers - a Layers object<br /><br />
 
-			Returns true if this and the passed *layers* object are members of the same set of layers.
+			Returns true if this and the passed *layers* object have at least one layer in common.
 		</p>
 
 		<h3>[method:null toggle]( [param:Integer layer] )</h3>

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

@@ -145,7 +145,7 @@
 		[page:Vector3 direction] โ€” The normalized direction vector that gives direction to the ray.
 		</p>
 		<p>
-		Updates the ray with a new origin and direction.
+		Updates the ray with a new origin and direction. Please note that this method only copies the values from the arguments.
 		</p>
 
 		<h3>[method:null setFromCamera]( [param:Vector2 coords], [param:Camera camera] )</h3>

+ 4 - 8
docs/api/en/extras/core/CurvePath.html

@@ -16,16 +16,13 @@
 		but retains the api of a curve.
 		</p>
 
-
 		<h2>Constructor</h2>
 
-
 		<h3>[name]()</h3>
 		<p>
 		The constructor take no parameters.
 		</p>
 
-
 		<h2>Properties</h2>
 		<p>See the base [page:Curve] class for common properties.</p>
 
@@ -35,10 +32,6 @@
 		<h3>[property:Boolean autoClose]</h3>
 		<p>Whether or not to automatically close the path.</p>
 
-
-
-
-
 		<h2>Methods</h2>
 		<p>See the base [page:Curve] class for common methods.</p>
 
@@ -62,7 +55,10 @@
 		<p>
 			divisions -- number of pieces to divide the curve into. Default is *12*.<br /><br />
 
-			Returns a set of divisions + 1 points using getPoint( t ).
+			Returns an array of points representing a sequence of curves. The *division* parameter defines
+			the number of pieces each curve is divided into. However, for optimization and quality purposes,
+			the actual sampling resolution for each curve depends on its type. For example, for a [page:LineCurve],
+			the returned number of points is always just 2.
 		</p>
 
 		<h3>[method:Array getSpacedPoints]( [param:Integer divisions] )</h3>

+ 2 - 2
docs/api/en/helpers/AxesHelper.html

@@ -25,9 +25,9 @@ scene.add( axesHelper );
 		<h2>Examples</h2>
 
 		<p>
-			[example:webgl_geometries WebGL / geometries]<br/>
+			[example:webgl_buffergeometry_compression WebGL / buffergeometry / compression]<br/>
 			[example:webgl_geometry_convex WebGL / geometry / convex]<br/>
-			[example:webgl_geometry_spline_editor WebGL / geometry / spline / editor]
+			[example:webgl_loader_nrrd WebGL / loader / nrrd]
 		</p>
 
 		<h2>Constructor</h2>

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

@@ -80,7 +80,7 @@
 			blend between the two colors.
 		</p>
 
-		<h3>[property:TextureCube envMap]</h3>
+		<h3>[property:Texture envMap]</h3>
 		<p>The environment map. Default is null.</p>
 
 		<h3>[property:Texture lightMap]</h3>

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

@@ -107,7 +107,7 @@
 		<h3>[property:Float emissiveIntensity]</h3>
 		<p>Intensity of the emissive light. Modulates the emissive color. Default is 1.</p>
 
-		<h3>[property:TextureCube envMap]</h3>
+		<h3>[property:Texture envMap]</h3>
 		<p>The environment map. Default is null.</p>
 
 		<h3>[property:Texture lightMap]</h3>

+ 1 - 2
docs/api/en/materials/MeshPhongMaterial.html

@@ -139,10 +139,9 @@
 		<h3>[property:Float emissiveIntensity]</h3>
 		<p>Intensity of the emissive light. Modulates the emissive color. Default is 1.</p>
 
-		<h3>[property:TextureCube envMap]</h3>
+		<h3>[property:Texture envMap]</h3>
 		<p>The environment map. Default is null.</p>
 
-
 		<h3>[property:Texture lightMap]</h3>
 		<p>The light map. Default is null. The lightMap requires a second set of UVs.</p>
 

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

@@ -61,6 +61,7 @@
 			[example:webgl_materials_variations_physical materials / variations / physical]<br />
 			[example:webgl_materials_physical_clearcoat materials / physical / clearcoat]<br />
 			[example:webgl_materials_physical_reflectivity materials / physical / reflectivity]<br />
+			[example:webgl_materials_physical_sheen materials / physical / sheen]<br />
 			[example:webgl_materials_physical_transmission materials / physical / transmission]
 		</p>
 
@@ -132,6 +133,12 @@
 			This models the reflectivity of non-metallic materials. It has no effect when [page:MeshStandardMaterial.metalness metalness] is *1.0*
 		</p>
 
+		<h3>[property:Color sheen]</h3>
+		<p>
+			If a color is assigned to this property, the material will use a special sheen BRDF intended for rendering cloth materials such as velvet.
+			The sheen color provides the ability to create two-tone specular materials. *null* by default.
+		</p>
+
 		<h3>[property:Float transmission]</h3>
 		<p>
 		Degree of transmission (or optical transparency), from *0.0* to *1.0*. Default is *0.0*.<br />

+ 3 - 11
docs/api/en/materials/MeshStandardMaterial.html

@@ -164,17 +164,9 @@
 		<h3>[property:Float emissiveIntensity]</h3>
 		<p>Intensity of the emissive light. Modulates the emissive color. Default is 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>
-		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
-		[page:WebGLCubeRenderTarget.fromEquirectangularTexture WebGLCubeRenderTarget.fromEquirectangularTexture]().
-		See this [link:https://threejs.org/examples/webgl_materials_envmaps_exr.html example] for details.
+		<h3>[property:Texture envMap]</h3>
+		<p>The environment map. To ensure a physically correct rendering, you should only add
+			environment maps which were preprocessed by [page:PMREMGenerator]. Default is null.
 		</p>
 
 		<h3>[property:Float envMapIntensity]</h3>

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

@@ -117,7 +117,6 @@
 			[example:webgl_materials_skin webgl / materials / skin]<br />
 			[example:webgl_materials_wireframe webgl / materials / wireframe]<br />
 			[example:webgl_modifier_tessellation webgl / modifier / tessellation]<br />
-			[example:webgl_nearestneighbour webgl / nearestneighbour]<br />
 			[example:webgl_postprocessing_dof2 webgl / postprocessing / dof2]<br />
 			[example:webgl_postprocessing_godrays webgl / postprocessing / godrays]
 		</p>

+ 1 - 1
docs/api/en/math/Frustum.html

@@ -11,7 +11,7 @@
 
 		<p class="desc">
 			[link:http://en.wikipedia.org/wiki/Frustum Frustums] are used to determine what is
-			inside the camera's field of view. They help speed up the rendering process - object which lie
+			inside the camera's field of view. They help speed up the rendering process - objects which lie
 			outside a camera's frustum can safely be excluded from rendering.<br /><br />
 
 			This class is mainly intended for use internally by a renderer for calculating

+ 1 - 1
docs/api/en/math/Matrix3.html

@@ -105,7 +105,7 @@ zAxis = (c, f, i)
 		[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major] format.
 		</p>
 
-		<h3>[method:this invert()]()</h3>
+		<h3>[method:this invert]()</h3>
 		<p>
 		Inverts this matrix, using the [link:https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution analytic method].
 

+ 1 - 1
docs/api/en/math/Matrix4.html

@@ -186,7 +186,7 @@ zAxis = (c, g, k)
 		[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major] format.
 		</p>
 
-		<h3>[method:this invert()]()</h3>
+		<h3>[method:this invert]()</h3>
 		<p>
 		Inverts this matrix, using the [link:https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution analytic method].
 

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

@@ -66,6 +66,11 @@
 		<h2>Methods</h2>
 		<p>See the base [page:Mesh] class for common methods.</p>
 
+		<h3>[method:null dispose]()</h3>
+		<p>
+			Frees the internal resources of this instance.
+		</p>
+
 		<h3>[method:null getColorAt]( [param:Integer index], [param:Color color] )</h3>
 		<p>
 			[page:Integer index]: The index of an instance. Values have to be in the range [0, count].

+ 4 - 1
docs/api/en/renderers/WebGLRenderer.html

@@ -335,7 +335,7 @@
 		<h3>[method:Float getClearAlpha]()</h3>
 		<p>Returns a [page:Float float] with the current clear alpha. Ranges from 0 to 1.</p>
 
-		<h3>[method:Color getClearColor]()</h3>
+		<h3>[method:Color getClearColor]( [param:Color target] )</h3>
 		<p>Returns a [page:Color THREE.Color] instance with the current clear color.</p>
 
 		<h3>[method:WebGLRenderingContext getContext]()</h3>
@@ -428,6 +428,9 @@
 		Renders an instance of [page:ImmediateRenderObject]. Gets called by renderObjectImmediate().
 		</p>
 
+		<h3>[method:null resetState]()</h3>
+		<p>Can be used to reset the internal WebGL state. This method is mostly relevant for applications which share a single WebGL context across multiple WebGL libraries.</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 built in function that can be used instead of [link:https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame requestAnimationFrame]. For WebXR projects this function must be used.</p>

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

@@ -16,7 +16,7 @@
 
 		<h2>Constructor</h2>
 
-		<h3>[name]( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy )</h3>
+		<h3>[name]( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding )</h3>
 		<p>
 			The data argument must be an [link:https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView ArrayBufferView].
 			Further parameters correspond to the properties inherited from [page:Texture], where both magFilter and minFilter default to THREE.NearestFilter. The properties flipY and generateMipmaps are intially set to false.

+ 339 - 0
docs/api/ko/animation/AnimationAction.html

@@ -0,0 +1,339 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<p class="desc">
+			AnimationActions๋Š” [page:AnimationClip AnimationClips]์— ์ €์žฅ๋œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์˜ˆ์•ฝํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
+			<br /><br />
+
+			์ฐธ๊ณ : ๋Œ€๋ถ€๋ถ„์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜ ๋ฉ”์†Œ๋“œ๋“ค์€ ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.<br /><br />
+
+			three.js ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ ์—˜๋ฆฌ๋จผํŠธ์— ๋Œ€ํ•œ ๊ฐœ์š”๋“ค์€ ๋งค๋‰ด์–ผ์˜ "Next Steps" ์„น์…˜์— ์žˆ๋Š” "์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ" ๊ธ€์„ ์ฐธ์กฐํ•˜์„ธ์š”.
+		</p>
+
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( [param:AnimationMixer mixer], [param:AnimationClip clip], [param:Object3D localRoot] )</h3>
+		<p>
+			[page:AnimationMixer mixer] - ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฏน์„œ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์— ์˜ํ•ด ์ œ์–ด๋ฉ๋‹ˆ๋‹ค.<br />
+			[page:AnimationClip clip] - ์• ๋‹ˆ๋ฉ”์ด์…˜ ํด๋ฆฝ์€ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์— ๋Œ€ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.<br />
+			[page:Object3D localRoot] - ๋ฃจํŠธ ์˜ค๋ธŒ์ ํŠธ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.<br /><br />
+
+			์ฐธ๊ณ : ํ•ด๋‹น ์ƒ์„ฑ์ž๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์‹  [page:AnimationMixer.clipAction] ์œผ๋กœ AnimationAction์„ ์ธ์Šคํ„ด์Šคํ™” ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ์œ„ํ•œ ์บ์‹ฑ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์†์„ฑ</h2>
+
+
+		<h3>[property:Boolean clampWhenFinished]</h3>
+		<p>
+			*clampWhenFinished* ๊ฐ€ true๋กœ ์„ค์ • ๋˜์—ˆ์„ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ๋งˆ์ง€๋ง‰ ํ”„๋ ˆ์ž„์—์„œ [page:.paused paused] ๋ฉ๋‹ˆ๋‹ค.
+			<br /><br />
+
+			*clampWhenFinished* ๊ฐ€ false๋กœ ์„ค์ • ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ๋ฃจํ”„์˜ ์ž‘์—…์ด ์™„๋ฃŒ ๋  ๋•Œ [page:.enabled enabled]์„ ์ž๋™์œผ๋กœ false๋กœ ์ „ํ™˜๋˜์–ด, ๋”์ด์ƒ ์ž‘์—…์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. <br /><br />
+
+			์ดˆ๊ธฐ๊ฐ’์€ *false* ์ž…๋‹ˆ๋‹ค.<br /><br />
+
+			์ฐธ๊ณ : *clampWhenFinished* ๋Š” ์ž‘์—…์ด ์ค‘๋‹จ๋  ๊ฒฝ์šฐ ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค (๋งˆ์ง€๋ง‰ ๋ฃจํ”„๋ฅผ ์‹ค์ œ๋กœ ์™„๋ฃŒ๋œ ๊ฒฝ์šฐ์—๋งŒ ํšจ๊ณผ๊ฐ€ ์žˆ์Œ).
+			
+		</p>
+
+		<h3>[property:Boolean enabled]</h3>
+		<p>
+			*enabled* ๋ฅผ *false* ๋กœ ์„ค์ •ํ•˜๋ฉด ์ž‘์—…์ด ๋น„ํ™œ์„ฑํ™” ๋˜์–ด ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *true* ์ž…๋‹ˆ๋‹ค. <br /><br />
+
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์ด ๋‹ค์‹œ ํ™œ์„ฑํ™”๋˜๋ฉด, ํ˜„์žฌ [page:.time time] ๋ถ€ํ„ฐ ์—ฐ์†์ ์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ํ™œ์„ฑํ™” ๋ฉ๋‹ˆ๋‹ค (*enabled* ๋ฅผ *false* ๋กœ ์„ค์ •ํ•˜๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์ด ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).<br /><br />
+
+			์ฐธ๊ณ : *enabled* ๋ฅผ *true* ๋กœ ์„ค์ •ํ•ด๋„ ์ž๋™์ ์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์žฌ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. *enabled* ๋ฅผ *true* ๋กœ ์„ค์ •ํ•˜๋ฉด ๋‹ค์Œ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ฆ‰์‹œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค: 
+			[page:.paused paused] ๊ฐ€ *false* ์ธ ๊ฒฝ์šฐ, - ๊ทธ๋™์•ˆ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์€ ๋น„ํ™œ์„ฑํ™” ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค 
+			( [page:.stop stop] ๋˜๋Š” [page:.reset reset] ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ) ๊ทธ๋ฆฌ๊ณ  [page:.weight weight], [page:.timeScale timeScale] ๋Š” ๋‘˜ ๋‹ค 0 ์ด ์•„๋‹™๋‹ˆ๋‹ค.
+
+		</p>
+
+		<h3>[property:Number loop]</h3>
+		<p>
+			๋ฐ˜๋ณต ๋ชจ๋“œ ([page:.setLoop setLoop] ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ๊ธฐ๋ณธ๊ฐ’์€ [page:Animation THREE.LoopRepeat] ([page:.repetitions repetitions] ๋Š” ๋ฌดํ•œํ•œ ์ˆ˜๋ฅผ ํฌํ•จ)
+			<br /><br />
+
+			๋‹ค์Œ์˜ ์ƒ์ˆ˜๊ฐ’ ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•จ:<br /><br />
+			[page:Animation THREE.LoopOnce] - ํด๋ฆฝ ํ•œ๋ฒˆ ์žฌ์ƒ <br />
+			[page:Animation THREE.LoopRepeat] - ํด๋ฆฝ์˜ ๋์—์„œ ์‹œ์ž‘ ๋ถ€๋ถ„์œผ๋กœ ์ฆ‰์‹œ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ์„ ํƒํ•œ *repetitions* ์ˆ˜ ๋งŒํผ ํด๋ฆฝ ์žฌ์ƒ <br />
+			[page:Animation THREE.LoopPingPong] - ์„ ํƒํ•œ *repetitions* ์ˆ˜ ๋งŒํผ ํด๋ฆฝ์„ ์•ž๋’ค๋กœ ์žฌ์ƒ
+		</p>
+  
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์—์„œ ์ˆ˜ํ–‰๋œ [page:AnimationClip] ์˜ ๋ฐ˜๋ณต ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค.
+			[page:.setLoop setLoop]์„ ํ†ตํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *๋ฌดํ•œ๋Œ€* ์ž…๋‹ˆ๋‹ค. <br /><br />
+			[page:. loop loop mode] ๊ฐ€ [page:animation THREE.LoopOnce] ๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด ์ˆซ์ž๋ฅผ ์„ค์ •ํ•ด๋„ ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+			
+		</p>
+
+		<h3>[property:Number time]</h3>
+		<p>
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์˜ ๋กœ์ปฌ ์‹œ๊ฐ„ ์†์„ฑ (์ดˆ ๋‹จ์œ„, 0๋ถ€ํ„ฐ ์‹œ์ž‘).<br /><br />
+
+			์‹œ๊ฐ„ ์†์„ฑ์€ ๊ฐ’์ด ๊ณ ์ • ๋˜๊ฑฐ๋‚˜, ๋ฐ˜๋ณต ์ƒํƒœ์— ๋”ฐ๋ผ 0 ... clip.duration ์œผ๋กœ ๋ž˜ํ•‘ ๋ฉ๋‹ˆ๋‹ค. 
+			[page:.timeScale timeScale] ์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ธ€๋กœ๋ฒŒ ๋ฏน์„œ ํƒ€์ž„์„ ์ƒ๋Œ€์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค 
+			([page:.setEffectiveTimeScale setEffectiveTimeScale] ๋˜๋Š” [page:.setDuration setDuration] ์„ ์ด์šฉํ•˜์—ฌ) <br />
+		</p>
+
+		<h3>[property:Number timeScale]</h3>
+		<p>
+			[page:.time time] ์— ๋Œ€ํ•œ ์Šค์ผ€์ผ ํŒฉํ„ฐ ์†์„ฑ์ž…๋‹ˆ๋‹ค. ๊ฐ’์ด 0 ์ผ ๊ฒฝ์šฐ ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.
+			์Œ์ˆ˜ ๊ฐ’ ์ผ ๊ฒฝ์šฐ ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ๋’ค๋กœ ์žฌ์ƒ ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *1* ์ž…๋‹ˆ๋‹ค. <br /><br />
+			*timeScale* ๊ณผ ๊ด€๋ จ๋œ ์†์„ฑ/๋ฉ”์†Œ๋“œ๋Š”:
+			[page:.getEffectiveTimeScale getEffectiveTimeScale],
+			[page:.halt halt],
+			[page:.paused paused],
+			[page:.setDuration setDuration],
+			[page:.setEffectiveTimeScale setEffectiveTimeScale],
+			[page:.stopWarping stopWarping],
+			[page:.syncWith syncWith],
+			[page:.warp warp] ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number weight]</h3>
+		<p>
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์˜ ์ค‘์š”๋„์— ๋Œ€ํ•œ ์†์„ฑ์ž…๋‹ˆ๋‹ค ([0,1] ๊ฐ„๊ฒฉ). 
+			๊ฐ’์€ *0* (์˜ํ–ฅ ์—†์Œ) ๊ณผ *1* (์ตœ๋Œ€ ์˜ํ–ฅ) ์‚ฌ์ด์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ์—ฌ๋Ÿฌ ์•ก์…˜๋“ค์„ ํ˜ผํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+			๊ธฐ๋ณธ๊ฐ’์€ *1* ์ž…๋‹ˆ๋‹ค. <br /><br />
+			
+			*weight* ์™€ ๊ด€๋ จ๋œ ์†์„ฑ/๋ฉ”์†Œ๋“œ๋Š”:
+			[page:.crossFadeFrom crossFadeFrom],
+			[page:.crossFadeTo crossFadeTo],
+			[page:.enabled enabled],
+			[page:.fadeIn fadeIn],
+			[page:.fadeOut fadeOut],
+			[page:.getEffectiveWeight getEffectiveWeight],
+			[page:.setEffectiveWeight setEffectiveWeight],
+			[page:.stopFading stopFading] ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean zeroSlopeAtEnd]</h3>
+		<p>
+			์‹œ์ž‘, ๋ฃจํ”„ ๋ฐ ์ข…๋ฃŒ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ํด๋ฆฝ์—†์ด ๋ถ€๋“œ๋Ÿฌ์šด ๋ณด๊ฐ„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *true* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean zeroSlopeAtStart]</h3>
+		<p>
+			์‹œ์ž‘, ๋ฃจํ”„ ๋ฐ ์ข…๋ฃŒ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ํด๋ฆฝ์—†์ด ๋ถ€๋“œ๋Ÿฌ์šด ๋ณด๊ฐ„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *true* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>๋ฉ”์†Œ๋“œ</h2>
+
+
+		<h3>[method:AnimationAction crossFadeFrom]( [param:AnimationAction fadeOutAction], [param:Number durationInSeconds], [param:Boolean warpBoolean] )</h3>
+		<p>
+			ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” [page:.fadeIn fade in] ์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๊ณ , ์ „๋‹ฌ ๋œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ๋‚ด์—์„œ ๋™์‹œ์— ๋‹ค๋ฅธ ์ž‘์—…์„ ํŽ˜์ด๋“œ ์•„์›ƒ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
+			ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. <br /><br />
+
+			๋งŒ์•ฝ warpBoolean ์ด true ์ผ ๊ฒฝ์šฐ, ์ถ”๊ฐ€์ ์œผ๋กœ [page.warp warping] ์ด ์ ์šฉ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค (time scales ๋งŒํผ ์ ์ฐจ์ ์œผ๋กœ ๋ณ€๊ฒฝ). <br /><br />
+
+			์ฐธ๊ณ : *fadeIn*/*fadeOut* ์ฒ˜๋Ÿผ, ํŽ˜์ด๋”ฉ์˜ ์‹œ์ž‘/์ข…๋ฃŒ์˜ ๊ฐ€์ค‘์น˜ ๊ฐ’์ด 1์ผ ๋•Œ ๋™์ž‘๋ฉ๋‹ˆ๋‹ค.
+
+		</p>
+
+		<h3>[method:AnimationAction crossFadeTo]( [param:AnimationAction fadeInAction], [param:Number durationInSeconds], [param:Boolean warpBoolean] )</h3>
+		<p>
+			ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” [page:.fadeOut fade out] ์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๊ณ , ์ „๋‹ฌ ๋œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ๋‚ด์—์„œ ๋™์‹œ์— ๋‹ค๋ฅธ ์ž‘์—…์„ ํŽ˜์ด๋“œ ์ธ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
+			ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. <br /><br />
+			
+			๋งŒ์•ฝ warpBoolean ์ด true ์ผ ๊ฒฝ์šฐ, ์ถ”๊ฐ€์ ์œผ๋กœ [page.warp warping] ์ด ์ ์šฉ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค (time scales ๋งŒํผ ์ ์ฐจ์ ์œผ๋กœ ๋ณ€๊ฒฝ). <br /><br />
+			
+			์ฐธ๊ณ : *fadeIn*/*fadeOut* ์ฒ˜๋Ÿผ, ํŽ˜์ด๋”ฉ์˜ ์‹œ์ž‘/์ข…๋ฃŒ์˜ ๊ฐ€์ค‘์น˜ ๊ฐ’์ด 1์ผ ๋•Œ ๋™์ž‘๋ฉ๋‹ˆ๋‹ค.
+
+		</p>
+
+		<h3>[method:AnimationAction fadeIn]( [param:Number durationInSeconds] )</h3>
+		<p>
+			์ „๋‹ฌ๋œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ๋‚ด์—์„œ ํŽ˜์ด๋“œ ์ธ์˜ [page:.weight weight] ์˜ ๊ฐ’์„ 0 ์—์„œ 1์œผ๋กœ ์ ์ฐจ์ ์œผ๋กœ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. 
+			ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationAction fadeOut]( [param:Number durationInSeconds] )</h3>
+		<p>
+			์ „๋‹ฌ๋œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ๋‚ด์—์„œ ํŽ˜์ด๋“œ ์•„์›ƒ์˜ [page:.weight weight] ์˜ ๊ฐ’์„ 1 ์—์„œ 0์œผ๋กœ ์ ์ฐจ์ ์œผ๋กœ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.
+			ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Number getEffectiveTimeScale]()</h3>
+		<p>
+			์‹ค์งˆ์ ์ธ ํƒ€์ž„ ์Šค์ผ€์ผ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. (ํ˜„์žฌ ์›Œํ•‘ ์ƒํƒœ ๋ฐ [page:.paused paused] ์„ ๊ณ ๋ คํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค).
+			
+		</p>
+
+		<h3>[method:number getEffectiveWeight]()</h3>
+		<p>
+			์‹ค์งˆ์ ์ธ ๊ฐ€์ค‘์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. (ํ˜„์žฌ ํŽ˜์ด๋”ฉ ์ƒํƒœ ๋ฐ [page:.enabled enabled] ์„ ๊ณ ๋ คํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค).
+		</p>
+
+		<h3>[method:AnimationClip getClip]()</h3>
+		<p>
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์— ๋Œ€ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ํด๋ฆฝ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationMixer getMixer]()</h3>
+		<p>
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์„ ์žฌ์ƒํ•  ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฏน์„œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Object3D getRoot]()</h3>
+		<p>
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์ด ์ˆ˜ํ–‰๋˜๋Š” ๋ฃจํŠธ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationAction halt]( [param:Number durationInSeconds] )</h3>
+		<p>
+			์ „๋‹ฌ ๋œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ๋‚ด์—์„œ [page:.timeScale timeScale]์„ ์ ์ฐจ์ ์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์†๋„๋ฅผ 0์œผ๋กœ ๊ฐ์†Œ์‹œํ‚ต๋‹ˆ๋‹ค(ํ˜„์žฌ ๊ฐ’์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘).
+			ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Boolean isRunning]()</h3>
+		<p>
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์ด ํ˜„์žฌ [page:.time time] ๋™์ž‘์ค‘์ผ ๊ฒฝ์šฐ true ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. <br /><br />
+
+			์ถ”๊ฐ€์ ์œผ๋กœ ๋ฏน์„œ์—์„œ ํ™œ์„ฑํ™”๋˜๋Š” ๊ฒƒ ์ด์™ธ์— ([page:.isScheduled isScheduled] ์ฐธ์กฐ) ๋‹ค์Œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
+			[page:.paused paused] ๋Š” false ์กฐ๊ฑด์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค,
+			[page:.enabled enabled] ๋Š” true ์กฐ๊ฑด์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค,
+			[page:.timeScale timeScale] ๋Š” 0์ด ์•„๋‹ˆ์—ฌ์•ผ ํ•˜๊ณ , ([page:.startAt start] ์ง€์—ฐ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. <br /><br />
+
+			์ฐธ๊ณ : *isRunning* ์ด true ์ด์—ฌ๋„ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์‹ค์ œ ๋™์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
+			[page : .weight weight] ๊ฐ€ 0์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ ์ถ”๊ฐ€๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.
+			
+		</p>
+
+		<h3>[method:Boolean isScheduled]()</h3>
+		<p>
+			๋งŒ์•ฝ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์ด ๋ฏน์„œ์—์„œ ํ™œ์„ฑํ™” ๋  ๊ฒฝ์šฐ true ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. <br /><br />
+			
+			์ฐธ๊ณ : ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ([page:.isRunning isRunning] ์— ๋Œ€ํ•œ ์ถ”๊ฐ€์ ์ธ ๋น„๊ต ์กฐ๊ฑด์ด ํ•„์š”)
+			
+		</p>
+
+		<h3>[method:AnimationAction play]()</h3>
+		<p>
+			๋ฏน์„œ์— ์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์„ ํ™œ์„ฑํ™”ํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. <br /><br />
+
+			์ฐธ๊ณ : ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์„ฑํ™” ํ•  ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค: 
+			๋งŒ์•ฝ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜ ์ž‘์—…์ด ์ด๋ฏธ ์™„๋ฃŒ๋˜์—ˆ๊ฑฐ๋‚˜ (๋งˆ์ง€๋ง‰ ๋ฃจํ”„์˜ ๋์— ๋„๋‹ฌํ•˜์—ฌ), ์ง€์—ฐ๋œ ์‹œ์ž‘ ์‹œ๊ฐ„์ด ์„ค์ •๋œ ๊ฒฝ์šฐ([page:.startAt startAt] ์„ ํ†ตํ•ด), ๋จผ์ € [page:.reset rest]์„ ์ฒ˜์Œ์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+			์ผ๋ถ€ ๋‹ค๋ฅธ ์„ค์ • ([page:.paused paused] = true, [page:.enabled enabled] = false, [page:.weight weight] = 0, [page:.timeScale timeScale] = 0) ์œผ๋กœ ์ธํ•ด ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์žฌ์ƒ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationAction reset]()</h3>
+		<p>
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์„ ์žฌ์„ค์ • ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. <br /><br />
+
+			ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” 
+			[page:.paused paused] ๋ฅผ false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค,
+			[page:.enabled enabled] ๋ฅผ true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค,
+			[page:.time time] ์„ 0์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค,
+			๋ฏธ๋ฆฌ ์˜ˆ์•ฝ๋œ ํŽ˜์ด๋”ฉ ๋ฐ ์›Œํ•‘์„ ์ค‘๋‹จํ•˜๊ณ  ๋‚ด๋ถ€ ๋ฃจํ”„ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์‹œ์ž‘์„ ์ง€์—ฐ์‹œํ‚ต๋‹ˆ๋‹ค. <br /><br />
+
+			์ฐธ๊ณ : *.reset* ์€ ํ•ญ์ƒ [page:.stop stop] ์— ์˜ํ•ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค ๊ทธ๋Ÿฌ๋‚˜, *reset* ์€ ์Šค์Šค๋กœ *stop* ์„ ํ˜ธ์ถœํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. <br/>
+			๊ธฐ์ˆ : ๋งŒ์•ฝ ๋‹น์‹ ์ด *stop* ๊ณผ *reset* ๋‘˜๋‹ค ํ˜ธ์ถœํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉด, *reset* ์€ ํ˜ธ์ถœํ•˜์ง€ ๋ง๊ณ  *stop* ์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. <br/>
+		</p>
+
+		<h3>[method:AnimationAction setDuration]( [param:Number durationInSeconds] )</h3>
+		<p>
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์˜ ๋‹จ์ผ ๋ฃจํ”„์˜ ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค ([page:.timeScale timeScale] ์„ ์กฐ์ •ํ•˜๊ณ , ๋ฏธ๋ฆฌ ์˜ˆ์•ฝ๋œ ์›Œํ•‘์„ ์ค‘๋‹จ).
+			ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+			
+		</p>
+
+		<h3>[method:AnimationAction setEffectiveTimeScale]( [param:Number timeScale] )</h3>
+		<p>
+			[page:.timeScale timeScale] ์„ ์„ค์ •ํ•˜๊ณ  ์˜ˆ์•ฝ๋œ ์›Œํ•‘์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. <br /><br />
+
+			๋งŒ์•ฝ [page:.paused paused] ๊ฐ€ false ์ผ ๊ฒฝ์šฐ, ์‹ค์งˆ์ ์ธ ํƒ€์ž„ ์Šค์ผ€์ผ (๋‚ด๋ถ€ ์†์„ฑ) ๊ฐ’์€ ํ•ด๋‹น timeScale ๊ฐ’์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค;
+			๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด, ์‹ค์งˆ์ ์ธ ํƒ€์ž„ ์Šค์ผ€์ผ (ํ˜„์žฌ ์• ๋‹ˆ๋ฉ”์ด์…˜์— ์ง์ ‘์ ์œผ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”) ๊ฐ’์€ 0์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. <br /><br />
+
+			์ฐธ๊ณ : ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋กœ ์ธํ•ด *timeScale* ์˜ ๊ฐ’์ด 0 ์œผ๋กœ ์„ค์ • ๋˜์–ด๋„ .*paused* ๊ฐ’์€ ์ž๋™์ ์œผ๋กœ *true* ๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+			
+		</p>
+
+		<h3>[method:AnimationAction setEffectiveWeight]( [param:Number weight] )</h3>
+		<p>
+			[page:.weight weight] ์ด ์„ค์ •๋˜๊ณ  ์˜ˆ์•ฝ๋œ ํŽ˜์ด๋”ฉ์„ ์ค‘์ง€ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. <br /><br />
+
+			๋งŒ์•ฝ [page:..enabled enabled] ์ด true ์ผ ๊ฒฝ์šฐ, ์‹ค์งˆ์ ์ธ ๊ฐ€์ค‘์น˜ (๋‚ด๋ถ€ ์†์„ฑ* ๊ฐ’์€ ํ•ด๋‹น weight ๊ฐ’์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค;
+			๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด, ์‹ค์งˆ์ ์ธ ๊ฐ€์ค‘์น˜ (ํ˜„์žฌ ์• ๋‹ˆ๋ฉ”์ด์…˜์— ์ง์ ‘์ ์œผ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”) ๊ฐ’์€ 0์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. <br /><br />
+	
+			์ฐธ๊ณ : ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋กœ ์ธํ•ด *weight* ์˜ ๊ฐ’์ด 0 ์œผ๋กœ ์„ค์ • ๋˜์–ด๋„ .*enabled* ๊ฐ’์€ ์ž๋™์ ์œผ๋กœ *false*๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationAction setLoop]( [param:Number loopMode], [param:Number repetitions] )</h3>
+		<p>
+			[page:.loop loop mode] ๋ฐ [page:.repetitions repetitions] ์˜ ํšŸ์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationAction startAt]( [param:Number startTimeInSeconds] )</h3>
+		<p>
+			
+			์ง€์—ฐ๋œ ์‹œ์ž‘ ์ด๋ฒคํŠธ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค (์ผ๋ฐ˜์ ์œผ๋กœ AnimationMixer.time + deltaTimeInSeconds์—์„œ ์ „๋‹ฌ๋จ). ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. <br /><br />
+
+			์ฐธ๊ณ : .[page:.startAt startAt] ๋ฉ”์†Œ๋“œ๊ฐ€ [page:.play play] ๋ฉ”์†Œ๋“œ์™€ ํ•จ๊ป˜ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋ฏน์„œ์—์„œ ํ™œ์„ฑํ™” ๋œ ๊ฒฝ์šฐ (์ค‘์ง€ ๋˜๋Š” ์žฌ์„ค์ •์—†์ด .*play* ๋ฅผ ๋จผ์ € ํ˜ธ์ถœํ•˜์—ฌ) ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ์ง€์ •๋œ ์‹œ๊ฐ„์—๋งŒ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationAction stop]()</h3>
+		<p>
+			๋ฏน์„œ์—๊ฒŒ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. <br /><br />
+
+			ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ž‘์—…์ด ์ฆ‰์‹œ ์ค‘๋‹จ๋˜๊ณ  ์™„์ „ํžˆ ์žฌ์„ค์ • [page:.rest rest] ๋ฉ๋‹ˆ๋‹ค. <br /><br />
+
+			์ฐธ๊ณ : [page:.AnimationMixer.stopAllAction mixer.stopAllAction] ์„ ํ†ตํ•ด ๊ฐ™์€ ๋ฏน์„œ์— ์žˆ๋Š” ๋ชจ๋“  ํ™œ์„ฑ๋œ ์ž‘์—…๋“ค์„ ํ•œ๋ฒˆ์— ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+		</p>
+
+		<h3>[method:AnimationAction stopFading]()</h3>
+		<p>
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์— ์ ์šฉ๋˜์–ด ์žˆ๋Š” [page:.fadeIn fading] ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationAction stopWarping]()</h3>
+		<p>
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์— ์ ์šฉ๋˜์–ด ์žˆ๋Š” [page:.warp warping] ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationAction syncWith]( [param:AnimationAction otherAction] )</h3>
+		<p>
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์„ ์ „๋‹ฌ๋œ ๋‹ค๋ฅธ ์ž‘์—…๊ณผ ํ•จ๊ป˜ ๋™๊ธฐํ™”๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. <br /><br />
+
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜์˜ ๋™๊ธฐํ™”๋Š” [page:.time time] ๋ฐ [page:.timeScale timeScale] ๊ฐ’์„ ๋‹ค๋ฅธ ์ž‘์—…์˜ ๊ฐ’์œผ๋กœ ๋Œ€์‘๋˜์–ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค (์˜ˆ์•ฝ ๋œ ์›Œํ•‘ ์ค‘์ง€). <br /><br />
+
+			์ฐธ๊ณ : ๋‹ค๋ฅธ ์ž‘์—…๋“ค์˜ *time* ๋ฐ *timeScale* ์˜  ํ–ฅํ›„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๊ฐ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationAction warp]( [param:Number startTimeScale], [param:Number endTimeScale], [param:Number durationInSeconds] )</h3>
+		<p>
+			๋“ค์–ด์˜ค๋Š” ์ด๋ฒคํŠธ ๊ฐ„๊ฒฉ์—์„œ [page:.timeScale timeScale] ์„ *startTimeScale* ์—์„œ *endTimeScale* ๋กœ ์ ์ฐจ์ ์œผ๋กœ ์žฌ์ƒ ์†๋„๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์ด๋ฒคํŠธ</h2>
+
+
+		<p class="desc">
+			๋‹จ์ผ ๋ฃจํ”„์˜ ๋๊ณผ ์ „์ฒด ์ž‘์—…์˜ โ€‹โ€‹๋์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ๊ฐ€์ง€ ์ด๋ฒคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‘๋‹ต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+		<code>
+		mixer.addEventListener( 'loop', function( e ) { โ€ฆ} ); // properties of e: type, action and loopDelta
+		mixer.addEventListener( 'finished', function( e ) { โ€ฆ} ); // properties of e: type, action and direction
+		</code>
+
+		<h2>์†Œ์Šค</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 142 - 0
docs/api/ko/animation/AnimationClip.html

@@ -0,0 +1,142 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<p class="desc">
+			AnimationClip์€ ์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ํ‚คํ”„๋ ˆ์ž„ ํŠธ๋ž™ ๋ชจ์Œ์œผ๋กœ, ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋Œ€ํ‘œํ•˜๋Š” ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.<br /><br />
+
+			three.js ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ์˜ ๋‹ค์–‘ํ•œ ์—˜๋ ˆ๋จผํŠธ์— ๊ด€ํ•ด์„œ๋Š” ๋งค๋‰ด์–ผ์˜ "์‹ฌํ™”๊ณผ์ •" ์ค‘ "์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ" ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( [param:String name], [param:Number duration], [param:Array tracks] )</h3>
+		<p>
+			[page:String name] - ํด๋ฆฝ์˜ ์ด๋ฆ„.<br />
+			[page:Number duration] - ํด๋ฆฝ์˜ ๊ธธ์ด (์ดˆ ๋‹จ์œ„). ์Œ์ˆ˜ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ๊ธธ์ด๋Š” *tracks* ๋ฐฐ์—ด์—์„œ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.<br />
+			[page:Array tracks] - [page:KeyframeTrack KeyframeTracks] ๋ฐฐ์—ด.<br /><br />
+
+			์ฐธ๊ณ : AnimationClip๋ฅผ ์ง์ ‘ ์ธ์Šคํ„ด์Šค๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ณด๋‹ค, ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ AnimationClips๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค: 
+			JSON ([page:.parse parse]), ๋ชจํ”„ ํƒ€๊ฒŸ ์‹œํ€€์Šค ([page:.CreateFromMorphTargetSequence CreateFromMorphTargetSequence],
+			[page:.CreateClipsFromMorphTargetSequences CreateClipsFromMorphTargetSequences]) ํ˜น์€
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ณ„์ธต ([page:.parseAnimation parseAnimation])์„ ํ™œ์šฉํ•˜์„ธ์š”. - ๋ชจ๋ธ์˜ ๊ธฐํ•˜ํ•™ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐฐ์—ด์— AnimationClips๊ฐ€ ์—†์„ ๊ฒฝ์šฐ.
+		</p>
+
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+
+		<h3>[property:Number duration]</h3>
+		<p>
+			ํด๋ฆฝ์˜ ๊ธธ์ด์ž…๋‹ˆ๋‹ค(์ดˆ ๋‹จ์œ„). ์ด ๊ฐ’์€ [page:.tracks tracks] ๋ฐฐ์—ด์—์„œ [page:.resetDuration resetDuration]๋ฅผ ํ†ตํ•ด ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:String name]</h3>
+		<p>
+			ํด๋ฆฝ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํŠน์ • ํด๋ฆฝ์€ [page:.findByName findByName]์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Array tracks]</h3>
+		<p>
+			์ด ํด๋ฆฝ์—์„œ ์žฌ์ƒ๋˜๋Š” ๊ฐ ํ”„๋กœํผํ‹ฐ์— [page:KeyframeTrack]์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:String uuid]</h3>
+		<p>
+			ํด๋ฆฝ ์ธ์Šคํ„ด์Šค์˜ [link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID]์ž…๋‹ˆ๋‹ค.
+			์ž๋™์œผ๋กœ ํ• ๋‹น๋˜๋ฉฐ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<h3>[method:AnimationClip clone]()</h3>
+		<p>
+			ํด๋ฆฝ์˜ ๋ณต์‚ฌ๋ณธ์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:this optimize]()</h3>
+		<p>
+			๋™์ผํ•œ ์‹œํ€€์Šค ํ‚ค๋ฅผ ์ œ๊ฑฐํ•ด ๊ฐ ํŠธ๋ž™์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค(๋ชจํ”„ ํƒ€๊ฒŸ ์‹œํ€€์Šค์—์„œ๋Š” ํ”ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค).
+		</p>
+
+		<h3>[method:this resetDuration]()</h3>
+		<p>
+			ํด๋ฆฝ์˜ [page:.duration duration]์„ ๊ฐ€์žฅ ๊ธด [page:KeyframeTrack]์˜ ๊ธธ์ด๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Object toJSON]()</h3>
+		<p>
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ํด๋ฆฝ์„ ์ง๋ ฌํ™”ํ•œ JSON object๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:this trim]()</h3>
+		<p>
+			ํด๋ฆฝ์˜ ๊ธธ์ด์— ๋งž์ถฐ ๋ชจ๋“  ํŠธ๋ž™์˜ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Boolean validate]()</h3>
+		<p>
+			ํด๋ฆฝ์— ์žˆ๋Š” ํŠธ๋ž™๋“ค์˜ ์ตœ์†Œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์‹œํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํŠธ๋ž™์ด ์œ ํšจํ•˜๋ฉด true๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์ •์  ๋ฉ”์„œ๋“œ</h2>
+
+
+		<h3>[method:Array CreateClipsFromMorphTargetSequences]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>
+		<p>
+			geometry์˜ [page:Geometry.morphTargets morph
+			target sequences]๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์ƒˆ AnimationClips ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•˜๊ณ  , 
+			๋ชจํ”„ ํƒ€๊ฒŸ ์ด๋ฆ„์„ ์• ๋‹ˆ๋ฉ”์ด์…˜-๊ทธ๋ฃน-๊ธฐ๋ฐ˜์˜ "Walk_001, Walk_002, Run_001, Run_002 ..."์™€ ๊ฐ™์€ ํŒจํ„ด์œผ๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationClip CreateFromMorphTargetSequence]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>
+		<p>
+			geometry์—์„œ ๋„˜์–ด์˜จ [page:Geometry.morphTargets morph targets array]๋ฅผ ํ†ตํ•ด 
+			์ดˆ ๋‹จ์œ„์˜ ํ”„๋ ˆ์ž„ ์ˆ˜์™€ ์ด๋ฆ„์„ ๋ฐ›์•„ ์ƒˆ AnimationClip์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+			<br /><br />
+
+			์ฐธ๊ณ : fps ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ์†๋„๋Š” [page:AnimationAction.setDuration animationAction.setDuration]์„ ํ†ตํ•œ 
+			*AnimationAction*์— ์˜ํ•ด ์˜ค๋ฒ„๋ผ์ด๋”ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationClip findByName]( [param:Object objectOrClipArray], [param:String name] )</h3>
+		<p>
+			Searches for an AnimationClip์„ ์œ„ํ•œ ๊ฒ€์ƒ‰๊ธฐ๋กœ, ์ฒซ ํŒŒ๋ผ๋ฏธํ„ฐ ํ˜น์€ AnimationClips ๋ฐฐ์—ด, "animations"๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ mesh, geometry ๋ฒ ์—ด๋กœ๋ถ€ํ„ฐ ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationClip parse]( [param:Object json] )</h3>
+		<p>
+			ํด๋ฆฝ์˜ JSON ํŒŒ์ผ์„ ํŒŒ์‹ฑํ•˜๊ณ  AnimationClip์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationClip parseAnimation]( [param:Object animation], [param:Array bones] )</h3>
+		<p>
+			animation.hierarchy ํฌ๋งท์„ ํŒŒ์‹ฑํ•˜๊ณ  AnimationClip์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Object toJSON]( [param:AnimationClip clip] )</h3>
+		<p>
+			AnimationClip์„ ๋ฐ›์•„ JSON ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์†Œ์Šค ์ฝ”๋“œ</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 113 - 0
docs/api/ko/animation/AnimationMixer.html

@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<p class="desc">
+			AnimationMixer๋Š” ์žฅ๋ฉด์— ์žˆ๋Š” ํŠน์ • ์˜ค๋ธŒ์ ํŠธ์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ”Œ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค. ํ•œ ์žฅ๋ฉด์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์˜ค๋ธŒ์ ํŠธ๋“ค์ด 
+			๋…๋ฆฝ์ ์œผ๋กœ ์›€์ง์ธ๋‹ค๋ฉด, ๊ฐ๊ฐ ๋‹ค๋ฅธ AnimationMixer๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br /><br />
+
+			three.js ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ์˜ ๋‹ค์–‘ํ•œ ์—˜๋ ˆ๋จผํŠธ์— ๊ด€ํ•ด์„œ๋Š” ๋งค๋‰ด์–ผ์˜ "์‹ฌํ™”๊ณผ์ •" ์ค‘ "์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ" ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( [param:Object3D rootObject] )</h3>
+		<p>
+			[page:Object3D rootObject] - ๋ฏน์„œ์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์žฌ์ƒ๋  ์˜ค๋ธŒ์ ํŠธ.<br />
+		</p>
+
+
+		<h2>Properties</h2>
+
+
+		<h3>[property:Number time]</h3>
+		<p>
+			๊ธ€๋กœ๋ฒŒ ๋ฏน์„œ์˜ ์‹œ๊ฐ„ (์ดˆ ๋‹จ์œ„, ๋ฏน์„œ ์ƒ์„ฑ์‹œ์— 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•จ).
+		</p>
+
+		<h3>[property:Number timeScale]</h3>
+		<p>
+			๊ธ€๋กœ๋ฒŒ ๋ฐฐ์† [page:.time mixer time].<br /><br />
+
+			์ฐธ๊ณ : ๋ฏน์„œ์˜ timeScale๋ฅผ 0์œผ๋กœ ์„ค์ •ํ–ˆ๋‹ค๊ฐ€ ๋‚˜์ค‘์— 1๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •์ง€/์žฌ์ƒ ๊ธฐ๋Šฅ์„ 
+			๋ฏน์„œ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<h3>[method:AnimationAction clipAction]([param:AnimationClip clip], [param:Object3D optionalRoot])</h3>
+		<p>
+			์ „๋‹ฌ๋ฐ›์€ ํด๋ฆฝ์˜ [page:AnimationAction]์„ ๋ฆฌํ„ดํ•˜๋ฉฐ, ๋ฏน์„œ์˜ ๋ฃจํŠธ ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฃจํŠธ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 
+			์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” [page:AnimationClip] ์˜ค๋ธŒ์ ํŠธ ๋ฐ AnimationClip ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br /><br />
+
+			ํด๋ฆฝ์— ๋™์ž‘์€ ์„ค์ •๋˜์—ˆ๋Š”๋ฐ ๋ฃจํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+			์ด ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ™์€ ํด๋ฆฝ๊ณผ ๋ฃจํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•ด๋„ ํ•ญ์ƒ ๊ฐ™์€ ํด๋ฆฝ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฆฌํ„ดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationAction existingAction]([param:AnimationClip clip], [param:Object3D optionalRoot])</h3>
+		<p>
+			์ „๋‹ฌ๋ฐ›์€ ํด๋ฆฝ์— ์กด์žฌํ•˜๋Š” [page:AnimationAction]์„ ๋ฆฌํ„ดํ•˜๋ฉฐ ๋ฏน์„œ์˜ ๋ฃจํŠธ ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฃจํŠธ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.<br /><br />
+
+			์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” [page:AnimationClip] ์˜ค๋ธŒ์ ํŠธ ๋ฐ AnimationClip ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Object3D getRoot]()</h3>
+		<p>
+			๋ฏน์„œ์˜ ๋ฃจํŠธ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationMixer stopAllAction]()</h3>
+		<p>
+			๋ฏน์„œ์˜ ๋ชจ๋“  ์ด์ „ ์˜ˆ์•ฝ ๋™์ž‘๋“ค์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationMixer update]([param:Number deltaTimeInSeconds]) </h3>
+		<p>
+			๊ธ€๋กœ๋ฒŒ ๋ฏน์„œ ์‹œ๊ฐ„์„ ๋˜๋Œ๋ฆฌ๊ณ  ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.<br /><br />
+
+			์ฃผ๋กœ ๋ Œ๋” ๋ฃจํ”„์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, [page:.timeScale timeScale]๋กœ ์„ค์ •๋œ ๋ฐฐ์œจ๋กœ [page:Clock.getDelta clock.getDelta]๋ฅผ ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationMixer setTime]([param:Number timeInSeconds]) </h3>
+		<p>
+			๊ธ€๋กœ๋ฒŒ ๋ฏน์„œ์˜ ํŠน์ • ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.<br /><br />
+
+			์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ์ •ํ™•ํ•œ ์‹œ๊ฐ„๋Œ€๋กœ ์ด๋™ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฏน์„œ์˜ [page:.timeScale timeScale]์˜ ๋ฐฐ์œจ์„ ๋”ฐ๋ผ๊ฐ‘๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null uncacheClip]([param:AnimationClip clip])</h3>
+
+		<p>
+			ํด๋ฆฝ์— ์žˆ๋Š” ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹น ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null uncacheRoot]([param:Object3D root]) </h3>
+		<p>
+			๋ฃจํŠธ ์˜ค๋ธŒ์ ํŠธ์˜ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹น ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null uncacheAction]([param:AnimationClip clip], [param:Object3D optionalRoot])</h3>
+		<p>
+			๋™์ž‘์˜ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹น ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>Source</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 86 - 0
docs/api/ko/animation/AnimationObjectGroup.html

@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<p class="desc">์• ๋‹ˆ๋ฉ”์ด์…˜ ์ƒํƒœ๋ฅผ ๊ณต์œ  ๋ฐ ์ €์žฅํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.<br /><br />
+
+			three.js ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ์˜ ๋‹ค์–‘ํ•œ ์—˜๋ ˆ๋จผํŠธ์— ๊ด€ํ•ด์„œ๋Š” ๋งค๋‰ด์–ผ์˜ "์‹ฌํ™”๊ณผ์ •" ์ค‘ "์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ" ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<h2>์‚ฌ์šฉ:</h2>
+
+		<p class="desc">
+			'root'๋กœ ์ƒ์„ฑ์ž์— ๋„˜๊ธฐ๊ฑฐ๋‚˜ 'root'๋กœ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋„˜๊ธฐ๋Š” ๋Œ€์‹  
+			[page:AnimationMixer AnimationMixer]์˜ [page:AnimationMixer.clipAction clipAction]๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋„˜๊ธด
+			์˜ค๋ธŒ์ ํŠธ๋“ค์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
+			<br /><br />
+
+			์ด ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ๋“ค์€ ๋ฏน์„œ์˜ ํ•˜๋‚˜์˜ ์˜ค๋ธŒ์ ํŠธ๋กœ ๋‚˜ํƒ€๋‚  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—,
+			๊ฐœ๋ณ„ ์˜ค๋ธŒ์ ํŠธ์˜ ์บ์‹œ ์ปจํŠธ๋กค์€ ๊ทธ๋ฃน์—์„œ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์ œํ•œ</h2>
+		<p class="desc">
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ๋œ ํ”„๋กœํผํ‹ฐ๋“ค์€ ๊ทธ๋ฃน์˜ ๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.<br /><br />
+
+			๋‹จ์ผ ํ”„๋กœํผํ‹ฐ๋Š” ํƒ€๊ฒŸ ๊ทธ๋ฃน ๊ด€๋ฆฌ ์•„๋‹ˆ๋ฉด ์ง์ ‘ ๊ด€๋ฆฌ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋กœ ๋˜์–ด์•ผํ•˜๋ฉฐ, ๋™์‹œ์—๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+		<h3>[name]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
+		<p>
+			[page:Object obj] - ๊ฐ™์€ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ƒํƒœ๋ฅผ ๋™์œ ํ•˜๋Š” ๋ฉ”์‰ฌ์˜ ์ž„์˜ ์ˆซ์ž.
+		</p>
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+
+		<h3>[property:Object stats]</h3>
+		<p>
+			*AnimationObjectGroup* (์ด ๊ฐฏ์ˆ˜, ์‚ฌ์šฉ์ค‘์ธ ๊ฐฏ์ˆ˜, ์˜ค๋ธŒ์ ํŠธ๋ณ„ ๋ฐ”์ธ๋”ฉ ๊ฐฏ์ˆ˜)์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” ์˜ค๋ธŒ์ ํŠธ
+		</p>
+
+		<h3>[property:String uuid]</h3>
+		<p>
+			*AnimationObjectGroup*์˜ [link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID]. 
+			์ž๋™์œผ๋กœ ํ• ๋‹น๊ดด๋ฉฐ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<h3>[method:null add]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
+		<p>
+			*AnimationObjectGroup*์— ์ž„์˜ ๊ฐฏ์ˆ˜๋งŒํผ์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null remove]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
+		<p>
+			*AnimationObjectGroup*์˜ ์ž„์˜ ๊ฐฏ์ˆ˜๋งŒํผ์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null uncache]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
+		<p>
+			*AnimationObjectGroup*์˜ ์ „๋‹ฌ๋ฐ›์€ ์˜ค๋ธŒ์ ํŠธ๋“ค์˜ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹น ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์†Œ์Šค ์ฝ”๋“œ</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 62 - 0
docs/api/ko/animation/AnimationUtils.html

@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<p class="desc">
+		๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์–ด ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋ณด์กฐํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๋“ค์„ ๊ฐ€์ง„ ์˜ค๋ธŒ์ ํŠธ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<h3>[method:Array arraySlice]( array, from, to )</h3>
+		<p>
+		Array.prototype.slice์™€ ๋™์ผํ•˜์ง€๋งŒ, ํƒ€์ž… ๋ฐฐ์—ด์—์„œ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Array convertArray]( array, type, forceClone )</h3>
+		<p>
+		๋ฐฐ์—ด์„ ํŠน์ • ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Array flattenJSON]( jsonKeys, times, values, valuePropertyName  )</h3>
+		<p>
+		AOS ํ‚คํ”„๋ ˆ์ž„ ํฌ๋งท์„ ํŒŒ์‹ฑํ•˜๋Š”๋ฐ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Array getKeyframeOrder]( times )</h3>
+		<p>
+		๋ถ„๋ฅ˜ ๊ฐ€๋Šฅํ•œ ์‹œ๊ฐ„๊ณผ ๊ฐ’์„ ๋ฐฐ์—ด๋กœ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Boolean isTypedArray]( object )</h3>
+		<p>
+		ํƒ€์ž… ๋ฐฐ์—ด์ด๋ฉด *true*๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Array sortedArray]( values, stride, order )</h3>
+		<p>
+		์ด์ „์— [page:AnimationUtils.getKeyframeOrder getKeyframeOrder]๋ฅผ ํ†ตํ•ด ๋ฆฌํ„ด๋œ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AnimationClip subclip]( [param:AnimationClip clip], [param:String name], [param:Number startFrame], [param:Number endFrame], [param:Number fps] )</h3>
+		<p>
+		์„ค์ •ํ•œ ํ”„๋ ˆ์ž„ ์‚ฌ์ด์— ์žˆ๋Š” ์›๋ณธ ํด๋ฆฝ์˜ ์ผ๋ถ€๋ถ„์„ ํฌํ•จํ•˜๋Š” ์ƒˆ ํด๋ฆฝ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์†Œ์Šค์ฝ”๋“œ</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 245 - 0
docs/api/ko/animation/KeyframeTrack.html

@@ -0,0 +1,245 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			KeyframeTrack์€ ์‹œ๊ฐ„ ๋ฆฌ์ŠคํŠธ์™€ ๊ด€๋ จ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  ์˜ค๋ธŒ์ ํŠธ์˜ ํŠน์ • ํ”„๋กœํผํ‹ฐ๋ฅผ ๋™์ž‘์‹œํ‚ค๋Š” ๋ฐ์— ์‚ฌ์šฉ๋˜๋Š”
+			[link:https://en.wikipedia.org/wiki/Key_frame keyframes]์˜ ์‹œ๊ฐ„๋ณ„ ์‹œํ€€์Šค์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<p>
+			three.js ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ์˜ ๋‹ค์–‘ํ•œ ์—˜๋ ˆ๋จผํŠธ์— ๊ด€ํ•ด์„œ๋Š” ๋งค๋‰ด์–ผ์˜ "์‹ฌํ™”๊ณผ์ •" ์ค‘ "์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ" ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/wiki/JSON-Model-format-3 JSON model format]์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ณ„์ธต ๊ตฌ์กฐ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ
+			*KeyframeTrack*์€ "keys" ๋ฐฐ์—ด์— ์ž์‹ ์˜ ๋‹จ์ผ ํ‚คํ”„๋ ˆ์ž„์„ ์˜ค๋ธŒ์ ํŠธ๋กœ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (๊ฐ ํ”„๋ ˆ์ž„์˜ ์‹œ๊ฐ„๊ณผ ๊ฐ’์„ ํ•œ ์žฅ์†Œ์— ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค).
+		</p>
+
+		<p>
+			๊ทธ ๋Œ€์‹ ์—, *KeyframeTrack*์—๋Š” ์–ธ์ œ๋‚˜ ๋‘ ๋ฐฐ์—ด์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค: [page:.times times] ๋ฐฐ์—ด์€
+			ํŠธ๋ž™์˜ ๋ชจ๋“  ํ‚คํ”„๋ ˆ์ž„์˜ ๊ฐ’์„ ์‹œํ€€์Šค ์ˆœ์œผ๋กœ ์ €์žฅํ•˜๊ณ ,
+			[page:.values values] ๋ฐฐ์—ด์€ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ”„๋กœํผํ‹ฐ์˜ ๋ณ€๋™๊ฐ’์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<p>
+			ํ•œ ํŠน์ • ์‹œ์ ์— ์†ํ•œ ๋‹จ์ผ ๊ฐ’์€ ๊ฐ„๋‹จํ•œ ์ˆซ์ž ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ (์˜ˆ๋ฅผ ๋“ค๋ฉด) ๋ฒกํ„ฐ๊ฐ’ (์œ„์น˜๊ฐ€ ๋ณ€ํ™”ํ•˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ๊ฒฝ์šฐ) ํ˜น์€ ์ฟผํ„ฐ๋‹ˆ์–ธ (ํšŒ์ „์ด ์žˆ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ๊ฒฝ์šฐ)
+			๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ values ๋ฐฐ์—ด์€(ํ”Œ๋žซ ๋ฐฐ์—ด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€) ๋ณดํ†ต times ๋ฐฐ์—ด๋ณด๋‹ค 3~4๋ฐฐ ์ •๋„ ๊น๋‹ˆ๋‹ค.
+		</p>
+
+		<p>
+			๋‹ค์–‘ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ด€๋ จ ๊ฐ’๋“ค์˜ ํƒ€์ž… ๋Œ€์‘์„ ์œ„ํ•ด,	*KeyframeTrack*์—๋Š” ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ์žˆ๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋“ฑ์„ ์ƒ์†๋ฐ›์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<ul>
+			<li>[page:BooleanKeyframeTrack]</li>
+			<li>[page:ColorKeyframeTrack]</li>
+			<li>[page:NumberKeyframeTrack]</li>
+			<li>[page:QuaternionKeyframeTrack]</li>
+			<li>[page:StringKeyframeTrack]</li>
+			<li>[page:VectorKeyframeTrack]</li>
+		</ul>
+
+		<p>
+			๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ KeyframeTracks์œผ๋กœ [page:AnimationClip AnimationClips]๋ฅผ ์ง์ ‘ ๋งŒ๋“œ๋Š” ์˜ˆ์ œ๋Š” 
+			[link:https://threejs.org/examples/jsm/animation/AnimationClipCreator.js AnimationClipCreator]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<p>
+			๋ช…์‹œ์  ๊ฐ’์€ ์‹œ๊ฐ„ ๋ฐฐ์—ด์— ์ €์žฅ๋œ ์‹œ๊ฐ„ ์ด์‚ฐ ์ง€์ ์— ํŠน์ •๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋“  ์ค‘๊ฐ„ ๊ฐ’๋“ค์€ ๋ณด๊ฐ„์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 
+		</p>
+
+		<p>
+			ํŠธ๋ž™์˜ ์ด๋ฆ„์€ ํŠธ๋ž™๊ณผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋…ธ๋“œ([page:PropertyBinding]์— ์˜ํ•œ)์˜ ํŠน์ • ํ”„๋กœํผํ‹ฐ์™€์˜ ์—ฐ๊ฒฐ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( [param:String name], [param:Array times], [param:Array values], [param:Constant interpolation] )</h3>
+		<p>
+			[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] - ์‹œ๊ฐ„ ๋ฐฐ์—ด๊ณผ ๊ด€๋ จ๋œ ๊ฐ’์„ ๊ฐ€์ง„ ๋ฐฐ์—ด, ๋‚ด๋ถ€์ ์œผ๋กœ
+			[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array]๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.<br />
+			[page:Constant interpolation] - ๋ณด๊ฐ„๋ฒ• ์‚ฌ์šฉ ํƒ€์ž…. ๊ฐ€๋Šฅํ•œ ๊ฐ’๋“ค์€
+			[page:Animation Animation Constants] ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. ๊ธฐ๋ณธ๊ฐ’์€ [page:Animation InterpolateLinear]์ž…๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+
+		<h3>[property:String name]</h3>
+		<p>
+			ํŠธ๋ž™์˜ ์ด๋ฆ„์€ [page:Geometry.morphTargets morph targets] ํ˜น์€ [page:SkinnedMesh bones] ๋ฐ 
+			๋‹ค๋ฅธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์˜ค๋ธŒ์ ํŠธ์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’๋“ค์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. See
+			ํ”„๋กœํผํ‹ฐ๋กœ ํŒŒ์‹ฑ๋  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด ํผ์— ๋Œ€ํ•ด์„œ๋Š” [page:PropertyBinding.parseTrackName] ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<p>
+			ํŠธ๋ž™์˜ ์ด๋ฆ„์€ ๋…ธ๋“œ์˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋…ธ๋“œ์˜ uuid(๋ฏน์„œ์— ์ „๋‹ฌ๋œ ์žฅ๋ฉด ๊ทธ๋ž˜ํ”„ ๋…ธ๋“œ์˜ ์„œ๋ธŒํŠธ๋ฆฌ ์•ˆ์— ์žˆ์–ด์•ผ ํ•˜์ง€๋งŒ)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋…ธ๋“œ๋ฅผ ํŠน์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
+			ํ˜น์€ ๋งŒ์•ฝ ํŠธ๋ž™ ์ด๋ฆ„์ด .์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด, ํŠธ๋ž™์€  ๋ฏน์„œ์— ์ „๋‹ฌ๋œ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<p>
+			๋ณดํ†ต ๋…ธ๋“œ ๋‹ค์Œ์—๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ง์ ‘ ํŠน์ •๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ float ํŠธ๋ž™์„ ํ†ตํ•ด ํšŒ์ „์˜ X ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐ์ ˆํ•˜๋ ค๋ฉด 
+			.rotation[x]๊ฐ™์€ ์„œ๋ธŒํ”„๋กœํผํ‹ฐ๋ฅผ ํŠน์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<p>
+			์˜ค๋ธŒ์ ํŠธ ์ด๋ฆ„์œผ๋กœ ๊ณจ์ž๋‚˜ ๋ฉ€ํ‹ฐ๋จธํ‹ฐ๋ฆฌ์–ผ์„ ํŠน์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ:
+			.bones[R_hand].scale; 
+			์ถ”๊ฐ€์ ์œผ๋กœ, ๋จธํ‹ฐ๋ฆฌ์–ผ ๋ฐฐ์—ด์˜ ๋„ค ๋ฒˆ์งธ ๋จธํ‹ฐ๋ฆฌ์–ผ์˜ ํ™•์ƒ๊ด‘ ์ค‘ ๋ ˆ๋“œ ์ฑ„๋„์€ .materials[3].diffuse[r]๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<p>
+			PropertyBinding์€ ๋ชจํ”„ ํƒ€๊ฒŸ ์ด๋ฆ„๋„ ํ•ด์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ: .morphTargetInfluences[run].
+		</p>
+
+		<p>
+			์ฐธ๊ณ : ํŠธ๋ž™์˜ ์ด๋ฆ„์€ ๋ฐ˜๋“œ์‹œ ๊ณ ์œ ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์ค‘ ํŠธ๋ž™์€ ๊ฐ™์€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+			๊ฒฐ๊ณผ๋Š” ๋‹ค์ค‘ ํŠธ๋ž™์˜ ๊ฐ๊ฐ์˜ ๋™์ž‘๋“ค์˜ ๊ฐ€์ค‘์น˜์— ๋”ฐ๋ฅธ ํ˜ผํ•ฉ ๊ฐ€์ค‘์น˜์— ๊ธฐ๋ฐ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float32Array times]</h3>
+		<p>
+			์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋œ ์‹œ๊ฐ„ ๋ฐฐ์—ด์„ ๋ณ€ํ™˜ํ•œ [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array]์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float32Array values]</h3>
+		<p>
+			์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋œ ๊ฐ’ ๋ฐฐ์—ด์„ ๋ณ€ํ™˜ํ•œ [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array]์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Constant DefaultInterpolation]</h3>
+		<p>
+			๊ธฐ๋ณธ ๋ณด๊ฐ„๋ฒ• ํƒ€์ž…: [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],
+			๋‚ด๋ถ€์ ์œผ๋กœ ์‹œ๊ฐ„์— ์‚ฌ์šฉ๋˜๋Š” ๋ฒ„ํผ ํƒ€์ž….
+		</p>
+
+		<h3>[property:Constant ValueBufferType ]</h3>
+		<p>
+			[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array Float32Array],
+			๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐ’์— ์‚ฌ์šฉ๋˜๋Š” ๋ฒ„ํผ ํƒ€์ž….
+		</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<h3>[method:KeyframeTrack clone]()</h3>
+		<p>
+			ํŠธ๋ž™์˜ ๋ณต์‚ฌ๋ณธ์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null createInterpolant]()</h3>
+		<p>
+			์ƒ์„ฑ์ž์—์„œ ๋„˜์–ด์˜จ ๋ณด๊ฐ„๋ฒ• ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์— ๊ธฐ๋ฐ˜ํ•œ [page:LinearInterpolant LinearInterpolant], [page:CubicInterpolant CubicInterpolant]
+			ํ˜น์€ [page:DiscreteInterpolant DiscreteInterpolant]๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null getInterpolation]()</h3>
+		<p>
+			๋ณด๊ฐ„๋ฒ• ํƒ€์ž…์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Number getValueSize]()</h3>
+		<p>
+			๊ฐ ๊ฐ’์˜ ๊ธธ์ด๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค ([page:.times times] ๋ฐฐ์—ด๋กœ ๋‚˜๋ˆˆ [page:.values values] ๋ฐฐ์—ด์˜ ๊ธธ์ด).
+		</p>
+
+		<h3>[method:DiscreteInterpolant InterpolantFactoryMethodDiscrete]( [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array result] )</h3>
+		<p>
+			[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>
+			[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>
+			[page:KeyframeTrack.times times] ์™€ [page:KeyframeTrack.times values]๋ฅผ ํ†ตํ•ด
+			์ƒˆ [page:CubicInterpolant CubicInterpolant]๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
+			Float32Array๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฉด ๋„˜๊ฒจ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+			๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ ๋‹นํ•œ ํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:this optimize]()</h3>
+		<p>
+			๋ชจํ”„ ํƒ€๊ฒŸ ์‹œํ€€์Šค์—์„œ๋Š” ํ”ํ•œ ๋™์ผ ์‹œํ€€์Šค ํ‚ค๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:this scale]()</h3>
+		<p>
+			์ธ์ž ๊ฐ’์œผ๋กœ ๋ชจ๋“  ํ‚คํ”„๋ ˆ์ž„ ๋ฐฐ์†์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.<br /><br />
+
+			์ฐธ๊ณ : ์•„์ฃผ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ธ๋ฐ, ์˜ˆ๋ฅผ ๋“ค๋ฉด, ์ดˆ๋‹น ํ”„๋ ˆ์ž„์˜ ํŠน์ • ๋น„์œจ ๋ณ€ํ™˜์— ์žˆ์–ด์„œ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค
+			(๋‚ด๋ถ€์ ์œผ๋กœ [page:AnimationClip.CreateFromMorphTargetSequence animationClip.CreateFromMorphTargetSequence]๋ฅผ ํ†ตํ•ด).
+		</p>
+
+		<h3>[method:this setInterpolation]( [param:Constant interpolationType] )</h3>
+		<p>
+			๋ณด๊ฐ„๋ฒ• ํƒ€์ž…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํƒ€์ž…์€ [page:Animation Animation Constants] ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[method:this shift]( [param:Number timeOffsetInSeconds] )</h3>
+		<p>
+			๋ชจ๋“  ํ‚คํ”„๋ ˆ์ž„์„ ์•ž์œผ๋กœ ํ˜น์€ ๋’ค๋กœ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h3>[method:this trim]( [param:Number startTimeInSeconds], [param:Number endTimeInSeconds] )</h3>
+		<p>
+			*startTime* ์•ž๊ณผ *endTime* ๋’ค์˜ ํ‚คํ”„๋ ˆ์ž„์„ ์ œ๊ฑฐํ•˜๋ฉฐ [*startTime*, *endTime*] ๋ฒ”์œ„ ์•ˆ์˜ ์ˆ˜์น˜๋Š” ๋ณ€๊ฒฝ์‹œํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Boolean validate]()</h3>
+		<p>
+			ํŠธ๋ž™์˜ ์ตœ์†Œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์œ ํšจํ•œ ํŠธ๋ž™์ด๋ฉด true๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<p>
+			์ด ๋ฉ”์„œ๋“œ๋Š” ํŠธ๋ž™์ด ๋น„์—ˆ๊ฑฐ๋‚˜, [page:.valueSize value size] ๊ฐ’์ด ๋ถ€์ ์ ˆํ•˜๊ฑฐ๋‚˜, 
+			[page:.times times] ํ˜น์€ [page:.values values] ๋ฐฐ์—ด์˜ ๊ฐ’์ด ๋ถ€์ ์ ˆํ•˜๊ฑฐ๋‚˜, *times* ๋ฐฐ์—ด์˜ ์ˆœ์„œ๊ฐ€ ์–ด๊ธ‹๋‚˜๋ฉด ์—๋Ÿฌ ๋กœ๊ทธ๋ฅผ ์ฝ˜์†”์— ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์ •์  ๋ฉ”์„œ๋“œ</h2>
+
+		<h3>[method:JSON toJSON]( [param:KeyframeTrack track] )</h3>
+		<p>
+		ํŠธ๋ž™์„ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์†Œ์Šค์ฝ”๋“œ</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 132 - 0
docs/api/ko/animation/PropertyBinding.html

@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<p class="desc">
+			๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์žฅ๋ฉด ๊ทธ๋ž˜ํ”„์˜ ์‹ค์ œ ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( [param:Object3D rootNode], path, parsedPath )</h3>
+		<p>
+			-- [page:Object3D rootNode]:
+			-- path
+			-- parsedPath (์„ ํƒ)
+
+		</p>
+
+		<h2>Properties</h2>
+
+		<h3>[property:Number path]</h3>
+		<p>
+
+		</p>
+
+		<h3>[property:Number parsedPath]</h3>
+		<p>
+
+		</p>
+
+		<h3>[property:Number node]</h3>
+		<p>
+
+		</p>
+
+		<h3>[property:Number rootNode]</h3>
+		<p>
+
+		</p>
+
+		<h3>[property:Object BindingType]</h3>
+		<p>
+
+		</p>
+
+		<h3>[property:Object Versioning]</h3>
+		<p>
+
+		</p>
+
+		<h3>[property:Array GetterByBindingType]</h3>
+		<p>
+
+		</p>
+
+		<h3>[property:Array SetterByBindingTypeAndVersioning]</h3>
+		<p>
+
+		</p>
+
+
+
+		<h2>Methods</h2>
+
+		<h3>[method:null getValue]( [param:Array targetArray], [param:Number offset] )</h3>
+		<p>
+		</p>
+
+		<h3>[method:null setValue]( [param:Array sourceArray], [param:Number offset] )</h3>
+		<p>
+		</p>
+
+		<h3>[method:null bind]( )</h3>
+		<p>
+			์žฅ๋ฉด ๊ทธ๋ž˜ํ”„์— ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•œ ๊ฒŒํ„ฐ์™€ ์„ธํ„ฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ
+			[page:PropertyBinding.getValue getValue] ์™€ [page:PropertyBinding.setValue setValue]๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null unbind]( )</h3>
+		<p>
+			์žฅ๋ฉด ๊ทธ๋ž˜ํ”„์— ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•œ ๊ฒŒํ„ฐ์™€ ์„ธํ„ฐ์˜ ์—ฐ๊ฒฐ์„ ๋Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Constructor Composite]( targetGroup, path, optionalParsedPath )</h3>
+		<p>
+			์ƒˆ Composite PropertyBinding์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Constructor create]( root, path, parsedPath )</h3>
+		<p>
+			์ƒˆ Composite PropertyBinding ํ˜น์€ (๋งŒ์•ฝ ๋ฃจํŠธ๊ฐ€ [page:AnimationObjectGroup]์ด๋ฉด) PropertyBinding์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Constructor parseTrackName]( trackName )</h3>
+		<p>
+			๋‹ค์Œ ํ˜•์‹์— ๋งž๋Š” ๋ฌธ์ž์—ด์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:<br />
+			-- nodeName.property<br />
+			-- nodeName.property[accessor]<br />
+			-- nodeName.material.property[accessor]<br />
+			-- uuid.property[accessor]<br />
+			-- uuid.objectName[objectIndex].propertyName[propertyIndex]<br />
+			-- parentName/nodeName.property<br />
+			-- parentName/parentName/nodeName.property[index]<br />
+			-- .bone[Armature.DEF_cog].position<br />
+			-- scene:helium_balloon_model:helium_balloon_model.position
+		</p>
+
+		<h3>[method:Constructor findNode]( root, nodeName )</h3>
+		<p>
+			๋…ธ๋“œ ํŠธ๋ฆฌ ํ˜น์€ [page:Skeleton Skeleton]์—์„œ ๋…ธ๋“œ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+
+
+
+		<h2>์†Œ์Šค ์ฝ”๋“œ</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

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

@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<p class="desc">
+		๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ€์ค‘์น˜ ์ถ•์ ์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฒ„ํผ ์žฅ๋ฉด ๊ทธ๋ž˜ํ”„ ํ”„๋กœํผํ‹ฐ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( [param:PropertyBinding binding], [param:String typeName], [param:Number valueSize] )</h3>
+		<p>
+			-- binding <br />
+			-- typeName <br />
+			-- valueSize <br />
+		</p>
+
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+
+		<h3>[property:PropertyBinding binding]</h3>
+		<p>
+
+		</p>
+
+		<h3>[property:TypedArray buffer]</h3>
+		<p>
+			[page:PropertyMixer valueSize] * 4 ํฌ๊ธฐ์˜ ๋ฒ„ํผ์ž…๋‹ˆ๋‹ค. <br /><br />
+			๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ ˆ์ด์•„์›ƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค: [ incoming | accu0 | accu1 | orig ]<br /><br />
+			๋ณด๊ฐ„๋ฒ•์—์„œ .result์ฒ˜๋ฆ„ .buffer๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๋Š” 'incoming'์œผ๋กœ ๊ฐ‘๋‹ˆ๋‹ค.
+			'accu0' ์™€ 'accu1' ๋Š” ๋ˆ„์  ๊ฒฐ๊ณผ์˜ ํ”„๋ ˆ์ž„ ๊ต์ฐจ ๋ฐ ๋ณ€ํ™” ๋น„๊ต๊ฐ์ง€์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
+			'orig'๋Š” ํ”„๋กœํผํ‹ฐ์˜ ์›๋ž˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number cumulativeWeight]</h3>
+		<p>
+			๊ธฐ๋ณธ๊ฐ’์€ *0*์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number valueSize]</h3>
+		<p>
+
+		</p>
+
+		<h3>[property:Number referenceCount]</h3>
+		<p>
+			๊ธฐ๋ณธ๊ฐ’์€ *0*์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number useCount]</h3>
+		<p>
+			๊ธฐ๋ณธ๊ฐ’์€ *0*์ž…๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<h3>[method:null accumulate]( [param:Number accuIndex], [param:Number weight] )</h3>
+		<p>
+			[page:PropertyMixer.buffer buffer][accuIndex] 'incoming' ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ๋ฅผ 'accu[i]'์— ์ถ•์ ํ•ฉ๋‹ˆ๋‹ค.<br />
+
+			๊ฐ€์ค‘์น˜๊ฐ€ *0*์ด๋ฉด ์•„๋ฌด ๋™์ž‘์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null apply]( [param:Number accuIndex] )</h3>
+		<p>
+			๋ˆ„์ ์น˜๊ฐ€ ๋‹ฌ๋ผ์ง€๋ฉด [page:PropertyMixer.buffer buffer] 'accu[i]'์˜ ์ƒํƒœ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null saveOriginalState]( )</h3>
+		<p>
+			๊ธฐ๋ณธ ํ”„๋กœํผํ‹ฐ์˜ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์–‘ ์ชฝ์˜ ๋ˆ„์ ์น˜์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null restoreOriginalState](  )</h3>
+		<p>
+			'saveOriginalState'๋กœ ๋ฐ›์€ ์ด์ „ ์ƒํƒœ๋ฅผ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์†Œ์Šค ์ฝ”๋“œ</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 79 - 0
docs/api/ko/animation/tracks/BooleanKeyframeTrack.html

@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		[page:KeyframeTrack] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			๋ถˆ๋ฆฐ ํ‚คํ”„๋ ˆ์ž„ ๊ฐ’์˜ ํŠธ๋ž™.
+		</p>
+
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
+		<p>
+			[page:String name] - (required) KeyframeTrack์˜ ์‹๋ณ„์ž.<br />
+			[page:Array times] - (required) ํ‚คํ”„๋ ˆ์ž„ ์‹œ๊ฐ„ ๋ฐฐ์—ด.<br />
+			[page:Array values] - ํŠน์ • ์‹œ์ ์˜ ํ‚คํ”„๋ ˆ์ž„ ๊ฐ’.<br />
+		</p>
+
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+
+		<p class="desc">
+			์ƒ์† ํ”„๋กœํผํ‹ฐ๋Š” [page:KeyframeTrack]์„ ํ™•์ธํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[property:Constant DefaultInterpolation]</h3>
+		<p>
+			๊ธฐ๋ณธ ๋ณด๊ฐ„๋ฒ• ํƒ€์ž…, [page:Animation InterpolateDiscrete].
+		</p>
+
+		<h3>[property:Array ValueBufferType]</h3>
+		<p>
+			์ผ๋ฐ˜ ๋ฐฐ์—ด([page:KeyframeTrack]์˜ *ValueBufferType*๊ณผ ๋‹ฌ๋ฆฌ ์—ฌ๊ธฐ์„œ๋Š” Float32Array๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค).
+		</p>
+
+		<h3>[property:String ValueTypeName]</h3>
+		<p>
+			๋ฌธ์ž์—ด 'bool'.
+		</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<p class="desc">
+			์ƒ์† ๋ฉ”์„œ๋“œ๋Š” [page:KeyframeTrack]๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[method:null InterpolantFactoryMethodLinear ]()</h3>
+		<p>
+			์ด ๋ฉ”์„œ๋“œ์˜ ๊ฐ’์€ 'undefined'์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ด์‚ฐ ํ”„๋กœํผํ‹ฐ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null InterpolantFactoryMethodSmooth ]()</h3>
+		<p>
+			์ด ๋ฉ”์„œ๋“œ์˜ ๊ฐ’์€ 'undefined'์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ด์‚ฐ ํ”„๋กœํผํ‹ฐ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์†Œ์Šค ์ฝ”๋“œ</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 62 - 0
docs/api/ko/animation/tracks/ColorKeyframeTrack.html

@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		[page:KeyframeTrack] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			์ƒ‰ ๋ณ€ํ™”๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ํ‚คํ”„๋ ˆ์ž„ ๊ฐ’์˜ ํŠธ๋ž™์ž…๋‹ˆ๋‹ค.<br /><br />
+			์ด ํ•˜์œ„ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ๊ตฌํ˜„์€ ์•„์ง ๋ณ„๋‹ค๋ฅธ ํŠน๋ณ„ํ•œ ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ์ƒ‰ ๊ณต๊ฐ„์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๊ฐ€ ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
+		<p>
+			[page:String name] - (ํ•„์ˆ˜) KeyframeTrack์˜ ์‹๋ณ„์ž.<br />
+			[page:Array times] - (ํ•„์ˆ˜) ํ‚คํ”„๋ ˆ์ž„ ์‹œ๊ฐ„ ๋ฐฐ์—ด.<br />
+			[page:Array values] - ํŠน์ • ์‹œ์ ์˜ ํ‚คํ”„๋ ˆ์ž„ ๊ฐ’.<br />
+			[page:Constant interpolation] - ๊ธฐ๋ณธ ๋ณด๊ฐ„๋ฒ• ํƒ€์ž…. ๊ฐ€๋Šฅํ•œ ๊ฐ’๋“ค์— ๋Œ€ํ•ด์„œ๋Š”
+			[page:Animation Animation Constants] ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๊ธฐ๋ณธ๊ฐ’์€
+			[page:Animation InterpolateLinear] ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+
+		<p class="desc">
+			์ƒ์† ํ”„๋กœํผํ‹ฐ๋Š” [page:KeyframeTrack]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[property:String ValueTypeName]</h3>
+		<p>
+			๋ฌธ์ž์—ด 'color'.
+		</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<p class="desc">
+			์ƒ์† ๋ฉ”์„œ๋“œ๋Š” [page:KeyframeTrack]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<h2>์†Œ์Šค์ฝ”๋“œ</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 63 - 0
docs/api/ko/animation/tracks/NumberKeyframeTrack.html

@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		[page:KeyframeTrack] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			์ˆซ์ž ํ‚คํ”„๋ ˆ์ž„ ๊ฐ’์˜ ํŠธ๋ž™.
+		</p>
+
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
+		<p>
+			[page:String name] - (ํ•„์ˆ˜) KeyframeTrack์˜ ์‹๋ณ„์ž.<br />
+			[page:Array times] - (ํ•„์ˆ˜) ํ‚คํ”„๋ ˆ์ž„ ์‹œ๊ฐ„ ๋ฐฐ์—ด.<br />
+			[page:Array values] - ํŠน์ • ์‹œ์ ์˜ ํ‚คํ”„๋ ˆ์ž„ ๊ฐ’.<br />
+			[page:Constant interpolation] - ๊ธฐ๋ณธ ๋ณด๊ฐ„๋ฒ• ํƒ€์ž…. ๊ฐ€๋Šฅํ•œ ๊ฐ’๋“ค์— ๋Œ€ํ•ด์„œ๋Š”
+			[page:Animation Animation Constants] ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๊ธฐ๋ณธ๊ฐ’์€
+			[page:Animation InterpolateLinear] ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+
+		<p class="desc">
+			์ƒ์† ํ”„๋กœํผํ‹ฐ๋Š” [page:KeyframeTrack]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+
+		<h3>[property:String ValueTypeName]</h3>
+		<p>
+			๋ฌธ์ž์—ด 'number'.
+		</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<p class="desc">
+			์ƒ์† ๋ฉ”์„œ๋“œ๋Š” [page:KeyframeTrack]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+
+		<h2>์†Œ์Šค์ฝ”๋“œ</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 75 - 0
docs/api/ko/animation/tracks/QuaternionKeyframeTrack.html

@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		[page:KeyframeTrack] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			์ฟผํ„ฐ๋‹ˆ์–ธ ํ‚คํ”„๋ ˆ์ž„ ๊ฐ’ ํŠธ๋ž™
+		</p>
+
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
+		<p>
+			[page:String name] - (ํ•„์ˆ˜) KeyframeTrack์˜ ์‹๋ณ„์ž.<br />
+			[page:Array times] - (ํ•„์ˆ˜) ํ‚คํ”„๋ ˆ์ž„ ์‹œ๊ฐ„ ๋ฐฐ์—ด.<br />
+			[page:Array values] - ํŠน์ • ์‹œ์ ์˜ ํ‚คํ”„๋ ˆ์ž„ ๊ฐ’.<br />
+			[page:Constant interpolation] - ๊ธฐ๋ณธ ๋ณด๊ฐ„๋ฒ• ํƒ€์ž…. ๊ฐ€๋Šฅํ•œ ๊ฐ’๋“ค์— ๋Œ€ํ•ด์„œ๋Š”
+			[page:Animation Animation Constants] ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๊ธฐ๋ณธ๊ฐ’์€
+			[page:Animation InterpolateLinear] ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+
+		<p class="desc">
+			์ƒ์† ํ”„๋กœํผํ‹ฐ๋Š” [page:KeyframeTrack]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[property:Constant DefaultInterpolation]</h3>
+		<p>
+			๊ธฐ๋ณธ ๋ณด๊ฐ„๋ฒ• ํƒ€์ž…, [page:Animation InterpolateDiscrete].
+		</p>
+
+		<h3>[property:String ValueTypeName]</h3>
+		<p>
+			๋ฌธ์ž์—ด 'quaternion'.
+		</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<p class="desc">
+			์ƒ์† ๋ฉ”์„œ๋“œ๋Š” [page:KeyframeTrack]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[method:null InterpolantFactoryMethodLinear]()</h3>
+		<p>
+			ํ‚คํ”„๋ ˆ์ž„์˜ [page:KeyframeTrack.values values], [page:KeyframeTrack.times times] ๋ฐ 
+			[page:KeyframeTrack.valueSize valueSize]๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ
+			์ƒˆ [page:QuaternionLinearInterpolant QuaternionLinearInterpolant]๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+			
+		</p>
+
+
+		<h2>์†Œ์Šค ์ฝ”๋“œ</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 77 - 0
docs/api/ko/animation/tracks/StringKeyframeTrack.html

@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		[page:KeyframeTrack] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			๋ฌธ์ž์—ด ํ‚คํ”„๋ ˆ์ž„ ๊ฐ’ ํŠธ๋ž™.
+		</p>
+
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
+		<p>
+			[page:String name] - (ํ•„์ˆ˜) KeyframeTrack์˜ ์‹๋ณ„์ž.<br />
+			[page:Array times] - (ํ•„์ˆ˜) ํ‚คํ”„๋ ˆ์ž„ ์‹œ๊ฐ„ ๋ฐฐ์—ด.<br />
+			[page:Array values] - ํŠน์ • ์‹œ์ ์˜ ํ‚คํ”„๋ ˆ์ž„ ๊ฐ’.<br />
+			[page:Constant interpolation] - ๊ธฐ๋ณธ ๋ณด๊ฐ„๋ฒ• ํƒ€์ž…. ๊ฐ€๋Šฅํ•œ ๊ฐ’๋“ค์— ๋Œ€ํ•ด์„œ๋Š”
+			[page:Animation Animation Constants] ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๊ธฐ๋ณธ๊ฐ’์€
+			[page:Animation InterpolateLinear] ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+
+		<p class="desc">
+			์ƒ์† ํ”„๋กœํผํ‹ฐ๋Š” [page:KeyframeTrack]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[property:Constant DefaultInterpolation]</h3>
+		<p>
+			๊ธฐ๋ณธ ๋ณด๊ฐ„๋ฒ• ํƒ€์ž…, [page:Animation InterpolateDiscrete].
+		</p>
+
+		<h3>[property:String ValueTypeName]</h3>
+		<p>
+			๋ฌธ์ž์—ด 'quaternion'.
+		</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<p class="desc">
+			์ƒ์† ๋ฉ”์„œ๋“œ๋Š” [page:KeyframeTrack]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[method:null InterpolantFactoryMethodLinear]()</h3>
+		<p>
+			์ด ๋ฉ”์„œ๋“œ์˜ ๊ฐ’์€ 'undefined'์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ด์‚ฐ ํ”„๋กœํผํ‹ฐ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null InterpolantFactoryMethodSmooth]()</h3>
+		<p>
+			์ด ๋ฉ”์„œ๋“œ์˜ ๊ฐ’์€ 'undefined'์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ด์‚ฐ ํ”„๋กœํผํ‹ฐ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์†Œ์Šค ์ฝ”๋“œ</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 62 - 0
docs/api/ko/animation/tracks/VectorKeyframeTrack.html

@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		[page:KeyframeTrack] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			๋ฒกํ„ฐ ํ‚คํ”„๋ ˆ์ž„ ๊ฐ’ ํŠธ๋ž™.
+		</p>
+
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
+		<p>
+			[page:String name] - (ํ•„์ˆ˜) KeyframeTrack์˜ ์‹๋ณ„์ž.<br />
+			[page:Array times] - (ํ•„์ˆ˜) ํ‚คํ”„๋ ˆ์ž„ ์‹œ๊ฐ„ ๋ฐฐ์—ด.<br />
+			[page:Array values] - ํŠน์ • ์‹œ์ ์˜ ํ‚คํ”„๋ ˆ์ž„ ๊ฐ’.<br />
+			[page:Constant interpolation] - ๊ธฐ๋ณธ ๋ณด๊ฐ„๋ฒ• ํƒ€์ž…. ๊ฐ€๋Šฅํ•œ ๊ฐ’๋“ค์— ๋Œ€ํ•ด์„œ๋Š”
+			[page:Animation Animation Constants] ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๊ธฐ๋ณธ๊ฐ’์€
+			[page:Animation InterpolateLinear] ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+
+		<p class="desc">
+			์ƒ์† ํ”„๋กœํผํ‹ฐ๋Š” [page:KeyframeTrack]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[property:String ValueTypeName]</h3>
+		<p>
+			๋ฌธ์ž์—ด 'vector'.
+		</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<p class="desc">
+			์ƒ์† ๋ฉ”์„œ๋“œ๋Š” [page:KeyframeTrack]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+
+		<h2>์†Œ์Šค์ฝ”๋“œ</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 233 - 0
docs/api/ko/audio/Audio.html

@@ -0,0 +1,233 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Object3D] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			์œ„์น˜๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ (์ „์—ญ) ์˜ค๋””์˜ค ์˜ค๋ธŒ์ ํŠธ.<br /><br />
+
+			[link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API]๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์ฝ”๋“œ ์˜ˆ์ œ</h2>
+
+		<code>
+		// create an AudioListener and add it to the camera
+		const listener = new THREE.AudioListener();
+		camera.add( listener );
+
+		// create a global audio source
+		const sound = new THREE.Audio( listener );
+
+		// load a sound and set it as the Audio object's buffer
+		const audioLoader = new THREE.AudioLoader();
+		audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
+			sound.setBuffer( buffer );
+			sound.setLoop( true );
+			sound.setVolume( 0.5 );
+			sound.play();
+		});
+		</code>
+
+		<h2>์˜ˆ์ œ</h2>
+
+		<p>
+			[example:webaudio_sandbox webaudio / sandbox ]<br />
+			[example:webaudio_visualizer webaudio / visualizer ]
+		</p>
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( [param:AudioListener listener] )</h3>
+		<p>
+		๋ฆฌ์Šค๋„ˆ โ€” (ํ•„์ˆ˜) [page:AudioListener AudioListener] ์ธ์Šคํ„ด์Šค.
+		</p>
+
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+		<h3>[property:Boolean autoplay]</h3>
+		<p>์ž๋™์œผ๋กœ ์žฌ์ƒํ• ์ง€์— ๋Œ€ํ•œ ์„ค์ •. ๊ธฐ๋ณธ๊ฐ’์€ *false*์ž…๋‹ˆ๋‹ค.</p>
+
+		<h3>[property:AudioContext context]</h3>
+		<p>์ƒ์„ฑ์ž๋กœ ๋งŒ๋“ค์–ด์ง„ [page:AudioListener listener]์˜ [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext].</p>
+
+		<h3>[property:Number detune]</h3>
+		<p>ํ”ผ์น˜๋ฅผ ์กฐ์ •ํ•˜๋ฉฐ 100 ๋‹จ์œ„๋กœ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค. +/- 100 ์€ ์„ธ๋ฏธํ†ค ์กฐ์ ˆ. +/- 1200 ์€ ์˜ฅํƒ€๋ธŒ ์กฐ์ ˆ. ๊ธฐ๋ณธ๊ฐ’์€ *0*์ž…๋‹ˆ๋‹ค.</p>
+
+		<h3>[property:Array filters]</h3>
+		<p>[link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNodes] ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. 
+			๋‹ค์–‘ํ•œ ์ €์ฐจ ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•˜์—ฌ ๋ณด๋‹ค ๋ณต์žกํ•œ ์‚ฌ์šด๋“œ ํšจ๊ณผ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„ํ„ฐ๋Š” [page.Audio.setFilter] ๋˜๋Š” [page:Audio.setFilters]๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</p>
+
+		<h3>[property:GainNode gain]</h3>
+		<p> [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createGain AudioContext.createGain]()๋ฅผ ์‚ฌ์šฉํ•ด ๋งŒ๋“ค์–ด์ง„ [link:https://developer.mozilla.org/en-US/docs/Web/API/GainNode GainNode].</p>
+
+		<h3>[property:Boolean hasPlaybackControl]</h3>
+		<p>[page:Audio.play play](), [page:Audio.pause pause]()๋“ฑ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์žฌ์ƒ ์ปจํŠธ๋กค์ด ๊ฐ€๋Šฅํ•œ์ง€์— ๋Œ€ํ•œ ๊ฐ’. ๊ธฐ๋ณธ๊ฐ’์€ *true*์ž…๋‹ˆ๋‹ค.</p>
+
+		<h3>[property:Boolean isPlaying]</h3>
+		<p>์˜ค์ง€์˜ค๊ฐ€ ํ˜„์žฌ ์žฌ์ƒ์ค‘์ธ์ง€์— ๋Œ€ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค.</p>
+
+		<h3>[property:AudioListener listener]</h3>
+		<p>์ด ์˜ค๋””์˜ค์˜ ๋ฆฌ์Šคํ„ฐ ์˜ค๋ธŒ์ ํŠธ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค.</p>
+
+		<h3>[property:Number playbackRate]</h3>
+		<p>์žฌ์ƒ ์†๋„. ๊ธฐ๋ณธ๊ฐ’์€ *1*์ž…๋‹ˆ๋‹ค.</p>
+
+		<h3>[property:Number offset]</h3>
+		<p>์žฌ์ƒ์ด ์‹œ์ž‘๋ผ์•ผ ํ•˜๋Š” ์˜ค๋””์˜ค ๋ฒ„ํผ ์•ˆ์˜ ์‹œ๊ฐ„ ์˜คํ”„์…‹์ž…๋‹ˆ๋‹ค. [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start AudioBufferSourceNode.start]()์˜ *offset* ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ๋™์ผ. ๊ธฐ๋ณธ๊ฐ’์€ *0*์ž…๋‹ˆ๋‹ค.</p>
+
+		<h3>[property:Number duration]</h3>
+		<p>์˜ค๋””์˜ค ๊ธธ์ด๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•ฉ๋‹ˆ๋‹ค. [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start AudioBufferSourceNode.start]()์˜ *duration* ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ๋™์ผ. ์ „์ฒด ๋ฒ„ํผ ์žฌ์ƒ์„ ์œ„ํ•œ ๊ธฐ๋ณธ๊ฐ’์€ *undefined*์ž…๋‹ˆ๋‹ค.</p>
+
+		<h3>[property:String source]</h3>
+		<p>
+			[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createBufferSource AudioContext.createBufferSource]()๋กœ ์ƒ์„ฑ๋œ
+			[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode AudioBufferSourceNode]์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:String sourceType]</h3>
+		<p>์˜ค๋””์˜ค ์†Œ์Šค ํƒ€์ž…. ๊ธฐ๋ณธ๊ฐ’์€ ๋ฌธ์ž์—ด 'empty'.</p>
+
+		<h3>[property:String type]</h3>
+		<p>ํƒ€์ž… ํ‘œ์‹œ ๋ฌธ์ž์—ด์„ ํ‘œ์‹œ, 'Audio'๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+		<h3>[method:Audio connect]()</h3>
+		<p>
+		[page:Audio.source]์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ ๋ฐ ํ•„ํ„ฐ ์„ค์ •/์ œ๊ฑฐ ์‹œ์— ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio disconnect]()</h3>
+		<p>
+		[page:Audio.source] ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. ํ•„ํ„ฐ ์„ค์ •/์ œ๊ฑฐ ์‹œ์— ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:BiquadFilterNode getFilter]()</h3>
+		<p>
+		[page:Audio.filters filters] ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Array getFilters]()</h3>
+		<p>
+		[page:Audio.filters filters] ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Boolean getLoop]()</h3>
+		<p>
+		[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loop source.loop]๊ฐ’์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค(์žฌ์ƒ์ด ๋ฐ˜๋ณต๋˜๋Š”์ง€).
+		</p>
+
+		<h3>[method:GainNode getOutput]()</h3>
+		<p>
+		[page:Audio.gain gainNode]๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Float getPlaybackRate]()</h3>
+		<p>
+		[page:Audio.playbackRate playbackRate]์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Float getVolume]( value )</h3>
+		<p>
+		ํ˜„์žฌ ๋ณผ๋ฅจ์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio play]( delay )</h3>
+		<p>
+		[page:Audio.hasPlaybackControl hasPlaybackControl]๊ฐ€ true๋ฉด, ์žฌ์ƒ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio pause]()</h3>
+		<p>
+		[page:Audio.hasPlaybackControl hasPlaybackControl]๊ฐ€ true๋ฉด, ์žฌ์ƒ์„ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null onEnded]()</h3>
+		<p>
+		์žฌ์ƒ์ด ๋๋‚˜๋ฉด ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio setBuffer]( audioBuffer )</h3>
+		<p>
+		[page:Audio.source source]๋ฅผ audioBuffer์— ์„ค์น˜ํ•˜๊ณ , [page:Audio.sourceType sourceType]๋ฅผ 'buffer'์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.<br />
+		[page:Audio.autoplay autoplay]์˜ ๊ฒฝ์šฐ์—๋Š” ์žฌ์ƒ๋„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio setFilter]( filter )</h3>
+		<p>
+		์˜ค๋””์˜ค์— ์ƒˆ [link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNode]๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio setFilters]( [param:Array value] )</h3>
+		<p>
+		ํ•„ํ„ฐ ๋ฐฐ์—ด๋“ค์˜ ๊ฐ’<br />
+		์˜ค๋””์˜ค์— [link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNodes] ๋ฐฐ์—ด์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio setLoop]( [param:Boolean value] )</h3>
+		<p>
+		*value*๋ฅผ [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loop source.loop]๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(์žฌ์ƒ์ด ๋ฐ˜๋ณต๋˜๋Š”์ง€).
+		</p>
+
+		<h3>[method:Audio setLoopStart]( [param:Float value] )</h3>
+		<p>
+		*value*๋ฅผ [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loopStart source.loopStart]๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio setLoopEnd]( [param:Float value] )</h3>
+		<p>
+		*value*๋ฅผ [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loopEnd source.loopEnd]๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio setMediaElementSource]( mediaElement )</h3>
+		<p>
+		์ด ์˜ค๋””์˜ค ์†Œ์Šค์— [link:https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement HTMLMediaElement]ํƒ€์ž…์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.<br />
+		[page:Audio.hasPlaybackControl hasPlaybackControl]๋ฅผ false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio setMediaStreamSource]( mediaStream )</h3>
+		<p>
+		์ด ์˜ค๋””์˜ค ์†Œ์Šค์— [link:https://developer.mozilla.org/en-US/docs/Web/API/MediaStream MediaStream]ํƒ€์ž…์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.<br />
+		[page:Audio.hasPlaybackControl hasPlaybackControl]๋ฅผ false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio setNodeSource]( audioNode )</h3>
+		<p>
+		audioBuffer์— [page:Audio.source source]๋ฅผ ์„ค์น˜ํ•˜๊ณ  'audioNode'๋ฅผ [page:Audio.sourceType sourceType]๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.<br />
+		[page:Audio.hasPlaybackControl hasPlaybackControl]๋ฅผ false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio setPlaybackRate]( [param:Float value] )</h3>
+		<p>
+		[page:Audio.hasPlaybackControl hasPlaybackControl]์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉด *value*๋ฅผ [page:Audio.playbackRate playbackRate]๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio setVolume]( [param:Float value] )</h3>
+		<p>
+		๋ณผ๋ฅจ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Audio stop]()</h3>
+		<p>
+		[page:Audio.hasPlaybackControl hasPlaybackControl]๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉด ์žฌ์ƒ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์†Œ์Šค ์ฝ”๋“œ</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 101 - 0
docs/api/ko/audio/AudioAnalyser.html

@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<p class="desc">
+			์˜ค๋””์˜ค ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode AnalyserNode]๋ฅผ ์‚ฌ์šฉํ•˜๋Š”
+			AudioAnalyser ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.<br /><br />
+
+			[link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API]๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+		</p>
+
+		<h2>์ฝ”๋“œ ์˜ˆ์ œ</h2>
+
+		<code>
+		// create an AudioListener and add it to the camera
+		const listener = new THREE.AudioListener();
+		camera.add( listener );
+
+		// create an Audio source
+		const sound = new THREE.Audio( listener );
+
+		// load a sound and set it as the Audio object's buffer
+		const audioLoader = new THREE.AudioLoader();
+		audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
+			sound.setBuffer( buffer );
+			sound.setLoop(true);
+			sound.setVolume(0.5);
+			sound.play();
+		});
+
+		// create an AudioAnalyser, passing in the sound and desired fftSize
+		const analyser = new THREE.AudioAnalyser( sound, 32 );
+
+		// get the average frequency of the sound
+		const data = analyser.getAverageFrequency();
+		</code>
+
+		<h2>์˜ˆ์ œ</h2>
+
+		<p>
+			[example:webaudio_sandbox webaudio / sandbox ]<br />
+			[example:webaudio_visualizer webaudio / visualizer ]
+		</p>
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name]( audio, [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/fftSize fftSize] )</h3>
+		<p>
+		์ƒˆ [page:AudioAnalyser AudioAnalyser]๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+		<h3>[property:AnalyserNode analyser]</h3>
+		<p>์˜ค๋””์˜ค๋ฅผ ๋ถ„์„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode AnalyserNode]์ž…๋‹ˆ๋‹ค.</p>
+
+		<h3>[property:Integer fftSize]</h3>
+		<p>
+			์ฃผํŒŒ์ˆ˜ ์˜์—ญ์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” FFT(๊ณ ์† ํ‘ธ๋ฆฌ์— ๋ณ€ํ™˜)์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ตœ๋Œ€ 2048๊นŒ์ง€์˜ 0์ด ์•„๋‹Œ ๋‘ ๊ฐœ์˜ ํฌ๊ธฐ.
+			์ž์„ธํ•œ ๋‚ด์šฉ์€ [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/fftSize this page]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[property:Uint8Array data]</h3>
+		<p>
+		A Uint8Array with size determined by 
+		๋ถ„์„ ๋ฐ์ดํ„ฐ ์ €์žฅ์— ์‚ฌ์šฉ๋˜๋Š” [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/frequencyBinCount analyser.frequencyBinCount]๋กœ
+		๊ฒฐ์ •๋œ ํฌ๊ธฐ์˜ Uint8Array.
+		</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<h3>[method:Uint8Array getFrequencyData]()</h3>
+		<p>
+		์›น ์˜ค๋””์˜ค์˜ [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteFrequencyData getByteFrequencyData] ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+		ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[method:Number getAverageFrequency]()</h3>
+		<p>
+		[page:AudioAnalyser.getFrequencyData getFrequencyData]๋ฉ”์„œ๋“œ์—์„œ ๋ฆฌํ„ด๋œ ์ฃผํŒŒ์ˆ˜ ํ‰๊ท ๊ฐ’์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์†Œ์Šค ์ฝ”๋“œ</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 43 - 0
docs/api/ko/audio/AudioContext.html

@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+		[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext]๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋“ค์— ๋Œ€ํ•ด ๋‹ค๋ฃน๋‹ˆ๋‹ค.<br /><br />
+
+		[page:AudioListener AudioListener] ๋ฐ [page:AudioLoader AudioLoader] ํด๋ž˜์Šค์—์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.<br /><br />
+
+		[link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API]๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+		<h3>[method:AudioContext getContext]()</h3>
+		<p>
+		์„ ์–ธ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์™ธ๋ถ€ ์˜์—ญ์˜ *context* ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๊ณ 
+		์•„๋‹ˆ๋ผ๋ฉด ์ƒˆ๋กœ์šด [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext]๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AudioContext setContext]( [param:AudioContext value] )</h3>
+		<p>
+		  ์™ธ๋ถ€ ์˜์—ญ์˜ *context* ๋ณ€์ˆ˜์— *value*๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์†Œ์Šค ์ฝ”๋“œ</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 112 - 0
docs/api/ko/audio/AudioListener.html

@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Object3D] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			[name]๋Š” ์žฅ๋ฉด ์•ˆ์˜ ๋ชจ๋“  ์ง€์ • ๋ฐ ๋น„์ง€์ • ์˜ค๋””์˜ค ํšจ๊ณผ์˜ ๊ฐ€์ƒ [link:https://developer.mozilla.org/de/docs/Web/API/AudioListener listener]์ž…๋‹ˆ๋‹ค.<br />
+			three.js ์•ฑ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹จ์ผ [name] ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” [page:Audio Audio]์™€ [page:PositionalAudio PositionalAudio] ๊ฐ™์€ ์˜ค๋””์˜ค ์—”ํ‹ฐํ‹ฐ์˜ ํ•„์ˆ˜ ์ƒ์„ฑ์ž ํŒŒ๋ผ๋ฏธํ„ฐ์ž…๋‹ˆ๋‹ค.<br />
+			๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ, ๋ฆฌ์Šค๋„ˆ ์˜ค๋ธŒ์ ํŠธ๋Š” ์นด๋ฉ”๋ผ์˜ ์ž์‹์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์นด๋ฉ”๋ผ์˜ 3D ๋ณ€ํ™˜์€ ๊ณง ๋ฆฌ์Šค๋„ˆ์˜ 3D ๋ณ€ํ™˜์ด ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์ฝ”๋“œ ์˜ˆ์ œ</h2>
+
+		<code>
+		// create an AudioListener and add it to the camera
+		const listener = new THREE.AudioListener();
+		camera.add( listener );
+
+		// create a global audio source
+		const sound = new THREE.Audio( listener );
+
+		// load a sound and set it as the Audio object's buffer
+		const audioLoader = new THREE.AudioLoader();
+		audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
+			sound.setBuffer( buffer );
+			sound.setLoop(true);
+			sound.setVolume(0.5);
+			sound.play();
+		});
+		</code>
+
+		<h2>์˜ˆ์ œ</h2>
+
+		<p>
+			[example:webaudio_sandbox webaudio / sandbox ]<br />
+			[example:webaudio_timing webaudio / timing ]<br />
+			[example:webaudio_visualizer webaudio / visualizer ]
+		</p>
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+
+		<h3>[name](  )</h3>
+		<p>
+		์ƒˆ AudioListener๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+		<h3>[property:AudioContext context]</h3>
+		<p>์ƒ์„ฑ์ž๋กœ ๋งŒ๋“ค์–ด์ง„ [page:AudioListener listener]์˜ [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext]์ž…๋‹ˆ๋‹ค.</p>
+
+		<h3>[property:GainNode gain]</h3>
+		<p>[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createGain AudioContext.createGain]()์„ ์‚ฌ์šฉํ•ด ๋งŒ๋“ค์–ด์ง„
+			[link:https://developer.mozilla.org/en-US/docs/Web/API/GainNode GainNode]์ž…๋‹ˆ๋‹ค.</p>
+
+		<h3>[property:AudioNode filter]</h3>
+		<p>๊ธฐ๋ณธ๊ฐ’์€ *null*์ž…๋‹ˆ๋‹ค.</p>
+
+		<h3>[property:Number timeDelta]</h3>
+		<p>์˜ค๋””์˜ค ์—”ํ‹ฐํ‹ฐ์— ๋Œ€ํ•œ ์‹œ๊ฐ„ ๋ธํƒ€๊ฐ’์ž…๋‹ˆ๋‹ค. [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioParam/linearRampToValueAtTime AudioParam.linearRampToValueAtTimeDefault]()์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *0*์ž…๋‹ˆ๋‹ค.</p>
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+
+		<h3>[method:GainNode getInput]()</h3>
+		<p>
+		[page:AudioListener.gain gainNode]๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AudioListener removeFilter]()</h3>
+		<p>
+		[page:AudioListener.filter filter] ํ”„๋กœํผํ‹ฐ๋ฅผ *null*๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AudioNode getFilter]()</h3>
+		<p>
+		[page:AudioListener.filter filter] ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AudioListener setFilter]( [param:AudioNode value] )</h3>
+		<p>
+		[page:AudioListener.filter filter] ํ”„๋กœํผํ‹ฐ๋ฅผ *value*๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Float getMasterVolume]()</h3>
+		<p>
+		๋ณผ๋ฅจ์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:AudioListener setMasterVolume]( [param:Number value] )</h3>
+		<p>
+		๋ณผ๋ฅจ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h2>์†Œ์Šค ์ฝ”๋“œ</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 136 - 0
docs/api/ko/audio/PositionalAudio.html

@@ -0,0 +1,136 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Object3D] &rarr; [page:Audio] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			์ง€์ • ์˜ค๋””์˜ค ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.<br /><br />
+
+			[link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API]๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์ฝ”๋“œ ์˜ˆ์ œ</h2>
+
+		<code>
+		// create an AudioListener and add it to the camera
+		const listener = new THREE.AudioListener();
+		camera.add( listener );
+
+		// create the PositionalAudio object (passing in the listener)
+		const sound = new THREE.PositionalAudio( listener );
+
+		// load a sound and set it as the PositionalAudio object's buffer
+		const audioLoader = new THREE.AudioLoader();
+		audioLoader.load( 'sounds/song.ogg', function( buffer ) {
+			sound.setBuffer( buffer );
+			sound.setRefDistance( 20 );
+			sound.play();
+		});
+
+		// create an object for the sound to play from
+		const sphere = new THREE.SphereBufferGeometry( 20, 32, 16 );
+		const material = new THREE.MeshPhongMaterial( { color: 0xff2200 } );
+		const mesh = new THREE.Mesh( sphere, material );
+		scene.add( mesh );
+
+		// finally add the sound to the mesh
+		mesh.add( sound );
+		</code>
+
+		<h2>์˜ˆ์ œ</h2>
+
+		<p>
+			[example:webaudio_orientation webaudio / orientation ]<br />
+			[example:webaudio_sandbox webaudio / sandbox ]<br />
+			[example:webaudio_timing webaudio / timing ]
+		</p>
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+		<h3>[name]( [param:AudioListener listener] )</h3>
+		<p>
+		๋ฆฌ์Šค๋„ˆ โ€” (ํ•„์ˆ˜) [page:AudioListener AudioListener] ์ธ์Šคํ„ด์Šค.
+		</p>
+
+
+		<h2>ํ”„๋กœํผํ‹ฐ</h2>
+
+		<p>
+			์ƒ์†๋ฐ›์€ ํ”„๋กœํผํ‹ฐ๋Š” [page:Audio Audio] ํด๋ž˜์Šค๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[property:PannerNode panner]</h3>
+		<p>PositionalAudio์˜ [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode PannerNode].</p>
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+		<p>
+			์ƒ์†๋ฐ›์€ ๋ฉ”์„œ๋“œ๋Š” [page:Audio Audio] ํด๋ž˜์Šค๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[method:PannerNode getOutput]()</h3>
+		<p>
+		[page:PositionalAudio.panner panner]๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Float getRefDistance]()</h3>
+		<p>
+		[link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/refDistance panner.refDistance]์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:PositionalAudio setRefDistance]( [param:Float value] )</h3>
+		<p>
+		[link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/refDistance panner.refDistance]์˜ ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Float getRolloffFactor]()</h3>
+		<p>
+		[link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor panner.rolloffFactor]์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:PositionalAudio setRolloffFactor]( [param:Float value] )</h3>
+		<p>
+		[link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor panner.rolloffFactor]์˜ ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:String getDistanceModel]()</h3>
+		<p>
+		[link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel panner.distanceModel]์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:PositionalAudio setDistanceModel]( [param:String value] )</h3>
+		<p>
+		[link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel panner.distanceModel]์˜ ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Float getMaxDistance]()</h3>
+		<p>
+		[link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance panner.maxDistance]์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:PositionalAudio setMaxDistance]( [param:Float value] )</h3>
+		<p>
+		[link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance panner.maxDistance]์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:PositionalAudio setDirectionalCone]( [param:Float coneInnerAngle], [param:Float coneOuterAngle], [param:Float coneOuterGain] )</h3>
+		<p>
+		์ด ๋ฉ”์„œ๋“œ๋Š” ์ „๋ฐฉํ–ฅ ์‚ฌ์šด๋“œ๋ฅผ [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode directional sound]๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์†Œ์Šค ์ฝ”๋“œ</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

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

@@ -116,7 +116,7 @@
 			ๆ‹ท่ด TypedArray ็›ธๅ…ณๆณจๆ„ไบ‹้กน่ฏฆ่ง [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set TypedArray.set]ใ€‚
 		</p>
 
-		<h3>[method:null copyAt] ( [param:Integer index1], [param:BufferAttribute bufferAttribute], [param:Integer index2] ) </h3>
+		<h3>[method:this copyAt] ( [param:Integer index1], [param:BufferAttribute bufferAttribute], [param:Integer index2] ) </h3>
 		<p>ๅฐ†ไธ€ไธช็Ÿข้‡ไปŽ bufferAttribute[index2] ๆ‹ท่ดๅˆฐ [page:BufferAttribute.array array][index1] ไธญใ€‚</p>
 
 		<h3>[method:BufferAttribute copyColorsArray]( [param:Array colors] ) </h3>
@@ -143,7 +143,7 @@
 		<h3>[method:Number getW]( [param:Integer index] ) </h3>
 		<p>่Žทๅ–็ป™ๅฎš็ดขๅผ•็š„็Ÿข้‡็š„็ฌฌๅ››็ปดๅ…ƒ็ด  ๏ผˆๅณ W ๅ€ผ๏ผ‰ใ€‚</p>
 
-		<h3>[method:null onUpload]( [param:Function callback] ) </h3>
+		<h3>[method:this onUpload]( [param:Function callback] ) </h3>
 		<p>่ง onUploadCallback ๅฑžๆ€งใ€‚<br /><br />
 			ๅœจ [example:webgl_buffergeometry WebGL / Buffergeometry] ไธญ๏ผŒ่ฏฅๆ–นๅœจ็ผ“ๅญ˜ๆ•ฐๆฎไผ ้€’็ป™ GPU ๅŽ๏ผŒ็”จไบŽ้‡Šๆ”พๅ†…ๅญ˜ใ€‚
 		</p>

+ 2 - 2
docs/api/zh/helpers/AxesHelper.html

@@ -24,9 +24,9 @@
 		<h2>ไพ‹ๅญ</h2>
 
 		<p>
-			[example:webgl_geometries WebGL / geometries]<br/>
+			[example:webgl_buffergeometry_compression WebGL / buffergeometry / compression]<br/>
 			[example:webgl_geometry_convex WebGL / geometry / convex]<br/>
-			[example:webgl_geometry_spline_editor WebGL / geometry / spline / editor]
+			[example:webgl_loader_nrrd WebGL / loader / nrrd]
 		</p>
 
 		<h2>ๆž„้€ ๅ‡ฝๆ•ฐ</h2>

+ 1 - 1
docs/api/zh/materials/MeshBasicMaterial.html

@@ -70,7 +70,7 @@
 			[page:Materials THREE.AddOperation]ใ€‚ๅฆ‚ๆžœ้€‰ๆ‹ฉๅคšไธช๏ผŒๅˆ™ไฝฟ็”จ[page:.reflectivity]ๅœจไธค็ง้ขœ่‰ฒไน‹้—ด่ฟ›่กŒๆททๅˆใ€‚
 		</p>
 
-		<h3>[property:TextureCube envMap]</h3>
+		<h3>[property:Texture envMap]</h3>
 		<p>็Žฏๅขƒ่ดดๅ›พใ€‚้ป˜่ฎคๅ€ผไธบnullใ€‚</p>
 
 		<h3>[property:Texture lightMap]</h3>

+ 1 - 1
docs/api/zh/materials/MeshLambertMaterial.html

@@ -89,7 +89,7 @@
 		<h3>[property:Float emissiveIntensity]</h3>
 		<p> ๆ”พๅฐ„ๅ…‰ๅผบๅบฆใ€‚่ฐƒ่Š‚ๅ‘ๅ…‰้ขœ่‰ฒใ€‚้ป˜่ฎคไธบ1ใ€‚</p>
 
-		<h3>[property:TextureCube envMap]</h3>
+		<h3>[property:Texture envMap]</h3>
 		<p> ็Žฏๅขƒ่ดดๅ›พใ€‚้ป˜่ฎคๅ€ผไธบnullใ€‚</p>
 
 		<h3>[property:Texture lightMap]</h3>

+ 1 - 1
docs/api/zh/materials/MeshPhongMaterial.html

@@ -109,7 +109,7 @@
 		<h3>[property:Float emissiveIntensity]</h3>
 		<p>ๆ”พๅฐ„ๅ…‰ๅผบๅบฆใ€‚่ฐƒ่Š‚ๅ‘ๅ…‰้ขœ่‰ฒใ€‚้ป˜่ฎคไธบ1ใ€‚</p>
 
-		<h3>[property:TextureCube envMap]</h3>
+		<h3>[property:Texture envMap]</h3>
 		<p>็Žฏๅขƒ่ดดๅ›พใ€‚้ป˜่ฎคๅ€ผไธบnullใ€‚</p>
 
 

+ 7 - 0
docs/api/zh/materials/MeshPhysicalMaterial.html

@@ -62,6 +62,7 @@
 			[example:webgl_materials_variations_physical materials / variations / physical]<br />
 			[example:webgl_materials_physical_clearcoat materials / physical / clearcoat]<br />
 			[example:webgl_materials_physical_reflectivity materials / physical / reflectivity]<br />
+			[example:webgl_materials_physical_sheen materials / physical / sheen]<br />
 			[example:webgl_materials_physical_transmission materials / physical / transmission]
 		</p>
 
@@ -129,6 +130,12 @@
 			่ฟ™ๆจกๆ‹Ÿไบ†้ž้‡‘ๅฑžๆ่ดจ็š„ๅๅฐ„็އใ€‚ๅฝ“[page:MeshStandardMaterial]ไธบ*1.0*ๆ—ถ๏ผŒๆญคๅฑžๆ€งๆ— ๆ•ˆใ€‚
 		</p>
 
+		<h3>[property:Color sheen]</h3>
+		<p>
+			If a color is assigned to this property, the material will use a special sheen BRDF intended for rendering cloth materials such as velvet.
+			The sheen color provides the ability to create two-tone specular materials. *null* by default.
+		</p>
+
 		<h3>[property:Float transmission]</h3>
 		<p>
 		Degree of transmission (or optical transparency), from *0.0* to *1.0*. Default is *0.0*.<br />

+ 3 - 9
docs/api/zh/materials/MeshStandardMaterial.html

@@ -132,15 +132,9 @@
 		<h3>[property:Float emissiveIntensity]</h3>
 		<p>ๆ”พๅฐ„ๅ…‰ๅผบๅบฆใ€‚่ฐƒ่Š‚ๅ‘ๅ…‰้ขœ่‰ฒใ€‚้ป˜่ฎคไธบ1ใ€‚</p>
 
-		<h3>[property:TextureCube envMap]</h3>
-		<p> ็Žฏๅขƒ่ดดๅ›พใ€‚้ป˜่ฎคๅ€ผไธบnullใ€‚
-			่ฏทๆณจๆ„๏ผŒไธบไบ†ไฝฟๆ่ดจ็ฒ—็ณ™ๅบฆๅฑžๆ€ง่ƒฝๅคŸๆญฃ็กฎๅœฐๆจก็ณŠ็Žฏๅขƒ่ดดๅ›พ๏ผŒshaderๅฟ…้กป่ƒฝๅคŸ่ฎฟ้—ฎ็Žฏๅขƒ็บน็†็š„mipmapsใ€‚
-			ไฝฟ็”จ้ป˜่ฎค่ฎพ็ฝฎๅˆ›ๅปบ็š„TextureCubesๅทฒๆญฃ็กฎ้…็ฝฎ; ๅฆ‚ๆžœๆ‰‹ๅŠจ่ฐƒๆ•ด็บน็†ๅ‚ๆ•ฐ๏ผŒ
-			่ฏท็กฎไฟๅฐ†minFilter่ฎพ็ฝฎไธบๅ…ถไธญไธ€ไธชMipMap้€‰้กน๏ผŒๅนถไธ”ๆœชๅผบๅˆถ็ฆ็”จmip่ดดๅ›พใ€‚</p>
-		<p>
-			ๆณจๆ„๏ผšMeshStandardMaterial ไป…ๆ”ฏๆŒ[link:https://threejs.org/docs/#api/textures/CubeTexture cube environment maps]ใ€‚
-			ๅฆ‚ๆžœ่ฆไฝฟ็”จequirectangular่ดดๅ›พ๏ผŒๅˆ™้œ€่ฆไฝฟ็”จ [page:WebGLCubeRenderTarget.fromEquirectangularTexture WebGLCubeRenderTarget.fromEquirectangularTexture]()ใ€‚
-			่ฏฆ็ป†ไฟกๆฏ่ฏทๅ‚้˜…ๆญค็คบไพ‹[link:https://threejs.org/examples/webgl_materials_envmaps_exr.html example]ใ€‚
+		<h3>[property:Texture envMap]</h3>
+		<p>The environment map. To ensure a physically correct rendering, you should only add
+			environment maps which were preprocessed by [page:PMREMGenerator]. Default is null.
 		</p>
 
 		<h3>[property:Float envMapIntensity]</h3>

+ 0 - 1
docs/api/zh/materials/ShaderMaterial.html

@@ -107,7 +107,6 @@
 			[example:webgl_materials_texture_hdr webgl / materials / texture / hdr]<br />
 			[example:webgl_materials_wireframe webgl / materials / wireframe]<br />
 			[example:webgl_modifier_tessellation webgl / modifier / tessellation]<br />
-			[example:webgl_nearestneighbour webgl / nearestneighbour]<br />
 			[example:webgl_postprocessing_dof2 webgl / postprocessing / dof2]<br />
 			[example:webgl_postprocessing_godrays webgl / postprocessing / godrays]
 		</p>

+ 1 - 1
docs/api/zh/math/Matrix3.html

@@ -100,7 +100,7 @@ zAxis = (c, f, i)
 		ไฝฟ็”จๅŸบไบŽๅˆ—ไผ˜ๅ…ˆๆ ผๅผ[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major]็š„ๆ•ฐ็ป„ๆฅ่ฎพ็ฝฎ่ฏฅ็Ÿฉ้˜ตใ€‚
 		</p>
 
-		<h3>[method:this invert()]()</h3>
+		<h3>[method:this invert]()</h3>
 		<p>
 		Inverts this matrix, using the [link:https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution analytic method].
 

+ 1 - 1
docs/api/zh/math/Matrix4.html

@@ -172,7 +172,7 @@ zAxis = (c, g, k)
 			ไฝฟ็”จๅŸบไบŽๅˆ—ไผ˜ๅ…ˆๆ ผๅผ[link:https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order column-major]็š„ๆ•ฐ็ป„ๆฅ่ฎพ็ฝฎ่ฏฅ็Ÿฉ้˜ตใ€‚
 		</p>
 
-		<h3>[method:this invert()]()</h3>
+		<h3>[method:this invert]()</h3>
 		<p>
 		Inverts this matrix, using the [link:https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution analytic method].
 

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

@@ -65,6 +65,11 @@
 		<h2>ๆ–นๆณ•</h2>
 		<p>See the base [page:Mesh] class for common methods.</p>
 
+		<h3>[method:null dispose]()</h3>
+		<p>
+			Frees the internal resources of this instance.
+		</p>
+
 		<h3>[method:null getColorAt]( [param:Integer index], [param:Color color] )</h3>
 		<p>
 			[page:Integer index]: The index of an instance. Values have to be in the range [0, count].

+ 4 - 1
docs/api/zh/renderers/WebGLRenderer.html

@@ -322,7 +322,7 @@
 		<h3>[method:Float getClearAlpha]()</h3>
 		<p>่ฟ”ๅ›žไธ€ไธช่กจ็คบๅฝ“ๅ‰alphaๅ€ผ็š„[page:Float float]๏ผŒ่Œƒๅ›ด0ๅˆฐ1</p>
 
-		<h3>[method:Color getClearColor]()</h3>
+		<h3>[method:Color getClearColor]( [param:Color target] )</h3>
 		<p>่ฟ”ๅ›žไธ€ไธช่กจ็คบๅฝ“ๅ‰้ขœ่‰ฒๅ€ผ็š„[page:Color THREE.Color]ๅฎžไพ‹</p>
 
 		<h3>[method:WebGLRenderingContext getContext]()</h3>
@@ -385,6 +385,9 @@
 		Renders an instance of [page:ImmediateRenderObject]๏ผŒ็”ฑrenderObjectImmediateๅฏน่ฑก่ฐƒ็”จใ€‚
 		</p>
 
+		<h3>[method:null resetState]()</h3>
+		<p>Can be used to reset the internal WebGL state. This method is mostly relevant for applications which share a single WebGL context across multiple WebGL libraries.</p>
+
 		<h3>[method:null setAnimationLoop]( [param:Function callback] )</h3>
 		<p>[page:Function callback] โ€” ๆฏไธชๅฏ็”จๅธง้ƒฝไผš่ฐƒ็”จ็š„ๅ‡ฝๆ•ฐใ€‚ ๅฆ‚ๆžœไผ ๅ…ฅโ€˜nullโ€™,ๆ‰€ๆœ‰ๆญฃๅœจ่ฟ›่กŒ็š„ๅŠจ็”ป้ƒฝไผšๅœๆญขใ€‚</p>
 		<p>ๅฏ็”จๆฅไปฃๆ›ฟ[link:https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame requestAnimationFrame]็š„ๅ†…็ฝฎๅ‡ฝๆ•ฐ. ๅฏนไบŽWebXR้กน็›ฎ๏ผŒๅฟ…้กปไฝฟ็”จๆญคๅ‡ฝๆ•ฐใ€‚</p>

+ 1 - 1
docs/examples/en/animations/MMDAnimationHelper.html

@@ -153,7 +153,7 @@
 		Remove an [page:SkinnedMesh], [page:Camera], or [page:Audio] from helper.
 		</p>
 
-		<h3>[method:MMDAnimationHelper update]( [param:Nummber delta] )</h3>
+		<h3>[method:MMDAnimationHelper update]( [param:Number delta] )</h3>
 		<p>
 		[page:Number delta] โ€” number in second<br />
 		</p>

+ 1 - 1
docs/examples/en/animations/MMDPhysics.html

@@ -78,7 +78,7 @@
 
 		<h3>[method:CCDIKSolver reset]()</h3>
 		<p>
-		Resets Rigid bodies transorm to current bone's.
+		Resets Rigid bodies transform to current bone's.
 		</p>
 
 		<h3>[method:CCDIKSolver setGravity]( [param:Vector3 gravity] )</h3>

+ 2 - 2
docs/examples/en/controls/FirstPersonControls.html

@@ -68,12 +68,12 @@
 
 		<h3>[property:Number heightMax]</h3>
 		<p>
-			Upper camera height limit used for movement speed adjusment. Default is *1*.
+			Upper camera height limit used for movement speed adjustment. Default is *1*.
 		</p>
 
 		<h3>[property:Number heightMin]</h3>
 		<p>
-			Lower camera height limit used for movement speed adjusment. Default is *0*.
+			Lower camera height limit used for movement speed adjustment. Default is *0*.
 		</p>
 
 		<h3>[property:Boolean heightSpeed]</h3>

+ 1 - 1
docs/examples/en/controls/OrbitControls.html

@@ -13,7 +13,7 @@
 		Orbit controls allow the camera to orbit around a target.<br>
 
 		To use this, as with all files in the /examples directory, you will have to
-		include the file seperately in your HTML.
+		include the file separately in your HTML.
 
 		</p>
 

+ 2 - 2
docs/examples/en/controls/TransformControls.html

@@ -102,7 +102,7 @@
 
 		<h3>[property:Number rotationSnap]</h3>
 		<p>
-			By default, 3D objects are continously rotated. If you set this property to a numeric value (radians), you can define in which
+			By default, 3D objects are continuously rotated. If you set this property to a numeric value (radians), you can define in which
 			steps the 3D object should be rotated. Deault is *null*.
 		</p>
 
@@ -133,7 +133,7 @@
 
 		<h3>[property:Number translationSnap]</h3>
 		<p>
-			By default, 3D objects are continously translated. If you set this property to a numeric value (world units), you can define in which
+			By default, 3D objects are continuously translated. If you set this property to a numeric value (world units), you can define in which
 			steps the 3D object should be translated. Deault is *null*.
 		</p>
 

+ 1 - 1
docs/examples/en/exporters/ColladaExporter.html

@@ -57,7 +57,7 @@
 			// Collada file content
 			data: "",
 
-			// List of referenced texures
+			// List of referenced textures
 			textures: [{
 
 				// File directory, name, and extension of the texture data

+ 1 - 1
docs/examples/en/helpers/VertexNormalsHelper.html

@@ -55,7 +55,7 @@
 		<h3>[property:Object matrixAutoUpdate]</h3>
 		<p>
 			See [page:Object3D.matrixAutoUpdate]. Set to *false* here as the helper is using the
-			objects's [page:Object3D.matrixWorld matrixWorld].
+			object's [page:Object3D.matrixWorld matrixWorld].
 		</p>
 
 		<h3>[property:Object3D object]</h3>

+ 1 - 1
docs/examples/en/helpers/VertexTangentsHelper.html

@@ -54,7 +54,7 @@
 		<h3>[property:Object matrixAutoUpdate]</h3>
 		<p>
 			See [page:Object3D.matrixAutoUpdate]. Set to *false* here as the helper is using the
-			objects's [page:Object3D.matrixWorld matrixWorld].
+			object's [page:Object3D.matrixWorld matrixWorld].
 		</p>
 
 		<h3>[property:Object3D object]</h3>

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

@@ -37,6 +37,7 @@
 			<li>KHR_texture_basisu <i>(experimental)</i></li>
 			<li>KHR_texture_transform<sup>2</sup></li>
 			<li>EXT_texture_webp</li>
+			<li>EXT_meshopt_compression</li>
 			<li>MSFT_texture_dds</li>
 		</ul>
 

+ 1 - 1
docs/examples/en/loaders/MMDLoader.html

@@ -91,7 +91,7 @@
 		[page:Function onError] โ€” (optional) A function to be called if an error occurs during loading. The function receives error as an argument.<br />
 		</p>
 		<p>
-		Begin loading VMD motion file(s) from url(s) and fire the callback function with the parsed [page:AnimatioinClip].
+		Begin loading VMD motion file(s) from url(s) and fire the callback function with the parsed [page:AnimationClip].
 		</p>
 
 		<h3>[method:null loadWithAnimation]( [param:String modelUrl], [param:String vmdUrl], [param:Function onLoad], [param:Function onProgress], [param:Function onError] )</h3>

+ 1 - 1
docs/examples/en/loaders/TGALoader.html

@@ -37,7 +37,7 @@
 				console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
 
 			},
-			// called when the loading failes
+			// called when the loading fails
 			function ( error ) {
 
 				console.log( 'An error happened' );

+ 1 - 1
docs/examples/en/math/Lut.html

@@ -138,7 +138,7 @@
 		<h2>Source</h2>
 
 		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/math/[path].js examples/jsm/math/[path].js]
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/math/Lut.js examples/jsm/math/Lut.js]
 		</p>
 	</body>
 </html>

+ 1 - 2
docs/examples/en/math/MeshSurfaceSampler.html

@@ -24,14 +24,13 @@
 		const sampleMesh = new THREE.InstancedMesh( sampleGeometry, sampleMaterial, 100 );
 
 		const _position = new THREE.Vector3();
-		const _normal = new THREE.Vector3();
 		const _matrix = new THREE.Matrix4();
 
 		// Sample randomly from the surface, creating an instance of the sample
 		// geometry at each sample point.
 		for ( let i = 0; i < 100; i ++ ) {
 
-			sampler.sample( _position, _normal );
+			sampler.sample( _position );
 
 			_matrix.makeTranslation( _position.x, _position.y, _position.z );
 

+ 174 - 0
docs/examples/en/math/OBB.html

@@ -0,0 +1,174 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<p class="desc">
+			Represents an oriented bounding box (OBB) in 3D space.
+		</p>
+
+		<h2>Examples</h2>
+		<p>
+			[example:webgl_math_obb]
+		</p>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [param:Vector3 center], [param:Vector3 halfSize], [param:Matrix3 rotation] )</h3>
+		<p>
+			[page:Vector3 center] โ€” The center of the [name]. (optional)<br />
+			[page:Vector3 halfSize] โ€” Positive halfwidth extents of the [name] along each axis. (optional)<br />
+			[page:Matrix3 rotation] โ€” The rotation of the [name]. (optional)
+		</p>
+		<p>
+			Creates a new [name].
+		</p>
+
+		<h2>Properties</h2>
+
+		<h3>[property:Vector3 center]</h3>
+		<p>
+			The center of the [name]. Default is *( 0, 0, 0 )*.
+		</p>
+
+		<h3>[property:Vector3 halfSize]</h3>
+		<p>
+			Positive halfwidth extents of the [name] along each axis. Default is *( 0, 0, 0 )*.
+		</p>
+
+		<h3>[property:Matrix3 rotation]</h3>
+		<p>
+			The rotation of the [name]. Default is the identity matrix.
+		</p>
+
+		<h2>Methods</h2>
+
+		<h3>[method:this applyMatrix4]( [param:Matrix4 matrix] )</h3>
+		<p>
+			[page:Matrix4 matrix] โ€” A 4x4 transformation matrix.
+		</p>
+		<p>
+			Applies the given transformation matrix to this [name]. This method can be used to transform the
+			bounding volume with the world matrix of a 3D object in order to keep both entities in sync.
+		</p>
+
+		<h3>[method:Vector3 clampPoint]( [param:Vector3 point], [param:Vector3 clampedPoint] )</h3>
+		<p>
+			[page:Vector3 point] โ€” The point that should be clamped within the bounds of this [name].<br />
+			[page:Matrix3 clampedPoint] โ€” The result will be copied into this vector.
+		</p>
+		<p>
+			Clamps the given point within the bounds of this [name].
+		</p>
+
+		<h3>[method:OBB clone]()</h3>
+		<p>
+			Creates a cloned [name] for this instance.
+		</p>
+
+		<h3>[method:Boolean containsPoint]( [param:Vector3 point] )</h3>
+		<p>
+			[page:Vector3 point] โ€” The point to test.
+		</p>
+		<p>
+			Whether the given point lies within this [name] or not.
+		</p>
+
+		<h3>[method:this copy]( [param:OBB obb] )</h3>
+		<p>
+			[page:OBB obb] โ€” The [name] to copy.
+		</p>
+		<p>
+			Copies the properties of the given [name] to this [name].
+		</p>
+
+		<h3>[method:Boolean equals]( [param:OBB obb] )</h3>
+		<p>
+			[page:OBB obb] โ€” The [name] to test.
+		</p>
+		<p>
+			Whether the given [name] is equal to this [name] or not.
+		</p>
+
+		<h3>[method:this fromBox3]( [param:Box3 box3] )</h3>
+		<p>
+			[page:Box3 box3] โ€” An AABB.
+		</p>
+		<p>
+			Defines an [name] based on the given AABB.
+		</p>
+
+		<h3>[method:Vector3 getSize]( [param:Vector3 size] )</h3>
+		<p>
+			[page:Vector3 size] โ€” The result will be copied into this vector.
+		</p>
+		<p>
+			Returns the size of this [name] into the given vector.
+		</p>
+
+		<h3>[method:Boolean intersectsBox3]( [param:Box3 box3] )</h3>
+		<p>
+			[page:Box3 box3] โ€” The AABB to test.
+		</p>
+		<p>
+			Whether the given AABB intersects this [name] or not.
+		</p>
+
+		<h3>[method:Boolean intersectsSphere]( [param:Sphere sphere] )</h3>
+		<p>
+			[page:Sphere sphere] โ€” The bounding sphere to test.
+		</p>
+		<p>
+			Whether the given bounding sphere intersects this [name] or not.
+		</p>
+
+		<h3>[method:Boolean intersectsOBB]( [param:OBB obb], [param:Number epsilon] )</h3>
+		<p>
+			[page:OBB obb] โ€” The OBB to test.<br />
+			[page:Number epsilon] โ€” An optional numeric value to counteract arithmetic errors. Default is *Number.EPSILON*.
+		</p>
+		<p>
+			Whether the given [name] intersects this [name] or not.
+		</p>
+
+		<h3>[method:Boolean intersectsRay]( [param:Ray ray] )</h3>
+		<p>
+			[page:Ray ray] โ€” The ray to test.
+		</p>
+		<p>
+			Whether the given ray intersects this [name] or not.
+		</p>
+
+		<h3>[method:Vector3 intersectRay]( [param:Ray ray], [param:Vector3 intersectionPoint] )</h3>
+		<p>
+			[page:Ray ray] โ€” The ray to test.<br />
+			[page:Vector3 intersectionPoint] โ€” The result will be copied into this vector.
+		</p>
+		<p>
+			Performs a Ray/OBB intersection test and stores the intersection point to the given 3D vector.
+			If no intersection is detected, *null* is returned.
+		</p>
+
+		<h3>[method:this set]( [param:Vector3 center], [param:Vector3 halfSize], [param:Matrix3 rotation] )</h3>
+		<p>
+			[page:Vector3 center] โ€” The center of the [name].<br />
+			[page:Vector3 halfSize] โ€” Positive halfwidth extents of the [name] along each axis.<br />
+			[page:Matrix3 rotation] โ€” The rotation of the [name].
+		</p>
+		<p>
+			Defines the [name] for the given values.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+		[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/math/OBB.js examples/jsm/math/OBB.js]
+		</p>
+	</body>
+</html>

+ 1 - 1
docs/examples/en/math/convexhull/ConvexHull.html

@@ -104,7 +104,7 @@
 
 		<h3>[method:Object computeExtremes]()</h3>
 
-		<p>Computes the extremes values (min/max vectors) which will be used to compute the inital hull.</p>
+		<p>Computes the extremes values (min/max vectors) which will be used to compute the initial hull.</p>
 
 		<h3>[method:ConvexHull computeHorizon]( [param:Vector3 eyePoint], [param:HalfEdge crossEdge], [param:Face face], [param:Array horizon]	)</h3>
 		<p>

+ 1 - 1
docs/examples/en/math/convexhull/Face.html

@@ -10,7 +10,7 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-			Represents a section bounded by a specific amount of half-edges. The current implmentation assumes that a face always consist of three edges.
+			Represents a section bounded by a specific amount of half-edges. The current implementation assumes that a face always consist of three edges.
 		</p>
 
 

+ 1 - 1
docs/examples/en/math/convexhull/HalfEdge.html

@@ -55,7 +55,7 @@
 		<h2>Methods</h2>
 
 		<h3>[method:VertexNode head]()</h3>
-		<p>Returns the destintation vertex.</p>
+		<p>Returns the destination vertex.</p>
 
 		<h3>[method:VertexNode tail]()</h3>
 		<p>Returns the origin vertex.</p>

+ 9 - 1
docs/examples/en/postprocessing/EffectComposer.html

@@ -108,6 +108,14 @@
 			Used by [name] to determine when a pass should be rendered to screen.
 		</p>
 
+		<h3>[method:void removePass]( [param:Pass pass] )</h3>
+
+		<p>
+			pass -- The pass to remove from the pass chain.<br /><br />
+
+			Removes the given pass from the pass chain.
+		</p>
+
 		<h3>[method:void render]( [param:Float deltaTime] )</h3>
 
 		<p>
@@ -129,7 +137,7 @@
 		<p>
 			pixelRatio -- The device pixel ratio.<br /><br />
 
-			Sets device pixel ratio. This is usually used for HiDPI device to prevent bluring output.
+			Sets device pixel ratio. This is usually used for HiDPI device to prevent blurring output.
 				Thus, the semantic of the method is similar to [page:WebGLRenderer.setPixelRatio]().
 		</p>
 

+ 95 - 0
docs/examples/ko/controls/DeviceOrientationControls.html

@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			๋ชจ๋ฐ”์ผ ์žฅ์น˜์˜ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ์นด๋ฉ”๋ผ ๋ฐฉํ–ฅ์„ ์กฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์˜ˆ์‹œ</h2>
+
+		<p>[example:misc_controls_deviceorientation misc / controls / deviceorientation ]</p>
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+		<h3>[name]( [param:Camera object] )</h3>
+		<p>
+			<p>
+				[page:Camera object]: ์ œ์–ด ํ•  ์นด๋ฉ”๋ผ ๊ฐ์ฒด ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				 ์ƒˆ๋กœ์šด [name] ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h2>์ด๋ฒคํŠธ</h2>
+
+		<h3>change</h3>
+		<p>
+			์ปจํŠธ๋กค์— ์˜ํ•ด ์นด๋ฉ”๋ผ๊ฐ€ ๋ณ€ํ™˜๋˜๋ฉด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์†์„ฑ</h2>
+
+		<h3>[property:Number alphaOffset]</h3>
+		<p>
+			์•ŒํŒŒ ๊ฐ’์˜ ์˜คํ”„์…‹์˜ ๋‹จ์œ„๋Š” ๋ผ๋””์•ˆ ์ž…๋‹ˆ๋‹ค. ์ดˆ๊ธฐ๊ฐ’์€ 0์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Object deviceOrientation]</h3>
+		<p>
+			ํ˜„์žฌ deviceorientation ์ด๋ฒคํŠธ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean enabled]</h3>
+		<p>
+			์ปจํŠธ๋กค์˜ ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Camera object]</h3>
+		<p>
+			์ œ์–ด ํ•  ์นด๋ฉ”๋ผ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number screenOrientation]</h3>
+		<p>
+			์žฅ์น˜์˜ ์‹ค์ œ ๋ฐฉํ–ฅ์„ ๊ธฐ์ค€์œผ๋กœ ๋ทฐํฌํŠธ์˜ ๋ฐฉํ–ฅ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค(90๋„ ๋‹จ์œ„ ๊ธฐ์ค€). ์ดˆ๊ธฐ๊ฐ’์€ *0* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>๋ฉ”์†Œ๋“œ</h2>
+
+		<h3>[method:null connect] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์˜ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ ํ™œ์„ฑํ™” ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null disconnect] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์˜ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์ œ๊ฑฐํ•œ ๋‹ค์Œ ๋น„ํ™œ์„ฑํ™” ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null dispose] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์„ ๋”์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null update] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์„ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฃจํ”„์—์„œ ํ˜ธ์ถœ ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/controls/DeviceOrientationControls.js examples/jsm/controls/DeviceOrientationControls.js]
+		</p>
+	</body>
+</html>

+ 131 - 0
docs/examples/ko/controls/DragControls.html

@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:EventDispatcher] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+		ํ•ด๋‹น ํด๋ž˜์Šค๋Š” ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ์ƒํ˜ธ์ž‘์šฉ์— ๋Œ€ํ•ด ์‚ฌ์šฉ ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์ฝ”๋“œ ์˜ˆ์‹œ</h2>
+
+		<code>
+		const controls = new DragControls( objects, camera, renderer.domElement );
+
+		// ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ๋“œ๋ž˜๊ทธ ๋  ๋Œ€์ƒ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
+
+		controls.addEventListener( 'dragstart', function ( event ) {
+
+			event.object.material.emissive.set( 0xaaaaaa );
+
+		} );
+
+		controls.addEventListener( 'dragend', function ( event ) {
+
+			event.object.material.emissive.set( 0x000000 );
+
+		} );
+		</code>
+
+		<h2>์˜ˆ์‹œ</h2>
+
+		<p>[example:misc_controls_drag misc / controls / drag ]</p>
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+		<h3>[name]( [param:Array objects], [param:Camera camera], [param:HTMLDOMElement domElement] )</h3>
+		<p>
+			<p>
+				[page:Array objects]: ๋“œ๋ž˜๊ทธ ๊ฐ€๋Šฅํ•œ 3D ๊ฐ์ฒด์˜ ๋ฐฐ์—ด ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+			[page:Camera camera]: ๋ Œ๋”๋ง ๋œ ์žฅ๋ฉด์˜ ์นด๋ฉ”๋ผ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+			[page:HTMLDOMElement domElement]: ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์‚ฌ์šฉ๋˜๋Š” HTML ์—˜๋ฆฌ๋จผํŠธ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				์ƒˆ๋กœ์šด [name] ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h2>์ด๋ฒคํŠธ</h2>
+
+		<h3>dragstart</h3>
+		<p>
+			์‚ฌ์šฉ์ž๊ฐ€ 3D ๊ฐ์ฒด๋ฅผ ์ฒซ๋ฒˆ์งธ๋กœ ๋“œ๋ž˜๊ทธ ํ•  ๊ฒฝ์šฐ ํ˜ธ์ถœ ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>drag</h3>
+		<p>
+			์‚ฌ์šฉ์ž๊ฐ€ 3D ๊ฐ์ฒด๋ฅผ ๋“œ๋ž˜๊ทธ ํ•  ๊ฒฝ์šฐ ํ˜ธ์ถœ ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>dragend</h3>
+		<p>
+			์‚ฌ์šฉ์ž๊ฐ€ 3D ๊ฐ์ฒด๋ฅผ ๋“œ๋ž˜๊ทธ๋ฅผ ์™„๋ฃŒํ•˜๋ฉด ํ˜ธ์ถœ ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>hoveron</h3>
+		<p>
+			๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ๊ฐ€ 3D ๊ฐ์ฒด ์œ„์— ์˜ค๊ฑฐ๋‚˜, ์ž์‹ ๊ฐ์ฒด ์œ„์— ์˜ฌ ๊ฒฝ์šฐ ํ˜ธ์ถœ ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>hoveroff</h3>
+		<p>
+			ํฌ์ธํ„ฐ๊ฐ€ 3D ๊ฐ์ฒด ๋ฐ–์œผ๋กœ ์ด๋™ํ•  ๊ฒฝ์šฐ ํ˜ธ์ถœ ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์†์„ฑ</h2>
+
+		<h3>[property:Boolean enabled]</h3>
+		<p>
+			์ปจํŠธ๋กค์˜ ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean transformGroup]</h3>
+		<p>
+		
+			ํ•ด๋‹น ์†์„ฑ์€ [page:DragControls.objects] ๋ฐฐ์—ด์— ๋“œ๋ž˜๊ทธ ๊ฐ€๋Šฅํ•œ ๋‹จ์ผ ๊ทธ๋ฃน ๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ์—๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
+			*true* ๊ฐ’์œผ๋กœ ์„ค์ • ๋˜์–ด์žˆ๋‹ค๋ฉด, [name]์€ ๊ฐœ๋ณ„ ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ์ „์ฒด ๊ทธ๋ฃน์€ ๋“œ๋ž˜๊ทธ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *false* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>๋ฉ”์†Œ๋“œ</h2>
+
+		<p>์ผ๋ฐ˜์ ์ธ ๋ฉ”์†Œ๋“œ๋Š” [page:EventDispatcher] ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.</p>
+
+		<h3>[method:null activate] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์— ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null deactivate] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์— ์ถ”๊ฐ€๋œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null dispose] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์ด ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Array getObjects] ()</h3>
+		<p>
+			๋“œ๋ž˜๊ทธ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/controls/DragControls.js examples/jsm/controls/DragControls.js]
+		</p>
+	</body>
+</html>

+ 164 - 0
docs/examples/ko/controls/FirstPersonControls.html

@@ -0,0 +1,164 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			ํ•ด๋‹น ํด๋ž˜์Šค๋Š” [page:FlyControls] ์˜ ๋Œ€์•ˆ์ ์ธ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์˜ˆ์‹œ</h2>
+
+		<p>[example:webgl_geometry_terrain webgl / geometry / terrain ]</p>
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+		<h3>[name]( [param:Camera object], [param:HTMLDOMElement domElement] )</h3>
+		<p>
+			<p>
+				[page:Camera object]: ์ œ์–ด ํ•  ์นด๋ฉ”๋ผ ๊ฐ์ฒด ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				[page:HTMLDOMElement domElement]: ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์‚ฌ์šฉ๋˜๋Š” HTML ์—˜๋ฆฌ๋จผํŠธ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				์ƒˆ๋กœ์šด [name] ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h2>์†์„ฑ</h2>
+
+		<h3>[property:Boolean activeLook]</h3>
+		<p>
+			์ฃผ์œ„๋ฅผ ๋‘˜๋Ÿฌ ๋ณผ ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *true* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean autoForward]</h3>
+		<p>
+			์นด๋ฉ”๋ผ๊ฐ€ ์ž๋™์œผ๋กœ ์•ž์œผ๋กœ ์ด๋™ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *false* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean constrainVertical]</h3>
+		<p>
+			[[page:.verticalMin], [page:verticalMax]]๊ฐ’์„ ์ˆ˜์ง์œผ๋กœ ์นด๋ฉ”๋ผ๋ฅผ ๊ณ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *false* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:HTMLDOMElement domElement]</h3>
+		<p>
+			๋งˆ์šฐ์Šค / ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” HTMLDOMElement์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒ์„ฑ์ž์— ์˜ํ•ด ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค; 
+			์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์„ค์ •๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ƒˆ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean enabled]</h3>
+		<p>
+			์ปจํŠธ๋กค์˜ ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *true* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number heightCoef]</h3>
+		<p>
+			y-์ปดํฌ๋„ŒํŠธ๊ฐ€ [page:.heightMax]์— ๊ฐ€๊นŒ์šธ ๊ฒฝ์šฐ ์นด๋ฉ”๋ผ๊ฐ€ ์–ผ๋งˆ๋งŒํผ ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š” ์ง€ ์„ค์ • ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *1* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number heightMax]</h3>
+		<p>
+			์†๋„ ์กฐ์ ˆ์— ์‚ฌ์šฉ๋˜๋Š” ์ƒ๋‹จ ์นด๋ฉ”๋ผ ๋†’์ด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *1* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number heightMin]</h3>
+		<p>
+			์†๋„ ์กฐ์ ˆ์— ์‚ฌ์šฉ๋˜๋Š” ํ•˜๋‹จ ์นด๋ฉ”๋ผ ๋†’์ด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *0* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean heightSpeed]</h3>
+		<p>
+			์นด๋ฉ”๋ผ์˜ ๋†’์ด๊ฐ€ ์ด๋™ ์†๋„์— ์˜ํ–ฅ์„ ์ฃผ๋Š”์ง€ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *false* ์ž…๋‹ˆ๋‹ค.
+			ํ•ด๋‹น ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” [page:.heightCoef], [page:.heightMin] and [page:.heightMax]๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean lookVertical]</h3>
+		<p>
+			์„ธ๋กœ ์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ์ฃผ์œ„๋ฅผ ๋‘˜๋Ÿฌ ๋ณผ ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *true* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number lookSpeed]</h3>
+		<p>
+			์นด๋ฉ”๋ผ์˜ look around ์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *0.005* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean mouseDragOn]</h3>
+		<p>
+			๋งˆ์šฐ์Šค๋ฅผ ๋ˆŒ๋Ÿฌ์ง„ ์ƒํƒœ์ธ์ง€ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๋Š” ์ฝ๊ธฐ ์ „์šฉ ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number movementSpeed]</h3>
+		<p>
+			์นด๋ฉ”๋ผ์˜ ์ด๋™์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *1* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Camera object]</h3>
+		<p>
+			์ œ์–ด ํ•  ์นด๋ฉ”๋ผ ๊ฐ์ฒด ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number verticalMax]</h3>
+		<p>
+			์ˆ˜์ง์œผ๋กœ ์ฃผ์œ„๋ฅผ ๋‘˜๋Ÿฌ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ƒํ•œ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. 0 ๋ถ€ํ„ฐ Math.PI.radians ์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *Math.PI* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number verticalMin]</h3>
+		<p>
+			์ˆ˜์ง์œผ๋กœ ์ฃผ์œ„๋ฅผ ๋‘˜๋Ÿฌ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ•˜ํ•œ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. 0 ๋ถ€ํ„ฐ Math.PI.radians ์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ *0* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>๋ฉ”์†Œ๋“œ</h2>
+
+		<h3>[method:null dispose] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์ด ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null handleResize] ()</h3>
+		<p>
+			์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฐฝ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆ ํ•˜๋ ค๋ฉด ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:FirstPersonControls lookAt]( [param:Vector3 vector] )<br />
+		[method:FirstPersonControls lookAt]( [param:Float x], [param:Float y], [param:Float z] )</h3>
+		<p>
+			<p>
+				<p>
+					vector - ํƒ€๊ฒŸ ์ขŒํ‘œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+				</p>
+				<p>
+					Optionally, x,y,z ์ปดํฌ๋„ŒํŠธ๋Š” ํŠน์ • ์›”๋“œ ์ขŒํ‘œ๊ณ„ ์œ„์น˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+				</p>
+			</p>
+			<p>
+				์นด๋ฉ”๋ผ๋Š” ์ •์˜ ๋œ ํƒ€๊ฒŸ ์ขŒํ‘œ ์ชฝ์œผ๋กœ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h3>[method:null update] ( [param:Number delta] )</h3>
+		<p>
+			<p>
+				[page:Number delta]: ๋ณ€ํ™”ํ•  ์‹œ๊ฐ„ ๊ฐ’ ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				์ปจํŠธ๋กค์„ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฃจํ”„์—์„œ ํ˜ธ์ถœ ๋ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/controls/FirstPersonControls.js examples/jsm/controls/FirstPersonControls.js]
+		</p>
+	</body>
+</html>

+ 100 - 0
docs/examples/ko/controls/FlyControls.html

@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			[name]๋Š” DCC ํˆด์ธ ๋ธ”๋ Œ๋”์˜ ๋น„ํ–‰ ๋ชจ๋“œ์™€ ์œ ์‚ฌํ•œ ํ•ญํ•ด ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 3D ๊ณต๊ฐ„์—์„œ ์ œํ•œ ์—†์ด ์นด๋ฉ”๋ผ๋ฅผ ์ž„์˜๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (e.g. ํŠน์ • ํƒ€๊ฒŸ์„ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ)
+	
+		</p>
+
+		<h2>์˜ˆ์‹œ</h2>
+
+		<p>[example:misc_controls_fly misc / controls / fly ]</p>
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+		<h3>[name]( [param:Camera object], [param:HTMLDOMElement domElement] )</h3>
+		<p>
+			<p>
+				[page:Camera object]: ์ œ์–ด ํ•  ์นด๋ฉ”๋ผ ๊ฐ์ฒด ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				[page:HTMLDOMElement domElement]:์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์‚ฌ์šฉ๋˜๋Š” HTML ์—˜๋ฆฌ๋จผํŠธ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				์ƒˆ๋กœ์šด [name] ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h2>์ด๋ฒคํŠธ</h2>
+
+		<h3>change</h3>
+		<p>
+			์ปจํŠธ๋กค์— ์˜ํ•ด ์นด๋ฉ”๋ผ๊ฐ€ ๋ณ€ํ™˜๋˜๋ฉด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>ํŠน์„ฑ</h2>
+
+		<h3>[property:Boolean autoForward]</h3>
+		<p>
+			*true* ์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ, ์ฒ˜์Œ ๋ณ€ํ™˜์ด ๋  ๋•Œ ์นด๋ฉ”๋ผ๊ฐ€ ์ž๋™์œผ๋กœ ์•ž์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค(์ •์ง€๋˜์ง€ ์•Š์Œ). ๊ธฐ๋ณธ๊ฐ’์€ *false* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:HTMLDOMElement domElement]</h3>
+		<p>
+			๋งˆ์šฐ์Šค / ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” HTMLDOMElement์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒ์„ฑ์ž์— ์˜ํ•ด ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค; 
+			์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์„ค์ •๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ƒˆ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean dragToLook]</h3>
+		<p>
+			*true* ์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ, ๋“œ๋ž˜๊ทธ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ˆ˜ํ–‰ํ•ด์•ผ๋งŒ ์ฃผ๋ณ€์„ ๋‘˜๋Ÿฌ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *false* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number movementSpeed]</h3>
+		<p>
+			์ด๋™ ์†๋„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *1* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Camera object]</h3>
+		<p>
+			์ œ์–ด ํ•  ์นด๋ฉ”๋ผ๋ฅผ ๊ฐ์ฒด ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number rollSpeed]</h3>
+		<p>
+			ํšŒ์ „ ์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *0.005* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>๋ฉ”์†Œ๋“œ</h2>
+
+		<h3>[method:null dispose] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์„ ๋”์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null update] ( [param:Number delta] )</h3>
+		<p>
+			<p>
+				[page:Number delta]: ๋ณ€ํ™”ํ•  ์‹œ๊ฐ„๊ฐ’.
+			</p>
+			<p>
+				์ปจํŠธ๋กค์„ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฃจํ”„์—์„œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/controls/FlyControls.js examples/jsm/controls/FlyControls.js]
+		</p>
+	</body>
+</html>

+ 307 - 0
docs/examples/ko/controls/OrbitControls.html

@@ -0,0 +1,307 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<p class="desc">
+		๊ถค๋„ ์ปจํŠธ๋กค์„ ์‚ฌ์šฉํ•˜๋ฉด ์นด๋ฉ”๋ผ๊ฐ€ ๋Œ€์ƒ ์ฃผ์œ„๋ฅผ ๊ณต์ „ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br>
+
+		์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, / examples ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชจ๋“  ํŒŒ์ผ๋“ค์ด HTML์— ๋ณ„๋„์˜ ํŒŒ์ผ์„ ํฌํ•จํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
+
+		</p>
+
+		<h2>์ฝ”๋“œ ์˜ˆ์‹œ</h2>
+
+		<code>
+		const renderer = new THREE.WebGLRenderer();
+		renderer.setSize( window.innerWidth, window.innerHeight );
+		document.body.appendChild( renderer.domElement );
+
+		const scene = new THREE.Scene();
+
+		const camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 10000 );
+
+		const controls = new OrbitControls( camera, renderer.domElement );
+
+		//controls.update()๋Š” ์นด๋ฉ”๋ผ ๋ณ€ํ™˜์„ค์ •์„ ์ˆ˜๋™์œผ๋กœ ๋ณ€๊ฒฝํ•œ ํ›„์— ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+		camera.position.set( 0, 20, 100 );
+		controls.update();
+
+		function animate() {
+
+			requestAnimationFrame( animate );
+
+			// ๋งŒ์•ฝ controls.enableDamping, controls.autoRotate ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ผ๋„ true๋กœ ์„ค์ •๋  ๊ฒฝ์šฐ ํ•„์ˆ˜๋กœ ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+			controls.update();
+
+			renderer.render( scene, camera );
+
+		}
+		</code>
+
+		<h2>์˜ˆ์‹œ</h2>
+
+		<p>[example:misc_controls_orbit misc / controls / orbit ]</p>
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+		<h3>[name]( [param:Camera object], [param:HTMLDOMElement domElement] )</h3>
+		<p>
+			[page:Camera object]: (ํ•„์ˆ˜) ์ œ์–ดํ•  ์นด๋ฉ”๋ผ ๊ฐ์ฒด ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์žฅ๋ฉด์— ํฌํ•จ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ์ž์‹์ด ์•„๋‹ˆ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค..<br><br>
+
+			[page:HTMLDOMElement domElement]: ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์‚ฌ์šฉ๋˜๋Š” HTML ์—˜๋ฆฌ๋จผํŠธ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์ด๋ฒคํŠธ</h2>
+
+		<h3>change</h3>
+		<p>
+			์ปจํŠธ๋กค์— ์˜ํ•ด ์นด๋ฉ”๋ผ๊ฐ€ ๋ณ€ํ™˜๋˜๋ฉด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>start</h3>
+		<p>
+			์ƒํ˜ธ ์ž‘์šฉ์ด ์‹œ์ž‘๋˜๋ฉด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>end</h3>
+		<p>
+			์ƒํ˜ธ ์ž‘์šฉ์ด ๋๋‚˜๋ฉด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>ํŠน์„ฑ</h2>
+
+		<h3>[property:Boolean autoRotate]</h3>
+		<p>
+			๋Œ€์ƒ ์ฃผ์œ„๋ฅผ ์ž๋™์œผ๋กœ ํšŒ์ „ํ•˜๋ ค๋ฉด true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.<br> autoRotate๋ฅผ ํ™œ์„ฑํ•  ๊ฒฝ์šฐ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฃจํ”„์—์„œ [page:.update()]๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+			
+		</p>
+
+		<h3>[property:Float autoRotateSpeed]</h3>
+		<p>
+			[page:.autoRotate]๊ฐ€ true์ผ ๊ฒฝ์šฐ, ํƒ€๊ฒŸ์„ ๊ธฐ์ค€์œผ๋กœ ์ฃผ์œ„์˜ ํšŒ์ „ ์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 2.0 ์ด๊ณ , 60fps์—์„œ ํšŒ์ „ ๋‹น 30์ดˆ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
+			<br>๋งŒ์•ฝ [page:.autoRotate]๋ฅผ ํ™œ์„ฑํ•  ๊ฒฝ์šฐ, ์—๋‹ˆ๋ฉ”์ด์…˜ ๋ฃจํ”„์—์„œ [page:.update]๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>
+			[property:Float dampingFactor]</h3>
+		<p> [page:.enableDamping]์ด true์ผ ๊ฒฝ์šฐ ์—๋‹ˆ๋ฉ”์ด์…˜ ๋ฃจํ”„์—์„œ [page:.update]()๋ฅผ ํ˜ธ์ถœํ•ด์•ผ๋งŒ ๊ฐ์‡  ๊ด€์„ฑ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:HTMLDOMElement domElement]</h3>
+		<p>
+			๋งˆ์šฐ์Šค / ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” HTMLDOMElement์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒ์„ฑ์ž์— ์˜ํ•ด ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค; ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์„ค์ •๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ƒˆ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean enabled]</h3>
+		<p>
+			*false*๋กœ ์„ค์ •ํ•  ๊ฒฝ์šฐ, ์ปจํŠธ๋กค์€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ์‘๋‹ตํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *true* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean enableDamping]</h3>
+		<p>
+			์ปจํŠธ๋กค์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๋Œํ•‘ (๊ด€์„ฑ)์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.<br>
+			๋งŒ์•ฝ enableDamping์„ ํ™œ์„ฑํ™” ํ•  ๊ฒฝ์šฐ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฃจํ”„์—์„œ [page:.update]๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean enableKeys]</h3>
+		<p>
+			ํ‚ค๋ณด๋“œ ์ปจํŠธ๋กค์˜ ํ™œ์„ฑํ™” ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *true* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean enablePan]</h3>
+		<p>
+			์นด๋งค๋ผ ํŒจ๋‹์˜ ํ™œ์„ฑํ™” ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *true* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean enableRotate]</h3>
+		<p>
+			์นด๋ฉ”๋ผ์˜ ์ˆ˜์ง ๋ฐ ์ˆ˜ํ‰ ํšŒ์ „์˜ ํ™œ์„ฑํ™” ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *true* ์ž…๋‹ˆ๋‹ค.<br>
+			[page:.minPolarAngle polar angle] ๋˜๋Š” page:.minAzimuthAngle azimuth angle]์˜ ์ตœ์†Œ ๋ฐ ์ตœ๋Œ€๋ฅผ ๋™์ผํ•œ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ๋‹จ์ผ ์ถ•์„ ๋น„ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
+			๊ทธ๋Ÿฌ๋ฉด ์ˆ˜์ง ๋˜๋Š” ์ˆ˜ํ‰ ํšŒ์ „์ด ํ•ด๋‹น ๊ฐ’์œผ๋กœ ๊ณ ์ •๋ฉ๋‹ˆ๋‹ค.
+			
+		</p>
+
+		<h3>[property:Boolean enableZoom]</h3>
+		<p>
+			์นด๋ฉ”๋ผ ํ™•๋Œ€ / ์ถ•์†Œ (dollying)๋ฅผ ํ™œ์„ฑํ™” ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float keyPanSpeed]</h3>
+		<p>
+			ํ‚ค๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์นด๋ฉ”๋ผ๋ฅผ ํŒจ๋‹ํ•˜๋Š” ์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ํ‚ค ๋ˆ„๋ฆ„ ๋‹น 7.0 ํ”ฝ์…€์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Object keys]</h3>
+		<p>
+			ํ•ด๋‹น ๊ฐ์ฒด๋Š” ์นด๋ฉ”๋ผ ํŒจ๋‹์„ ์ œ์–ดํ•˜๊ธฐ์œ„ํ•œ ํ‚ค ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 4 ๊ฐœ์˜ ํ™”์‚ดํ‘œ ํ‚ค์ž…๋‹ˆ๋‹ค.
+			<code>
+controls.keys = {
+	LEFT: 37, // ์™ผ์ชฝ ํ™”์‚ดํ‘œ
+	UP: 38, // ์œ„์ชฝ ํ™”์‚ดํ‘œ
+	RIGHT: 39, // ์˜ค๋ฅธ์ชฝ ํ™”์‚ดํ‘œ
+	BOTTOM: 40 // ์•„๋ž˜์ชฝ ํ™”์‚ดํ‘œ
+}
+			 </code> 
+			 ์ „์ฒด ํ‚ค์ฝ”๋“œ ๋ชฉ๋ก์€ [link:https://developer.mozilla.org/ko/docs/Web/API/KeyboardEvent/keyCode this page] ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
+		</p>
+
+		<h3>[property:Float maxAzimuthAngle]</h3>
+		<p>
+			์ˆ˜ํ‰์œผ๋กœ ๊ถค๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋Œ ์ˆ˜ ์žˆ๋Š”์ง€ ์ƒํ•œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [ min, max ] 	์˜ ๊ฐ„๊ฒฉ์€ ( max - min < 2 PI ) ์™€ ํ•จ๊ป˜ ( max - min < 2 PI ) ์˜ ํ•˜์œ„ ๊ฐ„๊ฒฉ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ๋ฌดํ•œ๋Œ€์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float maxDistance]</h3>
+		<p>
+			๋‹ฌ๋ฆฌ ์•„์›ƒ(dolly out)ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ฑฐ๋ฆฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ([page:PerspectiveCamera] only). ๊ธฐ๋ณธ๊ฐ’์€ ๋ฌดํ•œ๋Œ€์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float maxPolarAngle]</h3>
+		<p>
+			์ˆ˜์ง์œผ๋กœ ๊ถค๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋Œ ์ˆ˜ ์žˆ๋Š”์ง€ ์ƒํ•œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 0 ๋ถ€ํ„ฐ Math.PI radians ๊นŒ์ง€ ๋ฒ”์œ„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ Math.PI ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float maxZoom]</h3>
+		<p>
+			์ถ•์†Œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.( [page:OrthographicCamera] only ). ๊ธฐ๋ณธ๊ฐ’์€ ๋ฌดํ•œ๋Œ€์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float minAzimuthAngle]</h3>
+		<p>
+			์ˆ˜ํ‰์œผ๋กœ ๊ถค๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋Œ ์ˆ˜ ์žˆ๋Š”์ง€ ํ•˜ํ•œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [ min, max ] ์˜ ๊ฐ„๊ฒฉ์€ ( max - min < 2 PI ) ์™€ ํ•จ๊ป˜ ( max - min < 2 PI ) ์˜ ํ•˜์œ„ ๊ฐ„๊ฒฉ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ๋ฌดํ•œ๋Œ€์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float minDistance]</h3>
+		<p>
+			๋‹ฌ๋ฆฌ ์ธ(dolly in)ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๊ฑฐ๋ฆฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ([page:PerspectiveCamera] only). ๊ธฐ๋ณธ๊ฐ’์€ 0 ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float minPolarAngle]</h3>
+		<p>
+			์ˆ˜์ง์œผ๋กœ ๊ถค๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋Œ ์ˆ˜ ์žˆ๋Š”์ง€ ํ•˜ํ•œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 0 ๋ถ€ํ„ฐ Math.PI radians ๊นŒ์ง€ ๋ฒ”์œ„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 0 ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float minZoom]</h3>
+		<p>
+			ํ™•๋Œ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ( [page:OrthographicCamera] only ). ๊ธฐ๋ณธ๊ฐ’์€ 0 ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>
+			[property:Object mouseButtons]</h3>
+		<p>
+			ํ•ด๋‹น ๊ฐ์ฒด๋Š” ์ปจํŠธ๋กค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋งˆ์šฐ์Šค ๋™์ž‘์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
+			<code>
+controls.mouseButtons = {
+	LEFT: THREE.MOUSE.ROTATE,
+	MIDDLE: THREE.MOUSE.DOLLY,
+	RIGHT: THREE.MOUSE.PAN
+}
+			</code>
+		</p>
+
+		<h3>[property:Camera object]</h3>
+		<p>
+			์ œ์–ดํ•  ์นด๋ฉ”๋ผ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float panSpeed]</h3>
+		<p>
+			ํŒจ๋‹ ์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Vector3 position0]</h3>
+		<p>
+			ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๋Š” [method:saveState] ๋ฐ [method:reset] ๋ฉ”์„œ๋“œ์—์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float rotateSpeed]</h3>
+		<p>
+			ํšŒ์ „ ์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean screenSpacePanning]</h3>
+		<p>
+		ํŒจ๋‹ํ•  ๋–„, ์นด๋ฉ”๋ผ ์œ„์น˜๊ฐ€ ๋ณ€ํ™˜๋˜๋Š” ๋ฐฉ์‹๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ true์ผ ๊ฒฝ์šฐ, ์นด๋ฉ”๋ผ๊ฐ€ ํ™”๋ฉด ๊ณต๊ฐ„์—์„œ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
+		Otherwise, the camera pans in the plane orthogonal to the camera's up direction.
+		OrbitControls์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ true ์ด๊ณ , MapControls์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ false ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Vector3 target0]</h3>
+		<p>
+			[method:saveState] ๋ฐ [method:rest] ๋ฉ”์„œ๋“œ์—์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Vector3 target]</h3>
+		<p>
+			์ปจํŠธ๋กค์˜ ์ค‘์š” ํฌ์ธํŠธ๋Š”, [page:.object] ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํšŒ์ „ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํŠธ๋กค์˜ ์ค‘์š” ํฌ์ธํŠธ๋Š” ์–ธ์ œ๋“ ์ง€ ์ˆ˜๋™์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Object touches]</h3>
+		<p>
+			ํ•ด๋‹น ๊ฐ์ฒด๋Š” ์ปจํŠธ๋กค์— ์‚ฌ์šฉ๋˜๋Š” ํ„ฐ์น˜ ๋™์ž‘์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
+			<code>
+controls.touches = {
+	ONE: THREE.TOUCH.ROTATE,
+	TWO: THREE.TOUCH.DOLLY_PAN
+}
+			</code>
+		</p>
+
+		<h3>[property:Float zoom0]</h3>
+		<p>
+			[method:saveState] ๋ฐ [method:reset] ๋ฉ”์„œ๋“œ์—์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float zoomSpeed]</h3>
+		<p>
+			์คŒ์ž‰(Zooming)๊ณผ ๋‹ฌ๋ง(Dollying)์˜ ์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 1 ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+
+
+		<h2>๋ฉ”์„œ๋“œ</h2>
+
+		<h3>[method:null dispose] ()</h3>
+		<p>
+			๋ชจ๋“  ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
+			Remove all the event listeners.
+		</p>
+
+		<h3>[method:radians getAzimuthalAngle] ()</h3>
+		<p>
+			๋ผ๋””์•ˆ ๋‹จ์œ„๋กœ ํ˜„์žฌ ์ˆ˜ํ‰ ํšŒ์ „๊ฐ’์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:radians getPolarAngle] ()</h3>
+		<p>
+			๋ผ๋””์•ˆ ๋‹จ์œ„๋กœ ํ˜„์žฌ ์ˆ˜์ง ํšŒ์ „๊ฐ’์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null reset] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ํ˜ธ์ถœ๋œ [page:.saveState] ์‹œ์ ์œผ๋กœ ๋Œ๋ฆฌ๊ฑฐ๋‚˜, ์ดˆ๊ธฐ์ƒํƒœ๋กœ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null saveState] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— [page:.rest]์„ ์ด์šฉํ•˜์—ฌ ํ˜„์žฌ ์ƒํƒœ๋กœ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Boolean update] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ์นด๋ฉ”๋ผ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜, [page:.autoRotate] ๋˜๋Š” [page:.enableDamping]์„ ์„ค์ •ํ•  ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ ๋ฃจํ”„์—์„œ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/controls/OrbitControls.js examples/jsm/controls/OrbitControls.js]
+		</p>
+	</body>
+</html>

+ 158 - 0
docs/examples/ko/controls/PointerLockControls.html

@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:EventDispatcher] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+		ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๊ตฌํ˜„์€ [link:https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API Pointer Lock API] ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. [name] ์€ 1 ์ธ์นญ 3D ๊ฒŒ์ž„์„ ์œ„ํ•œ ์™„๋ฒฝํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>Code Example</h2>
+
+		<code>
+		const controls = new PointerLockControls( camera, document.body );
+
+		// UI๋ฅผ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ์ˆจ๊ธฐ๊ธฐ ์œ„ํ•ด ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ์‹œ: ๊ฒŒ์ž„ ๋ฉ”๋‰ด)
+
+		controls.addEventListener( 'lock', function () {
+
+			menu.style.display = 'none';
+
+		} );
+
+		controls.addEventListener( 'unlock', function () {
+
+			menu.style.display = 'block';
+
+		} );
+		</code>
+
+		<h2>์˜ˆ์‹œ</h2>
+
+		<p>[example:misc_controls_pointerlock misc / controls / pointerlock ]</p>
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+		<h3>[name]( [param:Camera camera], [param:HTMLDOMElement domElement] )</h3>
+		<p>
+			<p>
+			[page:Camera camera]: ๋ Œ๋”๋ง ๋œ ์žฅ๋ฉด์˜ ์นด๋ฉ”๋ผ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+			[page:HTMLDOMElement domElement]: ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์‚ฌ์šฉ๋˜๋Š” HTML ์—˜๋ฆฌ๋จผํŠธ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				์ƒˆ๋กœ์šด [name] ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h2>์ด๋ฒคํŠธ</h2>
+
+		<h3>change</h3>
+		<p>
+			์‚ฌ์šฉ์ž ๋งˆ์šฐ์Šค๊ฐ€ ์›€์ง์ผ ๋–„ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>lock</h3>
+		<p>
+			ํฌ์ธํ„ฐ์˜ ์ž ๊ธˆ ์ƒํƒœ๊ฐ€ "์ž ๊น€" ์ผ ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค (in other words: the mouse is captured).
+		</p>
+
+		<h3>unlock</h3>
+		<p>
+			ํฌ์ธํ„ฐ์˜ ์ž ๊ธˆ ์ƒํƒœ๊ฐ€ "์ž ๊ธˆ ํ•ด์ œ" ์ผ ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. (in other words: the mouse is not captured anymore)
+		</p>
+
+		<h2>ํŠน์„ฑ</h2>
+
+		<h3>[property:HTMLDOMElement domElement]</h3>
+		<p>
+			๋งˆ์šฐ์Šค / ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” HTMLDOMElement์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒ์„ฑ์ž์— ์˜ํ•ด ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค; 
+			์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์„ค์ •๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ƒˆ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+
+		<h3>[property:Boolean isLocked]</h3>
+		<p>
+			์ปจํŠธ๋กค์˜ ์ž ๊น€ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float maxPolarAngle]</h3>
+		<p>
+			์นด๋ฉ”๋ผ ํ”ผ์น˜(pitch)์˜ ์ƒํ•œ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 0 ๋ถ€ํ„ฐ Math.PI ๋ผ๋””์•ˆ๊นŒ์ง€ ๋ฒ”์œ„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ Math.PI ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Float minPolarAngle]</h3>
+		<p>
+			์นด๋ฉ”๋ผ ํ”ผ์น˜(pitch)์˜ ํ•˜ํ•œ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 0 ๋ถ€ํ„ฐ Math.PI ๋ผ๋””์•ˆ๊นŒ์ง€ ๋ฒ”์œ„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 0 ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>๋ฉ”์†Œ๋“œ</h2>
+		<p>์ผ๋ฐ˜์ ์ธ ๋ฉ”์†Œ๋“œ๋Š” [page:EventDispatcher] ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.</p>
+		
+
+		<h3>[method:null connect] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์˜ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.			
+		</p>
+
+		<h3>[method:null disconnect] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์˜ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:Vector3 getDirection] ( [param:Vector3 target] )</h3>
+		<p>
+			<p>
+				[page:Vector3 target]: ํƒ€๊ฒŸ ๋ฒกํ„ฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				์นด๋ฉ”๋ผ๊ฐ€ ๋ณด๊ณ ์žˆ๋Š” ๋ฐฉํ–ฅ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h3>[method:null lock] ()</h3>
+		<p>
+			ํฌ์ธํ„ฐ ์ž ๊ธˆ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null moveForward] ( [param:Number distance] )</h3>
+		<p>
+			<p>
+				[page:Number distance]: ์•ž์œผ๋กœ ์ด๋™ํ•  ๊ฑฐ๋ฆฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				์นด๋ฉ”๋ผ๋ฅผ xz-ํ‰๋ฉด์— ํ‰ํ–‰ํ•˜๊ฒŒ ์•ž์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. camera.up์„ y-up์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h3>[method:null moveRight] ( [param:Number distance] )</h3>
+		<p>
+			<p>
+				[page:Number distance]: ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•  ๊ฑฐ๋ฆฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				์นด๋ฉ”๋ผ๋ฅผ xz ํ‰๋ฉด์— ํ‰ํ–‰ํ•˜๊ฒŒ ์˜†์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h3>[method:null unlock] ()</h3>
+		<p>
+			ํฌ์ธํ„ฐ ์ž ๊ธˆ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/controls/PointerLockControls.js examples/jsm/controls/PointerLockControls.js]
+		</p>
+	</body>
+</html>

+ 208 - 0
docs/examples/ko/controls/TrackballControls.html

@@ -0,0 +1,208 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:EventDispatcher] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			<p>
+				[name] ๋Š” [page:OrbitControls] ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์นด๋ฉ”๋ผ์˜ ์ผ์ •ํ•œ [page:Object3D.up up] vector ๊ฐ’์„ ์œ ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+				์ด ๋ง์ธ์ฆ‰์Šจ, ์นด๋ฉ”๋ผ๊ฐ€ ์œ„์ชฝ ๋ฐฉํ–ฅ์ด๋‚˜ ์•„๋Ÿ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•  ๊ฒฝ์šฐ, "์˜ค๋ฅธ์ชฝ์„ ์œ„๋กœ" ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋’ค์ง‘์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h2>์˜ˆ์‹œ</h2>
+
+		<p>[example:misc_controls_trackball misc / controls / trackball ]</p>
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+		<h3>[name]( [param:Camera camera], [param:HTMLDOMElement domElement] )</h3>
+		<p>
+			<p>
+				[page:Camera camera]: ๋ Œ๋”๋ง ๋œ ์žฅ๋ฉด์˜ ์นด๋ฉ”๋ผ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				[page:HTMLDOMElement domElement]: ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์‚ฌ์šฉ๋˜๋Š” HTML ์—˜๋ฆฌ๋จผํŠธ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				์ƒˆ๋กœ์šด [name] ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h2>์ด๋ฒคํŠธ</h2>
+
+		<h3>change</h3>
+		<p>
+			์ปจํŠธ๋กค์— ์˜ํ•ด ์นด๋ฉ”๋ผ๊ฐ€ ๋ณ€ํ™˜๋  ๊ฒฝ์šฐ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>start</h3>
+		<p>
+			์ฒ˜์Œ์œผ๋กœ ์ƒํ˜ธ ์ž‘์šฉ์ด ์‹คํ–‰๋˜๋ฉด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. (e.g. ํ„ฐ์น˜ํŒจ๋“œ)
+		</p>
+
+		<h3>end</h3>
+		<p>
+			์ƒํ˜ธ ์ž‘์šฉ์ด ์™„๋ฃŒ๋˜๋ฉด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>ํŠน์„ฑ</h2>
+
+		<h3>[property:HTMLDOMElement domElement]</h3>
+		<p>
+			๋งˆ์šฐ์Šค / ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” HTMLDOMElement์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒ์„ฑ์ž์— ์˜ํ•ด ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค; ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์„ค์ •๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ƒˆ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number dynamicDampingFactor]</h3>
+		<p>
+			๋Œํ•‘์˜ ๊ฐ•๋„๋ฅผ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค. [page:.staticMoving staticMoving] ์ด * false * ๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ์—๋งŒ ๊ณ ๋ ค๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *0.2* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean enabled]</h3>
+		<p>
+			์ปจํŠธ๋กค์„ ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Array keys]</h3>
+		<p>
+			์ด ๋ฐฐ์—ด์€ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ œ์–ดํ•˜๊ธฐ์œ„ํ•œ ํ‚ค ์ฝ”๋“œ๋ฅผ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค.
+			<ul>
+				<li>์ฒ˜์Œ ์ •์˜ ๋œ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ชจ๋“  ๋งˆ์šฐ์Šค ์ƒํ˜ธ ์ž‘์šฉ (์™ผ์ชฝ, ๊ฐ€์šด๋ฐ, ์˜ค๋ฅธ์ชฝ)์ด ๊ถค๋„๋ฅผ ํšŒ์ „ํ•ฉ๋‹ˆ๋‹ค.</li>
+				<li>๋‘ ๋ฒˆ์งธ๋กœ ์ •์˜ ๋œ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ชจ๋“  ๋งˆ์šฐ์Šค ์ƒํ˜ธ ์ž‘์šฉ (์™ผ์ชฝ, ๊ฐ€์šด๋ฐ, ์˜ค๋ฅธ์ชฝ)์ด ํ™•๋Œ€ / ์ถ•์†Œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.</li>
+				<li>์„ธ ๋ฒˆ์งธ๋กœ ์ •์˜ ๋œ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ชจ๋“  ๋งˆ์šฐ์Šค ์ƒํ˜ธ ์ž‘์šฉ (์™ผ์ชฝ, ๊ฐ€์šด๋ฐ, ์˜ค๋ฅธ์ชฝ)์ด ํŒจ๋‹์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.</li>
+			</ul>
+			๊ธฐ๋ณธ๊ฐ’์€ A, S, D๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” * 65, 83, 68 *์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number maxDistance]</h3>
+		<p>
+			์ถ•์†Œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *๋ฌดํ•œ๋Œ€* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number minDistance]</h3>
+		<p>
+			ํ™•๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *0* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>
+			[property:Object mouseButtons]</h3>
+		<p>
+			ํ•ด๋‹น ๊ฐ์ฒด๋Š” ์ปจํŠธ๋กค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋งˆ์šฐ์Šค ๋™์ž‘์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
+			<ul>
+				<li>.LEFT ๋Š” *THREE.MOUSE>ROTATE* ์— ๋Œ€์ž…๋ฉ๋‹ˆ๋‹ค.</li>
+				<li>.MIDDLE ์€ *THREE.MOUSE.ZOOM* ์— ๋Œ€์ž…๋ฉ๋‹ˆ๋‹ค.</li>
+				<li>.RIGHT ๋Š” *THREE.MOUSE.PAN* ์— ๋Œ€์ž…๋ฉ๋‹ˆ๋‹ค.</li>
+			</ul>
+		</p>
+
+		<h3>[property:Boolean noPan]</h3>
+		<p>
+			ํŒจ๋‹์˜ ๋น„ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *false* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean noRotate]</h3>
+		<p>
+			ํšŒ์ „์˜ ๋น„ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *false* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean noZoom]</h3>
+		<p>
+			์คŒ์ž‰์˜ ๋น„ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *false* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Camera object]</h3>
+		<p>
+			์ œ์–ดํ•  ์นด๋ฉ”๋ผ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number panSpeed]</h3>
+		<p>
+			ํ™•๋Œ€ ์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *0.3* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number rotateSpeed]</h3>
+		<p>
+			ํšŒ์ „ ์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *1.0* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Object screen]</h3>
+		<p>
+			ํ™”๋ฉด ์†์„ฑ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. [page:.handleResize handleResize]()์„ ํ˜ธ์ถœํ•  ์‹œ ์ž๋™์ ์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
+			<ul>
+				<li>์™ผ์ชฝ: ํ™”๋ฉด์˜ ์™ผ์ชฝ ๊ฒฝ๊ณ„๋ฉด์˜ ์˜คํ”„์…‹์„ ํ”ฝ์…€ ๋‹จ์œ„๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.</li>
+				<li>์ƒ๋‹จ: ํ™”๋ฉด์˜ ์ƒ๋‹จ ๊ฒฝ๊ณ„๋ฉด์˜ ์˜คํ”„์…‹์„ ํ”ฝ์…€ ๋‹จ์œ„๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.</li>
+				<li>๋„“์ด: ํ™”๋ฉด์˜ ๋„“์ด๋ฅผ ํ”ฝ์…€ ๋‹จ์œ„๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.</li>
+				<li>๋†’์ด: ํ™”๋ฉด์˜ ๋†’์ด๋ฅผ ํ”ฝ์…€ ๋‹จ์œ„๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.</li>
+			</ul>
+		</p>
+
+		<h3>[property:Boolean staticMoving]</h3>
+		<p>
+			๋Œํ•‘์˜ ๋น„ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *false* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number zoomSpeed]</h3>
+		<p>
+			์คŒ ์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *1.2* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>๋ฉ”์†Œ๋“œ</h2>
+
+		<h3>[method:null checkDistances] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์ด [minDistance, maxDistance] ๋ฒ”์œ„๋‚ด์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. [page:.update update]() ์— ์˜ํ•ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
+			
+		</p>
+
+		<h3>[method:null dispose] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์ด ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+		</p>
+
+		<h3>[method:null handleResize] ()</h3>
+		<p>
+			์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฐฝ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆ ํ•˜๋ ค๋ฉด ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+		</p>
+
+		<h3>[method:null panCamera] ()</h3>
+		<p>
+			ํŒจ๋‹์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ [page:.update update]() ์„ ํ˜ธ์ถœํ•˜์—ฌ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null reset] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์„ ์ดˆ๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null rotateCamera] ()</h3>
+		<p>
+			์นด๋ฉ”๋ผ์˜ ํšŒ์ „์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ [page:.update update]() ์„ ํ˜ธ์ถœํ•˜์—ฌ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null update] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต์€ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฃจํ”„์—์„œ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null zoomCamera] ()</h3>
+		<p>
+			์คŒ์ž‰์ด ํ•„์š”ํ•ญ ๊ฒฝ์šฐ [page:.update update]() ์„ ํ˜ธ์ถœํ•˜์—ฌ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/controls/TrackballControls.js examples/jsm/controls/TrackballControls.js]
+		</p>
+	</body>
+</html>

+ 223 - 0
docs/examples/ko/controls/TransformControls.html

@@ -0,0 +1,223 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Object3D] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			ํ•ด๋‹น ํด๋ž˜์Šค๋Š” DCC ํˆด์ธ ๋ธ”๋ Œ๋”์˜ ์ƒํ˜ธ ์ž‘์šฉ ๋ชจ๋ธ๊ณผ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ 3D ๊ณต๊ฐ„์—์„œ ๊ฐ์ฒด๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+			๋‹ค๋ฅธ ์ปจํŠธ๋กค๊ณผ ๋‹ฌ๋ฆฌ, ํ•ด๋‹น ๊ธฐ๋Šฅ์€ ์นด๋ฉ”๋ผ์˜ ์žฅ๋ฉด ๋ณ€ํ™˜์„ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.<br /><br />
+
+			[name] ๋Š” ์—ฐ๊ฒฐ๋œ 3D ๊ฐ์ฒด๊ฐ€ ์”ฌ(scene) ๊ทธ๋ž˜ํ”„์˜ ์ผ๋ถ€ ์ž…๋‹ˆ๋‹ค.
+		
+		</p>
+
+		<h2>์˜ˆ์‹œ</h2>
+
+		<p>[example:misc_controls_transform misc / controls / transform ]</p>
+
+		<h2>์ƒ์„ฑ์ž</h2>
+
+		<h3>[name]( [param:Camera camera], [param:HTMLDOMElement domElement] )</h3>
+		<p>
+			<p>
+				[page:Camera camera]: ๋ Œ๋”๋ง ๋œ ์žฅ๋ฉด์˜ ์นด๋ฉ”๋ผ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				[page:HTMLDOMElement domElement]: ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์‚ฌ์šฉ๋˜๋Š” HTML ์—˜๋ฆฌ๋จผํŠธ์ž…๋‹ˆ๋‹ค.
+			<p>
+				์ƒˆ๋กœ์šด [name] ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h2>์ด๋ฒคํŠธ</h2>
+
+		<h3>change</h3>
+		<p>
+			์–ด๋–ค ์œ ํ˜• (๊ฐ์ฒด ๋˜๋Š” ์†์„ฑ ๋ณ€๊ฒฝ) ์˜ ๋ณ€๊ฒฝ์ด ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์†์„ฑ ๋ณ€๊ฒฝ์€ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ„๋„์˜ ์ด๋ฒคํŠธ์ž…๋‹ˆ๋‹ค. 
+			์ด๋ฒคํŠธ์˜ ํƒ€์ž…์€ "propertyname-changed" ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>mouseDown</h3>
+		<p>
+			ํฌ์ธํ„ฐ (๋งˆ์šฐ์Šค / ํ„ฐ์น˜)๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>mouseUp</h3>
+		<p>
+			ํฌ์ธํ„ฐ (๋งˆ์šฐ์Šค / ํ„ฐ์น˜)๊ฐ€ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์œผ๋ฉด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>objectChange</h3>
+		<p>
+			์ œ์–ด ๋œ 3D ๊ฐ์ฒด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์†์„ฑ</h2>
+
+		<p>๊ณตํ†ต ์†์„ฑ์€ [page: Object3D] ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.</p>
+
+		<h3>[property:String axis]</h3>
+		<p>
+			ํ˜„์žฌ ๋ณ€ํ™˜ ์ถ•์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Camera camera]</h3>
+		<p>
+			๋ Œ๋”๋ง ๋œ ์žฅ๋ฉด์˜ ์นด๋ฉ”๋ผ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:HTMLDOMElement domElement]</h3>
+		<p>
+			HTMLDOMElement๋Š” ๋งˆ์šฐ์Šค / ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒ์„ฑ์ž์— ์˜ํ•ด ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค; 
+			์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์„ค์ •๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ƒˆ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์— ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean dragging]</h3>
+		<p>
+			ํ˜„์žฌ ๋“œ๋ž˜๊ทธ๋ฅผ ์ˆ˜ํ–‰ํ• ๊ฑด์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์†์„ฑ์€ ์ฝ๊ธฐ์ „์šฉ ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean enabled]</h3>
+		<p>
+			์ปจํŠธ๋กค์˜ ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:String mode]</h3>
+		<p>
+			ํ˜„์žฌ ๋ณ€ํ™˜ ๋ชจ๋“œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์†์„ฑ์€ "translate", "roate" ๋ฐ "scale" ์˜ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *translate* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Object3D object]</h3>
+		<p>
+			์ œ์–ด ๋  3D ๊ฐ์ฒด๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number rotationSnap]</h3>
+		<p>
+			๊ธฐ๋ณธ์ ์œผ๋กœ, 3D ๊ฐ์ฒด๋Š” ์—ฐ์†์ ์œผ๋กœ ํšŒ์ „ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ์— ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด (๋ผ๋””์•ˆ), 3D ๊ฐ์ฒด๋ฅผ ๊ฐ ๋‹จ๊ณ„๋ณ„๋กœ ํšŒ์ „ ํ•  ๋•Œ๋งˆ๋‹ค ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *null* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean showX]</h3>
+		<p>
+			x์ถ• ํ—ฌํผ์˜ ํ‘œ์‹œ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *true* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean showY]</h3>
+		<p>
+			y์ถ• ํ—ฌํผ์˜ ํ‘œ์‹œ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *true* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Boolean showZ]</h3>
+		<p>
+			z์ถ• ํ—ฌํผ์˜ ํ‘œ์‹œ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *true* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number size]</h3>
+		<p>
+			helper UI์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค (์ถ•/๋ฉด). ๊ธฐ๋ณธ๊ฐ’์€ *1* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:String space]</h3>
+		<p>
+			์ขŒํ‘œ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ ๋˜์–ด์งˆ ๊ณต๊ฐ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์†์„ฑ์€ "world" ๋ฐ "local" ์˜ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *world* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[property:Number translationSnap]</h3>
+		<p>
+			์ผ๋ฐ˜์ ์œผ๋กœ, 3D ๊ฐ์ฒด๋Š” ์—ฐ์†์ ์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ์— ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด (์›”๋“œ ๋‹จ์œ„), 3D ๊ฐ์ฒด๋ฅผ ๊ฐ ๋‹จ๊ณ„๋ณ„๋กœ ๋ณ€ํ™˜ ํ•  ๋•Œ๋งˆ๋‹ค ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ *null* ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>๋ฉ”์†Œ๋“œ</h2>
+
+		<p>์ผ๋ฐ˜์ ์ธ ๋ฉ”์†Œ๋“œ๋Š” [page:Object3D] ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.</p>
+
+		<h3>[method:TransformControls attach] ( [param:Object3D object] )</h3>
+		<p>
+			<p>
+				[page:Object3D object]: ๋ณ€ํ™˜ ๋˜์–ด์ง€๋Š” 3D ๊ฐ์ฒด ์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				๋ณ€ํ™˜ํ•ด์•ผํ•˜๋Š” 3D ๊ฐ์ฒด๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ปจํŠธ๋กค UI๊ฐ€ ํ‘œ์‹œ๋˜๋„๋กํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h3>[method:TransformControls detach] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์—์„œ ํ˜„์žฌ 3D ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  helper UI๋ฅผ ๋ณด์ด์ง€ ์•Š๊ฒŒํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null dispose] ()</h3>
+		<p>
+			์ปจํŠธ๋กค์„ ๋”์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:String getMode] ()</h3>
+		<p>
+			๋ณ€ํ™˜ ๋ชจ๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>[method:null setMode] ( [param:String mode] )</h3>
+		<p>
+			<p>
+				[page:String mode]: ๋ณ€ํ™˜ ๋ชจ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				๋ณ€ํ™˜ ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h3>[method:null setRotationSnap] ( [param:Number rotationSnap] )</h3>
+		<p>
+			<p>
+				[page:Number rotationSnap]: ํšŒ์ „ ์Šค๋ƒ…๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				ํšŒ์ „ ์Šค๋ƒ…๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h3>[method:null setSize] ( [param:Number size] )</h3>
+		<p>
+			<p>
+				[page:Number size]: helper UI์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				helper UI์˜ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h3>[method:null setSpace] ( [param:String space] )</h3>
+		<p>
+			<p>
+				[page:String space]: ์–ด๋–ค ์ขŒํ‘œ ๊ณต๊ฐ„์œผ๋กœ ๋ณ€ํ™˜์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				๋ณ€ํ™˜๋  ์ขŒํ‘œ ๊ณต๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h3>[method:null setTranslationSnap] ( [param:Number translationSnap] )</h3>
+		<p>
+			<p>
+				[page:Number translationSnap]: ๋ณ€ํ™˜ ์Šค๋ƒ…์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				๋ณ€ํ™˜ ์Šค๋ƒ…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/controls/TransformControls.js examples/jsm/controls/TransformControls.js]
+		</p>
+	</body>
+</html>

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

@@ -35,6 +35,7 @@
 			<li>KHR_texture_basisu <i>(experimental)</i></li>
 			<li>KHR_texture_transform<sup>2</sup></li>
 			<li>EXT_texture_webp</li>
+			<li>EXT_meshopt_compression</li>
 			<li>MSFT_texture_dds</li>
 		</ul>
 

+ 1 - 1
docs/examples/zh/math/Lut.html

@@ -138,7 +138,7 @@
 		<h2>ๆบ็ </h2>
 
 		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/math/[path].js examples/jsm/math/[path].js]
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/math/Lut.js examples/jsm/math/Lut.js]
 		</p>
 	</body>
 </html>

+ 1 - 2
docs/examples/zh/math/MeshSurfaceSampler.html

@@ -24,14 +24,13 @@
 		const sampleMesh = new THREE.InstancedMesh( sampleGeometry, sampleMaterial, 100 );
 
 		const _position = new THREE.Vector3();
-		const _normal = new THREE.Vector3();
 		const _matrix = new THREE.Matrix4();
 
 		// Sample randomly from the surface, creating an instance of the sample
 		// geometry at each sample point.
 		for ( let i = 0; i < 100; i ++ ) {
 
-			sampler.sample( _position, _normal );
+			sampler.sample( _position );
 
 			_matrix.makeTranslation( _position.x, _position.y, _position.z );
 

+ 174 - 0
docs/examples/zh/math/OBB.html

@@ -0,0 +1,174 @@
+<!DOCTYPE html>
+<html lang="zh">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<p class="desc">
+			Represents an oriented bounding box (OBB) in 3D space.
+		</p>
+
+		<h2>Examples</h2>
+		<p>
+			[example:webgl_math_obb]
+		</p>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [param:Vector3 center], [param:Vector3 halfSize], [param:Matrix3 rotation] )</h3>
+		<p>
+			[page:Vector3 center] โ€” The center of the [name]. (optional)<br />
+			[page:Vector3 halfSize] โ€” Positive halfwidth extents of the [name] along each axis. (optional)<br />
+			[page:Matrix3 rotation] โ€” The rotation of the [name]. (optional)
+		</p>
+		<p>
+			Creates a new [name].
+		</p>
+
+		<h2>Properties</h2>
+
+		<h3>[property:Vector3 center]</h3>
+		<p>
+			The center of the [name]. Default is *( 0, 0, 0 )*.
+		</p>
+
+		<h3>[property:Vector3 halfSize]</h3>
+		<p>
+			Positive halfwidth extents of the [name] along each axis. Default is *( 0, 0, 0 )*.
+		</p>
+
+		<h3>[property:Matrix3 rotation]</h3>
+		<p>
+			The rotation of the [name]. Default is the identity matrix.
+		</p>
+
+		<h2>Methods</h2>
+
+		<h3>[method:this applyMatrix4]( [param:Matrix4 matrix] )</h3>
+		<p>
+			[page:Matrix4 matrix] โ€” A 4x4 transformation matrix.
+		</p>
+		<p>
+			Applies the given transformation matrix to this [name]. This method can be used to transform the
+			bounding volume with the world matrix of a 3D object in order to keep both entities in sync.
+		</p>
+
+		<h3>[method:Vector3 clampPoint]( [param:Vector3 point], [param:Vector3 clampedPoint] )</h3>
+		<p>
+			[page:Vector3 point] โ€” The point that should be clamped within the bounds of this [name].<br />
+			[page:Matrix3 clampedPoint] โ€” The result will be copied into this vector.
+		</p>
+		<p>
+			Clamps the given point within the bounds of this [name].
+		</p>
+
+		<h3>[method:OBB clone]()</h3>
+		<p>
+			Creates a cloned [name] for this instance.
+		</p>
+
+		<h3>[method:Boolean containsPoint]( [param:Vector3 point] )</h3>
+		<p>
+			[page:Vector3 point] โ€” The point to test.
+		</p>
+		<p>
+			Whether the given point lies within this [name] or not.
+		</p>
+
+		<h3>[method:this copy]( [param:OBB obb] )</h3>
+		<p>
+			[page:OBB obb] โ€” The [name] to copy.
+		</p>
+		<p>
+			Copies the properties of the given [name] to this [name].
+		</p>
+
+		<h3>[method:Boolean equals]( [param:OBB obb] )</h3>
+		<p>
+			[page:OBB obb] โ€” The [name] to test.
+		</p>
+		<p>
+			Whether the given [name] is equal to this [name] or not.
+		</p>
+
+		<h3>[method:this fromBox3]( [param:Box3 box3] )</h3>
+		<p>
+			[page:Box3 box3] โ€” An AABB.
+		</p>
+		<p>
+			Defines an [name] based on the given AABB.
+		</p>
+
+		<h3>[method:Vector3 getSize]( [param:Vector3 size] )</h3>
+		<p>
+			[page:Vector3 size] โ€” The result will be copied into this vector.
+		</p>
+		<p>
+			Returns the size of this [name] into the given vector.
+		</p>
+
+		<h3>[method:Boolean intersectsBox3]( [param:Box3 box3] )</h3>
+		<p>
+			[page:Box3 box3] โ€” The AABB to test.
+		</p>
+		<p>
+			Whether the given AABB intersects this [name] or not.
+		</p>
+
+		<h3>[method:Boolean intersectsSphere]( [param:Sphere sphere] )</h3>
+		<p>
+			[page:Sphere sphere] โ€” The bounding sphere to test.
+		</p>
+		<p>
+			Whether the given bounding sphere intersects this [name] or not.
+		</p>
+
+		<h3>[method:Boolean intersectsOBB]( [param:OBB obb], [param:Number epsilon] )</h3>
+		<p>
+			[page:OBB obb] โ€” The OBB to test.<br />
+			[page:Number epsilon] โ€” An optional numeric value to counteract arithmetic errors. Default is *Number.EPSILON*.
+		</p>
+		<p>
+			Whether the given [name] intersects this [name] or not.
+		</p>
+
+		<h3>[method:Boolean intersectsRay]( [param:Ray ray] )</h3>
+		<p>
+			[page:Ray ray] โ€” The ray to test.
+		</p>
+		<p>
+			Whether the given ray intersects this [name] or not.
+		</p>
+
+		<h3>[method:Vector3 intersectRay]( [param:Ray ray], [param:Vector3 intersectionPoint] )</h3>
+		<p>
+			[page:Ray ray] โ€” The ray to test.<br />
+			[page:Vector3 intersectionPoint] โ€” The result will be copied into this vector.
+		</p>
+		<p>
+			Performs a Ray/OBB intersection test and stores the intersection point to the given 3D vector.
+			If no intersection is detected, *null* is returned.
+		</p>
+
+		<h3>[method:this set]( [param:Vector3 center], [param:Vector3 halfSize], [param:Matrix3 rotation] )</h3>
+		<p>
+			[page:Vector3 center] โ€” The center of the [name].<br />
+			[page:Vector3 halfSize] โ€” Positive halfwidth extents of the [name] along each axis.<br />
+			[page:Matrix3 rotation] โ€” The rotation of the [name].
+		</p>
+		<p>
+			Defines the [name] for the given values.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+		[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/math/OBB.js examples/jsm/math/OBB.js]
+		</p>
+	</body>
+</html>

+ 8 - 0
docs/examples/zh/postprocessing/EffectComposer.html

@@ -107,6 +107,14 @@
 			็”ฑ[name]ๆ‰€ไฝฟ็”จ๏ผŒๆฅๅ†ณๅฎšๅ“ชไธ€ไธช่ฟ‡็จ‹ๅบ”ๅฝ“่ขซๆธฒๆŸ“ๅˆฐๅฑๅน•ไธŠใ€‚
 		</p>
 
+		<h3>[method:void removePass]( [param:Pass pass] )</h3>
+
+		<p>
+			pass -- The pass to remove from the pass chain.<br /><br />
+
+			Removes the given pass from the pass chain.
+		</p>
+
 		<h3>[method:void render]( [param:Float deltaTime] )</h3>
 
 		<p>

+ 2 - 1
docs/index.html

@@ -46,6 +46,7 @@
 					<select id="language">
 						<option value="en">en</option>
 						<option value="ar">ar</option>
+						<option value="ko">ํ•œ๊ตญ์–ด</option>
 						<option value="zh">ไธญๆ–‡</option>
 					</select>
 				</div>
@@ -86,7 +87,7 @@
 
 			if ( /^(api|manual|examples)/.test( hash ) ) {
 
-				const hashLanguage = /^(api|manual|examples)\/(en|ar|zh)\//.exec( hash );
+				const hashLanguage = /^(api|manual|examples)\/(en|ar|ko|zh)\//.exec( hash );
 
 				if ( hashLanguage === null ) {
 

+ 87 - 2
docs/list.json

@@ -422,7 +422,8 @@
 
 			"Math": {
 				"LookupTable": "examples/en/math/Lut",
-				"MeshSurfaceSampler": "examples/en/math/MeshSurfaceSampler"
+				"MeshSurfaceSampler": "examples/en/math/MeshSurfaceSampler",
+				"OBB": "examples/en/math/OBB"
 			},
 
 			"ConvexHull": {
@@ -957,7 +958,8 @@
 
 			"ๆ•ฐๅญฆๅบ“": {
 				"LookupTable": "examples/zh/math/Lut",
-				"MeshSurfaceSampler": "examples/zh/math/MeshSurfaceSampler"
+				"MeshSurfaceSampler": "examples/zh/math/MeshSurfaceSampler",
+				"OBB": "examples/en/math/OBB"
 			},
 
 			"QuickHull": {
@@ -996,6 +998,89 @@
 
 		}
 
+	},
+
+	"ko": {
+
+		"๋งค๋‰ด์–ผ": {
+
+			"์‹œ์ž‘ํ•˜๊ธฐ": {
+				"์žฅ๋ฉด ๋งŒ๋“ค๊ธฐ": "manual/ko/introduction/Creating-a-scene",
+				"์„ค์น˜": "manual/ko/introduction/Installation",
+				"๋ธŒ๋ผ์šฐ์ € ์ง€์›": "manual/ko/introduction/Browser-support",
+				"WebGL ํ˜ธํ™˜์„ฑ ๊ฒ€์‚ฌ": "manual/ko/introduction/WebGL-compatibility-check",
+				"๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๊ตฌ๋™ ๋ฐฉ๋ฒ•": "manual/ko/introduction/How-to-run-things-locally",
+				"Typescript ์„ค์ •": "manual/ko/introduction/Typescript-setup",
+				"์„  ๊ทธ๋ฆฌ๊ธฐ": "manual/ko/introduction/Drawing-lines",
+				"ํ…์ŠคํŠธ ๋งŒ๋“ค๊ธฐ": "manual/ko/introduction/Creating-text",
+				"3D ๋ชจ๋ธ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ": "manual/ko/introduction/Loading-3D-models",
+				"FAQ": "manual/ko/introduction/FAQ",
+				"์ฐธ๊ณ  ๋งํฌ": "manual/ko/introduction/Useful-links"
+			},
+
+			"์‹ฌํ™” ๊ณผ์ •": {
+				"์˜ค๋ธŒ์ ํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•": "manual/ko/introduction/How-to-update-things",
+				"์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•": "manual/ko/introduction/How-to-dispose-of-objects",
+				"VR ์ปจํ…์ธ ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•": "manual/ko/introduction/How-to-create-VR-content",
+				"ํ›„์ฒ˜๋ฆฌ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•": "manual/ko/introduction/How-to-use-post-processing",
+				"ํ–‰๋ ฌ ๋ณ€ํ™˜": "manual/ko/introduction/Matrix-transformations",
+				"์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ": "manual/ko/introduction/Animation-system"
+			},
+
+			"๋นŒ๋“œ ๋„๊ตฌ": {
+				"NPM ํ…Œ์ŠคํŠธ": "manual/ko/buildTools/Testing-with-NPM"
+
+			}
+
+		},
+
+		"๋ ˆํผ๋Ÿฐ์Šค": {
+
+			"์• ๋‹ˆ๋ฉ”์ด์…˜": {
+				"AnimationAction": "api/ko/animation/AnimationAction",
+				"AnimationAction": "api/ko/animation/AnimationAction",
+				"AnimationClip": "api/ko/animation/AnimationClip",
+				"AnimationMixer": "api/ko/animation/AnimationMixer",
+				"AnimationObjectGroup": "api/ko/animation/AnimationObjectGroup",
+				"AnimationUtils": "api/ko/animation/AnimationUtils",
+				"KeyframeTrack": "api/ko/animation/KeyframeTrack",
+				"PropertyBinding": "api/ko/animation/PropertyBinding",
+				"PropertyMixer": "api/ko/animation/PropertyMixer"
+			},
+
+			"์• ๋‹ˆ๋ฉ”์ด์…˜ / ํŠธ๋ž™": {
+				"BooleanKeyframeTrack": "api/ko/animation/tracks/BooleanKeyframeTrack",
+				"ColorKeyframeTrack": "api/ko/animation/tracks/ColorKeyframeTrack",
+				"NumberKeyframeTrack": "api/ko/animation/tracks/NumberKeyframeTrack",
+				"QuaternionKeyframeTrack": "api/ko/animation/tracks/QuaternionKeyframeTrack",
+				"StringKeyframeTrack": "api/ko/animation/tracks/StringKeyframeTrack",
+				"VectorKeyframeTrack": "api/ko/animation/tracks/VectorKeyframeTrack"
+			},
+
+			"์˜ค๋””์˜ค": {
+				"Audio": "api/ko/audio/Audio",
+				"AudioAnalyser": "api/ko/audio/AudioAnalyser",
+				"AudioContext": "api/ko/audio/AudioContext",
+				"AudioListener": "api/ko/audio/AudioListener",
+				"PositionalAudio": "api/ko/audio/PositionalAudio"
+			}
+		},
+
+		"์˜ˆ์ œ": {
+
+			"์ปจํŠธ๋กค": {
+				"DeviceOrientationControls": "examples/ko/controls/DeviceOrientationControls",
+				"DragControls": "examples/ko/controls/DragControls",
+				"FirstPersonControls": "examples/ko/controls/FirstPersonControls",
+				"FlyControls": "examples/ko/controls/FlyControls",
+				"OrbitControls": "examples/ko/controls/OrbitControls",
+				"PointerLockControls": "examples/ko/controls/PointerLockControls",
+				"TrackballControls": "examples/ko/controls/TrackballControls",
+				"TransformControls": "examples/ko/controls/TransformControls"
+			}
+
+		}
+
 	}
 
 }

+ 2 - 4
docs/manual/ar/introduction/Installation.html

@@ -42,14 +42,12 @@
 		</p>
 
 		<code>
-		///////////////////////////////////////////////////////
 		// Option 1: Import the entire three.js core library.
 		import * as THREE from 'three';
 
 		const scene = new THREE.Scene();
 
 
-		///////////////////////////////////////////////////////
 		// Option 2: Import just the parts you need.
 		import { Scene } from 'three';
 
@@ -91,7 +89,7 @@
 
 		  // Find the latest version by visiting https://unpkg.com/three. The URL will
 		  // redirect to the newest stable release.
-		  import * as THREE from 'https://unpkg.com/three@&lt;VERSION>/build/three.module.js';
+		  import * as THREE from 'https://unpkg.com/three/build/three.module.js';
 
 		  const scene = new THREE.Scene();
 
@@ -129,7 +127,7 @@
 
 		  // Find the latest version by visiting https://unpkg.com/three. The URL will
 		  // redirect to the newest stable release.
-		  import { OrbitControls } from 'https://unpkg.com/three@&lt;VERSION>/examples/jsm/controls/OrbitControls.js';
+		  import { OrbitControls } from 'https://unpkg.com/three/examples/jsm/controls/OrbitControls.js';
 
 		  const controls = new OrbitControls();
 

+ 1 - 1
docs/manual/en/introduction/How-to-dispose-of-objects.html

@@ -80,7 +80,7 @@
 
 	<p>
 		Yes. It's possible to evaluate [page:WebGLRenderer.info], a special property of the renderer with a series of statistical information about the graphics board memory
-		and the rendering process. Among other things, it tells you have many textures, geometries and shader programs are internally stored. If you notice performance problems
+		and the rendering process. Among other things, it tells you how many textures, geometries and shader programs are internally stored. If you notice performance problems
 		in your application, it's a good idea to debug this property in order to easily identify a memory leak.
 	</p>
 

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

@@ -24,7 +24,7 @@ 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>However, if you know the object will be static, you can disable this and update the transform matrix manually just when needed.</p>
 
 		<code>
 object.matrixAutoUpdate  = false;

+ 2 - 4
docs/manual/en/introduction/Installation.html

@@ -36,14 +36,12 @@
 		</p>
 
 		<code>
-		///////////////////////////////////////////////////////
 		// Option 1: Import the entire three.js core library.
 		import * as THREE from 'three';
 
 		const scene = new THREE.Scene();
 
 
-		///////////////////////////////////////////////////////
 		// Option 2: Import just the parts you need.
 		import { Scene } from 'three';
 
@@ -73,7 +71,7 @@
 
 		  // Find the latest version by visiting https://unpkg.com/three. The URL will
 		  // redirect to the newest stable release.
-		  import * as THREE from 'https://unpkg.com/three@&lt;VERSION>/build/three.module.js';
+		  import * as THREE from 'https://unpkg.com/three/build/three.module.js';
 
 		  const scene = new THREE.Scene();
 
@@ -111,7 +109,7 @@
 
 		  // Find the latest version by visiting https://unpkg.com/three. The URL will
 		  // redirect to the newest stable release.
-		  import { OrbitControls } from 'https://unpkg.com/three@&lt;VERSION>/examples/jsm/controls/OrbitControls.js';
+		  import { OrbitControls } from 'https://unpkg.com/three/examples/jsm/controls/OrbitControls.js';
 
 		  const controls = new OrbitControls();
 

+ 250 - 0
docs/manual/ko/buildTools/Testing-with-NPM.html

@@ -0,0 +1,250 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8">
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>NPM ํ…Œ์ŠคํŠธ([name])</h1>
+
+		<p class="desc">
+            ์ด ๋ฌธ์„œ์—์„œ๋Š” [link:https://nodejs.org/en/ node.js] ํ™˜๊ฒฝ์—์„œ three.js๋ฅผ ์‚ฌ์šฉํ•ด ์ž๋™ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค. 
+            ํ…Œ์ŠคํŠธ๋Š” ์ปค๋งจ๋“œ ๋ผ์ธ์œผ๋กœ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ [link:https://travis-ci.org/ Travis]๊ฐ™์€ CI ํˆด์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>๊ฐ„๋‹จํ•œ ๋ฒ„์ „</h2>
+
+		<p>
+			node์™€ npm์ด ์นœ์ˆ™ํ•˜๋‹ค๋ฉด,
+			<code>
+				$ npm install three --save-dev
+			</code>
+			๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์—
+		<code>
+			const THREE = require('three');
+		</code>
+			๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>scratch์—์„œ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ์˜ˆ์ œ ๋งŒ๋“ค๊ธฐ</h2>
+		<p>
+			์ด ํˆด๋“ค์— ์ต์ˆ™์น˜ ์•Š๋‹ค๋ฉด, ์•„๋ž˜์˜ ๊ฐ„๋‹จํ•œ ๊ฐ€์ด๋“œ(๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜์œผ๋กœ, ์œˆ๋„์šฐ์—์„œ์˜ ์„ค์น˜ ์ ˆ์ฐจ์™€๋Š” ์กฐ๊ธˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ NPM ์ปค๋งจ๋“œ๋Š” ๊ฐ™์Šต๋‹ˆ๋‹ค)๋ฅผ ๋”ฐ๋ผ์ฃผ์„ธ์š”.
+		</p>
+
+		<h3>๊ธฐ๋ณธ ์„ค์น˜</h3>
+		<div>
+			<ol>
+				<li>
+					[link:https://www.npmjs.org/ npm] ๊ณผ nodejs๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์งง์€ ์„ค์น˜ ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
+					<code>
+$ sudo apt-get install -y npm nodejs-legacy
+# ๊ธฐ๋ณธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ URL์—์„œ SSL ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ˆ˜์ •ํ•ด์ฃผ์„ธ์š”
+$ npm config set registry http://registry.npmjs.org/
+					</code>
+				</li>
+
+				<li>
+					์ƒˆ ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
+					<code>
+						 $ mkdir test-example; cd test-example
+					</code>
+				</li>
+
+				<li>
+					npm์—๊ฒŒ ์ƒˆ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค:
+					<code>
+					 $ npm init
+                    </code>
+                    ์—”ํ„ฐ๋ฅผ ๊ณ„์† ์ณ์„œ ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ๋™์˜ ํ›„ ์ง„ํ–‰ํ•˜์„ธ์š”.
+                    ์ด ์ ˆ์ฐจ๊ฐ€ ๋๋‚˜๋ฉด package.json ํŒŒ์ผ์ด ์ƒ๊ธธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+				</li><br />
+
+				<li>
+					๋‹ค์Œ ์ฝ”๋“œ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ์ž‘ํ•ด ๋ณด์„ธ์š”
+					<code>
+$ npm test
+					</code>
+					์•„๋งˆ ์‹คํŒจ๊ฐ€ ๋œฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+					package.json ํŒŒ์ผ์„ ๋ณด๋ฉด, test ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ๋กœ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋˜์–ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+					<code>
+						"test": "echo \"Error: no test specified\" && exit 1"
+					</code>
+				</li>
+
+			</ol>
+		</div>
+
+		<h2>mocha ์ถ”๊ฐ€ํ•˜๊ธฐ</h2>
+		<div>
+			[link:https://mochajs.org/ mocha]๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+
+			<ol>
+				<li>
+					mocha๋Š” ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
+					<code>
+$ npm install mocha --save-dev
+					</code>
+                    node_modules/์ด ์ƒ์„ฑ๋˜์–ด ์žˆ๊ณ  ํŒŒ์ผ๋“ค์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+                    ๊ทธ๋ฆฌ๊ณ  package.json์˜ ๋‚ด์šฉ์ด ์—…๋ฐ์ดํŠธ ๋˜์—ˆ๋Š”์ง€๋„ ํ™•์ธํ•ด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 
+                    --save-dev๋ฅผ ํ†ตํ•ด devDependencies ์†์„ฑ์— ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์–ด์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+				</li><br />
+
+				<li>
+                    mocha๊ฐ€ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด package.json์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์€ test๋ฅผ ์น˜๋ฉด mocha๋ฅผ ๋™์ž‘ํ•˜๊ณ  ์—ฌ๋Ÿฌ ๋ฆฌํฌํ„ฐ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+                    ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ๋ช…๋ น์–ด๋Š” test/ ์˜ ๋ชจ๋“  ๊ฒƒ์„ ์‹คํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+					(test/ ํด๋”๊ฐ€ ์—†๋‹ค๋ฉด npm ERR!๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค, mkdir test๋กœ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”)
+					<code>
+						"test": "mocha --reporter list"
+					</code>
+				</li>
+
+				<li>
+					test๋ฅผ ๋‹ค์‹œ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.
+					<code>
+						$ npm test
+					</code>
+
+					์•„๋งˆ ์„ฑ๊ณต ๋ฉ”์„ธ์ง€๊ฐ€ ๋œจ๊ณ  0 passing (1ms)์™€ ๋น„์Šทํ•œ ๋ฌธ๊ตฌ๊ฐ€ ๋œฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+				</li>
+
+			</ol>
+		</div>
+
+		<h2>three.js ์ถ”๊ฐ€</h2>
+		<div>
+			<ol>
+				<li>
+					three.js๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
+					<code>
+$ npm install three --save-dev
+					</code>
+					<ul>
+						<li>
+							๋‹ค๋ฅธ three ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ณ 
+							<code>
+								$ npm show three versions
+							</code>
+						  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „์„ ํ™•์ธํ•ด, npm์—๊ฒŒ ํŠน์ • ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
+							<code>
+ $ npm install [email protected] --save
+							</code>
+                            (์ด ์˜ˆ์ œ์—์„œ๋Š” 0.84.0 ๋ฒ„์ „์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.). --save ๋Š” dev ์„ค์ •์ด ์•„๋‹Œ ์ด ํ”„๋กœ์ ํŠธ์˜ ์˜์กด์„ฑ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.
+                            [link:https://www.npmjs.org/doc/json.html ์—ฌ๊ธฐ]์—์„œ ๋” ๋งŽ์€ ๋‚ด์šฉ์„ ํ™•์ธํ•˜์„ธ์š”.
+						</li>
+					</ul>
+				</li>
+
+				<li>
+					Mocha ๋Š” test/์—์„œ test๋ฅผ ์ฐพ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
+					<code>
+					$ mkdir test
+					</code>
+				</li>
+
+				<li>
+                    ์ด์ œ ๋งˆ์ง€๋ง‰์œผ๋กœ JS ํ…Œ์ŠคํŠธ๊ฐ€ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. three.js๊ฐ€ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด ๋ด…์‹œ๋‹ค.
+                    test/verify-three.js ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์•ˆ์— ๋‹ค์Œ ๋‚ด์šฉ์„ ๋„ฃ์–ด์ฃผ์„ธ์š”:
+<code>
+const THREE = require('three');
+const assert = require('assert');
+
+describe('The THREE object', function() {
+  it('should have a defined BasicShadowMap constant', function() {
+    assert.notEqual('undefined', THREE.BasicShadowMap);
+  }),
+
+  it('should be able to construct a Vector3 with default of x=0', function() {
+    const vec3 = new THREE.Vector3();
+    assert.equal(0, vec3.x);
+  })
+})
+</code>
+				</li>
+
+				<li>
+				๋งˆ์ง€๋ง‰์œผ๋กœ $ npm test๋กœ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค. ์œ„์˜ ํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰์‹œํ‚ค๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ด ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+				<code>
+The THREE object should have a defined BasicShadowMap constant: 0ms
+The THREE object should be able to construct a Vector3 with default of x=0: 0ms
+2 passing (8ms)
+				</code>
+				</li>
+			</ol>
+		</div>
+
+		<h2>์ž์‹ ์˜ ์ฝ”๋“œ ์ถ”๊ฐ€ํ•˜๊ธฐ</h2>
+		<div>
+			์„ธ ๊ฐ€์ง€๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
+
+			<ol>
+				<li>
+					์ž์‹ ์˜ ์ฝ”๋“œ์˜ ์˜ˆ์ƒ ๊ฒฐ๊ณผ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค์–ด, test/ ํด๋” ์•ˆ์— ๋‘์„ธ์š”.
+					[link:https://github.com/air/encounter/blob/master/test/Physics-test.js ์—ฌ๊ธฐ]์—์„œ ์ง„์งœ ํ”„๋กœ์ ํŠธ์˜ ์˜ˆ์ œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+				</li>
+
+				<li>
+                    nodeJS์—์„œ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š”, require๋ฅผ ์‚ฌ์šฉํ•ด ๊ธฐ๋Šฅ๋“ค์„ ๋‚ด๋ณด๋‚ด๊ธฐ ํ•˜์„ธ์š”. 
+                    [link:https://github.com/air/encounter/blob/master/js/Physics.js ์—ฌ๊ธฐ]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+				</li>
+
+				<li>
+					ํ…Œ์ŠคํŠธ ํŒŒ์ผ์—์„œ ์ฝ”๋“œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์„ธ์š”. ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์œ„์˜ ์˜ˆ์ œ์—์„œ require('three')๋ฅผ ๋ถˆ๋Ÿฌ์™”์Šต๋‹ˆ๋‹ค.
+				</li>
+			</ol>
+
+			<p>
+                2๋ฒˆ๊ณผ 3๋ฒˆ ๊ณผ์ •์€ ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ Physics.js ์˜ˆ์ œ์—์„œ๋Š” ๋‚ด๋ณด๋‚ด๊ธฐ ๋ถ€๋ถ„์ด ๋งจ ๋งˆ์ง€๋ง‰์— ์žˆ์Šต๋‹ˆ๋‹ค.
+                module.exports์— ํ• ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค.
+			</p>
+			<code>
+//=============================================================================
+// make available in nodejs
+//=============================================================================
+if (typeof exports !== 'undefined')
+{
+  module.exports = Physics;
+}
+			</code>
+		</div>
+
+		<h2>์˜์กด์„ฑ ๊ด€๋ฆฌ</h2>
+		<div>
+			<p>
+				require.js๋‚˜ browserify๊ฐ™์€ ํ˜„๋ช…ํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€์„ธ์š”.
+			</p>
+			<p>
+                ์ผ๋ฐ˜์ ์œผ๋กœ three.js ํ”„๋กœ์ ํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋Œ์•„๊ฐ€๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“ˆ ๋กœ๋”ฉ์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ์‹คํ–‰ํ•จ์œผ๋กœ์จ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
+                ๊ฐœ์ธ ํŒŒ์ผ์€ ์˜์กด์„ฑ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ nodejs ํ™˜๊ฒฝ์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋ฌถ์–ด๋†“์€ index.html์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๋ถ„๋ช…ํžˆ ํ•ด ๋‘˜ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				๋‹ค๋ฅธ ํŒŒ์ผ์— ์˜์กดํ•˜๋Š” ๋ชจ๋“ˆ์„ ๋‚ด๋ณด๋‚ด๊ธฐ ํ•  ๋•Œ์—๋Š”, node์— ๊ฐ™์ด ๋‚ด๋ณด๋‚ด๊ธฐํ•˜๋ผ๊ณ  ์•Œ๋ ค์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+				๊ทธ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+			</p>
+			<ol>
+				<li>
+					๋ชจ๋“ˆ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ nodejs ํ™˜๊ฒฝ์ธ์ง€ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค.
+				</li>
+				<li>
+					๋งŒ์•ฝ ๊ทธ๋ ‡๋‹ค๋ฉด ์˜์กด์„ฑ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ ์–ธํ•ด์ค๋‹ˆ๋‹ค.
+				</li>
+				<li>
+					๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์ผ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๊ฒƒ๋„ ํ•  ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค.
+				</li>
+			</ol>
+			Physics.js์˜ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค:
+			<code>
+//=============================================================================
+// ์„œ๋ฒ„์‚ฌ์ด๋“œ ํ…Œ์ŠคํŠธ ์„ค์ •
+//=============================================================================
+if (typeof require === 'function') // nodejs ํ™˜๊ฒฝ ํ…Œ์ŠคํŠธ
+{
+  const THREE = require('three');
+  const MY3 = require('./MY3.js');
+}
+			</code>
+		</div>
+
+	</body>
+</html>

+ 131 - 0
docs/manual/ko/introduction/Animation-system.html

@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ([name])</h1>
+
+		<h2>Overview</h2>
+
+		<p class="desc">
+            three.js ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ชจ๋ธ์˜ ๋‹ค์–‘ํ•œ ์†์„ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+            [page:SkinnedMesh ์Šคํ‚จ ๋ฐ ๋ฆฌ๊น… ๋ชจ๋ธ], [page:Geometry.morphTargets ๋ชจํ”„ํƒ€๊นƒ]์˜ ๊ณจ์ž, ์„œ๋กœ ๋‹ค๋ฅธ ์†Œ์žฌ์˜ ์†์„ฑ(์ƒ‰์ƒ, ๋ถˆํˆฌ๋ช…๋„, ์ฐธ/๊ฑฐ์ง“ ์—ฐ์‚ฐ), 
+            ๊ฐ€์‹œ์„ฑ๊ณผ ๋ณ€ํ™˜์ด ๊ทธ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ์†์„ฑ์€ ํŽ˜์ด๋“œ ์•„์›ƒ, ํŽ˜์ด๋“œ ์•„์›ƒ, ํฌ๋กœ์ŠคํŽ˜์ด๋“œ, ๋žฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 
+            ํ•œ ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•œ ๋™์‹œ์— ์ผ์–ด๋‚˜๋Š” ๋‹ค๋ฅธ ํ™•๋Œ€ ์‹œ๊ฐ„ ๋ฐ ๊ฐ€์ค‘์น˜ ์กฐ์ ˆ์ด๋‚˜, ์„œ๋กœ ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ๊ฐ„์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜๋„ ์ „๋ถ€ ๊ฐœ๋ณ„๋กœ ๋ณ€ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
+            ๊ฐ™์€, ํ˜น์€ ์„œ๋กœ ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธํ‹€๊ฐ„์˜ ๋‹ค์–‘ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜๋„ ์‹ฑํฌ๋ฅผ ๋งž์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+            <br /><br />
+            
+            ์ด๋ฅผ ํ•œ ์‹œ์Šคํ…œ ์•ˆ์— ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ, three.js ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ์€ 
+			[link:https://github.com/mrdoob/three.js/issues/6881 2015๋…„์— ์™„์ „ํžˆ ๋ณ€๊ฒฝ]
+            (์ง€๋‚œ ์ •๋ณด์ž„์— ์ฃผ์˜ํ•˜์„ธ์š”!)๋˜์—ˆ์œผ๋ฉฐ, ํ˜„์žฌ๋Š” Unity/Unreal Engine 4์™€ ์œ ์‚ฌํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 
+            ์ด ํŽ˜์ด์ง€์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์‹œ์Šคํ…œ ๋ฉ”์ธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ตฌ์„ฑ๋˜๊ณ  ๋™์ž‘๋˜๋Š”์ง€๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+
+		</p>
+
+		<h3>์• ๋‹ˆ๋ฉ”์ด์…˜ ํด๋ฆฝ(Animation Clips)</h3>
+
+		<p class="desc">
+            ์• ๋‹ˆ๋ฉ”์ด์…˜ 3D ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ž˜ ๋ถˆ๋Ÿฌ์™”๋‹ค๋ฉด(๊ตฌ์กฐ์— ๊ณจ์ž ํ˜น์€ ๋ชจํ”„ ํƒ€๊นƒ์ด ์žˆ๋Š”์ง€๋Š” ์ƒ๊ด€ ์—†์Šต๋‹ˆ๋‹ค) โ€” ์˜ˆ๋ฅผ ๋“ค๋ฉด 
+            [link:https://github.com/KhronosGroup/glTF-Blender-IO glTF Blender exporter]๋ผ๋Š” ์ต์Šคํฌํ„ฐ๋กœ ์ถ”์ถœํ•˜๊ณ  
+            [page:GLTFLoader]๋ฅผ ์‚ฌ์šฉํ•ด three.js์— ๋ถˆ๋Ÿฌ์™”๋‹ค๋ฉด โ€” ์‘๋‹ต ํ•„๋“œ ์ค‘ ํ•˜๋‚˜๊ฐ€ "animations"๋ผ๋Š” ์ด๋ฆ„์˜ ๋ฐฐ์—ด๋กœ ๋˜์–ด ์žˆ๊ณ  ํ•ด๋‹น ๋ชจ๋ธ์— ๋Œ€ํ•œ
+            [page:AnimationClip AnimationClips]๋ฅผ ๋‹ด๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(ํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ๋กœ๋”๋Š” ์•„๋ž˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•˜์„ธ์š”).
+            <br /><br />
+
+			๊ฐ๊ฐ์˜ *AnimationClip*์€ ๋Œ€๊ฐœ ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ์˜ ํŠน์ • ํ–‰๋™์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 
+			์˜ˆ๋ฅผ ๋“ค์–ด mesh๊ฐ€ ์ด๋ฆ„์ด๋ผ๋ฉด, walkcycle AnimationClip ํ•œ ๊ฐœ์™€, ๋‘ ๋ฒˆ์งธ๋Š” jump, ์„ธ ๋ฒˆ์งธ๋Š” sidestepping ๋“ฑ๋“ฑ์ด ๋“ค์–ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+
+		</p>
+
+		<h3>ํ‚คํ”„๋ ˆ์ž„ ํŠธ๋ž™(Keyframe Tracks)</h3>
+
+		<p class="desc">
+
+            ์ด๋Ÿฌํ•œ *AnimationClip* ์•ˆ์—๋Š” ๊ฐ๊ฐ์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์†์„ฑ๋ณ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ„๋„์˜ [page:KeyframeTrack]์— ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
+            [page:Skeleton skeleton] ์ด๋ผ๋Š” ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, ํ•œ ํ‚คํ”„๋ ˆ์ž„ ํŠธ๋ž™์€ ํ•˜์™„๊ณจ๊ฒฉ์˜ ์œ„์น˜๊ฐ€ ์ˆ˜์‹œ๋กœ ๋ณ€ํ™”ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ฉฐ
+            ๋˜ ๋‹ค๋ฅธ ํŠธ๋ž™์—๋Š” ๊ฐ™์€ ๋ผˆ์˜ ํšŒ์ „, ์„ธ ๋ฒˆ์งธ ํŠธ๋ž™์—๋Š” ๋‹ค๋ฅธ ๋ผˆ์˜ ์œ„์น˜์™€ ํšŒ์ „๊ฐ, ์น˜์ˆ˜ ๋“ฑ์„ ์ €์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+            ์• ๋‹ˆ๋งค์ด์…˜ ํด๋ฆฝ์€ ์ด๋Ÿฐ ํŠธ๋ž™์œผ๋กœ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ž˜ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+            <br /><br />
+
+            ๊ฐ€๋ น ๋ชจํ˜•์ด [page:Geometry.morphTargets ๋ชจํ”„ ํƒ€๊นƒ](์˜ˆ๋ฅผ ๋“ค์–ด ํ•œ ๋ชจํ”„ํƒ€๊นƒ์€ ์›ƒ๋Š” ํ‘œ์ •, ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ํ™”๋‚œ ํ‘œ์ •์„ ๋‚˜ํƒ€๋‚ธ๋‹ค๊ฑฐ ํžˆ๋ฉด)์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด, ๊ฐ ํŠธ๋ž™์€
+            ํ•ด๋‹น ๋ชจํ”„ ํƒ€๊นƒ์ด ๋ณ€ํ™”ํ•˜๋Š” ๋™์•ˆ์— ์–ด๋–ป๊ฒŒ [page:Mesh.morphTargetInfluences ์˜ํ–ฅ]์„ ๋ฏธ์น˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฏน์„œ(Animation Mixer)</h3>
+
+		<p class="desc">
+
+            ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ํผ์€ ์˜ค์ง ์• ๋‹ˆ๋ฉ”์ด์…˜์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ •๋ณด์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ํ”Œ๋ ˆ์ด๋ฐฑ์€ [page:AnimationMixer]๊ฐ€ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
+            ์ด ๋ฏน์„œ๋Š” ๋‹จ์ง€ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์•„๋‹Œ, ๋ฆฌ์–ผ ๋ฏน์„œ ์ฝ˜์†”์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋™์‹œ์žฌ์ƒ, ํ˜ผํ•ฉ, ๋ณ‘ํ•ฉ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>์• ๋‹ˆ๋ฉ”์ด์…˜ ์•ก์…˜(Animation Actions)</h3>
+
+		<p class="desc">
+
+			*AnimationMixer*๋Š” ์•„์ฃผ ์ ์€(์ผ๋ฐ˜์ ์ธ) ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, 
+            [page:AnimationAction AnimationActions]์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. *AnimationAction*์„ ์„ค์ •ํ•˜๋ฉด 
+            ํŠน์ • *AnimationClip*์ด ์–ธ์ œ, ์–ด๋–ค ๋ฏน์„œ์—์„œ ์‹คํ–‰, ์ •์ง€, ์ค‘์ง€๋˜์–ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์–ผ๋งˆ๋‚˜ ๋ฐ˜๋ณต๋˜์–ด์•ผ ํ•˜๋Š”์ง€, ํŽ˜์ด๋“œ๋‚˜ ํƒ€์ž„ ์Šค์ผ€์ผ๋ง์ด ํ•„์š”ํ•œ์ง€, 
+            ํฌ๋กœ์ŠคํŽ˜์ด๋”ฉ์ด๋‚˜ ์‹ฑํฌ๋กœ๋‚˜์ด์ง• ๊ฐ™์€ ๊ฒƒ๋“ค์ด ํ•„์š”ํ•œ์ง€๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h3>์• ๋‹ˆ๋ฉ”์ด์…˜ ์˜ค๋ธŒ์ ํŠธ ๊ทธ๋ฃน(Animation Object Groups)</h3>
+
+		<p class="desc">
+
+			๊ฐ™์€ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋ฅผ ๊ณต์œ ํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด,
+			[page:AnimationObjectGroup]์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+
+		</p>
+
+		<h3>์ง€์›๋˜๋Š” ํฌ๋งท ๋ฐ ๋กœ๋”</h3>
+
+		<p class="desc">
+			์• ๋‹ˆ๋ฉ”์ด์…˜์„ ํฌํ•จํ•œ ๋ชจ๋“  ๋ชจ๋ธ๋“ค(OBJ๋Š” ํ™•์‹คํžˆ ์•ˆ ๋ฉ๋‹ˆ๋‹ค)์ด ์ง€์›๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ, ์•„์ฃผ ๋ช‡๋ช‡
+			three.js ๋กœ๋”๋งŒ [page:AnimationClip AnimationClip] ์‹œํ€€์Šค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ง€์›<i>๋˜๋Š”</i>
+			์• ๋‹ˆ๋ฉ”์ด์…˜ ํƒ€์ž…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+		</p>
+
+			<ul>
+				<li>[page:ObjectLoader THREE.ObjectLoader]</li>
+				<li>THREE.BVHLoader</li>
+				<li>THREE.ColladaLoader</li>
+				<li>THREE.FBXLoader</li>
+				<li>[page:GLTFLoader THREE.GLTFLoader]</li>
+				<li>THREE.MMDLoader</li>
+			</ul>
+
+		<p class="desc">
+			3ds max์™€ Maya๋Š” ํ˜„์žฌ ์—ฌ๋Ÿฌ ์• ๋‹ˆ๋ฉ”์ด์…˜ (๊ฐ™์€ ์‹œ๊ฐ„๋Œ€์— ์žˆ์ง€ ์•Š์€ ์• ๋‹ˆ๋ฉ”์ด์…˜)์„ ํ•œ ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์˜ˆ์ œ</h2>
+
+		<code>
+		let mesh;
+
+		// AnimationMixer ๋งŒ๋“ค๊ธฐ, AnimationClip ์ธ์Šคํ„ด์Šค ๋ฆฌ์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ
+		const mixer = new THREE.AnimationMixer( mesh );
+		const clips = mesh.animations;
+
+		// ๊ฐ ํ”„๋ ˆ์ž„์˜ mixer ์—…๋ฐ์ดํŠธ
+		function update () {
+			mixer.update( deltaSeconds );
+		}
+
+		// ํŠน์ • ์• ๋‹ˆ๋ฉ”์ด์…˜ ์žฌ์ƒ
+		const clip = THREE.AnimationClip.findByName( clips, 'dance' );
+		const action = mixer.clipAction( clip );
+		action.play();
+
+		// ์ „์ฒด ์• ๋‹ˆ๋ฉ”์ด์…˜ ์žฌ์ƒ
+		clips.forEach( function ( clip ) {
+			mixer.clipAction( clip ).play();
+		} );
+		</code>
+
+	</body>
+</html>

+ 130 - 0
docs/manual/ko/introduction/Browser-support.html

@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<html lang="ko">
+
+<head>
+    <meta charset="utf-8">
+    <base href="../../../" />
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+</head>
+
+<body>
+    <h1>๋ธŒ๋ผ์šฐ์ € ์ง€์›([name])</h1>
+
+    <h2>๊ฐœ์š”</h2>
+    <div>
+        <p>
+            Three.js ๋Š” WebGL์„ ํ†ตํ•ด ๋Œ€๋ถ€๋ถ„์˜ ํ˜„๋Œ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ scene์„ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ๋ธŒ๋ผ์šฐ์ €, ํŠนํžˆ Internet Explorer 10 ์ดํ•˜ ๋ฒ„์ „์—์„œ๋Š” ๋‹ค๋ฅธ
+            [link:https://github.com/mrdoob/three.js/tree/master/examples/jsm/renderers ๋ Œ๋”๋Ÿฌ] (CSS2DRenderer,
+            CSS3DRenderer, SVGRenderer)๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ,
+            polyfills๋ฅผ ๋ช‡๊ฐ€์ง€ ํฌํ•จํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ [link:https://github.com/mrdoob/three.js/tree/master/examples /examples] ํด๋”์˜
+            ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ๋•Œ์—๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.
+        </p>
+        <p>
+            ์˜ค๋ž˜๋œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ง€์›ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด, ๋‹ค๋ฅธ ๋ Œ๋”๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ถ”์ฒœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. WebGLRenderer๋ณด๋‹ค ๋А๋ฆด๋ฟ๋”๋Ÿฌ ๋” ์ ์€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
+        </p>
+    </div>
+
+    <h2>WebGL์ง€์› ์›น ๋ธŒ๋ผ์šฐ์ €</h2>
+    <div>
+        <p>
+            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]์—์„œ ์–ด๋–ค ๋ธŒ๋ผ์šฐ์ €๋“ค์ด ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+        </p>
+    </div>
+
+    <h2>JavaScript ์–ธ์–ด ํŠน์„ฑ ๋ฐ three.js์—์„œ ์‚ฌ์šฉ๋œ Web API</h2>
+    <div>
+        <p>
+            three.js์—์„œ ์‚ฌ์šฉ๋œ ํŠน์„ฑ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ ๋ช‡๊ฐœ๋Š” ์ถ”๊ฐ€๋กœ polyfills๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
+        </p>
+        <table>
+            <thead>
+                <tr>
+                    <th>ํŠน์„ฑ</th>
+                    <th>์‚ฌ์šฉ ๋ฒ”์œ„</th>
+                    <th>๋ชจ๋“ˆ</th>
+                </tr>
+            </thead>
+            <tbody>
+                <tr>
+                    <td>Typed Arrays</td>
+                    <td>Source</td>
+                    <td>BufferAttribute, BufferGeometry, etc.</td>
+                </tr>
+                <tr>
+                    <td>Web Audio API</td>
+                    <td>Source</td>
+                    <td>Audio, AudioContext, AudioListener, etc.</td>
+                </tr>
+                <tr>
+                    <td>WebXR Device API</td>
+                    <td>Source</td>
+                    <td>WebXRManager</td>
+                </tr>
+                <tr>
+                    <td>Blob</td>
+                    <td>Source</td>
+                    <td>FileLoader, etc.</td>
+                </tr>
+                <tr>
+                    <td>Promise</td>
+                    <td>Examples</td>
+                    <td>GLTFLoader, DRACOLoader, BasisTextureLoader, GLTFExporter, VRButton, ARButton, etc.</td>
+                </tr>
+                <tr>
+                    <td>Fetch</td>
+                    <td>Examples</td>
+                    <td>ImageBitmapLoader, etc.</td>
+                </tr>
+                <tr>
+                    <td>File API</td>
+                    <td>Examples</td>
+                    <td>GLTFExporter, etc.</td>
+                </tr>
+                <tr>
+                    <td>URL API</td>
+                    <td>Examples</td>
+                    <td>GLTFLoader, etc.</td>
+                </tr>
+                <tr>
+                    <td>Pointer Lock API</td>
+                    <td>Examples</td>
+                    <td>PointerLockControls</td>
+                </tr>
+            </tbody>
+        </table>
+    </div>
+
+    <h2>Polyfills</h2>
+    <div>
+        <p>ํ•„์š”์— ๋”ฐ๋ผ polyfills์„ import ํ•˜์„ธ์š”. IE9๋ฅผ ์˜ˆ๋กœ๋“ค๋ฉด ์ ์–ด๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ polyfills๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+            these features:</p>
+        <ul>
+            <li>Typed Arrays</li>
+            <li>Blob</li>
+        </ul>
+    </div>
+
+    <h3>์ถ”์ฒœ polyfills</h3>
+    <div>
+        <ul>
+            <li>
+                [link:https://github.com/zloirock/core-js core-js]
+            </li>
+            <li>
+                [link:https://github.com/inexorabletash/polyfill/blob/master/typedarray.js typedarray.js]
+            </li>
+            <li>
+                [link:https://github.com/stefanpenner/es6-promise/ ES6-Promise]
+            </li>
+            <li>
+                [link:https://github.com/eligrey/Blob.js Blob.js]
+            </li>
+            <li>
+                [link:https://github.com/github/fetch fetch]
+            </li>
+        </ul>
+    </div>
+</body>
+
+</html>

+ 164 - 0
docs/manual/ko/introduction/Creating-a-scene.html

@@ -0,0 +1,164 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8">
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>์žฅ๋ฉด ๋งŒ๋“ค๊ธฐ([name])</h1>
+
+		<p>์ด ์„น์…˜์˜ ๋ชฉํ‘œ๋Š” three.js์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…์„ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. spinning cube๋ผ๋Š” scene์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ง‰ํžˆ๊ฑฐ๋‚˜ ๋„์›€์ด ํ•„์š”ํ•  ๋•Œ์—๋Š” ์•„๋ž˜์ชฝ์˜ ์‹ค์Šต ์˜ˆ์ œ๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”.</p>
+
+		<h2>์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ</h2>
+
+		<p>three.js๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด HTML ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ , js/ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— [link:https://threejs.org/build/three.js three.js] ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์—ฐ๊ฒฐ์‹œ์ผœ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์‹คํ–‰ํ•ด์ฃผ์„ธ์š”.</p>
+
+		<code>
+		&lt;!DOCTYPE html&gt;
+		&lt;html&gt;
+			&lt;head&gt;
+				&lt;meta charset="utf-8"&gt;
+				&lt;title&gt;My first three.js app&lt;/title&gt;
+				&lt;style&gt;
+					body { margin: 0; }
+					canvas { display: block; }
+				&lt;/style&gt;
+			&lt;/head&gt;
+			&lt;body&gt;
+				&lt;script src="js/three.js"&gt;&lt;/script&gt;
+				&lt;script&gt;
+					// Our Javascript will go here.
+				&lt;/script&gt;
+			&lt;/body&gt;
+		&lt;/html&gt;
+		</code>
+
+		<p>์ด๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฝ”๋“œ๋“ค์€ ๋น„์–ด์žˆ๋Š” &lt;script&gt; ํƒœ๊ทธ ์•ˆ์— ์ž‘์„ฑ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.</p>
+
+		<h2>Scene ๋งŒ๋“ค๊ธฐ</h2>
+
+		<p>three.js๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ‘œํ˜„ํ•˜๋ ค๋ฉด scene, camera ๊ทธ๋ฆฌ๊ณ  renderer๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์นด๋ฉ”๋ผ๋กœ ์žฅ๋ฉด์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</p>
+
+		<code>
+		const scene = new THREE.Scene();
+		const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
+
+		const renderer = new THREE.WebGLRenderer();
+		renderer.setSize( window.innerWidth, window.innerHeight );
+		document.body.appendChild( renderer.domElement );
+		</code>
+
+		<p>์—ฌ๊ธฐ์—์„œ ์ž ๊น ์–ด๋–ค ์ผ๋“ค์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์งš๊ณ  ๋„˜์–ด๊ฐ€๋ด…์‹œ๋‹ค. ์šฐ์„ ์€ scene, camera renderer๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.</p>
+
+		<p>three.js์—๋Š” ๋ช‡๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ์นด๋ฉ”๋ผ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋ฒˆ์—๋Š”<strong>PerspectiveCamera</strong>๋ฅผ ์‚ฌ์šฉํ•ด ๋ด…์‹œ๋‹ค.</p>
+
+		<p>์ฒซ ๋ฒˆ์งธ ์†์„ฑ์€ <strong>field of view(์‹œ์•ผ๊ฐ)</strong>์ž…๋‹ˆ๋‹ค. FOV(์‹œ์•ผ๊ฐ)๋Š” ํ•ด๋‹น ์‹œ์ ์˜ ํ™”๋ฉด์ด ๋ณด์—ฌ์ง€๋Š” ์ •๋„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ฐ’์€ ๊ฐ๋„ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</p>
+
+		<p>๋‘ ๋ฒˆ์งธ ์†์„ฑ์€ <strong>aspect ratio(์ข…ํšก๋น„)</strong>์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์š”์†Œ์˜ ๋†’์ด์™€ ๋„ˆ๋น„์— ๋งž์ถ”์–ด ํ‘œ์‹œํ•˜๊ฒŒ ํ• ํ…๋ฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์™€์ด๋“œ์Šคํฌ๋ฆฐ์— ์˜›๋‚  ์˜ํ™”๋ฅผ ํŠธ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ด๋ฏธ์ง€๊ฐ€ ํ‹€์–ด์ ธ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.</p>
+
+		<p>๋‹ค์Œ ๋‘ ์†์„ฑ์€ <strong>near</strong> ์™€ <strong>far</strong> ์ ˆ๋‹จ๋ฉด์ž…๋‹ˆ๋‹ค. ๋ฌด์Šจ ๋œป์ธ๊ฐ€ ํ•˜๋ฉด, <strong>far</strong> ๊ฐ’ ๋ณด๋‹ค ๋ฉ€๋ฆฌ ์žˆ๋Š” ์š”์†Œ๋‚˜ <strong>near</strong> ๊ฐ’๋ณด๋‹ค ๊ฐ€๊นŒ์ด ์žˆ๋Š” ๋ฌผ์ฒด๋Š” ๋ Œ๋”๋ง ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ ์‹œ์ ์—์„œ ์ด๊ฒƒ๊นŒ์ง€ ๊ณ ๋ คํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ, ์•ฑ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</p>
+
+		<p>๋‹ค์Œ์€ renderer์ž…๋‹ˆ๋‹ค. ๋งˆ๋ฒ•์ด ์ผ์–ด๋‚˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” WebGLRenderer์™€ ๋”๋ถˆ์–ด, three.js๋Š” ๋‹ค๋ฅธ ๋ช‡๊ฐ€์ง€ renderer๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์˜ค๋ž˜๋œ ๋ธŒ๋ผ์šฐ์ € ํ˜น์€ ๋ชจ์ข…์˜ ์‚ฌ์œ ๋กœ WebGL์„ ์ง€์› ์•ˆํ• ๋•Œ์˜ ๋Œ€๋น„์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.</p>
+
+		<p>renderer ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฌํ•จ๊ณผ ๋™์‹œ์—, ๋ Œ๋”๋ง ํ•  ๊ณณ์˜ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ Œ๋”๋งํ•  ๊ตฌ์—ญ์˜ ๋†’์ด์™€ ๋„ˆ๋น„๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ๋†’์ด์™€ ๋„ˆ๋น„๋Š” ๊ฐ๊ฐ ๋ธŒ๋ผ์šฐ์ € ์œˆ๋„์šฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์ค‘์‹œํ•˜๋Š” ์•ฑ์˜ ๊ฒฝ์šฐ, <strong>setSize</strong>๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ <strong>window.innerWidth/2</strong>, <strong>window.innerHeight/2</strong>๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ™”๋ฉด ํฌ๊ธฐ์˜ ์ ˆ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜๋„ ์ž‡์”๋‹ˆ๋‹ค.</p>
+
+		<p>์‚ฌ์ด์ฆˆ๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋” ๋‚ฎ์€ ํ•ด์ƒ๋„๋กœ ๋ Œ๋”๋งํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ, <strong>setSize</strong>์˜ <strong>updateStyle</strong> (์„ธ ๋ฒˆ์งธ ์ธ์ž)๋ฅผ false๋กœ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋ฉ๋‹ˆ๋‹ค. <strong>setSize(window.innerWidth/2, window.innerHeight/2, false)</strong>์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ฉด &lt;canvas&gt;๊ฐ€ 100%์˜ ๋†’์ด, ๋„ˆ๋น„๋กœ ๋˜์–ด์žˆ๋‹ค๋Š” ๊ธฐ์ค€ ํ•˜์— ์ ˆ๋ฐ˜์˜ ํ•ด์ƒ๋„๋กœ ๋ Œ๋”๋ง ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.</p>
+
+		<p>๋งˆ์ง€๋ง‰์œผ๋กœ ์ œ์ผ ์ค‘์š”ํ•œ <strong>renderer</strong> ์—˜๋ฆฌ๋จผํŠธ๋ฅผ HTML ๋ฌธ์„œ ์•ˆ์— ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š”&lt;canvas&gt; ์—˜๋ฆฌ๋จผํŠธ๋กœ, renderer๊ฐ€ scene์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ตฌ์—ญ์ž…๋‹ˆ๋‹ค.</p>
+
+		<p><em>"๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์•„๊นŒ ๋งํ–ˆ๋˜ ํ๋ธŒ๋Š” ์–ด๋””์— ์žˆ์ฃ ?"</em> ๋ฐ”๋กœ ์ถ”๊ฐ€ํ•ด ๋ด…์‹œ๋‹ค.</p>
+
+		<code>
+		const geometry = new THREE.BoxGeometry();
+		const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
+		const cube = new THREE.Mesh( geometry, material );
+		scene.add( cube );
+
+		camera.position.z = 5;
+		</code>
+
+		<p>ํ๋ธŒ๋ฅผ ๋งŒ๋“œ๋ ค๋ฉด, <strong>BoxGeometry</strong>๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ํ๋ธŒ์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ผญ์ง“์  (<strong>vertices</strong>) ์™€ ๋ฉด(<strong>faces</strong>)์ด ํฌํ•จ๋ผ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋Œ€ํ•ด์„œ๋Š” ๋‚˜์ค‘์— ๋” ์ž์„ธํžˆ ์•Œ์•„๋ด…์‹œ๋‹ค.</p>
+
+		<p>geometry์™€ ๋”๋ถˆ์–ด, ๋ฌด์–ธ๊ฐ€๋ฅผ ์ƒ‰์น ํ•ด์ค„ ์š”์†Œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Three.js์—์„œ๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ–ˆ์ง€๋งŒ, ํ˜„์žฌ๋กœ์„œ๋Š”<strong>MeshBasicMaterial</strong>์„ ๊ณ ์ˆ˜ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์ด ์†์„ฑ์ด ์ ์šฉ๋œ ๋ฌผ์ฒด๋“ค์€ ๋ชจ๋‘ ์˜ํ–ฅ์„ ๋ฐ›์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ฒŒ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋„๋ก, ์—ฌ๊ธฐ์—์„œ๋Š” ๋…น์ƒ‰์ธ <strong>0x00ff00</strong>๋งŒ์„ ์†์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. CSS ๋‚˜ Photoshop์—์„œ์ฒ˜๋Ÿผ (<strong>hex colors</strong>)๋กœ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.</p>
+
+		<p>์„ธ ๋ฒˆ์งธ๋กœ ํ•„์š”ํ•œ ๊ฒƒ์€<strong>Mesh</strong>์ž…๋‹ˆ๋‹ค. mesh๋Š” geometry๋ฅผ ๋ฌผ์ฒด์— ์ ์šฉ์‹œํ‚ค๊ณ  ์šฐ๋ฆฌ๊ฐ€ ํ™”๋ฉด ์•ˆ์—์„œ ์ž์œ ๋กญ๊ฒŒ ์›€์ง์ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค.
+
+		<p>๊ธฐ๋ณธ ์„ค์ •์ƒ <strong>scene.add()</strong>๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋ฉด, ์ถ”๊ฐ€๋œ ๋ชจ๋“  ๊ฒƒ๋“ค์€ <strong>(0,0,0)</strong> ์†์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์นด๋ฉ”๋ผ์™€ ํ๋ธŒ๊ฐ€ ๋™์ผํ•œ ์œ„์น˜์— ๊ฒน์น˜๊ฒŒ ๋˜๊ฒ ์ฃ . ์ด๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด, ์นด๋ฉ”๋ผ๋ฅผ ์•ฝ๊ฐ„ ์›€์ง์—ฌ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.</p>
+
+		<h2>scene ๋ Œ๋”๋ง</h2>
+
+		<p>๋งจ ์ฒ˜์Œ์— ์žˆ๋˜ HTML ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด์„œ ์—ด์–ด๋†จ๋‹ค๋ฉด, ์•„๋ฌด๊ฒƒ๋„ ๋ณด์ด์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์•„์ง ์•„๋ฌด๊ฒƒ๋„ ๋ Œ๋”๋งํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด <strong>render or animate loop</strong>๋ผ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค..</p>
+
+		<code>
+		function animate() {
+			requestAnimationFrame( animate );
+			renderer.render( scene, camera );
+		}
+		animate();
+		</code>
+
+		<p>์ด ์ฝ”๋“œ๋Š” ํ•˜๋ฉด์ด ์ƒˆ๋กœ๊ณ ์นจ ๋  ๋•Œ๋งˆ๋‹ค ๊ณ„์†ํ•ด์„œ ๋ Œ๋”๋ง์„ ํ•ด ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์— 1์ดˆ์— 60๋ฒˆ ๋ Œ๋”๋ง ๋ฉ๋‹ˆ๋‹ค). ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ฒŒ์ž„์„ ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ•œ ์ง€ ์–ผ๋งˆ ์•ˆ ๋œ ๋ถ„์ด๋ผ๋ฉด, <em>"์™œ ๊ทธ๋ƒฅ setInterval์„ ์“ฐ์ง€ ์•Š๋Š”๊ฑฐ์ฃ ?"</em>๋ผ๊ณ  ์งˆ๋ฌธํ•  ์ˆ˜๋„ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค. ๋‹จ์ ์œผ๋กœ ๋งํ•˜๋ฉด ๊ฐ€๋Šฅ์€ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ <strong>requestAnimationFrame</strong> ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์ด์ ์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ ๊ฐ€์žฅ ํฐ ์ด์ ์€ ์œ ์ €๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์—์„œ ์ดํƒˆํ–ˆ์„๋•Œ ๋ฉˆ์ถฐ์ฃผ๋Š” ๊ธฐ๋Šฅ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์†Œ์ค‘ํ•œ ์ „๋ ฅ๊ณผ ๋ฐฐํ„ฐ๋ฆฌ๋ฅผ ์•„๋‚„ ์ˆ˜ ์žˆ์ฃ .</p>
+
+		<h2>ํ๋ธŒ ์• ๋‹ˆ๋ฉ”์ดํŒ…</h2>
+
+		<p>์‹œ์ž‘ํ•  ๋•Œ ๋งŒ๋“ค์—ˆ๋˜ ํŒŒ์ผ์— ์ด์ „๊นŒ์ง€์˜ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ์ž‘์„ฑํ•ด์„œ ๋„ฃ์—ˆ์„ ๊ฒฝ์šฐ, ์ดˆ๋ก์ƒ‰ ๋ฐ•์Šค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐ•์Šค๋ฅผ ํšŒ์ „์‹œ์ผœ ๋ณด๋ฉด์„œ ์กฐ๊ธˆ ๋” ์žฌ๋ฏธ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค.</p>
+
+		<p>๋‹ค์Œ ์ฝ”๋“œ๋ฅผ <strong>animate</strong>ํ•จ์ˆ˜ ์•ˆ์˜ <strong>renderer.render</strong> ๋ฐ”๋กœ ์œ„์— ๋„ฃ์–ด์ฃผ์„ธ์š”.</p>
+
+		<code>
+		cube.rotation.x += 0.01;
+		cube.rotation.y += 0.01;
+		</code>
+
+		<p>์œ„ ์ฝ”๋“œ๋Š” ๋ชจ๋“  ํ”„๋ ˆ์ž„๋งˆ๋‹ค ์‹คํ–‰๋˜๋ฉด์„œ (์ผ๋ฐ˜์ ์œผ๋กœ 1์ดˆ์— 60๋ฒˆ), ํ๋ธŒ๊ฐ€ ๋ฉ‹์ง€๊ฒŒ ๋Œ์•„๊ฐ€๋„๋ก ๋งŒ๋“ค์–ด ์ค„๊ฒ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ๋ฌด์–ธ๊ฐ€๋ฅผ ์›€์ง์ด๊ฑฐ๋‚˜ ๋ณ€ํ˜•ํ•˜๊ณ  ์‹ถ์„๋•Œ, animate loop๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜๋„ ์žˆ๊ณ , <strong>animate</strong> ํ•จ์ˆ˜ ์•ˆ์— ์ˆ˜๋ฐฑ์ค„์„ ์ž‘์„ฑํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค.</p>
+
+		<h2>๊ฒฐ๊ณผ ํ™”๋ฉด</h2>
+		<p>์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค! ์ฒซ three.js์ด ์™„์„ฑ๋˜์—ˆ๋„ค์š”. ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹œ์ž‘ํ•ด๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค.</p>
+
+		<p>์ „์ฒด ์ฝ”๋“œ๋Š” ์•„๋ž˜์— ๋‚˜์™€ ์žˆ๊ณ  [link:https://jsfiddle.net/mkba0ecu/ live example]๋กœ๋„ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž˜ ์‚ดํŽด๋ณด๊ณ  ์–ด๋–ป๊ฒŒ ๊ตฌ๋™๋˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์„ธ์š”.</p>
+
+		<code>
+		&lt;!DOCTYPE html&gt;
+		&lt;html&gt;
+			&lt;head&gt;
+				&lt;title&gt;My first three.js app&lt;/title&gt;
+				&lt;style&gt;
+					body { margin: 0; }
+					canvas { display: block; }
+				&lt;/style&gt;
+			&lt;/head&gt;
+			&lt;body&gt;
+				&lt;script src="js/three.js"&gt;&lt;/script&gt;
+				&lt;script&gt;
+					const scene = new THREE.Scene();
+					const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
+
+					const renderer = new THREE.WebGLRenderer();
+					renderer.setSize( window.innerWidth, window.innerHeight );
+					document.body.appendChild( renderer.domElement );
+
+					const geometry = new THREE.BoxGeometry();
+					const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
+					const cube = new THREE.Mesh( geometry, material );
+					scene.add( cube );
+
+					camera.position.z = 5;
+
+					const animate = function () {
+						requestAnimationFrame( animate );
+
+						cube.rotation.x += 0.01;
+						cube.rotation.y += 0.01;
+
+						renderer.render( scene, camera );
+					};
+
+					animate();
+				&lt;/script&gt;
+			&lt;/body&gt;
+		&lt;/html&gt;
+		</code>
+	</body>
+</html>

+ 113 - 0
docs/manual/ko/introduction/Creating-text.html

@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8">
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>ํ…์ŠคํŠธ ๋งŒ๋“ค๊ธฐ([name])</h1>
+		<div>
+			<p>
+				three.js์—์„œ ํ…์ŠคํŠธ๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. - ๊ทธ ๋ฐฉ๋ฒ•์˜ ๋ช‡๊ฐ€์ง€๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+		</div>
+
+		<h2>1. DOM + CSS</h2>
+		<div>
+			<p>
+				HTML์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฐ€์žฅ ์‰ฝ๊ณ  ๋น ๋ฅธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ three.js ์˜ˆ์ œ์—์„œ ์˜ค๋ฒ„๋ ˆ์ด ์„ค๋ช…์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
+			</p>
+			<p>๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.</p>
+			<code>&lt;div id="info"&gt;Description&lt;/div&gt;</code>
+
+			<p>
+				์ ˆ๋Œ€ ์œ„์น˜๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด CSS ๋งˆํฌ์—…์„ ์‚ฌ์šฉํ•˜๊ณ , ํŠนํžˆ three.js๋ฅผ ์ „์ฒดํ™”๋ฉด์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด z-index๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+
+			<code>
+#info {
+	position: absolute;
+	top: 10px;
+	width: 100%;
+	text-align: center;
+	z-index: 100;
+	display:block;
+}
+			</code>
+
+		</div>
+
+
+
+		<h2>2. ์บ”๋ฒ„์Šค์— ํ…์ŠคํŠธ๋ฅผ ๊ทธ๋ฆฌ๊ณ  [page:Texture]๋กœ ์‚ฌ์šฉ</h2>
+		<div>
+			<p>three.js scene์— ์†์‰ฝ๊ฒŒ ํ…์ŠคํŠธ๋ฅผ ๊ทธ๋ฆฌ๊ณ ์‹ถ์€ ๊ฒฝ์šฐ์— ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.</p>
+		</div>
+
+
+		<h2>3. ๋ณธ์ธ์ด ๊ฐ€์žฅ ์„ ํ˜ธํ•˜๋Š” 3D ์•ฑ์œผ๋กœ ๋งŒ๋“ค๊ณ  three.js๋กœ export ํ•˜์„ธ์š”.</h2>
+		<div>
+			<p>๋ณธ์ธ์˜ 3d ์ž‘์—… ์•ฑ์„ ์„ ํ˜ธํ•˜๋Š” ๊ฒฝ์šฐ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด three.js๋กœ ๋ชจ๋ธ์„ importํ•˜์„ธ์š”.</p>
+		</div>
+
+
+
+		<h2>4. ์ ˆ์ฐจ์  ํ…์ŠคํŠธ geometry</h2>
+		<div>
+			<p>
+				THREE.js๋งŒ์„ ์‚ฌ์šฉํ•ด ์ ˆ์ฐจ์  ๋ฐ ๋™์  3D ํ…์ŠคํŠธ geometry๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด, geometry์ด THREE.TextGeometry์˜ ์ธ์Šคํ„ด์Šค์ธ mesh๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				<code>new THREE.TextGeometry( text, parameters );</code>
+			</p>
+			<p>
+				ํ•˜์ง€๋งŒ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด, TextGeometry์˜ "font" ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ THREE.Font ์ธ์Šคํ„ด์Šค๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+				์ด ๊ณผ์ •์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€, ๊ฐ๊ฐ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋Œ€ํ•œ ์„ค๋ช…, THREE.js๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” JSON ํฐํŠธ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด [page:TextGeometry] ํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.
+			</p>
+
+			<h3>์˜ˆ์‹œ</h3>
+
+			<p>
+				[example:webgl_geometry_text WebGL / geometry / text]<br />
+				[example:webgl_shadowmap WebGL / shadowmap]
+			</p>
+
+			<p>
+				๊ธ€๊ผด์ด ์—†๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ๊ธ€๊ผด์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด python ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด Three.js์˜ JSON ํฌ๋งท์œผ๋กœ ํŒŒ์ผ์„ export ํ•˜์„ธ์š”:
+				[link:http://www.jaanga.com/2012/03/blender-to-threejs-create-3d-text-with.html]
+			</p>
+
+		</div>
+
+
+
+		<h2>5. ๋น„ํŠธ๋งต ๊ธ€๊ผด</h2>
+		<div>
+			<p>
+				BMFonts (๋น„ํŠธ๋งต ํฐํŠธ) ๋Š” ๋‹จ์ผ BufferGeometry์— ๊ธ€์ž๋“ค์„ ์ผ๊ด„์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. BMFont ๋ Œ๋”๋ง์€
+				word-wrapping, letter spacing, kerning, signed distance fields with standard
+				derivatives, multi-channel signed distance fields, multi-texture fonts ๋“ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
+				[link:https://github.com/Jam3/three-bmfont-text three-bmfont-text]๋ฅผ ํ™•์ธํ•ด ๋ณด์„ธ์š”.
+			</p>
+			<p>
+				Stock ํฐํŠธ๋Š”
+                [link:https://github.com/etiennepinchon/aframe-fonts A-Frame Fonts]์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ , 
+                ์ž์‹ ๋งŒ์˜ .TTF ํฐํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ, ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ๋ฌธ์ž๋“ค๋งŒ ๋ถˆ๋Ÿฌ์™€ ์ตœ์ ํ™”ํ•  ์ˆ˜ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				์ฐธ๊ณ  ์ž๋ฃŒ:
+			</p>
+			<ul>
+				<li>[link:http://msdf-bmfont.donmccurdy.com/ msdf-bmfont-web] <i>(์›น ๊ธฐ๋ฐ˜)</i></li>
+				<li>[link:https://github.com/soimy/msdf-bmfont-xml msdf-bmfont-xml] <i>(์ปค๋งจ๋“œ๋ผ์ธ)</i></li>
+				<li>[link:https://github.com/libgdx/libgdx/wiki/Hiero hiero] <i>(๋ฐ์Šคํฌํƒ‘ ์•ฑ)</i></li>
+			</ul>
+		</div>
+
+
+
+	</body>
+</html>

+ 67 - 0
docs/manual/ko/introduction/Drawing-lines.html

@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="ko">
+
+<head>
+    <meta charset="utf-8">
+    <base href="../../../" />
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+</head>
+
+<body>
+    <h1>์„  ๊ทธ๋ฆฌ๊ธฐ([name])</h1>
+    <div>
+        <p>
+            ์™€์ด์–ดํ”„๋ ˆ์ž„ [page:Mesh]๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์„ ์ด๋‚˜ ์›์„ ๊ทธ๋ ค๋ด…์‹œ๋‹ค.
+            ๋จผ์ € [page:WebGLRenderer renderer], [page:Scene scene] camera๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. (scene ํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”).
+        </p>
+
+        <p>์‚ฌ์šฉํ•  ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:</p>
+        <code>
+const renderer = new THREE.WebGLRenderer();
+renderer.setSize( window.innerWidth, window.innerHeight );
+document.body.appendChild( renderer.domElement );
+
+const camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 500 );
+camera.position.set( 0, 0, 100 );
+camera.lookAt( 0, 0, 0 );
+
+const scene = new THREE.Scene();
+			</code>
+        <p>๋‹ค์Œ์œผ๋กœ๋Š” ๋ฌผ์ฒด๋ฅผ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ ์„ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” [page:LineBasicMaterial]๋‚˜ [page:LineDashedMaterial]๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.</p>
+        <code>
+//create a blue LineBasicMaterial
+const material = new THREE.LineBasicMaterial( { color: 0x0000ff } );
+			</code>
+
+        <p>
+            ๊ทธ ๋‹ค์Œ์—๋Š” ๊ผญ์ง“์ ์— ๋Œ€ํ•œ ๊ธฐํ•˜ํ•™์„ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
+        </p>
+
+        <code>
+const points = [];
+points.push( new THREE.Vector3( - 10, 0, 0 ) );
+points.push( new THREE.Vector3( 0, 10, 0 ) );
+points.push( new THREE.Vector3( 10, 0, 0 ) );
+
+const geometry = new THREE.BufferGeometry().setFromPoints( points );
+			</code>
+
+        <p>์„ ์€ ์—ฐ์†๋œ ๊ผญ์ง“์  ์Œ ์‚ฌ์ด์— ๊ทธ๋ ค์ง€๊ณ  ์ฒซ ๋ฒˆ์žฌ์™€ ๋งˆ์ง€๋ง‰ ๊ผญ์ง“์ ์—๋Š” ๊ทธ๋ ค์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (์„ ์€ ๋‹ซํ˜€์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)</p>
+
+        <p>์ด์ œ ๋‘ ์„ ๊ณผ ๋ฌผ์ฒด๋ฅผ ์œ„ํ•œ ์ ์ด ์ƒ๊ฒผ์œผ๋‹ˆ, ํ•ฉ์ณ์„œ ์„ ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</p>
+        <code>
+const line = new THREE.Line( geometry, material );
+			</code>
+        <p>์ด์ œ ๋‚จ์€ ๊ฒƒ์€ scene์— ์ถ”๊ฐ€ํ•˜๊ณ  [page:WebGLRenderer.render render]๋ฅผ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.</p>
+
+        <code>
+scene.add( line );
+renderer.render( scene, camera );
+			</code>
+
+        <p>์œ„๋กœ ํ–ฅํ•˜๊ณ  ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ํŒŒ๋ž€ ์„ ์œผ๋กœ ๋œ ํ™”์‚ดํ‘œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</p>
+    </div>
+</body>
+
+</html>

+ 54 - 0
docs/manual/ko/introduction/FAQ.html

@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8">
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<h2>์–ด๋–ค 3D ๋ชจ๋ธ ํฌ๋งท์ด ๊ฐ€์žฅ ์ž˜ ์ง€์›๋˜๋‚˜์š”?</h2>
+		<div>
+			<p>
+				๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋ฐ ๋‚ด๋ณด๋‚ด๊ธฐ ์šฉ์œผ๋กœ ์ถ”์ฒœ๋˜๋Š” ํฌ๋งท์€ glTF (GL Transmission Format)์ž…๋‹ˆ๋‹ค. glTF๋Š” ๋Ÿฐํƒ€์ž„ ์—์…‹ ๋”œ๋ฆฌ๋ฒ„๋ฆฌ์— ์ดˆ์ ์ด ๋งž์ถ”์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ „์†ก์— ์ ํ•ฉํ•˜๊ณ  ๋กœ๋”ฉ์ด ๋น ๋ฆ…๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				three.js ๋„๋ฆฌ ์“ฐ์ด๋Š” ํฌ๋งท์ธ FBX, Collada ๋‚˜ OBJ ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฒซ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” glTF ๊ธฐ๋ฐ˜์˜ ์›Œํฌํ”Œ๋กœ์šฐ๋กœ ์ž‘์—…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€, [link:#manual/introduction/Loading-3D-models 3D ๋ชจ๋ธ ๋กœ๋”ฉ]์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+			</p>
+		</div>
+
+		<h2>์˜ˆ์ œ์— ์™œ meta viewport ํƒœ๊ทธ๊ฐ€ ์žˆ๋‚˜์š”?</h2>
+		<div>
+				<code>&lt;meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"&gt;</code>
+
+				<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>ํ™”๋ฉด ํ™•๋Œ€ ์ •๋„๊ฐ€ ๋ฆฌ์‚ฌ์ด์ง• ์‹œ์— ์œ ์ง€๋  ์ˆ˜ ์žˆ๋‚˜์š”?</h2>
+		<p>
+			๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ์นด๋ฉ”๋ผ์˜ ๊ฑฐ๋ฆฌ์™€ ์ƒ๊ด€ ์—†์ด, ํ™”๋ฉด ์‚ฌ์ด์ฆˆ๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค๊ณ  ํ•ด๋„, ๊ฐ™์€ ํฌ๊ธฐ๋กœ ๋ณด์—ฌ์ง€๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค.
+
+			์ด ๊ณต์‹์„ ํ’€๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๋ฐฉ์ •์‹์€ ๊ฐ€์‹œ ๋†’์ด์™€ ๊ฑฐ๋ฆฌ์™€ ๊ด€๋ จ๋œ ์•„๋ž˜ ๊ณต์‹์ž…๋‹ˆ๋‹ค.
+
+			<code>
+visible_height = 2 * Math.tan( ( Math.PI / 180 ) * camera.fov / 2 ) * distance_from_camera;
+			</code>
+            ํ™”๋ฉด ๋†’์ด๋ฅผ ํŠน์ • ๋น„์œจ๋กœ ๋Š˜๋ฆฌ๋ฉด, ๋ชจ๋“  ๊ฐ€์‹œ ๋†’์ด์™€ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ™์€ ๋น„์œจ๋กœ ์ฆ๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+			์ด๋Š” ์นด๋ฉ”๋ผ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์œผ๋กœ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹ ์— ์นด๋ฉ”๋ผ field-of-view๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค..
+			[link:http://jsfiddle.net/Q4Jpu/ ์˜ˆ์ œ].
+		</p>
+
+		<h2>์™œ ์˜ค๋ธŒ์ ํŠธ ์ผ๋ถ€๊ฐ€ ์•ˆ ๋ณด์ผ๊นŒ์š”?</h2>
+		<p>
+			์ด๋Š” ํŽ˜์ด์Šค ์ปฌ๋ง ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฉด๋“ค์€ ์–ด๋А ๋ฐฉํ–ฅ์ด ์–ด๋А ๋ฐฉํ–ฅ์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปฌ๋ง์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋’ทํŽธ์˜ ๋ฉด์„ ์ œ๊ฑฐํ•ด ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ ์˜์‹ฌ๋œ๋‹ค๋ฉด ๋ฌผ์ฒด์˜ ๋ฉด์„ THREE.DoubleSide๋กœ ๋ณ€๊ฒฝํ•ด ๋ณด์„ธ์š”.
+			<code>material.side = THREE.DoubleSide</code>
+		</p>
+	</body>
+</html>

+ 80 - 0
docs/manual/ko/introduction/How-to-create-VR-content.html

@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<html lang="ko">
+
+<head>
+	<meta charset="utf-8">
+	<base href="../../../" />
+	<script src="page.js"></script>
+	<link type="text/css" rel="stylesheet" href="page.css" />
+</head>
+
+<body>
+	<h1>VR ์ปจํ…์ธ ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•[name]</h1>
+
+	<p>
+		์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” three.js๋ฅผ ํ†ตํ•œ ์›น ๊ธฐ๋ฐ˜ VR ์•ฑ์˜ ๊ธฐ๋ณธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
+	</p>
+
+	<h2>์ž‘์—… ์ˆœ์„œ</h2>
+
+	<p>
+		๋จผ์ €, [link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/webxr/VRButton.js VRButton.js]
+		๋ฅผ ํ”„๋กœ์ ํŠธ์— ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.
+	</p>
+
+	<code>
+import { VRButton } from 'three/examples/jsm/webxr/VRButton.js';
+	</code>
+
+	<p>
+        *VRButton.createButton()*์€ ๋‘ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค: VR์—์„œ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๋ฒ„ํŠผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ ์ €๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด
+        VR ์„ธ์…˜์„ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+	</p>
+
+	<code>
+document.body.appendChild( VRButton.createButton( renderer ) );
+	</code>
+
+	<p>
+		๋‹ค์Œ์œผ๋กœ, *WebGLRenderer* ์ธ์Šคํ„ด์Šค์—๊ฒŒ XR ๋ Œ๋”๋ง์„ ํ—ˆ์šฉํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.
+	</p>
+
+	<code>
+renderer.xr.enabled = true;
+	</code>
+
+	<p>
+        ๋งˆ์ง€๋ง‰์œผ๋กœ, ์ž์ฃผ ์“ฐ์ด๋Š” *window.requestAnimationFrame()* ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฃจํ”„๋ฅผ ์ˆ˜์ •ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 
+        VR ํ”„๋กœ์ ํŠธ์—์„œ๋Š” [page:WebGLRenderer.setAnimationLoop setAnimationLoop]๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+		๊ฐ€์žฅ ๊ฐ„์†Œํ™”๋œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
+	</p>
+
+	<code>
+renderer.setAnimationLoop( function () {
+
+	renderer.render( scene, camera );
+
+} );
+	</code>
+
+	<h2>๋‹ค์Œ ์ ˆ์ฐจ</h2>
+
+	<p>
+		์‹คํ–‰์„ ์œ„ํ•œ ์ž‘์—… ์ ˆ์ฐจ์™€ ๊ด€๋ จ๋œ ๊ณต์‹ WebVR ์˜ˆ์ œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.<br /><br />
+
+		[example:webxr_vr_ballshooter WebXR / VR / ballshooter]<br />
+		[example:webxr_vr_cubes WebXR / VR / cubes]<br />
+		[example:webxr_vr_dragging WebXR / VR / dragging]<br />
+		[example:webxr_vr_lorenzattractor WebXR / VR / lorenzattractor]<br />
+		[example:webxr_vr_paint WebXR / VR / paint]<br />
+		[example:webxr_vr_panorama_depth WebXR / VR / panorama_depth]<br />
+		[example:webxr_vr_panorama WebXR / VR / panorama]<br />
+		[example:webxr_vr_rollercoaster WebXR / VR / rollercoaster]<br />
+		[example:webxr_vr_sandbox WebXR / VR / sandbox]<br />
+		[example:webxr_vr_sculpt WebXR / VR / sculpt]<br />
+		[example:webxr_vr_video WebXR / VR / video]
+	</p>
+
+</body>
+
+</html>

+ 115 - 0
docs/manual/ko/introduction/How-to-dispose-of-objects.html

@@ -0,0 +1,115 @@
+<!DOCTYPE html>
+<html lang="ko">
+
+<head>
+	<meta charset="utf-8">
+	<base href="../../../" />
+	<script src="page.js"></script>
+	<link type="text/css" rel="stylesheet" href="page.css" />
+</head>
+
+<body>
+	<h1>์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•([name])</h1>
+
+	<p>
+        ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ค‘์š”ํ•œ ํ•œ ๊ฐ€์ง€๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—”ํ‹ฐํ‹ฐ๋ฅผ ํ๊ธฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+        *three.js* ์œ ํ˜•์˜ ์ธ์Šคํ„ด์Šค๋Š” ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์ผ์ •๋Ÿ‰์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ *three.js*๋Š” ํŠน์ • ๊ฐœ์ฒด์— ๋Œ€ํ•ด ๊ธฐํ•˜ํ•™์  ๊ตฌ์กฐ๋‚˜ ์†Œ์žฌ WebGL ๊ด€๋ จ ๋ฌผ์ฒด(์˜ˆ: ๋ฒ„ํผ ๋˜๋Š” ์‰์ด๋” ํ”„๋กœ๊ทธ๋žจ)์˜ ๋ Œ๋”๋ง์— ํ•„์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 
+        ์ด๋Ÿฌํ•œ ์˜ค๋ธŒ์ ํŠธ๋“ค์€ ์ž๋™์œผ๋กœ ํ๊ธฐ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ์ฃผ์˜ํ•˜์„ธ์š”. ๋Œ€์‹ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ž์›์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํ•œ API๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+        ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ์ด API์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๊ณผ ์ด์™€ ๊ด€๋ จํ•ด์„œ ์–ด๋–ค ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…์„ ์ œ๊ณตํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
+	</p>
+
+	<h2>๊ธฐํ•˜ํ•™์  ๋ฌผ์ฒด</h2>
+
+	<p>
+        ๊ธฐํ•˜ํ•™์  ๋ฌผ์ฒด๋Š” ์†์„ฑ ์ง‘ํ•ฉ์œผ๋กœ ์ •์˜๋œ ๊ผญ์ง“์  ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋Š”๋ฐ, *three.js*๋Š” ์†์„ฑ๋งˆ๋‹ค ํ•˜๋‚˜์˜ [link: https://developer.mozilla.org/en-US/docs/Web/API/WebGLBuffer WebGLBuffer] ์œ ํ˜•์˜ ๋Œ€์ƒ์„ ๋งŒ๋“ค์–ด ๋‚ด๋ถ€์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
+        ์ด๋Ÿฌํ•œ ์—”ํ‹ฐํ‹ฐ๋Š” [page:BufferGeometry.dispose]๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งŒ ํ๊ธฐ๋ฉ๋‹ˆ๋‹ค.
+        ๋งŒ์•ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ธฐํ•˜ํ•™์„ ๋”์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ด ๋ฐฉ๋ฒ•์„ ์‹คํ–‰ํ•˜์—ฌ ๋ชจ๋“  ๊ด€๋ จ ์ž์›์„ ํ๊ธฐํ•˜์„ธ์š”.
+	</p>
+
+	<h2>์†Œ์žฌ</h2>
+
+	<p>
+        ์†Œ์žฌ๋Š” ๋ฌผ์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ Œ๋”๋ง๋˜๋Š”์ง€๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. *three.js*๋Š” ์†Œ์žฌ์— ์ •์˜๋œ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ Œ๋”๋ง์„ ์œ„ํ•œ ํ•˜๋‚˜์˜ ์…ฐ์ด๋” ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.
+        ์…ฐ์ด๋” ํ”„๋กœ๊ทธ๋žจ์€ ํ•ด๋‹น ์†Œ์žฌ๊ฐ€ ํ๊ธฐ๋œ ํ›„์—๋งŒ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์ƒ์˜ ์ด์œ ๋กœ *three.js*๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ์…ฐ์ด๋” ํ”„๋กœ๊ทธ๋žจ์„ ์žฌ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์…ฐ์ด๋” ํ”„๋กœ๊ทธ๋žจ์€ ๋ชจ๋“  ๊ด€๋ จ๋œ ์†Œ์žฌ๋“ค์ด ์‚ฌ๋ผ์ง„ ํ›„์—์•ผ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.
+        [page:Material.dispose]() ๋ฅผ ์‹คํ–‰ํ•จ์œผ๋กœ์จ ์†Œ์žฌ๋ฅผ ํ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+	</p>
+
+	<h2>ํ…์Šค์ณ</h2>
+
+	<p>
+        ์†Œ์žฌ์˜ ํ๊ธฐ๋Š” ํ…์Šค์ณ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด ํ•˜๋‚˜์˜ ํ…์Šค์ณ๋ฅผ ์—ฌ๋Ÿฌ ์†Œ์žฌ๋กœ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+        [page:Texture] ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค three.js๋Š” ๋‚ด๋ถ€์—์„œ [link: https://developer.mozilla.org/en-US/docs/Web/API/WebGLTexture WebGLTexture] ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
+        buffer์™€ ๋น„์Šทํ•˜๊ฒŒ, ์ด ์˜ค๋ธŒ์ ํŠธ๋Š” [page:Texture.dispose]() ํ˜ธ์ถœ๋กœ๋งŒ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
+	</p>
+
+	<h2>๋ Œ๋”๋ง ๋Œ€์ƒ</h2>
+
+	<p>
+        [page:WebGLRenderTarget] ํƒ€์ž…์˜ ์˜ค๋ธŒ์ ํŠธ๋Š” [link: https://developer.mozilla.org/en-US/docs/Web/API/WebGLTexture WebGLTexture]์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ• ๋‹น๋˜์–ด ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ,
+        [link: https://developer.mozilla.org/en-US/docs/Web/API/WebGLFramebuffer WebGLFramebuffer]์™€ [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderbuffer WebGLRenderbuffer] ๋„ ํ• ๋‹น๋˜์–ด, 
+        ์ปค์Šคํ…€ ๋ Œ๋”๋ง ๋ชฉํ‘œ๋ฅผ ์‹ค์ฒดํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ธŒ์ ํŠธ๋Š” [page:WebGLRenderTarget.dispose]()๋ฅผ ์‹คํ–‰ํ•ด์•ผ๋งŒ ํ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+	</p>
+
+	<h2>๊ทธ๋ฐ–์˜ ๊ฒƒ๋“ค</h2>
+
+	<p>
+        ์ปจํŠธ๋กค๋Ÿฌ๋‚˜ ํ›„๊ธฐ ์ฒ˜๋ฆฌ ํ”„๋กœ์„ธ์Šค์ฒ˜๋Ÿผ *dispose()* ๋ฉ”์„œ๋“œ๊ฐ€ ์ œ๊ณต๋˜์–ด ๋‚ด๋ถ€ ์ด๋ฒคํŠธ๋ฆฌ์Šค๋„ˆ๋‚˜ ๋ Œ๋”๋ง ๋Œ€์ƒ์„ ํ๊ธฐํ•˜๋Š” examples ํด๋”์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.
+        ์ผ๋ฐ˜์ ์œผ๋กœ API๋‚˜ ํŒŒ์ผ์„ ์—ด๋žŒํ•˜๊ณ  *dispose()* ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ๋‹น์—ฐํžˆ ๊ทธ ๋ฉ”์„œ๋“œ๋ฅผ ํ๊ธฐ ์‹œ์— ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.e it when cleaning things up.
+	</p>
+
+	<h2>FAQ</h2>
+
+	<h3>*three.js*๋Š” ์™œ ์ž๋™์œผ๋กœ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ๊ธฐ ๋ชปํ•˜๋‚˜์š”?</h3>
+
+	<p>
+        ์ด ๋ฌธ์ œ๊ฐ€ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ์ œ๊ธฐ๋ผ ์˜จ ๋งŒํผ ํ™•์‹คํ•œ ๋Œ€๋‹ต์„ ํ•ด ๋“œ๋ ค์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, *three.js*๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“  ์—”ํ‹ฐํ‹ฐ(์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐํ•˜์ฒด ๋˜๋Š” ์†Œ์žฌ)์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์ด๋‚˜ ์—ญํ•  ๋ฒ”์œ„๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๋ฉฐ, ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฑ…์ž„์ž…๋‹ˆ๋‹ค.
+        ์˜ˆ๋ฅผ ๋“ค์–ด, ๋งŒ์•ฝ ํ•˜๋‚˜์˜ ์†Œ์žฌ๊ฐ€ ํ˜„์žฌ ๋ Œ๋”๋ง์— ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์ง€ ์•Š๋”๋ผ๋„, ๋ฐ”๋กœ ๋‹ค์Œ ํ”„๋ ˆ์ž„์— ํ•„์ˆ˜์ ์ธ ์†Œ์žฌ์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋งŒ์•ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํŠน์ • ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์‚ญ์ œ๋˜์–ด๋„ ๋œ๋‹ค๊ณ  ํ•˜๋ฉด,
+        ํ•ด๋‹นํ•˜๋Š” *dispose()* ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์—”์ง„์— ์•Œ๋ ค์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+	</p>
+
+	<h3>ํ™”๋ฉด์—์„œ mesh๋ฅผ ์ง€์šฐ๋Š” ๊ฒƒ๋„ geometry์™€ material์„ ํ๊ธฐ์‹œํ‚ค๋‚˜์š”?</h3>
+
+	<p>
+		์•„๋‹ˆ์š”, *dispose()*๋ฅผ ํ†ตํ•ด ๋ช…์‹œ์ ์œผ๋กœ geometry์™€ material์„ ํ๊ธฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. geometry์™€ material์€ mesh์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 3D ์˜ค๋ธŒ์ ํŠธ์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•˜์„ธ์š”.
+	</p>
+
+	<h3>*three.js*์—์„œ ์บ์‹œํ™”๋œ ์˜ค๋ธŒ์ ํŠธ์˜ ์ˆ˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‚˜์š”?</h3>
+
+	<p>
+        ๋„ค, ๋ Œ๋”๋Ÿฌ์˜ ๊ทธ๋ž˜๋น… ๋ณด๋“œ์™€ ๋ Œ๋”๋ง ํ”„๋กœ์„ธ์Šค์˜ ํ†ต๊ณ„ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํŠน์ˆ˜ ์†์„ฑ์ธ [page: WebGLRenderer.info]๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
+        ๋‹ค๋ฅธ ๊ฒƒ ๋ณด๋‹ค๋„, ์ด๋ฅผ ํ†ตํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ ๋งŽ์€ ํ…์Šค์ณ์™€ ๊ธฐํ•˜ํ•™, ์…ฐ์ด๋” ํ”„๋กœ๊ทธ๋žจ์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+        ๋งŒ์•ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค๋ฉด, ๋ฐ”๋กœ ์ด ์†์„ฑ์„ ์กฐ์ ˆํ•˜์—ฌ ์‰ฝ๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ถœ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+	</p>
+
+	<h3>์ด๋ฏธ์ง€๊ฐ€ ์•„์ง ๋กœ๋”ฉ์ด ์•ˆ ๋๋Š”๋ฐ ํ…์Šค์ณ์—์„œ *dispose()*๋ฅผ ํ•ด๋ฒ„๋ฆฌ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?</h3>
+
+	<p>
+		ํ…์Šค์ณ์™€ ๊ด€๋ จ๋œ ๋‚ด๋ถ€ ์ž์›์€ ์ด๋ฏธ์ง€๊ฐ€ ์™„์ „ํžˆ ๋กœ๋”ฉ๋์„๋•Œ๋ฐ–์— ํ• ๋‹น์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด๋ฏธ์ง€ ๋กœ๋”ฉ ์ „์— ํ…์Šค์ณ๋ฅผ ํ๊ธฐํ•ด๋ฒ„๋ ธ๋‹ค๋ฉด,
+		์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๋Ÿฐ ์ž์›๋„ ํ• ๋‹น๋˜์ง€ ์•Š์•˜๊ณ  ์ง€์šธ ๊ฒƒ๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
+	</p>
+
+	<h3>*dispose()*๋ฅผ ํ•˜๊ณ  ๋‚˜์„œ ๋‚˜์ค‘์— ๋‹ค์‹œ ๊ฐ๊ฐ์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?</h3>
+
+	<p>
+        ์‚ญ์ œ๋œ ๋‚ด๋ถ€ ์ž์›์ด ์—”์ง„์—์„œ ๋‹ค์‹œ ์ƒ์„ฑ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒ ์ง€๋งŒ ํ”„๋ ˆ์ž„์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๊ณ  
+        ํŠนํžˆ ์…ฐ์ด๋” ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผํ•  ๋•Œ ๋” ๋‘๋“œ๋Ÿฌ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+	</p>
+
+	<h3>*three.js* ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์•ฑ์—์„œ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผ ํ• ๊นŒ์š”? ์–ธ์ œ ํ๊ธฐํ•ด์•ผ๋˜๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ์ฃ ?</h3>
+
+	<p>
+        ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์ ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ํ•ด๋‹ต์€ ์—†์Šต๋‹ˆ๋‹ค. *dispose()*๋Š” ๊ตฌ์ฒด์ ์ธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ขŒ์šฐ๋ฉ๋‹ˆ๋‹ค. ๊ตณ์ด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ž๊พธ ํ๊ธฐํ•  ํ•„์š”๋Š” ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•ด ๋‘์„ธ์š”.
+        ๋‹ค์–‘ํ•œ ๋ ˆ๋ฒจ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒŒ์ž„์ด ์ข‹์€ ์˜ˆ๊ฐ€ ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ ˆ๋ฒจ์ด ๋ฐ”๋€Œ๋ฉด, ํ๊ธฐ๋ฅผ ํ•  ๋•Œ์ž…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์˜ค๋ž˜๋œ ํ™”๋ฉด์„ ์ง€๋‚˜๊ฐ€๋ฉด์„œ ์˜ค๋ž˜๋œ ์†Œ์žฌ, ๊ธฐํ•˜ํ•™, ํ…์Šค์ณ๋ฅผ ๋ชจ๋‘ ํ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+        ์•ž์˜ ์žฅ์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฐ”์™€ ๊ฐ™์ด ๋งŒ์•ฝ ์—ฌ์ „ํžˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ๊ธฐํ•ด๋„ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋ฅผ ๋งŒ๋“ค์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹จ์ผ ํ”„๋ ˆ์ž„์—์„œ ํผํฌ๋จผ์Šค๊ฐ€ ๋–จ์–ด์ง€๋Š” ์ •๋„๊ฐ€ ๊ฐ€์žฅ ์•ˆ ์ข‹์€ ์ •๋„์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+	</p>
+
+	<h2>dispose() ์‚ฌ์šฉ๋ฒ• ์˜ˆ์ œ</h2>
+
+	<p>
+		[example:webgl_test_memory WebGL / test / memory]<br />
+		[example:webgl_test_memory2 WebGL / test / memory2]<br />
+	</p>
+
+</body>
+
+</html>

+ 150 - 0
docs/manual/ko/introduction/How-to-run-things-locally.html

@@ -0,0 +1,150 @@
+<!DOCTYPE html>
+<html lang="ko">
+
+<head>
+    <meta charset="utf-8">
+    <base href="../../../" />
+    <script src="page.js"></script>
+    <link type="text/css" rel="stylesheet" href="page.css" />
+</head>
+
+<body>
+    <h1>๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๊ตฌ๋™ ๋ฐฉ๋ฒ•([name])</h1>
+    <p>
+        ๋งŒ์•ฝ procedural geometries ๋งŒ์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ํ…์Šค์ณ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š์•˜๋‹ค๋ฉด, ์›นํŽ˜์ด์ง€๋Š” ํŒŒ์ผ ๋งค๋‹ˆ์ €์—์„œ HTMLํŒŒ์ผ์„ ๋”๋ธ”ํด๋ฆญํ•˜๋Š” ์ฆ‰์‹œ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ๊ฒƒ์ด๊ณ ,
+        ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ์ž‘์—…๋˜๋Š” ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์ฃผ์†Œ์ฐฝ์— <em>file:///yourFile.html</em> ๋ฅผ ์น˜๋ฉด ํ™•์ธ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.).
+    </p>
+
+    <h2>์™ธ๋ถ€ ํŒŒ์ผ์—์„œ ์ปจํ…์ธ  ๋ถˆ๋Ÿฌ์˜ค๊ธฐ</h2>
+    <div>
+        <p>
+            ์™ธ๋ถ€ ํŒŒ์ผ์—์„œ ๋ชจ๋ธ์ด๋‚˜ ํ…์Šค์ณ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ, ๋ธŒ๋ผ์šฐ์ €์˜' [link:http://en.wikipedia.org/wiki/Same_origin_policy same origin policy]
+            ๋ณด์•ˆ ์ œํ•œ๋•Œ๋ฌธ์— ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ๊ฐ€ ์‹คํŒจ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+        </p>
+
+        <p>์ด ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.</p>
+
+        <ol>
+            <li>
+                ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋กœ์ปฌ ํŒŒ์ผ์˜ ๋ณด์•ˆ์„ค์ •์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด<code>file:///yourFile.html</code>๋กœ ๋“ค์–ด๊ฐ€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+            </li>
+            <li>
+                ํŒŒ์ผ์„ ๋กœ์ปฌ ์›น ์„œ๋ฒ„์—์„œ ๋Œ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. <code>http://localhost/yourFile.html</code>๋กœ ๋“ค์–ด๊ฐ€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+            </li>
+        </ol>
+
+        <p>
+            1๋ฒˆ ๋ฐฉ๋ฒ•์„ ์“ธ ๋•Œ, ์ผ๋ฐ˜ ์›น์„œํ•‘์„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์“ฐ๊ฒŒ๋˜๋ฉด ๋ณด์•ˆ์ ์œผ๋กœ ์ทจ์•ฝํ•ด์ง€๋Š” ์ ์„ ์ธ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•ˆ์ „ํ•œ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด
+            ๊ฐ๊ฐ์˜ ๋ธŒ๋ผ์šฐ์ € ํ”„๋กœํ•„, ๋ฐ”๋กœ๊ฐ€๊ธฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค. ์ฐจ๋ก€๋Œ€๋กœ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…์‹œ๋‹ค.
+        </p>
+    </div>
+
+
+    <h2>๋กœ์ปฌ ์„œ๋ฒ„์—์„œ ์‹คํ–‰</h2>
+    <div>
+        <p>
+            ๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ„๋‹จํ•œ HTTP ์„œ๋ฒ„๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. [link:https://www.apache.org/ Apache]๋‚˜ [link:https://nginx.org
+            NGINX]๊ฐ™์€ ํ”„๋กœ๋•์…˜์šฉ ์ •๋„๋กœ ๊ฐ–์ถ”์–ด์ ธ ์žˆ์ง€๋Š” ์•Š์ง€๋งŒ, three.js๋ฅผ ํ…Œ์ŠคํŠธํ•ด๋ณด๊ธฐ์—๋Š” ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
+        </p>
+
+        <h3>์œ ๋ช… ์ฝ”๋“œ ์—๋””ํ„ฐ ๊ด€๋ จ ํ”Œ๋Ÿฌ๊ทธ์ธ</h3>
+        <div>
+            <p>๋ช‡๋ช‡ ์ฝ”๋“œ ์—๋””ํ„ฐ๋“ค์€ ๊ฐ„๋‹จํ•œ ์„œ๋ฒ„๋ฅผ ํ•„์š”ํ•  ๋•Œ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งˆ๋ จํ•ด ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.</p>
+            <ul>
+                <li>Visual Studio Code์˜ [link:https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer Live Server]
+                    .</li>
+                <li>Atom์˜ [link:https://atom.io/packages/atom-live-server Live Server].</li>
+            </ul>
+        </div>
+
+        <h3>Servez</h3>
+        <div>
+            <p>
+                [link:https://greggman.github.io/servez Servez]๋Š” GUI ํ™˜๊ฒฝ์˜ ๊ฐ„๋‹จํ•œ ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
+            </p>
+        </div>
+
+        <h3>Node.js http-server</h3>
+        <div>
+            <p>Node.js์—๋Š” ๊ฐ„๋‹จํ•œ HTTP ์„œ๋ฒ„ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ ๋ฐฉ๋ฒ•:</p>
+            <code>npm install http-server -g</code>
+
+            <p>์‹คํ–‰ (๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ):</p>
+            <code>http-server . -p 8000</code>
+        </div>
+
+        <h3>Python ์„œ๋ฒ„</h3>
+        <div>
+            <p>
+                [link:http://python.org/ Python]์ด ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด, ์ปค๋งจ๋“œ๋ผ์ธ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์—์„œ):
+            </p>
+            <code>
+//Python 2.x
+python -m SimpleHTTPServer
+
+//Python 3.x
+python -m http.server
+				</code>
+
+            <p>์ด ์ฝ”๋“œ๋Š” ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒŒ์ผ๋“ค์„ localhost 8000๋ฒˆ ํฌํŠธ๋กœ ๋‚ด๋ณด๋‚ด ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฃผ์†Œ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
+                </p>
+
+            <code>http://localhost:8000/</code>
+        </div>
+
+        <h3>Ruby ์„œ๋ฒ„</h3>
+        <div>
+            <p>Ruby๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด, ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</p>
+            <code>
+ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
+				</code>
+        </div>
+
+        <h3>PHP ์„œ๋ฒ„</h3>
+        <div>
+            <p>PHP๋„ ๋‚ด์žฅ๋œ ์›น์„œ๋ฒ„๊ฐ€ ์žˆ์–ด, php 5.4.0๋ถ€ํ„ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™œ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค:</p>
+            <code>php -S localhost:8000</code>
+        </div>
+
+        <h3>Lighttpd</h3>
+        <div>
+            <p>
+                Lighttpd๋Š” ์ผ๋ฐ˜์ ์ธ ๋ชฉ์ ์˜ ์•„์ฃผ ๊ฐ€๋ฒผ์šด ์›น์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ์—๋Š” Homebrew๋ฅผ ํ†ตํ•ด OSX์— ์„ค์น˜ํ•˜๋Š” ์˜ˆ๋ฅผ ์†Œ๊ฐœํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+                ๋‹ค๋ฅธ ์„œ๋ฒ„๋“ค๊ณผ๋Š” ๋‹ฌ๋ฆฌ, lighttpd ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„๋กœ ์‚ฌ์šฉ๋  ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ–์ถ”์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
+            </p>
+
+            <ol>
+                <li>
+                    homebrew๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
+                    <code>brew install lighttpd</code>
+                </li>
+                <li>
+                    ์›น์„œ๋ฒ„์—์„œ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— lighttpd.conf๋ผ๋Š” ์„ค์ •ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
+                    ์˜ˆ์ œ๋Š” [link:http://redmine.lighttpd.net/projects/lighttpd/wiki/TutorialConfiguration ์—ฌ๊ธฐ]์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+                </li>
+                <li>
+                    ์„ค์ • ํŒŒ์ผ์—์„œ, server.document-root๋ฅผ ์„œ๋ฒ„๋กœ ์“ฐ๊ณ ์ž ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+                </li>
+                <li>
+                    ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
+                    <code>lighttpd -f lighttpd.conf</code>
+                </li>
+                <li>
+                    http://localhost:3000/ ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ์„ ํƒํ•œ ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒŒ์ผ๋“ค์„ ๋ณด์—ฌ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+                </li>
+            </ol>
+        </div>
+        <h3>IIS</h3>
+        <div>
+            <p>๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ IIS๋ฅผ ์›น์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ์‹คํ–‰ํ•˜๊ธฐ์— ์•ž์„œ .fbx ํ™•์žฅ์ž์™€ ๊ด€๋ จ๋œ MIME ํƒ€์ž… ์„ค์ •์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</p>
+            <code>File name extension: fbx        MIME Type: text/plain</code>
+            <p>๊ธฐ๋ณธ์ ์œผ๋กœ IIS๋Š” .fbx, .obj ํŒŒ์ผ์˜ ๋‹ค์šด๋กœ๋“œ๋ฅผ ๋ง‰์•„ ๋†“์•˜์Šต๋‹ˆ๋‹ค. IIS์—์„œ ์ด๋Ÿฌํ•œ ํŒŒ์ผ๋“ค์ด ๋‹ค์šด๋กœ๋“œ ๋  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</p>
+        </div>
+        <p>
+            ๋‹ค๋ฅธ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” Stack Overflow์˜ [link:http://stackoverflow.com/q/12905426/24874 ์ด๊ณณ์—์„œ ํ† ๋ก ]์„ ํ™•์ธํ•ด ๋ณด์„ธ์š”.
+        </p>
+    </div>
+
+</body>
+
+</html>

+ 249 - 0
docs/manual/ko/introduction/How-to-update-things.html

@@ -0,0 +1,249 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8">
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>์˜ค๋ธŒ์ ํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•([name])</h1>
+		<div>
+			<p>๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋™์œผ๋กœ ์žฅ๋ฉด์— ์ถ”๊ฐ€๋์„ ๋•Œ ์ž์‹ ๋“ค์˜ ํ–‰๋ ฌ๊ตฌ์กฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.</p>
+			<code>
+const object = new THREE.Object3D();
+scene.add( object );
+			</code>
+			ํ˜น์€ ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ์˜ ์ž์‹์œผ๋กœ ์žฅ๋ฉด์— ์ถ”๊ฐ€๋  ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.
+			<code>
+const object1 = new THREE.Object3D();
+const object2 = new THREE.Object3D();
+
+object1.add( object2 );
+scene.add( object1 ); //object1๊ณผ object2๋Š” ์ž๋™์œผ๋กœ ์ž์‹ ๋“ค์˜ ํ–‰๋ ฌ๊ตฌ์กฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+			</code>
+		</div>
+
+		<p>ํ•˜์ง€๋งŒ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๊ณ ์ •๋˜์–ด์•ผ ํ•œ๋‹ค๋ฉด, ์ด ์„ค์ •์„ ํ’€๊ณ  ์ˆ˜๋™์œผ๋กœ ํ–‰๋ ฌ๊ตฌ์กฐ๋ฅผ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</p>
+
+		<code>
+object.matrixAutoUpdate  = false;
+object.updateMatrix();
+		</code>
+
+		<h2>BufferGeometry</h2>
+		<div>
+			<p>
+				BufferGeometries๋Š” [page:BufferAttribute buffers]์— ๋‹ค์–‘ํ•œ ์ •๋ณด(๊ผญ์ง“์  ์œ„์น˜, ๋ฉด ์ˆœ์„œ, ๋ฒ•์„ , ์ƒ‰๊น”,
+				UV, ๋ชจ๋“  ์ปค์Šคํ…€ ์†์„ฑ๋“ค)๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. - ์ด๋Š”  
+				[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays typed arrays]๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
+				์ด๋Š” ๊ธฐ๋ณธ Geometries๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ, ๊ทธ ๋Œ€์‹  ์ž‘์—…ํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
+			</p>
+			<p>
+                BufferGeometries๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จํ•ด์„œ, buffers์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
+                (์ž‘์—…์ด ์•„์ฃผ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์—, ์ƒˆ geometry๋ฅผ ๋งŒ๋“œ๋Š” ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค).
+				๊ทธ ๋Œ€์‹ ์— buffers์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				์ด๋Š” ๊ณง ๋งŒ์•ฝ BufferGeometry์˜ ์†์„ฑ์ด ์ฆ๊ฐ€ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ธก์ด ๋œ๋‹ค๋ฉด, ์˜ˆ๋ฅผ ๋“ค์–ด ๊ผญ์ง“์ ์˜ ๊ฐฏ์ˆ˜๋ผ๋ฉด, 
+				๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๊ผญ์ง“์ ๋“ค์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ buffer๋ฅผ ๋ฏธ๋ฆฌ ์ค€๋น„ํ•ด ๋†“์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+				๋ฌผ๋ก  ์ด๋Š” ๋‹น์‹ ์ด ์‚ฌ์šฉํ•  BufferGeometry์˜ ์ƒํ•œ์น˜๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ผ๋Š” ๋œป์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค - ํšจ์œจ์ ์œผ๋กœ ๋ฌดํ•œ๋Œ€๋กœ ํ™•์žฅ๋˜๋Š” BufferGeometry๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค.
+			</p>
+			<p>
+				๋ Œ๋”๋ง ์‹œ์ ์— ํ™•์žฅ๋˜๋Š” ์„ ์„ ์˜ˆ๋กœ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. buffer์—๋Š” 500 ๊ฐœ์˜ ๊ผญ์ง“์ ์„ ํ• ๋‹นํ•˜๊ฒ ์ง€๋งŒ ์ฒ˜์Œ์—๋Š” [page:BufferGeometry.drawRange]๋ฅผ ์ด์šฉํ•ด ๋‘ ๊ฐœ๋งŒ ๊ทธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค..
+			</p>
+			<code>
+const MAX_POINTS = 500;
+
+// geometry
+const geometry = new THREE.BufferGeometry();
+
+// attributes
+const positions = new Float32Array( MAX_POINTS * 3 ); // 3 vertices per point
+geometry.setAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
+
+// draw range
+const drawCount = 2; // draw the first 2 points, only
+geometry.setDrawRange( 0, drawCount );
+
+// material
+const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );
+
+// line
+const line = new THREE.Line( geometry,  material );
+scene.add( line );
+			</code>
+		 	<p>
+				๊ทธ ๋‹ค์Œ, ์•„๋ž˜์™€ ๊ฐ™์€ ํŒจํ„ด์œผ๋กœ ๋ฌด์ž‘์œ„๋กœ ์„ ์— ์ ์„ ์ƒ์„ฑํ•ด ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค:
+			</p>
+			<code>
+const positions = line.geometry.attributes.position.array;
+
+let x, y, z, index;
+x = y = z = index = 0;
+
+for ( let i = 0, l = MAX_POINTS; i < l; i ++ ) {
+
+    positions[ index ++ ] = x;
+    positions[ index ++ ] = y;
+    positions[ index ++ ] = z;
+
+    x += ( Math.random() - 0.5 ) * 30;
+    y += ( Math.random() - 0.5 ) * 30;
+    z += ( Math.random() - 0.5 ) * 30;
+
+}
+			</code>
+			<p>
+				์ฒซ ๋ Œ๋”๋ง ์ดํ›„์— <em>์ ์˜ ๊ฐฏ์ˆ˜</em>๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•˜์„ธ์š”:
+			</p>
+			<code>
+line.geometry.setDrawRange( 0, newValue );
+			</code>
+			<p>
+				์ฒซ ๋ Œ๋”๋ง ์ดํ›„์— position ๋ฐ์ดํ„ฐ ์ˆ˜์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, needsUpdate ํ”Œ๋ž˜๊ทธ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
+			</p>
+			<code>
+line.geometry.attributes.position.needsUpdate = true; // required after the first render
+			</code>
+
+			<p>
+				์ฒซ ๋ Œ๋”๋ง ์ดํ›„์— position ๋ฐ์ดํ„ฐ ์ˆ˜์น˜๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค๋ฉด, bounding volumes๋ฅผ ์žฌ๊ณ„์‚ฐํ•ด์„œ 
+				๋‹ค๋ฅธ ์—”์ง„์˜ ์ ˆ๋‘์ฒด ์ปฌ๋ง ํ˜น์€ ํ—ฌํผ๊ฐ™์€ ํŠน์„ฑ๋“ค์ด ์ ์ ˆํžˆ ์ž‘๋™ํ•˜๋„๋ก ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
+			</p>
+			<code>
+line.geometry.computeBoundingBox();
+line.geometry.computeBoundingSphere();
+			</code>
+
+			<p>
+				[link:http://jsfiddle.net/w67tzfhx/ Here is a fiddle] showing an animated line which you can adapt to your use case.
+			</p>
+
+			<h3>Examples</h3>
+
+			<p>
+				[example:webgl_custom_attributes WebGL / custom / attributes]<br />
+				[example:webgl_buffergeometry_custom_attributes_particles WebGL / buffergeometry / custom / attributes / particles]
+			</p>
+
+		</div>
+
+		<h2>Geometry</h2>
+		<div>
+			<p>
+				์•„๋ž˜์˜ ํ”Œ๋ž˜๊ทธ๋Š” ๋‹ค์–‘ํ•œ geometry ์†์„ฑ์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ์†์„ฑ์˜ ํ”Œ๋ž˜๊ทธ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์—…๋ฐ์ดํŠธ์— ์ž์›์ด ๋น„ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 
+				ํ•œ ๋ฒˆ buffers๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด, ์ด ํ”Œ๋ž˜๊ทธ๋“ค์€ ์ž๋™์œผ๋กœ false๋กœ ๋ฆฌ์…‹๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. buffers์˜ ์—…๋ฐ์ดํŠธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ํ•ญ์ƒ true๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+				์ด ์ ์€ [page:Geometry]์—๋งŒ ์ ์šฉ๋˜๊ณ  [page:BufferGeometry]์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ๋„ ์ฃผ์˜ํ•ด์ฃผ์„ธ์š”.
+			</p>
+			<code>
+const geometry = new THREE.Geometry();
+geometry.verticesNeedUpdate = true;
+geometry.elementsNeedUpdate = true;
+geometry.morphTargetsNeedUpdate = true;
+geometry.uvsNeedUpdate = true;
+geometry.normalsNeedUpdate = true;
+geometry.colorsNeedUpdate = true;
+geometry.tangentsNeedUpdate = true;
+			</code>
+
+			<p>
+				[link:https://github.com/mrdoob/three.js/releases/tag/r66 r66] ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” meshes
+				์— ์ถ”๊ฐ€์ ์œผ๋กœ <em>dynamic</em> ํ”Œ๋ž˜๊ทธ๊ฐ€ true์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๋‚ด๋ถ€ typed arrays ์œ ์ง€๋ฅผ ์œ„ํ•ด):
+			</p>
+
+			<code>
+// removed after r66
+geometry.dynamic = true;
+			</code>
+
+		</div>
+
+		<h2>๋ฌผ์ฒด(Materials)</h2>
+		<div>
+			<p>๋ชจ๋“  uniforms ๊ฐ’๋“ค์€ ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค๋ฉด colors, textures, opacity, etc), ๊ฐ’๋“ค์€ shader์— ๋งค ํ”„๋ ˆ์ž„ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.</p>
+
+			<p>GLstate์™€ ๊ด€๋ จ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค ๋˜ํ•œ ์–ธ์ œ๋‚˜ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.(depthTest, blending, polygonOffset, ๋“ฑ).</p>
+
+			<p>์•„๋ž˜ ์†์„ฑ๋“ค์€ ๋Ÿฐํƒ€์ž„์—์„œ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (์ ์–ด๋„ ๋ฌผ์ฒด๊ฐ€ ํ•œ ๋ฒˆ ๋ Œ๋”๋ง ๋œ ์ดํ›„):</p>
+			<ul>
+				<li>uniforms์˜ ๊ฐฏ์ˆ˜์™€ ํƒ€์ž…</li>
+				<li>์•„๋ž˜ ํ•ญ๋ชฉ๋“ค์˜ ์‚ฌ์šฉ ํ˜น์€ ๋น„์‚ฌ์šฉ ์—ฌ๋ถ€
+					<ul>
+						<li>texture</li>
+						<li>fog</li>
+						<li>vertex colors</li>
+						<li>skinning</li>
+						<li>morphing</li>
+						<li>shadow map</li>
+						<li>alpha test</li>
+					</ul>
+				</li>
+			</ul>
+
+			<p>์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์€ ์ƒˆ๋กœ์šด shader ํ”„๋กœ๊ทธ๋žจ ์ƒ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</p>
+			<code>material.needsUpdate = true</code>
+
+			<p>์ด ๊ธฐ๋Šฅ์€ ๋งค์šฐ ๋А๋ฆฌ๊ณ  ํ”„๋ ˆ์ž„์ด ๋Š๊ฒจ๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ (ํŠนํžˆ Windows์ฒ˜๋Ÿผ, shader ํŽธ์ง‘์ด DirectX์—์„œ OpenGL๋ณด๋‹ค ๋А๋ฆฐ ๊ฒฝ์šฐ)์„ ๋ช…์‹ฌํ•ด์ฃผ์„ธ์š”.</p>
+
+			<p>์ข€ ๋” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ๊ฐ’์ด 0์ธ ๋น›, ํฐ์ƒ‰ ํ…์Šค์ณ, ๋ฐ€๋„๊ฐ€ 0์ธ ์•ˆ๊ฐœ ๋“ฑ์˜ "๊ฐ€์ƒ" ๊ฐ’์„ ๊ฐ€์ง€๋„๋ก ํŠน์„ฑ๋“ค์„ ๋ณ€๊ฒฝํ•ด ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</p>
+
+			<p>๊ธฐํ•˜ํ•™ ๋ธ”๋ก์— ์‚ฌ์šฉ๋˜๋Š” ๋ฌผ์ฒด๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์ง€๋งŒ, ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ธ”๋ก์œผ๋กœ ๋‚˜๋ˆŒ ์ง€์— ๋Œ€ํ•œ ์ ์€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(๋ฌผ์ฒด์˜ ๋ฉด์— ๋”ฐ๋ผ). </p>
+
+			<h3>๋Ÿฐํƒ€์ž„ ์ค‘์— ๋ฌผ์ฒด์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์„ค์ •์„ ํ•ด์•ผ ํ•  ๋•Œ:</h3>
+			<p>๋ฌผ์ฒด์™€ ๋ธ”๋ก์˜ ์ˆ˜๊ฐ€ ์ ๋‹ค๋ฉด, ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ฏธ๋ฆฌ ๋ถ„๋ฆฌํ•ด๋†“์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค๋ฉด ์‚ฌ๋žŒ์— ์žˆ์–ด์„œ ๋จธ๋ฆฌ/์–ผ๊ตด/์ƒ์˜/๋ฐ”์ง€, ์ž๋™์ฐจ์— ์žˆ์–ด์„œ ์•ž๋ถ€๋ถ„/์˜†๋ถ€๋ถ„/์œ—๋ถ€๋ถ„/์œ ๋ฆฌ/ํƒ€์ด์–ด/๋‚ด๋ถ€). </p>
+
+			<p>์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ฉด (์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋“  ์–ผ๊ตด๋“ค์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅธ ๊ฒฝ์šฐ), ๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•˜๋Š”๋ฐ, ์†์„ฑ/ํ…์Šค์ณ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ผ๊ตด๋งˆ๋‹ค ๋‹ค๋ฅธ ํ˜•ํƒœ๋ฅผ ์ž…ํžˆ๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค..</p>
+
+			<h3>์˜ˆ์ œ</h3>
+			<p>
+				[example:webgl_materials_car WebGL / materials / car]<br />
+				[example:webgl_postprocessing_dof WebGL / webgl_postprocessing / dof]
+			</p>
+		</div>
+
+
+		<h2>ํ…์Šค์ณ</h2>
+		<div>
+			<p>์‚ฌ์ง„, ๊ทธ๋ฆผ, ์˜์ƒ ๋ฐ ๋ฐ์ดํ„ฐ ํ…์Šค์ณ๋ฅผ ๋ณ€๊ฒฝํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ”Œ๋ž˜์Šค ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:</p>
+			<code>
+				texture.needsUpdate = true;
+			</code>
+			<p>๋Œ€์ƒ์ด ์ž๋™์œผ๋กœ ๋ Œ๋”๋ง๋˜๋„๋ก ์—…๋ฐ์ดํŠธํ•˜๊ธฐ.</p>
+
+			<h3>์˜ˆ์ œ</h3>
+			<p>
+				[example:webgl_materials_video WebGL / materials / video]<br />
+				[example:webgl_rtt WebGL / rtt]
+			</p>
+
+		</div>
+
+
+		<h2>์นด๋ฉ”๋ผ</h2>
+		<div>
+			<p>์นด๋ฉ”๋ฆฌ ์œ„์น˜์™€ ๋Œ€์ƒ์€ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ณ€๊ฒฝ์„ ์›ํ•œ๋‹ค๋ฉด</p>
+			<ul>
+				<li>
+					fov
+				</li>
+				<li>
+					aspect
+				</li>
+				<li>
+					near
+				</li>
+				<li>
+					far
+				</li>
+			</ul>
+			<p>
+				์ดํ›„์— ํˆฌ์˜๋˜๋Š” ํ–‰๋ ฌ๊ตฌ์กฐ๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+			</p>
+			<code>
+camera.aspect = window.innerWidth / window.innerHeight;
+camera.updateProjectionMatrix();
+			</code>
+		</div>
+	</body>
+</html>

+ 110 - 0
docs/manual/ko/introduction/How-to-use-post-processing.html

@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<html lang="ko">
+	<head>
+		<meta charset="utf-8">
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>ํ›„์ฒ˜๋ฆฌ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•(How to use post-processing)</h1>
+
+		<p>
+            ์—ฌ๋Ÿฌ three.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์—์„œ๋Š” 3์ฐจ์› ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ง์ ‘ ํ™”๋ฉด์— ๋ Œ๋”๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€๋”, DOF, ๋ธ”๋ฃธ ํ•„๋ฆ„ ๊ทธ๋ ˆ์ธ ๋“ฑ์˜ 
+            ๋‹ค์–‘ํ•œ ๊ทธ๋ž˜ํ”ฝ ํšจ๊ณผ๋‚˜ ๋‹ค์–‘ํ•œ ์•ˆํ‹ฐ ์–ผ๋ ˆ์ด์ง• ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ›„์ฒ˜๋ฆฌ ๋ฐฉ์‹์€ ์ด๋Ÿฐ ํšจ๊ณผ๋ฅผ ์œ„ํ•ด ๋„๋ฆฌ ์“ฐ์ด๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
+            ๋จผ์ €, ๋น„๋””์˜ค ์นด๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์— ํ•ด๋‹น๋˜๋Š” ๋Œ€์ƒ์„ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด ์žฅ๋ฉด์ด ๊ทธ๋ ค์ง‘๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ ํ˜น์€ ํ™”๋ฉด์ด ์ตœ์ข…์ ์œผ๋กœ ๋ Œ๋”๋ง๋˜๊ธฐ ์ „์— 
+            ํ•˜๋‚˜ ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ›„์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ํ•„ํ„ฐ์™€ ํšจ๊ณผ๋ฅผ ์ด๋ฏธ์ง€ ๋ฒ„ํผ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+		<p>
+			three.js๋Š” ์™„๋ฒฝํ•œ ํ›„์ฒ˜๋ฆฌ ์†”๋ฃจ์…˜์ธ [page:EffectComposer]๋ฅผ ํ†ตํ•ด ์ž‘์—… ํ™˜๊ฒฝ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์ž‘์—… ์ ˆ์ฐจ</h2>
+
+		<p>
+            ๋จผ์ € ํ•ด์•ผ ํ•  ์ผ์€ examples ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชจ๋“  ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. three.js์˜ ๊ณต์‹ ๊ฐ€์ด๋“œ 
+            [link:https://www.npmjs.com/package/three npm package]๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. 
+            ๊ธฐ๋ณธ ๋ฐ๋ชจ ํ™œ์šฉ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ํŒŒ์ผ๋“ค์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<code>
+		import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';
+		import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';
+		import { GlitchPass } from 'three/examples/jsm/postprocessing/GlitchPass.js';
+		</code>
+
+		<p>
+			๋ชจ๋“  ํŒŒ์ผ๋“ค์„ ์ž˜ ๋ถˆ๋Ÿฌ์™“๋‹ค๋ฉด, composer๋ฅผ ๋งŒ๋“ค์–ด [page:WebGLRenderer]์ธ์Šคํ„ด์Šค๋ฅผ ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค.
+		</p>
+
+		<code>
+		const composer = new EffectComposer( renderer );
+		</code>
+
+		<p>
+            composer๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์•ฑ์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฃจํ”„๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. [page:WebGLRenderer]์˜ render ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ๋ง๊ณ , 
+            ์ด์ œ๋ถ€ํ„ฐ๋Š” ๊ฐ๊ฐ์˜ [page:EffectComposer]์— ๋Œ€์‘๋˜๋Š” ๋ Œ๋”๋ง ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค..
+		</p>
+
+		<code>
+		function animate() {
+
+			requestAnimationFrame( animate );
+
+			composer.render();
+
+		}
+		</code>
+
+		<p>
+            composer๋Š” ์ด์ œ ์ค€๋น„๊ฐ€ ๋‹ค ๋˜์—ˆ์œผ๋‹ˆ, ํ›„์ฒ˜๋ฆฌ ๊ณผ์ • ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
+            ์ด๋Ÿฌํ•œ ๊ณผ์ •์€ ์•ฑ์„ ๋งŒ๋“œ๋Š” ์ตœ์ข… ํ™”๋ฉด ์ถœ๋ ฅ์„ ๋‹ด๋‹นํ•˜๋ฉฐ, ์ฒจ๋ถ€/์‚ฝ์ž…ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
+            ์ด ์˜ˆ์ œ์—์„œ ๋จผ์ € ์‹คํ–‰ํ•œ ๊ฒƒ์€ *RenderPass* ์ธ์Šคํ„ด์Šค์ด๊ณ  ๊ทธ ๋‹ค์Œ์ด *GlitchPass* ์ž…๋‹ˆ๋‹ค.
+            ๋งˆ์ง€๋ง‰ ๊ณผ์ •์ด ๋๋‚˜๋ฉด ์ž๋™์œผ๋กœ ํ™”๋ฉด์— ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค. ํŒจ์Šค ์„ค์ •์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<code>
+		const renderPass = new RenderPass( scene, camera );
+		composer.addPass( renderPass );
+
+		const glitchPass = new GlitchPass();
+		composer.addPass( glitchPass );
+		</code>
+
+		<p>
+			*RenderPass*๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋งจ ์œ„์— ์œ„์น˜ํ•ด์„œ ๋ Œ๋”๋ง๋œ ์žฅ๋ฉด์„ ํ›„์ฒ˜๋ฆฌ์˜ ๊ธฐ๋ณธ ์ž…๋ ฅ ์žฅ๋ฉด์œผ๋กœ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ๊ฒฝ์šฐ,
+            *GlitchPass*๋Š” ์ด ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ์— ๊ฑฐ์นœ ๊ธ€๋ฆฌ์น˜ ํšจ๊ณผ๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. [link:https://threejs.org/examples/webgl_postprocessing_glitch live example]์—์„œ ์ž‘๋™์„
+            ํ™•์ธํ•ด๋ณด์„ธ์š”.
+		</p>
+
+		<h2>๊ธฐ๋ณธ ๋‚ด์žฅ ํ›„์ฒ˜๋ฆฌ๋ฐฉ์‹</h2>
+
+		<p>
+			์—”์ง„์—์„œ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ ๋‚ด์žฅ ํ›„์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹๋“ค์€
+			[link:https://github.com/mrdoob/three.js/tree/dev/examples/jsm/postprocessing postprocessing] ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
+		</p>
+
+		<h2>์ปค์Šคํ…€ ๋ฐฉ์‹</h2>
+
+		<p>
+            ๋ณธ์ธ๋งŒ์˜ ํ›„์ฒ˜๋ฆฌ ์…ฐ์ด๋”๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํ›„์ฒ˜๋ฆฌ ์ ˆ์ฐจ ์•ˆ์— ๋„ฃ๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ์—๋Š”, 
+            *ShaderPass*๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ๊ณผ ์ปค์Šคํ…€ ์…ฐ์ด๋”๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+		<code>
+		import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';
+		import { LuminosityShader } from 'three/examples/jsm/shaders/LuminosityShader.js';
+
+		// later in your init routine
+
+		const luminosityPass = new ShaderPass( LuminosityShader );
+		composer.addPass( luminosityPass );
+		</code>
+
+		<p>
+            [link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/shaders/CopyShader.js CopyShader]์—์„œ ์ฒ˜์Œ ์ž์‹ ๋งŒ์˜ ์…ฐ์ด๋”๋ฅผ ๋งŒ๋“ค๊ธฐ์— ์ ํ•ฉํ•œ ํŒŒ์ผ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 
+            *CopyShader*๋Š” [page:EffectComposer]์˜ ์“ฐ๊ธฐ ๋ฆฌ๋“œ ๋ฒ„ํผ์— ์•„๋ฌด ํšจ๊ณผ๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์€ ์ฑ„ ์ด๋ฏธ์ง€ ์ปจํ…์ธ ๋ฅผ ๋ณต์‚ฌํ•˜๊ธฐ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.
+		</p>
+
+	</body>
+</html>

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