index.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>three.js - documentation</title>
  6. <style>
  7. body {
  8. margin: 0;
  9. padding: 0;
  10. color: #555;
  11. font-family: Arial, sans-serif;
  12. font-size: 15px;
  13. overflow: hidden;
  14. }
  15. a {
  16. color: #2194CE;
  17. }
  18. #panel {
  19. position: fixed;
  20. width: 260px;
  21. overflow: auto;
  22. }
  23. #panel h1 {
  24. color: #444;
  25. font-size: 25px;
  26. margin-top: 25px;
  27. margin-left: 20px;
  28. }
  29. #panel h2 {
  30. color: #999;
  31. font-size: 16px;
  32. margin-top: 20px;
  33. margin-left: 20px;
  34. }
  35. #panel ul {
  36. list-style-type: none;
  37. padding: 0px;
  38. margin-left: 20px;
  39. }
  40. #viewer {
  41. overflow: auto;
  42. }
  43. #viewer h1 {
  44. color: #444;
  45. font-size: 25px;
  46. margin-top: 10px;
  47. }
  48. #viewer h2 {
  49. color: #8B2;
  50. font-size: 18px;
  51. margin-top: 40px;
  52. }
  53. #viewer h3 {
  54. color: #000;
  55. font-size: 16px;
  56. margin-top: 30px;
  57. font-weight: normal;
  58. }
  59. #viewer div {
  60. padding-left: 30px;
  61. margin-bottom: 20px;
  62. }
  63. #viewer div.desc {
  64. padding-left: 0px;
  65. }
  66. #viewer pre, code {
  67. margin-top: 20px;
  68. margin-bottom: 20px;
  69. }
  70. #viewer code {
  71. display: block;
  72. width: 90%;
  73. padding: 20px;
  74. white-space: pre;
  75. background-color: #f9f9f9;
  76. overflow: auto;
  77. }
  78. #button {
  79. position: fixed;
  80. top: 20px;
  81. right: 30px;
  82. padding: 8px;
  83. color: #fff;
  84. background-color: #555;
  85. opacity: 0.5;
  86. }
  87. #button:hover {
  88. cursor: pointer;
  89. opacity: 1;
  90. }
  91. </style>
  92. </head>
  93. <body>
  94. <div id="panel"></div>
  95. <div id="viewer"></div>
  96. <div id="button">Edit this page</div>
  97. <script>
  98. var REVISION = '49';
  99. var path = null;
  100. var panel = document.getElementById( 'panel' );
  101. var viewer = document.getElementById( 'viewer' );
  102. var button = document.getElementById( 'button' );
  103. button.addEventListener( 'click', function ( event ) {
  104. window.open( 'https://github.com/mrdoob/three.js/blob/dev/docs/api/' + path + '.html' );
  105. }, false );
  106. var pages = {
  107. "Integer": "Integer",
  108. "Float": "Float",
  109. "Array": "Array"
  110. };
  111. var list = {
  112. "Cameras": [
  113. { name: "Camera", path: "cameras/Camera" },
  114. { name: "OrthographicCamera", path: "cameras/OrthographicCamera" },
  115. { name: "PerspectiveCamera", path: "cameras/PerspectiveCamera" }
  116. ],
  117. "Core": [
  118. { name: "Clock", path: "core/Clock" },
  119. { name: "Color", path: "core/Color" },
  120. { name: "Face3", path: "core/Face3" },
  121. { name: "Face4", path: "core/Face4" },
  122. { name: "Frustum", path: "core/Frustum" },
  123. { name: "Geometry", path: "core/Geometry" },
  124. { name: "Math", path: "core/Math" },
  125. { name: "Matrix3", path: "core/Matrix3" },
  126. { name: "Matrix4", path: "core/Matrix4" },
  127. { name: "Object3D", path: "core/Object3D" },
  128. { name: "Projector", path: "core/Projector" },
  129. { name: "Quaternion", path: "core/Quaternion" },
  130. { name: "Ray", path: "core/Ray" },
  131. { name: "Rectangle", path: "core/Rectangle" },
  132. { name: "Spline", path: "core/Spline" },
  133. { name: "UV", path: "core/UV" },
  134. { name: "Vector2", path: "core/Vector2" },
  135. { name: "Vector3", path: "core/Vector3" },
  136. { name: "Vector4", path: "core/Vector4" }
  137. ],
  138. "Lights": [
  139. { name: "Light", path: "lights/Light" },
  140. { name: "AmbientLight", path: "lights/AmbientLight" },
  141. { name: "DirectionalLight", path: "lights/DirectionalLight" },
  142. { name: "PointLight", path: "lights/PointLight" },
  143. { name: "SpotLight", path: "lights/SpotLight" }
  144. ],
  145. "Loaders": [
  146. { name: "Loader", path: "loaders/Loader" },
  147. { name: "BinaryLoader", path: "loaders/BinaryLoader" },
  148. { name: "JSONLoader", path: "loaders/JSONLoader" },
  149. { name: "SceneLoader", path: "loaders/SceneLoader" },
  150. ],
  151. "Materials": [
  152. { name: "Material", path: "materials/Material" },
  153. { name: "LineBasicMaterial", path: "materials/LineBasicMaterial" },
  154. { name: "MeshBasicMaterial", path: "materials/MeshBasicMaterial" },
  155. { name: "MeshDepthMaterial", path: "materials/MeshDepthMaterial" },
  156. { name: "MeshFaceMaterial", path: "materials/MeshFaceMaterial" },
  157. { name: "MeshLambertMaterial", path: "materials/MeshLambertMaterial" },
  158. { name: "MeshNormalMaterial", path: "materials/MeshNormalMaterial" },
  159. { name: "MeshPhongMaterial", path: "materials/MeshPhongMaterial" },
  160. { name: "ParticleBasicMaterial", path: "materials/ParticleBasicMaterial" },
  161. { name: "ParticleCanvasMaterial", path: "materials/ParticleCanvasMaterial" },
  162. { name: "ParticleDOMMaterial", path: "materials/ParticleDOMMaterial" },
  163. { name: "ShaderMaterial", path: "materials/ShaderMaterial" }
  164. ],
  165. "Objects": [
  166. { name: "Bone", path: "objects/Bone" },
  167. { name: "Line", path: "objects/Line" },
  168. { name: "LOD", path: "objects/LOD" },
  169. { name: "Mesh", path: "objects/Mesh" },
  170. { name: "MorphAnimMesh", path: "objects/MorphAnimMesh" },
  171. { name: "Particle", path: "objects/Particle" },
  172. { name: "ParticleSystem", path: "objects/ParticleSystem" },
  173. { name: "Ribbon", path: "objects/Ribbon" },
  174. { name: "SkinnedMesh", path: "objects/SkinnedMesh" },
  175. { name: "Sprite", path: "objects/Sprite" }
  176. ],
  177. "Renderers": [
  178. { name: "CanvasRenderer", path: "renderers/CanvasRenderer" },
  179. { name: "DOMRenderer", path: "renderers/DOMRenderer" },
  180. { name: "SVGRenderer", path: "renderers/SVGRenderer" },
  181. { name: "WebGLRenderer", path: "renderers/WebGLRenderer" },
  182. { name: "WebGLRenderTarget", path: "renderers/WebGLRenderTarget" },
  183. { name: "WebGLRenderTargetCube", path: "renderers/WebGLRenderTargetCube" },
  184. { name: "WebGLShaders", path: "renderers/WebGLShaders" }
  185. ],
  186. "Renderers / Renderables": [
  187. { name: "RenderableFace3", path: "renderers/renderables/RenderableFace3" },
  188. { name: "RenderableFace4", path: "renderers/renderables/RenderableFace4" },
  189. { name: "RenderableLine", path: "renderers/renderables/RenderableLine" },
  190. { name: "RenderableObject", path: "renderers/renderables/RenderableObject" },
  191. { name: "RenderableParticle", path: "renderers/renderables/RenderableParticle" },
  192. { name: "RenderableVertex", path: "renderers/renderables/RenderableVertex" }
  193. ],
  194. "Scenes": [
  195. { name: "Fog", path: "scenes/Fog" },
  196. { name: "FogExp2", path: "scenes/FogExp2" },
  197. { name: "Scene", path: "scenes/Scene" }
  198. ],
  199. "Textures": [
  200. { name: "DataTexture", path: "textures/DataTexture" },
  201. { name: "Texture", path: "textures/Texture" }
  202. ],
  203. "Extras": [
  204. { name: "ColorUtils", path: "extras/ColorUtils" },
  205. { name: "GeometryUtils", path: "extras/GeometryUtils" },
  206. { name: "ImageUtils", path: "extras/ImageUtils" },
  207. { name: "SceneUtils", path: "extras/SceneUtils" },
  208. { name: "ShaderUtils", path: "extras/ShaderUtils" }
  209. ],
  210. "Extras / Animation": [
  211. { name: "Animation", path: "extras/animation/Animation" },
  212. { name: "AnimationHandler", path: "extras/animation/AnimationHandler" },
  213. { name: "AnimationMorphTarget", path: "extras/animation/AnimationMorphTarget" },
  214. { name: "KeyFrameAnimation", path: "extras/animation/KeyFrameAnimation" }
  215. ],
  216. "Extras / Cameras": [
  217. { name: "CombinedCamera", path: "extras/cameras/CombinedCamera" },
  218. { name: "CubeCamera", path: "extras/cameras/CubeCamera" }
  219. ],
  220. "Extras / Controls": [
  221. { name: "FirstPersonControls", path: "extras/controls/FirstPersonControls" },
  222. { name: "FlyControls", path: "extras/controls/FlyControls" },
  223. { name: "PathControls", path: "extras/controls/PathControls" },
  224. { name: "RollControls", path: "extras/controls/RollControls" },
  225. { name: "TrackballControls", path: "extras/controls/TrackballControls" }
  226. ],
  227. "Extras / Core": [
  228. { name: "BufferGeometry", path: "extras/core/BufferGeometry" },
  229. { name: "Curve", path: "extras/core/Curve" },
  230. { name: "CurvePath", path: "extras/core/CurvePath" },
  231. { name: "EventTarget", path: "extras/core/EventTarget" },
  232. { name: "Gyroscope", path: "extras/core/Gyroscope" },
  233. { name: "Path", path: "extras/core/Path" },
  234. { name: "Shape", path: "extras/core/Shape" },
  235. { name: "TextPath", path: "extras/core/TextPath" }
  236. ],
  237. "Extras / Geometries": [
  238. { name: "CubeGeometry", path: "extras/geometries/CubeGeometry" },
  239. { name: "CylinderGeometry", path: "extras/geometries/CylinderGeometry" },
  240. { name: "ExtrudeGeometry", path: "extras/geometries/ExtrudeGeometry" },
  241. { name: "IcosahedronGeometry", path: "extras/geometries/IcosahedronGeometry" },
  242. { name: "LatheGeometry", path: "extras/geometries/LatheGeometry" },
  243. { name: "OctahedronGeometry", path: "extras/geometries/OctahedronGeometry" },
  244. { name: "PlaneGeometry", path: "extras/geometries/PlaneGeometry" },
  245. { name: "PolyhedronGeometry", path: "extras/geometries/PolyhedronGeometry" },
  246. { name: "SphereGeometry", path: "extras/geometries/SphereGeometry" },
  247. { name: "TetrahedronGeometry", path: "extras/geometries/TetrahedronGeometry" },
  248. { name: "TextGeometry", path: "extras/geometries/TextGeometry" },
  249. { name: "TorusGeometry", path: "extras/geometries/TorusGeometry" },
  250. { name: "TorusKnotGeometry", path: "extras/geometries/TorusKnotGeometry" }
  251. ],
  252. "Extras / Helpers": [
  253. { name: "AxisHelper", path: "extras/helpers/AxisHelper" },
  254. { name: "CameraHelper", path: "extras/helpers/CameraHelper" }
  255. ],
  256. "Extras / Modifiers": [
  257. { name: "SubdivisionModifier", path: "extras/modifiers/SubdivisionModifier" }
  258. ],
  259. "Extras / Objects": [
  260. { name: "LensFlare", path: "extras/objects/LensFlare" },
  261. { name: "MarchingCubes", path: "extras/objects/MarchingCubes" }
  262. ],
  263. "Extras / Renderers / Effects": [
  264. { name: "AnaglyphEffect", path: "extras/renderers/effects/AnaglyphEffect" },
  265. { name: "CrosseyedEffect", path: "extras/renderers/effects/CrosseyedEffect" },
  266. { name: "ParallaxBarrierEffect", path: "extras/renderers/effects/ParallaxBarrierEffect" },
  267. { name: "StereoEffect", path: "extras/renderers/effects/StereoEffect" }
  268. ],
  269. "Extras / Renderers / Plugins": [
  270. { name: "LensFlarePlugin", path: "extras/renderers/plugins/LensFlarePlugin" },
  271. { name: "ShadowMapPlugin", path: "extras/renderers/plugins/ShadowMapPlugin" },
  272. { name: "SpritePlugin", path: "extras/renderers/plugins/SpritePlugin" }
  273. ],
  274. "Extras / Shaders": [
  275. { name: "ShaderFlares", path: "extras/shaders/ShaderFlares" },
  276. { name: "ShaderSprite", path: "extras/shaders/ShaderSprite" }
  277. ]
  278. };
  279. var html = '<h1>three.js <span style="font-size: 50%; vertical-align: super;">r' + REVISION + '</span></h1>';
  280. for ( var category in list ) {
  281. html += '<h2>' + category + '</h2>';
  282. html += '<ul>';
  283. for ( var i = 0; i < list[ category ].length; i ++ ) {
  284. var page = list[ category ][ i ];
  285. pages[ page.name ] = page.path;
  286. html += '<li><a href="javascript:goTo(\'' + page.name + '\')">' + page.name + '</a></li>';
  287. }
  288. html += '</ul>';
  289. }
  290. panel.innerHTML += html;
  291. // Page loading
  292. function goTo( name ) {
  293. path = pages[ name ];
  294. window.location.hash = name;
  295. viewer.innerHTML = '';
  296. var xhr = new XMLHttpRequest();
  297. xhr.open( 'GET', 'api/' + path + '.html', true );
  298. xhr.onreadystatechange = function () {
  299. if ( xhr.readyState == 4 && ( xhr.status == 200 || xhr.status == 0 ) ) {
  300. // TODO: Set title.
  301. var text = xhr.responseText;
  302. text = text.replace(/\[name\]/gi, name);
  303. text = text.replace(/\[path\]/gi, path);
  304. text = text.replace(/\[page:(\w+)\]/gi, "[page:$1 $1]" ); // [page:name] to [page:name title]
  305. text = text.replace(/\[page:(\w+) ([\w|\.]+)\]/gi, "<a href=\"javascript:goTo('$1')\" title=\"$1\">$2</a>" ); // [page:name title]
  306. text = text.replace(/\[link:([\w|\:|\/|\.|\-|\_]+)\]/gi, "[link:$1 $1]" ); // [link:url] to [link:url title]
  307. text = text.replace(/\[link:([\w|\:|\/|\.|\-|\_]+) ([\w|\:|\/|\.|\-|\_]+)\]/gi, "<a href=\"$1\" target=\"_blank\">$2</a>" ); // [link:url title]
  308. text = text.replace(/\*([\w|\ |\-|\/|\+|\-|\(|\)|\=|\,|\.\"]+)\*/gi, "<strong>$1</strong>" ); // *
  309. viewer.innerHTML = '<br>' + text + '<br><br>';
  310. }
  311. };
  312. xhr.send( null );
  313. }
  314. function goToHash() {
  315. goTo( window.location.hash.substring( 1 ) );
  316. }
  317. window.addEventListener( 'hashchange', goToHash, false );
  318. goToHash();
  319. // Layout
  320. var margin = 280;
  321. function updateLayout() {
  322. panel.style.height = window.innerHeight + 'px';
  323. viewer.style.marginLeft = margin + 'px';
  324. viewer.style.width = ( window.innerWidth - margin ) + 'px';
  325. viewer.style.height = window.innerHeight + 'px';
  326. }
  327. window.addEventListener( 'resize', updateLayout, false );
  328. updateLayout();
  329. </script>
  330. </body>
  331. </html>