Compare commits
3 Commits
main
...
feature-1.
Author | SHA1 | Date |
---|---|---|
|
fde26416c7 | 3 weeks ago |
|
d39fb4d821 | 3 weeks ago |
|
9e472fef41 | 3 weeks ago |
@ -0,0 +1,14 @@
|
||||
# http://editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
|
||||
[*.{js,ts,html}]
|
||||
charset = utf-8
|
||||
indent_style = tab
|
||||
|
||||
[*.{js,ts}]
|
||||
trim_trailing_whitespace = true
|
@ -0,0 +1,88 @@
|
||||
{
|
||||
"root": true,
|
||||
"env": {
|
||||
"browser": true,
|
||||
"node": true,
|
||||
"es2018": true
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2018,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"extends": [
|
||||
"mdcs",
|
||||
"plugin:compat/recommended"
|
||||
],
|
||||
"plugins": [
|
||||
"html",
|
||||
"import"
|
||||
],
|
||||
"settings": {
|
||||
"polyfills": [
|
||||
"WebGL2RenderingContext"
|
||||
]
|
||||
},
|
||||
"globals": {
|
||||
"__THREE_DEVTOOLS__": "readonly",
|
||||
"potpack": "readonly",
|
||||
"fflate": "readonly",
|
||||
"Stats": "readonly",
|
||||
"XRWebGLBinding": "readonly",
|
||||
"XRWebGLLayer": "readonly",
|
||||
"GPUShaderStage": "readonly",
|
||||
"GPUBufferUsage": "readonly",
|
||||
"GPUTextureUsage": "readonly",
|
||||
"GPUTexture": "readonly",
|
||||
"GPUMapMode": "readonly",
|
||||
"QUnit": "readonly",
|
||||
"Ammo": "readonly",
|
||||
"XRRigidTransform": "readonly",
|
||||
"XRMediaBinding": "readonly",
|
||||
"CodeMirror": "readonly",
|
||||
"esprima": "readonly",
|
||||
"jsonlint": "readonly",
|
||||
"VideoFrame": "readonly",
|
||||
"VideoDecoder": "readonly",
|
||||
"Float16Array": "readonly"
|
||||
},
|
||||
"rules": {
|
||||
"no-throw-literal": [
|
||||
"error"
|
||||
],
|
||||
"quotes": [
|
||||
"error",
|
||||
"single"
|
||||
],
|
||||
"prefer-const": [
|
||||
"error",
|
||||
{
|
||||
"destructuring": "any",
|
||||
"ignoreReadBeforeAssign": false
|
||||
}
|
||||
],
|
||||
"no-irregular-whitespace": [
|
||||
"error"
|
||||
],
|
||||
"no-duplicate-imports": [
|
||||
"error"
|
||||
],
|
||||
"prefer-spread": "error",
|
||||
"valid-jsdoc": [
|
||||
"error",
|
||||
{
|
||||
"requireReturn": false,
|
||||
"requireReturnType": true,
|
||||
"requireParamDescription": false,
|
||||
"requireReturnDescription": false,
|
||||
"requireParamType": true,
|
||||
"preferType": {
|
||||
"Any": "any",
|
||||
"Boolean": "boolean",
|
||||
"Number": "number",
|
||||
"object": "Object",
|
||||
"String": "string"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
# Set the default behavior, in case people don't have core.autocrlf set.
|
||||
* text=auto
|
||||
|
@ -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 hello@mrdoob.com. 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
|
@ -0,0 +1,3 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: [mrdoob, HumanInteractive, donmccurdy, gkjohnson, WestLangley]
|
@ -0,0 +1,89 @@
|
||||
name: Bug Report
|
||||
description: File a reproducible bug or regression.
|
||||
body:
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: A clear and concise description of what the bug is.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: repro
|
||||
attributes:
|
||||
label: Reproduction steps
|
||||
description: How do you trigger this bug? Please walk us through it step by step.
|
||||
value: |
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: code
|
||||
attributes:
|
||||
label: Code
|
||||
value: |
|
||||
```js
|
||||
// code goes here
|
||||
```
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: example
|
||||
attributes:
|
||||
label: Live example
|
||||
value: |
|
||||
* [jsfiddle-latest-release WebGLRenderer](https://jsfiddle.net/3mrkqyea/)
|
||||
* [jsfiddle-dev WebGLRenderer](https://jsfiddle.net/gcqx26jv/)
|
||||
* [jsfiddle-latest-release WebGPURenderer](https://jsfiddle.net/mnqr9oj0/)
|
||||
* [jsfiddle-dev WebGPURenderer](https://jsfiddle.net/xno7bmw0/)
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: screenshots
|
||||
attributes:
|
||||
label: Screenshots
|
||||
description: If applicable, add screenshots to help explain your problem (drag and drop the image).
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of the library are you using?
|
||||
placeholder: r
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: device
|
||||
attributes:
|
||||
label: Device
|
||||
multiple: true
|
||||
options:
|
||||
- Desktop
|
||||
- Mobile
|
||||
- Headset
|
||||
- type: dropdown
|
||||
id: browser
|
||||
attributes:
|
||||
label: Browser
|
||||
multiple: true
|
||||
options:
|
||||
- Chrome
|
||||
- Firefox
|
||||
- Safari
|
||||
- Edge
|
||||
- Quest Browser
|
||||
- type: dropdown
|
||||
id: os
|
||||
attributes:
|
||||
label: OS
|
||||
multiple: true
|
||||
options:
|
||||
- Windows
|
||||
- MacOS
|
||||
- Linux
|
||||
- ChromeOS
|
||||
- Android
|
||||
- iOS
|
@ -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.
|
@ -0,0 +1,34 @@
|
||||
name: Feature request
|
||||
description: Suggest an idea for the project.
|
||||
body:
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: Is your feature request related to a problem? Please describe.
|
||||
placeholder: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: solution
|
||||
attributes:
|
||||
label: Solution
|
||||
description: Describe the solution you'd like.
|
||||
placeholder: A clear and concise description of what you want to happen.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: Alternatives
|
||||
description: Describe alternatives you've considered.
|
||||
placeholder: A clear and concise description of any alternative solutions or features you've considered.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: additional
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context about the feature request here.
|
||||
validations:
|
||||
required: false
|
@ -0,0 +1,9 @@
|
||||
paths-ignore:
|
||||
- "docs/prettify/**/*.*"
|
||||
- "editor/js/libs/**/*.*"
|
||||
- "examples/jsm/libs/**/*.*"
|
||||
- "examples/jsm/loaders/ifc/**/*.*"
|
||||
- "build/*.*"
|
||||
- "manual/3rdparty/**/*.*"
|
||||
- "utils/docs/template/static/scripts/fuse/**/*.*"
|
||||
- "utils/docs/template/static/scripts/prettify/**/*.*"
|
@ -0,0 +1,9 @@
|
||||
Related issue: #XXXX
|
||||
|
||||
**Description**
|
||||
|
||||
A clear and concise description of what the problem was and how this pull request solves it.
|
||||
|
||||
<!-- Remove the line below if is not relevant -->
|
||||
|
||||
*This contribution is funded by [Example](https://example.com)*
|
@ -0,0 +1,23 @@
|
||||
{
|
||||
"extends": [
|
||||
"config:base",
|
||||
":disableDependencyDashboard",
|
||||
"helpers:pinGitHubActionDigests"
|
||||
],
|
||||
"timezone": "Asia/Tokyo",
|
||||
"schedule": ["after 1am and before 7am every monday"],
|
||||
"packageRules": [
|
||||
{
|
||||
"matchDepTypes": ["devDependencies"],
|
||||
"matchUpdateTypes": ["patch", "minor", "pin", "digest"],
|
||||
"groupName": "devDependencies (non-major)",
|
||||
"automerge": true
|
||||
},
|
||||
{
|
||||
"description": "ESLint v9 requires flat configs, not yet supported by our plugins. See https://github.com/mrdoob/three.js/pull/28354#issuecomment-2106528332",
|
||||
"matchPackageNames": ["eslint"],
|
||||
"matchUpdateTypes": ["major"],
|
||||
"enabled": false
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,114 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- 'build/**'
|
||||
- 'docs/**'
|
||||
- 'files/**'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: Lint testing
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version: 18
|
||||
cache: 'npm'
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: === Lint testing ===
|
||||
run: npm run lint
|
||||
|
||||
unit:
|
||||
name: Unit testing
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version: 18
|
||||
cache: 'npm'
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: === Unit testing ===
|
||||
run: npm run test-unit
|
||||
|
||||
circular:
|
||||
name: Circular dependencies testing
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version: 18
|
||||
cache: 'npm'
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: === Circular dependencies testing ===
|
||||
run: npm run test-circular-deps
|
||||
|
||||
e2e:
|
||||
name: E2E testing
|
||||
runs-on: ${{ matrix.os }}
|
||||
timeout-minutes: 20
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ windows-latest ]
|
||||
CI: [ 0, 1, 2, 3 ]
|
||||
env:
|
||||
CI: ${{ matrix.CI }}
|
||||
steps:
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version: 18
|
||||
cache: 'npm'
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Build
|
||||
run: npm run build-module
|
||||
|
||||
- name: === E2E testing ===
|
||||
run: npm run test-e2e
|
||||
- name: Upload output screenshots
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
||||
if: always()
|
||||
with:
|
||||
name: Output screenshots-${{ matrix.os }}-${{ matrix.CI }}
|
||||
path: test/e2e/output-screenshots
|
||||
if-no-files-found: ignore
|
||||
|
||||
e2e-cov:
|
||||
name: Examples ready for release
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version: 18
|
||||
cache: 'npm'
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: === Examples ready for release ===
|
||||
run: npm run test-e2e-cov
|
@ -0,0 +1,45 @@
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "dev" ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ "dev" ]
|
||||
schedule:
|
||||
- cron: '29 23 * * 0'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'javascript' ]
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@39edc492dbe16b1465b0cafca41432d857bdb31a # v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
config-file: ./.github/codeql-config.yml
|
||||
queries: security-and-quality
|
||||
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@39edc492dbe16b1465b0cafca41432d857bdb31a # v3
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@39edc492dbe16b1465b0cafca41432d857bdb31a # v3
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
@ -0,0 +1,67 @@
|
||||
name: Read size
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'src/**'
|
||||
- 'package.json'
|
||||
- 'utils/build/**'
|
||||
|
||||
# This workflow runs in a read-only environment. We can safely checkout
|
||||
# the PR code here.
|
||||
# Reference:
|
||||
# https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
read-size:
|
||||
name: Tree-shaking
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: 'npm'
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Build
|
||||
run: npm run build
|
||||
- name: === Test tree-shaking ===
|
||||
run: npm run test-treeshake
|
||||
- name: Read bundle sizes
|
||||
id: read-size
|
||||
run: |
|
||||
WEBGL_FILESIZE=$(stat --format=%s build/three.module.min.js)
|
||||
gzip -k build/three.module.min.js
|
||||
WEBGL_FILESIZE_GZIP=$(stat --format=%s build/three.module.min.js.gz)
|
||||
WEBGL_TREESHAKEN=$(stat --format=%s test/treeshake/index.bundle.min.js)
|
||||
gzip -k test/treeshake/index.bundle.min.js
|
||||
WEBGL_TREESHAKEN_GZIP=$(stat --format=%s test/treeshake/index.bundle.min.js.gz)
|
||||
|
||||
WEBGPU_FILESIZE=$(stat --format=%s build/three.webgpu.min.js)
|
||||
gzip -k build/three.webgpu.min.js
|
||||
WEBGPU_FILESIZE_GZIP=$(stat --format=%s build/three.webgpu.min.js.gz)
|
||||
WEBGPU_TREESHAKEN=$(stat --format=%s test/treeshake/index.webgpu.bundle.min.js)
|
||||
gzip -k test/treeshake/index.webgpu.bundle.min.js
|
||||
WEBGPU_TREESHAKEN_GZIP=$(stat --format=%s test/treeshake/index.webgpu.bundle.min.js.gz)
|
||||
|
||||
WEBGPU_NODES_FILESIZE=$(stat --format=%s build/three.webgpu.nodes.min.js)
|
||||
gzip -k build/three.webgpu.nodes.min.js
|
||||
WEBGPU_NODES_FILESIZE_GZIP=$(stat --format=%s build/three.webgpu.nodes.min.js.gz)
|
||||
WEBGPU_NODES_TREESHAKEN=$(stat --format=%s test/treeshake/index.webgpu.nodes.bundle.min.js)
|
||||
gzip -k test/treeshake/index.webgpu.nodes.bundle.min.js
|
||||
WEBGPU_NODES_TREESHAKEN_GZIP=$(stat --format=%s test/treeshake/index.webgpu.nodes.bundle.min.js.gz)
|
||||
|
||||
PR=${{ github.event.pull_request.number }}
|
||||
|
||||
# write the output in a json file to upload it as artifact
|
||||
node -pe "JSON.stringify({ filesize: $WEBGL_FILESIZE, gzip: $WEBGL_FILESIZE_GZIP, treeshaken: $WEBGL_TREESHAKEN, treeshakenGzip: $WEBGL_TREESHAKEN_GZIP, filesize2: $WEBGPU_FILESIZE, gzip2: $WEBGPU_FILESIZE_GZIP, treeshaken2: $WEBGPU_TREESHAKEN, treeshakenGzip2: $WEBGPU_TREESHAKEN_GZIP, filesize3: $WEBGPU_NODES_FILESIZE, gzip3: $WEBGPU_NODES_FILESIZE_GZIP, treeshaken3: $WEBGPU_NODES_TREESHAKEN, treeshakenGzip3: $WEBGPU_NODES_TREESHAKEN_GZIP, pr: $PR })" > sizes.json
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
||||
with:
|
||||
name: sizes
|
||||
path: sizes.json
|
@ -0,0 +1,272 @@
|
||||
name: Report size
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: ["Read size"]
|
||||
types:
|
||||
- completed
|
||||
|
||||
# This workflow needs to be run with "pull-requests: write" permissions to
|
||||
# be able to comment on the pull request. We can't checkout the PR code
|
||||
# in this workflow.
|
||||
# Reference:
|
||||
# https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
|
||||
permissions:
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
report-size:
|
||||
name: Comment on PR
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.workflow_run.event == 'pull_request' &&
|
||||
github.event.workflow_run.conclusion == 'success'
|
||||
steps:
|
||||
- name: Log GitHub context
|
||||
env:
|
||||
GITHUB_CONTEXT: ${{ toJson(github) }}
|
||||
run: echo "$GITHUB_CONTEXT"
|
||||
|
||||
# Using actions/download-artifact doesn't work here
|
||||
# https://github.com/actions/download-artifact/issues/60
|
||||
- name: Download artifact
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
|
||||
id: download-artifact
|
||||
with:
|
||||
result-encoding: string
|
||||
script: |
|
||||
const fs = require('fs/promises');
|
||||
|
||||
const artifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
run_id: context.payload.workflow_run.id,
|
||||
});
|
||||
const matchArtifact = artifacts.data.artifacts.find((artifact) => artifact.name === 'sizes');
|
||||
const download = await github.rest.actions.downloadArtifact({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
artifact_id: matchArtifact.id,
|
||||
archive_format: 'zip',
|
||||
});
|
||||
|
||||
await fs.writeFile('sizes.zip', Buffer.from(download.data));
|
||||
await exec.exec('unzip sizes.zip');
|
||||
const json = await fs.readFile('sizes.json', 'utf8');
|
||||
return json;
|
||||
|
||||
# This runs on the base branch of the PR, meaning "dev"
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: 'npm'
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Build
|
||||
run: npm run build
|
||||
- name: === Test tree-shaking ===
|
||||
run: npm run test-treeshake
|
||||
- name: Read sizes
|
||||
id: read-size
|
||||
run: |
|
||||
WEBGL_FILESIZE_BASE=$(stat --format=%s build/three.module.min.js)
|
||||
gzip -k build/three.module.min.js
|
||||
WEBGL_FILESIZE_BASE_GZIP=$(stat --format=%s build/three.module.min.js.gz)
|
||||
WEBGL_TREESHAKEN_BASE=$(stat --format=%s test/treeshake/index.bundle.min.js)
|
||||
gzip -k test/treeshake/index.bundle.min.js
|
||||
WEBGL_TREESHAKEN_BASE_GZIP=$(stat --format=%s test/treeshake/index.bundle.min.js.gz)
|
||||
|
||||
WEBGPU_FILESIZE_BASE=$(stat --format=%s build/three.webgpu.min.js)
|
||||
gzip -k build/three.webgpu.min.js
|
||||
WEBGPU_FILESIZE_BASE_GZIP=$(stat --format=%s build/three.webgpu.min.js.gz)
|
||||
WEBGPU_TREESHAKEN_BASE=$(stat --format=%s test/treeshake/index.webgpu.bundle.min.js)
|
||||
gzip -k test/treeshake/index.webgpu.bundle.min.js
|
||||
WEBGPU_TREESHAKEN_BASE_GZIP=$(stat --format=%s test/treeshake/index.webgpu.bundle.min.js.gz)
|
||||
|
||||
WEBGPU_NODES_FILESIZE_BASE=$(stat --format=%s build/three.webgpu.nodes.min.js)
|
||||
gzip -k build/three.webgpu.nodes.min.js
|
||||
WEBGPU_NODES_FILESIZE_BASE_GZIP=$(stat --format=%s build/three.webgpu.nodes.min.js.gz)
|
||||
WEBGPU_NODES_TREESHAKEN_BASE=$(stat --format=%s test/treeshake/index.webgpu.nodes.bundle.min.js)
|
||||
gzip -k test/treeshake/index.webgpu.nodes.bundle.min.js
|
||||
WEBGPU_NODES_TREESHAKEN_BASE_GZIP=$(stat --format=%s test/treeshake/index.webgpu.nodes.bundle.min.js.gz)
|
||||
|
||||
# log to console
|
||||
echo "WEBGL_FILESIZE_BASE=$WEBGL_FILESIZE_BASE"
|
||||
echo "WEBGL_FILESIZE_BASE_GZIP=$WEBGL_FILESIZE_BASE_GZIP"
|
||||
echo "WEBGL_TREESHAKEN_BASE=$WEBGL_TREESHAKEN_BASE"
|
||||
echo "WEBGL_TREESHAKEN_BASE_GZIP=$WEBGL_TREESHAKEN_BASE_GZIP"
|
||||
|
||||
echo "WEBGL_FILESIZE_BASE=$WEBGL_FILESIZE_BASE" >> $GITHUB_OUTPUT
|
||||
echo "WEBGL_FILESIZE_BASE_GZIP=$WEBGL_FILESIZE_BASE_GZIP" >> $GITHUB_OUTPUT
|
||||
echo "WEBGL_TREESHAKEN_BASE=$WEBGL_TREESHAKEN_BASE" >> $GITHUB_OUTPUT
|
||||
echo "WEBGL_TREESHAKEN_BASE_GZIP=$WEBGL_TREESHAKEN_BASE_GZIP" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "WEBGPU_FILESIZE_BASE=$WEBGPU_FILESIZE_BASE"
|
||||
echo "WEBGPU_FILESIZE_BASE_GZIP=$WEBGPU_FILESIZE_BASE_GZIP"
|
||||
echo "WEBGPU_TREESHAKEN_BASE=$WEBGPU_TREESHAKEN_BASE"
|
||||
echo "WEBGPU_TREESHAKEN_BASE_GZIP=$WEBGPU_TREESHAKEN_BASE_GZIP"
|
||||
|
||||
echo "WEBGPU_FILESIZE_BASE=$WEBGPU_FILESIZE_BASE" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_FILESIZE_BASE_GZIP=$WEBGPU_FILESIZE_BASE_GZIP" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_TREESHAKEN_BASE=$WEBGPU_TREESHAKEN_BASE" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_TREESHAKEN_BASE_GZIP=$WEBGPU_TREESHAKEN_BASE_GZIP" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "WEBGPU_NODES_FILESIZE_BASE=$WEBGPU_NODES_FILESIZE_BASE"
|
||||
echo "WEBGPU_NODES_FILESIZE_BASE_GZIP=$WEBGPU_NODES_FILESIZE_BASE_GZIP"
|
||||
echo "WEBGPU_NODES_TREESHAKEN_BASE=$WEBGPU_NODES_TREESHAKEN_BASE"
|
||||
echo "WEBGPU_NODES_TREESHAKEN_BASE_GZIP=$WEBGPU_NODES_TREESHAKEN_BASE_GZIP"
|
||||
|
||||
echo "WEBGPU_NODES_FILESIZE_BASE=$WEBGPU_NODES_FILESIZE_BASE" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_NODES_FILESIZE_BASE_GZIP=$WEBGPU_NODES_FILESIZE_BASE_GZIP" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_NODES_TREESHAKEN_BASE=$WEBGPU_NODES_TREESHAKEN_BASE" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_NODES_TREESHAKEN_BASE_GZIP=$WEBGPU_NODES_TREESHAKEN_BASE_GZIP" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Format sizes
|
||||
id: format
|
||||
# It's important these are passed as env variables.
|
||||
# https://securitylab.github.com/research/github-actions-untrusted-input/
|
||||
env:
|
||||
WEBGL_FILESIZE: ${{ fromJSON(steps.download-artifact.outputs.result).filesize }}
|
||||
WEBGL_FILESIZE_GZIP: ${{ fromJSON(steps.download-artifact.outputs.result).gzip }}
|
||||
WEBGL_FILESIZE_BASE: ${{ steps.read-size.outputs.WEBGL_FILESIZE_BASE }}
|
||||
WEBGL_FILESIZE_BASE_GZIP: ${{ steps.read-size.outputs.WEBGL_FILESIZE_BASE_GZIP }}
|
||||
WEBGL_TREESHAKEN: ${{ fromJSON(steps.download-artifact.outputs.result).treeshaken }}
|
||||
WEBGL_TREESHAKEN_GZIP: ${{ fromJSON(steps.download-artifact.outputs.result).treeshakenGzip }}
|
||||
WEBGL_TREESHAKEN_BASE: ${{ steps.read-size.outputs.WEBGL_TREESHAKEN_BASE }}
|
||||
WEBGL_TREESHAKEN_BASE_GZIP: ${{ steps.read-size.outputs.WEBGL_TREESHAKEN_BASE_GZIP }}
|
||||
WEBGPU_FILESIZE: ${{ fromJSON(steps.download-artifact.outputs.result).filesize2 }}
|
||||
WEBGPU_FILESIZE_GZIP: ${{ fromJSON(steps.download-artifact.outputs.result).gzip2 }}
|
||||
WEBGPU_FILESIZE_BASE: ${{ steps.read-size.outputs.WEBGPU_FILESIZE_BASE }}
|
||||
WEBGPU_FILESIZE_BASE_GZIP: ${{ steps.read-size.outputs.WEBGPU_FILESIZE_BASE_GZIP }}
|
||||
WEBGPU_TREESHAKEN: ${{ fromJSON(steps.download-artifact.outputs.result).treeshaken2 }}
|
||||
WEBGPU_TREESHAKEN_GZIP: ${{ fromJSON(steps.download-artifact.outputs.result).treeshakenGzip2 }}
|
||||
WEBGPU_TREESHAKEN_BASE: ${{ steps.read-size.outputs.WEBGPU_TREESHAKEN_BASE }}
|
||||
WEBGPU_TREESHAKEN_BASE_GZIP: ${{ steps.read-size.outputs.WEBGPU_TREESHAKEN_BASE_GZIP }}
|
||||
WEBGPU_NODES_FILESIZE: ${{ fromJSON(steps.download-artifact.outputs.result).filesize3 }}
|
||||
WEBGPU_NODES_FILESIZE_GZIP: ${{ fromJSON(steps.download-artifact.outputs.result).gzip3 }}
|
||||
WEBGPU_NODES_FILESIZE_BASE: ${{ steps.read-size.outputs.WEBGPU_NODES_FILESIZE_BASE }}
|
||||
WEBGPU_NODES_FILESIZE_BASE_GZIP: ${{ steps.read-size.outputs.WEBGPU_NODES_FILESIZE_BASE_GZIP }}
|
||||
WEBGPU_NODES_TREESHAKEN: ${{ fromJSON(steps.download-artifact.outputs.result).treeshaken3 }}
|
||||
WEBGPU_NODES_TREESHAKEN_GZIP: ${{ fromJSON(steps.download-artifact.outputs.result).treeshakenGzip3 }}
|
||||
WEBGPU_NODES_TREESHAKEN_BASE: ${{ steps.read-size.outputs.WEBGPU_NODES_TREESHAKEN_BASE }}
|
||||
WEBGPU_NODES_TREESHAKEN_BASE_GZIP: ${{ steps.read-size.outputs.WEBGPU_NODES_TREESHAKEN_BASE_GZIP }}
|
||||
run: |
|
||||
WEBGL_FILESIZE_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGL_FILESIZE")
|
||||
WEBGL_FILESIZE_GZIP_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGL_FILESIZE_GZIP")
|
||||
WEBGL_FILESIZE_BASE_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGL_FILESIZE_BASE")
|
||||
WEBGL_FILESIZE_BASE_GZIP_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGL_FILESIZE_BASE_GZIP")
|
||||
WEBGL_FILESIZE_DIFF=$(node ./test/treeshake/utils/format-diff.js "$WEBGL_FILESIZE" "$WEBGL_FILESIZE_BASE")
|
||||
WEBGL_FILESIZE_DIFF_GZIP=$(node ./test/treeshake/utils/format-diff.js "$WEBGL_FILESIZE_GZIP" "$WEBGL_FILESIZE_BASE_GZIP")
|
||||
|
||||
WEBGL_TREESHAKEN_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGL_TREESHAKEN")
|
||||
WEBGL_TREESHAKEN_GZIP_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGL_TREESHAKEN_GZIP")
|
||||
WEBGL_TREESHAKEN_BASE_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGL_TREESHAKEN_BASE")
|
||||
WEBGL_TREESHAKEN_BASE_GZIP_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGL_TREESHAKEN_BASE_GZIP")
|
||||
WEBGL_TREESHAKEN_DIFF=$(node ./test/treeshake/utils/format-diff.js "$WEBGL_TREESHAKEN" "$WEBGL_TREESHAKEN_BASE")
|
||||
WEBGL_TREESHAKEN_DIFF_GZIP=$(node ./test/treeshake/utils/format-diff.js "$WEBGL_TREESHAKEN_GZIP" "$WEBGL_TREESHAKEN_BASE_GZIP")
|
||||
|
||||
WEBGPU_FILESIZE_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_FILESIZE")
|
||||
WEBGPU_FILESIZE_GZIP_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_FILESIZE_GZIP")
|
||||
WEBGPU_FILESIZE_BASE_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_FILESIZE_BASE")
|
||||
WEBGPU_FILESIZE_BASE_GZIP_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_FILESIZE_BASE_GZIP")
|
||||
WEBGPU_FILESIZE_DIFF=$(node ./test/treeshake/utils/format-diff.js "$WEBGPU_FILESIZE" "$WEBGPU_FILESIZE_BASE")
|
||||
WEBGPU_FILESIZE_DIFF_GZIP=$(node ./test/treeshake/utils/format-diff.js "$WEBGPU_FILESIZE_GZIP" "$WEBGPU_FILESIZE_BASE_GZIP")
|
||||
|
||||
WEBGPU_TREESHAKEN_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_TREESHAKEN")
|
||||
WEBGPU_TREESHAKEN_GZIP_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_TREESHAKEN_GZIP")
|
||||
WEBGPU_TREESHAKEN_BASE_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_TREESHAKEN_BASE")
|
||||
WEBGPU_TREESHAKEN_BASE_GZIP_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_TREESHAKEN_BASE_GZIP")
|
||||
WEBGPU_TREESHAKEN_DIFF=$(node ./test/treeshake/utils/format-diff.js "$WEBGPU_TREESHAKEN" "$WEBGPU_TREESHAKEN_BASE")
|
||||
WEBGPU_TREESHAKEN_DIFF_GZIP=$(node ./test/treeshake/utils/format-diff.js "$WEBGPU_TREESHAKEN_GZIP" "$WEBGPU_TREESHAKEN_BASE_GZIP")
|
||||
|
||||
WEBGPU_NODES_FILESIZE_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_NODES_FILESIZE")
|
||||
WEBGPU_NODES_FILESIZE_GZIP_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_NODES_FILESIZE_GZIP")
|
||||
WEBGPU_NODES_FILESIZE_BASE_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_NODES_FILESIZE_BASE")
|
||||
WEBGPU_NODES_FILESIZE_BASE_GZIP_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_NODES_FILESIZE_BASE_GZIP")
|
||||
WEBGPU_NODES_FILESIZE_DIFF=$(node ./test/treeshake/utils/format-diff.js "$WEBGPU_NODES_FILESIZE" "$WEBGPU_NODES_FILESIZE_BASE")
|
||||
WEBGPU_NODES_FILESIZE_DIFF_GZIP=$(node ./test/treeshake/utils/format-diff.js "$WEBGPU_NODES_FILESIZE_GZIP" "$WEBGPU_NODES_FILESIZE_BASE_GZIP")
|
||||
|
||||
WEBGPU_NODES_TREESHAKEN_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_NODES_TREESHAKEN")
|
||||
WEBGPU_NODES_TREESHAKEN_GZIP_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_NODES_TREESHAKEN_GZIP")
|
||||
WEBGPU_NODES_TREESHAKEN_BASE_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_NODES_TREESHAKEN_BASE")
|
||||
WEBGPU_NODES_TREESHAKEN_BASE_GZIP_FORM=$(node ./test/treeshake/utils/format-size.js "$WEBGPU_NODES_TREESHAKEN_BASE_GZIP")
|
||||
WEBGPU_NODES_TREESHAKEN_DIFF=$(node ./test/treeshake/utils/format-diff.js "$WEBGPU_NODES_TREESHAKEN" "$WEBGPU_NODES_TREESHAKEN_BASE")
|
||||
WEBGPU_NODES_TREESHAKEN_DIFF_GZIP=$(node ./test/treeshake/utils/format-diff.js "$WEBGPU_NODES_TREESHAKEN_GZIP" "$WEBGPU_NODES_TREESHAKEN_BASE_GZIP")
|
||||
|
||||
echo "WEBGL_FILESIZE=$WEBGL_FILESIZE_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGL_FILESIZE_GZIP=$WEBGL_FILESIZE_GZIP_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGL_FILESIZE_BASE=$WEBGL_FILESIZE_BASE_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGL_FILESIZE_BASE_GZIP=$WEBGL_FILESIZE_BASE_GZIP_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGL_FILESIZE_DIFF=$WEBGL_FILESIZE_DIFF" >> $GITHUB_OUTPUT
|
||||
echo "WEBGL_FILESIZE_DIFF_GZIP=$WEBGL_FILESIZE_DIFF_GZIP" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "WEBGL_TREESHAKEN=$WEBGL_TREESHAKEN_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGL_TREESHAKEN_GZIP=$WEBGL_TREESHAKEN_GZIP_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGL_TREESHAKEN_BASE=$WEBGL_TREESHAKEN_BASE_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGL_TREESHAKEN_BASE_GZIP=$WEBGL_TREESHAKEN_BASE_GZIP_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGL_TREESHAKEN_DIFF=$WEBGL_TREESHAKEN_DIFF" >> $GITHUB_OUTPUT
|
||||
echo "WEBGL_TREESHAKEN_DIFF_GZIP=$WEBGL_TREESHAKEN_DIFF_GZIP" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "WEBGPU_FILESIZE=$WEBGPU_FILESIZE_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_FILESIZE_GZIP=$WEBGPU_FILESIZE_GZIP_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_FILESIZE_BASE=$WEBGPU_FILESIZE_BASE_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_FILESIZE_BASE_GZIP=$WEBGPU_FILESIZE_BASE_GZIP_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_FILESIZE_DIFF=$WEBGPU_FILESIZE_DIFF" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_FILESIZE_DIFF_GZIP=$WEBGPU_FILESIZE_DIFF_GZIP" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "WEBGPU_TREESHAKEN=$WEBGPU_TREESHAKEN_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_TREESHAKEN_GZIP=$WEBGPU_TREESHAKEN_GZIP_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_TREESHAKEN_BASE=$WEBGPU_TREESHAKEN_BASE_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_TREESHAKEN_BASE_GZIP=$WEBGPU_TREESHAKEN_BASE_GZIP_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_TREESHAKEN_DIFF=$WEBGPU_TREESHAKEN_DIFF" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_TREESHAKEN_DIFF_GZIP=$WEBGPU_TREESHAKEN_DIFF_GZIP" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "WEBGPU_NODES_FILESIZE=$WEBGPU_NODES_FILESIZE_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_NODES_FILESIZE_GZIP=$WEBGPU_NODES_FILESIZE_GZIP_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_NODES_FILESIZE_BASE=$WEBGPU_NODES_FILESIZE_BASE_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_NODES_FILESIZE_BASE_GZIP=$WEBGPU_NODES_FILESIZE_BASE_GZIP_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_NODES_FILESIZE_DIFF=$WEBGPU_NODES_FILESIZE_DIFF" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_NODES_FILESIZE_DIFF_GZIP=$WEBGPU_NODES_FILESIZE_DIFF_GZIP" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "WEBGPU_NODES_TREESHAKEN=$WEBGPU_NODES_TREESHAKEN_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_NODES_TREESHAKEN_GZIP=$WEBGPU_NODES_TREESHAKEN_GZIP_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_NODES_TREESHAKEN_BASE=$WEBGPU_NODES_TREESHAKEN_BASE_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_NODES_TREESHAKEN_BASE_GZIP=$WEBGPU_NODES_TREESHAKEN_BASE_GZIP_FORM" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_NODES_TREESHAKEN_DIFF=$WEBGPU_NODES_TREESHAKEN_DIFF" >> $GITHUB_OUTPUT
|
||||
echo "WEBGPU_NODES_TREESHAKEN_DIFF_GZIP=$WEBGPU_NODES_TREESHAKEN_DIFF_GZIP" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Find existing comment
|
||||
uses: peter-evans/find-comment@3eae4d37986fb5a8592848f6a574fdf654e61f9e # v3
|
||||
id: find-comment
|
||||
with:
|
||||
issue-number: ${{ fromJSON(steps.download-artifact.outputs.result).pr }}
|
||||
comment-author: 'github-actions[bot]'
|
||||
body-includes: Bundle size
|
||||
- name: Comment on PR
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
|
||||
with:
|
||||
issue-number: ${{ fromJSON(steps.download-artifact.outputs.result).pr }}
|
||||
comment-id: ${{ steps.find-comment.outputs.comment-id }}
|
||||
edit-mode: replace
|
||||
body: |
|
||||
### 📦 Bundle size
|
||||
|
||||
_Full ESM build, minified and gzipped._
|
||||
|
||||
|| Before | After | Diff |
|
||||
|:-:|:-:|:-:|:-:|
|
||||
| WebGL | ${{ steps.format.outputs.WEBGL_FILESIZE_BASE }} <br> **${{ steps.format.outputs.WEBGL_FILESIZE_BASE_GZIP }}** | ${{ steps.format.outputs.WEBGL_FILESIZE }} <br> **${{ steps.format.outputs.WEBGL_FILESIZE_GZIP }}** | ${{ steps.format.outputs.WEBGL_FILESIZE_DIFF }} <br> **${{ steps.format.outputs.WEBGL_FILESIZE_DIFF_GZIP }}** |
|
||||
| WebGPU | ${{ steps.format.outputs.WEBGPU_FILESIZE_BASE }} <br> **${{ steps.format.outputs.WEBGPU_FILESIZE_BASE_GZIP }}** | ${{ steps.format.outputs.WEBGPU_FILESIZE }} <br> **${{ steps.format.outputs.WEBGPU_FILESIZE_GZIP }}** | ${{ steps.format.outputs.WEBGPU_FILESIZE_DIFF }} <br> **${{ steps.format.outputs.WEBGPU_FILESIZE_DIFF_GZIP }}** |
|
||||
| WebGPU Nodes | ${{ steps.format.outputs.WEBGPU_NODES_FILESIZE_BASE }} <br> **${{ steps.format.outputs.WEBGPU_NODES_FILESIZE_BASE_GZIP }}** | ${{ steps.format.outputs.WEBGPU_NODES_FILESIZE }} <br> **${{ steps.format.outputs.WEBGPU_NODES_FILESIZE_GZIP }}** | ${{ steps.format.outputs.WEBGPU_NODES_FILESIZE_DIFF }} <br> **${{ steps.format.outputs.WEBGPU_NODES_FILESIZE_DIFF_GZIP }}** |
|
||||
|
||||
### 🌳 Bundle size after tree-shaking
|
||||
|
||||
_Minimal build including a renderer, camera, empty scene, and dependencies._
|
||||
|
||||
|| Before | After | Diff |
|
||||
|:-:|:-:|:-:|:-:|
|
||||
| WebGL | ${{ steps.format.outputs.WEBGL_TREESHAKEN_BASE }} <br> **${{ steps.format.outputs.WEBGL_TREESHAKEN_BASE_GZIP }}** | ${{ steps.format.outputs.WEBGL_TREESHAKEN }} <br> **${{ steps.format.outputs.WEBGL_TREESHAKEN_GZIP }}** | ${{ steps.format.outputs.WEBGL_TREESHAKEN_DIFF }} <br> **${{ steps.format.outputs.WEBGL_TREESHAKEN_DIFF_GZIP }}** |
|
||||
| WebGPU | ${{ steps.format.outputs.WEBGPU_TREESHAKEN_BASE }} <br> **${{ steps.format.outputs.WEBGPU_TREESHAKEN_BASE_GZIP }}** | ${{ steps.format.outputs.WEBGPU_TREESHAKEN }} <br> **${{ steps.format.outputs.WEBGPU_TREESHAKEN_GZIP }}** | ${{ steps.format.outputs.WEBGPU_TREESHAKEN_DIFF }} <br> **${{ steps.format.outputs.WEBGPU_TREESHAKEN_DIFF_GZIP }}** |
|
||||
| WebGPU Nodes | ${{ steps.format.outputs.WEBGPU_NODES_TREESHAKEN_BASE }} <br> **${{ steps.format.outputs.WEBGPU_NODES_TREESHAKEN_BASE_GZIP }}** | ${{ steps.format.outputs.WEBGPU_NODES_TREESHAKEN }} <br> **${{ steps.format.outputs.WEBGPU_NODES_TREESHAKEN_GZIP }}** | ${{ steps.format.outputs.WEBGPU_NODES_TREESHAKEN_DIFF }} <br> **${{ steps.format.outputs.WEBGPU_NODES_TREESHAKEN_DIFF_GZIP }}** |
|
@ -0,0 +1,23 @@
|
||||
.DS_Store
|
||||
*.swp
|
||||
.project
|
||||
.idea/
|
||||
.vscode/
|
||||
npm-debug.log
|
||||
.jshintrc
|
||||
.vs/
|
||||
|
||||
test/unit/build
|
||||
test/treeshake/index-src.bundle.min.js
|
||||
test/treeshake/index.bundle.js
|
||||
test/treeshake/index.bundle.min.js
|
||||
test/treeshake/index.webgpu.bundle.js
|
||||
test/treeshake/index.webgpu.bundle.min.js
|
||||
test/treeshake/index.webgpu.nodes.bundle.js
|
||||
test/treeshake/index.webgpu.nodes.bundle.min.js
|
||||
test/treeshake/stats.html
|
||||
test/e2e/chromium
|
||||
test/e2e/output-screenshots
|
||||
|
||||
**/node_modules
|
||||
**/docs_new
|
@ -0,0 +1,21 @@
|
||||
The MIT License
|
||||
|
||||
Copyright © 2010-2025 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
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
@ -0,0 +1,86 @@
|
||||
# three.js
|
||||
|
||||
[![NPM Package][npm]][npm-url]
|
||||
[![Build Size][build-size]][build-size-url]
|
||||
[![NPM Downloads][npm-downloads]][npmtrends-url]
|
||||
[![Discord][discord]][discord-url]
|
||||
[![DeepWiki][deepwiki]][deepwiki-url]
|
||||
|
||||
#### JavaScript 3D library
|
||||
|
||||
The aim of the project is to create an easy-to-use, lightweight, cross-browser, general-purpose 3D library. The current builds only include WebGL and WebGPU renderers but SVG and CSS3D renderers are also available as addons.
|
||||
|
||||
[Examples](https://threejs.org/examples/) —
|
||||
[Docs](https://threejs.org/docs/) —
|
||||
[Manual](https://threejs.org/manual/) —
|
||||
[Wiki](https://github.com/mrdoob/three.js/wiki) —
|
||||
[Migrating](https://github.com/mrdoob/three.js/wiki/Migration-Guide) —
|
||||
[Questions](https://stackoverflow.com/questions/tagged/three.js) —
|
||||
[Forum](https://discourse.threejs.org/) —
|
||||
[Discord](https://discord.gg/56GBJwAnUS)
|
||||
|
||||
### Usage
|
||||
|
||||
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
|
||||
import * as THREE from 'three';
|
||||
|
||||
const width = window.innerWidth, height = window.innerHeight;
|
||||
|
||||
// init
|
||||
|
||||
const camera = new THREE.PerspectiveCamera( 70, width / height, 0.01, 10 );
|
||||
camera.position.z = 1;
|
||||
|
||||
const scene = new THREE.Scene();
|
||||
|
||||
const geometry = new THREE.BoxGeometry( 0.2, 0.2, 0.2 );
|
||||
const material = new THREE.MeshNormalMaterial();
|
||||
|
||||
const mesh = new THREE.Mesh( geometry, material );
|
||||
scene.add( mesh );
|
||||
|
||||
const renderer = new THREE.WebGLRenderer( { antialias: true } );
|
||||
renderer.setSize( width, height );
|
||||
renderer.setAnimationLoop( animate );
|
||||
document.body.appendChild( renderer.domElement );
|
||||
|
||||
// animation
|
||||
|
||||
function animate( time ) {
|
||||
|
||||
mesh.rotation.x = time / 2000;
|
||||
mesh.rotation.y = time / 1000;
|
||||
|
||||
renderer.render( scene, camera );
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
If everything goes well, you should see [this](https://jsfiddle.net/v98k6oze/).
|
||||
|
||||
### Cloning this repository
|
||||
|
||||
Cloning the repo with all its history results in a ~2 GB 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
|
||||
[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
|
||||
[npm-downloads]: https://img.shields.io/npm/dw/three
|
||||
[npmtrends-url]: https://www.npmtrends.com/three
|
||||
[discord]: https://img.shields.io/discord/685241246557667386
|
||||
[discord-url]: https://discord.gg/56GBJwAnUS
|
||||
[deepwiki]: https://deepwiki.com/badge.svg
|
||||
[deepwiki-url]: https://deepwiki.com/mrdoob/three.js
|
||||
|
@ -0,0 +1,18 @@
|
||||
# Security Policy
|
||||
|
||||
If you have discovered a security vulnerability in this project, please report it
|
||||
privately. **Do not disclose it as a public issue.** This gives us time to work with you
|
||||
to fix the issue before public exposure, reducing the chance that the exploit will be
|
||||
used before a patch is released.
|
||||
|
||||
You may submit the report in the following ways:
|
||||
|
||||
- Send an email to hello@mrdoob.com.
|
||||
|
||||
Please provide the following information in your report:
|
||||
|
||||
- A description of the vulnerability and its impact.
|
||||
- How to reproduce the issue.
|
||||
|
||||
This project is maintained by volunteers on a reasonable-effort basis. As such,
|
||||
we ask that you give us 90 days to work on a fix before public exposure.
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
Contributing to the documentation
|
||||
=================================
|
||||
|
||||
- To link to the page for `ClassName`, use `[page:ClassName link title]` (or just `[page:ClassName]`). Use `[page:ClassName.memberName]` to link to a class member (a property or method) called `memberName` on the page for `ClassName`. You can write `[page:.memberName]` to link to a property or method called `memberName` on the same page.
|
||||
- Use `[example:exampleName title]` (not just `[example:exampleName]`) to link to the example `threejs.org/examples/#exampleName`.
|
||||
- Document a property by writing `<h3>[property:TypeName propertyName]</h3>`.
|
||||
- Document a method using `<h3>[method:ReturnType methodName]</h3>`.
|
@ -0,0 +1,134 @@
|
||||
<!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:Object toJSON]()</h3>
|
||||
<p>
|
||||
Returns a JSON object representing the serialized animation clip.
|
||||
</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 الجديدة التي تم إنشاؤها من 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>
|
||||
يُرجع مقطع رسوم متحركة جديدًا من 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>
|
@ -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:this stopAllAction]()</h3>
|
||||
<p>
|
||||
يقوم بإلغاء تنشيط كافة الإجراءات المجدولة مسبقًا على هذا الخالط.
|
||||
</p>
|
||||
|
||||
<h3>[method:this update]([param:Number deltaTimeInSeconds]) </h3>
|
||||
<p>
|
||||
يعمل على تقدم وقت الخالط العالمي وتحديث الرسوم المتحركة.<br /><br />
|
||||
|
||||
يتم ذلك عادةً في حلقة العرض ، حيث يتم تمرير [page:Clock.getDelta clock.getDelta] مقياسًا بواسطة جهاز الخلاط [page:.timeScale timeScale]).
|
||||
</p>
|
||||
|
||||
<h3>[method:this setTime]([param:Number timeInSeconds]) </h3>
|
||||
<p>
|
||||
يضبط الخالط العام على وقت محدد ويقوم بتحديث الرسوم المتحركة وفقًا لذلك.<br /><br />
|
||||
|
||||
يكون هذا مفيدًا عندما تحتاج إلى الانتقال إلى وقت محدد في رسم متحرك. سيتم قياس القيمة المدخلة حسب مقياس الوقت لجهاز الخالط [page:.timeScale timeScale].
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined uncacheClip]([param:AnimationClip clip])</h3>
|
||||
|
||||
<p>
|
||||
إلغاء تخصيص كل موارد الذاكرة لمقطع.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined uncacheRoot]([param:Object3D root]) </h3>
|
||||
<p>
|
||||
إلغاء تخصيص كافة موارد الذاكرة لكائن جذر.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined 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>
|
@ -0,0 +1,87 @@
|
||||
<!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:Boolean isAnimationObjectGroup]</h3>
|
||||
<p>
|
||||
Read-only flag to check if a given object is of type [name].
|
||||
</p>
|
||||
|
||||
|
||||
<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:undefined add]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
|
||||
<p>
|
||||
يضيف عددًا عشوائيًا من الكائنات إلى *AnimationObjectGroup*.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined remove]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
|
||||
<p>
|
||||
يزيل عددًا عشوائيًا من الكائنات من *AnimationObjectGroup*.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined 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>
|
@ -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 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:AnimationClip makeClipAdditive]( [param:AnimationClip targetClip], [param:Number referenceFrame], [param:AnimationClip referenceClip], [param:Number fps] )</h3>
|
||||
<p>
|
||||
Converts the keyframes of the given animation clip to an additive format.
|
||||
</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>
|
@ -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>
|
||||
يمكن أن يشير اسم المسار إلى 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:Interpolant createInterpolant]()</h3>
|
||||
<p>
|
||||
ينشئ [page:LinearInterpolant LinearInterpolant] أو [page:CubicInterpolant CubicInterpolant] أو [page:DiscreteInterpolant DiscreteInterpolant] ، اعتمادًا على قيمة معلمة الاستيفاء التي تم تمريرها في الباني.
|
||||
</p>
|
||||
|
||||
<h3>[method:Interpolant 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:LinearInterpolant 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:CubicInterpolant 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>
|
@ -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:undefined getValue]( [param:Array targetArray], [param:Number offset] )</h3>
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined setValue]( [param:Array sourceArray], [param:Number offset] )</h3>
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined bind]( )</h3>
|
||||
<p>
|
||||
إنشاء زوج getter / setter لخاصية في الرسم البياني للمشهد. تستخدم داخليا من قبل
|
||||
[page:PropertyBinding.getValue getValue] و [page:PropertyBinding.setValue setValue].
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined 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>
|
@ -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:undefined accumulate]( [param:Number accuIndex], [param:Number weight] )</h3>
|
||||
<p>
|
||||
تجميع البيانات في [page:PropertyMixer.buffer buffer][accuIndex] منطقة 'incoming' في 'accu[i]'.<br />
|
||||
|
||||
إذا كان الوزن *0* فهذا لا يفعل شيئًا.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined apply]( [param:Number accuIndex] )</h3>
|
||||
<p>
|
||||
تطبيق حالة [page:PropertyMixer.buffer buffer] 'accu[i]' على الربط عند اختلاف الاتهام.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined saveOriginalState]( )</h3>
|
||||
<p>
|
||||
تذكر حالة الملكية المقيدة وتنسخها إلى كلا المتهمين.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined 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>
|
@ -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] →
|
||||
|
||||
<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:undefined InterpolantFactoryMethodLinear ]()</h3>
|
||||
<p>
|
||||
قيمة هذه الوضيفة هي 'undefined'، حيث أنه لا يوجد سبب لإستعمالها على الخصائص المتفردة.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined 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>
|
@ -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] →
|
||||
|
||||
<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>
|
@ -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] →
|
||||
|
||||
<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>
|
@ -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] →
|
||||
|
||||
<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:QuaternionLinearInterpolant 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>
|
@ -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] →
|
||||
|
||||
<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:undefined InterpolantFactoryMethodLinear]()</h3>
|
||||
<p>
|
||||
قيمة هذه الطريقة هنا 'undefined' ، لأنها لا معنى لها بالنسبة للخصائص المنفصلة.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined 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>
|
@ -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] →
|
||||
|
||||
<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>
|
@ -0,0 +1,230 @@
|
||||
<!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] →
|
||||
|
||||
<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>Represents an array of [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioNode AudioNodes]. Can be used to apply a variety of low-order filters to create more complex sound effects.
|
||||
In most cases, the array contains instances of [link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNodes]. Filters are set via [page:Audio.setFilter] or [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:AudioNode 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:this connect]()</h3>
|
||||
<p>
|
||||
متصل بـ [page:Audio.source]. يستخدم هذا داخليًا عند التهيئة وعند ضبط / إزالة المرشحات.
|
||||
</p>
|
||||
|
||||
<h3>[method:this 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]()</h3>
|
||||
<p>
|
||||
إعادة الحجم الحالي.
|
||||
</p>
|
||||
|
||||
<h3>[method:this play]( delay )</h3>
|
||||
<p>
|
||||
إذا كانت [page:Audio.hasPlaybackControl hasPlaybackControl] تحمل قيمة *true* ، يبدأ التشغيل.
|
||||
</p>
|
||||
|
||||
<h3>[method:this pause]()</h3>
|
||||
<p>
|
||||
إذا كانت [page:Audio.hasPlaybackControl hasPlaybackControl] تحمل قيمة *true* ، يقوم بإقاف التشغيل.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined onEnded]()</h3>
|
||||
<p>
|
||||
يتم مناداته تلقائيًا عند انتهاء التشغيل.
|
||||
</p>
|
||||
|
||||
<h3>[method:this setBuffer]( audioBuffer )</h3>
|
||||
<p>
|
||||
تقوم بإعداد [page:Audio.source source] إلى *audioBuffer* ، وتقوم بتعيين [page:Audio.sourceType sourceType] إلى 'buffer'.<br />
|
||||
إذا كان [page:Audio.autoplay autoplay] ، يبدأ التشغيل أيضًا.
|
||||
</p>
|
||||
|
||||
<h3>[method:this setFilter]( filter )</h3>
|
||||
<p>
|
||||
Applies a single filter node to the audio.
|
||||
</p>
|
||||
|
||||
<h3>[method:this setFilters]( [param:Array value] )</h3>
|
||||
<p>
|
||||
value - arrays of filters.<br />
|
||||
Applies an array of filter nodes to the audio.
|
||||
</p>
|
||||
|
||||
<h3>[method:this setLoop]( [param:Boolean value] )</h3>
|
||||
<p>
|
||||
يضبط [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loop source.loop] على *value* (ما إذا كان يجب تكرار التشغيل).
|
||||
</p>
|
||||
|
||||
<h3>[method:this setLoopStart]( [param:Float value] )</h3>
|
||||
<p>
|
||||
يضبط [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loopStart source.loopStart] على *value*.
|
||||
</p>
|
||||
|
||||
<h3>[method:this setLoopEnd]( [param:Float value] )</h3>
|
||||
<p>
|
||||
يضبط [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loopEnd source.loopEnd] على *value*.
|
||||
</p>
|
||||
|
||||
<h3>[method:this 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:this 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:this setNodeSource]( audioNode )</h3>
|
||||
<p>
|
||||
يقوم بإعداد [page:Audio.source source] إلى audioBuffer ، ويقوم بتعيين [page:Audio.sourceType sourceType] على 'audioNode'.<br />
|
||||
يضبط أيضًا [page:Audio.hasPlaybackControl hasPlaybackControl] إلى false.
|
||||
</p>
|
||||
|
||||
<h3>[method:this setPlaybackRate]( [param:Float value] )</h3>
|
||||
<p>
|
||||
إذا تم تمكين [page:Audio.hasPlaybackControl hasPlaybackControl] ، فيتم ضبط [page:Audio.playbackRate playbackRate] على *value*.
|
||||
</p>
|
||||
|
||||
<h3>[method:this setVolume]( [param:Float value] )</h3>
|
||||
<p>
|
||||
تضبط مستوى الصوت.
|
||||
</p>
|
||||
|
||||
<h3>[method:this 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>
|
@ -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>
|
@ -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>
|
@ -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] →
|
||||
|
||||
<h1>[name]</h1>
|
||||
|
||||
<p class="desc">
|
||||
يمثل هذا المكون [link:https://developer.mozilla.org/en-US/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:this setFilter]( [param:AudioNode value] )</h3>
|
||||
<p>
|
||||
تقوم بتعيين خاصية [page:AudioListener.filter filter] إلى *value*.
|
||||
</p>
|
||||
|
||||
<h3>[method:Float getMasterVolume]()</h3>
|
||||
<p>
|
||||
إعادة *volume*.
|
||||
</p>
|
||||
|
||||
<h3>[method:this 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>
|
@ -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] → [page:Audio] →
|
||||
|
||||
<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.SphereGeometry( 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:this 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:this 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:this 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:this setMaxDistance]( [param:Float value] )</h3>
|
||||
<p>
|
||||
يضبط قيمة [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance panner.maxDistance].
|
||||
</p>
|
||||
|
||||
<h3>[method:this 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>
|
@ -0,0 +1,53 @@
|
||||
<!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] → [page:Camera] → [page:PerspectiveCamera] →
|
||||
|
||||
<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>
|
||||
|
||||
<h3>[property:Boolean isArrayCamera]</h3>
|
||||
<p>
|
||||
Read-only flag to check if a given object is of type [name].
|
||||
</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>
|
@ -0,0 +1,83 @@
|
||||
<!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] →
|
||||
|
||||
<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:Boolean isCamera]</h3>
|
||||
<p>
|
||||
Read-only flag to check if a given object is of type [name].
|
||||
</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:this 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>
|
@ -0,0 +1,88 @@
|
||||
<!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] →
|
||||
|
||||
<h1>[name]</h1>
|
||||
|
||||
<p class="desc">يقوم بإنشاء 6 كاميرات يتم تحويلها إلى [page:WebGLCubeRenderTarget].</p>
|
||||
|
||||
<h2>مثال التعليمة البرمجية</h2>
|
||||
|
||||
<code>
|
||||
// Create cube render target
|
||||
const cubeRenderTarget = new THREE.WebGLCubeRenderTarget( 128, { 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 THREE.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 ]
|
||||
</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:undefined update]( [param:WebGLRenderer renderer], [param:Scene scene] )</h3>
|
||||
<p>
|
||||
renderer -- عارض WebGL الحالي <br />
|
||||
scene -- المشهد الحالي
|
||||
</p>
|
||||
<p>
|
||||
استدعاء هذا لتحديث [page:CubeCamera.renderTarget renderTarget].
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,141 @@
|
||||
<!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] → [page:Camera] →
|
||||
|
||||
<h1>[name]</h1>
|
||||
<p class="desc">
|
||||
كاميرا تستخدم
|
||||
[link:https://en.wikipedia.org/wiki/Orthographic_projection الإسقاط المجسمي].<br /><br />
|
||||
|
||||
في هذا النمط من الإسقاط، يبقى حجم الجسم
|
||||
ثابتاً في الصورة المُرسَمَة بغض النظر عن مسافته من الكاميرا.<br /><br />
|
||||
|
||||
يمكن أن يكون هذا مفيداً لتصوير المشاهد ثنائية الأبعاد وعناصر واجهة المستخدم، وغيرها من
|
||||
الأشياء.
|
||||
</p>
|
||||
|
||||
<h2>مثال للكود</h2>
|
||||
<code>
|
||||
const 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_shadowmap shadowmap ]
|
||||
</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
<h3>[name]( [param:Number left], [param:Number right], [param:Number top], [param:Number bottom], [param:Number near], [param:Number far] )</h3>
|
||||
<p>
|
||||
left — سطح الهرم الأيسر.<br />
|
||||
right — سطح الهرم الأيمن.<br />
|
||||
top — سطح الهرم العلوي.<br />
|
||||
bottom — سطح الهرم السفلي.<br />
|
||||
near — سطح الهرم الأمامي.<br />
|
||||
far — سطح الهرم الخلفي.<br /><br />
|
||||
|
||||
معًا، تحدد هذه العناصر هرم العرض للكاميرا.
|
||||
[link:https://en.wikipedia.org/wiki/Viewing_frustum هرم الرؤية].
|
||||
</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
<p>
|
||||
انظر إلى صفحة [page:Camera] الأساسية للحصول على الخصائص الشائعة.<br />
|
||||
يرجى ملاحظة أنه بعد إجراء تغييرات على معظم هذه الخصائص، يجب عليك استدعاء
|
||||
[page:OrthographicCamera.updateProjectionMatrix .updateProjectionMatrix]
|
||||
لجعل التغييرات سارية المفعول.
|
||||
</p>
|
||||
|
||||
<h3>[property:Float bottom]</h3>
|
||||
<p>سطح الهرم السفلي للكاميرا.</p>
|
||||
|
||||
<h3>[property:Float far]</h3>
|
||||
<p>
|
||||
سطح الهرم الخلفي للكاميرا. العدد الافتراضي هو `2000`.<br /><br />
|
||||
يجب أن يكون أكبر من القيمة الحالية لسطح الهرم الأمامي [page:.near near].
|
||||
</p>
|
||||
|
||||
<h3>[property:Boolean isOrthographicCamera]</h3>
|
||||
<p>علامة للقراءة فقط للتحقق مما إذا كان الكائن المعطى من النوع [name].</p>
|
||||
|
||||
<h3>[property:Float left]</h3>
|
||||
<p>سطح الهرم الأيسر للكاميرا.</p>
|
||||
|
||||
<h3>[property:Float near]</h3>
|
||||
<p>
|
||||
سطح الهرم الأمامي للكاميرا. العدد الافتراضي هو `0.1`.<br /><br />
|
||||
النطاق الصحيح هو بين `0` وقيمة الهرم الخلفي [page:.far far]. يرجى ملاحظة أنه، على عكس الـ [page:PerspectiveCamera]،
|
||||
يمثل الصفر قيمة صالحة لسطح الهرم الأمامي في OrthographicCamera.
|
||||
</p>
|
||||
|
||||
<h3>[property:Float right]</h3>
|
||||
<p>سطح الهرم الأيمن للكاميرا.</p>
|
||||
|
||||
<h3>[property:Float top]</h3>
|
||||
<p>سطح الهرم العلوي للكاميرا.</p>
|
||||
|
||||
<h3>[property:Object view]</h3>
|
||||
<p>
|
||||
`يتم تعيينها بواسطة [page:OrthographicCamera.setViewOffset setViewOffset]. العدد الافتراضي هو
|
||||
`null`.
|
||||
</p>
|
||||
|
||||
<h3>[property:number zoom]</h3>
|
||||
<p>تُستخدم للحصول على قيمة عامل التكبير أو تعيينها للكاميرا. العدد الافتراضي هو `1`</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
<p>راجع صفحة [page:Camera] الأساسية للحصول على الأساليب الشائعة.</p>
|
||||
|
||||
<h3>[method:undefined setViewOffset]( [param:Float fullWidth], [param:Float fullHeight], [param:Float x], [param:Float y], [param:Float width], [param:Float height] )</h3>
|
||||
<p>
|
||||
fullWidth — العرض الكامل لإعداد العرض المتعدد.<br />
|
||||
fullHeight — الارتفاع الكامل لإعداد العرض المتعدد.<br />
|
||||
x — الإزاحة الأفقية للكاميرا الفرعية.<br />
|
||||
y — الإزاحة العمودية للكاميرا الفرعية.<br />
|
||||
width — عرض الكاميرا الفرعية.<br />
|
||||
height — ارتفاع الكاميرا الفرعية.<br /><br />
|
||||
|
||||
يُعيّن إزاحة في
|
||||
[link:https://en.wikipedia.org/wiki/Viewing_frustum هرم الرؤية]
|
||||
أكبر. هذا مفيد لإعدادات النوافذ المتعددة أو إعدادات الشاشات / الأجهزة المتعددة.
|
||||
لمثال حول كيفية استخدامها، انظر [page:PerspectiveCamera.setViewOffset PerspectiveCamera].
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined clearViewOffset]()</h3>
|
||||
<p>تزيل أي إزاحة تم تعيينها بواسطة طريقة .setViewOffset.</p>
|
||||
|
||||
<h3>[method:undefined updateProjectionMatrix]()</h3>
|
||||
<p>
|
||||
تحديث مصفوفة إسقاط الكاميرا. يجب استدعاؤها بعد أي تغيير في
|
||||
المعلمات.
|
||||
</p>
|
||||
|
||||
<h3>[method:Object toJSON]([param:Object meta])</h3>
|
||||
<p>
|
||||
meta -- كائن يحتوي على بيانات وصفية مثل الخامات أو الصور في الأجزاء
|
||||
الفرعية للكائنات.<br />
|
||||
تحويل الكاميرا إلى تنسيق three.js
|
||||
[link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene]
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,219 @@
|
||||
!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] → [page:Camera] →
|
||||
|
||||
<h1>[name]</h1>
|
||||
<p class="desc">
|
||||
كاميرا تستخدم تصوير منظوري
|
||||
[link:https://en.wikipedia.org/wiki/Perspective_(graphical) Perspective Projection].
|
||||
تم تصميم هذا الوضع لمحاكاة الطريقة التي يرى بها العين البشرية.
|
||||
وهو أكثر أنماط التصوير استخدامًا لإظهار مشهد ثلاثي الأبعاد.
|
||||
</p>
|
||||
|
||||
<h2>مثال للكود</h2>
|
||||
|
||||
<code>
|
||||
const 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>
|
||||
|
||||
<h3>[name]( [param:Number fov], [param:Number aspect], [param:Number near], [param:Number far] )</h3>
|
||||
<p>
|
||||
fov — زاوية مجال الرؤية الرأسية للكاميرا.<br />
|
||||
aspect — نسبة العرض إلى الارتفاع للكاميرا.<br />
|
||||
near — سطح الهرم الأمامي للكاميرا.<br />
|
||||
far — سطح الهرم الخلفي للكاميرا.<br /><br />
|
||||
معًا، يحدد هذه العناصر هرم الرؤية للكاميرا.
|
||||
[link:https://en.wikipedia.org/wiki/Viewing_frustum هرم الرؤية]
|
||||
</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
<p>
|
||||
يرجى الرجوع إلى صفحة [page:Camera] الأساسية للحصول على الخصائص الشائعة.<br />
|
||||
يرجى ملاحظة أنه بعد إجراء تغييرات على معظم هذه الخصائص، ستحتاج
|
||||
إلى استدعاء [page:PerspectiveCamera.updateProjectionMatrix .updateProjectionMatrix] لجعل التغييرات سارية المفعول.
|
||||
</p>
|
||||
|
||||
<h3>[property:Float aspect]</h3>
|
||||
<p>
|
||||
نسبة العرض إلى الارتفاع لسطح الهرم الرؤية (frustum) للكاميرا، وعادةً ما يكون العرض الخاص باللوحة السينمائية / الشاشة مقسومًا على ارتفاعها.
|
||||
العدد الافتراضي هو `1` (لوحة سينمائية مربعة).
|
||||
</p>
|
||||
|
||||
<h3>[property:Float far]</h3>
|
||||
<p>
|
||||
سطح الهرم الخلفي لسطح الرؤية (frustum) للكاميرا. العدد الافتراضي هو `2000`.<br /><br />
|
||||
يجب أن يكون أكبر من القيمة الحالية لسطح الهرم الأمامي [page:.near near].
|
||||
</p>
|
||||
|
||||
<h3>[property:Float filmGauge]</h3>
|
||||
<p>
|
||||
حجم الفيلم المستخدم للمحور الأكبر. العدد الافتراضي هو 35 (ملم).
|
||||
لا يؤثر هذا المعلم على مصفوفة الإسقاط إلا إذا تم تعيين
|
||||
.filmOffset إلى قيمة غير صفر.
|
||||
</p>
|
||||
|
||||
<h3>[property:Float filmOffset]</h3>
|
||||
<p>
|
||||
الإزاحة الأفقية غير المركزة في نفس وحدة `.filmGauge`. العدد الافتراضي هو
|
||||
`0`.
|
||||
</p>
|
||||
|
||||
<h3>[property:Float focus]</h3>
|
||||
<p>
|
||||
مسافة الكائن المستخدمة لتحقيق تأثيرات الإسقاط المتزامن والعمق الحقيقي.
|
||||
هذا المعلم لا يؤثر على مصفوفة الإسقاط إلا إذا تم استخدام [page:StereoCamera].
|
||||
العدد الافتراضي هو `10`.
|
||||
</p>
|
||||
|
||||
<h3>[property:Float fov]</h3>
|
||||
<p>
|
||||
زاوية مجال الرؤية الرأسية لسطح الهرم الرؤية (frustum) للكاميرا، من أسفل الرؤية إلى أعلى الرؤية، بالدرجات.
|
||||
العدد الافتراضي هو `50`.
|
||||
</p>
|
||||
|
||||
<h3>[property:Boolean isPerspectiveCamera]</h3>
|
||||
<p>علامة تحقق للتحقق مما إذا كان الكائن المعطى من نوع [name]. هذه العلامة لا يمكن تعديلها.</p>
|
||||
|
||||
<h3>[property:Float near]</h3>
|
||||
<p>
|
||||
سطح الهرم الأمامي لسطح الرؤية (frustum) للكاميرا.
|
||||
العدد الافتراضي هو `0.1`.<br /><br />
|
||||
النطاق الصحيح هو أكبر من `0` وأقل من القيمة الحالية لسطح الهرم الخلفي [page:.far far].
|
||||
يرجى ملاحظة أنه، على عكس الكاميرا المسطحة
|
||||
[page:OrthographicCamera]، القيمة `0` ليست قيمة صالحة لسطح الهرم الأمامي لكاميرا من نوع PerspectiveCamera.
|
||||
</p>
|
||||
|
||||
<h3>[property:Object view]</h3>
|
||||
<p>
|
||||
مواصفات نافذة هرم الرؤية (frustum) أو `null`.
|
||||
يتم تعيين هذا باستخدام طريقة [page:PerspectiveCamera.setViewOffset .setViewOffset]
|
||||
ويتم مسحها باستخدام [page:PerspectiveCamera.clearViewOffset .clearViewOffset].
|
||||
</p>
|
||||
|
||||
<h3>[property:number zoom]</h3>
|
||||
<p>يتم الحصول على قيمة عامل التكبير أو تعيينها للكاميرا. العدد الافتراضي هو `1`.</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
<p>يرجى الرجوع إلى صفحة [page:Camera] الأساسية للحصول على الأساليب الشائعة.</p>
|
||||
|
||||
<h3>[method:undefined clearViewOffset]()</h3>
|
||||
<p>تزيل أي إزاحة تم تعيينها باستخدام طريقة [page:PerspectiveCamera.setViewOffset .setViewOffset].</p>
|
||||
|
||||
<h3>[method:Float getEffectiveFOV]()</h3>
|
||||
<p>تُرجع زاوية مجال الرؤية الرأسية الحالية بالدرجات باعتبار .zoom.</p>
|
||||
|
||||
<h3>[method:Float getFilmHeight]()</h3>
|
||||
<p>
|
||||
تُرجع ارتفاع الصورة على الفيلم. إذا كان
|
||||
.aspect أقل من الواحد (تنسيق صورة عمودي)، فإن النتيجة تساوي .filmGauge.
|
||||
</p>
|
||||
|
||||
<h3>[method:Float getFilmWidth]()</h3>
|
||||
<p>
|
||||
تُرجع عرض الصورة على الفيلم. إذا كان
|
||||
.aspect أكبر من أو يساوي الواحد (تنسيق صورة أفقي)، فإن النتيجة تساوي .filmGauge.
|
||||
</p>
|
||||
|
||||
<h3>[method:Float getFocalLength]()</h3>
|
||||
<p>
|
||||
تُرجع البعد البؤري للـ .fov الحالي بالنسبة لـ .filmGauge.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined setFocalLength]( [param:Float focalLength] )</h3>
|
||||
<p>
|
||||
يتم تعيين الـ FOV بواسطة البعد البؤري بالنسبة لـ
|
||||
.filmGauge الحالي لـ[page:PerspectiveCamera].<br /><br />
|
||||
بشكل افتراضي، يتم تحديد البعد البؤري للكاميرا بحجم 35 مم (إطار كامل).
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined setViewOffset]( [param:Float fullWidth], [param:Float fullHeight], [param:Float x], [param:Float y], [param:Float width], [param:Float height] )</h3>
|
||||
<p>
|
||||
fullWidth — العرض الكامل لإعداد العرض المتعدد<br />
|
||||
fullHeight — الارتفاع الكامل لإعداد العرض المتعدد<br />
|
||||
x — الإزاحة الأفقية للكاميرا الفرعية<br />
|
||||
y — الإزاحة الرأسية للكاميرا الفرعية<br />
|
||||
width — عرض الكاميرا الفرعية<br />
|
||||
height — ارتفاع الكاميرا الفرعية
|
||||
</p>
|
||||
|
||||
<p>
|
||||
يضبط الإزاحة في هرم الرؤية الأكبر.
|
||||
هذا مفيد لإعدادات النوافذ المتعددة أو إعدادات متعددة الشاشات/الأجهزة.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
على سبيل المثال، إذا كان لديك 3x2 شاشة
|
||||
وكانت كل شاشة 1920x1080 وكانت الشاشات في شبكة مثل هذه:<br />
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
+---+---+---+
|
||||
| A | B | C |
|
||||
+---+---+---+
|
||||
| D | E | F |
|
||||
+---+---+---+
|
||||
</pre>
|
||||
|
||||
فمن أجل كل شاشة، ستقوم بالاستدعاء بهذا الشكل:<br />
|
||||
|
||||
<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 );
|
||||
// B
|
||||
camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );
|
||||
// C
|
||||
camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );
|
||||
// D
|
||||
camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );
|
||||
// E
|
||||
camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );
|
||||
// F
|
||||
camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );
|
||||
</code>
|
||||
|
||||
<p>يرجى ملاحظة أنه لا يوجد سبب لأن تكون الشاشات بحجم متساوٍ أو متوضعة على شكل شبكة. يمكن توزيعها بأي شكل يناسب الاحتياجات المحددة.</p>
|
||||
|
||||
<h3>[method:undefined updateProjectionMatrix]()</h3>
|
||||
<p>
|
||||
يقوم بتحديث مصفوفة الإسقاط الخاصة بالكاميرا، ويجب استدعاءها بعد أي تغيير في
|
||||
المعاملات.
|
||||
</p>
|
||||
|
||||
<h3>[method:Object toJSON]([param:Object meta])</h3>
|
||||
<p>
|
||||
meta -- كائن يحتوي على بيانات وصفية مثل القوام أو الصور في الكائنات
|
||||
الفرعية.<br />
|
||||
يمكن تحويل الكاميرا إلى تنسيق three.js
|
||||
[link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,59 @@
|
||||
<!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">
|
||||
كاميرات بتأثير مزدوج [page:PerspectiveCamera] تستخدم لتحقيق تأثيرات مثل
|
||||
[link:https://en.wikipedia.org/wiki/Anaglyph_3D 3D Anaglyph] أو
|
||||
[link:https://en.wikipedia.org/wiki/parallax_barrier Parallax Barrier].
|
||||
</p>
|
||||
|
||||
<h2>أمثلة (Examples)</h2>
|
||||
<p>
|
||||
[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>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
|
||||
<h3>[property:Float aspect]</h3>
|
||||
<p>العدد الافتراضي هو `1`.</p>
|
||||
|
||||
<h3>[property:Float eyeSep]</h3>
|
||||
<p>العدد الافتراضي هو `0.064`.</p>
|
||||
|
||||
<h3>[property:PerspectiveCamera cameraL]</h3>
|
||||
<p>
|
||||
الكاميرا اليسرى. يتم إضافتها إلى [page:Layers layer 1] - يجب أن يتم إضافة الكائنات التي يتم عرضها
|
||||
بالكاميرا اليسرى إلى هذه الطبقة أيضًا.
|
||||
</p>
|
||||
|
||||
<h3>[property:PerspectiveCamera cameraR]</h3>
|
||||
<p>
|
||||
الكاميرا اليمنى. يتم إضافتها إلى [page:Layers layer 2] - يجب أن يتم إضافة الكائنات التي يتم عرضها
|
||||
بالكاميرا اليمنى إلى هذه الطبقة أيضًا.
|
||||
</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>[method:undefined update]( [param:PerspectiveCamera camera] )</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>
|
@ -0,0 +1,46 @@
|
||||
<!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>Animation Constants</h1>
|
||||
|
||||
<h2>وضعيات التكرار (Loop Modes)</h2>
|
||||
|
||||
<code>
|
||||
THREE.LoopOnce
|
||||
THREE.LoopRepeat
|
||||
THREE.LoopPingPong
|
||||
</code>
|
||||
|
||||
<h2>وضعيات التداخل (Interpolation Modes)</h2>
|
||||
<code>
|
||||
THREE.InterpolateDiscrete
|
||||
THREE.InterpolateLinear
|
||||
THREE.InterpolateSmooth
|
||||
</code>
|
||||
|
||||
<h2>وضعيات النهاية (Ending Modes)</h2>
|
||||
<code>
|
||||
THREE.ZeroCurvatureEnding
|
||||
THREE.ZeroSlopeEnding
|
||||
THREE.WrapAroundEnding
|
||||
</code>
|
||||
|
||||
<h2>وضعيات الدمج للرسوم المتحركة (Animation Blend Modes)</h2>
|
||||
<code>
|
||||
THREE.NormalAnimationBlendMode
|
||||
THREE.AdditiveAnimationBlendMode
|
||||
</code>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,52 @@
|
||||
<!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>ثوابت استخدام بيانات الذاكرة المؤقتة (Buffer Attribute Usage Constants)</h1>
|
||||
|
||||
<p>
|
||||
يمكن استخدام الثوابت التي تحدد طريقة استخدام بيانات الذاكرة المؤقتة للهيكل الهندسي لتعطي تلميحاً لواجهة برمجة التطبيقات API بشأن كيفية استخدام بيانات الذاكرة المؤقتة لتحسين الأداء.
|
||||
</p>
|
||||
|
||||
<h2>مثال للكود</h2>
|
||||
|
||||
<code>
|
||||
const geometry = new THREE.BufferGeometry();
|
||||
const positionAttribute = new THREE.BufferAttribute( array, 3 , false );
|
||||
positionAttribute.setUsage( THREE.DynamicDrawUsage );
|
||||
geometry.setAttribute( 'position', positionAttribute );
|
||||
</code>
|
||||
|
||||
<h2>أمثلة (Examples)</h2>
|
||||
<p>[example:webgl_buffergeometry_drawrange materials / buffergeometry / drawrange ]</p>
|
||||
|
||||
<h2>استخدام الهيكل الهندسي</h2>
|
||||
<code>
|
||||
THREE.StaticDrawUsage
|
||||
THREE.DynamicDrawUsage
|
||||
THREE.StreamDrawUsage
|
||||
|
||||
THREE.StaticReadUsage
|
||||
THREE.DynamicReadUsage
|
||||
THREE.StreamReadUsage
|
||||
|
||||
THREE.StaticCopyUsage
|
||||
THREE.DynamicCopyUsage
|
||||
THREE.StreamCopyUsage
|
||||
</code>
|
||||
|
||||
للحصول على معلومات أكثر تفصيلاً حول كل هذه الثوابت، يرجى الرجوع إلى
|
||||
[link:https://www.khronos.org/opengl/wiki/Buffer_Object#Buffer_Object_Usage هذا الدليل الخاص بـ OpenGL].
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,65 @@
|
||||
<!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>الثوابت الأساسية (Core Constants)</h1>
|
||||
|
||||
<h2>رقم النسخة (Revision Number)</h2>
|
||||
|
||||
<code>
|
||||
THREE.REVISION
|
||||
</code>
|
||||
|
||||
<div id="rev">
|
||||
رقم النسخة الحالي لـ three.js هو [link:https://github.com/mrdoob/three.js/releases رقم الإصدار].
|
||||
</div>
|
||||
|
||||
<h2>مساحات الألوان (Color Spaces)</h2>
|
||||
<code>
|
||||
THREE.NoColorSpace = ""
|
||||
THREE.SRGBColorSpace = "srgb"
|
||||
THREE.LinearSRGBColorSpace = "srgb-linear"
|
||||
</code>
|
||||
<p>
|
||||
[page:NoColorSpace]ﻻ يحدد مساحة الألوان بشكل عام. ويستخدم عادة للقواميس الخاصة بالألوان المتوسطة، مثل الخرائط العادية، وخرائط التصلب، وخرائط اللمعان، وخرائط الظل، والبيانات غير اللونية الأخرى.
|
||||
</p>
|
||||
<p>
|
||||
[page:SRGBColorSpace] ("srgb") يشير إلى مساحة الألوان التي تم تعريفها بواسطة المعايير الرئيسية Rec. 709، ونقطة الأبيض D65، والوظائف اللاخطية لنقل sRGB. وهو المساحة الافتراضية للألوان في CSS، ويتم العثور عليها في العديد من الباليتات اللونية وأدوات اختيار الألوان. وعادةً ما تكون الألوان المعبر عنها بالتعبير الست عشري أو CSS في مساحة الألوان sRGB.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
[page:LinearSRGBColorSpace] ("srgb-linear") يشير إلى مساحة الألوان sRGB (أعلاه) مع وظائف نقل النقل الخطي. وهي المساحة الافتراضية للألوان في three.js، وتستخدم طوال معظم عملية العرض. وتكون مكونات RGB التي توجد في مواد three.js والشواهد (shaders) في مساحة الألوان Linear-sRGB.
|
||||
|
||||
<p>للمزيد من المعلومات حول الخلفية والاستخدام، يرجى الرجوع إلى "إدارة الألوان".</p>
|
||||
|
||||
<h2>أزرار الماوس (Mouse Buttons)</h2>
|
||||
<code>
|
||||
THREE.MOUSE.LEFT
|
||||
THREE.MOUSE.MIDDLE
|
||||
THREE.MOUSE.RIGHT
|
||||
THREE.MOUSE.ROTATE
|
||||
THREE.MOUSE.DOLLY
|
||||
THREE.MOUSE.PAN
|
||||
</code>
|
||||
<p>
|
||||
تحمل الثوابت LEFT و ROTATE نفس القيمة الأساسية. كذلك الثوابت MIDDLE و DOLLY تحملان نفس القيمة الأساسية. وتحمل الثوابت RIGHT و PAN نفس القيمة الأساسية.
|
||||
</p>
|
||||
|
||||
<h2>إجراءات اللمس (Touch Actions)</h2>
|
||||
<code>
|
||||
THREE.TOUCH.ROTATE THREE.TOUCH.PAN THREE.TOUCH.DOLLY_PAN
|
||||
THREE.TOUCH.DOLLY_ROTATE
|
||||
</code>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,68 @@
|
||||
<!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>ثوابت معادلات الدمج المخصصة (Custom Blending Equation Constants)</h1>
|
||||
|
||||
<p>
|
||||
تعمل هذه الثوابت مع جميع أنواع المواد. يتم تعيين وضع الدمج للمادة أولاً إلى THREE.CustomBlending، ثم تعيين معادلة الدمج المطلوبة وعامل المصدر وعامل الوجهة.
|
||||
</p>
|
||||
|
||||
<h2>مثال للكود</h2>
|
||||
|
||||
<code>
|
||||
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
|
||||
THREE.SubtractEquation
|
||||
THREE.ReverseSubtractEquation
|
||||
THREE.MinEquation
|
||||
THREE.MaxEquation
|
||||
</code>
|
||||
|
||||
<h2>عوامل المصدر (Source Factors)</h2>
|
||||
<code>
|
||||
THREE.ZeroFactor
|
||||
THREE.OneFactor
|
||||
THREE.SrcColorFactor
|
||||
THREE.OneMinusSrcColorFactor
|
||||
THREE.SrcAlphaFactor
|
||||
THREE.OneMinusSrcAlphaFactor
|
||||
THREE.DstAlphaFactor
|
||||
THREE.OneMinusDstAlphaFactor
|
||||
THREE.DstColorFactor
|
||||
THREE.OneMinusDstColorFactor
|
||||
THREE.SrcAlphaSaturateFactor
|
||||
</code>
|
||||
|
||||
<h2>عوامل الوجهة (Destination Factors)</h2>
|
||||
<p>
|
||||
جميع عوامل المصدر صالحة كعوامل وجهة، باستثناء
|
||||
<code>THREE.SrcAlphaSaturateFactor</code>
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,153 @@
|
||||
<!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>ثوابت المواد الخام (Material Constants)</h1>
|
||||
|
||||
<p class="desc">
|
||||
تحدد هذه الثوابت الخصائص المشتركة بين جميع أنواع المواد الخام، باستثناء عمليات تجميع القوام الخاصة التي تنطبق فقط على
|
||||
[page:MeshBasicMaterial.combine MeshBasicMaterial]،
|
||||
[page:MeshLambertMaterial.combine MeshLambertMaterial] و
|
||||
[page:MeshPhongMaterial.combine MeshPhongMaterial].<br />
|
||||
</p>
|
||||
|
||||
<h2>الجانب (Side)</h2>
|
||||
<code>
|
||||
THREE.FrontSide
|
||||
THREE.BackSide
|
||||
THREE.DoubleSide
|
||||
</code>
|
||||
|
||||
<p>
|
||||
تحدد الجانب الذي سيتم عرضه للوجوه، سواءً الوجه الأمامي، الوجه الخلفي، أو كلاهما. الإعداد الافتراضي هو الوجه الأمامي.
|
||||
</p>
|
||||
|
||||
<h2>وضعية الدمج (Blending Mode)</h2>
|
||||
<code>
|
||||
THREE.NoBlending
|
||||
THREE.NormalBlending
|
||||
THREE.AdditiveBlending
|
||||
THREE.SubtractiveBlending
|
||||
THREE.MultiplyBlending
|
||||
THREE.CustomBlending
|
||||
</code>
|
||||
|
||||
<p>
|
||||
تحكم هذه الثوابت في معادلات الدمج بين المصدر والوجهة للألوان والألفا التي يتم إرسالها من المواد إلى WebGLRenderer للاستخدام بواسطة WebGL.
|
||||
[page:Constant NormalBlending] هي الإعداد الافتراضي. ويجب تعيين [page:Constant CustomBlending] لاستخدام [page:CustomBlendingEquation Custom Blending Equations].
|
||||
راجع مثال [example:webgl_materials_blending materials / blending].
|
||||
</p>
|
||||
|
||||
<h2>وضعية العمق (Depth Mode)</h2>
|
||||
<code>
|
||||
THREE.NeverDepth
|
||||
THREE.AlwaysDepth
|
||||
THREE.EqualDepth
|
||||
THREE.LessDepth
|
||||
THREE.LessEqualDepth
|
||||
THREE.GreaterEqualDepth
|
||||
THREE.GreaterDepth
|
||||
THREE.NotEqualDepth
|
||||
</code>
|
||||
<p>
|
||||
تحدد وظيفة العمق التي تستخدمها المواد لمقارنة عمق بيكسلات الإدخال مع قيمة العمق الحالية في الذاكرة المؤقتة للعمق. إذا كانت نتيجة المقارنة صحيحة، فسيتم رسم البكسل.<br />
|
||||
[page:Materials NeverDepth] لن يتم رسم أي بكسل.<br />
|
||||
[page:Materials AlwaysDepth] سيتم رسم كل البكسلات.<br />
|
||||
[page:Materials EqualDepth] سيتم رسم البكسل إذا كان عمق البكسل المدخل مساوٍ لعمق الذاكرة المؤقتة الحالي.<br />
|
||||
[page:Materials LessDepth] سيتم رسم البكسل إذا كان عمق البكسل المدخل أقل من عمق الذاكرة المؤقتة الحالي.<br />
|
||||
[page:Materials LessEqualDepth] هي الإعداد الافتراضي وسيتم رسم البكسل إذا كان عمق البكسل المدخل أقل من أو يساوي عمق الذاكرة المؤقتة الحالي.<br />
|
||||
[page:Materials GreaterEqualDepth] سيتم رسم البكسل إذا كان عمق البكسل المدخل أكبر من أو يساوي عمق الذاكرة المؤقتة الحالي.<br />
|
||||
[page:Materials GreaterDepth] سيتم رسم البكسل إذا كان عمق البكسل المدخل أكبر من عمق الذاكرة المؤقتة الحالي.<br />
|
||||
[page:Materials NotEqualDepth] سيتم رسم البكسل إذا كان عمقالبكسل المدخل لا يساوي عمق الذاكرة المؤقتة الحالي.<br />
|
||||
</p>
|
||||
|
||||
<h2>عمليات تجميع القوام الخاصة بالقوام (Texture Combine Operations)</h2>
|
||||
<code>
|
||||
THREE.MultiplyOperation
|
||||
THREE.MixOperation
|
||||
THREE.AddOperation
|
||||
</code>
|
||||
|
||||
<p>
|
||||
تحدد هذه الثوابت كيفية دمج لون سطح الكائن مع خريطة البيئة (إذا كانت متاحة) في [page:MeshBasicMaterial.combine MeshBasicMaterial]،
|
||||
[page:MeshLambertMaterial.combine MeshLambertMaterial]
|
||||
و [page:MeshPhongMaterial.combine MeshPhongMaterial]. <br />
|
||||
[page:Constant MultiplyOperation] هي الإعداد الافتراضي وتقوم بضرب لون خريطة البيئة بلون سطح الكائن.<br />
|
||||
[page:Constant MixOperation] تستخدم معامل الانعكاسية لدمج اللونين.<br />
|
||||
[page:Constant AddOperation] تقوم بجمع اللونين.
|
||||
</p>
|
||||
|
||||
<h2>دوال القالب (Stencil Functions)</h2>
|
||||
<code>
|
||||
THREE.NeverStencilFunc
|
||||
THREE.LessStencilFunc
|
||||
THREE.EqualStencilFunc
|
||||
THREE.LessEqualStencilFunc
|
||||
THREE.GreaterStencilFunc
|
||||
THREE.NotEqualStencilFunc
|
||||
THREE.GreaterEqualStencilFunc
|
||||
THREE.AlwaysStencilFunc
|
||||
</code>
|
||||
<p>
|
||||
تحدد الدالة التي يستخدمها المادة لتحديد ما إذا كان يجب أن تنفذ عملية القالب أم لا.<br />
|
||||
[page:Materials NeverStencilFunc] لن يعود بقيمة صحيحة أبدًا.<br />
|
||||
[page:Materials LessStencilFunc] سيعود بقيمة صحيحة إذا كانت قيمة المرجع الختمية أقل من القيمة الحالية للختم.<br />
|
||||
[page:Materials EqualStencilFunc] سيعود بقيمة صحيحة إذا كانت قيمة المرجع الختمية تساوي القيمة الحالية للختم.<br />
|
||||
[page:Materials LessEqualStencilFunc] سيعود بقيمة صحيحة إذا كانت قيمة المرجع الختمية أقل من أو تساوي القيمة الحالية للختم.<br />
|
||||
[page:Materials GreaterStencilFunc] سيعود بقيمة صحيحة إذا كانت قيمة المرجع الختمية أكبر من القيمة الحالية للختم.<br />
|
||||
[page:Materials NotEqualStencilFunc] سيعود بقيمة صحيحة إذا كانت قيمة المرجع الختمية لا تساوي القيمة الحالية للختم.<br />
|
||||
[page:Materials GreaterEqualStencilFunc] سيعود بقيمة صحيحة إذا كانت قيمة المرجع الختمية أكبر من أو تساوي القيمة الحالية للختم.<br />
|
||||
[page:Materials AlwaysStencilFunc] سيعود بقيمة صحيحة دائمًا.<br />
|
||||
</p>
|
||||
|
||||
<h2>عمليات القالب (Stencil Operations)</h2>
|
||||
<code>
|
||||
THREE.ZeroStencilOp
|
||||
THREE.KeepStencilOp
|
||||
THREE.ReplaceStencilOp
|
||||
THREE.IncrementStencilOp
|
||||
THREE.DecrementStencilOp
|
||||
THREE.IncrementWrapStencilOp
|
||||
THREE.DecrementWrapStencilOp
|
||||
THREE.InvertStencilOp
|
||||
</code>
|
||||
<p>
|
||||
تحدد العملية التي ستقوم بها المادة على ختم البيكسل في الختم إذا مرت الدالة الختمية المقدمة.<br />
|
||||
[page:Materials ZeroStencilOp] سيضبط قيمة الختم على الصفر.<br />
|
||||
[page:Materials KeepStencilOp] لن يقوم بتغيير قيمة الختم الحالية.<br />
|
||||
[page:Materials ReplaceStencilOp] سيقوم بتبديل قيمة الختم بقيمة المرجع الختمية المحددة.<br />
|
||||
[page:Materials IncrementStencilOp] سيزيد قيمة الختم الحالية بمقدار `1`.<br />
|
||||
[page:Materials DecrementStencilOp] سينقص قيمة الختم الحالية بمقدار `1`.<br />
|
||||
[page:Materials IncrementWrapStencilOp] سيزيد قيمة الختم الحالية بمقدار `1`. إذا زادت القيمة بعد ذلك عن `255`، فستضبط على `0`.<br />
|
||||
[page:Materials DecrementWrapStencilOp] سينقص قيمة الختم الحالية بمقدار `1`. إذا انخفضت القيمة بعد ذلك أقل من `0`، فستضبط على `255`.<br />
|
||||
[page:Materials InvertStencilOp] سيقوم بتنفيذ عملية انعكاس بتشكيلة الختم الحالية.<br />
|
||||
</p>
|
||||
|
||||
<h2>نوع خريطة العرض الطبيعي (Normal map type)</h2>
|
||||
<code>
|
||||
THREE.TangentSpaceNormalMap
|
||||
THREE.ObjectSpaceNormalMap
|
||||
</code>
|
||||
|
||||
<p>
|
||||
تحدد نوع خريطة العرض الطبيعي. لـTangentSpaceNormalMap، المعلومات ذات الصلة بالسطح الأساسي. أما بالنسبة لـ ObjectSpaceNormalMap، المعلومات ذات الصلة باتجاه الكائن. الإعداد الافتراضي هو [page:Constant TangentSpaceNormalMap].
|
||||
</p>
|
||||
|
||||
<h2>إصدار GLSL</h2>
|
||||
<code>
|
||||
THREE.GLSL1
|
||||
THREE.GLSL3
|
||||
</code>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,72 @@
|
||||
<!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>ثوابت WebGLRenderer</h1>
|
||||
|
||||
<h2>أنماط قطع الوجه (Cull Face Modes)</h2>
|
||||
<code>
|
||||
THREE.CullFaceNone
|
||||
THREE.CullFaceBack
|
||||
THREE.CullFaceFront
|
||||
THREE.CullFaceFrontBack
|
||||
</code>
|
||||
<p>
|
||||
[page:constant CullFaceNone] تعطيل قطع الوجه.<br />
|
||||
[page:constant CullFaceBack] قطع الوجوه الخلفية (الافتراضي).<br />
|
||||
[page:constant CullFaceFront] قطع الوجوه الأمامية.<br />
|
||||
[page:constant CullFaceFrontBack] قطع كلا الوجوه الأمامية والخلفية.
|
||||
</p>
|
||||
|
||||
<h2>أنواع الظلال (Shadow Types)</h2>
|
||||
<code>
|
||||
THREE.BasicShadowMap
|
||||
THREE.PCFShadowMap
|
||||
THREE.PCFSoftShadowMap
|
||||
THREE.VSMShadowMap
|
||||
</code>
|
||||
<p>
|
||||
هذه الخيارات تحدد خاصية [page:WebGLRenderer.shadowMap.type shadowMap.type] في WebGLRenderer.<br /><br />
|
||||
[page:constant BasicShadowMap] يعطي خرائط ظل غير مصفاة - الأسرع ، ولكن الأقل جودة.<br />
|
||||
[page:constant PCFShadowMap] يصفي خرائط الظل باستخدام خوارزمية
|
||||
Percentage-Closer Filtering (PCF) (افتراضي).<br />
|
||||
[page:constant PCFSoftShadowMap] يصفي خرائط الظل باستخدام خوارزمية
|
||||
Percentage-Closer Filtering (PCF) مع أفضل الظلال الناعمة
|
||||
خاصةً عند استخدام خرائط ظل بدقة منخفضة.<br />
|
||||
[page:constant VSMShadowMap] يصفي خرائط الظل باستخدام خوارزمية Variance Shadow
|
||||
Map (VSM). عند استخدام VSMShadowMap ، سيقوم جميع مستقبلات الظل بإلقاء الظلال أيضًا.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Tone Mapping</h2>
|
||||
<code>
|
||||
THREE.NoToneMapping
|
||||
THREE.LinearToneMapping
|
||||
THREE.ReinhardToneMapping
|
||||
THREE.CineonToneMapping
|
||||
THREE.ACESFilmicToneMapping
|
||||
THREE.AgXToneMapping
|
||||
THREE.NeutralToneMapping
|
||||
THREE.CustomToneMapping
|
||||
</code>
|
||||
<p>
|
||||
هذه الخيارات تحدد خاصية [page:WebGLRenderer.toneMapping toneMapping] في WebGLRenderer. يتم استخدام هذا لتقريب مظهر نطاق الإضاءة العالي (HDR) على الوسط الذي يحتوي على نطاق إضاءة منخفض على شاشة الكمبيوتر القياسية أو شاشة الجوال.
|
||||
</p>
|
||||
<p>
|
||||
THREE.LinearToneMapping، THREE.ReinhardToneMapping، THREE.CineonToneMapping، THREE.ACESFilmicToneMapping، THREE.AgXToneMapping و THREE.NeutralToneMapping هي تنفيذات مدمجة لتقريب مظهر نطاق الإضاءة العالي (HDR). يتوقع THREE.CustomToneMapping تنفيذًا مخصصًا عن طريق تعديل شفرة GLSL لبرنامج تظليل مقطع المواد. راجع [example:webgl_tonemapping WebGL / tonemapping] مثالًا.
|
||||
</p>
|
||||
<p>
|
||||
THREE.NeutralToneMapping is an implementation based on the Khronos 3D Commerce Group standard tone mapping.
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,241 @@
|
||||
<!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">
|
||||
تخزن هذه الفئة بيانات لسمة (مثل مواضع الرأس ، ومؤشرات الوجه ، والمعايير ، والألوان ، والأشعة فوق البنفسجية ، وأي سمات مخصصة) المرتبطة
|
||||
مع [page:BufferGeometry] ، مما يسمح بتمرير البيانات بشكل أكثر كفاءة
|
||||
إلى وحدة معالجة الرسومات. انظر تلك الصفحة للحصول على التفاصيل ومثال على الاستخدام. عند العمل
|
||||
مع بيانات مثل المتجهات ، قد تكون طرق المساعد <i>.fromBufferAttribute(attribute, index)</i>
|
||||
على [page:Vector2.fromBufferAttribute Vector2]،
|
||||
[page:Vector3.fromBufferAttribute Vector3]،
|
||||
[page:Vector4.fromBufferAttribute Vector4]، و
|
||||
[page:Color.fromBufferAttribute Color] قد تكون مفيدة.
|
||||
</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
<h3>[name]([param:TypedArray array]، [param:Integer itemSize]، [param:Boolean normalized])</h3>
|
||||
<p>
|
||||
[page:TypedArray array] - يجب أن يكون
|
||||
[link:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/TypedArray TypedArray]. يستخدم لإنشاء المخزن المؤقت. <br />
|
||||
يجب أن يحتوي هذا المصفوفة على
|
||||
<code>
|
||||
itemSize * numVertices
|
||||
</code>
|
||||
عناصر ، حيث numVertices هو عدد الرؤوس في المرتبطة
|
||||
[page:BufferGemetry BufferGeometry].<br /><br />
|
||||
|
||||
[page:Integer itemSize] - عدد قيم المصفوفة التي يجب
|
||||
ترتبط برأس معين. على سبيل المثال ، إذا كانت هذه السمة هي
|
||||
تخزين متجه من 3 مكونات (مثل الموضع أو الطبيعي أو اللون) ، فإن
|
||||
itemSize يجب أن يكون 3.
|
||||
<br /><br />
|
||||
|
||||
[page:Boolean normalized] - (اختياري) ينطبق على البيانات الصحيحة فقط.
|
||||
يشير إلى كيفية تعيين البيانات الأساسية في المخزن المؤقت إلى القيم في
|
||||
كود GLSL. على سبيل المثال ، إذا كان [page:TypedArray array] هو نسخة من
|
||||
UInt16Array ، و [page:Boolean normalized] صحيحًا ، فإن القиم `0 -
|
||||
+65535` في بيانات المصفوفة ستُخرج إلى 0.0f - +1.0f في GLSL
|
||||
attribute. ستُخرج Int16Array (signed) من -32768 - +32767 إلى -1.0f
|
||||
- +1.0f. إذا كان [page:Boolean normalized] خطأً ، فستكون القيم
|
||||
تحول إلى floats دون تعديل ، أي 32767 يصبح 32767.0f.
|
||||
</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
|
||||
<h3>[property:TypedArray array]</h3>
|
||||
<p>ال[page:TypedArray array] التي تحمل البيانات المخزنة في المخزن المؤقت.</p>
|
||||
|
||||
<h3>[property:Integer count]</h3>
|
||||
<p>
|
||||
يخزن طول [page:BufferAttribute.array array] مقسومًا على
|
||||
[page:BufferAttribute.itemSize itemSize]. Read-only property.<br /><br />
|
||||
|
||||
إذا كان المخزن يخزن متجهًا من 3 مكونات (مثل الموضع أو الطبيعي أو اللون) ، فسيحسب عدد هذه المتجهات المخزنة.
|
||||
</p>
|
||||
|
||||
<h3>[property:Boolean isBufferAttribute]</h3>
|
||||
<p>علامة للقراءة فقط للتحقق مما إذا كان الكائن المعطى من نوع [name].</p>
|
||||
|
||||
<h3>[property:Integer itemSize]</h3>
|
||||
<p>
|
||||
طول المتجهات التي يتم تخزينها في
|
||||
[page:BufferAttribute.array array].
|
||||
</p>
|
||||
|
||||
<h3>[property:String name]</h3>
|
||||
<p>اسم اختياري لهذا الحدث من السمة. الافتراضي هو سلسلة فارغة.</p>
|
||||
|
||||
<h3>[property:Boolean needsUpdate]</h3>
|
||||
<p>
|
||||
علامة للإشارة إلى أن هذه السمة قد تغيرت ويجب إعادة إرسالها إلى
|
||||
وحدة معالجة الرسومات. قم بتعيين هذا على true عند تعديل قيمة المصفوفة.<br /><br />
|
||||
|
||||
تعيين هذا على true يزيد أيضًا من [page:BufferAttribute.version version].
|
||||
</p>
|
||||
|
||||
<h3>[property:Boolean normalized]</h3>
|
||||
<p>
|
||||
يشير إلى كيفية تعيين البيانات الأساسية في المخزن المؤقت إلى القيم في
|
||||
كود GLSL. راجع المُنشئ أعلاه للحصول على التفاصيل.
|
||||
</p>
|
||||
|
||||
<h3>[property:Function onUploadCallback]</h3>
|
||||
<p>
|
||||
دالة رد اتصال يتم تنفيذها بعد أن قام Renderer بنقل
|
||||
بيانات مصفوفة السمة إلى وحدة معالجة الرسومات.
|
||||
</p>
|
||||
|
||||
<h3>[property:Object updateRange]</h3>
|
||||
<p>
|
||||
كائن يحتوي على:<br />
|
||||
[page:Integer offset]: الافتراضية هي `0`. الموضع الذي يجب أن يبدأ فيه
|
||||
التحديث.<br />
|
||||
[page:Integer count]: الافتراضية هي `-1` ، وهذا يعني عدم استخدام التحديث
|
||||
المدى. <br /><br />
|
||||
|
||||
يمكن استخدام هذا لتحديث بعض مكونات المتجهات المخزنة فقط (على سبيل المثال ، فقط المكوِّن المرتبط باللون).
|
||||
</p>
|
||||
|
||||
<h3>[property:Usage usage]</h3>
|
||||
<p>
|
||||
يحدد نمط الاستخدام المقصود لمخزن البيانات لأغراض التحسين
|
||||
. يتوافق مع معلمة `usage` من
|
||||
[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData WebGLRenderingContext.bufferData](). الافتراضي هو [page:BufferAttributeUsage StaticDrawUsage]. راجع الاستخدام [page:BufferAttributeUsage constants] لجميع
|
||||
القيم الممكنة. <br /><br />
|
||||
|
||||
ملاحظة: بعد الاستخدام الأولي للمخزن المؤقت ، لا يمكن تغيير استخدامه.
|
||||
بدلاً من ذلك ، قم بإنشاء نسخة جديدة وتعيين الاستخدام المطلوب قبل التالي
|
||||
جعل.
|
||||
</p>
|
||||
|
||||
<h3>[property:Integer version]</h3>
|
||||
<p>
|
||||
رقم إصدار ، يزداد كل مرة
|
||||
[page:BufferAttribute.needsUpdate needsUpdate] يتم تعيين خاصية على true.
|
||||
</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>[method:this applyMatrix3]([param:Matrix3 m])</h3>
|
||||
<p>
|
||||
تطبق المصفوفة [page:Matrix3 m] على كل عنصر Vector3 من هذا
|
||||
BufferAttribute.
|
||||
</p>
|
||||
|
||||
<h3>[method:this applyMatrix4]([param:Matrix4 m])</h3>
|
||||
<p>
|
||||
تطبق المصفوفة [page:Matrix4 m] على كل عنصر Vector3 من هذا
|
||||
BufferAttribute.
|
||||
</p>
|
||||
|
||||
<h3>[method:this applyNormalMatrix]([param:Matrix3 m])</h3>
|
||||
<p>
|
||||
تطبق المصفوفة الطبيعية [page:Matrix3 m] على كل عنصر Vector3 من هذا
|
||||
BufferAttribute.
|
||||
</p>
|
||||
|
||||
<h3>[method:this transformDirection]([param:Matrix4 m])</h3>
|
||||
<p>
|
||||
تطبق المصفوفة [page:Matrix4 m] على كل عنصر Vector3 من هذا
|
||||
BufferAttribute ، مع تفسير العناصر كمتجهات اتجاه.
|
||||
</p>
|
||||
|
||||
<h3>[method:BufferAttribute clone]()</h3>
|
||||
<p>إرجاع نسخة من هذه bufferAttribute.</p>
|
||||
|
||||
<h3>[method:this copy]([param:BufferAttribute bufferAttribute])</h3>
|
||||
<p>ينسخ BufferAttribute آخر إلى هذه BufferAttribute.</p>
|
||||
|
||||
<h3>[method:this copyArray](array)</h3>
|
||||
<p>
|
||||
انسخ المصفوفة المعطاة هنا (والتي يمكن أن تكون مصفوفة عادية أو TypedArray) إلى
|
||||
[page:BufferAttribute.array array].<br /><br />
|
||||
|
||||
انظر
|
||||
[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set TypedArray.set] للحصول على ملاحظات حول المتطلبات إذا كان يتم نسخ TypedArray.
|
||||
</p>
|
||||
|
||||
<h3>[method:this copyAt]([param:Integer index1]، [param:BufferAttribute bufferAttribute]، [param:Integer index2])</h3>
|
||||
<p>انسخ متجهًا من bufferAttribute[index2] إلى [page:BufferAttribute.array array][index1].</p>
|
||||
|
||||
<h3>[method:Number getComponent]( [param:Integer index], [param:Integer component] ) </h3>
|
||||
<p>Returns the given component of the vector at the given index.</p>
|
||||
|
||||
<h3>[method:Number getX]([param:Integer index])</h3>
|
||||
<p>يعيد مكون x من المتجه في المؤشر المحدد.</p>
|
||||
|
||||
<h3>[method:Number getY]([param:Integer index])</h3>
|
||||
<p>يعيد مكون y من المتجه في المؤشر المحدد.</p>
|
||||
|
||||
<h3>[method:Number getZ]([param:Integer index])</h3>
|
||||
<p>يعيد مكون z من المتجه في المؤشر المحدد.</p>
|
||||
|
||||
<h3>[method:Number getW]([param:Integer index])</h3>
|
||||
<p>يعيد مكون w من المتجه في المؤشر المحدد.</p>
|
||||
|
||||
<h3>[method:this onUpload]([param:Function callback])</h3>
|
||||
<p>
|
||||
يضع قيمة خاصية onUploadCallback.<br /><br />
|
||||
|
||||
في [example:webgl_buffergeometry WebGL / Buffergeometry] يتم استخدام هذا
|
||||
لتحرير الذاكرة بعد نقل المخزن إلى وحدة معالجة الرسومات.
|
||||
</p>
|
||||
|
||||
<h3>[method:this set]([param:Array value]، [param:Integer offset])</h3>
|
||||
<p>
|
||||
value - [page:Array] أو [page:TypedArray] لنسخ القيم منه.
|
||||
<br />
|
||||
offset - (اختياري) فهرس [page:BufferAttribute.array array] في
|
||||
الذي يجب البدء في النسخ.<br /><br />
|
||||
|
||||
المكالمات
|
||||
[link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set TypedArray.set]([page:Array value]، [page:Integer offset]) على
|
||||
[page:BufferAttribute.array array].<br /><br />
|
||||
|
||||
على وجه الخصوص ، انظر تلك الصفحة للحصول على متطلبات [page:Array value] كونها
|
||||
[page:TypedArray].
|
||||
</p>
|
||||
|
||||
<h3>[method:this setUsage]([param:Usage value])</h3>
|
||||
<p>
|
||||
قم بتعيين [page:BufferAttribute.usage usage] إلى value. راجع الاستخدام
|
||||
[page:BufferAttributeUsage constants] لجميع قيم الإدخال الممكنة.
|
||||
<br /><br />
|
||||
|
||||
ملاحظة: بعد الاستخدام الأولي للمخزن المؤقت ، لا يمكن تغيير استخدامه.
|
||||
بدلاً من ذلك ، قم بإنشاء نسخة جديدة وتعيين الاستخدام المطلوب قبل التالي
|
||||
جعل.
|
||||
</p>
|
||||
|
||||
<h3>[method:Number setComponent]( [param:Integer index], [param:Integer component], [param:Float value] ) </h3>
|
||||
<p>Sets the given component of the vector at the given index.</p>
|
||||
|
||||
<h3>[method:this setX]([param:Integer index], [param:Float x])</h3>
|
||||
<p>تضبط مكون x من المتجه في المؤشر المحدد.</p>
|
||||
|
||||
<h3>[method:this setY]([param:Integer index], [param:Float y])</h3>
|
||||
<p>تضبط مكون y من المتجه في المؤشر المحدد.</p>
|
||||
|
||||
<h3>[method:this setZ]([param:Integer index], [param:Float z])</h3>
|
||||
<p>تضبط مكون z من المتجه في المؤشر المحدد.</p>
|
||||
|
||||
<h3>[method:this setW]([param:Integer index], [param:Float w])</h3>
|
||||
<p>تضبط مكون w من المتجه في المؤشر المحдد.</p>
|
||||
|
||||
<h3>[method:this setXY]([param:Integer index], [param:Float x], [param:Float y])</h3>
|
||||
<p>تضبط مكونات x و y من المتجه في
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,366 @@
|
||||
<!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>
|
||||
تمثيل شبكة ، خط ، أو هندسة نقطية. يتضمن مواقع الرأس ، ومؤشرات الوجه ، والمعايير ، والألوان ، والأشعة فوق البنفسجية ، والسمات المخصصة
|
||||
داخل المخازن المؤقتة ، مما يقلل من تكلفة تمرير كل هذه البيانات إلى وحدة معالجة الرسومات.
|
||||
</p>
|
||||
<p>
|
||||
لقراءة وتحرير البيانات في سمات BufferGeometry ، راجع
|
||||
[page:BufferAttribute] التوثيق.
|
||||
</p>
|
||||
|
||||
<h2>مثال للكود</h2>
|
||||
|
||||
<code>
|
||||
const geometry = new THREE.BufferGeometry();
|
||||
|
||||
// إنشاء شكل مربع بسيط. نحن نكرر الأعلى الأيسر والأسفل الأيمن
|
||||
// الرؤوس لأن كل رأس يحتاج إلى الظهور مرة واحدة لكل مثلث.
|
||||
const vertices = new Float32Array( [
|
||||
-1.0, -1.0, 1.0, // v0
|
||||
1.0, -1.0, 1.0, // v1
|
||||
1.0, 1.0, 1.0, // v2
|
||||
|
||||
1.0, 1.0, 1.0, // v3
|
||||
-1.0, 1.0, 1.0, // v4
|
||||
-1.0, -1.0, 1.0 // v5
|
||||
] );
|
||||
|
||||
// itemSize = 3 لأنه يوجد 3 قيم (مكونات) لكل رأس
|
||||
geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
|
||||
const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
|
||||
const mesh = new THREE.Mesh( geometry, material );
|
||||
</code>
|
||||
|
||||
<h2>مثال للكود (Index)</h2>
|
||||
|
||||
<code>
|
||||
const geometry = new THREE.BufferGeometry();
|
||||
|
||||
const vertices = new Float32Array( [
|
||||
-1.0, -1.0, 1.0, // v0
|
||||
1.0, -1.0, 1.0, // v1
|
||||
1.0, 1.0, 1.0, // v2
|
||||
-1.0, 1.0, 1.0, // v3
|
||||
] );
|
||||
|
||||
const indices = [
|
||||
0, 1, 2,
|
||||
2, 3, 0,
|
||||
];
|
||||
|
||||
geometry.setIndex( indices );
|
||||
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 شبكة بوجوه غير مفهرسة]<br />
|
||||
[example:webgl_buffergeometry_indexed شبكة بوجوه مفهرسة]<br />
|
||||
[example:webgl_buffergeometry_lines خطوط]<br />
|
||||
[example:webgl_buffergeometry_lines_indexed خطوط مفهرسة]<br />
|
||||
[example:webgl_buffergeometry_custom_attributes_particles جزيئات]<br />
|
||||
[example:webgl_buffergeometry_rawshader محركات الظل الخام]
|
||||
</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
|
||||
<h3>[name]()</h3>
|
||||
<div>
|
||||
ينشئ هذا [name] جديدًا. كما يضبط العديد من الخصائص على قيمة افتراضية
|
||||
قيمة.
|
||||
</div>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
|
||||
<h3>[property:Object attributes]</h3>
|
||||
<p>
|
||||
يحتوي هذا الخريطة القائمة على الهوية على اسم السمة المراد تعيينها وكقيمة
|
||||
[page:BufferAttribute buffer] لتعيينه. بدلاً من الوصول إلى هذا
|
||||
الملكية مباشرة ، استخدم [page:.setAttribute] و [page:.getAttribute] ل
|
||||
الوصول إلى سمات هذه الهندسة.
|
||||
</p>
|
||||
|
||||
<h3>[property:Box3 boundingBox]</h3>
|
||||
<p>
|
||||
مربع التحديد لـ bufferGeometry ، والذي يمكن حسابه بـ
|
||||
[page:.computeBoundingBox](). الافتراضي هو `null`.
|
||||
</p>
|
||||
|
||||
<h3>[property:Sphere boundingSphere]</h3>
|
||||
<p>
|
||||
كرة التحديد لـ bufferGeometry ، والتي يمكن حسابها بـ
|
||||
[page:.computeBoundingSphere](). الافتراضي هو `null`.
|
||||
</p>
|
||||
|
||||
<h3>[property:Object drawRange]</h3>
|
||||
<p>
|
||||
يحدد جزء الهندسة المراد عرضه. يجب عدم تعيين هذا
|
||||
مباشرة ، بدلاً من ذلك استخدم [page:.setDrawRange]. الافتراضي هو
|
||||
<code>
|
||||
{ start: 0, count: Infinity }
|
||||
</code>
|
||||
بالنسبة لـ BufferGeometry غير المفهرس ، count هو عدد القمم التي يتم عرضها.
|
||||
بالنسبة لـ BufferGeometry المفهرس ، count هو عدد المؤشرات التي يتم عرضها.
|
||||
</p>
|
||||
|
||||
<h3>[property:Array groups]</h3>
|
||||
|
||||
<p>
|
||||
قسم الهندسة إلى مجموعات ، كل منها سيتم عرضه في
|
||||
مكالمة WebGL رسم منفصلة. هذا يسمح باستخدام مجموعة من المواد
|
||||
مع الهندسة. <br /> <br />
|
||||
|
||||
كل مجموعة هي كائن من الشكل:
|
||||
<code>
|
||||
{ start: Integer, count: Integer, materialIndex: Integer }
|
||||
</code>
|
||||
حيث يحدد start العنصر الأول في هذه المكالمة - الأول
|
||||
رأس للهندسة غير المفهرسة ، وإلا فإن المثلث الأول فهرس. عد
|
||||
يحدد كم عدد القمم (أو المؤشرات) المضمنة ، و materialIndex
|
||||
يحدد فهرس مجموعة المواد للاستخدام. <br /> <br />
|
||||
|
||||
استخدم [page:.addGroup] لإضافة مجموعات ، بدلاً من تعديل هذا المصفوفة
|
||||
مباشرة. <br /> <br />
|
||||
|
||||
يجب أن ينتمي كل رأس وفهرس إلى مجموعة واحدة فقط - يجب ألا تشترك المجموعات
|
||||
قمم أو مؤشرات ، ويجب ألا تترك القمم أو المؤشرات غير المستخدمة.
|
||||
</p>
|
||||
|
||||
<!-- ملاحظة: كانت المجموعات تسمى drawCalls
|
||||
|
||||
<h3>[property:Array drawcalls]</h3>
|
||||
<p>
|
||||
بالنسبة للهندسات التي تستخدم المثلثات المفهرسة ، يمكن استخدام هذا المصفوفة لتقسيم الكائن
|
||||
إلى عدة مكالمات رسم WebGL. سترسم كل مكالمة رسم بعض الفئات الفرعية من القمم
|
||||
في هذه الهندسة باستخدام [page:Material shader] المكون. قد يكون هذا ضروريًا إذا ،
|
||||
على سبيل المثال ، لديك أكثر من 65535 رأسًا في كائنك.
|
||||
</p> -->
|
||||
|
||||
<h3>[property:Integer id]</h3>
|
||||
<p>رقم فريد لهذا الحال bufferGeometry.</p>
|
||||
|
||||
<h3>[property:BufferAttribute index]</h3>
|
||||
<p>
|
||||
يتيح إعادة استخدام القمم عبر مثلثات متعددة ؛ هذا هو
|
||||
يسمى باستخدام "المثلثات المفهرسة". يرتبط كل مثلث بـ
|
||||
مؤشرات ثلاث قمم. لذلك تخزن هذه السمة فهرس
|
||||
كل رأس لكل وجه ثلاثي الأضلاع. إذا لم يتم تعيين هذه السمة ، فإن
|
||||
[page:WebGLRenderer renderer] يفترض أن كل ثلاثة مواقع متجاورة
|
||||
تمثل مثلثًا واحدًا. الافتراضي هو `null`.
|
||||
</p>
|
||||
|
||||
<h3>[property:Boolean isBufferGeometry]</h3>
|
||||
<p>علامة للقراءة فقط للتحقق مما إذا كان الكائن المحدد من نوع [name].</p>
|
||||
|
||||
<h3>[property:Object morphAttributes]</h3>
|
||||
<p>
|
||||
خريطة قائمة على [page:BufferAttribute]s التي تحمل تفاصيل هندسة المورف
|
||||
الأهداف. <br />
|
||||
ملاحظة: بمجرد عرض الهندسة ، لا يمكن تغيير بيانات سمة المورف
|
||||
يتغير. سيتعين عليك الاتصال [page:.dispose]() ، وإنشاء جديد
|
||||
نسخة من [name].
|
||||
</p>
|
||||
|
||||
<h3>[property:Boolean morphTargetsRelative]</h3>
|
||||
<p>
|
||||
يستخدم للتحكم في سلوك هدف المورف ؛ عند تعيينه على true ، المورف
|
||||
يتم التعامل مع بيانات الهدف كإزاحات نسبية ، بدلاً من كـ
|
||||
المواقع / المعايير المطلقة. الافتراضي هو `false`.
|
||||
</p>
|
||||
|
||||
<h3>[property:String name]</h3>
|
||||
<p>
|
||||
اسم اختياري لهذه الحالة bufferGeometry. الافتراضي هو فارغ
|
||||
سلسلة.
|
||||
</p>
|
||||
|
||||
<h3>[property:Object userData]</h3>
|
||||
<p>
|
||||
كائن يمكن استخدامه لتخزين بيانات مخصصة حول BufferGeometry.
|
||||
يجب ألا يحتوي على مراجع للوظائف حيث لن يتم استنساخها.
|
||||
</p>
|
||||
|
||||
<h3>[property:String uuid]</h3>
|
||||
<p>
|
||||
[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] من
|
||||
هذه الحالة كائن. يتم تعيين هذا تلقائيًا ولا يجب أن يكون
|
||||
تحرير.
|
||||
</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<p>
|
||||
[page:EventDispatcher EventDispatcher] الطرق متوفرة على هذا
|
||||
صف.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined addGroup]([param:Integer start]، [param:Integer count]، [param:Integer materialIndex])</h3>
|
||||
<p>
|
||||
يضيف مجموعة إلى هذه الهندسة ؛ انظر [page:BufferGeometry.groups groups]
|
||||
خاصية للحصول على التفاصيل.
|
||||
</p>
|
||||
|
||||
<h3>[method:this applyMatrix4]([param:Matrix4 matrix])</h3>
|
||||
<p>تطبق تحويل المصفوفة على الهندسة.</p>
|
||||
|
||||
<h3>[method:this applyQuaternion]([param:Quaternion quaternion])</h3>
|
||||
<p>يطبق التدوير الممثل بالرباعي على الهندسة.</p>
|
||||
|
||||
<h3>[method:this center] ()</h3>
|
||||
<p>مركز الهندسة بناءً على مربع التحديد.</p>
|
||||
|
||||
<h3>[method:undefined clearGroups]( )</h3>
|
||||
<p>يمسح جميع المجموعات.</p>
|
||||
|
||||
<h3>[method:BufferGeometry clone]()</h3>
|
||||
<p>ينشئ نسخة من هذا BufferGeometry.</p>
|
||||
|
||||
<h3>[method:undefined computeBoundingBox]()</h3>
|
||||
<p>
|
||||
يحسب مربع التحديد للهندسة ، ويحدث [page:.boundingBox]
|
||||
سمة. <br />
|
||||
لا يتم حساب مربعات التحديد افتراضيًا. يجب حسابها بشكل صريح
|
||||
حساب ، وإلا كانت `null`.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined computeBoundingSphere]()</h3>
|
||||
<p>
|
||||
يحسب كرة التحديد للهندسة ، ويحدث [page:.boundingSphere]
|
||||
سمة. <br />
|
||||
لا تتم حساب كرات التحديد افتراضيًا. يجب حسابها بشكل صريح
|
||||
حساب ، وإلا كانت `null`.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined computeTangents]()</h3>
|
||||
<p>
|
||||
يحسب ويضيف سمة مماسية لهذه الهندسة. <br />
|
||||
الحساب مدعوم فقط للهندسات المفهرسة وإذا تم تعريف الوضعية ،
|
||||
الطبيعية ، والأشعة فوق البنفسجية. عند استخدام خريطة طبيعية للفضاء المماس
|
||||
خريطة ، تفضل خوارزمية MikkTSpace المقدمة من قبل
|
||||
[page:BufferGeometryUtils.computeMikkTSpaceTangents] بدلاً من ذلك.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined computeVertexNormals]()</h3>
|
||||
<p>تحسب قمم الأوجه للبيانات القمية المعطاة. بالنسبة للهندسات المفهرسة ، يضبط الأسلوب كل قمة عادية لتكون متوسط أوجه الوجه التي تشارك هذه القمة.
|
||||
بالنسبة للهندسات غير المفهرسة ، لا تتشارك القمم ، ويضبط الأسلوب كل قمة عادية لتكون نفس وجه الوجه.</p>
|
||||
|
||||
<h3>[method:this copy]( [param:BufferGeometry bufferGeometry] )</h3>
|
||||
<p>ينسخ BufferGeometry آخر إلى هذا BufferGeometry.</p>
|
||||
|
||||
<h3>[method:BufferAttribute deleteAttribute]( [param:String name] )</h3>
|
||||
<p>تحذف [page:BufferAttribute attribute] بالاسم المحدد.</p>
|
||||
|
||||
<h3>[method:undefined dispose]()</h3>
|
||||
<p>
|
||||
يطلق الموارد المتعلقة بوحدة معالجة الرسومات التي تم تخصيصها من قبل هذا المثيل. اتصل بهذا
|
||||
الأسلوب كلما لم يعد هذا المثيل مستخدمًا في تطبيقك.
|
||||
</p>
|
||||
|
||||
<h3>[method:BufferAttribute getAttribute]( [param:String name] )</h3>
|
||||
<p>يرجع [page:BufferAttribute attribute] بالاسم المحدد.</p>
|
||||
|
||||
<h3>[method:BufferAttribute getIndex] ()</h3>
|
||||
<p>يرجع [page:.index] buffer.</p>
|
||||
|
||||
<h3>[method:Boolean hasAttribute]( [param:String name] )</h3>
|
||||
<p>يعود `true` إذا كانت السمة بالاسم المحدد موجودة.</p>
|
||||
|
||||
<h3>[method:this lookAt] ( [param:Vector3 vector] )</h3>
|
||||
<p>
|
||||
vector - نقطة عالمية للنظر إليها. <br /> <br />
|
||||
|
||||
يدور الهندسة لمواجهة نقطة في الفضاء. يتم هذا عادةً كـ
|
||||
عملية واحدة ، وليس أثناء حلقة. استخدم [page:Object3D.lookAt] لـ
|
||||
الاستخدام النموذجي للشبكة في الوقت الفعلي.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined normalizeNormals]()</h3>
|
||||
<p>
|
||||
سيكون كل متجه طبيعي في هندسة بقوة 1. هذا سوف
|
||||
تصحح الإضاءة على سطوح الهندسة.
|
||||
</p>
|
||||
|
||||
<h3>[method:this rotateX] ( [param:Float radians] )</h3>
|
||||
<p>
|
||||
قم بتدوير الهندسة حول المحور X. يتم هذا عادةً كعملية واحدة
|
||||
عملية ، وليس أثناء حلقة. استخدم [page:Object3D.rotation] لـ
|
||||
تدوير شبكة نموذجية في الوقت الفعلي.
|
||||
</p>
|
||||
|
||||
<h3>[method:this rotateY] ( [param:Float radians] )</h3>
|
||||
<p>
|
||||
قم بتدوير الهندسة حول المحور Y. يتم هذا عادةً كعملية واحدة
|
||||
عملية ، وليس أثناء حلقة. استخدم [page:Object3D.rotation] لـ
|
||||
تدوير شبكة نموذجية في الوقت الفعلي.
|
||||
</p>
|
||||
|
||||
<h3>[method:this rotateZ] ( [param:Float radians] )</h3>
|
||||
<p>
|
||||
قم بتدوير الهندسة حول المحور Z. يتم هذا عادةً كعملية واحدة
|
||||
عملية ، وليس أثناء حلقة. استخدم [page:Object3D.rotation] لـ
|
||||
تدوير شبكة نموذجية في الوقت الفعلي.
|
||||
</p>
|
||||
|
||||
<h3>[method:this scale] ( [param:Float x], [param:Float y], [param:Float z] )</h3>
|
||||
<p>
|
||||
قم بتغيير حجم بيانات الهندسة. يتم هذا عادةً كعملية واحدة ،
|
||||
وليس أثناء حلقة. استخدام [page:Object3D.scale] لـ
|
||||
تغيير حجم شبكات نموذجية في الوقت الفعلي.
|
||||
</p>
|
||||
|
||||
<h3>[method:this setAttribute]( [param:String name], [param:BufferAttribute attribute] )</h3>
|
||||
<p>
|
||||
يضع سمة لهذه الهندسة. استخدام هذا بدلاً من خصائص
|
||||
الملكية ، لأن خريطة قائمة داخلية من [page:.attributes]
|
||||
يتم صيانته لتسريع التكرار على السمات.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined setDrawRange] ( [param:Integer start], [param:Integer count] )</h3>
|
||||
<p>
|
||||
قم بتعيين خاصية [page:.drawRange]. بالنسبة لـ BufferGeometry غير المفهرس ، count
|
||||
هو عدد القمم التي يتم عرضها. بالنسبة لـ BufferGeometry المفهرس ، count هو
|
||||
عدد المؤشرات التي يتم عرضها.
|
||||
</p>
|
||||
|
||||
<h3>[method:this setFromPoints] ( [param:Array points] )</h3>
|
||||
<p>تضبط سمات هذا BufferGeometry من مصفوفة من النقاط.</p>
|
||||
|
||||
<h3>[method:this setIndex] ( [param:BufferAttribute index] )</h3>
|
||||
<p>ضبط buffer [page:.index].</p>
|
||||
|
||||
<h3>[method:Object toJSON]()</h3>
|
||||
<p>
|
||||
قُم بتحويل هندسة buffer إلى three.js
|
||||
[link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].
|
||||
</p>
|
||||
|
||||
<h3>[method:BufferGeometry toNonIndexed]()</h3>
|
||||
<p>إرجاع إصدار غير مفهرس من BufferGeometry المفهرس.</p>
|
||||
|
||||
<h3>[method:this translate] ( [param:Float x], [param:Float y], [param:Float z] )</h3>
|
||||
<p>
|
||||
قُم بترجمة الهندسة. يتم هذا عادةً كعملية واحدة ،
|
||||
وليس أثناء حلقة. استخدم [page:Object3D.position] لـ
|
||||
ترجمة شبكات نموذجية في الوقت الفعلي.
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,91 @@
|
||||
<!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/Performance/now performance.now].
|
||||
</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
|
||||
<h3>[name]( [param:Boolean autoStart] )</h3>
|
||||
<p>
|
||||
autoStart — (اختياري) ما إذا كان يجب تشغيل الساعة تلقائيًا عندما
|
||||
[page:.getDelta]() يتم استدعاؤه لأول مرة. الافتراضي هو `true`.
|
||||
</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
|
||||
<h3>[property:Boolean autoStart]</h3>
|
||||
<p>
|
||||
إذا تم تعيينه، يبدأ الساعة تلقائيًا عندما يتم استدعاء [page:.getDelta]()
|
||||
لأول مرة. الافتراضي هو `true`.
|
||||
</p>
|
||||
|
||||
<h3>[property:Float startTime]</h3>
|
||||
<p>
|
||||
يحمل الوقت الذي تم فيه استدعاء طريقة [page:Clock.start start] للساعة
|
||||
آخر مرة. الافتراضي هو `0`.
|
||||
</p>
|
||||
|
||||
<h3>[property:Float oldTime]</h3>
|
||||
<p>
|
||||
يحمل الوقت الذي تم فيه استدعاء طرق [page:Clock.start start],
|
||||
[page:.getElapsedTime]() أو [page:.getDelta]() للساعة آخر مرة.
|
||||
الافتراضي هو `0`.
|
||||
</p>
|
||||
|
||||
<h3>[property:Float elapsedTime]</h3>
|
||||
<p>
|
||||
يتبع المجموع الكلي للوقت الذي كانت تعمل فيه الساعة. الافتراضي هو
|
||||
`0`.
|
||||
</p>
|
||||
|
||||
<h3>[property:Boolean running]</h3>
|
||||
<p>ما إذا كانت الساعة تعمل أم لا. الافتراضي هو `false`.</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>[method:undefined start]()</h3>
|
||||
<p>
|
||||
يبدأ الساعة. كما يضبط [page:.startTime] و [page:.oldTime] على
|
||||
الوقت الحالي، ويضبط [page:.elapsedTime] على `0` و [page:.running] على
|
||||
`true`.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined stop]()</h3>
|
||||
<p>
|
||||
يوقف الساعة ويضبط [page:Clock.oldTime oldTime] على الوقت الحالي.
|
||||
</p>
|
||||
|
||||
<h3>[method:Float getElapsedTime]()</h3>
|
||||
<p>
|
||||
احصل على المجموع الكلي للثواني التي مرت منذ بدء تشغيل الساعة وضبط [page:.oldTime] على
|
||||
الوقت الحالي.<br />
|
||||
إذا كان [page:.autoStart] هو `true` والساعة لا تعمل، فإنه يبدأ أيضًا
|
||||
ساعة.
|
||||
</p>
|
||||
|
||||
<h3>[method:Float getDelta]()</h3>
|
||||
<p>
|
||||
احصل على المجموع الكلي للثواني التي مرت منذ ضبط [page:.oldTime] وضبط
|
||||
[page:.oldTime] على الوقت الحالي.<br />
|
||||
إذا كان [page:.autoStart] هو `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,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">
|
||||
<h1>[name]</h1>
|
||||
|
||||
<p class="desc">
|
||||
أحداث JavaScript للكائنات المخصصة.<br />
|
||||
[link:https://github.com/mrdoob/eventdispatcher.js EventDispatcher على GitHub]
|
||||
</p>
|
||||
|
||||
<h2>مثال الكود</h2>
|
||||
|
||||
<code>
|
||||
// إضافة الأحداث إلى كائن مخصص
|
||||
class Car extends EventDispatcher {
|
||||
start() {
|
||||
this.dispatchEvent( { type: 'start', message: 'vroom vroom!' } );
|
||||
}
|
||||
};
|
||||
|
||||
// استخدام الأحداث مع الكائن المخصص
|
||||
const car = new Car();
|
||||
car.addEventListener( 'start', function ( event ) {
|
||||
alert( event.message );
|
||||
} );
|
||||
|
||||
car.start();
|
||||
</code>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
|
||||
<h3>[name]()</h3>
|
||||
<p>ينشئ كائن EventDispatcher.</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>[method:undefined addEventListener]( [param:String type], [param:Function listener] )</h3>
|
||||
<p>
|
||||
type - نوع الحدث الذي يتم الاستماع إليه.<br />
|
||||
listener - الدالة التي يتم استدعاؤها عند إطلاق الحدث.
|
||||
</p>
|
||||
<p>يضيف مستمعًا إلى نوع حدث.</p>
|
||||
|
||||
<h3>[method:Boolean hasEventListener]( [param:String type], [param:Function listener] )</h3>
|
||||
<p>
|
||||
type - نوع الحدث الذي يتم الاستماع إليه.<br />
|
||||
listener - الدالة التي يتم استدعاؤها عند إطلاق الحدث.
|
||||
</p>
|
||||
<p>يتحقق مما إذا كان المستمع قد تمت إضافته إلى نوع حدث.</p>
|
||||
|
||||
<h3>[method:undefined removeEventListener]( [param:String type], [param:Function listener] )</h3>
|
||||
<p>
|
||||
type - نوع المستمع الذي يتم إزالته.<br />
|
||||
listener - دالة المستمع التي يتم إزالتها.
|
||||
</p>
|
||||
<p>يزيل مستمعًا من نوع حدث.</p>
|
||||
|
||||
<h3>[method:undefined dispatchEvent]( [param:Object event] )</h3>
|
||||
<p>event - الحدث الذي يتم إطلاقه.</p>
|
||||
<p>إطلاق نوع حدث.</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,139 @@
|
||||
<!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">
|
||||
لا يقوم هذا الفئة السمة المخزنة بإنشاء VBO. بدلاً من ذلك، يستخدم
|
||||
أي VBO يتم تمريره في المُنشئ ويمكن تغييره لاحقًا عبر خاصية
|
||||
`buffer`.<br /><br />
|
||||
من الضروري تمرير معلمات إضافية جنبًا إلى جنب مع VBO. هذه هي: GL
|
||||
context، نوع البيانات GL، عدد المكونات لكل رأس، عدد البايتات لكل
|
||||
مكون، وعدد الرؤوس.<br /><br />
|
||||
أكثر حالات الاستخدام شيوعًا لهذه الفئة هي عندما يتداخل نوع من
|
||||
حسابات GPGPU أو حتى ينتج VBOs المعنية.
|
||||
</p>
|
||||
|
||||
<h2>Examples</h2>
|
||||
<p>
|
||||
[example:webgl_buffergeometry_glbufferattribute Points with custom buffers]<br />
|
||||
</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
<h3>[name]( [param:WebGLBuffer buffer], [param:GLenum type], [param:Integer itemSize], [param:Integer elementSize], [param:Integer count], [param:Boolean normalized] )</h3>
|
||||
<p>
|
||||
`buffer` — يجب أن يكون
|
||||
[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLBuffer WebGLBuffer].
|
||||
<br />
|
||||
`type` — واحد من
|
||||
[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Constants#Data_types أنواع بيانات WebGL].
|
||||
<br />
|
||||
`itemSize` — عدد قيم المصفوفة التي يجب ربطها برأس معين. على سبيل
|
||||
المثال، إذا كانت هذه السمة تخزن متجهًا ثلاثي الأبعاد (مثل الموضع،
|
||||
الطبيعي، أو اللون)، فيجب أن يكون itemSize هو 3.
|
||||
<br />
|
||||
`elementSize` — 1، 2 أو 4. الحجم المقابل (بالبايت) للمعلمة "type"
|
||||
المعطاة.
|
||||
</p>
|
||||
|
||||
<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>
|
||||
<p>`count` — عدد الرؤوس المتوقع في VBO.</p>
|
||||
<p>
|
||||
`normalized` — (optional) Applies to integer data only.
|
||||
Indicates how the underlying data in the buffer maps to the values in the
|
||||
GLSL code. For instance, if [page:WebGLBuffer buffer] contains data of
|
||||
`gl.UNSIGNED_SHORT`, and [page:Boolean normalized] is true, the values `0 -
|
||||
+65535` in the buffer data will be mapped to 0.0f - +1.0f in the GLSL
|
||||
attribute. A `gl.SHORT` (signed) would map from -32768 - +32767 to -1.0f
|
||||
- +1.0f. If [page:Boolean normalized] is false, the values will be
|
||||
converted to floats unmodified, i.e. 32767 becomes 32767.0f.
|
||||
</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
|
||||
<h3>[property:WebGLBuffer buffer]</h3>
|
||||
<p>
|
||||
نسخة
|
||||
[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLBuffer WebGLBuffer] الحالية.
|
||||
</p>
|
||||
|
||||
<h3>[property:Integer count]</h3>
|
||||
<p>عدد الرؤوس المتوقع في VBO.</p>
|
||||
|
||||
<h3>[property:Integer elementSize]</h3>
|
||||
<p>
|
||||
يخزن الحجم المقابل بالبايت لقيمة خاصية `type` الحالية.
|
||||
</p>
|
||||
<p>انظر أعلاه (المُنشئ) لقائمة بأحجام الأنواع المعروفة.</p>
|
||||
|
||||
<h3>[property:Boolean isGLBufferAttribute]</h3>
|
||||
<p>للقراءة فقط. دائمًا `true`.</p>
|
||||
|
||||
<h3>[property:Integer itemSize]</h3>
|
||||
<p>كم عدد القيم التي تشكل كل عنصر (رأس).</p>
|
||||
|
||||
<h3>[property:String name]</h3>
|
||||
<p>
|
||||
اسم اختياري لهذه الحالة من السمة. الافتراضي هو سلسلة فارغة.
|
||||
</p>
|
||||
|
||||
<h3>[property:Boolean needsUpdate]</h3>
|
||||
<p>
|
||||
الافتراضي هو `false`. تعيين هذا إلى true يزاد
|
||||
[page:GLBufferAttribute.version version].
|
||||
</p>
|
||||
|
||||
<h3>[property:Boolean normalized]</h3>
|
||||
<p>
|
||||
Indicates how the underlying data in the buffer maps to the values in the
|
||||
GLSL shader code. See the constructor above for details.
|
||||
</p>
|
||||
|
||||
<h3>[property:GLenum type]</h3>
|
||||
<p>
|
||||
[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Constants#Data_types نوع بيانات WebGL] يصف محتوى VBO الأساسي.
|
||||
</p>
|
||||
<p>
|
||||
قم بتعيين هذه الخاصية معًا مع `elementSize`. الطريقة المستحسنة هي
|
||||
باستخدام طريقة `setType`.
|
||||
</p>
|
||||
|
||||
<h3>[property:Integer version]</h3>
|
||||
<p>
|
||||
رقم إصدار، يزاد كل مرة يتم فيها تعيين خاصية needsUpdate على true.
|
||||
</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>[method:this setBuffer]( buffer )</h3>
|
||||
<p>تضبط خاصية `buffer`.</p>
|
||||
|
||||
<h3>[method:this setType]( type, elementSize )</h3>
|
||||
<p>تضبط كلاً من خصائص `type` و `elementSize`.</p>
|
||||
|
||||
<h3>[method:this setItemSize]( itemSize )</h3>
|
||||
<p>تضبط خاصية `itemSize`.</p>
|
||||
|
||||
<h3>[method:this setCount]( count )</h3>
|
||||
<p>تضبط خاصية `count`.</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,37 @@
|
||||
<!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:BufferAttribute] →
|
||||
|
||||
<h1>[name]</h1>
|
||||
<p class="desc">نسخة مثيلة من [page:BufferAttribute].</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
<h3>[name]( [param:TypedArray array], [param:Integer itemSize], [param:Boolean normalized], [param:Number meshPerAttribute] )</h3>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
<p>انظر [page:BufferAttribute] للخصائص الموروثة.</p>
|
||||
|
||||
<h3>[property:Number meshPerAttribute]</h3>
|
||||
<p>
|
||||
يحدد مدى تكرار قيمة هذه السمة المخزنة. قيمة واحدة تعني أن كل قيمة من
|
||||
السمة المثيلة يتم استخدامها لمثيل واحد. قيمتان تعني أن كل قيمة يتم
|
||||
استخدامها لمثيلين متتاليين (وهكذا). الافتراضي هو `1`.
|
||||
</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
<p>انظر [page:BufferAttribute] للطُرق الموروثة.</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,39 @@
|
||||
<!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:BufferGeometry] →
|
||||
|
||||
<h1>[name]</h1>
|
||||
<p class="desc">نسخة مثيلة من [page:BufferGeometry].</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
<h3>[name]( )</h3>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
<p>انظر [page:BufferGeometry] للخصائص الموروثة.</p>
|
||||
|
||||
<h3>[property:Number instanceCount]</h3>
|
||||
<p>الافتراضي هو `Infinity`.</p>
|
||||
|
||||
<h3>[property:Boolean isInstancedBufferGeometry]</h3>
|
||||
<p>علامة للقراءة فقط للتحقق مما إذا كان الكائن المعطى هو من نوع [name].</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
<p>انظر [page:BufferGeometry] للطُرق الموروثة.</p>
|
||||
|
||||
<h3>[method:this copy]( [param:InstancedBufferGeometry source] )</h3>
|
||||
<p>ينسخ [name] المعطى إلى هذه الحالة.</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,33 @@
|
||||
<!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:InterleavedBuffer] →
|
||||
|
||||
<h1>[name]</h1>
|
||||
<p class="desc">نسخة مثيلة من [page:InterleavedBuffer].</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
<h3>[name]( [param:TypedArray array], [param:Integer itemSize], [param:Number meshPerAttribute] )</h3>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
<p>انظر [page:InterleavedBuffer] للخصائص الموروثة.</p>
|
||||
|
||||
<h3>[property:Number meshPerAttribute]</h3>
|
||||
<p>الافتراضي هو `1`.</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
<p>انظر [page:InterleavedBuffer] للطُرق الموروثة.</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,119 @@
|
||||
<!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">
|
||||
"متداخل" يعني أن العديد من السمات، ربما من أنواع مختلفة،
|
||||
(على سبيل المثال، الموضع، الطبيعي، uv، اللون) معبأة في مصفوفة واحدة.
|
||||
<br /><br />
|
||||
يمكن العثور على مقدمة في المصفوفات المتداخلة هنا:
|
||||
[link:https://blog.tojicode.com/2011/05/interleaved-array-basics.html أساسيات المصفوفات المتداخلة]
|
||||
</p>
|
||||
|
||||
<h2>أمثلة (Examples)</h2>
|
||||
<p>
|
||||
[example:webgl_buffergeometry_points_interleaved webgl / buffergeometry / points / interleaved]
|
||||
</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
<h3>[name]( [param:TypedArray array], [param:Integer stride] )</h3>
|
||||
<p>
|
||||
[page:TypedArray array] -- مصفوفة مكتوبة بذاكرة مشتركة. يخزن بيانات
|
||||
الهندسة.<br />
|
||||
[page:Integer stride] -- عدد عناصر المصفوفة المكتوبة لكل رأس.
|
||||
</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
|
||||
<h3>[property:Array array]</h3>
|
||||
<p>مصفوفة مكتوبة بذاكرة مشتركة. يخزن بيانات الهندسة.</p>
|
||||
|
||||
<h3>[property:Integer stride]</h3>
|
||||
<p>عدد عناصر المصفوفة المكتوبة لكل رأس.</p>
|
||||
|
||||
<h3>[property:Integer count]</h3>
|
||||
<p>يعطي إجمالي عدد العناصر في المصفوفة.</p>
|
||||
|
||||
<h3>[property:Object updateRange]</h3>
|
||||
<p>
|
||||
كائن يحتوي على إزاحة وعدد.<br />
|
||||
- [page:Number offset]: الافتراضي هو `0`.<br />
|
||||
- [page:Number count]: الافتراضي هو `-1`.<br />
|
||||
</p>
|
||||
|
||||
<h3>[property:String uuid]</h3>
|
||||
<p>
|
||||
[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] من
|
||||
هذه الحالة. يتم تعيين هذا تلقائيًا، لذلك لا يجب تحريره.
|
||||
</p>
|
||||
|
||||
<h3>[property:Integer version]</h3>
|
||||
<p>
|
||||
رقم إصدار، يزاد كل مرة يتم فيها تعيين خاصية needsUpdate على true.
|
||||
</p>
|
||||
|
||||
<h3>[property:Boolean needsUpdate]</h3>
|
||||
<p>
|
||||
الافتراضي هو `false`. تعيين هذا إلى true يزاد
|
||||
[page:InterleavedBuffer.version version].
|
||||
</p>
|
||||
|
||||
<h3>[property:Usage usage]</h3>
|
||||
<p>
|
||||
يحدد نمط الاستخدام المقصود لمخزن البيانات لأغراض التحسين. يتوافق مع
|
||||
المعلمة `usage` من
|
||||
[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData WebGLRenderingContext.bufferData]().
|
||||
</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>[method:this copy]( [param:InterleavedBuffer source] )</h3>
|
||||
<p>ينسخ [name] آخر إلى هذه [name].</p>
|
||||
|
||||
<h3>[method:this copyAt]( [param:Integer index1], [param:InterleavedBuffer attribute], [param:Integer index2] )</h3>
|
||||
<p>
|
||||
ينسخ البيانات من `attribute[index2]` إلى [page:InterleavedBuffer.array array][index1].
|
||||
</p>
|
||||
|
||||
<h3>[method:this set]( [param:TypedArray value], [param:Integer offset] )</h3>
|
||||
<p>
|
||||
value - المصفوفة (المكتوبة) المصدر.<br />
|
||||
offset - الإزاحة في المصفوفة الهدف التي يجب البدء فيها بكتابة القيم
|
||||
من المصفوفة المصدر. الافتراضي هو `0`.<br /><br />
|
||||
|
||||
يخزن قيمًا متعددة في المخزن، قراءة قيم الإدخال من
|
||||
مصفوفة محددة.
|
||||
</p>
|
||||
|
||||
<h3>[method:InterleavedBuffer clone]( [param:Object data] )</h3>
|
||||
<p>
|
||||
data - يحمل هذا الكائن مصفوفات ذاكرة مشتركة مطلوبة لنسخ هندسات
|
||||
بسمات متداخلة بشكل صحيح.<br /><br />
|
||||
|
||||
ينشئ نسخة من هذه [name].
|
||||
</p>
|
||||
|
||||
<h3>[method:this setUsage] ( [param:Usage value] )</h3>
|
||||
<p>ضبط [page:InterleavedBuffer.usage usage] على value.</p>
|
||||
|
||||
<h3>[method:Object toJSON]( [param:Object data] )</h3>
|
||||
<p>
|
||||
data - يحمل هذا الكائن مصفوفات ذاكرة مشتركة مطلوبة لتسلسل هندسات
|
||||
بسمات متداخلة بشكل صحيح.<br /><br />
|
||||
|
||||
يسلسل هذه [name].
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,117 @@
|
||||
<!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:InterleavedBuffer interleavedBuffer], [param:Integer itemSize], [param:Integer offset], [param:Boolean normalized] )</h3>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
|
||||
<h3>[property:InterleavedBuffer data]</h3>
|
||||
<p>
|
||||
نسخة [page:InterleavedBuffer InterleavedBuffer] الممررة في
|
||||
المُنشئ.
|
||||
</p>
|
||||
|
||||
<h3>[property:TypedArray array]</h3>
|
||||
<p>قيمة [page:InterleavedBufferAttribute.data data].array.</p>
|
||||
|
||||
<h3>[property:Integer count]</h3>
|
||||
<p>
|
||||
قيمة [page:InterleavedBufferAttribute.data data].count. إذا كان
|
||||
المخزن يخزن عنصرًا ثلاثي الأبعاد (مثل الموضع، الطبيعي، أو
|
||||
اللون)، فسيحسب عدد هذه العناصر المخزنة.
|
||||
</p>
|
||||
|
||||
<h3>[property:Boolean isInterleavedBufferAttribute]</h3>
|
||||
<p>علامة للقراءة فقط للتحقق مما إذا كان الكائن المعطى هو من نوع [name].</p>
|
||||
|
||||
<h3>[property:Integer itemSize]</h3>
|
||||
<p>كم عدد القيم التي تشكل كل عنصر.</p>
|
||||
|
||||
<h3>[property:String name]</h3>
|
||||
<p>
|
||||
اسم اختياري لهذه الحالة من السمة. الافتراضي هو سلسلة فارغة.
|
||||
</p>
|
||||
|
||||
<h3>[property:Boolean needsUpdate]</h3>
|
||||
<p>
|
||||
الافتراضي هو `false`. تعيين هذا إلى `true` سيرسل المخزن المتداخل
|
||||
بأكمله (وليس فقط بيانات السمة المحددة) إلى GPU مرة أخرى.
|
||||
</p>
|
||||
|
||||
<h3>[property:Boolean normalized]</h3>
|
||||
<p>الافتراضي هو `false`.</p>
|
||||
|
||||
<h3>[property:Integer offset]</h3>
|
||||
<p>الإزاحة في المصفوفة الأساسية حيث يبدأ عنصر.</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>[method:this applyMatrix4]( [param:Matrix4 m] )</h3>
|
||||
<p>
|
||||
يطبق مصفوفة [page:Matrix4 m] على كل عنصر Vector3 من هذه
|
||||
InterleavedBufferAttribute.
|
||||
</p>
|
||||
|
||||
<h3>[method:this applyNormalMatrix]( [param:Matrix3 m] )</h3>
|
||||
<p>
|
||||
يطبق مصفوفة الطبيعي [page:Matrix3 m] على كل عنصر Vector3 من هذه
|
||||
InterleavedBufferAttribute.
|
||||
</p>
|
||||
|
||||
<h3>[method:this transformDirection]( [param:Matrix4 m] )</h3>
|
||||
<p>
|
||||
يطبق مصفوفة [page:Matrix4 m] على كل عنصر Vector3 من هذه
|
||||
InterleavedBufferAttribute، تفسير العناصر كمتجهات اتجاه.
|
||||
</p>
|
||||
|
||||
<h3>[method:Number getX]( [param:Integer index] )</h3>
|
||||
<p>يعيد مكون x للعنصر في المؤشر المعطى.</p>
|
||||
|
||||
<h3>[method:Number getY]( [param:Integer index] )</h3>
|
||||
<p>يعيد مكون y للعنصر في المؤشر المعطى.</p>
|
||||
|
||||
<h3>[method:Number getZ]( [param:Integer index] )</h3>
|
||||
<p>يعيد مكون z للعنصر في المؤشر المعطى.</p>
|
||||
|
||||
<h3>[method:Number getW]( [param:Integer index] )</h3>
|
||||
<p>يعيد مكون w للعنصر في المؤشر المعطى.</p>
|
||||
|
||||
<h3>[method:this setX]( [param:Integer index], [param:Float x] )</h3>
|
||||
<p>يضبط مكون x للعنصر في المؤشر المعطى.</p>
|
||||
|
||||
<h3>[method:this setY]( [param:Integer index], [param:Float y] )</h3>
|
||||
<p>يضبط مكون y للعنصر في المؤشر المعطى.</p>
|
||||
|
||||
<h3>[method:this setZ]( [param:Integer index], [param:Float z] )</h3>
|
||||
<p>يضبط مكون z للعنصر في المؤشر المعطى.</p>
|
||||
|
||||
<h3>[method:this setW]( [param:Integer index], [param:Float w] )</h3>
|
||||
<p>يضبط مكون w للعنصر في المؤشر المعطى.</p>
|
||||
|
||||
<h3>[method:this setXY]( [param:Integer index], [param:Float x], [param:Float y] )</h3>
|
||||
<p>يضبط مكونات x و y للعنصر في المؤشر المعطى.</p>
|
||||
|
||||
<h3>[method:this setXYZ]( [param:Integer index], [param:Float x], [param:Float y], [param:Float z] )</h3>
|
||||
<p>يضبط مكونات x و y و z للعنصر في المؤشر المعطى.</p>
|
||||
|
||||
<h3>[method:this setXYZW]( [param:Integer index], [param:Float x], [param:Float y], [param:Float z], [param:Float w] )</h3>
|
||||
<p>يضبط مكونات x و y و z و w للعنصر في المؤشر المعطى.</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,100 @@
|
||||
<!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">
|
||||
كائن [page:Layers] يعين [page:Object3D] إلى 1 أو أكثر من 32
|
||||
طبقة مرقمة من `0` إلى `31` - يتم تخزين الطبقات داخليًا كـ
|
||||
[link:https://en.wikipedia.org/wiki/Mask_(computing) قناع بت]، وافتراضيًا
|
||||
كل Object3Ds عضو في الطبقة 0.<br /><br />
|
||||
|
||||
يمكن استخدام هذا للتحكم في الرؤية - يجب أن يشترك كائن في طبقة مع
|
||||
[page:Camera camera] ليكون مرئيًا عندما يتم عرض هذه الكاميرا
|
||||
المعروضة.<br /><br />
|
||||
|
||||
جميع الفئات التي ترث من [page:Object3D] لديها
|
||||
[page:Object3D.layers] خاصية وهي نسخة من هذه الفئة.
|
||||
</p>
|
||||
|
||||
<h2>أمثلة (Examples)</h2>
|
||||
|
||||
<p>[example:webgpu_layers WebGPU / layers]</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
|
||||
<h3>[name]()</h3>
|
||||
<p>إنشاء كائن طبقات جديد، مع تعيين العضوية في البداية إلى الطبقة 0.</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
|
||||
<h3>[property:Integer mask]</h3>
|
||||
<p>
|
||||
قناع بت يخزن أي من الطبقات الـ 32 التي يكون هذا الكائن طبقات حاليًا
|
||||
عضوًا فيه.
|
||||
</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>[method:undefined disable]( [param:Integer layer] )</h3>
|
||||
<p>
|
||||
layer - عدد صحيح من 0 إلى 31.<br /><br />
|
||||
|
||||
إزالة عضوية هذه `layer`.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined enable]( [param:Integer layer] )</h3>
|
||||
<p>
|
||||
layer - عدد صحيح من 0 إلى 31.<br /><br />
|
||||
|
||||
إضافة عضوية هذه `layer`.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined set]( [param:Integer layer] )</h3>
|
||||
<p>
|
||||
layer - عدد صحيح من 0 إلى 31.<br /><br />
|
||||
|
||||
تعيين العضوية إلى `layer`، وإزالة العضوية من جميع الطبقات الأخرى.
|
||||
</p>
|
||||
|
||||
<h3>[method:Boolean test]( [param:Layers layers] )</h3>
|
||||
<p>
|
||||
layers - كائن طبقات<br /><br />
|
||||
|
||||
يعود بـ true إذا كان هذا وكائن `layers` الممرر لديهما على الأقل واحدة
|
||||
طبقة مشتركة.
|
||||
</p>
|
||||
|
||||
<h3>[method:Boolean isEnabled]( [param:Integer layer] )</h3>
|
||||
<p>
|
||||
layer - عدد صحيح من 0 إلى 31.<br /><br />
|
||||
|
||||
يعود بـ true إذا تم تمكين الطبقة المعطاة.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined toggle]( [param:Integer layer] )</h3>
|
||||
<p>
|
||||
layer - عدد صحيح من 0 إلى 31.<br /><br />
|
||||
|
||||
تبديل عضوية `layer`.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined enableAll]()</h3>
|
||||
<p>إضافة عضوية لجميع الطبقات.</p>
|
||||
|
||||
<h3>[method:undefined disableAll]()</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>
|
@ -0,0 +1,274 @@
|
||||
<!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">
|
||||
الموحدات هي متغيرات GLSL عالمية. يتم تمريرها إلى برامج الشادر.
|
||||
</p>
|
||||
|
||||
<h2>مثال الكود</h2>
|
||||
<p>
|
||||
عند إعلان موحد من [page:ShaderMaterial]، يتم إعلانه بواسطة
|
||||
القيمة أو بالكائن.
|
||||
</p>
|
||||
<code>
|
||||
uniforms: {
|
||||
time: { value: 1.0 },
|
||||
resolution: new Uniform( new Vector2() )
|
||||
};
|
||||
</code>
|
||||
|
||||
<h2>أنواع الموحدات (Uniform types)</h2>
|
||||
<p>
|
||||
يجب أن يكون لكل موحد خاصية `value`. يجب أن يتوافق نوع القيمة
|
||||
مع نوع المتغير الموحد في كود GLSL كما
|
||||
محدد لأنواع GLSL البدائية في الجدول أدناه. موحد
|
||||
الهياكل والمصفوفات مدعومة أيضًا. يجب تحديد مصفوفات GLSL من نوع بدائي
|
||||
إما كمصفوفة من كائنات THREE المقابلة أو
|
||||
كمصفوفة مسطحة تحتوي على بيانات جميع الكائنات. بعبارة أخرى؛
|
||||
يجب عدم تمثيل المتغيرات البدائية في GLSL في المصفوفات بواسطة المصفوفات. هذه القاعدة
|
||||
لا تطبق ترانزيتيفًا. يجب أن تكون مصفوفة من مصفوفات `vec2`، كل منها بطول
|
||||
خمسة متجهات، يجب أن تكون مصفوفة من المصفوفات، من خمسة [page:Vector2]
|
||||
كائنات أو عشرة `number`s.
|
||||
</p>
|
||||
|
||||
<table>
|
||||
<caption>
|
||||
<a id="uniform-types">Uniform types</a>
|
||||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>GLSL type</th>
|
||||
<th>JavaScript type</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td>[page:Number]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>uint</td>
|
||||
<td>[page:Number]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>float</td>
|
||||
<td>[page:Number]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>bool</td>
|
||||
<td>[page:Boolean]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>bool</td>
|
||||
<td>[page:Number]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vec2</td>
|
||||
<td>[page:Vector2 THREE.Vector2]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vec2</td>
|
||||
<td>[page:Float32Array Float32Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vec2</td>
|
||||
<td>[page:Array Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vec3</td>
|
||||
<td>[page:Vector3 THREE.Vector3]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vec3</td>
|
||||
<td>[page:Color THREE.Color]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vec3</td>
|
||||
<td>[page:Float32Array Float32Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vec3</td>
|
||||
<td>[page:Array Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vec4</td>
|
||||
<td>[page:Vector4 THREE.Vector4]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vec4</td>
|
||||
<td>[page:Quaternion THREE.Quaternion]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vec4</td>
|
||||
<td>[page:Float32Array Float32Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vec4</td>
|
||||
<td>[page:Array Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mat2</td>
|
||||
<td>[page:Float32Array Float32Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mat2</td>
|
||||
<td>[page:Array Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mat3</td>
|
||||
<td>[page:Matrix3 THREE.Matrix3]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mat3</td>
|
||||
<td>[page:Float32Array Float32Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mat3</td>
|
||||
<td>[page:Array Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mat4</td>
|
||||
<td>[page:Matrix4 THREE.Matrix4]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mat4</td>
|
||||
<td>[page:Float32Array Float32Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mat4</td>
|
||||
<td>[page:Array Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ivec2, bvec2</td>
|
||||
<td>[page:Float32Array Float32Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ivec2, bvec2</td>
|
||||
<td>[page:Array Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ivec3, bvec3</td>
|
||||
<td>[page:Int32Array Int32Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ivec3, bvec3</td>
|
||||
<td>[page:Array Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ivec4, bvec4</td>
|
||||
<td>[page:Int32Array Int32Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ivec4, bvec4</td>
|
||||
<td>[page:Array Array] (*)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>sampler2D</td>
|
||||
<td>[page:Texture THREE.Texture]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>samplerCube</td>
|
||||
<td>[page:CubeTexture THREE.CubeTexture]</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
(*) نفس الشيء بالنسبة لمصفوفة (الأبعاد الداخلية) من نفس نوع GLSL،
|
||||
تحتوي على مكونات جميع المتجهات أو المصفوفات في المصفوفة.
|
||||
</p>
|
||||
|
||||
<h2>الزي المنظم (Structured Uniforms)</h2>
|
||||
|
||||
<p>
|
||||
في بعض الأحيان ترغب في تنظيم الزي كـ `structs` في كود الشيدر الخاص بك.
|
||||
يجب استخدام النمط التالي حتى يتمكن `three.js` من معالجة
|
||||
بيانات الزي المنظمة.
|
||||
</p>
|
||||
<code>
|
||||
uniforms = {
|
||||
data: {
|
||||
value: {
|
||||
position: new Vector3(),
|
||||
direction: new Vector3( 0, 0, 1 )
|
||||
}
|
||||
}
|
||||
};
|
||||
</code>
|
||||
يمكن تعيين هذا التعريف على كود GLSL التالي:
|
||||
<code>
|
||||
struct Data {
|
||||
vec3 position;
|
||||
vec3 direction;
|
||||
};
|
||||
uniform Data data;
|
||||
</code>
|
||||
|
||||
<h2>الزي المنظم مع المصفوفات (Structured Uniforms with Arrays)</h2>
|
||||
|
||||
<p>
|
||||
من الممكن أيضًا إدارة `structs` في المصفوفات. تبدو صياغة هذه الحالة
|
||||
الاستخدام كما يلي:
|
||||
</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>
|
||||
يمكن تعيين هذا التعريف على كود GLSL التالي:
|
||||
<code>
|
||||
struct Data {
|
||||
vec3 position;
|
||||
vec3 direction;
|
||||
};
|
||||
uniform Data data[ 2 ];
|
||||
</code>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
|
||||
<h3>[name]( [param:Object value] )</h3>
|
||||
<p>
|
||||
value -- كائن يحتوي على القيمة لإعداد الزى. يجب أن يكون نوعه
|
||||
واحدًا من أنواع الزى المذكورة أعلاه.
|
||||
</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
|
||||
<h3>[property:Object value]</h3>
|
||||
<p>القيمة الحالية للزى.</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>[method:Uniform clone]()</h3>
|
||||
<p>
|
||||
يعود بنسخة من هذا الزى. <br />
|
||||
إذا كانت خاصية قيمة الزى هى [page:Object] مع طريقة clone()،
|
||||
يتم استخدام هذا، وإلا يتم نسخ القيمة عن طريق التعيين. تتشارك قيم المصفوفات بين [page:Uniform]s المنسوخة.
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,60 @@
|
||||
<!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:BufferAttribute] →
|
||||
|
||||
<h1>BufferAttribute Types</h1>
|
||||
|
||||
<p class="desc">
|
||||
تتوفر في three.js تسعة أنواع من [page:BufferAttribute].
|
||||
تتوافق هذه الموجودات مع [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax Typed Arrays] في JavaScript.
|
||||
</p>
|
||||
|
||||
<code>
|
||||
THREE.Float32BufferAttribute
|
||||
THREE.Float16BufferAttribute
|
||||
THREE.Uint32BufferAttribute
|
||||
THREE.Int32BufferAttribute
|
||||
THREE.Uint16BufferAttribute
|
||||
THREE.Int16BufferAttribute
|
||||
THREE.Uint8ClampedBufferAttribute
|
||||
THREE.Uint8BufferAttribute
|
||||
THREE.Int8BufferAttribute
|
||||
</code>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
|
||||
<p>يتم استدعاء كل من الأعلاف بنفس الطريقة.</p>
|
||||
|
||||
<h3>
|
||||
TypedBufferAttribute( [param:Array_or_Integer array], [param:Integer itemSize], [param:Boolean normalized] )
|
||||
</h3>
|
||||
<p>
|
||||
array -- يمكن أن يكون هذا مصفوفة مكتوبة أو غير مكتوبة، أو طول الصحيح. سيتم تحويل قيمة المصفوفة إلى النوع المحدد. إذا تم توفير طول، فسيتم إنشاء TypedArray جديد، والذي سيتم تهيئته بجميع العناصر بقيم صفر.<br /><br />
|
||||
|
||||
itemSize -- عدد القيم التي يجب أن ترتبط بنقطة فريدة. <br /><br />
|
||||
|
||||
normalized -- (اختياري) يشير إلى كيفية تطابق البيانات الأساسية في الذاكرة المؤقتة مع القيم الموجودة في رمز GLSL.
|
||||
</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
|
||||
<p>انظر صفحة [page:BufferAttribute] للخصائص الموروثة.</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<p>انظر صفحة [page:BufferAttribute] للأساليب الموروثة.</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/core/BufferAttribute.js src/core/BufferAttribute.js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,36 @@
|
||||
<!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:Number toHalfFloat]( [param:Number val] )</h3>
|
||||
<p>
|
||||
val -- قيمة عائمة بدقة مفردة.<br /><br />
|
||||
|
||||
يعود بقيمة عائمة نصف الدقة من القيمة العائمة بدقة مفردة المعطاة.
|
||||
</p>
|
||||
|
||||
<h3>[method:Number fromHalfFloat]( [param:Number val] )</h3>
|
||||
<p>
|
||||
val -- قيمة عائمة نصف الدقة.<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>
|
@ -0,0 +1,33 @@
|
||||
<!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">
|
||||
تنفيذ لخوارزمية تثليث المضلع earcut. الكود هو نقل من [link:https://github.com/mapbox/earcut mapbox/earcut].
|
||||
</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>[method:Array triangulate]( data, holeIndices, dim )</h3>
|
||||
<p>
|
||||
data -- مصفوفة مسطحة من إحداثيات الرأس.<br />
|
||||
holeIndices -- مصفوفة من فهارس الثقوب إن وجدت.<br />
|
||||
dim -- عدد الإحداثيات لكل رأس في المصفوفة الإدخال.<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>
|
@ -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">فئة تحتوي على دوال مساعدة للصور.</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>
|
||||
[method:String getDataURL]( [param:HTMLCanvasElement image] |
|
||||
[param:HTMLImageElement image] | [param:ImageBitmap image] )
|
||||
</h3>
|
||||
<p>
|
||||
image -- كائن الصورة.<br /><br />
|
||||
|
||||
يعود بـ URI بيانات يحتوي على تمثيل للصورة المعطاة.
|
||||
</p>
|
||||
|
||||
<h3>
|
||||
[method:Object sRGBToLinear]( [param:HTMLCanvasElement image] |
|
||||
[param:HTMLImageElement image] | [param:ImageBitmap image] )
|
||||
</h3>
|
||||
<p>
|
||||
image -- كائن الصورة.<br /><br />
|
||||
|
||||
يحول بيانات الصورة sRGB المعطاة إلى مساحة اللون الخطية.
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</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">
|
||||
<h1>[name]</h1>
|
||||
|
||||
<p class="desc">
|
||||
تولد هذه الفئة خريطة بيئة إشعاعية محددة مسبقًا ومتدرجة (PMREM) من نسيج بيئة cubeMap. يسمح هذا بالوصول السريع إلى مستويات مختلفة من التشويش بناءً على خشونة المادة. على عكس سلسلة mipmap التقليدية ، فإنها تنخفض فقط إلى مستوى LOD_MIN (أعلاه) ، ثم تنشئ "mips" إضافية مُصفاة حتى أكثر في نفس دقة LOD_MIN ، المرتبطة بمستويات خشونة أعلى. بهذه الطريقة نحافظ على الدقة لتداخل الإضاءة المنتشرة بسلاسة مع تحديد حسابات العينات.<br /><br />
|
||||
|
||||
ملاحظة: يعتمد خشونة [page:MeshStandardMaterial] الأدنى على حجم النسيج المقدم. إذا كانت عملية التصيير لديك أبعادًا صغيرة أو كانت الأجزاء اللامعة لديها الكثير من التقوس ، فقد لا تزال قادرًا على التخلص من حجم نسيج أصغر.
|
||||
</p>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>حجم النسيج (texture size)</th>
|
||||
<td>الخشونة الدنيا (minimum roughness)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>16</td>
|
||||
<td>0.21</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>32</td>
|
||||
<td>0.15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>64</td>
|
||||
<td>0.11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>128</td>
|
||||
<td>0.076</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>256</td>
|
||||
<td>0.054</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>512</td>
|
||||
<td>0.038</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1024</td>
|
||||
<td>0.027</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
|
||||
<h3>[name]( [param:WebGLRenderer renderer] )</h3>
|
||||
<p>ينشئ هذا المنشئ [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] - المشهد المعطى.<br />
|
||||
[page:Number sigma] - (اختياري) يحدد نصف قطر التشويش بالراديان ليتم تطبيقه على المشهد قبل إنشاء PMREM. الافتراضي هو `0`.<br />
|
||||
[page:Number near] - (اختياري) قيمة السطح القريب. الافتراضي هو `0.1`.<br />
|
||||
[page:Number far] - (اختياري) قيمة السطح البعيد. الافتراضي هو `100`.<br /><br />
|
||||
|
||||
يولد PMREM من مشهد معطى ، والذي يمكن أن يكون أسرع من استخدام صورة إذا كانت عرض النطاق الترددي للشبكة منخفضة. تضمن الأسطح القريبة والبعيدة الاختيارية عرض المشهد بأكمله (يتم وضع cubeCamera في المنشأ).
|
||||
</p>
|
||||
|
||||
<h3>
|
||||
[method:WebGLRenderTarget fromEquirectangular]( [param:Texture equirectangular] )
|
||||
</h3>
|
||||
<p>
|
||||
[page:Texture equirectangular] - نسيج equirectangular.<br /><br />
|
||||
|
||||
يولد PMREM من نسيج equirectangular.
|
||||
</p>
|
||||
|
||||
<h3>
|
||||
[method:WebGLRenderTarget fromCubemap]( [param:CubeTexture cubemap] )
|
||||
</h3>
|
||||
<p>
|
||||
[page:CubeTexture cubemap] - نسيج cubemap.<br /><br />
|
||||
|
||||
يولد PMREM من نسيج cubemap.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined compileCubemapShader]()</h3>
|
||||
<p>
|
||||
يجمع مسبقًا شادر cubemap. يمكنك الحصول على بدء تشغيل أسرع عن طريق استدعاء هذه الطريقة أثناء جلب شبكة نسيجك لزيادة التزامن.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined compileEquirectangularShader]()</h3>
|
||||
<p>
|
||||
يجمع مسبقًا شادر equirectangular. يمكنك الحصول على بدء تشغيل أسرع عن طريق استدعاء هذه الطريقة أثناء جلب شبكة نسيجك لزيادة التزامن.
|
||||
</p>
|
||||
|
||||
<h3>[method:undefined dispose]()</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>
|
@ -0,0 +1,52 @@
|
||||
<!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 />
|
||||
|
||||
لاحظ أن هذه كلها دوال خطية لذلك يجب حسابها بشكل منفصل لمكونات x و y (و z و w إذا كانت موجودة) من متجه.
|
||||
</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>[method:Number area]( contour )</h3>
|
||||
<p>
|
||||
contour -- مضلع 2D. مصفوفة من THREE.Vector2()<br /><br />
|
||||
|
||||
حساب مساحة مضلع (2D) المحيط.
|
||||
</p>
|
||||
|
||||
<h3>[method:Boolean isClockWise]( pts )</h3>
|
||||
<p>
|
||||
pts -- نقاط تحدد مضلع 2D<br /><br />
|
||||
|
||||
لاحظ أن هذه هي دالة خطية لذلك يجب حسابها بشكل منفصل لمكونات x و y من المضلع.<br /><br />
|
||||
|
||||
يستخدم داخليًا بواسطة [page:Path Path] و [page:ExtrudeGeometry ExtrudeGeometry] و [page:ShapeGeometry ShapeGeometry].
|
||||
</p>
|
||||
|
||||
<h3>[method:Array triangulateShape]( contour, holes )</h3>
|
||||
<p>
|
||||
contour -- مضلع 2D. مصفوفة من [page:Vector2].<br />
|
||||
holes -- مصفوفة تحتوي على مصفوفات من [page:Vector2]s. كل مصفوفة
|
||||
تمثل تعريف ثقب واحد.<br /><br />
|
||||
|
||||
يستخدم داخليًا بواسطة [page:ExtrudeGeometry ExtrudeGeometry] و
|
||||
[page:ShapeGeometry ShapeGeometry] لحساب الوجوه في الأشكال التي بها ثقوب.
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,131 @@
|
||||
<!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">
|
||||
فئة أساسية مجردة لإنشاء كائن [name] يحتوي على طرق للإدراج. لمجموعة من [name]s انظر [page:CurvePath].
|
||||
</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
|
||||
<h3>[name]()</h3>
|
||||
|
||||
<p>ينشئ هذا المُنشئ [name] جديدًا.</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
|
||||
<h3>[property:Integer arcLengthDivisions]</h3>
|
||||
<p>
|
||||
يحدد هذا القيمة عدد الشعبات عند حساب طول الشطر التراكمي للمنحنى عبر [page:.getLengths]. لضمان
|
||||
الدقة عند استخدام طرق مثل [page:.getSpacedPoints]، يوصى بزيادة [page:.arcLengthDivisions] إذا كان المنحنى كبيرًا جدًا. الافتراضي هو 200.
|
||||
</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>[method:Vector getPoint]( [param:Float t], [param:Vector optionalTarget] )</h3>
|
||||
<p>
|
||||
[page:Float t] - موقع على المنحنى. يجب أن يكون في النطاق [0، 1].
|
||||
<br />
|
||||
[page:Vector optionalTarget] - (اختياري) إذا تم تحديده، سيتم نسخ النتيجة في هذا الفيكتور، وإلا سيتم إنشاء فيكتور جديد.
|
||||
<br /><br />
|
||||
|
||||
يعود بفيكتور لموقع معين على المنحنى.
|
||||
</p>
|
||||
|
||||
<h3>[method:Vector getPointAt]( [param:Float u], [param:Vector optionalTarget] )</h3>
|
||||
<p>
|
||||
[page:Float u] - موقع على المنحنى وفقًا لطول القوس. يجب أن يكون في النطاق [0، 1]. <br />
|
||||
[page:Vector optionalTarget] - (اختياري) إذا تم تحديده، سيتم نسخ النتيجة في هذا الفيكتور، وإلا سيتم إنشاء فيكتور جديد.
|
||||
<br /><br />
|
||||
|
||||
يعود بفيكتور لموقع معين على المنحنى وفقًا لطول القوس.
|
||||
</p>
|
||||
|
||||
<h3>[method:Array getPoints]( [param:Integer divisions] )</h3>
|
||||
<p>
|
||||
divisions - عدد الأجزاء التي يتم تقسيم المنحنى إليها. الافتراضي هو `5`.<br /><br />
|
||||
|
||||
يعود بمجموعة من divisions + 1 نقطة باستخدام getPoint( t ).
|
||||
</p>
|
||||
|
||||
<h3>[method:Array getSpacedPoints]( [param:Integer divisions] )</h3>
|
||||
<p>
|
||||
divisions - عدد الأجزاء التي يتم تقسيم المнحنى إليها. الافتراضي هو `5`.<br /><br />
|
||||
|
||||
يعود بمجموعة من divisions + 1 نقطة متساوية المسافات باستخدام getPointAt( u ).
|
||||
</p>
|
||||
|
||||
<h3>[method:Float getLength]()</h3>
|
||||
<p>احصل على إجمالي طول قوس المنحنى.</p>
|
||||
|
||||
<h3>[method:Array getLengths]( [param:Integer divisions] )</h3>
|
||||
<p>احصل على قائمة بطول الشرائح التراكمية.</p>
|
||||
|
||||
<h3>[method:undefined updateArcLengths]()</h3>
|
||||
<p>
|
||||
تحديث ذاكرة التخزين المؤقت للمسافة الشريطية التراكمية. يجب استدعاء الطريقة
|
||||
في كل مرة يتم فيها تغيير معلمات المنحنى. إذا كان المنحنى المحدث جزءًا من
|
||||
منحنى مكون مثل [page:CurvePath]، يجب
|
||||
استدعاء [page:.updateArcLengths]() على المنحنى المكوَّن أيضًا.
|
||||
</p>
|
||||
|
||||
<h3>[method:Float getUtoTmapping]( [param:Float u], [param:Float distance] )</h3>
|
||||
<p>
|
||||
بالنظر إلى u في النطاق (0 .. 1) ، يعود [page:Float t] أيضًا في النطاق
|
||||
(0 .. 1). يمكن استخدام u و t لإعطائك نقاط هي
|
||||
متساوية البعد من نهايات المنحنى ، باستخدام [page:.getPoint].
|
||||
</p>
|
||||
|
||||
<h3>[method:Vector getTangent]( [param:Float t], [param:Vector optionalTarget] )</h3>
|
||||
<p>
|
||||
[page:Float t] - موضع على المنحنى. يجب أن يكون في النطاق [0، 1].
|
||||
<br />
|
||||
[page:Vector optionalTarget] - (اختياري) إذا تم تحديده ، سيتم
|
||||
نسخ النتيجة في هذا Vector ، وإلا سيتم إنشاء Vector جديد.
|
||||
<br /><br />
|
||||
|
||||
يعود بمتجه وحدة مماس على t. إذا لم يكن المنحنى المشتق
|
||||
تطبيق تفريعه المماس ، سيتم استخدام نقطتين صغيرتين delta بعيدًا للعثور على التدرج الذي يبدو أنه يعطي تقريبًا معقولًا.
|
||||
</p>
|
||||
|
||||
<h3>[method:Vector getTangentAt]( [param:Float u], [param:Vector optionalTarget] )</h3>
|
||||
<p>
|
||||
[page:Float u] - موقع على المنحنى وفقًا لطول القوس. يجب أن يكون في النطاق [0، 1].
|
||||
|
||||
[page:Vector optionalTarget] - (اختياري) إذا تم تحديده، سيتم نسخ النتيجة في هذا الفيكتور، وإلا سيتم إنشاء فيكتور جديد.
|
||||
|
||||
يعود الميل في نقطة تبعد مسافة متساوية عن طرفي المنحنى من النقطة المعطاة في [page:.getTangent].
|
||||
</p>
|
||||
|
||||
<h3>[method:Object computeFrenetFrames]( [param:Integer segments], [param:Boolean closed] )</h3>
|
||||
<p>
|
||||
إنشاء Frenet Frames. يتطلب تعريف منحى في فضاء 3D. مستخدم
|
||||
في هَیْأَات مثل [page:TubeGeometry] أو [page:ExtrudeGeometry].
|
||||
</p>
|
||||
|
||||
<h3>[method:Curve clone]()</h3>
|
||||
<p>إنشاء نسخة من هذه الحالة.</p>
|
||||
|
||||
<h3>[method:this copy]( [param:Curve source] )</h3>
|
||||
<p>يلصق كائن [name] آخر إلى هذه الحالة.</p>
|
||||
|
||||
<h3>[method:Object toJSON]()</h3>
|
||||
<p>يرجع كائن JSON لتمثيل هذه الحالة.</p>
|
||||
|
||||
<h3>[method:this fromJSON]( [param:Object json] )</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>
|
@ -0,0 +1,72 @@
|
||||
<!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:Curve] →
|
||||
|
||||
<h1>[name]</h1>
|
||||
|
||||
<p class="desc">
|
||||
فئة أساسية مجردة تمتد [page:Curve]. مسار المنحنى هو مجرد
|
||||
مصفوفة من المنحنيات المتصلة، ولكنها تحتفظ بواجهة برمجة التطبيقات الخاصة بالمنحنى.
|
||||
</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
|
||||
<h3>[name]()</h3>
|
||||
<p>لا يأخذ المُنشئ أي معلمات.</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
<p>انظر فئة [page:Curve] الأساسية للخصائص المشتركة.</p>
|
||||
|
||||
<h3>[property:Array curves]</h3>
|
||||
<p>مصفوفة من [page:Curve Curves].</p>
|
||||
|
||||
<h3>[property:Boolean autoClose]</h3>
|
||||
<p>ما إذا كان يجب إغلاق المسار تلقائيًا أم لا.</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
<p>انظر فئة [page:Curve] الأساسية للأساليب المشتركة.</p>
|
||||
|
||||
<h3>[method:undefined add]( [param:Curve curve] )</h3>
|
||||
<p>إضافة منحى إلى مصفوفة [page:.curves].</p>
|
||||
|
||||
<h3>[method:this closePath]()</h3>
|
||||
<p>يضيف [page:LineCurve lineCurve] لإغلاق المسار.</p>
|
||||
|
||||
<h3>[method:Array getCurveLengths]()</h3>
|
||||
<p>
|
||||
الحصول على قائمة بطول القطع التراكمية للمنحنيات في مصفوفة [page:.curves].
|
||||
</p>
|
||||
|
||||
<h3>[method:Array getPoints]( [param:Integer divisions] )</h3>
|
||||
<p>
|
||||
divisions -- عدد قطع التقسيم إلى المنحنى. الافتراضي هو
|
||||
`12`.<br /><br />
|
||||
|
||||
يعود بمصفوفة من النقاط التي تمثل تسلسل منحنيات. يُعرِّف معلم `division`
|
||||
عدد القطع التي يتم تقسيم كل منحى إليها. ومع ذلك، لأغراض التحسين والجودة،
|
||||
يعتمد دقة العينات الفعلية لكل منحى على نوعه. على سبيل المثال، بالنسبة
|
||||
لـ[page:LineCurve]، يكون عدد النقاط المُستَرَجَعَ دائمًا 2 فقط.
|
||||
</p>
|
||||
|
||||
<h3>[method:Array getSpacedPoints]( [param:Integer divisions] )</h3>
|
||||
<p>
|
||||
divisions -- عدد قطع التقسيم إلى المنحنى. الافتراضي هو
|
||||
`40`.<br /><br />
|
||||
|
||||
يعود بمجموعة من divisions + 1 نقط متساوية المسافات باستخدام getPointAt( u ).
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,52 @@
|
||||
<!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">
|
||||
يحتوي [name] على دوال الشريط وبيزيه المستخدمة داخليًا من قبل
|
||||
فئات المنحنى الخرسانية.
|
||||
</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
|
||||
<h3>[method:Float CatmullRom]( [param:Float t], [param:Float p0], [param:Float p1], [param:Float p2], [param:Float p3] )</h3>
|
||||
<p>
|
||||
t -- وزن التداخل.<br />
|
||||
p0، p1، p2، p3 -- النقاط التي تُعرِّف منحى الشريط.<br /><br />
|
||||
|
||||
يُستخدم داخليًا بواسطة [page:SplineCurve SplineCurve].
|
||||
</p>
|
||||
|
||||
<h3>[method:Float QuadraticBezier]( [param:Float t], [param:Float p0], [param:Float p1], [param:Float p2] )</h3>
|
||||
<p>
|
||||
t -- وزن التداخل.<br />
|
||||
p0، p1، p2 -- نقاط البدء والتحكم والنهاية التي تُعرِّف المنحى.<br /><br />
|
||||
|
||||
يُستخدم داخليًا بواسطة [page:QuadraticBezierCurve3 QuadraticBezierCurve3] و
|
||||
[page:QuadraticBezierCurve QuadraticBezierCurve].
|
||||
</p>
|
||||
|
||||
<h3>[method:Float CubicBezier]( [param:Float t], [param:Float p0], [param:Float p1], [param:Float p2], [param:Float p3] )</h3>
|
||||
<p>
|
||||
t -- وزن التداخل.<br />
|
||||
p0، p1، p2، p3 -- نقاط البدء والتحكم (مرتين) والنهاية التي تُعرِّف
|
||||
المنحى.<br /><br />
|
||||
|
||||
يُستخدم داخليًا بواسطة [page:CubicBezierCurve3 CubicBezierCurve3] و
|
||||
[page:CubicBezierCurve CubicBezierCurve].
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,160 @@
|
||||
<!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:Curve] → [page:CurvePath] →
|
||||
|
||||
<h1>[name]</h1>
|
||||
|
||||
<p class="desc">
|
||||
تمثيل مسار ثنائي الأبعاد. توفر الفئة طرقًا لإنشاء مسارات
|
||||
ومحيطات الأشكال ثنائية الأبعاد المشابهة لواجهة برمجة التطبيقات Canvas 2D.
|
||||
</p>
|
||||
|
||||
<h2>مثال الكود</h2>
|
||||
|
||||
<code>
|
||||
const path = new THREE.Path();
|
||||
|
||||
path.lineTo( 0, 0.8 );
|
||||
path.quadraticCurveTo( 0, 1, 0.2, 1 );
|
||||
path.lineTo( 1, 1 );
|
||||
|
||||
const points = path.getPoints();
|
||||
|
||||
const geometry = new THREE.BufferGeometry().setFromPoints( points );
|
||||
const material = new THREE.LineBasicMaterial( { color: 0xffffff } );
|
||||
|
||||
const line = new THREE.Line( geometry, material );
|
||||
scene.add( line );
|
||||
</code>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
|
||||
<h3>[name]( [param:Array points] )</h3>
|
||||
<p>
|
||||
points -- (اختياري) مصفوفة من [page:Vector2 Vector2s].<br /><br />
|
||||
|
||||
يُنشئ مسارًا من النقاط. يُعرِّف النقطة الأولى الإزاحة، ثُم
|
||||
يتم إضافة النقاط المتتالية إلى مصفوفة [page:CurvePath.curves curves] كـ
|
||||
[page:LineCurve LineCurves].<br /><br />
|
||||
|
||||
إذا لم يتم تحديد أي نقاط، يتم إنشاء مسار فارغ ويتم تعيين
|
||||
[page:.currentPoint] على المنشأ.
|
||||
</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
<p>انظر فئة [page:CurvePath] الأساسية للخصائص المشتركة.</p>
|
||||
|
||||
<h3>[property:Vector2 currentPoint]</h3>
|
||||
<p>
|
||||
الإزاحة الحالية للمسار. سيبدأ أي [page:Curve] جديد يتم إضافته
|
||||
هنا.
|
||||
</p>
|
||||
|
||||
<h2>الوظائف (Methods)</h2>
|
||||
<p>انظر فئة [page:CurvePath] الأساسية للأساليب المشتركة.</p>
|
||||
|
||||
<h3>[method:this absarc]( [param:Float x], [param:Float y], [param:Float radius], [param:Float startAngle], [param:Float endAngle], [param:Boolean clockwise] )</h3>
|
||||
<p>
|
||||
x، y -- مركز القوس المطلق.<br />
|
||||
radius -- نصف قطر القوس.<br />
|
||||
startAngle -- زاوية البدء بالراديان.<br />
|
||||
endAngle -- زاوية النهاية بالراديان.<br />
|
||||
clockwise -- تدوير القوس في اتجاه عقارب الساعة. يعتمد على `false`.<br /><br />
|
||||
|
||||
يضيف [page:EllipseCurve EllipseCurve] مُوضَعًا مطلقًا إلى
|
||||
المسار.
|
||||
</p>
|
||||
|
||||
<h3>[method:this absellipse]( [param:Float x], [param:Float y], [param:Float xRadius], [param:Float yRadius], [param:Float startAngle], [param:Float endAngle], [param:Boolean clockwise], [param:Float rotation] )</h3>
|
||||
<p>
|
||||
x، y -- مركز القطع الناقص المطلق.<br />
|
||||
xRadius -- نصف قطر القطع الناقص في المحور x.<br />
|
||||
yRadius -- نصف قطر القطع الناقص في المحور y.<br />
|
||||
startAngle -- زاوية البدء بالراديان.<br />
|
||||
endAngle -- زاوية النهاية بالراديان.<br />
|
||||
clockwise -- تدوير القطع الناقص في اتجاه عقارب الساعة. يعتمد على false.<br />
|
||||
rotation -- زاوية دوران القطع الناقص بالراديان، عكس اتجاه عقارب
|
||||
من المحور X الموجب. اختياري، يعتمد على 0.<br /><br />
|
||||
|
||||
يضيف [page:EllipseCurve EllipseCurve] مُوضَعًا مطلقًا إلى
|
||||
المسار.
|
||||
</p>
|
||||
|
||||
<h3>[method:this arc]( [param:Float x], [param:Float y], [param:Float radius], [param:Float startAngle], [param:Float endAngle], [param:Boolean clockwise] )</h3>
|
||||
<p>
|
||||
x، y -- مركز القوس المُزَوَّد من آخر استدعاء.<br />
|
||||
radius -- نصف قطر القوس.<br />
|
||||
startAngle -- زاوية البدء بالراديان.<br />
|
||||
endAngle -- زاوية النهاية بالراديان.<br />
|
||||
clockwise -- تدوير القوس في اتجاه عقارب الساعة. يعتمد على `false`.<br /><br />
|
||||
|
||||
يضيف [page:EllipseCurve EllipseCurve] إلى المسار، مُوضَعًا نسبيًا
|
||||
إلى [page:.currentPoint].
|
||||
</p>
|
||||
|
||||
<h3>[method:this bezierCurveTo]( [param:Float cp1X], [param:Float cp1Y], [param:Float cp2X], [param:Float cp2Y], [param:Float x], [param:Float y] )</h3>
|
||||
<p>
|
||||
يُنشئ منحى بيزيه من [page:.currentPoint] مع (cp1X، cp1Y)
|
||||
و(cp2X، cp2Y) كنقاط تحكم ويُحدِّث [page:.currentPoint] إلى x
|
||||
و y.
|
||||
</p>
|
||||
|
||||
<h3>[method:this ellipse]( [param:Float x], [param:Float y], [param:Float xRadius], [param:Float yRadius], [param:Float startAngle], [param:Float endAngle], [param:Boolean clockwise], [param:Float rotation] )</h3>
|
||||
<p>
|
||||
x، y -- مركز القطع الناقص المُزَوَّد من آخر استدعاء.<br />
|
||||
xRadius -- نصف قطر القطع الناقص في المحور x.<br />
|
||||
yRadius -- نصف قطر القطع الناقص في المحور y.<br />
|
||||
startAngle -- زاوية البدء بالراديان.<br />
|
||||
endAngle -- زاوية النهاية بالراديان.<br />
|
||||
clockwise -- تدوير القطع الناقص في اتجاه عقارب الساعة. يعتمد على `false`.<br />
|
||||
rotation -- زاوية دوران القطع الناقص بالراديان، عكس اتجاه عقارب
|
||||
من المحور X الموجب. اختياري، يعتمد على `0`.<br /><br />
|
||||
|
||||
يضيف [page:EllipseCurve EllipseCurve] إلى المسار، مُوضَعًا نسبيًا
|
||||
إلى [page:.currentPoint].
|
||||
</p>
|
||||
|
||||
<h3>[method:this lineTo]( [param:Float x], [param:Float y] )</h3>
|
||||
<p>
|
||||
يُربِط [page:LineCurve] من [page:.currentPoint] إلى x، y على
|
||||
المسار.
|
||||
</p>
|
||||
|
||||
<h3>[method:this moveTo]( [param:Float x], [param:Float y] )</h3>
|
||||
<p>تحريك [page:.currentPoint] إلى x، y.</p>
|
||||
|
||||
<h3>[method:this quadraticCurveTo]( [param:Float cpX], [param:Float cpY], [param:Float x], [param:Float y] )</h3>
|
||||
<p>
|
||||
يُنشئ منحى رباعي من [page:.currentPoint] مع cpX و cpY كـ
|
||||
نقطة تحكم ويُحدِّث [page:.currentPoint] إلى x و y.
|
||||
</p>
|
||||
|
||||
<h3>[method:this setFromPoints]( [param:Array vector2s] )</h3>
|
||||
<p>
|
||||
points -- مصفوفة من [page:Vector2 Vector2s].<br /><br />
|
||||
|
||||
يتم إضافة النقاط إلى مصفوفة [page:CurvePath.curves curves] كـ
|
||||
[page:LineCurve LineCurves].
|
||||
</p>
|
||||
|
||||
<h3>[method:this splineThru] ( [param:Array points] )</h3>
|
||||
<p>
|
||||
points - مصفوفة من [page:Vector2 Vector2s]<br /><br />
|
||||
|
||||
يُربِط منحى جديدًا من نوع SplineCurve على المسار.
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,104 @@
|
||||
<!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:Curve] → [page:CurvePath] → [page:Path] →
|
||||
|
||||
<h1>[name]</h1>
|
||||
|
||||
<p class="desc">
|
||||
يعرف شكل طائرة 2d تعسفي باستخدام مسارات مع ثقوبات اختيارية. يمكن استخدامه مع [page:ExtrudeGeometry]، [page:ShapeGeometry]، للحصول على نقاط، أو للحصول على وجوه مثلثة.
|
||||
</p>
|
||||
|
||||
<h2>مثال الكود</h2>
|
||||
|
||||
<code>
|
||||
const heartShape = new THREE.Shape();
|
||||
|
||||
heartShape.moveTo( 25, 25 );
|
||||
heartShape.bezierCurveTo( 25, 25, 20, 0, 0, 0 );
|
||||
heartShape.bezierCurveTo( - 30, 0, - 30, 35, - 30, 35 );
|
||||
heartShape.bezierCurveTo( - 30, 55, - 10, 77, 25, 95 );
|
||||
heartShape.bezierCurveTo( 60, 77, 80, 55, 80, 35 );
|
||||
heartShape.bezierCurveTo( 80, 35, 80, 0, 50, 0 );
|
||||
heartShape.bezierCurveTo( 35, 0, 25, 25, 25, 25 );
|
||||
|
||||
const extrudeSettings = {
|
||||
depth: 8,
|
||||
bevelEnabled: true,
|
||||
bevelSegments: 2,
|
||||
steps: 2,
|
||||
bevelSize: 1,
|
||||
bevelThickness: 1
|
||||
};
|
||||
|
||||
const geometry = new THREE.ExtrudeGeometry( heartShape, extrudeSettings );
|
||||
|
||||
const mesh = new THREE.Mesh( geometry, new THREE.MeshPhongMaterial() );
|
||||
</code>
|
||||
|
||||
<h2>أمثلة (Examples)</h2>
|
||||
|
||||
<p>
|
||||
[example:webgl_geometry_shapes geometry / shapes ]<br />
|
||||
[example:webgl_geometry_extrude_shapes geometry / extrude / shapes ]
|
||||
</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
|
||||
<h3>[name]( [param:Array points] )</h3>
|
||||
<p>
|
||||
points -- (اختياري) مصفوفة من [page:Vector2 Vector2s].<br /><br />
|
||||
|
||||
ينشئ شكل من النقاط. يحدد النقطة الأولى الإزاحة، ثم يتم إضافة النقاط المتعاقبة إلى مصفوفة [page:CurvePath.curves curves] كـ
|
||||
[page:LineCurve LineCurves].<br /><br />
|
||||
|
||||
إذا لم يتم تحديد أي نقاط، يتم إنشاء شكل فارغ ويتم تعيين
|
||||
[page:.currentPoint] على المنشأ.
|
||||
</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
<p>انظر فئة [page:Path] الأساسية للخصائص المشتركة.</p>
|
||||
|
||||
<h3>[property:String uuid]</h3>
|
||||
<p>
|
||||
[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] من
|
||||
هذه الحالة. يتم تعيين هذا تلقائيًا، لذلك لا يجب تحريره.
|
||||
</p>
|
||||
|
||||
<h3>[property:Array holes]</h3>
|
||||
<p>مصفوفة من [page:Path paths] التي تحدد الثقوب في الشكل.</p>
|
||||
|
||||
<h2>الطرق (Methods)</h2>
|
||||
<p>انظر فئة [page:Path] الأساسية للطرق المشتركة.</p>
|
||||
|
||||
<h3>[method:Array extractPoints]( [param:Integer divisions] )</h3>
|
||||
<p>
|
||||
divisions -- دقة النتيجة.<br /><br />
|
||||
|
||||
استدعاء [page:Curve.getPoints getPoints] على الشكل ومصفوفة [page:.holes]
|
||||
، وإرجاع كائن من الشكل:
|
||||
<code> { shape holes } </code>
|
||||
حيث shape و holes هما مصفوفات من [page:Vector2 Vector2s].
|
||||
</p>
|
||||
|
||||
<h3>[method:Array getPointsHoles]( [param:Integer divisions] )</h3>
|
||||
<p>
|
||||
divisions -- دقة النتيجة.<br /><br />
|
||||
|
||||
احصل على مصفوفة من [page:Vector2 Vector2s] التي تمثل الثقوب في
|
||||
الشكل.
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,93 @@
|
||||
<!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">
|
||||
يتم استخدام هذه الفئة لتحويل سلسلة من الأشكال إلى مصفوفة من
|
||||
[page:Path]s، على سبيل المثال شكل SVG إلى مسار.
|
||||
</p>
|
||||
|
||||
<h2>المنشئ (Constructor)</h2>
|
||||
|
||||
<h3>[name]( )</h3>
|
||||
<p>
|
||||
ينشئ ShapePath جديد. على عكس [page:Path]، لا تتم مرور أي نقاط كما
|
||||
يتم تصميم ShapePath ليتم إنشاؤه بعد الإنشاء.
|
||||
</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
|
||||
<h3>[property:Array subPaths]</h3>
|
||||
<p>مصفوفة من [page:Path]s.</p>
|
||||
|
||||
<h3>[property:Array currentPath]</h3>
|
||||
<p>[page:Path] الحالي الذي يتم إنشاؤه.</p>
|
||||
|
||||
<h3>[property:Color color]</h3>
|
||||
<p>[page:Color] من الشكل، بشكل افتراضي مضبوط على الأبيض (0xffffff).</p>
|
||||
|
||||
<h2>الطرق (Methods)</h2>
|
||||
|
||||
<h3>[method:this moveTo]( [param:Float x], [param:Float y] )</h3>
|
||||
<p>
|
||||
يبدأ [page:Path] جديد ويستدعي [page:Path.moveTo]( x, y ) على ذلك
|
||||
[page:Path]. كما يشير [page:ShapePath.currentPath currentPath] إلى ذلك
|
||||
[page:Path].
|
||||
</p>
|
||||
|
||||
<h3>[method:this lineTo]( [param:Float x], [param:Float y] )</h3>
|
||||
<p>
|
||||
هذا ينشئ خطًا من إزاحة [page:ShapePath.currentPath currentPath]
|
||||
إلى X و Y ويحدث الإزاحة إلى X و Y.
|
||||
</p>
|
||||
|
||||
<h3>
|
||||
[method:this quadraticCurveTo]( [param:Float cpX], [param:Float cpY], [param:Float x], [param:Float y] )
|
||||
</h3>
|
||||
<p>
|
||||
هذا ينشئ منحنى ثنائي الحدود من إزاحة [page:ShapePath.currentPath currentPath]
|
||||
إلى x و y مع cpX و cpY كنقطة تحكم و
|
||||
يحدث إزاحة [page:ShapePath.currentPath currentPath]
|
||||
إلى x و y.
|
||||
</p>
|
||||
|
||||
|
||||
<h3>
|
||||
[method:this bezierCurveTo]( [param:Float cp1X], [param:Float cp1Y], [param:Float cp2X], [param:Float cp2Y], [param:Float x], [param:Float y] )
|
||||
</h3>
|
||||
<p>
|
||||
هذا ينشئ منحنى بيزيه من إزاحة [page:ShapePath.currentPath currentPath]
|
||||
إلى x و y مع cp1X و cp1Y و cp2X و cp2Y كنقاط تحكم
|
||||
ويحدث إزاحة [page:ShapePath.currentPath currentPath]
|
||||
إلى x و y.
|
||||
</p>
|
||||
|
||||
<h3>[method:this splineThru] ( [param:Array points] )</h3>
|
||||
<p>points - مصفوفة من [page:Vector2]s</p>
|
||||
<p>
|
||||
يربط [page:SplineCurve] جديد على [page:ShapePath.currentPath currentPath].
|
||||
</p>
|
||||
|
||||
<h3>[method:Array toShapes]( [param:Boolean isCCW] )</h3>
|
||||
<p>isCCW -- يغير كيفية إنشاء الأشكال الصلبة والثقوب</p>
|
||||
<p>
|
||||
يحول مصفوفة [page:ShapePath.subPaths subPaths] إلى مصفوفة من
|
||||
الأشكال. بشكل افتراضي، يتم تعريف الأشكال الصلبة باتجاه عقارب الساعة (CW) ويتم تعريف الثقوب بعكس اتجاه عقارب الساعة (CCW). إذا تم تعيين isCCW على true، فإن هذه
|
||||
مقلوب.
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/extras/core/ShapePath.js src/extras/core/ShapePath.js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,24 @@
|
||||
<!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:Curve] → [page:EllipseCurve] →
|
||||
|
||||
<h1>[name]</h1>
|
||||
|
||||
<p class="desc">اسم مستعار لـ [page:EllipseCurve].</p>
|
||||
|
||||
<h2>الخصائص (Properties)</h2>
|
||||
<p>راجع فئة [page:EllipseCurve] للحصول على الخصائص المشتركة.</p>
|
||||
|
||||
<h2>المصدر (Source)</h2>
|
||||
<p>
|
||||
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue