Browse Source

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

Mugen87 4 years ago
parent
commit
d1fe85778b
100 changed files with 5912 additions and 3142 deletions
  1. 76 0
      .github/CODE_OF_CONDUCT.md
  2. 77 22
      .github/CONTRIBUTING.md
  3. 0 39
      .github/ISSUE_TEMPLATE.md
  4. 47 0
      .github/ISSUE_TEMPLATE/bug_report.md
  5. 5 0
      .github/ISSUE_TEMPLATE/config.yml
  6. 26 0
      .github/ISSUE_TEMPLATE/feature_request.md
  7. 7 0
      .github/pull_request_template.md
  8. 89 0
      .github/workflows/ci.yml
  9. 15 2
      .gitignore
  10. 0 7
      .npmignore
  11. 0 5
      .travis.yml
  12. 1 1
      LICENSE
  13. 22 22
      README.md
  14. 1709 866
      build/three.js
  15. 0 587
      build/three.min.js
  16. 406 431
      build/three.module.js
  17. 316 0
      docs/api/ar/animation/AnimationAction.html
  18. 129 0
      docs/api/ar/animation/AnimationClip.html
  19. 109 0
      docs/api/ar/animation/AnimationMixer.html
  20. 82 0
      docs/api/ar/animation/AnimationObjectGroup.html
  21. 62 0
      docs/api/ar/animation/AnimationUtils.html
  22. 221 0
      docs/api/ar/animation/KeyframeTrack.html
  23. 132 0
      docs/api/ar/animation/PropertyBinding.html
  24. 98 0
      docs/api/ar/animation/PropertyMixer.html
  25. 79 0
      docs/api/ar/animation/tracks/BooleanKeyframeTrack.html
  26. 62 0
      docs/api/ar/animation/tracks/ColorKeyframeTrack.html
  27. 63 0
      docs/api/ar/animation/tracks/NumberKeyframeTrack.html
  28. 74 0
      docs/api/ar/animation/tracks/QuaternionKeyframeTrack.html
  29. 82 0
      docs/api/ar/animation/tracks/StringKeyframeTrack.html
  30. 62 0
      docs/api/ar/animation/tracks/VectorKeyframeTrack.html
  31. 229 0
      docs/api/ar/audio/Audio.html
  32. 97 0
      docs/api/ar/audio/AudioAnalyser.html
  33. 42 0
      docs/api/ar/audio/AudioContext.html
  34. 111 0
      docs/api/ar/audio/AudioListener.html
  35. 136 0
      docs/api/ar/audio/PositionalAudio.html
  36. 48 0
      docs/api/ar/cameras/ArrayCamera.html
  37. 78 0
      docs/api/ar/cameras/Camera.html
  38. 95 0
      docs/api/ar/cameras/CubeCamera.html
  39. 0 1
      docs/api/en/Polyfills.html
  40. 0 1
      docs/api/en/Template.html
  41. 0 1
      docs/api/en/animation/AnimationAction.html
  42. 0 1
      docs/api/en/animation/AnimationClip.html
  43. 0 1
      docs/api/en/animation/AnimationMixer.html
  44. 8 9
      docs/api/en/animation/AnimationObjectGroup.html
  45. 4 1
      docs/api/en/animation/AnimationUtils.html
  46. 1 7
      docs/api/en/animation/KeyframeTrack.html
  47. 0 1
      docs/api/en/animation/PropertyBinding.html
  48. 0 1
      docs/api/en/animation/PropertyMixer.html
  49. 0 1
      docs/api/en/animation/tracks/BooleanKeyframeTrack.html
  50. 0 1
      docs/api/en/animation/tracks/ColorKeyframeTrack.html
  51. 0 1
      docs/api/en/animation/tracks/NumberKeyframeTrack.html
  52. 0 1
      docs/api/en/animation/tracks/QuaternionKeyframeTrack.html
  53. 0 1
      docs/api/en/animation/tracks/StringKeyframeTrack.html
  54. 0 1
      docs/api/en/animation/tracks/VectorKeyframeTrack.html
  55. 15 20
      docs/api/en/audio/Audio.html
  56. 12 13
      docs/api/en/audio/AudioAnalyser.html
  57. 1 2
      docs/api/en/audio/AudioContext.html
  58. 11 12
      docs/api/en/audio/AudioListener.html
  59. 14 15
      docs/api/en/audio/PositionalAudio.html
  60. 1 2
      docs/api/en/cameras/ArrayCamera.html
  61. 0 8
      docs/api/en/cameras/Camera.html
  62. 24 31
      docs/api/en/cameras/CubeCamera.html
  63. 19 24
      docs/api/en/cameras/OrthographicCamera.html
  64. 19 23
      docs/api/en/cameras/PerspectiveCamera.html
  65. 4 13
      docs/api/en/cameras/StereoCamera.html
  66. 0 1
      docs/api/en/constants/Animation.html
  67. 1 2
      docs/api/en/constants/Core.html
  68. 6 7
      docs/api/en/constants/CustomBlendingEquations.html
  69. 0 79
      docs/api/en/constants/DrawModes.html
  70. 0 15
      docs/api/en/constants/Materials.html
  71. 1 16
      docs/api/en/constants/Renderer.html
  72. 324 7
      docs/api/en/constants/Textures.html
  73. 12 8
      docs/api/en/core/BufferAttribute.html
  74. 21 20
      docs/api/en/core/BufferGeometry.html
  75. 0 1
      docs/api/en/core/Clock.html
  76. 0 1
      docs/api/en/core/DirectGeometry.html
  77. 14 19
      docs/api/en/core/EventDispatcher.html
  78. 27 27
      docs/api/en/core/Face3.html
  79. 116 0
      docs/api/en/core/GLBufferAttribute.html
  80. 24 28
      docs/api/en/core/Geometry.html
  81. 2 8
      docs/api/en/core/InstancedBufferAttribute.html
  82. 4 16
      docs/api/en/core/InstancedBufferGeometry.html
  83. 0 6
      docs/api/en/core/InstancedInterleavedBuffer.html
  84. 17 9
      docs/api/en/core/InterleavedBuffer.html
  85. 12 5
      docs/api/en/core/InterleavedBufferAttribute.html
  86. 0 1
      docs/api/en/core/Layers.html
  87. 22 21
      docs/api/en/core/Object3D.html
  88. 29 22
      docs/api/en/core/Raycaster.html
  89. 66 7
      docs/api/en/core/Uniform.html
  90. 10 4
      docs/api/en/core/bufferAttributeTypes/BufferAttributeTypes.html
  91. 0 609
      docs/api/en/deprecated/DeprecatedList.html
  92. 31 0
      docs/api/en/extras/DataUtils.html
  93. 4 4
      docs/api/en/extras/Earcut.html
  94. 31 0
      docs/api/en/extras/ImageUtils.html
  95. 79 0
      docs/api/en/extras/PMREMGenerator.html
  96. 2 4
      docs/api/en/extras/ShapeUtils.html
  97. 11 4
      docs/api/en/extras/core/Curve.html
  98. 24 5
      docs/api/en/extras/core/CurvePath.html
  99. 1 9
      docs/api/en/extras/core/Font.html
  100. 1 2
      docs/api/en/extras/core/Interpolations.html

+ 76 - 0
.github/CODE_OF_CONDUCT.md

@@ -0,0 +1,76 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, sex characteristics, gender identity and expression,
+level of experience, education, socio-economic status, nationality, personal
+appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at [email protected]. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see
+https://www.contributor-covenant.org/faq

+ 77 - 22
.github/CONTRIBUTING.md

@@ -1,28 +1,83 @@
+# Contribution
+## Introduction
 
-# Help 
-#### The issues section is for bug reports and feature requests only. If you need help, please use the [forum](http://discourse.threejs.org/) or [stackoverflow](http://stackoverflow.com/questions/tagged/three.js).
----
-# Bugs
-#### Before reporting a bug
+It is assumed that you know a little about node.js and git. If not, [here's some help to get started with git](https://help.github.com/en/github/using-git) and [here’s some help to get started with node.js.](https://nodejs.org/en/docs/guides/getting-started-guide/)
 
-1. Search issue tracker for similar issues.
-2. Try the latest dev branch version of three.js.
-3. Refer to the [Migration Guide](https://github.com/mrdoob/three.js/wiki/Migration) when upgrading to the dev version.
+* Install [Node.js](https://nodejs.org/)
+* Install [Git](https://git-scm.com/)
+* [Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) three.js 
+* Open your OS’s terminal
+* Change into the directory you’d like
+* Clone your forked repo
 
-#### How to report a bug
+      git clone https://github.com/[yourgithubname]/three.js.git
 
-1. Specify the revision number of the three.js library where the bug occurred.
-2. Specify your browser version, operating system, and graphics card. (for example, Chrome 23.0.1271.95, Windows 7, Nvidia Quadro 2000M)
-3. Describe the problem in detail. Explain what happened, and what you expected would happen.
-4. Provide a small test-case (http://jsfiddle.net). [Here is a fiddle](https://jsfiddle.net/3foLr7sn/) you can edit that runs the current version. [And here is a fiddle](https://jsfiddle.net/qgu17w5o/) that uses the dev branch. If a test-case is not possible, provide a link to a live version of your application.
-5. If helpful, include a screenshot. Annotate the screenshot for clarity.
+* Go into the three.js directory.
+        
+      cd ./three.js
 
----
-# Contribution
-#### How to contribute to three.js
+* Install the dependencies
+
+      npm install
+
+## Next Steps
+
+As per the npm standard, ‘start’ is the place to begin the package.
+
+    npm start
+
+This script will start a local server similar to [threejs.org](https://threejs.org/), but instead will be hosted on your local machine. Browse to http://localhost:8080/ to check it out. It also automatically creates the ‘build/three.js’ and ‘build/three.module.js’ scripts anytime there is a change within your three.js directory.
+
+The next most important script runs all the appropriate testing.
+
+    npm test
+
+The linting is there to keep a consistent code-style across the all of the code and the testing is there to help catch bugs and check that the code behaves as expected. It is important that neither of these steps comes up with any errors due to your changes.
+
+Many linting errors can be fixed automatically by running
+
+    npm lint-fix
+
+If you’d like to make a minified version of the build files i.e. ‘build/three.min.js’ run:
+        
+    npm run-script build-closure
+
+## Making changes
+
+When you’ve decided to make changes, start with the following:
+
+* Update your local repo
+        
+      git pull https://github.com/mrdoob/three.js.git
+      git push
+
+* Make a new branch from the dev branch
+        
+      git checkout dev
+      git branch [mychangesbranch]
+      git checkout [mychangesbranch]
+
+* Add your changes to your commit.
+* Push the changes to your forked repo.
+* Open a Pull Request (PR)
+
+## Important notes:
+
+* Don't include any build files to your commit.
+* Not all new features will need a new example. Simpler features could be incorporated into an existing example. Bigger features may be asked to add an example demonstrating the feature.
+* Making changes may require changes to the documentation. If so, please make a new PR for the appropriate doc changes. To update the Chinese docs, simply copy the English to begin with.
+* it's good to also add an example and screenshot for it, for showing how it's used and for end-to-end testing.
+* If you modify existing code, run relevant examples to check they didn't break and there wasn't performance regress.
+* If you add some assets for the examples (models, textures, sounds, etc), make sure they have a proper license allowing for their use here, less restrictive the better. It is unlikely for large assets to be accepted.
+* If some issue is relevant to patch / feature, please mention it with hash (e.g. #2774) in a commit message to get cross-reference in GitHub.
+* If you modify files in `examples/js` directory, then don't perform any changes in the `examples/jsm`, JavaScript modules are auto-generated via running `node utils/modularize.js`.
+* If end-to-end test failed in Travis and you are sure that all is correct, make a new screenshots with 
+
+      npm run make-screenshot <example_1_name> ...<example_N_name>
+
+* Watch out for Closure compiler warnings when building the libs, there should not be any.
+* Once done with a patch / feature do not add more commits to a feature branch
+* Create separate branches per patch or feature.
+* If you make a PR but it is not actually ready to be pulled into the dev branch, add `[Draft]` into the PR title and/or convert it to a draft PR
 
-1. Make sure you have a GitHub account.
-2. Fork the repository on GitHub.
-3. Check the [Contribution Guidelines](https://github.com/mrdoob/three.js/wiki/How-to-contribute-to-three.js).
-4. Make changes to your clone of the repository.
-5. Submit a pull request. Don't include build files in the PR.
+This project is currently contributed to mostly via everyone's spare time. Please keep that in mind as it may take some time for the appropriate feedback to get to you. If you are unsure about adding a new feature, it might be better to ask first to see whether other people think it's a good idea.

+ 0 - 39
.github/ISSUE_TEMPLATE.md

@@ -1,39 +0,0 @@
-##### Description of the problem
-
-This form is for three.js bug reports and feature requests only.
-
-This is NOT a help site. Do not ask help questions here.
-If you need help, please use the [forum](https://discourse.threejs.org/) or [stackoverflow](http://stackoverflow.com/questions/tagged/three.js).
-
-Describe the bug or feature request in detail.
-
-Always include a code snippet, screenshots, and any relevant models or textures to help us understand your issue.
-
-Please also include a live example if possible. You can start from these templates:
-
-* [jsfiddle](https://jsfiddle.net/yn8azeg1/) (latest release branch)
-* [jsfiddle](https://jsfiddle.net/kLwhx875/) (dev branch)
-
-##### Three.js version
-
-- [ ] Dev
-- [ ] r109
-- [ ] ...
-
-##### Browser
-
-- [x] All of them
-- [ ] Chrome
-- [ ] Firefox
-- [ ] Internet Explorer
-
-##### OS
-
-- [x] All of them
-- [ ] Windows
-- [ ] macOS
-- [ ] Linux
-- [ ] Android
-- [ ] iOS
-
-##### Hardware Requirements (graphics card, VR Device, ...)

+ 47 - 0
.github/ISSUE_TEMPLATE/bug_report.md

@@ -0,0 +1,47 @@
+---
+name: Bug report
+about: Report a reproducible bug or regression.
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+<!-- Ignoring this template may result in your bug report getting deleted -->
+
+**Describe the bug**
+
+A clear and concise description of what the bug is. Before submitting, please remove unnecessary sections.
+
+**To Reproduce**
+
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. See error
+
+***Code***
+
+```js
+// code goes here
+```
+
+***Live example***
+
+* [jsfiddle-latest-release](https://jsfiddle.net/hyok6tvj/)
+* [jsfiddle-dev](https://jsfiddle.net/c5m1kazu/)
+
+**Expected behavior**
+
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+
+If applicable, add screenshots to help explain your problem (drag and drop the image).
+
+**Platform:**
+
+ - Device: [Desktop, Mobile]
+ - OS: [Windows, MacOS, Linux, Android, iOS]
+ - Browser: [Chrome, Firefox, Safari, Edge]
+ - Three.js version: [dev, r???]

+ 5 - 0
.github/ISSUE_TEMPLATE/config.yml

@@ -0,0 +1,5 @@
+blank_issues_enabled: false
+contact_links:
+  - name: Help and Support
+    url: https://discourse.threejs.org/
+    about: Please use the forum if you have questions or need help.

+ 26 - 0
.github/ISSUE_TEMPLATE/feature_request.md

@@ -0,0 +1,26 @@
+---
+name: Feature request
+about: Suggest an idea for the project.
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+<!-- Ignoring this template may result in your feature request getting deleted -->
+
+**Is your feature request related to a problem? Please describe.**
+
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+
+Add any other context or screenshots about the feature request here.

+ 7 - 0
.github/pull_request_template.md

@@ -0,0 +1,7 @@
+Related issues:
+
+#XXXX
+
+**Description**
+
+A clear and concise description of what the problem was and how this pull request solves it.

+ 89 - 0
.github/workflows/ci.yml

@@ -0,0 +1,89 @@
+name: CI
+
+on:
+  pull_request:
+    paths-ignore:
+      - 'build/**'
+      - 'docs/**'
+      - 'files/**'
+  push:
+    paths-ignore:
+      - 'build/**'
+      - 'docs/**'
+      - 'files/**'
+
+jobs:
+
+  lint:
+    name: "Linting"
+    runs-on: ubuntu-latest
+    steps:
+      - name: Git checkout
+        uses: actions/checkout@v2
+      - name: Install node
+        uses: actions/setup-node@v1
+        with:
+          node-version: 12
+      - name: Install packages
+        run: npm ci
+
+      - name: === Linting ===
+        run: npm run test-lint
+
+  unit:
+    name: "Unit testing"
+    runs-on: ubuntu-latest
+    steps:
+      - name: Git checkout
+        uses: actions/checkout@v2
+      - name: Install node
+        uses: actions/setup-node@v1
+        with:
+          node-version: 12
+      - name: Install packages
+        run: npm ci && npm ci --prefix test
+      - name: Build
+        run: npm run build
+
+      - name: === Unit testing ===
+        run: npm run test-unit
+
+  e2e:
+    name: "E2E testing"
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        CI: [ 0, 1, 2, 3 ]
+    env:
+      CI: ${{ matrix.CI }}
+      FORCE_COLOR: 1
+    steps:
+      - name: Git checkout
+        uses: actions/checkout@v2
+      - name: Install node
+        uses: actions/setup-node@v1
+        with:
+          node-version: 12
+      - name: Install packages
+        run: npm ci && npm ci --prefix test && sudo apt-get install xvfb
+      - name: Build
+        run: npm run build
+
+      - name: === E2E testing ===
+        run: xvfb-run --auto-servernum npm run test-e2e
+
+  e2e-cov:
+    name: "Ready for release"
+    runs-on: ubuntu-latest
+    steps:
+      - name: Git checkout
+        uses: actions/checkout@v2
+      - name: Install node
+        uses: actions/setup-node@v1
+        with:
+          node-version: 12
+      - name: Install packages
+        run: npm ci
+
+      - name: === Ready for release ===
+        run: npm run test-e2e-cov

+ 15 - 2
.gitignore

@@ -1,10 +1,23 @@
 .DS_Store
 *.swp
 .project
-node_modules
 .idea/
 .vscode/
 npm-debug.log
 .jshintrc
 .vs/
-test/unit/three.*.unit.js
+
+# The command'npm install --prefix test' adds files in the test folder (https://docs.npmjs.com/configuring-npm/folders.html#executables).
+# There are 2 kinds of files, those without extension and those with cmd extension.
+# To ignore files without a extension, following procedure is nessecary:
+# - ignore all files in the test folder
+# - unignore all files in subdirectories of the test folder
+# - unignore all files with an extension in the test folder
+test/*
+!test/*/
+!test/*.*
+test/*.cmd
+test/unit/build
+
+
+**/node_modules

+ 0 - 7
.npmignore

@@ -1,7 +0,0 @@
-examples/*
-!examples/js/
-test/
-utils/
-docs/
-editor/
-.DS_Store

+ 0 - 5
.travis.yml

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

+ 1 - 1
LICENSE

@@ -1,6 +1,6 @@
 The MIT License
 
-Copyright © 2010-2019 three.js authors
+Copyright © 2010-2020 three.js authors
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal

+ 22 - 22
README.md

@@ -1,10 +1,9 @@
 three.js
 ========
 
-[![NPM package][npm]][npm-url]
+[![NPM Package][npm]][npm-url]
 [![Build Size][build-size]][build-size-url]
-[![Build Status][build-status]][build-status-url]
-[![Dependencies][dependencies]][dependencies-url]
+[![NPM Downloads][npm-downloads]][npmtrends-url]
 [![Dev Dependencies][dev-dependencies]][dev-dependencies-url]
 [![Language Grade][lgtm]][lgtm-url]
 
@@ -18,23 +17,18 @@ The aim of the project is to create an easy to use, lightweight, 3D library with
 [Migrating](https://github.com/mrdoob/three.js/wiki/Migration-Guide) &mdash;
 [Questions](http://stackoverflow.com/questions/tagged/three.js) &mdash;
 [Forum](https://discourse.threejs.org/) &mdash;
-[Gitter](https://gitter.im/mrdoob/three.js) &mdash;
-[Slack](https://join.slack.com/t/threejs/shared_invite/enQtMzYxMzczODM2OTgxLTQ1YmY4YTQxOTFjNDAzYmQ4NjU2YzRhNzliY2RiNDEyYjU2MjhhODgyYWQ5Y2MyZTU3MWNkOGVmOGRhOTQzYTk)
+[Slack](https://join.slack.com/t/threejs/shared_invite/enQtMzYxMzczODM2OTgxLTQ1YmY4YTQxOTFjNDAzYmQ4NjU2YzRhNzliY2RiNDEyYjU2MjhhODgyYWQ5Y2MyZTU3MWNkOGVmOGRhOTQzYTk) &mdash;
+[Discord](https://discordapp.com/invite/HF4UdyF)
 
 ### Usage ###
 
-Download the [minified library](http://threejs.org/build/three.min.js) and include it in your HTML, or install and import it as a [module](http://threejs.org/docs/#manual/introduction/Import-via-modules),
-Alternatively, see [how to build the library yourself](https://github.com/mrdoob/three.js/wiki/Build-instructions).
-
-```html
-<script src="js/three.min.js"></script>
-```
-
 This code creates a scene, a camera, and a geometric cube, and it adds the cube to the scene. It then creates a `WebGL` renderer for the scene and camera, and it adds that viewport to the `document.body` element. Finally, it animates the cube within the scene for the camera.
 
 ```javascript
-var camera, scene, renderer;
-var geometry, material, mesh;
+import * as THREE from './js/three.module.js';
+
+let camera, scene, renderer;
+let geometry, material, mesh;
 
 init();
 animate();
@@ -70,22 +64,28 @@ function animate() {
 }
 ```
 
-If everything went well you should see [this](https://jsfiddle.net/f2Lommf5/).
+If everything went well, you should see [this](https://jsfiddle.net/ruc3h17j/).
+
+### Cloning this repository ###
+
+Cloning the repo with all its history results in a ~2GB download. If you don't need the whole history you can use the `depth` parameter to significantly reduce download size.
+
+```sh
+git clone --depth=1 https://github.com/mrdoob/three.js.git
+```
 
 ### Change log ###
 
 [Releases](https://github.com/mrdoob/three.js/releases)
 
 
-[npm]: https://img.shields.io/npm/v/three.svg
+[npm]: https://img.shields.io/npm/v/three
 [npm-url]: https://www.npmjs.com/package/three
 [build-size]: https://badgen.net/bundlephobia/minzip/three
 [build-size-url]: https://bundlephobia.com/result?p=three
-[build-status]: https://travis-ci.org/mrdoob/three.js.svg?branch=dev
-[build-status-url]: https://travis-ci.org/mrdoob/three.js
-[dependencies]: https://img.shields.io/david/mrdoob/three.js.svg
-[dependencies-url]: https://david-dm.org/mrdoob/three.js
-[dev-dependencies]: https://img.shields.io/david/dev/mrdoob/three.js.svg
+[npm-downloads]: https://img.shields.io/npm/dw/three
+[npmtrends-url]: https://www.npmtrends.com/three
+[dev-dependencies]: https://img.shields.io/david/dev/mrdoob/three.js
 [dev-dependencies-url]: https://david-dm.org/mrdoob/three.js#info=devDependencies
-[lgtm]: https://img.shields.io/lgtm/grade/javascript/g/mrdoob/three.js.svg?label=code%20quality
+[lgtm]: https://img.shields.io/lgtm/alerts/github/mrdoob/three.js
 [lgtm-url]: https://lgtm.com/projects/g/mrdoob/three.js/

File diff suppressed because it is too large
+ 1709 - 866
build/three.js


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


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


+ 316 - 0
docs/api/ar/animation/AnimationAction.html

@@ -0,0 +1,316 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		<h1>[name]</h1>
+
+		<p class="desc">
+			تقوم AnimationActions بجدولة أداء الرسوم المتحركة المخزنة في [page:AnimationClip AnimationClips].
+			<br /><br />
+
+			ملاحظة: يمكن ربط معظم أساليب AnimationAction.<br /><br />
+
+			للحصول على نظرة عامة حول العناصر المختلفة لنظام الرسوم المتحركة three.js ، راجع مقالة "نظام الحركات" في قسم "الخطوات التالية" من الدليل.
+		</p>
+
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name]( [param:AnimationMixer mixer], [param:AnimationClip clip], [param:Object3D localRoot] )</h3>
+		<p>
+			[page:AnimationMixer mixer] هو *AnimationMixer* الذي يتحكم فيه هذا الإجراء.<br />
+			[page:AnimationClip clip] هو *AnimationClip* الذي يحتفظ ببيانات الرسوم المتحركة لهذا الإجراء.<br />
+			[page:Object3D localRoot] هو الكائن الجذر الذي يتم تنفيذ هذا الإجراء عليه.<br /><br />
+
+			ملاحظة: بدلاً من استدعاء هذا المُنشئ مباشرةً ، يجب إنشاء AnimationAction برقم [page:AnimationMixer.clipAction] نظرًا لأن هذه الطريقة توفر التخزين المؤقت للحصول على أداء أفضل.
+		</p>
+
+
+		<h2>الخصائص (Properties)</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] - تشغيل المقطع مع العدد المختار من *التكرارات* ،
+			في كل مرة تقفز من نهاية المقطع مباشرة إلى بدايته ،<br />
+			[page:Animation THREE.LoopPingPong] - تشغيل المقطع مع العدد المختار من *التكرارات* ، بدلاً من التشغيل للأمام والخلف.
+		</p>
+
+		<h3>[property:Boolean paused]</h3>
+		<p>
+			يؤدي تعيين *paused* إلى *true* إلى إيقاف تنفيذ الإجراء مؤقتًا عن طريق تعيين مقياس الوقت الفعال على 0. الافتراضي هو *false*.<br /><br />
+		</p>
+
+		<h3>[property:Number repetitions]</h3>
+		<p>
+			عدد التكرارات التي تم إجراؤها [page:AnimationClip] على مدار هذا الإجراء. يمكن تعيينه عبر [page:.setLoop setLoop]. الافتراضي هو *Infinity*.<br /><br />
+			ضبط هذا الرقم ليس له أي تأثير ، إذا تم ضبط [page:.loop loop mode] على [page:Animation THREE.LoopOnce].
+		</p>
+
+		<h3>[property:Number time]</h3>
+		<p>
+			the local time of this action (in seconds, starting with 0).<br /><br />
+
+			يتم تثبيت القيمة أو لفها إلى 0 ... مدة المقطع (وفقًا لحالة الحلقة).
+			يمكن تغير قيمتها بالنسبة إلى وقت لخالط الحركات الرئيسي عن طريق تغيير [page:.timeScale timeScale] (باستخدام [page:.setEffectiveTimeScale setEffectiveTimeScale] أو [page:.setDuration setDuration]).<br />
+		</p>
+
+		<h3>[property:Number timeScale]</h3>
+		<p>
+			Sعامل التحجيم للوقت [page:.time time]. تؤدي القيمة 0 إلى توقف الرسوم المتحركة مؤقتًا. تؤدي القيم السالبة إلى تشغيل الرسوم المتحركة بشكل عكسي. الافتراضي هو 1.<br /><br />
+			الخصائص / الطرق المتعلقة *timeScale* (على التوالي *time*) هم:
+			[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>الوظائف (Methods)</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] إضافيًا (تغييرات تدريجية في المقاييس الزمنية).<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 صحيحة ، فسيتم تطبيق [page:.warp warping] إضافيًا (تغييرات تدريجية في المقاييس الزمنية).<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>
+			تعمل على إبطاء سرعة هذه الرسوم المتحركة إلى 0 من خلال إنقاص [page:.timeScale timeScale] تدريجيًا (بدءًا من قيمتها الحالية) ، خلال الفترة الزمنية المنقضية. يمكن تقييد هذه الطريقة ضمن سلسلة.
+		</p>
+
+		<h3>[method:Boolean isRunning]()</h3>
+		<p>
+			تُرجع true إذا كان الإجراء [page:.time time] قيد التشغيل حاليًا.<br /><br />
+
+			بالإضافة إلى تفعيله في الخالط (انظر [page:.isScheduled isScheduled]) ، يجب استيفاء الشروط التالية:
+			<br/>
+			[page:.paused paused] يساوي false ،<br/> [page:.enabled enabled] يساوي true ،
+			<br/>
+			[page:.timeScale timeScale] يختلف عن 0 ، ولا توجد جدولة لبدء متأخر ([page:.startAt startAt]).<br /><br />
+
+			ملاحظة: لا يعني كون *isRunning* تحمل قيمة *true* أنه يمكن رؤية الرسوم المتحركة بالفعل. هذا هو الحال فقط ، إذا تم تعيين [page:.weight weight] بشكل إضافي على قيمة غير صفرية.
+		</p>
+
+		<h3>[method:Boolean isScheduled]()</h3>
+		<p>
+			تُرجع قيمة *true* ، إذا تم تنشيط هذا الإجراء في الخالط.<br /><br />
+			ملاحظة: هذا لا يعني بالضرورة أن الرسوم المتحركة تعمل بالفعل (قارن الشروط الإضافية لـ [page:.isRunning isRunning]).
+		</p>
+
+		<h3>[method:AnimationAction play]()</h3>
+		<p>
+			يعلم الخالط بضرورة البدء في تنشيط الحدث (action). يمكن تقييد هذه الطريقة ضمن سلسلة. <br /><br />
+
+			ملاحظة: لا يعني تنشيط هذا الإجراء بالضرورة أن الرسوم المتحركة تبدأ على الفور: إذا كان الإجراء قد انتهى بالفعل من قبل (من خلال الوصول إلى نهاية الحلقة الأخيرة) ، أو إذا تم تعيين وقت لبدء متأخر (عبر [page:.startAt startAt]) ،
+			يجب تنفيذ [page:.reset reset] أولاً. يمكن لبعض الإعدادات الأخرى ([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* نفسه.
+			هذا يعني: إذا كنت تريد كلاهما ، reset وstop ، لا تتصل بـ *reset* بل إتصل بـ *stop* بدلا من ذلك.
+		</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 ، فسيتم أيضًا تعيين المقياس الزمني الفعال (خاصية داخلية) على هذه القيمة ؛
+			وإلا فسيتم تعيين النطاق الزمني الفعال (الذي يؤثر بشكل مباشر على الرسم المتحرك في هذه اللحظة) على 0.<br /><br />
+
+			ملاحظة: *paused* لن يتم تحويله إلى *true* تلقائيًا ، إذا تم ضبط *timeScale* على 0 بهذه الطريقة.
+		</p>
+
+		<h3>[method:AnimationAction setEffectiveWeight]( [param:Number weight] )</h3>
+		<p>
+			تضبط [page:.weight weight] وتوقف أي تضاؤل مجدول. يمكن تقييد هذه الطريقة ضمن سلسلة. <br /><br />
+
+			إذا كانت قيمة [page:.enabled enabled] هي true ، فسيتم أيضًا تعيين الوزن الفعال (خاصية داخلية) على هذه القيمة ؛
+			وإلا فسيتم تعيين الوزن الفعال (الذي يؤثر بشكل مباشر على الرسم المتحرك في هذه اللحظة) على 0.<br /><br />
+
+			ملاحظة: لن يتم تحويل *enabled* إلى false تلقائيًا ، إذا تم ضبط *weight* على 0 بهذه الطريقة.
+		</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>
+			يحدد وقت البداية المتأخرة (عادةً ما يتم تمريره كـ [page:AnimationMixer.time] + deltaTimeInSeconds). يمكن تقييد هذه الطريقة ضمن سلسلة. <br /><br />
+
+			ملاحظة: ستبدأ الرسوم المتحركة فقط في الوقت المحدد ، إذا تم ربط *startAt* بـ [page:.play play] ،
+			أو إذا تم بالفعل تنشيط الإجراء في الخالط (عن طريق استدعاء سابق لـ. *play* ، دون إيقافه أو إعادة تعيينه في هذه الأثناء).
+		</p>
+
+		<h3>[method:AnimationAction stop]()</h3>
+		<p>
+			يخبر الخالط بإلغاء تنشيط هذا الإجراء. يمكن تقييد هذه الطريقة ضمن سلسلة. <br /><br />
+
+			سيتم إيقاف الإجراء على الفور وإعادة تعيين [page:.reset reset] بالكامل.<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>الأحداث (Events)</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>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 129 - 0
docs/api/ar/animation/AnimationClip.html

@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		<h1>[name]</h1>
+
+		<p class="desc">
+			AnimationClip عبارة عن مجموعة قابلة لإعادة الاستخدام من مسارات الإطارات الرئيسية التي تمثل رسمًا متحركًا.<br /><br />
+
+			للحصول على نظرة عامة حول العناصر المختلفة لنظام الرسوم المتحركة three.js ، راجع مقالة "نظام الحركات" في قسم "الخطوات التالية" من الدليل.
+		</p>
+
+
+		<h2>المنشئ (Constructor)</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>الخصائص (Properties)</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>الوظائف (Methods)</h2>
+
+
+		<h3>[method:AnimationClip clone]()</h3>
+		<p>
+			إرجاع نسخة من هذا المقطع.
+		</p>
+
+		<h3>[method:this optimize]()</h3>
+		<p>
+			يحسن من أداء كل مسار عن طريق إزالة المفاتيح المتسلسلة المتكررة (الشائعة في تسلسلات هدف التحويل - morph target sequences).
+		</p>
+
+		<h3>[method:this resetDuration]()</h3>
+		<p>
+			يضبط [page:.duration duration] للمقطع على أطول مدة [page:KeyframeTrack] ممكنة.
+		</p>
+
+		<h3>[method:this trim]()</h3>
+		<p>
+			اقتطاع كل المسارات حسب مدة المقطع.
+		</p>
+
+		<h3>[method:Boolean validate]()</h3>
+		<p>
+			يقوم بتأدية الحد الأدنى من التحقق من الصحة على كل مسار في المقطع. إرجاع *true* إذا كانت جميع المسارات صالحة.
+		</p>
+
+
+		<h2>الوظائف الساكنة (Static Methods)</h2>
+
+
+		<h3>[method:Array CreateClipsFromMorphTargetSequences]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>
+		<p>
+			تُرجع مصفوفة من AnimationClips الجديدة التي تم إنشاؤها من [page:Geometry.morphTargets morph target sequences] من الشكل الهندسي ، في محاولة لفرز أسماء الأهداف التحويلية إلى أنماط قائمة على مجموعة الرسوم المتحركة مثل "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>
+			يُرجع مقطع رسوم متحركة جديدًا من [page:Geometry.morphTargets morph targets array] تم تمريره لشكل هندسي ، مع أخذ اسم وعدد الإطارات في الثانية.<br /><br />
+
+			ملاحظة: قيمة fps مطلوبة و ضرورية ، ولكن يمكن إعادة ضبظ سرعة الرسوم المتحركة في *AnimationAction* عبر [page:AnimationAction.setDuration animationAction.setDuration].
+		</p>
+
+		<h3>[method:AnimationClip findByName]( [param:Object objectOrClipArray], [param:String name] )</h3>
+		<p>
+			يبحث عن AnimationClip بالاسم ، مع الأخذ كقيمة إما مصفوفة من AnimationClips ، أو شبكة أو شكل هندسي يحتوي على جدول مسمى "animations".
+		</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>المصدر (Source)</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 109 - 0
docs/api/ar/animation/AnimationMixer.html

@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		<h1>[name]</h1>
+
+		<p class="desc">
+			AnimationMixer هو مشغل للرسوم المتحركة على كائن معين في المشهد. عندما يتم تحريك كائنات متعددة في المشهد بشكل مستقل ، يمكن استخدام AnimationMixer واحد لكل كائن.<br /><br />
+
+			للحصول على نظرة عامة حول العناصر المختلفة لنظام الرسوم المتحركة three.js ، راجع مقالة "نظام الحركات" في قسم "الخطوات التالية" من الدليل.
+		</p>
+
+
+		<h2>المنشئ (Constructor)</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 />
+
+			ملاحظة: يأدي ضبط مقياس وقت الخلاط على 0 والعودة لاحقًا إلى 1 إلى إمكانية إيقاف / إلغاء إيقاف مؤقت لجميع الإجراءات التي يتحكم فيها هذا الخالط.
+		</p>
+
+
+		<h2>الوظائف (Methods)</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:Clock.getDelta clock.getDelta] مقياسًا بواسطة جهاز الخلاط [page:.timeScale timeScale]).
+		</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>

+ 82 - 0
docs/api/ar/animation/AnimationObjectGroup.html

@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		<h1>[name]</h1>
+
+		<p class="desc">مجموعة من الكائنات التي تتلقى حالة حركة مشتركة.<br /><br />
+
+			للحصول على نظرة عامة حول العناصر المختلفة لنظام الرسوم المتحركة three.js ، راجع مقالة "نظام الحركات" في قسم "الخطوات التالية" من الدليل.
+		</p>
+
+		<h2>الإستعمال:</h2>
+
+		<p class="desc">
+			تظيف كائنات يمكن تمريرها عبر المنشئ كـ'جذر' أو عبر وظيفة [page:AnimationMixer.clipAction clipAction] الخاصة بـ [page:AnimationMixer AnimationMixer] أو بدلا من دلك عبر تمرير هدا الكائن الأخير كـ'جذر'.<br /><br />
+
+
+			لاحظ أن كائنات هذه الفئة تظهر ككائن واحد للخالط ، لذا يجب التحكم في ذاكرة التخزين المؤقت للكائنات الفردية على المجموعة.
+		</p>
+
+
+		<h2>التقييدات (Limitations)</h2>
+		<p class="desc">
+			يجب أن تكون الخصائص المتحركة متوافقة مع جميع الكائنات في المجموعة.<br /><br />
+
+			يمكن التحكم في خاصية واحدة إما من خلال مجموعة مستهدفة أو بشكل مباشر ، ولكن ليس كلاهما.
+		</p>
+
+
+		<h2>المنشئ (Constructor)</h2>
+
+		<h3>[name]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
+		<p>
+			[page:Object obj] - عدد عشوائي من الشبكات التي تشترك في نفس حالة الحركة.
+		</p>
+
+		<h2>الخصائص (Properties)</h2>
+
+
+		<h3>[property:Object stats]</h3>
+		<p>
+			كائن يحتوي على بعض المعلومات حول *AnimationObjectGroup* (العدد الإجمالي ، العدد المستخدم ، عدد الروابط لكل كائن)
+		</p>
+
+		<h3>[property:String uuid]</h3>
+		<p>
+			[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] الخاص بهذا *AnimationObjectGroup*. يتم تعيينه تلقائيًا ولا يجب تحريره.
+		</p>
+
+
+		<h2>الوظائف (Methods)</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>المصدر (Source)</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

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

@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		<h1>[name]</h1>
+
+		<p class="desc">
+		كائن مع وظائف مختلفة للمساعدة في الرسوم المتحركة ، ويستخدم داخليًا.
+		</p>
+
+
+		<h2>الوظائف (Methods)</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 keyframe.
+		</p>
+
+		<h3>[method:Array getKeyframeOrder]( times )</h3>
+		<p>
+		تُرجع مصفوفة يمكن من خلالها فرز الأوقات والقيم.
+		</p>
+
+		<h3>[method:Boolean isTypedArray]( object )</h3>
+		<p>
+		ترجاع *true* إذا كان الكائن مصفوفة مكتوبة (typed array.).
+		</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>المصدر (Source)</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 221 - 0
docs/api/ar/animation/KeyframeTrack.html

@@ -0,0 +1,221 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			إن [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>
+			لا يمكن أن تكون القيمة المفردة ، التي تنتمي إلى نقطة زمنية معينة ، رقمًا بسيطًا فحسب ، بل يمكن (على سبيل المثال) أن تكون *vector* (إذا كان الموضع متحركًا) أو رباعي (إذا كان الدوران متحركًا). لهذا السبب ، قد تكون مصفوفة القيم (وهي مصفوفة مسطحة أيضًا) ثلاثة أو أربعة أضعاف طول مصفوفة الأوقات.
+		</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>
+			يمكن العثور على بعض الأمثلة حول كيفية إنشاء [page:AnimationClip AnimationClips] يدويًا بأنواع مختلفة من KeyframeTracks في ملف [link:https://threejs.org/examples/jsm/animation/AnimationClipCreator.js AnimationClipCreator].
+		</p>
+
+		<p>
+			نظرًا لأن القيم الصريحة محددة فقط لنقاط الوقت المنفصلة المخزنة في مصفوفة الأوقات ، يجب استيفاء جميع القيم الموجودة بينهما.
+		</p>
+
+		<p>
+			يعد اسم المسار مهمًا لربط هذا المسار بخاصية معينة للعقدة المتحركة (تم إجراؤه بواسطة [page:PropertyBinding]).
+		</p>
+
+
+		<h2>المنشئ (Constructor)</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>الخصائص (Properties)</h2>
+
+
+		<h3>[property:String name]</h3>
+		<p>
+			يمكن أن يشير اسم المسار إلى [page:Geometry.morphTargets morph targets] أو [page:SkinnedMesh bones] أو ربما إلى قيم أخرى داخل كائن متحرك. راجع [page:PropertyBinding.parseTrackName] للتعرف على أشكال السلاسل التي يمكن تحليلها لربط الخاصية:
+		</p>
+
+		<p>
+			يمكن أن يحدد الاسم العقدة إما باستخدام اسمها أو uuid الخاص بها (على الرغم من أنها تحتاج إلى أن تكون في الشجرة الفرعية لعقدة الرسم البياني للمشهد التي تم تمريرها إلى جهاز المزج). أو ، إذا كان اسم المسار يبدأ بنقطة ، فإن المسار ينطبق على عقدة الجذر التي تم تمريرها إلى الخالط.
+		</p>
+
+		<p>
+			عادة ، بعد العقدة ، سيتم تحديد خاصية مباشرة. ولكن يمكنك أيضًا تحديد خاصية فرعية ، مثل. rotation[x] ، إذا كنت تريد فقط قيادة المكون X للدوران عبر مسار عائم.
+		</p>
+
+		<p>
+			يمكنك أيضًا تحديد العظام أو المواد المتعددة باستخدام اسم كائن ، على سبيل المثال: .bones[R_hand].scale; القناة الحمراء للون المنتشر للمادة الرابعة في مصفوفة المواد - كمثال آخر - يمكن الوصول إليها من خلال .bones[R_hand].scale;.
+		</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>
+			نوع الاستيفاء (interpolation) الافتراضي: [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>الوظائف (Methods)</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>
+			إرجاع نوع الاستيفاء (interpolation).
+		</p>
+
+		<h3>[method:Number getValueSize]()</h3>
+		<p>
+			ترجع حجم كل قيمة (طول صفيف القيم [page:.values values] مقسومًا على طول صفيف الأوقات [page:.times times]).
+		</p>
+
+		<h3>[method:DiscreteInterpolant InterpolantFactoryMethodDiscrete]( [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array result] )</h3>
+		<p>
+			ينشئ [page:DiscreteInterpolant DiscreteInterpolant] جديدًا من [page:KeyframeTrack.times times] و [page:KeyframeTrack.times values]. يمكن تمرير Float32Array الذي سيحصل على النتائج. وإلا فسيتم إنشاء مصفوفة جديدة بالحجم المناسب تلقائيًا.
+		</p>
+
+		<h3>[method:null InterpolantFactoryMethodLinear]( [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array result] )</h3>
+		<p>
+			ينشئ [page:LinearInterpolant LinearInterpolant] جديدًا من page:KeyframeTrack.times times] و [page:KeyframeTrack.times values]. يمكن تمرير Float32Array الذي سيتلقى النتائج. وإلا فسيتم إنشاء مصفوفة جديدة بالحجم المناسب تلقائيًا.
+		</p>
+
+		<h3>[method:null InterpolantFactoryMethodSmooth]( [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array result] )</h3>
+		<p>
+			قم بإنشاء [page:CubicInterpolant CubicInterpolant] جديد من [page:KeyframeTrack.times times] و [page:KeyframeTrack.times values]. يمكن تمرير 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>الوظائف الساكنة (Static Methods)</h2>
+
+		<h3>[method:JSON toJSON]( [param:KeyframeTrack track] )</h3>
+		<p>
+		يحول المسار إلى JSON.
+		</p>
+
+
+		<h2>المصدر (Source)</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

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

@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		<h1>[name]</h1>
+
+		<p class="desc">
+			هذا يشير إلى الممتلكات الموجودة في الرسم البياني للمشهد ؛ تستخدم داخليا.
+		</p>
+
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name]( [param:Object3D rootNode], path, parsedPath )</h3>
+		<p>
+			-- [page:Object3D rootNode]:
+			-- path
+			-- parsedPath (optional)
+
+		</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>
+			إنشاء زوج getter / setter لخاصية في الرسم البياني للمشهد. تستخدم داخليا من قبل
+			[page:PropertyBinding.getValue getValue] و [page:PropertyBinding.setValue setValue].
+		</p>
+
+		<h3>[method:null unbind]( )</h3>
+		<p>
+			تقوم بفك ربط زوج getter / setter لخاصية في الرسم البياني للمشهد.
+		</p>
+
+		<h3>[method:Constructor Composite]( targetGroup, path, optionalParsedPath )</h3>
+		<p>
+			قم بإنشاء مركب جديد PropertyBinding.
+		</p>
+
+		<h3>[method:Constructor create]( root, path, parsedPath )</h3>
+		<p>
+			تقوم بإنشاء رابط خاصية مركب جديد (إذا كان الجذر هو [page:AnimationObjectGroup) أو PropertyBinding.
+		</p>
+
+		<h3>[method:Constructor parseTrackName]( trackName )</h3>
+		<p>
+			يطابق الـ strings في الأشكال التالية:<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>المصدر (Source)</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 98 - 0
docs/api/ar/animation/PropertyMixer.html

@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		<h1>[name]</h1>
+
+		<p class="desc">
+		خاصية الرسم البياني للمشهد المخزنة التي تسمح بالتراكم الموزون ؛ تستخدم داخليا.
+		</p>
+
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name]( [param:PropertyBinding binding], [param:String typeName], [param:Number valueSize] )</h3>
+		<p>
+			-- binding <br />
+			-- typeName <br />
+			-- valueSize <br />
+		</p>
+
+
+		<h2>الخصائص (Properties)</h2>
+
+
+		<h3>[property:PropertyBinding binding]</h3>
+		<p>
+
+		</p>
+
+		<h3>[property:TypedArray buffer]</h3>
+		<p>
+			 حاجز (buffer)  بحجم [page:PropertyMixer valueSize] * 4. <br /><br />
+			هذا لديه التخطيط: [ incoming | accu0 | accu1 | orig ]<br /><br />
+			يمكن Interpolators استخدام .buffer كـ .result ثم تنتقل البيانات إلى "incoming". <br/>
+			يتم استخدام '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>الوظائف (Methods)</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' إلى binding.
+		</p>
+
+
+		<h2>المصدر (Source)</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

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

@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+
+		[page:KeyframeTrack] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			تتبع للقيمة الخاصة بـ*boolean keyframe*.
+		</p>
+
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
+		<p>
+			[page:String name] - (ضرورية) المعرف الخاص بـ*KeyframeTrack*.<br />
+			[page:Array times] - (ضرورية) جدول يتضمن مجموعة من الـ*keyframe times*.<br />
+			[page:Array values] - القيم الخاصة بـ *keyframes* في وقت محدد لها.<br />
+		</p>
+
+
+		<h2>الخصائص (Properties)</h2>
+
+
+		<p class="desc">
+			أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
+		</p>
+
+		<h3>[property:Constant DefaultInterpolation]</h3>
+		<p>
+			الـ*interpolation* الإفتراضي للإستعمال، [page:Animation InterpolateDiscrete].
+		</p>
+
+		<h3>[property:Array ValueBufferType]</h3>
+		<p>
+			جدول عادي (ليس *Float32Array* في هذه الحالة، ما عدى *ValueBufferType* الخاص بـ [page:KeyframeTrack]).
+		</p>
+
+		<h3>[property:String ValueTypeName]</h3>
+		<p>
+			String 'bool'.
+		</p>
+
+
+		<h2>الوظائف (Methods)</h2>
+
+
+		<p class="desc">
+			أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
+		</p>
+
+		<h3>[method:null InterpolantFactoryMethodLinear ]()</h3>
+		<p>
+			قيمة هذه الوضيفة هي 'undefined'، حيث أنه لا يوجد سبب لإستعمالها على الخصائص المتفردة.
+		</p>
+
+		<h3>[method:null InterpolantFactoryMethodSmooth ]()</h3>
+		<p>
+			قيمة هذه الوضيفة هي 'undefined'، حيث أنه لا يوجد سبب لإستعمالها على الخصائص المتفردة.
+		</p>
+
+
+		<h2>المصدر (Source)</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

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

@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+
+		[page:KeyframeTrack] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			تتبع للقيم التابعة لـ*keyframe* التي تمثل تغيرات لون ما.<br /><br />
+			التنفيذ الأساسي لهذه الفئة الفرعية فلا يوجد أي شيء خاص حتى الآن. ومع ذلك ، هذا هو المكان المناسب لوضع معلمات مساحة اللون.
+		</p>
+
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
+		<p>
+			[page:String name] - (ضرورية) المعرف الخاص بـ*KeyframeTrack*.<br />
+			[page:Array times] - (ضرورية) جدول الأوقات الخاصة بـ*keyframe*.<br />
+			[page:Array values] - القيم الخاصة بالـ*keyframes* في وقت محدد.<br />
+			[page:Constant interpolation] - نوع الـ*interpolation* الذي يجب إستعماله. أنظر
+			[page:Animation Animation Constants] للقيم الممكنة. الإفتراضي هو
+			[page:Animation InterpolateLinear].
+		</p>
+
+
+		<h2>الخصائص (Properties)</h2>
+
+
+		<p class="desc">
+			أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
+		</p>
+
+		<h3>[property:String ValueTypeName]</h3>
+		<p>
+			String 'color'.
+		</p>
+
+
+		<h2>الوظائف (Methods)</h2>
+
+
+		<p class="desc">
+			أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
+		</p>
+
+		<h2>المصدر (Source)</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

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

@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+
+		[page:KeyframeTrack] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			تتبع للقيمة الرقمية الخاصة بـ*keyframe* ما.
+		</p>
+
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
+		<p>
+			[page:String name] - (ضرورية) المعرف الخاص بالـ*KeyframeTrack*.<br />
+			[page:Array times] - (ضرورية) جدول الأوقات الخاصة بـ*keyframe*.<br />
+			[page:Array values] - القيم الخاصة بالـ*keyframes* في وقت محدد.<br />
+			[page:Constant interpolation] - نوع الـ*interpolation* الذي يجب إستعماله. أنظر
+			[page:Animation Animation Constants] من أجل القيم المتاحة. الإفتراضي هو
+			[page:Animation InterpolateLinear].
+		</p>
+
+
+		<h2>الخصائص (Properties)</h2>
+
+
+		<p class="desc">
+			أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
+		</p>
+
+
+		<h3>[property:String ValueTypeName]</h3>
+		<p>
+			String 'number'.
+		</p>
+
+
+		<h2>الوظائف (Methods)</h2>
+
+
+		<p class="desc">
+			أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
+		</p>
+
+
+		<h2>المصدر (Source)</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 74 - 0
docs/api/ar/animation/tracks/QuaternionKeyframeTrack.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+
+		[page:KeyframeTrack] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			 تتبع للقيمة الرقمية الخاصة بـإطار رباعي *quaternion keyframe*.
+		</p>
+
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
+		<p>
+			[page:String name] (ضرورية) المعرف الخاص بالـ*KeyframeTrack*.<br />
+			[page:Array times] - (ضرورية) جدول الأوقات الخاصة بـ*keyframe*.<br />
+			[page:Array values] - القيم الخاصة بالـ*keyframes* في وقت محدد.<br />
+			[page:Constant interpolation] - نوع الـ*interpolation*  الذي يجب إستعماله. أنظر
+			[page:Animation Animation Constants] من أجل القيم المتاحة. الإفتراضي هو
+			[page:Animation InterpolateLinear].
+		</p>
+
+
+		<h2>الخصائص (Properties)</h2>
+
+
+		<p class="desc">
+			أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
+		</p>
+
+		<h3>[property:Constant DefaultInterpolation]</h3>
+		<p>
+			نوع الـ*interpolation* الافتراضي المراد استخدامه ،
+		</p>
+
+		<h3>[property:String ValueTypeName]</h3>
+		<p>
+			String 'quaternion'.
+		</p>
+
+
+		<h2>الوظائف (Methods)</h2>
+
+
+		<p class="desc">
+			أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
+		</p>
+
+		<h3>[method:null InterpolantFactoryMethodLinear]()</h3>
+		<p>
+			إرجاع قيمة من نوع [page:QuaternionLinearInterpolant QuaternionLinearInterpolant] بناءا على
+			[page:KeyframeTrack.values values], [page:KeyframeTrack.times times] و
+			[page:KeyframeTrack.valueSize valueSize] التابعين لـ*keyframes*.
+		</p>
+
+
+		<h2>المصدر (Source)</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 82 - 0
docs/api/ar/animation/tracks/StringKeyframeTrack.html

@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+
+		[page:KeyframeTrack] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			 تتبع للقيم الخاصة بـ*string keyframe*.
+		</p>
+
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
+		<p>
+			[page:String name] - (ضرورية) معرّف KeyframeTrack.<br />
+			[page:Array times] - (ضرورية) جدول الأوقات الخاصة بـ*keyframe*.<br />
+			[page:Array values] - القيم الخاصة بالـ*keyframes* في وقت محدد.<br />
+			[page:Constant interpolation] - نوع الـ*interpolation*  الذي يجب إستعماله. أنظر
+			[page:Animation Animation Constants] من أجل القيم المتاحة. الإفتراضي هو
+			[page:Animation InterpolateDiscrete].
+		</p>
+
+
+		<h2>الخصائص (Properties)</h2>
+
+
+		<p class="desc">
+			أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
+		</p>
+
+		<h3>[property:Constant DefaultInterpolation]</h3>
+		<p>
+				نوع الـ*interpolation* الافتراضي المراد استخدامه ، [page:Animation InterpolateDiscrete].
+		</p>
+
+		<h3>[property:Array ValueBufferType]</h3>
+		<p>
+			جدول (مصفوفة) عادي (ليس Float32Array في هذه الحالة، بخلاف *ValueBufferType* من [page:KeyframeTrack]).
+		</p>
+
+		<h3>[property:String ValueTypeName]</h3>
+		<p>
+			String 'string'.
+		</p>
+
+
+		<h2>الوظائف (Methods)</h2>
+
+
+		<p class="desc">
+			أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
+		</p>
+
+		<h3>[method:null InterpolantFactoryMethodLinear]()</h3>
+		<p>
+			قيمة هذه الطريقة هنا 'undefined' ، لأنها لا معنى لها بالنسبة للخصائص المنفصلة.
+		</p>
+
+		<h3>[method:null InterpolantFactoryMethodSmooth]()</h3>
+		<p>
+			قيمة هذه الطريقة هنا 'undefined' ، لأنها لا معنى لها بالنسبة للخصائص المنفصلة.
+		</p>
+
+
+		<h2>المصدر (Source)</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

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

@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+
+		[page:KeyframeTrack] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			 تتبع للقيم الخاصة بـ*vector keyframe*.
+		</p>
+
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
+		<p>
+			[page:String name] - (ضرورية) معرّف KeyframeTrack.<br />
+			[page:Array times] - (ضرورية) جدول الأوقات الخاصة بـ*keyframe*.<br />
+			[page:Array values] - القيم الخاصة بالـ*keyframes* في وقت محدد.<br />
+			[page:Constant interpolation] - نوع الـ*interpolation*  الذي يجب إستعماله. أنظر
+			[page:Animation Animation Constants] من أجل القيم المتاحة. الإفتراضي هو
+			[page:Animation InterpolateLinear].
+		</p>
+
+
+		<h2>الخصائص (Properties)</h2>
+
+
+		<p class="desc">
+			أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
+		</p>
+
+		<h3>[property:String ValueTypeName]</h3>
+		<p>
+			String 'vector'.
+		</p>
+
+
+		<h2>الوظائف (Methods)</h2>
+
+
+		<p class="desc">
+			أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
+		</p>
+
+
+		<h2>المصدر (Source)</h2>
+
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 229 - 0
docs/api/ar/audio/Audio.html

@@ -0,0 +1,229 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		[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>أمثلة (Examples)</h2>
+
+		<p>
+			[example:webaudio_sandbox webaudio / sandbox ]<br />
+			[example:webaudio_visualizer webaudio / visualizer ]
+		</p>
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name]( [param:AudioListener listener] )</h3>
+		<p>
+		listener — (ضرورية) كائن [page:AudioListener AudioListener].
+		</p>
+
+
+		<h2>الخصائص (Properties)</h2>
+
+		<h3>[property:Boolean autoplay]</h3>
+		<p>ما إذا كان سيتم بدء التشغيل تلقائيًا. الافتراضي هو *false*.</p>
+
+		<h3>[property:AudioContext context]</h3>
+		<p>الـ[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext] من [page:AudioListener listener] المعطاة في المنشئ.</p>
+
+		<h3>[property:Number detune]</h3>
+		<p>تعديل درجة الصوت ، مقاسة بالسنت. +/- 100 نصف نغمة. +/- 1200 هو *octave*. الافتراضي هو *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/GainNode GainNode] تم إنشاؤه باستخدام [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createGain AudioContext.createGain]().</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>إزاحة للوقت الذي يجب أن يبدأ فيه التشغيل داخل المخزن المؤقت للصوت. مثل المعلمة *offset* لـ [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start AudioBufferSourceNode.start](). القيمة الافتراضية هي *0*.</p>
+
+		<h3>[property:Number duration]</h3>
+		<p>يتجاوز مدة الصوت. مثل المعلمة *duration* لـ[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start AudioBufferSourceNode.start](). الافتراضي هو *undefined* لتشغيل المخزن المؤقت بالكامل.</p>
+
+		<h3>[property:String source]</h3>
+		<p>[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode AudioBufferSourceNode]  تم إنشاؤها باستخدام [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createBufferSource AudioContext.createBufferSource]().</p>
+
+		<h3>[property:String sourceType]</h3>
+		<p>نوع مصدر الصوت. الافتراضي هو السلسلة 'empty'.</p>
+
+		<h3>[property:String type]</h3>
+		<p>سلسلة تشير إلى النوع ، مضبوطة على 'Audio'.</p>
+
+
+		<h2>الوظائف (Methods)</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>
+		value - جداول (صفائف) المرشحات.<br />
+		يطبق جدول (مصفوفة) من [link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNodes] على الصوت.
+		</p>
+
+		<h3>[method:Audio setLoop]( [param:Boolean value] )</h3>
+		<p>
+		يضبط [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loop source.loop] على *value* (ما إذا كان يجب تكرار التشغيل).
+		</p>
+
+		<h3>[method:Audio setLoopStart]( [param:Float value] )</h3>
+		<p>
+		يضبط [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loopStart source.loopStart] على *value*.
+		</p>
+
+		<h3>[method:Audio setLoopEnd]( [param:Float value] )</h3>
+		<p>
+		يضبط [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loopEnd source.loopEnd] على *value*.
+		</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>
+		يقوم بإعداد [page:Audio.source source] إلى audioBuffer ، ويقوم بتعيين [page:Audio.sourceType sourceType] على 'audioNode'.<br />
+		يضبط أيضًا [page:Audio.hasPlaybackControl hasPlaybackControl] إلى false.
+		</p>
+
+		<h3>[method:Audio setPlaybackRate]( [param:Float value] )</h3>
+		<p>
+		إذا تم تمكين [page:Audio.hasPlaybackControl hasPlaybackControl] ، فيتم ضبط [page:Audio.playbackRate playbackRate] على *value*.
+		</p>
+
+		<h3>[method:Audio setVolume]( [param:Float value] )</h3>
+		<p>
+		تضبط مستوى الصوت.
+		</p>
+
+		<h3>[method:Audio stop]()</h3>
+		<p>
+		إذا تم تمكين [page:Audio.hasPlaybackControl hasPlaybackControl] ، فسيتوقف عن التشغيل.
+		</p>
+
+		<h2>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 97 - 0
docs/api/ar/audio/AudioAnalyser.html

@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		<h1>[name]</h1>
+
+		<p class="desc">
+			يقوم بإنشاء كائن AudioAnalyser ، والذي يستخدم [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode AnalyserNode] لتحليل البيانات الصوتية.<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>أمثلة (Examples)</h2>
+
+		<p>
+			[example:webaudio_sandbox webaudio / sandbox ]<br />
+			[example:webaudio_visualizer webaudio / visualizer ]
+		</p>
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name]( audio, [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/fftSize fftSize] )</h3>
+		<p>
+		يقوم بإنشاء [page:AudioAnalyser AudioAnalyser] جديد.
+		</p>
+
+
+		<h2>الخصائص (Properties)</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>
+		قدرة غير صفرية تصل إلى 2048 ، تمثل حجم FFT (Fast Fourier Transform) لاستخدامها لتحديد مجال التردد (frequency domain).
+		انظر [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/fftSize this page] للحصول على التفاصيل.
+		</p>
+
+		<h3>[property:Uint8Array data]</h3>
+		<p>
+		*Uint8Array* بالحجم المحدد بواسطة [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/frequencyBinCount analyser.frequencyBinCount] يستخدم للاحتفاظ ببيانات التحليل.
+		</p>
+
+
+		<h2>الوظائف (Methods)</h2>
+
+
+		<h3>[method:Uint8Array getFrequencyData]()</h3>
+		<p>
+		يستخدم طريقة [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteFrequencyData getByteFrequencyData] الخاصة بـ Web Audio. انظر تلك الصفحة.
+		</p>
+
+		<h3>[method:Number getAverageFrequency]()</h3>
+		<p>
+		تقوم بإرجاع  متوسط ​​الترددات المعادة بطريقة [page:AudioAnalyser.getFrequencyData getFrequencyData].
+		</p>
+
+		<h2>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 42 - 0
docs/api/ar/audio/AudioContext.html

@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+
+		<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>الوظائف (Methods)</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>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 111 - 0
docs/api/ar/audio/AudioListener.html

@@ -0,0 +1,111 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		[page:Object3D] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			يمثل هذا المكون [link:https://developer.mozilla.org/de/docs/Web/API/AudioListener listener] افتراضيًا من جميع المؤثرات الصوتية الموضعية وغير الموضعية في المشهد.<br />
+			عادةً ما يُنشئ تطبيق three.js مثيلاً واحدًا من هذا الكائن. إنها معلمة تفسير إلزامية لكيانات الصوت مثل [page:Audio Audio] و [page:PositionalAudio PositionalAudio].<br />
+			في معظم الحالات ، يكون الكائن المستمع هو كائن فرعي للكاميرا. لذا فإن التحول ثلاثي الأبعاد للكاميرا يمثل التحول ثلاثي الأبعاد للمستمع.
+		</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>أمثلة (Examples)</h2>
+
+		<p>
+			[example:webaudio_sandbox webaudio / sandbox ]<br />
+			[example:webaudio_timing webaudio / timing ]<br />
+			[example:webaudio_visualizer webaudio / visualizer ]
+		</p>
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name](  )</h3>
+		<p>
+		يقوم بإنشاء AudioListener جديد.
+		</p>
+
+
+		<h2>الخصائص (Properties)</h2>
+
+		<h3>[property:AudioContext context]</h3>
+		<p>الـ[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext] الخاصة بـ[page:AudioListener listener] المعطاة في المنشئ.</p>
+
+		<h3>[property:GainNode gain]</h3>
+		<p>[link:https://developer.mozilla.org/en-US/docs/Web/API/GainNode GainNode] تم إنشاؤه باستخدام [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createGain AudioContext.createGain](). </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>الوظائف (Methods)</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>
+		إعادة *volume*.
+		</p>
+
+		<h3>[method:AudioListener setMasterVolume]( [param:Number value] )</h3>
+		<p>
+		ضبط مستوى الصوت (volume).
+		</p>
+
+
+		<h2>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

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

@@ -0,0 +1,136 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		[page:Object3D] &rarr; [page:Audio] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			تقوم بإنشاء كائن صوتي موضعي (positional).<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>أمثلة (Examples)</h2>
+
+		<p>
+			[example:webaudio_orientation webaudio / orientation ]<br />
+			[example:webaudio_sandbox webaudio / sandbox ]<br />
+			[example:webaudio_timing webaudio / timing ]
+		</p>
+
+		<h2>المنشئ (Constructor)</h2>
+
+		<h3>[name]( [param:AudioListener listener] )</h3>
+		<p>
+		listener — (ضرورية) كائن [page:AudioListener AudioListener] .
+		</p>
+
+
+		<h2>الخصائص (Properties)</h2>
+
+		<p>
+			تراجع فئة [page:Audio Audio] من أجل الخصائص الموروثة.
+		</p>
+
+		<h3>[property:PannerNode panner]</h3>
+		<p>		خاصية [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode PannerNode] التابعة لـ*PositionalAudio*.</p>
+
+
+		<h2>الوظائف (Methods)</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>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 48 - 0
docs/api/ar/cameras/ArrayCamera.html

@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		[page:Object3D] &rarr; [page:Camera] &rarr; [page:PerspectiveCamera] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			يمكن استخدام [name] لتقديم مشهد بكفاءة مع مجموعة محددة مسبقًا من الكاميرات. يعد هذا جانبًا مهمًا من جوانب الأداء لعرض مشاهد الواقع الافتراضي.<br />
+			يحمل دائمًا نموذج لـ [name] مصفوفة من الكاميرات الفرعية. من الضروري تحديد خاصية *viewport* لكل كاميرا فرعية والتي تحدد جزء منفذ العرض الذي يتم تقديمه باستخدام هذه الكاميرا.
+		</p>
+
+		<h2>أمثلة (Examples)</h2>
+
+		<p>[example:webgl_camera_array camera / array ]</p>
+
+		<h2>المنشئ (Constructor)</h2>
+
+		<h3>[name]( [param:Array array] )</h3>
+		<p>
+			مجموعة من الكاميرات.
+		</p>
+
+
+		<h2>الخصائص (Properties)</h2>
+		<p>راجع الفئة [page:PerspectiveCamera] الأساسية للممتلكات العامة.</p>
+
+		<h3>[property:Array cameras]</h3>
+		<p>
+			مجموعة من الكاميرات.
+		</p>
+
+		<h2>الوظائف (Methods)</h2>
+		<p>راجع الفئة الأساسية [page:PerspectiveCamera]  للتعرف على الطرق الشائعة.</p>
+
+		<h2>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 78 - 0
docs/api/ar/cameras/Camera.html

@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		[page:Object3D] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			فئة أساسية مجردة للكاميرات. يجب أن يتم توريث هذه الفئة دائمًا عند إنشاء كاميرا جديدة.
+		</p>
+
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name]()</h3>
+		<p>
+			ينشئ كائن [name] جديد. لاحظ أن هذه الفئة لا يُقصد أن يتم استدعاؤها مباشرة ؛
+ربما تريد [page:PerspectiveCamera] أو [page:OrthographicCamera] بدلاً من ذلك.
+		</p>
+
+
+		<h2>الخصائص (Properties)</h2>
+		<p>راجع الفئة [page: Object3D] الأساسية للممتلكات العامة.</p>
+
+		<h3>[property:Layers layers]</h3>
+		<p>
+		ال [page:Layers layers] التي تعد الكاميرا عضو فيها. هذه ملكية موروثة من [page:Object3D].<br /><br />
+
+		يجب أن تشترك الكائنات في طبقة واحدة على الأقل مع الكاميرا لتظهر عند عرض وجهة نظر الكاميرا.
+		</p>
+
+		<h3>[property:Matrix4 matrixWorldInverse]</h3>
+		<p>
+			هذه القيمة هي نتيجة عكس matrixWorld. يحتوي MatrixWorld على Matrix الذي يحتوي على عالم تحويل الكاميرا.
+		</p>
+
+		<h3>[property:Matrix4 projectionMatrix]</h3>
+		<p>هذه هي المصفوفة التي تحتوي على الإسقاط.</p>
+
+		<h3>[property:Matrix4 projectionMatrixInverse]</h3>
+		<p>معكوس مصفوفة الإسقاط *projectionMatrix*.</p>
+
+
+		<h2>الوظائف (Methods)</h2>
+		<p>راجع الفئة الأساسية [page:Object3D] للتعرف على الطرق الشائعة.</p>
+
+		<h3>[method:Camera clone]( )</h3>
+		<p>
+			ترجع كاميرا جديدة بنفس خصائص هذه الكاميرا.
+		</p>
+
+		<h3>[method:Camera copy]( [param:Camera source], [param:Boolean recursive] )</h3>
+		<p>
+			تنسخ الخصائص من الكاميرا المصدر إلى هذه الكاميرا.
+		</p>
+
+		<h3>[method:Vector3 getWorldDirection]( [param:Vector3 target] )</h3>
+		<p>
+		[page:Vector3 target] — سيتم نسخ النتيجة في الـ*Vector3* الحالي. <br /><br />
+
+		ترجع [page:Vector3] التي تمثل اتجاه الفضاء العالمي الذي تنظر فيه الكاميرا.
+		(ملاحظة: تنظر الكاميرا إلى محورها z المحلي والسالب).<br /><br />
+		</p>
+
+		<h2>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 95 - 0
docs/api/ar/cameras/CubeCamera.html

@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html lang="ar">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body class="rtl">
+		[page:Object3D] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">يقوم بإنشاء 6 كاميرات يتم تحويلها إلى [page:WebGLCubeRenderTarget].</p>
+
+		<h2>مثال التعليمة البرمجية</h2>
+
+		<code>
+		// Create cube render target
+		const cubeRenderTarget = new THREE.WebGLCubeRenderTarget( 128, { format: THREE.RGBFormat, generateMipmaps: true, minFilter: THREE.LinearMipmapLinearFilter } );
+
+		// Create cube camera
+		const cubeCamera = new THREE.CubeCamera( 1, 100000, cubeRenderTarget );
+		scene.add( cubeCamera );
+
+		// Create car
+		const chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeRenderTarget.texture } );
+		const car = new Mesh( carGeometry, chromeMaterial );
+		scene.add( car );
+
+		// Update the render target cube
+		car.setVisible( false );
+		cubeCamera.position.copy( car.position );
+		cubeCamera.update( renderer, scene );
+
+		// Render the scene
+		car.setVisible( true );
+		renderer.render( scene, camera );
+		</code>
+
+		<h2>أمثلة (Examples)</h2>
+
+		<p>
+			[example:webgl_materials_cubemap_dynamic materials / cubemap / dynamic ]<br />
+			[example:webgl_shading_physical shading / physical ]
+		</p>
+
+		<h2>المنشئ (Constructor)</h2>
+
+
+		<h3>[name]( [param:Number near], [param:Number far], [param:WebGLCubeRenderTarget renderTarget] )</h3>
+		<p>
+		near -- مسافة الاقتطاع القريبة. <br />
+		far -- مسافة القطع البعيدة <br />
+		renderTarget -- هدف عرض مكعب الوجهة *cube render target*.
+		</p>
+
+		<p>
+			ينشئ CubeCamera الذي يحتوي على 6 [page:PerspectiveCamera PerspectiveCameras] ذلك
+			الذي سيتم عرضه من خلال [page:WebGLCubeRenderTarget].
+		</p>
+
+		<h2>الخصائص (Properties)</h2>
+		<p>راجع فئة [page: Object3D] الأساسية للخصائص العامة.</p>
+
+		<h3>[property:WebGLCubeRenderTarget renderTarget]</h3>
+		<p>
+		الهدف الخاص بـ*cube render target*.
+		</p>
+
+		<h2>الوظائف (Methods)</h2>
+		<p>راجع فئة [page: Object3D] الأساسية للخصائص العامة.</p>
+
+		<h3>[method:null update]( [param:WebGLRenderer renderer], [param:Scene scene] )</h3>
+		<p>
+		renderer -- عارض WebGL الحالي <br />
+		scene -- المشهد الحالي
+		</p>
+		<p>
+		استدعاء هذا لتحديث [page:CubeCamera.renderTarget renderTarget].
+		</p>
+
+		<h3>[method:null clear]( [param:WebGLRenderer renderer], [param:Boolean color], [param:Boolean depth], [param:Boolean stencil] )</h3>
+		<p>
+		قم باستدعاء هذا لمسح لون وعمق و / أو مخازن الاستنسل *stencil buffers* المؤقتة الخاصة بالهدف.
+		يتم تعيين مخزن الألوان على اللون الواضح الحالي لجهاز العرض. القيم الافتراضية هي *true*.
+		</p>
+
+		<h2>المصدر (Source)</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 0 - 1
docs/api/en/Polyfills.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 0 - 1
docs/api/en/Template.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 0 - 1
docs/api/en/animation/AnimationAction.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

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

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 0 - 1
docs/api/en/animation/AnimationMixer.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 8 - 9
docs/api/en/animation/AnimationObjectGroup.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -37,15 +36,15 @@
 
 		<h2>Constructor</h2>
 
-
-		<h3>[name]( [param:object obj1], [param:object obj2], [param:object obj3], ... )</h3>
-		[page:object obj] - an abitrary number of meshes that share the same animation state.<br />
-
+		<h3>[name]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
+		<p>
+			[page:Object obj] - an abitrary number of meshes that share the same animation state.
+		</p>
 
 		<h2>Properties</h2>
 
 
-		<h3>[property:object stats]</h3>
+		<h3>[property:Object stats]</h3>
 		<p>
 			An object that contains some informations of this *AnimationObjectGroup* (total number, number
 			in use, number of bindings per object)
@@ -61,17 +60,17 @@
 		<h2>Methods</h2>
 
 
-		<h3>[method:null add]( [param:object obj1], [param:object obj2], [param:object obj3], ... )</h3>
+		<h3>[method:null add]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
 		<p>
 			Adds an arbitrary number of objects to this *AnimationObjectGroup*.
 		</p>
 
-		<h3>[method:null remove]( [param:object obj1], [param:object obj2], [param:object obj3], ... )</h3>
+		<h3>[method:null remove]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
 		<p>
 			Removes an arbitrary number of objects from this *AnimationObjectGroup*.
 		</p>
 
-		<h3>[method:null uncache]( [param:object obj1], [param:object obj2], [param:object obj3], ... )</h3>
+		<h3>[method:null uncache]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
 		<p>
 			Deallocates all memory resources for the passed objects of this *AnimationObjectGroup*.
 		</p>

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

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -48,6 +47,10 @@
 		Sorts the array previously returned by [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>
+		Creates a new clip, containing only the segment of the original clip between the given frames.
+		</p>
 
 		<h2>Source</h2>
 

+ 1 - 7
docs/api/en/animation/KeyframeTrack.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -58,7 +57,7 @@
 
 		<p>
 			Some examples of how to manually create [page:AnimationClip AnimationClips] with different sorts
-			of KeyframeTracks can be found in the [link:https://threejs.org/examples/js/animation/AnimationClipCreator.js AnimationClipCreator]
+			of KeyframeTracks can be found in the [link:https://threejs.org/examples/jsm/animation/AnimationClipCreator.js AnimationClipCreator]
 			file.
 		</p>
 
@@ -250,11 +249,6 @@
 
 		<h2>Static Methods</h2>
 
-		<h3>[method:KeyframeTrack parse]( [param:JSON json] )</h3>
-		<p>
-		Parses a JSON object and returns a new keyframe track of the correct type.
-		</p>
-
 		<h3>[method:JSON toJSON]( [param:KeyframeTrack track] )</h3>
 		<p>
 		Converts the track to JSON.

+ 0 - 1
docs/api/en/animation/PropertyBinding.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 0 - 1
docs/api/en/animation/PropertyMixer.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 0 - 1
docs/api/en/animation/tracks/BooleanKeyframeTrack.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 0 - 1
docs/api/en/animation/tracks/ColorKeyframeTrack.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 0 - 1
docs/api/en/animation/tracks/NumberKeyframeTrack.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 0 - 1
docs/api/en/animation/tracks/QuaternionKeyframeTrack.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 0 - 1
docs/api/en/animation/tracks/StringKeyframeTrack.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 0 - 1
docs/api/en/animation/tracks/VectorKeyframeTrack.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 15 - 20
docs/api/en/audio/Audio.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -18,24 +17,18 @@
 			This uses the [link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API].
 		</p>
 
-
-		<h2>Example</h2>
-
-		<p>
-			[example:webaudio_sandbox webaudio / sandbox ]<br />
-			[example:webaudio_visualizer webaudio / visualizer ]
-		</p>
+		<h2>Code Example</h2>
 
 		<code>
 		// create an AudioListener and add it to the camera
-		var listener = new THREE.AudioListener();
+		const listener = new THREE.AudioListener();
 		camera.add( listener );
 
 		// create a global audio source
-		var sound = new THREE.Audio( listener );
+		const sound = new THREE.Audio( listener );
 
 		// load a sound and set it as the Audio object's buffer
-		var audioLoader = new THREE.AudioLoader();
+		const audioLoader = new THREE.AudioLoader();
 		audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
 			sound.setBuffer( buffer );
 			sound.setLoop( true );
@@ -44,6 +37,12 @@
 		});
 		</code>
 
+		<h2>Examples</h2>
+
+		<p>
+			[example:webaudio_sandbox webaudio / sandbox ]<br />
+			[example:webaudio_visualizer webaudio / visualizer ]
+		</p>
 
 		<h2>Constructor</h2>
 
@@ -85,14 +84,11 @@
 		<h3>[property:Number playbackRate]</h3>
 		<p>Speed of playback. Default is *1*.</p>
 
-		<h3>[property:Number startTime]</h3>
-		<p>The time at which the sound should begin to play. Same as the *when* paramter of [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start AudioBufferSourceNode.start](). Default is *0*.</p>
-
 		<h3>[property:Number offset]</h3>
-		<p>An offset to the time within the audio buffer that playback should begin. Same as the *offset* paramter of [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start AudioBufferSourceNode.start](). Default is *0*.</p>
+		<p>An offset to the time within the audio buffer that playback should begin. Same as the *offset* parameter of [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start AudioBufferSourceNode.start](). Default is *0*.</p>
 
 		<h3>[property:Number duration]</h3>
-		<p>Overrides the duration of the audio. Same as the *duration* paramter of [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start AudioBufferSourceNode.start](). Default is *undefined* to play the whole buffer.</p>
+		<p>Overrides the duration of the audio. Same as the *duration* parameter of [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start AudioBufferSourceNode.start](). Default is *undefined* to play the whole buffer.</p>
 
 		<h3>[property:String source]</h3>
 		<p>An [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode AudioBufferSourceNode] created
@@ -150,7 +146,7 @@
 		Return the current volume.
 		</p>
 
-		<h3>[method:Audio play]()</h3>
+		<h3>[method:Audio play]( delay )</h3>
 		<p>
 		If [page:Audio.hasPlaybackControl hasPlaybackControl] is true, starts playback.
 		</p>
@@ -162,7 +158,7 @@
 
 		<h3>[method:null onEnded]()</h3>
 		<p>
-		Called automatically when playback finished. Sets If [page:Audio.isPlaying isPlaying] to false.
+		Called automatically when playback finished.
 		</p>
 
 		<h3>[method:Audio setBuffer]( audioBuffer )</h3>
@@ -229,8 +225,7 @@
 
 		<h3>[method:Audio stop]()</h3>
 		<p>
-		If [page:Audio.hasPlaybackControl hasPlaybackControl] is enabled, stops playback,
-		resets [page:Audio.startTime startTime] to *0* and sets [page:Audio.isPlaying isPlaying] to false.
+		If [page:Audio.hasPlaybackControl hasPlaybackControl] is enabled, stops playback.
 		</p>
 
 		<h2>Source</h2>

+ 12 - 13
docs/api/en/audio/AudioAnalyser.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -18,24 +17,18 @@
 
 		</p>
 
-
-		<h2>Example</h2>
-
-		<p>
-			[example:webaudio_sandbox webaudio / sandbox ]<br />
-			[example:webaudio_visualizer webaudio / visualizer ]
-		</p>
+		<h2>Code Example</h2>
 
 		<code>
 		// create an AudioListener and add it to the camera
-		var listener = new THREE.AudioListener();
+		const listener = new THREE.AudioListener();
 		camera.add( listener );
 
 		// create an Audio source
-		var sound = new THREE.Audio( listener );
+		const sound = new THREE.Audio( listener );
 
 		// load a sound and set it as the Audio object's buffer
-		var audioLoader = new THREE.AudioLoader();
+		const audioLoader = new THREE.AudioLoader();
 		audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
 			sound.setBuffer( buffer );
 			sound.setLoop(true);
@@ -44,12 +37,18 @@
 		});
 
 		// create an AudioAnalyser, passing in the sound and desired fftSize
-		var analyser = new THREE.AudioAnalyser( sound, 32 );
+		const analyser = new THREE.AudioAnalyser( sound, 32 );
 
 		// get the average frequency of the sound
-		var data = analyser.getAverageFrequency();
+		const data = analyser.getAverageFrequency();
 		</code>
 
+		<h2>Examples</h2>
+
+		<p>
+			[example:webaudio_sandbox webaudio / sandbox ]<br />
+			[example:webaudio_visualizer webaudio / visualizer ]
+		</p>
 
 		<h2>Constructor</h2>
 

+ 1 - 2
docs/api/en/audio/AudioContext.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -29,7 +28,7 @@
 		otherwise set it to a new [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext].
 		</p>
 
-		<h3>[method:AudioContext setContext]( [param:AudioConetxt value] )</h3>
+		<h3>[method:AudioContext setContext]( [param:AudioContext value] )</h3>
 		<p>
 		 Set the variable *context* in the outer scope to *value*.
 		</p>

+ 11 - 12
docs/api/en/audio/AudioListener.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -18,25 +17,18 @@
 			In most cases, the listener object is a child of the camera. So the 3D transformation of the camera represents the 3D transformation of the listener.
 		</p>
 
-
-		<h2>Example</h2>
-
-		<p>
-			[example:webaudio_sandbox webaudio / sandbox ]<br />
-			[example:webaudio_timing webaudio / timing ]<br />
-			[example:webaudio_visualizer webaudio / visualizer ]
-		</p>
+		<h2>Code Example</h2>
 
 		<code>
 		// create an AudioListener and add it to the camera
-		var listener = new THREE.AudioListener();
+		const listener = new THREE.AudioListener();
 		camera.add( listener );
 
 		// create a global audio source
-		var sound = new THREE.Audio( listener );
+		const sound = new THREE.Audio( listener );
 
 		// load a sound and set it as the Audio object's buffer
-		var audioLoader = new THREE.AudioLoader();
+		const audioLoader = new THREE.AudioLoader();
 		audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
 			sound.setBuffer( buffer );
 			sound.setLoop(true);
@@ -45,6 +37,13 @@
 		});
 		</code>
 
+		<h2>Examples</h2>
+
+		<p>
+			[example:webaudio_sandbox webaudio / sandbox ]<br />
+			[example:webaudio_timing webaudio / timing ]<br />
+			[example:webaudio_visualizer webaudio / visualizer ]
+		</p>
 
 		<h2>Constructor</h2>
 

+ 14 - 15
docs/api/en/audio/PositionalAudio.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -18,25 +17,18 @@
 			This uses the [link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API].
 		</p>
 
-
-		<h2>Example</h2>
-
-		<p>
-			[example:webaudio_orientation webaudio / orientation ]<br />
-			[example:webaudio_sandbox webaudio / sandbox ]<br />
-			[example:webaudio_timing webaudio / timing ]
-		</p>
+		<h2>Code Example</h2>
 
 		<code>
 		// create an AudioListener and add it to the camera
-		var listener = new THREE.AudioListener();
+		const listener = new THREE.AudioListener();
 		camera.add( listener );
 
 		// create the PositionalAudio object (passing in the listener)
-		var sound = new THREE.PositionalAudio( listener );
+		const sound = new THREE.PositionalAudio( listener );
 
 		// load a sound and set it as the PositionalAudio object's buffer
-		var audioLoader = new THREE.AudioLoader();
+		const audioLoader = new THREE.AudioLoader();
 		audioLoader.load( 'sounds/song.ogg', function( buffer ) {
 			sound.setBuffer( buffer );
 			sound.setRefDistance( 20 );
@@ -44,15 +36,22 @@
 		});
 
 		// create an object for the sound to play from
-		var sphere = new THREE.SphereGeometry( 20, 32, 16 );
-		var material = new THREE.MeshPhongMaterial( { color: 0xff2200 } );
-		var mesh = new THREE.Mesh( sphere, material );
+		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>Examples</h2>
+
+		<p>
+			[example:webaudio_orientation webaudio / orientation ]<br />
+			[example:webaudio_sandbox webaudio / sandbox ]<br />
+			[example:webaudio_timing webaudio / timing ]
+		</p>
 
 		<h2>Constructor</h2>
 

+ 1 - 2
docs/api/en/cameras/ArrayCamera.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -17,7 +16,7 @@
 			An instance of [name] always has an array of sub cameras. It's mandatory to define for each sub camera the *viewport* property which determines the part of the viewport that is rendered with this camera.
 		</p>
 
-		<h2>Example</h2>
+		<h2>Examples</h2>
 
 		<p>[example:webgl_camera_array camera / array ]</p>
 

+ 0 - 8
docs/api/en/cameras/Camera.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -30,13 +29,6 @@
 		<h2>Properties</h2>
 		<p>See the base [page:Object3D] class for common properties.</p>
 
-		<h3>[property:Boolean isCamera]</h3>
-		<p>
-			Used to check whether this or derived classes are cameras. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally by the renderer for optimisation.
-		</p>
-
 		<h3>[property:Layers layers]</h3>
 		<p>
 		The [page:Layers layers] that the camera is a member of. This is an inherited

+ 24 - 31
docs/api/en/cameras/CubeCamera.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -12,66 +11,66 @@
 
 		<h1>[name]</h1>
 
-		<p class="desc">Creates 6 cameras that render to a [page:WebGLRenderTargetCube].</p>
+		<p class="desc">Creates 6 cameras that render to a [page:WebGLCubeRenderTarget].</p>
 
-		<h2>Examples</h2>
+		<h2>Code Example</h2>
 
-		<p>[example:webgl_materials_cubemap_dynamic materials / cubemap / dynamic ]</p>
-		<p>[example:webgl_shading_physical shading / physical ]</p>
+		<code>
+		// Create cube render target
+		const cubeRenderTarget = new THREE.WebGLCubeRenderTarget( 128, { format: THREE.RGBFormat, generateMipmaps: true, minFilter: THREE.LinearMipmapLinearFilter } );
 
-		<code>// Create cube camera
-		var cubeCamera = new THREE.CubeCamera( 1, 100000, 128 );
+		// Create cube camera
+		const cubeCamera = new THREE.CubeCamera( 1, 100000, cubeRenderTarget );
 		scene.add( cubeCamera );
 
 		// Create car
-		var chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeCamera.renderTarget.texture } );
-		var car = new Mesh( carGeometry, chromeMaterial );
+		const chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeRenderTarget.texture } );
+		const car = new Mesh( carGeometry, chromeMaterial );
 		scene.add( car );
 
 		// Update the render target cube
-		car.setVisible( false );
+		car.visible = false;
 		cubeCamera.position.copy( car.position );
 		cubeCamera.update( renderer, scene );
 
 		// Render the scene
-		car.setVisible( true );
+		car.visible = true;
 		renderer.render( scene, camera );
 		</code>
 
+		<h2>Examples</h2>
+
+		<p>
+			[example:webgl_materials_cubemap_dynamic materials / cubemap / dynamic ]<br />
+			[example:webgl_shading_physical shading / physical ]
+		</p>
 
 		<h2>Constructor</h2>
 
 
-		<h3>[name]( [param:Number near], [param:Number far], [param:Number cubeResolution], [param:Object options] )</h3>
+		<h3>[name]( [param:Number near], [param:Number far], [param:WebGLCubeRenderTarget renderTarget] )</h3>
 		<p>
 		near -- The near clipping distance. <br />
-		far -- The far clipping distance <br />
-		cubeResolution -- Sets the length of the cube's edges. <br />
-		options - (optional) object that holds texture parameters passed to the auto-generated WebGLRenderTargetCube.
-		If not specified, the options default to:
-		<code>
-		{ format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter }
-		</code>
-
+		far -- The far clipping distance. <br />
+		renderTarget -- The destination cube render target.
 		</p>
+
 		<p>
 		Constructs a CubeCamera that contains 6 [page:PerspectiveCamera PerspectiveCameras] that
-		render to a [page:WebGLRenderTargetCube].
+		render to a [page:WebGLCubeRenderTarget].
 		</p>
 
-
 		<h2>Properties</h2>
 		<p>See the base [page:Object3D] class for common properties.</p>
 
-		<h3>[property:WebGLRenderTargetCube renderTarget]</h3>
+		<h3>[property:WebGLCubeRenderTarget renderTarget]</h3>
 		<p>
-		The cube texture that gets generated.
+		The destination cube render target.
 		</p>
 
 		<h2>Methods</h2>
 		<p>See the base [page:Object3D] class for common methods.</p>
 
-
 		<h3>[method:null update]( [param:WebGLRenderer renderer], [param:Scene scene] )</h3>
 		<p>
 		renderer -- The current WebGL renderer <br />
@@ -81,12 +80,6 @@
 		Call this to update the [page:CubeCamera.renderTarget renderTarget].
 		</p>
 
-		<h3>[method:null clear]( [param:WebGLRenderer renderer], [param:Boolean color], [param:Boolean depth], [param:Boolean stencil] )</h3>
-		<p>
-		Call this to clear the [page:CubeCamera.renderTarget renderTarget] color, depth, and/or stencil buffers.
-		The color buffer is set to the renderer's current clear color. Arguments default to *true*.
-		</p>
-
 		<h2>Source</h2>
 
 		<p>

+ 19 - 24
docs/api/en/cameras/OrthographicCamera.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -21,23 +20,26 @@
 			This can be useful for rendering 2D scenes and UI elements, amongst other things.
 		</p>
 
+		<h2>Code Example</h2>
 
-		<h2>Example</h2>
+		<code>
+		const camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 );
+		scene.add( camera );
+		</code>
 
-		<p>[example:webgl_camera camera ]</p>
-		<p>[example:webgl_interactive_cubes_ortho interactive / cubes / ortho ]</p>
-		<p>[example:webgl_materials_cubemap_dynamic materials / cubemap / dynamic ]</p>
-		<p>[example:webgl_postprocessing_advanced postprocessing / advanced ]</p>
-		<p>[example:webgl_postprocessing_dof2 postprocessing / dof2 ]</p>
-		<p>[example:webgl_postprocessing_godrays postprocessing / godrays ]</p>
-		<p>[example:webgl_rtt rtt ]</p>
-		<p>[example:webgl_shaders_tonemapping shaders / tonemapping ]</p>
-		<p>[example:webgl_shadowmap shadowmap ]</p>
-		<p>[example:webgl_terrain_dynamic terrain / dynamic ]</p>
-
-		<code>var camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 );
-scene.add( camera );</code>
+		<h2>Examples</h2>
 
+		<p>
+			[example:webgl_camera camera ]<br />
+			[example:webgl_interactive_cubes_ortho interactive / cubes / ortho ]<br />
+			[example:webgl_materials_cubemap_dynamic materials / cubemap / dynamic ]<br />
+			[example:webgl_postprocessing_advanced postprocessing / advanced ]<br />
+			[example:webgl_postprocessing_dof2 postprocessing / dof2 ]<br />
+			[example:webgl_postprocessing_godrays postprocessing / godrays ]<br />
+			[example:webgl_rtt rtt ]<br />
+			[example:webgl_shaders_tonemapping shaders / tonemapping ]<br />
+			[example:webgl_shadowmap shadowmap ]
+		</p>
 
 		<h2>Constructor</h2>
 
@@ -69,14 +71,7 @@ scene.add( camera );</code>
 		<p>
 		Camera frustum far plane. Default is *2000*.<br /><br />
 
-		The valid range is between the current value of the [page:.near near] plane and infinity.
-		</p>
-
-		<h3>[property:Boolean isOrthographicCamera]</h3>
-		<p>
-			Used to test whether this or derived classes are OrthographicCameras. Default is *true*.<br /><br />
-
-			This should not be changed as it is used internally by the renderer for optimisation.
+		Must be greater than the current value of [page:.near near] plane.
 		</p>
 
 		<h3>[property:Float left]</h3>
@@ -130,7 +125,7 @@ scene.add( camera );</code>
 		Updates the camera projection matrix. Must be called after any change of parameters.
 		</p>
 
-		<h3>[method:Object toJSON]([param:object meta])</h3>
+		<h3>[method:Object toJSON]([param:Object meta])</h3>
 		<p>
 		meta -- object containing metadata such as textures or images in objects' descendants.<br />
 		Convert the camera to three.js [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].

+ 19 - 23
docs/api/en/cameras/PerspectiveCamera.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -19,18 +18,22 @@
 			common projection mode used for rendering a 3D scene.
 		</p>
 
+		<h2>Code Example</h2>
 
-		<h2>Example</h2>
+		<code>
+		const camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );
+		scene.add( camera );
+		</code>
 
-		<p>[example:webgl_animation_skinning_blending animation / skinning / blending ]</p>
-		<p>[example:webgl_animation_skinning_morph animation / skinning / blending ]</p>
-		<p>[example:webgl_effects_stereo effects / stereo ]</p>
-		<p>[example:webgl_interactive_cubes interactive / cubes ]</p>
-		<p>[example:webgl_loader_collada_skinning loader / collada / skinning ]</p>
-
-		<code>var camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );
-scene.add( camera );</code>
+		<h2>Examples</h2>
 
+		<p>
+			[example:webgl_animation_skinning_blending animation / skinning / blending ]<br />
+			[example:webgl_animation_skinning_morph animation / skinning / morph ]<br />
+			[example:webgl_effects_stereo effects / stereo ]<br />
+			[example:webgl_interactive_cubes interactive / cubes ]<br />
+			[example:webgl_loader_collada_skinning loader / collada / skinning ]
+		</p>
 
 		<h2>Constructor</h2>
 
@@ -59,7 +62,7 @@ scene.add( camera );</code>
 		<p>
 			Camera frustum far plane. Default is *2000*.<br /><br />
 
-			The valid range is between the current value of the [page:.near near] plane and infinity.
+			Must be greater than the current value of [page:.near near] plane.
 		</p>
 
 		<h3>[property:Float filmGauge]</h3>
@@ -77,13 +80,6 @@ scene.add( camera );</code>
 		<h3>[property:Float fov]</h3>
 		<p>Camera frustum vertical field of view, from bottom to top of view, in degrees. Default is *50*.</p>
 
-		<h3>[property:Boolean isPerspectiveCamera]</h3>
-		<p>
-			Used to test whether this or derived classes are PerspectiveCameras. Default is *true*.<br /><br />
-
-			This should not be changed as it is used internally by the renderer for optimisation.
-		</p>
-
 
 		<h3>[property:Float near]</h3>
 		<p>
@@ -163,10 +159,10 @@ scene.add( camera );</code>
 
 		then for each monitor you would call it like this:<br />
 
-		<code>var w = 1920;
-var h = 1080;
-var fullWidth = w * 3;
-var fullHeight = h * 2;
+		<code>const w = 1920;
+const h = 1080;
+const fullWidth = w * 3;
+const fullHeight = h * 2;
 
 // A
 camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );
@@ -190,7 +186,7 @@ camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );
 		Updates the camera projection matrix. Must be called after any change of parameters.
 		</p>
 
-		<h3>[method:Object toJSON]([param:object meta])</h3>
+		<h3>[method:Object toJSON]([param:Object meta])</h3>
 		<p>
 		meta -- object containing metadata such as textures or images in objects' descendants.<br />
 		Convert the camera to three.js [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].

+ 4 - 13
docs/api/en/cameras/StereoCamera.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -16,22 +15,14 @@
 		[link:https://en.wikipedia.org/wiki/Anaglyph_3D 3D Anaglyph] or [link:https://en.wikipedia.org/wiki/parallax_barrier Parallax Barrier].
 		</p>
 
-
-		<h2>Example</h2>
-
-		<p>[example:webgl_effects_anaglyph effects / anaglyph ]</p>
-		<p>[example:webgl_effects_parallaxbarrier effects / parallaxbarrier ]</p>
-		<p>[example:webgl_effects_stereo effects / stereo ]</p>
+		<h2>Examples</h2>
 
 		<p>
-		This class is used internally in the files<br /><br />
-		[link:https://github.com/mrdoob/three.js/blob/master/examples/js/effects/AnaglyphEffect.js examples/js/effects/AnaglyphEffect.js]<br /><br />
-		[link:https://github.com/mrdoob/three.js/blob/master/examples/js/effects/ParallaxBarrierEffect.js examples/js/effects/ParallaxBarrierEffect.js]<br /><br />
-		[link:https://github.com/mrdoob/three.js/blob/master/examples/js/effects/StereoEffect.js examples/js/effects/StereoEffect.js]<br /><br />
-		used in the above examples.
+			[example:webgl_effects_anaglyph effects / anaglyph ]<br />
+			[example:webgl_effects_parallaxbarrier effects / parallaxbarrier ]<br />
+			[example:webgl_effects_stereo effects / stereo ]
 		</p>
 
-
 		<h2>Constructor</h2>
 
 		<h3>[name]( )</h3>

+ 0 - 1
docs/api/en/constants/Animation.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 1 - 2
docs/api/en/constants/Core.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -13,7 +12,7 @@
 		<h2>Revision Number</h2>
 
 		<code>
-		THREE.REV
+		THREE.REVISION
 		</code>
 
 		<div id="rev">

+ 6 - 7
docs/api/en/constants/CustomBlendingEquations.html

@@ -3,30 +3,29 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
 	<body>
 		<h1>Custom Blending Equation Constants</h1>
 
-
-		<h2>Example</h2>
-		<p>[example:webgl_materials_blending_custom materials / blending / custom ]</p>
-
-		<h2>Usage</h2>
 		<p>
 			These work with all material types. First set the material's blending mode to THREE.CustomBlending, then set the desired Blending Equation, Source Factor and Destination Factor.
 		</p>
 
+		<h2>Code Example</h2>
+
 		<code>
-		var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
+		const material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
 		material.blending = THREE.CustomBlending;
 		material.blendEquation = THREE.AddEquation; //default
 		material.blendSrc = THREE.SrcAlphaFactor; //default
 		material.blendDst = THREE.OneMinusSrcAlphaFactor; //default
 		</code>
 
+		<h2>Examples</h2>
+		<p>[example:webgl_materials_blending_custom materials / blending / custom ]</p>
+
 		<h2>Blending Equations</h2>
 		<code>
 		THREE.AddEquation

+ 0 - 79
docs/api/en/constants/DrawModes.html

@@ -1,79 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		<h1>Draw Mode Constants</h1>
-
-		<p class="desc">
-			These are valid values for [page:Mesh.drawMode], and control how the list of vertices is interpeted once sent to the GPU.
-		</p>
-
-		<h2>Draw Modes</h2>
-
-		<code>
-			THREE.TrianglesDrawMode
-		</code>
-		<p>
-			This is the default, and results in every three consecutive vertices (v0, v1, v2), (v3, v4, v5), ...
-			being interpreted as a separate triangle. <br />
-			If the number of vertices is not a multiple of 3, excess vertices are ignored.
-		</p>
-
-		<code>
-			THREE.TriangleStripDrawMode
-		</code>
-		<p>
-			This will result in a series of triangles connected in a strip, given by (v0, v1, v2), (v2, v1, v3), (v2, v3, v4), ...
-			so that every subsequent triangle shares two vertices with the previous triangle.
-		</p>
-
-		<code>
-			THREE.TriangleFanDrawMode
-		</code>
-		<p>
-			This will result in a series of triangles each sharing the first vertex (like a fan),
-			given by (v0, v1, v2), (v0, v2, v3), (v0, v3, v4), ... <br /><br />
-
-			<em>Note:</em> As of [link:https://en.wikipedia.org/wiki/DirectX#DirectX_10 DirectX10], this mode is not supported. As Chrome and Firefox
-			render WebGL using [link:https://en.wikipedia.org/wiki/ANGLE_(software) ANGLE] on Windows,
-			internally this mode will be converted to a supported mode, which will likely lead to lowered
-			performance on those browsers.
-		</p>
-
-
-		<h2>Usage</h2>
-
-		<code>
-		var geometry = new THREE.BufferGeometry();
-
-		var vertices = [];
-
-		vertices.push( -10,  10, 0 );
-		vertices.push( -10, -10, 0 );
-		vertices.push(  10, -10, 0 );
-
-		// ...
-
-		geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) );
-
-		var material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
-
-		var mesh = new THREE.Mesh( geometry, material );
-		mesh.drawMode = THREE.TrianglesDrawMode; //default
-
-		scene.add( mesh );
-		</code>
-
-		<h2>Source</h2>
-
-		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
-		</p>
-	</body>
-</html>

+ 0 - 15
docs/api/en/constants/Materials.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -27,20 +26,6 @@
 		Default is [page:Constant FrontSide].
 		</p>
 
-
-		<h2>Colors</h2>
-		<code>
-		THREE.NoColors
-		THREE.FaceColors
-		THREE.VertexColors
-		</code>
-		<p>
-		[page:Constant NoColors] is the default and applies the material's color to all faces.<br />
-		[page:Constant FaceColors] colors faces according to each [page:Face3 Face3] [page:Color Color] value.<br />
-		[page:Constant VertexColors] colors faces according to each [page:Face3 Face3] vertexColors value. This is an array of three [page:Color Color]s, one for each vertex in the face.<br />
-		See the [example:webgl_geometry_colors geometry / colors] example.
-		</p>
-
 		<h2>Blending Mode</h2>
 		<code>
 		THREE.NoBlending

+ 1 - 16
docs/api/en/constants/Renderer.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -24,16 +23,6 @@
 		[page:constant CullFaceFrontBack] culls both front and back faces.
 		</p>
 
-		<h2>Front Face Direction</h2>
-		<code>
-		THREE.FrontFaceDirectionCW
-		THREE.FrontFaceDirectionCCW
-		</code>
-		<p>
-		[page:constant FrontFaceDirectionCW] sets the winding order for polygons to clockwise.<br />
-		[page:constant FrontFaceDirectionCCW] sets the winding order for polygons to counter-clockwise (default).
-		</p>
-
 		<h2>Shadow Types</h2>
 		<code>
 		THREE.BasicShadowMap
@@ -46,7 +35,7 @@
 
 		[page:constant BasicShadowMap] gives unfiltered shadow maps - fastest, but lowest quality.<br />
 		[page:constant PCFShadowMap] filters shadow maps using the Percentage-Closer Filtering (PCF) algorithm (default).<br />
-		[page:constant PCFSoftShadowMap] filters shadow maps using the Percentage-Closer Soft Shadows (PCSS) algorithm.<br />
+		[page:constant PCFSoftShadowMap] filters shadow maps using the Percentage-Closer Filtering (PCF) algorithm with better soft shadows especially when using low-resolution shadow maps.<br />
 		[page:constant VSMShadowMap] filters shadow maps using the Variance Shadow Map (VSM) algorithm. When using VSMShadowMap all shadow receivers will also cast shadows.
 		</p>
 
@@ -55,7 +44,6 @@
 		THREE.NoToneMapping
 		THREE.LinearToneMapping
 		THREE.ReinhardToneMapping
-		THREE.Uncharted2ToneMapping
 		THREE.CineonToneMapping
 		THREE.ACESFilmicToneMapping
 		</code>
@@ -64,9 +52,6 @@
 		This is used to approximate the appearance of high dynamic range (HDR) on the
 		low dynamic range medium of a standard computer monitor or mobile device's screen.<br /><br />
 
-		[page:constant NoToneMapping] disables tone mapping.<br />
-		[page:constant LinearToneMapping] is the default.<br /><br />
-
 		See the [example:webgl_tonemapping WebGL / tonemapping] example.
 
 		</p>

+ 324 - 7
docs/api/en/constants/Textures.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -17,7 +16,6 @@
 		THREE.CubeRefractionMapping
 		THREE.EquirectangularReflectionMapping
 		THREE.EquirectangularRefractionMapping
-		THREE.SphericalReflectionMapping
 		THREE.CubeUVReflectionMapping
 		THREE.CubeUVRefractionMapping
 		</code>
@@ -38,10 +36,6 @@
 		vertical axis, with the top and bottom edges of the image corresponding to the north and south poles
 		of a mapped sphere.<br /><br />
 
-		[page:Constant SphericalReflectionMapping] is for use with a spherical reflection map such as may be obtained
-		by cropping a photograph of a mirrored ball.  Sphere maps will be rendered "facing" the camera, irrespective
-		of the position of the camera relative to the cubemapped object or surface.<br /><br />
-
 		See the [example:webgl_materials_envmaps materials / envmaps] example.
 		</p>
 
@@ -147,8 +141,14 @@
 		<h2>Formats</h2>
 		<code>
 		THREE.AlphaFormat
+		THREE.RedFormat
+		THREE.RedIntegerFormat
+		THREE.RGFormat
+		THREE.RGIntegerFormat
 		THREE.RGBFormat
+		THREE.RGBIntegerFormat
 		THREE.RGBAFormat
+		THREE.RGBAIntegerFormat
 		THREE.LuminanceFormat
 		THREE.LuminanceAlphaFormat
 		THREE.RGBEFormat
@@ -161,10 +161,35 @@
 
 		[page:constant AlphaFormat] discards the red, green and blue components and reads just the alpha component.<br /><br />
 
+		[page:constant RedFormat] discards the green and blue components and reads just the red component.<br /><br />
+
+		[page:constant RedIntegerFormat] discards the green and blue components and reads just the red component.
+		The texels are read as integers instead of floating point.
+		(can only be used with a WebGL 2 rendering context).
+		<br /><br />
+
+		[page:constant RGFormat] discards the alpha, and blue components and reads the red, and green components.
+		(can only be used with a WebGL 2 rendering context).
+		<br /><br />
+
+		[page:constant RGIntegerFormat] discards the alpha, and blue components and reads the red, and green components.
+		The texels are read as integers instead of floating point.
+		(can only be used with a WebGL 2 rendering context).
+		<br /><br />
+
 		[page:constant RGBFormat] discards the alpha components and reads the red, green and blue components.<br /><br />
 
+		[page:constant RGBIntegerFormat] discards the alpha components and reads the red, green and blue components.
+		(can only be used with a WebGL 2 rendering context).
+		<br /><br />
+
 		[page:constant RGBAFormat] is the default and reads the red, green, blue and alpha components.<br /><br />
 
+		[page:constant RGBAIntegerFormat] is the default and reads the red, green, blue and alpha components.
+		The texels are read as integers instead of floating point.
+		(can only be used with a WebGL 2 rendering context).
+		<br /><br />
+
 		[page:constant LuminanceFormat] reads each element as a single luminance component.
 		 This is then converted to a floating point, clamped to the range [0,1], and then assembled
 		 into an RGBA element by placing the luminance value in the red, green and blue channels,
@@ -231,11 +256,303 @@
 		<h2>ETC Compressed Texture Format</h2>
 		<code>
 		THREE.RGB_ETC1_Format
+		THREE.RGB_ETC2_Format
+		THREE.RGBA_ETC2_EAC_Format
 		</code>
 		<p>
 		For use with a [page:CompressedTexture CompressedTexture]'s [page:Texture.format format]	property,
 		these require support for the [link:https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc1/ WEBGL_compressed_texture_etc1]
-		extension. <br /><br />
+		(ETC1) or [link:https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/ WEBGL_compressed_texture_etc]
+		(ETC2) extensions. <br /><br />
+		</p>
+
+		<h2>ASTC Compressed Texture Format</h2>
+		<code>
+		THREE.RGBA_ASTC_4x4_Format
+		THREE.RGBA_ASTC_5x4_Format
+		THREE.RGBA_ASTC_5x5_Format
+		THREE.RGBA_ASTC_6x5_Format
+		THREE.RGBA_ASTC_6x6_Format
+		THREE.RGBA_ASTC_8x5_Format
+		THREE.RGBA_ASTC_8x6_Format
+		THREE.RGBA_ASTC_8x8_Format
+		THREE.RGBA_ASTC_10x5_Format
+		THREE.RGBA_ASTC_10x6_Format
+		THREE.RGBA_ASTC_10x8_Format
+		THREE.RGBA_ASTC_10x10_Format
+		THREE.RGBA_ASTC_12x10_Format
+		THREE.RGBA_ASTC_12x12_Format
+		THREE.SRGB8_ALPHA8_ASTC_4x4_Format
+		THREE.SRGB8_ALPHA8_ASTC_5x4_Format
+		THREE.SRGB8_ALPHA8_ASTC_5x5_Format
+		THREE.SRGB8_ALPHA8_ASTC_6x5_Format
+		THREE.SRGB8_ALPHA8_ASTC_6x6_Format
+		THREE.SRGB8_ALPHA8_ASTC_8x5_Format
+		THREE.SRGB8_ALPHA8_ASTC_8x6_Format
+		THREE.SRGB8_ALPHA8_ASTC_8x8_Format
+		THREE.SRGB8_ALPHA8_ASTC_10x5_Format
+		THREE.SRGB8_ALPHA8_ASTC_10x6_Format
+		THREE.SRGB8_ALPHA8_ASTC_10x8_Format
+		THREE.SRGB8_ALPHA8_ASTC_10x10_Format
+		THREE.SRGB8_ALPHA8_ASTC_12x10_Format
+		THREE.SRGB8_ALPHA8_ASTC_12x12_Format
+		</code>
+		<p>
+		For use with a [page:CompressedTexture CompressedTexture]'s [page:Texture.format format]	property,
+		these require support for the [link:https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/ WEBGL_compressed_texture_astc] extension. <br /><br />
+		</p>
+
+		<h2>Internal Formats</h2>
+		<code>
+		'ALPHA'
+		'RGB'
+		'RGBA'
+		'LUMINANCE'
+		'LUMINANCE_ALPHA'
+		'RED_INTEGER'
+		'R8'
+		'R8_SNORM'
+		'R8I'
+		'R8UI'
+		'R16I'
+		'R16UI'
+		'R16F'
+		'R32I'
+		'R32UI'
+		'R32F'
+		'RG8'
+		'RG8_SNORM'
+		'RG8I'
+		'RG8UI'
+		'RG16I'
+		'RG16UI'
+		'RG16F'
+		'RG32I'
+		'RG32UI'
+		'RG32F'
+		'RGB565'
+		'RGB8'
+		'RGB8_SNORM'
+		'RGB8I'
+		'RGB8UI'
+		'RGB16I'
+		'RGB16UI'
+		'RGB16F'
+		'RGB32I'
+		'RGB32UI'
+		'RGB32F'
+		'RGB9_E5'
+		'SRGB8'
+		'R11F_G11F_B10F'
+		'RGBA4'
+		'RGBA8'
+		'RGBA8_SNORM'
+		'RGBA8I'
+		'RGBA8UI'
+		'RGBA16I'
+		'RGBA16UI'
+		'RGBA16F'
+		'RGBA32I'
+		'RGBA32UI'
+		'RGBA32F'
+		'RGB5_A1'
+		'RGB10_A2'
+		'RGB10_A2UI'
+		'SRGB8_ALPHA8'
+		'DEPTH_COMPONENT16'
+		'DEPTH_COMPONENT24'
+		'DEPTH_COMPONENT32F'
+		'DEPTH24_STENCIL8'
+		'DEPTH32F_STENCIL8'
+		</code>
+
+		<p>
+
+		Heads up: changing the internal format of a texture will only affect the
+		texture when using a WebGL 2 rendering context.<br /><br />
+
+		For use with a texture's [page:Texture.internalFormat internalFormat]	property,
+		these define how elements of a texture, or *texels*, are stored on the GPU.<br /><br />
+
+		[page:constant R8] stores the red component on 8 bits.<br /><br />
+
+		[page:constant R8_SNORM] stores the red component on 8 bits. The component is stored as normalized. <br /><br />
+
+		[page:constant R8I] stores the red component on 8 bits. The component is stored as an integer. <br /><br />
+
+		[page:constant R8UI] stores the red component on 8 bits. The component is stored as an unsigned integer. <br /><br />
+
+		[page:constant R16I] stores the red component on 16 bits. The component is stored as an integer. <br /><br />
+
+		[page:constant R16UI] stores the red component on 16 bits. The component is stored as an unsigned integer. <br /><br />
+
+		[page:constant R16F] stores the red component on 16 bits. The component is stored as floating point. <br /><br />
+
+		[page:constant R32I] stores the red component on 32 bits. The component is stored as an integer. <br /><br />
+
+		[page:constant R32UI] stores the red component on 32 bits. The component is stored as an unsigned integer. <br /><br />
+
+		[page:constant R32F] stores the red component on 32 bits. The component is stored as floating point. <br /><br />
+
+		[page:constant RG8] stores the red and green components on 8 bits each.<br /><br />
+
+		[page:constant RG8_SNORM] stores the red and green components on 8 bits each.
+		Every component is stored as normalized.
+		<br /><br />
+
+		[page:constant RG8I] stores the red and green components on 8 bits each.
+		Every component is stored as an integer.
+		<br /><br />
+
+		[page:constant RG8UI] stores the red and green components on 8 bits each.
+		Every component is stored as an unsigned integer.
+		<br /><br />
+
+		[page:constant RG16I] stores the red and green components on 16 bits each.
+		Every component is stored as an integer.
+		<br /><br />
+
+		[page:constant RG16UI] stores the red and green components on 16 bits each.
+		Every component is stored as an unsigned integer.
+		<br /><br />
+
+		[page:constant RG16F] stores the red and green components on 16 bits each.
+		Every component is stored as floating point.
+		<br /><br />
+
+		[page:constant RG32I] stores the red and green components on 32 bits each.
+		Every component is stored as an integer.
+		<br /><br />
+
+		[page:constant RG32UI] stores the red and green components on 32 bits.
+		Every component is stored as an unsigned integer.
+		<br /><br />
+
+		[page:constant RG32F] stores the red and green components on 32 bits.
+		Every component is stored as floating point.
+		<br /><br />
+
+		[page:constant RGB8] stores the red, green, and blue components on 8 bits each.
+
+		[page:constant RGB8_SNORM] stores the red, green, and blue components on 8 bits each.
+		Every component is stored as normalized.
+		<br /><br />
+
+		[page:constant RGB8I] stores the red, green, and blue components on 8 bits each.
+		Every component is stored as an integer.
+		<br /><br />
+
+		[page:constant RGB8UI] stores the red, green, and blue components on 8 bits each.
+		Every component is stored as an unsigned integer.
+		<br /><br />
+
+		[page:constant RGB16I] stores the red, green, and blue components on 16 bits each.
+		Every component is stored as an integer.
+		<br /><br />
+
+		[page:constant RGB16UI] stores the red, green, and blue components on 16 bits each.
+		Every component is stored as an unsigned integer.
+		<br /><br />
+
+		[page:constant RGB16F] stores the red, green, and blue components on 16 bits each.
+		Every component is stored as floating point
+		<br /><br />
+
+		[page:constant RGB32I] stores the red, green, and blue components on 32 bits each.
+		Every component is stored as an integer.
+		<br /><br />
+
+		[page:constant RGB32UI] stores the red, green, and blue components on 32 bits each.
+		Every component is stored as an unsigned integer.
+		<br /><br />
+
+		[page:constant RGB32F] stores the red, green, and blue components on 32 bits each.
+		Every component is stored as floating point
+		<br /><br />
+
+		[page:constant R11F_G11F_B10F] stores the red, green, and blue components respectively on 11 bits, 11 bits, and 10bits.
+		Every component is stored as floating point.
+		<br /><br />
+
+		[page:constant RGB565] stores the red, green, and blue components respectively on 5 bits, 6 bits, and 5 bits.<br /><br />
+
+		[page:constant RGB9_E5] stores the red, green, and blue components on 9 bits each.<br /><br />
+
+		[page:constant RGBA8] stores the red, green, blue, and alpha components on 8 bits each.<br /><br />
+
+		[page:constant RGBA8_SNORM] stores the red, green, blue, and alpha components on 8 bits.
+		Every component is stored as normalized.
+		<br /><br />
+
+		[page:constant RGBA8I] stores the red, green, blue, and alpha components on 8 bits each.
+		Every component is stored as an integer.
+		<br /><br />
+
+		[page:constant RGBA8UI] stores the red, green, blue, and alpha components on 8 bits.
+		Every component is stored as an unsigned integer.
+		<br /><br />
+
+		[page:constant RGBA16I] stores the red, green, blue, and alpha components on 16 bits.
+		Every component is stored as an integer.
+		<br /><br />
+
+		[page:constant RGBA16UI] stores the red, green, blue, and alpha components on 16 bits.
+		Every component is stored as an unsigned integer.
+		<br /><br />
+
+		[page:constant RGBA16F] stores the red, green, blue, and alpha components on 16 bits.
+		Every component is stored as floating point.
+		<br /><br />
+
+		[page:constant RGBA32I] stores the red, green, blue, and alpha components on 32 bits.
+		Every component is stored as an integer.
+		<br /><br />
+
+		[page:constant RGBA32UI] stores the red, green, blue, and alpha components on 32 bits.
+		Every component is stored as an unsigned integer.
+		<br /><br />
+
+		[page:constant RGBA32F] stores the red, green, blue, and alpha components on 32 bits.
+		Every component is stored as floating point.
+		<br /><br />
+
+		[page:constant RGB5_A1] stores the red, green, blue, and alpha components respectively on 5 bits, 5 bits, 5 bits, and 1 bit.<br /><br />
+
+		[page:constant RGB10_A2] stores the red, green, blue, and alpha components respectively on 10 bits, 10 bits, 10 bits and 2 bits.<br /><br />
+
+		[page:constant RGB10_A2UI] stores the red, green, blue, and alpha components respectively on 10 bits, 10 bits, 10 bits and 2 bits.
+		Every component is stored as an unsigned integer.
+		<br /><br />
+
+		[page:constant SRGB8] stores the red, green, and blue components on 8 bits each.<br /><br />
+
+		[page:constant SRGB8_ALPHA8] stores the red, green, blue, and alpha components on 8 bits each.<br /><br />
+
+		[page:constant DEPTH_COMPONENT16] stores the depth component on 16bits.<br /><br />
+
+		[page:constant DEPTH_COMPONENT24] stores the depth component on 24bits.<br /><br />
+
+		[page:constant DEPTH_COMPONENT32F] stores the depth component on 32bits. The component is stored as floating point.<br /><br />
+
+		[page:constant DEPTH24_STENCIL8] stores the depth, and stencil components respectively on 24 bits and 8 bits.
+		The stencil component is stored as an unsigned integer.
+		<br /><br />
+
+		[page:constant DEPTH32F_STENCIL8] stores the depth, and stencil components respectively on 32 bits and 8 bits.
+		The depth component is stored as floating point, and the stencil component as an unsigned integer.
+		<br /><br />
+
+		Note that the texture must have the correct [page:Texture.type type] set,
+		as well as the correct [page:Texture.format format].
+
+		See [link:https://developer.mozilla.org/en/docs/Web/API/WebGLRenderingContext/texImage2D WebGLRenderingContext.texImage2D], and
+		[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/texImage3D WebGL2RenderingContext.texImage3D],
+		for more details regarding the possible combination of [page:Texture.format format], [page:Texture.internalFormat internalFormat],
+		and [page:Texture.type type].<br /><br />
+
+		For more in-depth information regarding internal formats, you can also refer directly
+		to the [link:https://www.khronos.org/registry/webgl/specs/latest/2.0/ WebGL2 Specification] and
+		to the [link:https://www.khronos.org/registry/OpenGL/specs/es/3.0/es_spec_3.0.pdf OpenGL ES 3.0 Specification].
 		</p>
 
 		<h2>Encoding</h2>

+ 12 - 8
docs/api/en/core/BufferAttribute.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -58,13 +57,6 @@
 		then this will count the number of such vectors stored.
 		</p>
 
-		<h3>[property:Boolean isBufferAttribute]</h3>
-		<p>
-			Used to check whether this or derived classes are BufferAttributes. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
-		</p>
-
 		<h3>[property:Integer itemSize]</h3>
 		<p>The length of vectors that are being stored in the [page:BufferAttribute.array array].</p>
 
@@ -113,6 +105,18 @@
 
 		<h2>Methods</h2>
 
+		<h3>[method:this applyMatrix3]( [param:Matrix3 m] )</h3>
+		<p>Applies matrix [page:Matrix3 m] to every Vector3 element of this BufferAttribute.</p>
+
+		<h3>[method:this applyMatrix4]( [param:Matrix4 m] )</h3>
+		<p>Applies matrix [page:Matrix4 m] to every Vector3 element of this BufferAttribute.</p>
+
+		<h3>[method:this applyNormalMatrix]( [param:Matrix3 m] )</h3>
+		<p>Applies normal matrix [page:Matrix3 m] to every Vector3 element of this BufferAttribute.</p>
+
+		<h3>[method:this transformDirection]( [param:Matrix4 m] )</h3>
+		<p>Applies matrix [page:Matrix4 m] to every Vector3 element of this BufferAttribute, interpreting the elements as a direction vectors.</p>
+
 		<h3>[method:BufferAttribute clone]() </h3>
 		<p>Return a copy of this bufferAttribute.</p>
 

+ 21 - 20
docs/api/en/core/BufferGeometry.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -22,12 +21,12 @@
 		For a less efficient but easier-to-use representation of geometry, see [page:Geometry].
 		</p>
 
-		<h2>Example</h2>
+		<h2>Code Example</h2>
 		<code>
-		var geometry = new THREE.BufferGeometry();
+		const geometry = new THREE.BufferGeometry();
 		// create a simple square shape. We duplicate the top left and bottom right
 		// vertices because each vertex needs to appear once per triangle.
-		var vertices = new Float32Array( [
+		const vertices = new Float32Array( [
 			-1.0, -1.0,  1.0,
 			 1.0, -1.0,  1.0,
 			 1.0,  1.0,  1.0,
@@ -38,10 +37,12 @@
 		] );
 
 		// itemSize = 3 because there are 3 values (components) per vertex
-		geometry.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
-		var material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
-		var mesh = new THREE.Mesh( geometry, material );
+		geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
+		const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
+		const mesh = new THREE.Mesh( geometry, material );
 		</code>
+
+		<h2>Examples</h2>
 		<p>
 			[example:webgl_buffergeometry Mesh with non-indexed faces]<br />
 			[example:webgl_buffergeometry_indexed Mesh with indexed faces]<br />
@@ -65,7 +66,7 @@
 		<h3>[property:Object attributes]</h3>
 		<p>
 		This hashmap has as id the name of the attribute to be set and as value the [page:BufferAttribute buffer] to set it to.
-		Rather than accessing this property directly, use [page:.addAttribute] and [page:.getAttribute] to access attributes of this geometry.
+		Rather than accessing this property directly, use [page:.setAttribute] and [page:.getAttribute] to access attributes of this geometry.
 		</p>
 
 		<h3>[property:Box3 boundingBox]</h3>
@@ -132,16 +133,16 @@
 			Default is *null*.
 		</p>
 
-		<h3>[property:Boolean isBufferGeometry]</h3>
+		<h3>[property:Object morphAttributes]</h3>
 		<p>
-			Used to check whether this or derived classes are BufferGeometries. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
+			Hashmap of [page:BufferAttribute]s holding details of the geometry's [page:Geometry.morphTargets morphTargets].
 		</p>
 
-		<h3>[property:Object morphAttributes]</h3>
+		<h3>[property:Boolean morphTargetsRelative]</h3>
 		<p>
-			Hashmap of [page:BufferAttribute]s holding details of the geometry's [page:Geometry.morphTargets morphTargets].
+			Used to control the morph target behavior; when set to true, the morph target data is treated as relative offsets, rather than as absolute positions/normals.
+
+			Default is *false*.
 		</p>
 
 		<h3>[property:String name]</h3>
@@ -165,9 +166,9 @@
 
 		<h3>[page:EventDispatcher EventDispatcher] methods are available on this class.</h3>
 
-		<h3>[method:BufferGeometry addAttribute]( [param:String name], [param:BufferAttribute attribute] )</h3>
+		<h3>[method:BufferGeometry setAttribute]( [param:String name], [param:BufferAttribute attribute] )</h3>
 		<p>
-		Adds an attribute to this geometry. Use this rather than the attributes property,
+		Sets an attribute to this geometry. Use this rather than the attributes property,
 		because an internal hashmap of [page:.attributes] is maintained to speed up iterating over
 		attributes.
 		</p>
@@ -179,7 +180,7 @@
 		</p>
 
 
-		<h3>[method:null applyMatrix]( [param:Matrix4 matrix] )</h3>
+		<h3>[method:null applyMatrix4]( [param:Matrix4 matrix] )</h3>
 		<p>Bakes matrix transform directly into vertex coordinates.</p>
 
 		<h3>[method:BufferGeometry center] ()</h3>
@@ -249,8 +250,8 @@
 		This will correct lighting on the geometry surfaces.
 		</p>
 
-		<h3>[method:BufferAttribute removeAttribute]( [param:String name] )</h3>
-		<p>Removes the [page:BufferAttribute attribute] with the specified name.</p>
+		<h3>[method:BufferAttribute deleteAttribute]( [param:String name] )</h3>
+		<p>Deletes the [page:BufferAttribute attribute] with the specified name.</p>
 
 		<h3>[method:BufferGeometry rotateX] ( [param:Float radians] )</h3>
 		<p>
@@ -276,7 +277,7 @@
 		Use [page:Object3D.scale] for typical real-time mesh scaling.
 		</p>
 
-		<h3>[method:null setIndex] ( [param:BufferAttribute index] )</h3>
+		<h3>[method:BufferGeometry setIndex] ( [param:BufferAttribute index] )</h3>
 		<p>Set the [page:.index] buffer.</p>
 
 		<h3>[method:null setDrawRange] ( [param:Integer start], [param:Integer count] )</h3>

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

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

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

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 14 - 19
docs/api/en/core/EventDispatcher.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -15,36 +14,32 @@
 			[link:https://github.com/mrdoob/eventdispatcher.js Eventdispatcher on GitHub]
 		</p>
 
-		<h2>Example</h2>
+		<h2>Code Example</h2>
 
 		<code>
-// Adding events to a custom object
+		// Adding events to a custom object
 
-var Car = function () {
+		class Car extends EventDispatcher {
 
-    this.start = function () {
+			start() {
 
-        this.dispatchEvent( { type: 'start', message: 'vroom vroom!' } );
+				this.dispatchEvent( { type: 'start', message: 'vroom vroom!' } );
 
-    };
+			}
 
-};
+		};
 
-// Mixing the EventDispatcher.prototype with the custom object prototype
+		// Using events with the custom object
 
-Object.assign( Car.prototype, EventDispatcher.prototype );
+		const car = new Car();
 
-// Using events with the custom object
+		car.addEventListener( 'start', function ( event ) {
 
-var car = new Car();
+			alert( event.message );
 
-car.addEventListener( 'start', function ( event ) {
+		} );
 
-    alert( event.message );
-
-} );
-
-car.start();
+		car.start();
 		</code>
 
 		<h2>Constructor</h2>
@@ -84,7 +79,7 @@ car.start();
 		Removes a listener from an event type.
 		</p>
 
-		<h3>[method:null dispatchEvent]( [param:object event] )</h3>
+		<h3>[method:null dispatchEvent]( [param:Object event] )</h3>
 		<p>
 		event - The event that gets fired.
 		</p>

+ 27 - 27
docs/api/en/core/Face3.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -16,39 +15,40 @@
 		create them manually.
 		</p>
 
-
-		<h2>Examples</h2>
-
-		<p>[example:svg_sandbox svg / sandbox ]</p>
-		<p>[example:misc_exporter_obj exporter / obj ]</p>
-		<p>[example:webgl_shaders_vector WebGL / shaders / vector ]</p>
-
+		<h2>Code Example</h2>
 
 		<code>
-var material = new THREE.MeshStandardMaterial( { color : 0x00cc00 } );
+		const material = new THREE.MeshStandardMaterial( { color : 0x00cc00 } );
 
-//create a triangular geometry
-var geometry = new THREE.Geometry();
-geometry.vertices.push( new THREE.Vector3( -50, -50, 0 ) );
-geometry.vertices.push( new THREE.Vector3(  50, -50, 0 ) );
-geometry.vertices.push( new THREE.Vector3(  50,  50, 0 ) );
+		//create a triangular geometry
+		const geometry = new THREE.Geometry();
+		geometry.vertices.push( new THREE.Vector3( -50, -50, 0 ) );
+		geometry.vertices.push( new THREE.Vector3(  50, -50, 0 ) );
+		geometry.vertices.push( new THREE.Vector3(  50,  50, 0 ) );
 
-//create a new face using vertices 0, 1, 2
-var normal = new THREE.Vector3( 0, 1, 0 ); //optional
-var color = new THREE.Color( 0xffaa00 ); //optional
-var materialIndex = 0; //optional
-var face = new THREE.Face3( 0, 1, 2, normal, color, materialIndex );
+		//create a new face using vertices 0, 1, 2
+		const normal = new THREE.Vector3( 0, 0, 1 ); //optional
+		const color = new THREE.Color( 0xffaa00 ); //optional
+		const materialIndex = 0; //optional
+		const face = new THREE.Face3( 0, 1, 2, normal, color, materialIndex );
 
-//add the face to the geometry's faces array
-geometry.faces.push( face );
+		//add the face to the geometry's faces array
+		geometry.faces.push( face );
 
-//the face normals and vertex normals can be calculated automatically if not supplied above
-geometry.computeFaceNormals();
-geometry.computeVertexNormals();
+		//the face normals and vertex normals can be calculated automatically if not supplied above
+		geometry.computeFaceNormals();
+		geometry.computeVertexNormals();
 
-scene.add( new THREE.Mesh( geometry, material ) );
+		scene.add( new THREE.Mesh( geometry, material ) );
 	</code>
 
+		<h2>Examples</h2>
+
+		<p>
+			[example:svg_sandbox svg / sandbox ]<br />
+			[example:misc_exporter_obj exporter / obj ]<br />
+			[example:webgl_shaders_vector WebGL / shaders / vector ]
+		</p>
 
 		<h2>Constructor</h2>
 
@@ -97,7 +97,7 @@ scene.add( new THREE.Mesh( geometry, material ) );
 		<h3>[property:Color color]</h3>
 		<p>
 		Face color - for this to be used a material's [page:Material.vertexColors vertexColors] property
-		must be set to [page:Materials THREE.FaceColors].
+		must be set to *true*.
 		</p>
 
 		<h3>[property:Array vertexNormals]</h3>
@@ -108,7 +108,7 @@ scene.add( new THREE.Mesh( geometry, material ) );
 		<h3>[property:Array vertexColors]</h3>
 		<p>
 		Array of 3 vertex colors - for these to be used a material's [page:Material.vertexColors vertexColors] property
-		must be set to [page:Materials THREE.VertexColors].
+		must be set to *true*.
 		</p>
 
 

+ 116 - 0
docs/api/en/core/GLBufferAttribute.html

@@ -0,0 +1,116 @@
+<!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">
+			This buffer attribute class does not construct a VBO. Instead, it uses
+			whatever VBO is passed in constructor and can later be altered via the
+			*buffer* property.<br /><br />
+			It is required to pass additional params alongside the VBO. Those are:
+			the GL context, the GL data type, the number of components per vertex,
+			the number of bytes per component, and the number of vertices.<br /><br />
+			The most common use case for this class is when some kind of GPGPU
+			calculation interferes or even produces the VBOs in question.
+		</p>
+
+		<h2>Constructor</h2>
+		<h3>[name]( [param:WebGLBuffer buffer], [param:GLenum type], [param:Integer itemSize], [param:Integer elementSize], [param:Integer count] )</h3>
+		<p>
+		*buffer* — Must be a <a href="https://developer.mozilla.org/en-US/docs/Web/API/WebGLBuffer" target="_blank">WebGLBuffer</a>.
+		<br />
+		*type* — One of <a href="https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Constants#Data_types" target="_blank">WebGL Data Types</a>.
+		<br />
+		*itemSize* — The number of values of the array that should be associated with
+		a particular vertex. For instance, if this
+		attribute is storing a 3-component vector (such as a position, normal, or color), then itemSize should be 3.
+		<br />
+		*elementSize* — 1, 2 or 4. The corresponding size (in bytes) for the given "type" param.
+		<ul>
+			<li>gl.FLOAT: 4</li>
+			<li>gl.UNSIGNED_SHORT: 2</li>
+			<li>gl.SHORT: 2</li>
+			<li>gl.UNSIGNED_INT: 4</li>
+			<li>gl.INT: 4</li>
+			<li>gl.BYTE: 1</li>
+			<li>gl.UNSIGNED_BYTE: 1</li>
+		</ul>
+		*count* — The expected number of vertices in VBO.
+		</p>
+
+		<h2>Properties</h2>
+
+		<h3>[property:WebGLBuffer buffer]</h3>
+		<p>
+			The current <a href="https://developer.mozilla.org/en-US/docs/Web/API/WebGLBuffer" target="_blank">WebGLBuffer</a> instance.
+		</p>
+
+		<h3>[property:Integer count]</h3>
+		<p>
+			The expected number of vertices in VBO.
+		</p>
+
+		<h3>[property:Integer itemSize]</h3>
+		<p>
+			How many values make up each item (vertex).
+		</p>
+
+		<h3>[property:Integer elementSize]</h3>
+		<p>
+			Stores the corresponding size in bytes for the current *type* property value.
+		</p>
+		<p>
+			See above (constructor) for a list of known type sizes.
+		</p>
+
+		<h3>[property:GLenum type]</h3>
+		<p>
+			A <a href="https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Constants#Data_types" target="_blank">WebGL Data Type</a>
+			describing the underlying VBO contents.
+		</p>
+		<p>
+			Set this property together with *elementSize*. The recommended way is
+			using the *setType* method.
+		</p>
+
+		<h3>[property:Boolean isGLBufferAttribute]</h3>
+		<p>
+			Read-only. Always *true*.
+		</p>
+
+		<h2>Methods</h2>
+
+		<h3>[method:null setBuffer]( buffer ) </h3>
+		<p>Sets the *buffer* property.</p>
+
+		<h3>[method:null setType]( type, elementSize ) </h3>
+		<p>Sets the both *type* and *elementSize* properties.</p>
+
+		<h3>[method:null setItemSize]( itemSize ) </h3>
+		<p>Sets the *itemSize* property.</p>
+
+		<h3>[method:null setCount]( count ) </h3>
+		<p>Sets the *count* property.</p>
+
+		<h3>[property:Integer version]</h3>
+		<p>
+		A version number, incremented every time the needsUpdate property is set to true.
+		</p>
+
+		<h3>[property:Boolean needsUpdate]</h3>
+		<p>
+		Default is *false*. Setting this to true increments [page:GLBufferAttribute.version version].
+		</p>
+
+		<h2>Source</h2>
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 24 - 28
docs/api/en/core/Geometry.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -21,20 +20,10 @@
 		</p>
 		</div>
 
+		<h2>Code Example</h2>
 
-		<h2>Example</h2>
-
-		<div>[example:webgl_geometry_minecraft WebGL / geometry / minecraft ]</div>
-		<div>[example:webgl_geometry_minecraft_ao WebGL / geometry / minecraft / ao ]</div>
-		<div>[example:webgl_geometry_nurbs WebGL / geometry / nurbs ]</div>
-		<div>[example:webgl_geometry_spline_editor WebGL / geometry / spline / editor ]</div>
-		<div>[example:webgl_interactive_cubes_gpu WebGL / interactive / cubes / gpu ]</div>
-		<div>[example:webgl_interactive_lines WebGL / interactive / lines ]</div>
-		<div>[example:webgl_interactive_raycasting_points WebGL / interactive / raycasting / points ]</div>
-		<div>[example:webgl_interactive_voxelpainter WebGL / interactive / voxelpainter ]</div>
-
-
-		<code>var geometry = new THREE.Geometry();
+		<code>
+		const geometry = new THREE.Geometry();
 
 		geometry.vertices.push(
 			new THREE.Vector3( -10,  10, 0 ),
@@ -47,6 +36,20 @@
 		geometry.computeBoundingSphere();
 		</code>
 
+
+		<h2>Examples</h2>
+
+		<p>
+			[example:webgl_geometry_minecraft WebGL / geometry / minecraft ]<br />
+			[example:webgl_geometry_minecraft_ao WebGL / geometry / minecraft / ao ]<br />
+			[example:webgl_geometry_nurbs WebGL / geometry / nurbs ]<br />
+			[example:webgl_geometry_spline_editor WebGL / geometry / spline / editor ]<br />
+			[example:webgl_interactive_cubes_gpu WebGL / interactive / cubes / gpu ]<br />
+			[example:webgl_interactive_lines WebGL / interactive / lines ]<br />
+			[example:webgl_interactive_raycasting_points WebGL / interactive / raycasting / points ]<br />
+			[example:webgl_interactive_voxelpainter WebGL / interactive / voxelpainter ]
+		</p>
+
 		<h2>Constructor</h2>
 
 
@@ -91,21 +94,14 @@
 		<h3>[property:Array faceVertexUvs]</h3>
 		<p>
 		Array of face [link:https://en.wikipedia.org/wiki/UV_mapping UV] layers, used for mapping textures onto the geometry.<br />
-		Each UV layer is an array of [page:UV]s matching the order and number of vertices in faces.<br /><br />
+		Each UV layer is an array of [page:Vector2]s matching the order and number of vertices in faces.<br /><br />
 		To signal an update in this array, [page:Geometry Geometry.uvsNeedUpdate] needs to be set to true.
 		</p>
 
 		<h3>[property:Integer id]</h3>
 		<p>Unique number for this geometry instance.</p>
 
-		<h3>[property:Boolean isGeometry]</h3>
-		<p>
-			Used to check whether this or derived classes are Geometries. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally for optimisation.
-		</p>
-
-		<h3>[property:array lineDistances]</h3>
+		<h3>[property:Array lineDistances]</h3>
 		<p>
 		An array containing distances between vertices for Line geometries.
 		This is required for [page:LineDashedMaterial] to render correctly.
@@ -137,8 +133,8 @@
 		</p>
 		<p>
 		The values of the vector should typically be between 0 and 1. For instance when set to 0 the bone
-		transformation will have no affect. When set to 0.5 it will have 50% affect. When set to 100%, it will
-		have 100% affect. If there is only 1 bone associated with the vertex then you only need to worry about
+		transformation will have no effect. When set to 0.5 it will have 50% effect. When set to 100%, it will
+		have 100% effect. If there is only 1 bone associated with the vertex then you only need to worry about
 		the first component of the vector, the rest can be ignored and set to 0.
 		</p>
 
@@ -149,9 +145,9 @@
 		first skinIndex, this will tell you the bones associated with that vertex. For example the first vertex
 		could have a value of <strong>( 10.05, 30.10, 12.12 )</strong>. Then the first skin index could have the
 		value of <strong>( 10, 2, 0, 0 )</strong>. The first skin weight could have the value of
-		<strong>( 0.8, 0.2, 0, 0 )</strong>. In affect this would take the first vertex, and then the bone
+		<strong>( 0.8, 0.2, 0, 0 )</strong>. In effect this would take the first vertex, and then the bone
 		<strong>mesh.bones[10]</strong> and apply it 80% of the way. Then it would take the bone <strong>skeleton.bones[2]</strong>
-		and apply it 20% of the way. The next two values have a weight of 0, so they would have no affect.
+		and apply it 20% of the way. The next two values have a weight of 0, so they would have no effect.
 		</p>
 		<p>
 		In code another example could look like this:
@@ -210,7 +206,7 @@
 
 		<h3>[page:EventDispatcher EventDispatcher] methods are available on this class.</h3>
 
-		<h3>[method:null applyMatrix]( [param:Matrix4 matrix] )</h3>
+		<h3>[method:null applyMatrix4]( [param:Matrix4 matrix] )</h3>
 		<p>Bakes matrix transform directly into vertex coordinates.</p>
 
 		<h3>[method:Geometry center] ()</h3>

+ 2 - 8
docs/api/en/core/InstancedBufferAttribute.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -22,16 +21,11 @@
 		</p>
 
 		<h2>Properties</h2>
-		See [page:BufferAttribute] for inherited properties.
+		<p>See [page:BufferAttribute] for inherited properties.</p>
 
 		<h3>[property:Number meshPerAttribute]</h3>
 		<p>
-			Default is *1*.
-		</p>
-
-		<h3>[property:Boolean isInstancedBufferAttribute]</h3>
-		<p>
-			Default is *true*.
+			Defines how often a value of this buffer attribute should be repeated. A value of one means that each value of the instanced attribute is used for a single instance. A value of two means that each value is used for two consecutive instances (and so on). Default is *1*.
 		</p>
 
 		<h2>Methods</h2>

+ 4 - 16
docs/api/en/core/InstancedBufferGeometry.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -22,26 +21,15 @@
 		</p>
 
 		<h2>Properties</h2>
-		See [page:BufferGeometry] for inherited properties.
+		<p>See [page:BufferGeometry] for inherited properties.</p>
 
-		<h3>[property:Number maxInstancedCount]</h3>
+		<h3>[property:Number instanceCount]</h3>
 		<p>
-			Default is *undefined*.
-		</p>
-
-		<h3>[property:Boolean isInstancedBufferGeometry]</h3>
-		<p>
-			Default is *true*.
+			Default is *Infinity*.
 		</p>
 
 		<h2>Methods</h2>
-		<p>See [page:BufferAttribute] for inherited methods.</p>
-
-		<h3>[property:Number addGroup]( start, count, materialIndex )</h3>
-		<p>
-
-		</p>
-
+		<p>See [page:BufferGeometry] for inherited methods.</p>
 
 		<h2>Source</h2>
 

+ 0 - 6
docs/api/en/core/InstancedInterleavedBuffer.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -31,11 +30,6 @@
 			Default is *1*.
 		</p>
 
-		<h3>[property:Boolean isInstancedInterleavedBuffer]</h3>
-		<p>
-			Default is *true*.
-		</p>
-
 		<h2>Methods</h2>
 		<p>
 			See [page:InterleavedBuffer] for inherited methods.

+ 17 - 9
docs/api/en/core/InterleavedBuffer.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -16,7 +15,7 @@
 			An introduction into interleaved arrays can be found here: [link:https://blog.tojicode.com/2011/05/interleaved-array-basics.html Interleaved array basics]
 		</p>
 
-		<h2>Example</h2>
+		<h2>Examples</h2>
 
 		<p>[example:webgl_buffergeometry_points_interleaved webgl / buffergeometry / points / interleaved]</p>
 
@@ -59,14 +58,14 @@
 		Default is *-1*.
 		</p>
 
-		<h3>[property:Integer version]</h3>
+		<h3>[property:String uuid]</h3>
 		<p>
-		A version number, incremented every time the needsUpdate property is set to true.
+		[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] of this instance. This gets automatically assigned, so this shouldn't be edited.
 		</p>
 
-		<h3>[property:Boolean isInterleavedBuffer]</h3>
+		<h3>[property:Integer version]</h3>
 		<p>
-		Default is *true*.
+		A version number, incremented every time the needsUpdate property is set to true.
 		</p>
 
 		<h3>[property:Boolean needsUpdate]</h3>
@@ -98,13 +97,22 @@
 			Stores multiple values in the buffer, reading input values from a specified array.
 		</p>
 
-		<h3>[method:InterleavedBuffer clone]() </h3>
+		<h3>[method:InterleavedBuffer clone]( [param:Object data] ) </h3>
 		<p>
+			data - This object holds shared array buffers required for properly cloning geometries with interleaved attributes.<br/><br />
+
 			Creates a clone of this [name].
 		</p>
 
-		<h3>[method:BufferAttribute setUsage] ( [param:Usage value] ) </h3>
-		<p>Set [page:BufferAttribute.usage usage] to value.</p>
+		<h3>[method:InterleavedBuffer setUsage] ( [param:Usage value] ) </h3>
+		<p>Set [page:InterleavedBuffer.usage usage] to value.</p>
+
+		<h3>[method:InterleavedBuffer toJSON]( [param:Object data] ) </h3>
+		<p>
+			data - This object holds shared array buffers required for properly serializing geometries with interleaved attributes.<br/><br />
+
+			Serializes this [name].
+		</p>
 
 		<h2>Source</h2>
 

+ 12 - 5
docs/api/en/core/InterleavedBufferAttribute.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -45,9 +44,14 @@
 			How many values make up each item.
 		</p>
 
-		<h3>[property:Integer offset]</h3>
+		<h3>[property:String name]</h3>
 		<p>
-			The offset in the underlying array buffer where an item starts.
+		Optional name for this attribute instance. Default is an empty string.
+		</p>
+
+		<h3>[property:Boolean needsUpdate]</h3>
+		<p>
+			Default is *false*. Setting this to *true* will send the entire interleaved buffer (not just the specific attribute data) to the GPU again.
 		</p>
 
 		<h3>[property:Boolean normalized]</h3>
@@ -55,13 +59,16 @@
 			Default is *false*.
 		</p>
 
-		<h3>[property:Boolean isInterleavedBufferAttribute]</h3>
+		<h3>[property:Integer offset]</h3>
 		<p>
-			Default is *true*.
+			The offset in the underlying array buffer where an item starts.
 		</p>
 
 		<h2>Methods</h2>
 
+		<h3>[method:this applyMatrix4]( [param:Matrix4 m] )</h3>
+		<p>Applies matrix [page:Matrix4 m] to every Vector3 element of this InterleavedBufferAttribute.</p>
+
 		<h3>[method:Number getX]( [param:Integer index] ) </h3>
 		<p>Returns the x component of the item at the given index.</p>
 

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

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>

+ 22 - 21
docs/api/en/core/Object3D.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -58,17 +57,11 @@
 		<h3>[property:Integer id]</h3>
 		<p>readonly – Unique number for this object instance.</p>
 
-		<h3>[property:Boolean isObject3D]</h3>
-		<p>
-			Used to check whether this or derived classes are Object3Ds. Default is *true*.<br /><br />
-
-			You should not change this, as it is used internally for optimisation.
-		</p>
-
 		<h3>[property:Layers layers]</h3>
 		<p>
 		The layer membership of the object. The object is only visible if it has at least one
-		layer in common with the [page:Camera] in use.
+		layer in common with the [page:Camera] in use. This property can also be used to filter out
+		unwanted objects in ray-intersection tests when using [page:Raycaster].
 		</p>
 
 		<h3>[property:Matrix4 matrix]</h3>
@@ -211,7 +204,7 @@
 		See [page:Group] for info on manually grouping objects.
 		</p>
 
-		<h3>[method:null applyMatrix]( [param:Matrix4 matrix] )</h3>
+		<h3>[method:null applyMatrix4]( [param:Matrix4 matrix] )</h3>
 		<p>Applies the matrix transform to the object and updates the object's position, rotation and scale.</p>
 
 		<h3>[method:this applyQuaternion]( [param:Quaternion quaternion] )</h3>
@@ -240,7 +233,7 @@
 		<p>
 		id -- Unique number of the object instance<br /><br />
 
-		Searches through the object's children and returns the first with a matching id.<br />
+		Searches through an object and its children, starting with the object itself, and returns the first with a matching id.<br />
 		Note that ids are assigned in chronological order: 1, 2, 3, ..., incrementing by one for each new object.
 		</p>
 
@@ -248,7 +241,7 @@
 		<p>
 		name -- String to match to the children's Object3D.name property. <br /><br />
 
-		Searches through the object's children and returns the first with a matching name.<br />
+		Searches through an object and its children, starting with the object itself, and returns the first with a matching name.<br />
 		Note that for most objects the name is an empty string by default. You will
 		have to set it manually to make use of this method.
 		</p>
@@ -258,7 +251,7 @@
 		name -- the property name to search for. <br />
 		value -- value of the given property. <br /><br />
 
-		Searches through the object's children and returns the first with a property that matches the value given.
+		Searches through an object and its children, starting with the object itself, and returns the first with a property that matches the value given.
 		</p>
 
 		<h3>[method:Vector3 getWorldPosition]( [param:Vector3 target] )</h3>
@@ -292,9 +285,9 @@
 
 		<h3>[method:Vector3 localToWorld]( [param:Vector3 vector] )</h3>
 		<p>
-		vector - A vector representing a position in local (object) space.<br /><br />
+		vector - A vector representing a position in this object's local space.<br /><br />
 
-		Converts the vector from local space to world space.
+		Converts the vector from this object's local space to world space.
 		</p>
 
 		<h3>[method:null lookAt]( [param:Vector3 vector] )<br />
@@ -320,6 +313,11 @@
 		Removes *object* as child of this object. An arbitrary number of objects may be removed.
 		</p>
 
+		<h3>[method:this clear]()</h3>
+		<p>
+		Removes all child objects.
+		</p>
+
 		<h3>[method:this rotateOnAxis]( [param:Vector3 axis], [param:Float angle] )</h3>
 		<p>
 		axis -- A normalized vector in object space. <br />
@@ -392,7 +390,7 @@
 			Copy the given quaternion into [page:.quaternion].
 		</p>
 
-		<h3>[method:Object toJSON]( [param:object meta] )</h3>
+		<h3>[method:Object toJSON]( [param:Object meta] )</h3>
 		<p>
 		meta -- object containing metadata such as materials, textures or images for the object.<br />
 		Convert the object to three.js [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].
@@ -419,7 +417,8 @@
 		<p>
 		callback - A function with as first argument an object3D object.<br /><br />
 
-		Executes the callback on this object and all descendants.
+		Executes the callback on this object and all descendants.<br/>
+		Note: Modifying the scene graph inside the callback is discouraged.
 		</p>
 
 		<h3>[method:null traverseVisible]( [param:Function callback] )</h3>
@@ -427,14 +426,16 @@
 		callback - A function with as first argument an object3D object.<br /><br />
 
 		Like traverse, but the callback will only be executed for visible objects.
-		Descendants of invisible objects are not traversed.
+		Descendants of invisible objects are not traversed.<br/>
+		Note: Modifying the scene graph inside the callback is discouraged.
 		</p>
 
 		<h3>[method:null traverseAncestors]( [param:Function callback] )</h3>
 		<p>
 		callback - A function with as first argument an object3D object.<br /><br />
 
-		Executes the callback on all ancestors.
+		Executes the callback on all ancestors.<br/>
+		Note: Modifying the scene graph inside the callback is discouraged.
 		</p>
 
 		<h3>[method:null updateMatrix]()</h3>
@@ -453,9 +454,9 @@
 
 		<h3>[method:Vector3 worldToLocal]( [param:Vector3 vector] )</h3>
 		<p>
-		vector - A world vector.<br /><br />
+		vector - A vector representing a position in world space.<br /><br />
 
-		Updates the vector from world space to local space.
+		Converts the vector from world space to this object's local space.
 		</p>
 
 		<h2>Source</h2>

+ 29 - 22
docs/api/en/core/Raycaster.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -16,10 +15,10 @@
 		other things.
 		</p>
 
-		<h2>Example</h2>
+		<h2>Code Example</h2>
 		<code>
-		var raycaster = new THREE.Raycaster();
-		var mouse = new THREE.Vector2();
+		const raycaster = new THREE.Raycaster();
+		const mouse = new THREE.Vector2();
 
 		function onMouseMove( event ) {
 
@@ -37,9 +36,9 @@
 			raycaster.setFromCamera( mouse, camera );
 
 			// calculate objects intersecting the picking ray
-			var intersects = raycaster.intersectObjects( scene.children );
+			const intersects = raycaster.intersectObjects( scene.children );
 
-			for ( var i = 0; i < intersects.length; i++ ) {
+			for ( let i = 0; i < intersects.length; i ++ ) {
 
 				intersects[ i ].object.material.color.set( 0xff0000 );
 
@@ -54,22 +53,21 @@
 		window.requestAnimationFrame(render);
 
 		</code>
-		<div>
-			Examples: [example:webgl_interactive_cubes Raycasting to a Mesh]<br />
+
+		<h2>Examples</h2>
+
+		<p>
+			[example:webgl_interactive_cubes Raycasting to a Mesh]<br />
 			[example:webgl_interactive_cubes_ortho Raycasting to a Mesh in using an OrthographicCamera]<br />
 			[example:webgl_interactive_buffergeometry Raycasting to a Mesh with BufferGeometry]<br />
+			[example:webgl_instancing_raycast Raycasting to a InstancedMesh]<br />
 			[example:webgl_interactive_lines Raycasting to a Line]<br />
 			[example:webgl_interactive_raycasting_points Raycasting to Points]<br />
 			[example:webgl_geometry_terrain_raycast Terrain raycasting]<br />
 			[example:webgl_interactive_voxelpainter Raycasting to paint voxels]<br />
 			[example:webgl_raycast_texture Raycast to a Texture]
-		</div>
-
-
-		<p>
 		</p>
 
-
 		<h2>Constructor</h2>
 
 		<h3>[name]( [param:Vector3 origin], [param:Vector3 direction], [param:Float near], [param:Float far] ) {</h3>
@@ -86,18 +84,13 @@
 
 		<h2>Properties</h2>
 
-		<h3>[property:float far]</h3>
+		<h3>[property:Float far]</h3>
 		<p>
 		The far factor of the raycaster. This value indicates which objects can be discarded based on the distance.
 		This value shouldn't be negative and should be larger than the near property.
 		</p>
 
-		<h3>[property:float linePrecision]</h3>
-		<p>
-		The precision factor of the raycaster when intersecting [page:Line] objects.
-		</p>
-
-		<h3>[property:float near]</h3>
+		<h3>[property:Float near]</h3>
 		<p>
 		The near factor of the raycaster. This value indicates which objects can be discarded based on the distance.
 		This value shouldn't be negative and should be smaller than the far property.
@@ -111,6 +104,18 @@
 		Defaults to null.
 		</p>
 
+		<h3>[property:Layers layers]</h3>
+		<p>
+		Used by [name] to selectively ignore 3D objects when performing intersection tests. The following code example ensures that
+		only 3D objects on layer *1* will be honored by the instance of [name].
+
+		<code>
+		raycaster.layers.set( 1 );
+		object.layers.enable( 1 );
+		</code>
+
+		</p>
+
 		<h3>[property:Object params]</h3>
 		<p>
 		An object with the following properties:
@@ -118,13 +123,14 @@
 			<code>
 {
 	Mesh: {},
-	Line: {},
+	Line: { threshold: 1 },
 	LOD: {},
 	Points: { threshold: 1 },
 	Sprite: {}
 }
 			</code>
 
+		Where threshold is the precision of the raycaster when intersecting objects, in world units.
 		</p>
 
 		<h3>[property:Ray ray]</h3>
@@ -170,7 +176,8 @@
 			[page:Integer faceIndex] – index of the intersected face<br />
 			[page:Object3D object] – the intersected object<br />
 			[page:Vector2 uv] - U,V coordinates at point of intersection<br />
-			[page:Vector2 uv2] - Second set of U,V coordinates at point of intersection
+			[page:Vector2 uv2] - Second set of U,V coordinates at point of intersection<br />
+			[page:Integer instanceId] – The index number of the instance where the ray intersects the InstancedMesh
 		</p>
 		<p>
 		*Raycaster* delegates to the [page:Object3D.raycast raycast] method of the passed object, when evaluating whether the ray intersects the object or not. This allows [page:Mesh meshes] to respond differently to ray casting than [page:Line lines] and [page:Points pointclouds].

+ 66 - 7
docs/api/en/core/Uniform.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -13,18 +12,18 @@
 		<p class="desc">Uniforms are global [link:https://www.opengl.org/documentation/glsl/ GLSL] variables. They are passed to shader programs.
 		</p>
 
-		<h3>Example</h3>
+		<h2>Code Example</h2>
 		<p>
 		When declaring a uniform of a [page:ShaderMaterial], it is declared by value or by object.
 		</p>
 		<code>
 		uniforms: {
 			time: { value: 1.0 },
-			resolution: new THREE.Uniform(new THREE.Vector2())
-		}
+			resolution: new Uniform( new Vector2() )
+		};
 		</code>
 
-		<h3>Uniform types</h3>
+		<h2>Uniform types</h2>
 
 		<p>
 		Each uniform must have a *value* property. The type of the value must correspond to the
@@ -50,6 +49,10 @@
 					<td>int</td>
 					<td>[page:Number]</td>
 				</tr>
+				<tr>
+					<td>uint (WebGL 2)</td>
+					<td>[page:Number]</td>
+				</tr>
 				<tr>
 					<td>float</td>
 					<td>[page:Number]</td>
@@ -182,6 +185,63 @@
 		(*) Same for an (innermost) array (dimension) of the same GLSL type, containing the components of all vectors or matrices in the array.
 		</p>
 
+		<h2>Structured Uniforms</h2>
+
+		<p>
+			Sometimes you want to organize uniforms as *structs* in your shader code. The following style must be used so *three.js* is able
+			to process structured uniform data.
+		</p>
+		<code>
+		uniforms = {
+			data: {
+				value: {
+					position: new Vector3(),
+					direction: new Vector3( 0, 0, 1 )
+				 }
+			}
+		};
+		</code>
+		This definition can be mapped on the following GLSL code:
+		<code>
+		struct Data {
+			vec3 position;
+			vec3 direction;
+		};
+
+		uniform Data data;
+		</code>
+
+		<h2>Structured Uniforms with Arrays</h2>
+
+		<p>
+			It's also possible to manage *structs* in arrays. The syntax for this use case looks like so:
+		</p>
+		<code>
+		const entry1 = {
+			position: new Vector3(),
+			direction: new Vector3( 0, 0, 1 )
+		};
+		const entry2 = {
+			position: new Vector3( 1, 1, 1 ),
+			direction: new Vector3( 0, 1, 0 )
+		};
+
+		uniforms = {
+			data: {
+				value: [ entry1, entry2 ]
+			}
+		};
+		</code>
+		This definition can be mapped on the following GLSL code:
+		<code>
+		struct Data {
+			vec3 position;
+			vec3 direction;
+		};
+
+		uniform Data data[ 2 ];
+		</code>
+
 		<h2>Constructor</h2>
 
 		<h3>[name]( [param:Object value] )</h3>
@@ -202,8 +262,7 @@
 		<p>
 		Returns a clone of this uniform.<br />
 		If the uniform's value property is an [page:Object] with a clone() method, this is used, otherwise the value is copied by assignment.
-		Array values are shared between cloned [page:Uniform]s.<br /><br />
-		See [example:webgldeferred_animation WebGL deferred animation] for an example of this method in use.
+		Array values are shared between cloned [page:Uniform]s.
 		</p>
 
 		<h2>Source</h2>

+ 10 - 4
docs/api/en/core/bufferAttributeTypes/BufferAttributeTypes.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -20,6 +19,7 @@
 		<code>
 		THREE.Float64BufferAttribute
 		THREE.Float32BufferAttribute
+		THREE.Float16BufferAttribute
 		THREE.Uint32BufferAttribute
 		THREE.Int32BufferAttribute
 		THREE.Uint16BufferAttribute
@@ -46,14 +46,20 @@
 
 		<h2>Properties</h2>
 
-		See the [page:BufferAttribute] page for inherited properties.
+		<p>
+			See the [page:BufferAttribute] page for inherited properties.
+		</p>
 
 		<h2>Methods</h2>
 
-		See the [page:BufferAttribute] page for inherited methods.
+		<p>
+			See the [page:BufferAttribute] page for inherited methods.
+		</p>
 
 		<h2>Source</h2>
 
-		[link:https://github.com/mrdoob/three.js/blob/master/src/core/BufferAttribute.js src/core/BufferAttribute.js]
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/core/BufferAttribute.js src/core/BufferAttribute.js]
+		</p>
 	</body>
 </html>

+ 0 - 609
docs/api/en/deprecated/DeprecatedList.html

@@ -1,609 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		<h1>Deprecated API List</h1>
-
-		<p>
-			As three.js has a rapidly evolving interface, you may come across examples that
-			suggest the use of API elements that are no longer part of the core.<br /><br />
-
-			Below is a list of such elements, along with info regarding their replacements.
-		</p>
-
-
-
-
-
-
-
-
-
-
-		<h2>Audio</h2>
-
-		<h3>[page:Audio]</h3>
-		<p>Audio.load has been deprecated. Use [page:AudioLoader] instead.</p>
-
-		<h3>[page:AudioAnalyser]</h3>
-		<p>AudioAnalyser.getData() has been renamed to [page:AudioAnalyser.getFrequencyData]().</p>
-
-		<h3>[page:BinaryTextureLoader]</h3>
-		<p>BinaryTextureLoader has been renamed to [page:DataTextureLoader].</p>
-
-
-
-
-
-
-
-
-
-
-
-		<h2>Buffers</h2>
-
-		<h3>[page:BufferAttribute]</h3>
-		<p>BufferAttribute.length has been renamed to [page:BufferAttribute.count].</p>
-		<p>BufferAttribute.copyIndicesArray() has been removed.</p>
-
-
-		<h3>[page:DynamicBufferAttribute]</h3>
-		<p>DynamicBufferAttribute has been removed. Use [page:BufferAttribute.setDynamic]( true ) instead.</p>
-
-		<h3>[page:Int8Attribute]</h3>
-		<p>Int8Attribute has been removed. Use [page:BufferAttributeTypes Int8BufferAttribute] instead.</p>
-
-		<h3>[page:Uint8Attribute]</h3>
-		<p>Uint8Attribute has been removed. Use [page:BufferAttributeTypes Uint8BufferAttribute] instead.</p>
-
-		<h3>[page:Uint8ClampedAttribute]</h3>
-		<p>Uint8ClampedAttribute has been removed. Use [page:BufferAttributeTypes Uint8ClampedBufferAttribute] instead.</p>
-
-		<h3>[page:Int16Attribute]</h3>
-		<p>Int16Attribute has been removed. Use [page:BufferAttributeTypes Int16BufferAttribute] instead.</p>
-
-		<h3>[page:Uint16Attribute]</h3>
-		<p>Uint16Attribute has been removed. Use [page:BufferAttributeTypes Uint16BufferAttribute] instead.</p>
-
-		<h3>[page:Int32Attribute]</h3>
-		<p>Int32Attribute has been removed. Use [page:BufferAttributeTypes Int32BufferAttribute] instead.</p>
-
-		<h3>[page:Uint32Attribute]</h3>
-		<p>Uint32Attribute has been removed. Use [page:BufferAttributeTypes Uint32BufferAttribute] instead.</p>
-
-		<h3>[page:Float32Attribute]</h3>
-		<p>Float32Attribute has been removed. Use [page:BufferAttributeTypes Float32BufferAttribute] instead.</p>
-
-		<h3>[page:Float64Attribute]</h3>
-		<p>Float64Attribute has been removed. Use [page:BufferAttributeTypes Float64BufferAttribute] instead.</p>
-
-
-
-
-
-
-
-		<h2>Cameras</h2>
-
-		<h3>[page:PerspectiveCamera]</h3>
-		<p>
-		PerspectiveCamera.setLens() is deprecated. Use [page:PerspectiveCamera.setFocalLength]()
-		 and [page:PerspectiveCamera.filmGauge]() for a photographic setup.
-		</p>
-
-
-
-
-
-
-
-		<h2>Constants</h2>
-
-		<h3>[page:LineStrip]</h3>
-
-		<h3>[page:LinePieces]</h3>
-		<p>
-		LinePieces mode is no longer supported for [page:Line]s. Create a [page:LineSegments] instead.
-		</p>
-
-
-
-
-
-		<h2>Core</h2>
-
-		<h3>[page:EventDispatcher]</h3>
-		<p>EventDispatcher.apply has been removed. Inherit or Object.assign the prototype to mix-in instead.</p>
-
-		<h3>[page:Raycaster]</h3>
-		<p>Raycaster.params.PointCloud has been renamed to [page:Raycaster.params.Points].</p>
-
-
-		<h3>[page:Uniform]</h3>
-		<p>
-			Uniform.dynamic has been removed. Use object.onBeforeRender() instead.<br /><br />
-
-			Uniform.onUpdate has been removed. Use object.onBeforeRender() instead.
-		</p>
-
-
-
-
-
-
-		<h2>Extras</h2>
-
-		<h3>[page:ClosedSplineCurve3]</h3>
-		<p>ClosedSplineCurve3 has been deprecated. Use [page:CatmullRomCurve3] instead.</p>
-
-		<h3>[page:SplineCurve3]</h3>
-		<p>SplineCurve3 has been deprecated. Use [page:CatmullRomCurve3] instead.</p>
-
-
-
-
-
-
-
-		<h2>Geometry</h2>
-
-		<p>
-			Geometry.computeTangents() has been removed.<br /><br />
-
-			Geometry.computeLineDistances() has been removed. Use [page:Line.computeLineDistances] instead.<br /><br />
-		</p>
-
-		<h3>[page:BufferGeometry]</h3>
-		<p>
-			BufferGeometry.addIndex has been renamed to [page:BufferGeometry.setIndex].<br /><br />
-
-			BufferGeometry.addDrawCall is now [page:BufferGeometry.addGroup].<br /><br />
-
-			BufferGeometry.clearDrawCalls is now [page:BufferGeometry.clearGroups].<br /><br />
-
-			BufferGeometry.computeTangents has been removed.<br /><br />
-
-			BufferGeometry.computeOffsets has been removed.<br /><br />
-
-			BufferGeometry.drawcalls has been renamed to [page:BufferGeometry.groups].<br /><br />
-
-			BufferGeometry.offsets has been renamed to [page:BufferGeometry.groups].<br /><br />
-
-		</p>
-
-		<h3>[page:CubeGeometry]</h3>
-		<p>CubeGeometry has been renamed to [page:BoxGeometry].</p>
-
-		<h3>[page:Geometry]</h3>
-		<p>Geometry.computeTangents() has been removed.</p>
-
-		<h3>[page:GeometryUtils]</h3>
-		<p>
-			GeometryUtils.merge has been moved to [page:Geometry]. Use [page:Geometry.merge]( geometry2, matrix, materialIndexOffset ) instead.<br /><br />
-
-			GeometryUtils.center has been moved to [page:Geometry]. Use [page:Geometry.center]( ) instead.
-		</p>
-
-		<h3>[page:Plane]</h3>
-		<p>
-			Plane.isIntersectionLine() has been renamed to	[page:Plane.intersectsLine]().
-		</p>
-
-
-
-
-
-
-
-
-		<h2>Helpers</h2>
-
-		<h3>[page:BoundingBoxHelper]</h3>
-		<p>BoundingBoxHelper has been deprecated. Use [page:BoxHelper] instead.</p>
-
-		<h3>[page:EdgesHelper]</h3>
-		<p>EdgesHelper has been removed. Use [page:EdgesGeometry] instead.</p>
-
-		<h3>[page:GridHelper]</h3>
-		<p>GridHelper.setColors() has been deprecated, pass them in the constructor instead.</p>
-
-		<h3>[page:WireframeHelper WireframeHelper]</h3>
-		<p>WireframeHelper has been removed. Use [page:WireframeGeometry] instead.</p>
-
-
-
-
-		<h2>Lights</h2>
-
-		<h3>[page:Light]</h3>
-		<p>
-			Light.onlyShadow has been removed.<br /><br />
-
-			Light.shadowCameraLeft is now [page:Light.shadow.camera.left].<br /><br />
-
-			Light.shadowCameraRight is now [page:Light.shadow.camera.right].<br /><br />
-
-			Light.shadowCameraTop is now [page:Light.shadow.camera.top].<br /><br />
-
-			Light.shadowCameraBottom is now [page:Light.shadow.camera.bottom].<br /><br />
-
-			Light.shadowCameraNear is now [page:Light.shadow.camera.near].<br /><br />
-
-			Light.shadowCameraFar is now [page:Light.shadow.camera.far].<br /><br />
-
-			Light.shadowCameraVisible has been removed. Use [page:CameraHelper] ( light.shadow.camera ) instead.<br /><br />
-
-			Light.shadowMapWidth is now [page:Light.shadow.mapSize.width].<br /><br />
-
-			Light.shadowMapHeight is now [page:Light.shadow.mapSize.height].
-		</p>
-
-		<h2>Loaders</h2>
-
-		<h3>[page:XHRLoader]</h3>
-		<p>XHRLoader has been renamed to [page:FileLoader].</p>
-
-		<h3>[page:JSONLoader]</h3>
-		<p>JSONLoader has been removed from core.</p>
-
-		<h2>Maths</h2>
-
-		<h3>[page:Box2]</h3>
-		<p>
-			Box2.center has been renamed to [page:Box2.getCenter]().<br /><br />
-
-			Box2.empty has been renamed to [page:Box2.isEmpty]().<br /><br />
-
-			Box2.isIntersectionBox has been renamed to [page:Box2.intersectsBox]().<br /><br />
-
-			Box2.size has been renamed to [page:Box2.getSize]().
-
-		</p>
-
-		<h3>[page:Box3]</h3>
-		<p>
-			Box3.center has been renamed to [page:Box3.getCenter]().<br /><br />
-
-			Box3.empty has been renamed to [page:Box3.isEmpty]().<br /><br />
-
-			Box3.isIntersectionBox has been renamed to [page:Box3.intersectsBox]().<br /><br />
-
-			Box3.isIntersectionSphere has been renamed to [page:Box3.intersectsSphere]().<br /><br />
-
-			Box3.size has been renamed to [page:Box3.getSize]().
-		</p>
-
-		<h3>[page:Face4]</h3>
-		<p>Face4 has been removed. Use [page:Face3] instead.</p>
-
-		<h3>[page:Line3]</h3>
-		<p>Line3.center has been renamed to [page:Line3.getCenter]().</p>
-
-		<h3>[page:Math]</h3>
-		<p>
-			Math.random16() has been deprecated. Use Math.random() instead.
-		</p>
-
-		<h3>[page:Matrix3]</h3>
-		<p>
-			Matrix3.flattenToArrayOffset is deprecated. Use [page:Matrix3.toArray]() instead.<br /><br />
-
-			Matrix3.multiplyVector3 has been removed. Use vector.applyMatrix3( matrix ) instead.<br /><br />
-
-			Matrix3.multiplyVector3Array has been renamed to [page:Matrix3.applyToVector3Array]( array ).<br /><br />
-
-			Matrix3.applyToBuffer has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.<br /><br />
-
-			Matrix3.applyToVector3Array has been removed.
-		<p>
-
-		<h3>[page:Matrix4]</h3>
-		<p>
-			Matrix4.flattenToArrayOffset() is deprecated. Use [page:Matrix4.toArray]() instead.<br /><br />
-
-			Matrix4.extractPosition() has been renamed to [page:Matrix4.copyPosition]( matrix ).<br /><br />
-
-			Matrix4.getPosition() has been removed. Use [page:Vector3.setFromMatrixPosition]( matrix ) instead.<br /><br />
-
-			Matrix4.setRotationFromQuaternion() has been renamed to [page:Matrix4.makeRotationFromQuaternion]( quaternion ).<br /><br />
-
-			Matrix4.multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.<br /><br />
-
-			Matrix4.multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.<br /><br />
-
-			Matrix4.multiplyVector3Array() has been renamed to [page:Matrix4.applyToVector3Array] ( array ).<br /><br />
-
-			Matrix4.rotateAxis() has been removed. Use [page:Matrix4.transformDirection]( matrix ) instead.<br /><br />
-
-			Matrix4.crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.<br /><br />
-
-			Matrix4.rotateX() has been removed.<br /><br />
-
-			Matrix4.rotateY() has been removed.<br /><br />
-
-			Matrix4.rotateZ() has been removed.<br /><br />
-
-			Matrix4.rotateByAxis() has been removed.<br /><br />
-
-			Matrix4.applyToBuffer() has been removed. Use matrix.applyToBufferAttribute() instead.<br /><br />
-
-			Matrix4.applyToVector3Array() has been removed.<br /><br />
-
-			Matrix4.makeFrustum() has been removed. Use [page:Matrix4.makePerspective]( left, right, top, bottom, near, far ) instead.
-		</p>
-
-
-		<h3>[page:Quaternion.multiplyVector3]</h3>
-		<p>Quaternion.multiplyVector3() has been removed. Use vector.applyQuaternion( quaternion ) instead.</p>
-
-		<h3>[page:Ray]</h3>
-		<p>
-			Ray.isIntersectionBox() has been renamed to [page:Ray.intersectsBox]().<br /><br />
-
-			Ray.isIntersectionPlane has been renamed to [page:Ray.intersectsPlane].<br /><br />
-
-			Ray.isIntersectionSphere has been renamed to [page:Ray.intersectsSphere].
-		</p>
-
-		<h3>[page:Triangle]</h3>
-		<p>
-			Triangle.area() has been renamed to [page:Triangle.getArea]().<br /><br />
-			Triangle.barycoordFromPoint() has been renamed to [page:Triangle.getBarycoord]().<br /><br />
-			Triangle.midpoint() has been renamed to [page:Triangle.getMidpoint]().<br /><br />
-			Triangle.normal() has been renamed to [page:Triangle.getNormal]().<br /><br />
-			Triangle.plane() has been renamed to [page:Triangle.getPlane]().
-		</p>
-
-		<h3>[page:Vector2]</h3>
-		<p>
-			Vector2.fromAttribute() has been renamed to [page:Vector2.fromBufferAttribute]().
-		</p>
-
-		<h3>[page:Vector3]</h3>
-		<p>
-			Vector3.setEulerFromRotationMatrix() has been removed. Use [page:Euler.setFromRotationMatrix]() instead.<br /><br />
-
-			Vector3.setEulerFromQuaternion() has been removed. Use [page:Euler.setFromQuaternion]() instead.<br /><br />
-
-			Vector3.getPositionFromMatrix() has been renamed to [page:Vector3.setFromMatrixPosition]().<br /><br />
-
-			Vector3.getScaleFromMatrix() has been renamed to [page:Vector3.setFromMatrixScale]().<br /><br />
-
-			Vector3.getColumnFromMatrix() has been renamed to [page:Vector3.setFromMatrixColumn]().<br /><br />
-
-			Vector3.applyProjection() has been removed. Use [page:Vector3.applyMatrix4]() instead.<br /><br />
-
-			Vector3.fromAttribute() has been renamed to [page:Vector3.fromBufferAttribute]().
-		</p>
-
-		<h3>[page:Vector4]</h3>
-		<p>
-			Vector4.fromAttribute() has been renamed to [page:Vector4.fromBufferAttribute]().
-		</p>
-
-		<h3>[page:Vertex]</h3>
-		<p>Vertex has been removed. Use [page:Vector3] instead.</p>
-
-		<h3>[page:Spline]</h3>
-		<p>Spline has been removed. Use [page:CatmullRomCurve3] instead.</p>
-
-
-
-
-
-
-
-
-
-
-
-
-		<h2>Materials</h2>
-
-		<h3>[page:Material]</h3>
-		<p>
-			Material.wrapAround has been removed.<br /><br />
-
-			Material.wrapRGB has been removed.
-
-		</p>
-
-		<h3>[page:MeshFaceMaterial]</h3>
-		<p>MeshFaceMaterial has been removed. Use an array of materials instead.</p>
-
-		<h3>[page:MultiMaterial]</h3>
-		<p>MultiMaterial has been removed. Use an array of materials instead.</p>
-
-		<h3>[page:MeshPhongMaterial]</h3>
-		<p>MeshPhongMaterial.metal has been removed. Use [page:MeshStandardMaterial] instead.</p>
-
-		<h3>[page:ParticleBasicMaterial]</h3>
-		<p>ParticleBasicMaterial has been renamed to [page:PointsMaterial].</p>
-
-		<h3>[page:ParticleSystemMaterial]</h3>
-		<p>ParticleBasicMaterial has been renamed to [page:PointsMaterial].</p>
-
-		<h3>[page:PointCloudMaterial]</h3>
-		<p>PointCloudMaterial has been renamed to [page:PointsMaterial].</p>
-
-		<h3>[page:ShaderMaterial.derivatives]</h3>
-		<p>ShaderMaterial.derivatives has been moved to [page:ShaderMaterial.extensions.derivatives].</p>
-
-
-
-
-
-
-
-
-		<h2>Objects</h2>
-
-		<h3>[page:LOD.objects]</h3>
-		<p>LOD.objects has been renamed to [page:LOD.levels].</p>
-
-		<h3>[page:Object3D]</h3>
-		<p>
-			Object3D.eulerOrder is now [page:Object3D.rotation.order].<br /><br />
-
-			Object3D.getChildByName() has been renamed to [page:Object3D.getObjectByName]().<br /><br />
-
-			Object3D.renderDepth has been removed. Use [page:Object3D.renderOrder] instead.<br /><br />
-
-			Object3D.translate() has been removed. Use [page:Object3D.translateOnAxis]( axis, distance ) instead.<br /><br />
-
-			Object3D.useQuaternion has been removed. The library now uses quaternions by default.
-		</p>
-
-		<h3>[page:LensFlare]</h3>
-		<p>
-			LensFlare has been moved to [link:https://github.com/mrdoob/three.js/blob/master/examples/js/objects/Lensflare.js /examples/js/objects/Lensflare.js].
-		</p>
-
-
-		<h3>[page:Particle]</h3>
-		<p>Particle has been renamed to [page:Sprite].</p>
-
-		<h3>[page:ParticleSystem]</h3>
-		<p>ParticleSystem has been renamed to [page:Points].</p>
-
-		<h3>[page:PointCloud]</h3>
-		<p>PointCloud has been renamed to [page:Points].</p>
-
-		<h3>[page:Shape]</h3>
-		<p>
-			Shape.extrude has been removed. Use [page:ExtrudeGeometry] instead.<br /><br />
-
-			Shape.makeGeometry has been removed. Use [page:ShapeGeometry] instead.
-		</p>
-
-		<h3>[page:SkinnedMesh]</h3>
-		<p>
-			SkinnedMesh.initBones() has been removed.
-		</p>
-
-
-		<h2>Renderers</h2>
-
-		<h3>[page:CanvasRenderer]</h3>
-		<p>
-			CanvasRenderer has been removed.
-		</p>
-
-		<h3>[page:Projector]</h3>
-		<p>
-			Projector has been moved to
-			[link:https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/Projector.js 	/examples/js/renderers/Projector.js].<br /><br />
-
-			Projector.projectVector() is now [page:Vector.project]().<br /><br />
-
-			Projector.unprojectVector() is now [page:Vector.unproject]().<br /><br />
-
-			Projector:.pickingRay() is now [page:Raycaster.setFromCamera]().
-		</p>
-
-		<h3>[page:WebGLProgram]</h3>
-		<p>
-			WebGLProgram.uniforms is now [page:WebGLProgram.getUniforms]().<br /><br />
-
-			WebGLProgram.attributes is now [page:WebGLProgram.getAttributes]().
-		</p>
-
-		<h3>[page:WebGLRenderer]</h3>
-		<p>
-			WebGLRenderer.supportsFloatTextures() is now [page:WebGLRenderer.extensions.get]( 'OES_texture_float' ).<br /><br />
-
-			WebGLRenderer.supportsHalfFloatTextures() is now [page:WebGLRenderer.extensions.get]( 'OES_texture_half_float' ).<br /><br />
-
-			WebGLRenderer.supportsStandardDerivatives() is now [page:WebGLRenderer.extensions.get]( 'OES_standard_derivatives' ).<br /><br />
-
-			WebGLRenderer.supportsCompressedTextureS3TC() is now [page:WebGLRenderer.extensions.get]( 'WEBGL_compressed_texture_s3tc' ).<br /><br />
-
-			WebGLRenderer.supportsCompressedTexturePVRTC() is now [page:WebGLRenderer.extensions.get]( 'WEBGL_compressed_texture_pvrtc' ).<br /><br />
-
-			WebGLRenderer.supportsBlendMinMax() is now [page:WebGLRenderer.extensions.get]( 'EXT_blend_minmax' ).<br /><br />
-
-			WebGLRenderer.supportsVertexTextures() is now [page:WebGLRenderer.capabilities.vertexTextures].<br /><br />
-
-			WebGLRenderer.supportsInstancedArrays() is now [page:WebGLRenderer.extensions.get]( 'ANGLE_instanced_arrays' ).<br /><br />
-
-			WebGLRenderer.enableScissorTest() is now [page:WebGLRenderer.setScissorTest]().<br /><br />
-
-			WebGLRenderer.initMaterial() has been removed.<br /><br />
-
-			WebGLRenderer.addPrePlugin() has been removed.<br /><br />
-
-			WebGLRenderer.addPostPlugin() has been removed.<br /><br />
-
-			WebGLRenderer.updateShadowMap() has been removed.<br /><br />
-
-			WebGLRenderer.setFaceCulling() has been removed.<br /><br />
-
-			WebGLRenderer.setTexture is deprecated, use [page:WebGLRenderer.setTexture2D]() instead.<br /><br />
-
-			WebGLRenderer.shadowMapEnabled is now [page:WebGLRenderer.shadowMap.enabled].<br /><br />
-
-			WebGLRenderer.shadowMapType is now [page:WebGLRenderer.shadowMap.type].<br /><br />
-
-			WebGLRenderer.shadowMapCullFace has been removed. Set [page:Material.shadowSide] instead.<br /><br />
-
-			WebGLRenderer.shadowMap.cullFace has been removed. Set [page:Material.shadowSide] instead.<br /><br />
-
-			WebGLRenderer.shadowMap.renderReverseSided has been removed. Set [page:Material.shadowSide] instead.<br /><br />
-
-			WebGLRenderer.shadowMap.renderSingleSided has been removed. Set [page:Material.shadowSide] instead.
-
-		</p>
-
-		<h3>[page:WebGLRenderTarget]</h3>
-		<p>
-			WebGLRenderTarget.wrapS is now [page:WebGLRenderTarget.texture.wrapS].<br /><br />
-
-			WebGLRenderTarget.wrapT is now [page:WebGLRenderTarget.texture.wrapT].<br /><br />
-
-			WebGLRenderTarget.magFilter is now [page:WebGLRenderTarget.texture.magFilter].<br /><br />
-
-			WebGLRenderTarget.minFilter is now [page:WebGLRenderTarget.texture.minFilter].<br /><br />
-
-			WebGLRenderTarget.anisotropy is now [page:WebGLRenderTarget.texture.anisotropy].<br /><br />
-
-			WebGLRenderTarget.offset is now [page:WebGLRenderTarget.texture.offset].<br /><br />
-
-			WebGLRenderTarget.repeat is now [page:WebGLRenderTarget.texture.repeat].<br /><br />
-
-			WebGLRenderTarget.format is now [page:WebGLRenderTarget.texture.format].<br /><br />
-
-			WebGLRenderTarget.type is now [page:WebGLRenderTarget.texture.type].<br /><br />
-
-			WebGLRenderTarget.generateMipmaps is now [page:WebGLRenderTarget.texture.generateMipmaps].
-		</p>
-
-
-		<h2>Textures</h2>
-
-		<h3>[page:ImageUtils]</h3>
-		<p>
-			ImageUtils.loadTexture has been deprecated. Use [page:TextureLoader] instead.<br /><br />
-
-			ImageUtils.loadTextureCube has been deprecated. Use [page:CubeTextureLoader] instead.<br /><br />
-
-			ImageUtils.loadCompressedTexture has been removed. Use [page:DDSLoader] instead.<br /><br />
-
-			ImageUtils.loadCompressedTextureCube has been removed. Use [page:DDSLoader] instead.
-		</p>
-
-
-		<h2>Source</h2>
-
-		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/src/Three.Legacy.js src/Three.Legacy.js]
-		</p>
-
-		</body>
-</html>

+ 31 - 0
docs/api/en/extras/DataUtils.html

@@ -0,0 +1,31 @@
+<!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">
+		A class containing utility functions for data.
+		</p>
+
+		<h2>Methods</h2>
+
+		<h3>[method:Number toHalfFloat]( [param:Number val] )</h3>
+		<p>
+		val -- A single precision floating point value.<br /><br />
+
+		Returns a half precision floating point value represented as an uint16 value.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 4 - 4
docs/api/en/extras/Earcut.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -18,10 +17,11 @@
 
 		<h3>[method:Array triangulate]( data, holeIndices, dim )</h3>
 		<p>
-		data -- A flat array of vertice coordinates.<br /><br />
-		holeIndices -- An array of hole indices if any.<br /><br />
-		dim -- The number of coordinates per vertice in the input array.<br /><br />
+		data -- A flat array of vertex coordinates.<br />
+		holeIndices -- An array of hole indices if any.<br />
+		dim -- The number of coordinates per vertex in the input array.<br /><br />
 
+		Triangulates the given shape definition by returning an array of triangles. A triangle is defined by three consecutive integers representing vertex indices. 
 		</p>
 
 		<h2>Source</h2>

+ 31 - 0
docs/api/en/extras/ImageUtils.html

@@ -0,0 +1,31 @@
+<!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">
+		A class containing utility functions for images.
+		</p>
+
+		<h2>Methods</h2>
+
+		<h3>[method:String getDataURL]( [param:HTMLCanvasElement image] | [param:HTMLImageElement image] | [param:ImageBitmap image] )</h3>
+		<p>
+		image -- The image object.<br /><br />
+
+		Returns a data URI containing a representation of the given image.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 79 - 0
docs/api/en/extras/PMREMGenerator.html

@@ -0,0 +1,79 @@
+<!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">
+			This class generates a Prefiltered, Mipmapped Radiance Environment Map (PMREM) from a cubeMap environment texture.
+			This allows different levels of blur to be quickly accessed based on material roughness. It is packed into a special
+			CubeUV format that allows us to perform custom interpolation so that we can support nonlinear formats such as RGBE.
+			Unlike a traditional mipmap chain, it only goes down to the LOD_MIN level (above), and then creates extra even more
+			filtered 'mips' at the same LOD_MIN resolution, associated with higher roughness levels. In this way we maintain
+			resolution to smoothly interpolate diffuse lighting while limiting sampling computation.
+		</p>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [param:WebGLRenderer renderer] )</h3>
+		<p>
+		This constructor creates a new [name].
+		</p>
+
+		<h2>Methods</h2>
+
+		<h3>[method:WebGLRenderTarget fromScene]( [param:Scene scene], [param:Number sigma], [param:Number near], [param:Number far] )</h3>
+		<p>
+			[page:Scene scene] - The given scene.<br>
+			[page:Number sigma] - (optional) Specifies a blur radius in radians to be applied to the scene before PMREM generation. Default is *0*.<br>
+			[page:Number near] - (optional) The near plane value. Default is *0.1*.<br>
+			[page:Number far] - (optional) The far plane value. Default is *100*.<br /><br />
+
+			Generates a PMREM from a supplied Scene, which can be faster than using an image if networking bandwidth is low.
+			Optional near and far planes ensure the scene is rendered in its entirety (the cubeCamera is placed at the origin).
+		</p>
+
+		<h3>[method:WebGLRenderTarget fromEquirectangular]( [param:Texture equirectangular] )</h3>
+		<p>
+			[page:Texture equirectangular] - The equirectangular texture.<br /><br />
+
+			Generates a PMREM from an equirectangular texture, which can be either LDR (RGBFormat) or HDR (RGBEFormat).
+			The ideal input image size is 1k (1024 x 512), as this matches best with the 256 x 256 cubemap output.
+		</p>
+
+		<h3>[method:WebGLRenderTarget fromCubemap]( [param:CubeTexture cubemap] )</h3>
+		<p>
+			[page:CubeTexture cubemap] - The cubemap texture.<br /><br />
+
+			Generates a PMREM from an cubemap texture, which can be either LDR (RGBFormat) or HDR (RGBEFormat).
+			The ideal input cube size is 256 x 256, as this matches best with the 256 x 256 cubemap output.
+		</p>
+
+		<h3>[method:void compileCubemapShader]()</h3>
+		<p>
+			Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during your texture's network fetch for increased concurrency.
+		</p>
+
+		<h3>[method:void compileEquirectangularShader]()</h3>
+		<p>
+			Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during your texture's network fetch for increased concurrency.
+		</p>
+
+		<h3>[method:void dispose]()</h3>
+		<p>
+			Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class, so you should not need more than one
+			PMREMGenerator object. If you do, calling dispose() on one of them will cause any others to also become unusable.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 2 - 4
docs/api/en/extras/ShapeUtils.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -24,11 +23,10 @@
 		<p>
 		contour -- 2D polygon. An array of THREE.Vector2()<br /><br />
 
-		Calculate area of a ( 2D ) contour polygon.<br /><br />
-
+		Calculate area of a ( 2D ) contour polygon.
 		</p>
 
-		<h3>[method:Boolean isClockwise]( pts )</h3>
+		<h3>[method:Boolean isClockWise]( pts )</h3>
 		<p>
 		pts -- points defining a 2D polygon<br /><br />
 

+ 11 - 4
docs/api/en/extras/core/Curve.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -79,22 +78,30 @@
 			using [page:.getPoint].
 		 </p>
 
-		<h3>[method:Vector getTangent]( [param:Float t] )</h3>
+		<h3>[method:Vector getTangent]( [param:Float t], [param:Vector optionalTarget] )</h3>
 		<p>
+			[page:Float t] - A position on the curve. Must be in the range [ 0, 1 ]. <br>
+			[page:Vector optionalTarget] — (optional) If specified, the result will be copied into this Vector,
+			otherwise a new Vector will be created. <br /><br />
+
 			Returns a unit vector tangent at t. If the derived curve does not implement its
 			tangent derivation, two points a small delta apart will be used to find its gradient
 			which seems to give a reasonable approximation.
 		</p>
 
-		<h3>[method:Vector getTangentAt]( [param:Float u] )</h3>
+		<h3>[method:Vector getTangentAt]( [param:Float u], [param:Vector optionalTarget] )</h3>
 		<p>
+			[page:Float u] - A position on the curve according to the arc length. Must be in the range [ 0, 1 ]. <br>
+			[page:Vector optionalTarget] — (optional) If specified, the result will be copied into this Vector,
+			otherwise a new Vector will be created. <br /><br />
+
 			Returns tangent at a point which is equidistant to the ends of the curve from the
 			point given in [page:.getTangent].
 		</p>
 
 		<h3>[method:Object computeFrenetFrames]( [param:Integer segments], [param:Boolean closed] )</h3>
 		<p>
-		Generates the Frenet Frames. Used in geometries like [page:TubeGeometry] or [page:ExtrudeGeometry].
+		Generates the Frenet Frames. Requires a curve definition in 3D space. Used in geometries like [page:TubeGeometry] or [page:ExtrudeGeometry].
 		</p>
 
 		<h3>[method:Curve clone]()</h3>

+ 24 - 5
docs/api/en/extras/core/CurvePath.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -30,10 +29,10 @@
 		<h2>Properties</h2>
 		<p>See the base [page:Curve] class for common properties.</p>
 
-		<h3>[property:array curves]</h3>
+		<h3>[property:Array curves]</h3>
 		<p>The array of [page:Curve Curves].</p>
 
-		<h3>[property:boolean autoClose]</h3>
+		<h3>[property:Boolean autoClose]</h3>
 		<p>Whether or not to automatically close the path.</p>
 
 
@@ -49,9 +48,29 @@
 		<h3>[method:null closePath]()</h3>
 		<p>Adds a [page:LineCurve lineCurve] to close the path.</p>
 
-		<h3>[method:Float getCurveLengths]()</h3>
-		<p>Adds together the lengths of the curves in the [page:.curves] array.</p>
+		<h3>[method:Array getCurveLengths]()</h3>
+		<p>Get list of cumulative curve lengths of the curves in the [page:.curves] array.</p>
 
+		<h3>[method:Vector getPoint]( [param:Float t] )</h3>
+		<p>
+			[page:Float t] - A position on the curve. Must be in the range [ 0, 1 ]. <br><br />
+
+			Returns a vector for a given position on the curve path.
+		</p>
+
+		<h3>[method:Array getPoints]( [param:Integer divisions] )</h3>
+		<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 ).
+		</p>
+
+		<h3>[method:Array getSpacedPoints]( [param:Integer divisions] )</h3>
+		<p>
+			divisions -- number of pieces to divide the curve into. Default is *40*.<br /><br />
+
+			Returns a set of divisions + 1 equi-spaced points using getPointAt( u ).
+		</p>
 
 		<h2>Source</h2>
 

+ 1 - 9
docs/api/en/extras/core/Font.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -34,16 +33,9 @@
 
 		<h2>Properties</h2>
 
-		<h3>[property:array data]</h3>
+		<h3>[property:Array data]</h3>
 		<p>The JSON data passed in the constructor.</p>
 
-		<h3>[property:Boolean isFont]</h3>
-		<p>
-			Used to check whether this or derived classes are fonts. Default is *true*.<br /><br />
-
-			You should not change this, as it used internally by the renderer for optimisation.
-		</p>
-
 		<h2>Methods</h2>
 
 		<h3>[method:null generateShapes]( [param:String text], [param:Float size] )</h3>

+ 1 - 2
docs/api/en/extras/core/Interpolations.html

@@ -3,7 +3,6 @@
 	<head>
 		<meta charset="utf-8" />
 		<base href="../../../../" />
-		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 	</head>
@@ -11,7 +10,7 @@
 		<h1>[name]</h1>
 
 		<p class="desc">
-		TODO
+			[name] contains spline and Bézier functions internally used by concrete curve classes.
 		</p>
 
 		<h2>Methods</h2>

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