feat(All):Initial
This commit is contained in:
commit
2b4e5d2668
24
.gitignore
vendored
Normal file
24
.gitignore
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
|
||||||
|
node_modules
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
*.local
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/extensions.json
|
||||||
|
.idea
|
||||||
|
.DS_Store
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
||||||
60
CONTRIBUTING.md
Normal file
60
CONTRIBUTING.md
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
# 贡献指南
|
||||||
|
|
||||||
|
欢迎来到 Astral 3D 社区!以下是参与贡献的指南:
|
||||||
|
|
||||||
|
## 🛠️ 开发流程
|
||||||
|
|
||||||
|
### 环境要求
|
||||||
|
- Node.js 18+
|
||||||
|
- Yarn
|
||||||
|
|
||||||
|
### 代码规范
|
||||||
|
1. Git 提交信息格式:
|
||||||
|
```
|
||||||
|
<type>(<scope>): <subject>
|
||||||
|
- type: feat|fix|docs|style|refactor|test|chore
|
||||||
|
- scope: Editor|Preview|Home|SDK 等模块范围
|
||||||
|
- subject: 50字内简明描述
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 前端规范:
|
||||||
|
- Vue 组件使用 Composition API
|
||||||
|
- TypeScript 严格模式
|
||||||
|
- CSS 使用 UnoCSS 原子化方案
|
||||||
|
|
||||||
|
## 🐛 问题报告
|
||||||
|
使用 [GitHub Issues](https://github.com/mlt131220/Astral3D/issues) 时请包含:
|
||||||
|
1. 环境信息(OS/浏览器/Node版本)
|
||||||
|
2. 重现步骤
|
||||||
|
3. 预期与实际行为
|
||||||
|
4. 相关截图/日志
|
||||||
|
|
||||||
|
## ✨ 功能建议
|
||||||
|
1. 在 Discussions 发起提案讨论
|
||||||
|
2. 提供使用场景描述
|
||||||
|
3. 如有原型设计请附示意图
|
||||||
|
|
||||||
|
## 🌐 国际化
|
||||||
|
添加新语言请按以下步骤:
|
||||||
|
1. 在 `src/language` 创建语言文件
|
||||||
|
2. 会以文件名作为语言标识符 注册新语言
|
||||||
|
3. 在 `src/components/setting/common/Locale.vue` 中添加新语言选项
|
||||||
|
4. 提交 Pull Request 并 @ 维护者
|
||||||
|
|
||||||
|
## 🔄 代码提交
|
||||||
|
1. Fork 仓库并创建特性分支
|
||||||
|
2. 编写单元测试(重要功能必须包含)
|
||||||
|
3. 执行代码检查:
|
||||||
|
```bash
|
||||||
|
yarn lint
|
||||||
|
```
|
||||||
|
4. 发起 Pull Request 至 dev 分支
|
||||||
|
|
||||||
|
## 🏅 贡献者公约
|
||||||
|
请遵守 [贡献者公约](https://www.contributor-covenant.org/version/2/1/code_of_conduct/),我们承诺:
|
||||||
|
- 友好包容的交流环境
|
||||||
|
- 尊重不同的开发经验
|
||||||
|
- 建设性的技术讨论
|
||||||
|
|
||||||
|
## 💼 代码所有权
|
||||||
|
所有贡献代码默认遵循项目 Apache-2.0 协议,作者保留对代码库的最终管理权限。
|
||||||
42
LEGAL.md
Normal file
42
LEGAL.md
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# 法律声明
|
||||||
|
|
||||||
|
## 📜 许可协议
|
||||||
|
本项目采用 [Apache-2.0 许可证](LICENSE),核心条款包括:
|
||||||
|
|
||||||
|
### 您必须遵守:
|
||||||
|
1. **保留声明**
|
||||||
|
所有副本必须包含:
|
||||||
|
- 原始版权声明(见本文件底部)
|
||||||
|
- NOTICE 文件(如有)
|
||||||
|
- 许可证副本
|
||||||
|
|
||||||
|
2. **修改标识**
|
||||||
|
修改后的版本必须:
|
||||||
|
- 在文件头添加显著修改声明
|
||||||
|
- 保留所有现有版权声明
|
||||||
|
|
||||||
|
3. **附加商业条款:**
|
||||||
|
- 直接使用本源码产生的商业行为需获得作者书面授权
|
||||||
|
- 基于本项目的二次开发产品需在显著位置声明原始项目信息
|
||||||
|
|
||||||
|
## ⚠️ 免责声明
|
||||||
|
1. 作者不对使用本项目产生的任何直接/间接损失负责
|
||||||
|
2. 禁止将本项目用于任何违法用途,包括但不限于:
|
||||||
|
- 侵犯他人知识产权
|
||||||
|
- 传播恶意软件
|
||||||
|
- 进行网络攻击
|
||||||
|
- 其他违反当地法律法规的行为
|
||||||
|
|
||||||
|
## ®️ 商标条款
|
||||||
|
1. "Astral"名称及标识为项目作者注册商标
|
||||||
|
2. 未经授权不得:
|
||||||
|
- 使用项目名称进行商业宣传
|
||||||
|
- 修改或隐藏原始项目标识
|
||||||
|
- 在衍生品中使用Astral商标
|
||||||
|
- 暗示与官方项目的关联性
|
||||||
|
|
||||||
|
## ©️ 版权声明
|
||||||
|
2019-2025 © ErSan<mlt131220@163.com>. All rights reserved.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
201
LICENSE
Normal file
201
LICENSE
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright 2024 ErSan
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
108
README.en.md
Normal file
108
README.en.md
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
# <img src="https://editor.astraljs.com/static/images/logo/logo.png" width="30" height="30"> Astral 3D Editor
|
||||||
|
|
||||||
|
🌍 [简体中文](README.md) | English
|
||||||
|
|
||||||
|
[](https://editor.astraljs.com)
|
||||||
|
|
||||||
|
> Modern Web 3D editor based on Vue3 + Three.js
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="http://editor-doc.astraljs.com/images/home/thumbnailDark.png?t=20250518" width="800" alt="Editor City Preview">
|
||||||
|
<img src="http://editor-doc.astraljs.com/images/home/industryDark.png?t=20250318" width="800" alt="Editor Preview">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## 💬 Join the community
|
||||||
|
|
||||||
|
Get the latest news and technical support in the following ways:
|
||||||
|
|
||||||
|
| [](https://upyun.astraljs.com/static/images/QQGroup.jpg) | [-07C160?logo=wechat&logoColor=white)](https://upyun.astraljs.com/static/images/ContactMe.jpg) |
|
||||||
|
|----------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| <img src="https://upyun.astraljs.com/static/images/QQGroup.jpg" width="200"> | <img src="https://upyun.astraljs.com/static/images/ContactMe.jpg" width="200"> |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 🚀 Core competence
|
||||||
|
|
||||||
|
### Core function
|
||||||
|
- ✅ Multi-format support: 30+ model format (GLTF/OBJ/FBX/GLB/RVT/IFC, etc.)
|
||||||
|
- ✅ BIM Model Lightweight Demonstration (RVT/IFC)
|
||||||
|
- ✅ CAD drawing analysis (DWG/DXF)
|
||||||
|
- ✅ Scenario subcontract storage and loading
|
||||||
|
- ✅ Animation editor
|
||||||
|
|
||||||
|
### Expansion capability
|
||||||
|
- 🧩 plug-in system
|
||||||
|
- 📜 When the script is running
|
||||||
|
- 💫 Particle system
|
||||||
|
- ❄️ Weather system
|
||||||
|
- ☁️ Cloud Storage Integration (USS again)
|
||||||
|
- 🎠 Resource center
|
||||||
|
|
||||||
|
### Coming soon
|
||||||
|
- 🚧 Physical engine support
|
||||||
|
- 🚧 WebGPU support
|
||||||
|
- 🚧 Data components (API/WebSocket)
|
||||||
|
- 🚧 low code data large screen
|
||||||
|
- 🚧 WebSocket Multi-party collaboration
|
||||||
|
|
||||||
|
## 🛠️ Technology stack
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
## ⚡ Quick start
|
||||||
|
|
||||||
|
### pre-demand
|
||||||
|
- Node.js ≥ 18.x
|
||||||
|
- Yarn
|
||||||
|
|
||||||
|
### Local run
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/mlt131220/Astral3D.git
|
||||||
|
|
||||||
|
cd Astral3D
|
||||||
|
pnpm install
|
||||||
|
pnpm run sdk:build
|
||||||
|
pnpm run editor:dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### Production construction
|
||||||
|
```bash
|
||||||
|
pnpm run editor:build
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📚 Ecological correlation
|
||||||
|
|
||||||
|
### Back-end implementation
|
||||||
|
[](https://github.com/yx8663/astral-service)
|
||||||
|
|
||||||
|
### Document center
|
||||||
|
[](http://editor-doc.astraljs.com/)
|
||||||
|
|
||||||
|
## ☕ Support project
|
||||||
|
|
||||||
|
If this project is helpful to you, please feel free to:
|
||||||
|
|
||||||
|
1. In case wall [user] (https://github.com/mlt131220/Astral3D/issues/2) leave your usage scenario
|
||||||
|
2. Scan code support developers:
|
||||||
|
|
||||||
|
| AliPay | WeChat |
|
||||||
|
|---------------------------------------------------------------------------|------------------------------------------------------------------------------|
|
||||||
|
| <img src="https://editor-doc.astraljs.com/images/AliPay.png" width="200"> | <img src="https://editor-doc.astraljs.com/images/WeChatPay.png" width="200"> |
|
||||||
|
|
||||||
|
## ⚖️ License agreement
|
||||||
|
|
||||||
|
This project uses the [](LICENSE) open source license, please comply with the following terms:
|
||||||
|
|
||||||
|
- ✅ Allowed: personal learning, secondary development, commercial use
|
||||||
|
- ⚠️ A copyright notice is required.
|
||||||
|
- ❌ Do not use this item for any illegal purpose
|
||||||
|
|
||||||
|
**[Full legal notice](LEGAL.md)** | **[Contribution guide](CONTRIBUTING.md)**
|
||||||
|
|
||||||
|
## 🌟 Star trend
|
||||||
|
|
||||||
|
[](https://star-history.com/#mlt131220/Astral3D&Date)
|
||||||
109
README.md
Normal file
109
README.md
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
# <img src="https://editor.astraljs.com/static/images/logo/logo.png" width="30" height="30"> Astral 3D Editor
|
||||||
|
|
||||||
|
🌍 简体中文 | [English](README.en.md)
|
||||||
|
|
||||||
|
[](https://editor.astraljs.com)
|
||||||
|
|
||||||
|
> 基于 Vue3 + Three.js 的现代 Web 3D 编辑器
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="http://editor-doc.astraljs.com/images/home/thumbnailDark.png?t=20250518" width="800" alt="Editor City Preview">
|
||||||
|
<img src="http://editor-doc.astraljs.com/images/home/industryDark.png?t=20250318" width="800" alt="Editor Preview">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## 💬 加入社区
|
||||||
|
|
||||||
|
通过以下方式获取最新动态和技术支持:
|
||||||
|
|
||||||
|
| [](https://upyun.astraljs.com/static/images/QQGroup.jpg) | [-07C160?logo=wechat&logoColor=white)](https://upyun.astraljs.com/static/images/ContactMe.jpg) |
|
||||||
|
|-----------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| <img src="https://upyun.astraljs.com/static/images/QQGroup.jpg" width="200"> | <img src="https://upyun.astraljs.com/static/images/ContactMe.jpg" width="200"> |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 🚀 核心能力
|
||||||
|
|
||||||
|
### 核心功能
|
||||||
|
- ✅ 多格式支持:[30+ 模型格式(GLTF/OBJ/FBX/GLB/RVT/IFC等)](http://editor-doc.astraljs.com/guide/f7smai4w/#%E5%9F%BA%E7%A1%80%E6%93%8D%E4%BD%9C%E5%8C%BA)
|
||||||
|
- ✅ BIM模型轻量化展示(RVT/IFC)
|
||||||
|
- ✅ CAD图纸解析(DWG/DXF)
|
||||||
|
- ✅ 场景分包存储与加载
|
||||||
|
- ✅ 动画编辑器
|
||||||
|
|
||||||
|
### 扩展能力
|
||||||
|
- 🧩 插件系统
|
||||||
|
- 📜 脚本运行时
|
||||||
|
- 💫 粒子系统
|
||||||
|
- ❄️ 天气系统
|
||||||
|
- ☁️ 云存储集成(又拍云 USS)
|
||||||
|
- 🎠 资源中心
|
||||||
|
|
||||||
|
### 即将到来
|
||||||
|
- 🚧 物理引擎支持
|
||||||
|
- 🚧 WebGPU 支持
|
||||||
|
- 🚧 数据组件(API/WebSocket)
|
||||||
|
- 🚧 低代码数据大屏
|
||||||
|
- 🚧 WebSocket 多人协作
|
||||||
|
|
||||||
|
## 🛠️ 技术栈
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
## ⚡ 快速开始
|
||||||
|
|
||||||
|
### 前置需求
|
||||||
|
- Node.js ≥ 23.0.0
|
||||||
|
- PNPM
|
||||||
|
|
||||||
|
### 本地运行
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/mlt131220/Astral3D.git
|
||||||
|
|
||||||
|
cd Astral3D
|
||||||
|
pnpm install
|
||||||
|
pnpm run sdk:build
|
||||||
|
pnpm run editor:dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### 生产构建
|
||||||
|
```bash
|
||||||
|
pnpm run editor:build
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📚 生态相关
|
||||||
|
|
||||||
|
### 后端实现
|
||||||
|
[](https://github.com/yx8663/astral-service)
|
||||||
|
|
||||||
|
### 文档中心
|
||||||
|
[](http://editor-doc.astraljs.com/)
|
||||||
|
|
||||||
|
## ☕ 支持项目
|
||||||
|
|
||||||
|
如果本项目对您有帮助,欢迎:
|
||||||
|
|
||||||
|
1. 在 [用户案例墙](https://github.com/mlt131220/Astral3D/issues/2) 留下您的使用场景
|
||||||
|
2. 扫码支持开发者:
|
||||||
|
|
||||||
|
| 支付宝 | 微信 |
|
||||||
|
|---------------------------------------------------------------------------|------------------------------------------------------------------------------|
|
||||||
|
| <img src="https://editor-doc.astraljs.com/images/AliPay.png" width="200"> | <img src="https://editor-doc.astraljs.com/images/WeChatPay.png" width="200"> |
|
||||||
|
|
||||||
|
## ⚖️ 许可协议
|
||||||
|
|
||||||
|
本项目采用 [](LICENSE) 开源协议,使用时请遵守以下条款:
|
||||||
|
|
||||||
|
- ✅ 允许:个人学习、二次开发、商业用途
|
||||||
|
- ⚠️ 需要版权声明
|
||||||
|
- ❌ 禁止:将本项目用于非法用途
|
||||||
|
|
||||||
|
**[完整法律声明](LEGAL.md)** | **[贡献指南](CONTRIBUTING.md)**
|
||||||
|
|
||||||
|
## 🌟 Star 趋势
|
||||||
|
|
||||||
|
[](https://star-history.com/#mlt131220/Astral3D&Date)
|
||||||
22
common/build/package.json
Normal file
22
common/build/package.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"name": "@astral3d/build-vite-plugins",
|
||||||
|
"author": "ErSan<mlt131220@163.com>",
|
||||||
|
"private": true,
|
||||||
|
"version": "1.0.0",
|
||||||
|
"type": "module",
|
||||||
|
"main": "./src/index.ts",
|
||||||
|
"dependencies": {
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/fs-extra": "^11.0.3",
|
||||||
|
"dotenv": "16.3.1",
|
||||||
|
"fs-extra": "^11.1.1",
|
||||||
|
"rollup-plugin-visualizer": "catalog:",
|
||||||
|
"typescript": "catalog:",
|
||||||
|
"unplugin-config": "^0.1.5",
|
||||||
|
"vite": "catalog:",
|
||||||
|
"vite-plugin-compression": "^0.5.1",
|
||||||
|
"vite-plugin-enhance-log": "^0.6.2",
|
||||||
|
"vite-plugin-top-level-await": "^1.3.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
2
common/build/src/index.ts
Normal file
2
common/build/src/index.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export * from './utils.ts';
|
||||||
|
export * from './plugins/index.ts';
|
||||||
28
common/build/src/plugins/appConfig.ts
Normal file
28
common/build/src/plugins/appConfig.ts
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// @ts-ignore
|
||||||
|
import ConfigPlugin from 'unplugin-config/vite';
|
||||||
|
import type { PluginOption } from 'vite';
|
||||||
|
import {getEnvConfig,strToHex} from "../utils.ts";
|
||||||
|
|
||||||
|
export async function createConfigPluginConfig(
|
||||||
|
shouldGenerateConfig: boolean,
|
||||||
|
): Promise<PluginOption> {
|
||||||
|
const config:Record<string, any> = await getEnvConfig();
|
||||||
|
const APP_NAME = strToHex(config?.VITE_GLOB_APP_TITLE ?? '__APP');
|
||||||
|
// https://github.com/kirklin/unplugin-config
|
||||||
|
return ConfigPlugin({
|
||||||
|
appName: APP_NAME,
|
||||||
|
baseDir:"./",
|
||||||
|
envVariables: {
|
||||||
|
prefix: 'VITE_GLOB_',
|
||||||
|
files: [".env.production", ".env"],
|
||||||
|
},
|
||||||
|
configFile: {
|
||||||
|
generate: shouldGenerateConfig,
|
||||||
|
fileName: '_astral3d.config.js',
|
||||||
|
outputDir: 'dist',
|
||||||
|
},
|
||||||
|
htmlInjection: {
|
||||||
|
decodeEntities: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
36
common/build/src/plugins/compress.ts
Normal file
36
common/build/src/plugins/compress.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/**
|
||||||
|
* 用于打包和输出gzip;
|
||||||
|
* 注意,这在Vite中不能正常工作,具体原因还在调查中
|
||||||
|
* https://github.com/anncwb/vite-plugin-compression
|
||||||
|
*/
|
||||||
|
import type { PluginOption } from 'vite';
|
||||||
|
import compressPlugin from 'vite-plugin-compression';
|
||||||
|
|
||||||
|
export function configCompressPlugin({compress,deleteOriginFile = false}: {
|
||||||
|
compress: "gzip" | "brotli" | "none";
|
||||||
|
deleteOriginFile?: boolean;
|
||||||
|
}): PluginOption[] {
|
||||||
|
const compressList = compress.split(',');
|
||||||
|
|
||||||
|
const plugins: PluginOption[] = [];
|
||||||
|
|
||||||
|
if (compressList.includes('gzip')) {
|
||||||
|
plugins.push(
|
||||||
|
compressPlugin({
|
||||||
|
ext: '.gz',
|
||||||
|
deleteOriginFile,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (compressList.includes('brotli')) {
|
||||||
|
plugins.push(
|
||||||
|
compressPlugin({
|
||||||
|
ext: '.br',
|
||||||
|
algorithm: 'brotliCompress',
|
||||||
|
deleteOriginFile,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return plugins;
|
||||||
|
}
|
||||||
54
common/build/src/plugins/index.ts
Normal file
54
common/build/src/plugins/index.ts
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
import type {PluginOption} from 'vite';
|
||||||
|
import topLevelAwait from "vite-plugin-top-level-await";
|
||||||
|
import EnhanceLog from 'vite-plugin-enhance-log';
|
||||||
|
|
||||||
|
import {createConfigPluginConfig} from "./appConfig.ts";
|
||||||
|
import {configCompressPlugin} from "./compress.ts";
|
||||||
|
import {configVisualizerConfig} from "./visualizer.ts";
|
||||||
|
|
||||||
|
interface Options {
|
||||||
|
isBuild: boolean;
|
||||||
|
root: string;
|
||||||
|
compress: {
|
||||||
|
compress: "gzip" | "brotli" | "none";
|
||||||
|
deleteOriginFile: boolean;
|
||||||
|
};
|
||||||
|
enableAnalyze?: boolean;
|
||||||
|
enableConfig?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function createPlugins({isBuild,compress,enableAnalyze,enableConfig}: Options) {
|
||||||
|
const vitePlugins: (PluginOption | PluginOption[])[] = [
|
||||||
|
topLevelAwait({
|
||||||
|
// 每个块模块的顶级await promise的导出名称
|
||||||
|
promiseExportName: "__tla",
|
||||||
|
// 用于在每个块模块中生成顶级await承诺的导入名称的函数
|
||||||
|
promiseImportName: i => `__tla_${i}`
|
||||||
|
}),
|
||||||
|
EnhanceLog({
|
||||||
|
/** 高亮文件名(firefox不支持) */
|
||||||
|
colorFileName: true,
|
||||||
|
splitBy: '\n',
|
||||||
|
preTip: '🚀🚀🚀🚀🚀🚀',
|
||||||
|
enableFileName: { enableDir: false}
|
||||||
|
}),
|
||||||
|
];
|
||||||
|
|
||||||
|
if(enableConfig){
|
||||||
|
const appConfigPlugin = await createConfigPluginConfig(isBuild);
|
||||||
|
vitePlugins.push(appConfigPlugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 以下插件只在生产环境中工作
|
||||||
|
if (isBuild) {
|
||||||
|
// rollup-plugin-gzip
|
||||||
|
vitePlugins.push(configCompressPlugin(compress));
|
||||||
|
|
||||||
|
// 打包视图分析 rollup-plugin-visualizer
|
||||||
|
if (enableAnalyze) {
|
||||||
|
vitePlugins.push(configVisualizerConfig());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return vitePlugins;
|
||||||
|
}
|
||||||
15
common/build/src/plugins/visualizer.ts
Normal file
15
common/build/src/plugins/visualizer.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/**
|
||||||
|
* package.json包文件容量分析
|
||||||
|
*/
|
||||||
|
// @ts-ignore
|
||||||
|
import {visualizer} from 'rollup-plugin-visualizer';
|
||||||
|
import { type PluginOption } from 'vite';
|
||||||
|
|
||||||
|
export function configVisualizerConfig() {
|
||||||
|
return visualizer({
|
||||||
|
filename: 'node_modules/.cache/visualizer/stats.html',
|
||||||
|
open: true,
|
||||||
|
gzipSize: true,
|
||||||
|
brotliSize: true,
|
||||||
|
}) as PluginOption;
|
||||||
|
}
|
||||||
75
common/build/src/utils.ts
Normal file
75
common/build/src/utils.ts
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
import { join } from 'node:path';
|
||||||
|
import pkg from 'fs-extra';
|
||||||
|
import {parse} from "dotenv";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 读取所有环境变量配置文件以处理.env
|
||||||
|
*/
|
||||||
|
export function wrapperEnv(envConf) {
|
||||||
|
const ret:any = {};
|
||||||
|
|
||||||
|
for (const envName of Object.keys(envConf)) {
|
||||||
|
let realName = envConf[envName].replace(/\\n/g, '\n');
|
||||||
|
realName = realName === 'true' ? true : realName === 'false' ? false : realName;
|
||||||
|
|
||||||
|
if (envName === 'VITE_PORT') {
|
||||||
|
realName = Number(realName);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret[envName] = realName;
|
||||||
|
if (typeof realName === 'string') {
|
||||||
|
process.env[envName] = realName;
|
||||||
|
} else if (typeof realName === 'object') {
|
||||||
|
process.env[envName] = JSON.stringify(realName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前环境下生效的配置文件名
|
||||||
|
*/
|
||||||
|
function getConfFiles() {
|
||||||
|
const script = process.env.npm_lifecycle_script;
|
||||||
|
const reg = new RegExp('--mode ([a-z_\\d]+)');
|
||||||
|
const result = reg.exec(script as string) as any;
|
||||||
|
if (result) {
|
||||||
|
const mode = result[1] as string;
|
||||||
|
return ['.env', `.env.${mode}`];
|
||||||
|
}
|
||||||
|
return ['.env', '.env.production'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取以指定前缀开头的环境变量
|
||||||
|
* @param match prefix
|
||||||
|
* @param confFiles ext
|
||||||
|
*/
|
||||||
|
export async function getEnvConfig(match = 'VITE_GLOB_', confFiles = getConfFiles()) {
|
||||||
|
let envConfig = {};
|
||||||
|
for (const confFile of confFiles) {
|
||||||
|
try {
|
||||||
|
const envPath = await pkg.readFile(join(process.cwd(), confFile), { encoding: 'utf8' });
|
||||||
|
const env = parse(envPath);
|
||||||
|
envConfig = { ...envConfig, ...env };
|
||||||
|
} catch (e) {
|
||||||
|
console.error(`Error in parsing ${confFile}`, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const reg = new RegExp(`^(${match})`);
|
||||||
|
Object.keys(envConfig).forEach((key) => {
|
||||||
|
if (!reg.test(key)) {
|
||||||
|
Reflect.deleteProperty(envConfig, key);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return envConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function strToHex(str: string) {
|
||||||
|
const result: string[] = [];
|
||||||
|
for (let i = 0; i < str.length; ++i) {
|
||||||
|
const hex = str.charCodeAt(i).toString(16);
|
||||||
|
result.push(('000' + hex).slice(-4));
|
||||||
|
}
|
||||||
|
return result.join('').toUpperCase();
|
||||||
|
}
|
||||||
29
common/build/tsconfig.json
Normal file
29
common/build/tsconfig.json
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ES2020",
|
||||||
|
"useDefineForClassFields": true,
|
||||||
|
"module": "esnext",
|
||||||
|
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"noImplicitAny": false,
|
||||||
|
|
||||||
|
/* Bundler mode */
|
||||||
|
"moduleResolution": "Bundler",
|
||||||
|
"allowImportingTsExtensions": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"noEmit": true,
|
||||||
|
|
||||||
|
/* Linting */
|
||||||
|
"strict": true,
|
||||||
|
"noUnusedLocals": true,
|
||||||
|
"noUnusedParameters": true,
|
||||||
|
"noFallthroughCasesInSwitch": true,
|
||||||
|
|
||||||
|
"baseUrl": ".",
|
||||||
|
"types": [],
|
||||||
|
"typeRoots": ["./node_modules/@types/"]
|
||||||
|
},
|
||||||
|
"include": ["src"],
|
||||||
|
"exclude": []
|
||||||
|
}
|
||||||
23
package.json
Normal file
23
package.json
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"name": "astral3d",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Astral3D Engine",
|
||||||
|
"author": "ErSan <mlt131220@163.com>",
|
||||||
|
"scripts": {
|
||||||
|
"docs:dev": "pnpm run -C packages/docs docs:dev",
|
||||||
|
"docs:dev-clean": "pnpm run -C packages/docs docs:dev-clean",
|
||||||
|
"docs:build": "pnpm run -C packages/docs docs:build",
|
||||||
|
"docs:preview": "pnpm run -C packages/docs docs:preview",
|
||||||
|
"editor:dev": "pnpm run -C packages/editor dev",
|
||||||
|
"editor:build": "pnpm run -C packages/editor build",
|
||||||
|
"editor:tsc": "pnpm run -C packages/editor tsc",
|
||||||
|
"editor:preview": "pnpm run -C packages/editor preview",
|
||||||
|
"sdk:dev": "pnpm run -C packages/sdk dev",
|
||||||
|
"sdk:build": "pnpm run -C packages/sdk build"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=23.0.0"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"packageManager": "pnpm@10.8.1"
|
||||||
|
}
|
||||||
4
packages/docs/.gitignore
vendored
Normal file
4
packages/docs/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
node_modules
|
||||||
|
src/.vuepress/cache
|
||||||
|
src/.vuepress/dist
|
||||||
|
src/.vuepress/temp
|
||||||
3
packages/docs/.npmrc
Normal file
3
packages/docs/.npmrc
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
shamefully-hoist=true
|
||||||
|
shell-emulator=true
|
||||||
|
auto-install-peers=true
|
||||||
24
packages/docs/package.json
Normal file
24
packages/docs/package.json
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "@astral3d/docs",
|
||||||
|
"type": "module",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Astral3D 文档",
|
||||||
|
"packageManager": "pnpm@10.8.1",
|
||||||
|
"author": "ErSan <mlt131220@163.com>",
|
||||||
|
"scripts": {
|
||||||
|
"docs:dev": "vuepress dev src",
|
||||||
|
"docs:dev-clean": "vuepress dev src --clean-cache --clean-temp",
|
||||||
|
"docs:build": "vuepress build src --clean-cache --clean-temp",
|
||||||
|
"docs:preview": "http-server src/.vuepress/dist",
|
||||||
|
"vp-update": "pnpm dlx vp-update"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@vuepress/bundler-vite": "^2.0.0-rc.24",
|
||||||
|
"http-server": "^14.1.1",
|
||||||
|
"sass-embedded": "^1.85.0",
|
||||||
|
"typescript": "^5.7.3",
|
||||||
|
"vue": "^3.5.13",
|
||||||
|
"vuepress": "^2.0.0-rc.24",
|
||||||
|
"vuepress-theme-plume": "^1.0.0-rc.164"
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
7
packages/docs/src/.vuepress/.temp/git/config.js
Normal file
7
packages/docs/src/.vuepress/.temp/git/config.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import { GitContributors } from "D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/@vuepress+plugin-git@2.0.0-_3888087f136caca2e6182a3f7923d60b/node_modules/@vuepress/plugin-git/lib/client/components/GitContributors.js";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
enhance: ({ app }) => {
|
||||||
|
app.component("GitContributors", GitContributors);
|
||||||
|
},
|
||||||
|
};
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
import './articleTagColors.css'
|
||||||
|
export const articleTagColors = {}
|
||||||
1
packages/docs/src/.vuepress/.temp/internal/blogData.js
Normal file
1
packages/docs/src/.vuepress/.temp/internal/blogData.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
export const blogPostData = [{"path":"/promotion/","title":"推广中心","categoryList":[],"createTime":"2025/10/04 19:34:07","lang":"zh-CN","excerpt":""},{"path":"/questions/","title":"常见问题","categoryList":[],"createTime":"2025/02/20 16:19:54","lang":"zh-CN","excerpt":""}]
|
||||||
27
packages/docs/src/.vuepress/.temp/internal/clientConfigs.js
Normal file
27
packages/docs/src/.vuepress/.temp/internal/clientConfigs.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import * as clientConfig0 from 'D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/@vuepress-plume+plugin-font_57d2a5ed8174cdd689a0c01cc1570add/node_modules/@vuepress-plume/plugin-fonts/lib/client/config.js'
|
||||||
|
import * as clientConfig1 from 'D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/@vuepress+plugin-copy-code@_a0256e22abe8f1e188ed9327038db869/node_modules/@vuepress/plugin-copy-code/lib/client/config.js'
|
||||||
|
import * as clientConfig2 from 'D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/shiki/config.js'
|
||||||
|
import * as clientConfig3 from 'D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/md-power/config.js'
|
||||||
|
import * as clientConfig4 from 'D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/markdown-math/config.js'
|
||||||
|
import * as clientConfig5 from 'D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/@vuepress+plugin-nprogress@_6a81f5149c8e02fe27bc022b3cc82e96/node_modules/@vuepress/plugin-nprogress/lib/client/config.js'
|
||||||
|
import * as clientConfig6 from 'D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/@vuepress+plugin-photo-swip_3e10a5606c8980d93749ef1da6fd795c/node_modules/@vuepress/plugin-photo-swipe/lib/client/config.js'
|
||||||
|
import * as clientConfig7 from 'D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/@vuepress+plugin-comment@2._d6678c25be023e406eb131de93f5d9f4/node_modules/@vuepress/plugin-comment/lib/client/config.js'
|
||||||
|
import * as clientConfig8 from 'D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/@vuepress-plume+plugin-sear_a8411ee8221f594d395ace93c87de572/node_modules/@vuepress-plume/plugin-search/lib/client/config.js'
|
||||||
|
import * as clientConfig9 from 'D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/git/config.js'
|
||||||
|
import * as clientConfig10 from 'D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/vuepress-theme-plume@1.0.0-_f74d1d42b810bb0e55305dbb3a3efd52/node_modules/vuepress-theme-plume/lib/client/config.js'
|
||||||
|
import * as clientConfig11 from 'D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/client.ts'
|
||||||
|
|
||||||
|
export const clientConfigs = [
|
||||||
|
clientConfig0,
|
||||||
|
clientConfig1,
|
||||||
|
clientConfig2,
|
||||||
|
clientConfig3,
|
||||||
|
clientConfig4,
|
||||||
|
clientConfig5,
|
||||||
|
clientConfig6,
|
||||||
|
clientConfig7,
|
||||||
|
clientConfig8,
|
||||||
|
clientConfig9,
|
||||||
|
clientConfig10,
|
||||||
|
clientConfig11,
|
||||||
|
].map((m) => m.default).filter(Boolean)
|
||||||
1
packages/docs/src/.vuepress/.temp/internal/encrypt.js
Normal file
1
packages/docs/src/.vuepress/.temp/internal/encrypt.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
export const encrypt = [false,":","",[],{}]
|
||||||
1
packages/docs/src/.vuepress/.temp/internal/iconify.js
Normal file
1
packages/docs/src/.vuepress/.temp/internal/iconify.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
export const icons = "{}"
|
||||||
@ -0,0 +1 @@
|
|||||||
|
export const searchIndex = {"/": () => import('@internal/minisearchIndex/searchBox-default.js')}
|
||||||
File diff suppressed because one or more lines are too long
70
packages/docs/src/.vuepress/.temp/internal/routes.js
Normal file
70
packages/docs/src/.vuepress/.temp/internal/routes.js
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
export const redirects = JSON.parse("{\"/promotion.html\":\"/promotion/\",\"/questions.html\":\"/questions/\",\"/notes/guide/%E4%BB%8B%E7%BB%8D.html\":\"/guide/6xkx4dnv/\",\"/notes/guide/%E9%83%A8%E7%BD%B2.html\":\"/guide/n6o11owv/\",\"/notes/guide/plugins/%E5%85%A5%E9%97%A8.html\":\"/guide/plugin/31eucyqc/\",\"/notes/guide/plugins/%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91.html\":\"/guide/plugin/7ro8hsc0/\",\"/notes/update/logs/\":\"/update/096h956m/\",\"/notes/update/logs/_2023_02.html\":\"/update/98pjt8xt/\",\"/notes/update/logs/_2023_03.html\":\"/update/moioo5zp/\",\"/notes/update/logs/_2023_04.html\":\"/update/ycbwubyy/\",\"/notes/update/logs/_2023_05.html\":\"/update/sfp23i9i/\",\"/notes/update/logs/_2023_07.html\":\"/update/dbofligs/\",\"/notes/update/logs/_2023_08.html\":\"/update/oju4gahd/\",\"/notes/update/logs/_2024_03.html\":\"/update/xis3xfo2/\",\"/notes/update/logs/_2024_04.html\":\"/update/doebw5ta/\",\"/notes/update/logs/_2024_05.html\":\"/update/oeg8mvgy/\",\"/notes/update/logs/_2024_06.html\":\"/update/t48csw55/\",\"/notes/update/logs/_2024_07.html\":\"/update/8znubzxf/\",\"/notes/update/logs/_2024_08.html\":\"/update/64cj5dsm/\",\"/notes/update/logs/_2024_09.html\":\"/update/efnqd97u/\",\"/notes/update/logs/_2024_10.html\":\"/update/elfg1zow/\",\"/notes/update/logs/_2024_11.html\":\"/update/6k8gige3/\",\"/notes/update/logs/_2024_12.html\":\"/update/rw89vgwo/\",\"/notes/update/logs/_2025_01.html\":\"/update/wjdm5npt/\",\"/notes/update/logs/_2025_02.html\":\"/update/khikfd9q/\",\"/notes/update/logs/_2025_03.html\":\"/update/fi34hwb4/\",\"/notes/update/logs/_2025_04.html\":\"/update/xnmgi5kk/\",\"/notes/update/logs/_2025_05.html\":\"/update/ptvud2e5/\",\"/notes/update/logs/_2025_06.html\":\"/update/ptv58fgr/\",\"/notes/guide/manual/editor/%E7%95%8C%E9%9D%A2.html\":\"/guide/swepocsg/\",\"/notes/guide/manual/editor/%E9%A1%B6%E6%A0%8F.html\":\"/guide/f7smai4w/\",\"/notes/guide/manual/home/%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%BF%83.html\":\"/guide/v0m2jmb5/\",\"/notes/guide/manual/home/%E8%AE%BE%E7%BD%AE%E4%B8%AD%E5%BF%83.html\":\"/guide/sekzh2c0/\",\"/notes/guide/manual/home/%E8%B5%84%E6%BA%90%E4%B8%AD%E5%BF%83.html\":\"/guide/4tirtbsc/\",\"/notes/guide/manual/home/%E9%A1%B9%E7%9B%AE.html\":\"/guide/dbd366ps/\",\"/notes/guide/manual/preview/%E7%95%8C%E9%9D%A2.html\":\"/guide/chhmeza7/\",\"/notes/guide/plugins/builtin/glTFHandler.html\":\"/guide/plugin/builtin/jo87cfk0/\",\"/notes/guide/manual/editor/extras/%E5%8A%A8%E7%94%BB%E7%BC%96%E8%BE%91%E5%99%A8.html\":\"/guide/5s7acuj0/\",\"/notes/guide/manual/editor/extras/%E6%97%A5%E5%BF%97.html\":\"/guide/0q1bxrub/\",\"/notes/guide/manual/editor/extras/%E8%B5%84%E6%BA%90%E4%B8%AD%E5%BF%83.html\":\"/guide/dju4ekca/\",\"/notes/guide/manual/editor/leftSidebar/BIM%E8%BD%BB%E9%87%8F%E5%8C%96.html\":\"/guide/rf1xgf4z/\",\"/notes/guide/manual/editor/leftSidebar/CAD%E8%A7%A3%E6%9E%90%E9%A2%84%E8%A7%88.html\":\"/guide/u1631nwk/\",\"/notes/guide/manual/editor/leftSidebar/%E5%9C%BA%E6%99%AF%E6%A0%91.html\":\"/guide/rzqb0h0l/\",\"/notes/guide/manual/editor/rightSidebar/Html%E9%9D%A2%E6%9D%BF.html\":\"/guide/kk5cv2ij/\",\"/notes/guide/manual/editor/rightSidebar/%E5%87%A0%E4%BD%95.html\":\"/guide/nct00cif/\",\"/notes/guide/manual/editor/rightSidebar/%E5%8A%A8%E7%94%BB.html\":\"/guide/g3kxptm0/\",\"/notes/guide/manual/editor/rightSidebar/%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95.html\":\"/guide/ae7ufigr/\",\"/notes/guide/manual/editor/rightSidebar/%E5%90%8E%E6%9C%9F%E5%A4%84%E7%90%86.html\":\"/guide/l8hd921o/\",\"/notes/guide/manual/editor/rightSidebar/%E5%9C%BA%E6%99%AF%E5%9B%BE%E7%BA%B8.html\":\"/guide/ta6draim/\",\"/notes/guide/manual/editor/rightSidebar/%E5%9C%BA%E6%99%AF%E9%85%8D%E7%BD%AE.html\":\"/guide/pnmbue0k/\",\"/notes/guide/manual/editor/rightSidebar/%E5%A4%A9%E6%B0%94.html\":\"/guide/fn9xwbkf/\",\"/notes/guide/manual/editor/rightSidebar/%E5%AF%B9%E8%B1%A1.html\":\"/guide/2xlh6nrf/\",\"/notes/guide/manual/editor/rightSidebar/%E5%B9%BF%E5%91%8A%E7%89%8C.html\":\"/guide/18al65zg/\",\"/notes/guide/manual/editor/rightSidebar/%E6%9D%90%E8%B4%A8.html\":\"/guide/l1df4723/\",\"/notes/guide/manual/editor/rightSidebar/%E6%B8%B2%E6%9F%93%E5%99%A8%E9%85%8D%E7%BD%AE.html\":\"/guide/crvssx6j/\",\"/notes/guide/manual/editor/rightSidebar/%E7%B2%92%E5%AD%90.html\":\"/guide/siz46vj0/\",\"/notes/guide/manual/editor/rightSidebar/%E8%84%9A%E6%9C%AC.html\":\"/guide/component/h4v1bkyh/\",\"/notes/guide/manual/editor/viewport/2D%E5%9B%BE%E7%BA%B8.html\":\"/guide/7eo51kfy/\",\"/notes/guide/manual/editor/viewport/3D%E5%9C%BA%E6%99%AF.html\":\"/guide/jkg3yahd/\"}")
|
||||||
|
|
||||||
|
export const routes = Object.fromEntries([
|
||||||
|
["/promotion/", { loader: () => import(/* webpackChunkName: "promotion_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/promotion/index.html.js"), meta: {"title":"推广中心"} }],
|
||||||
|
["/questions/", { loader: () => import(/* webpackChunkName: "questions_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/questions/index.html.js"), meta: {"title":"常见问题"} }],
|
||||||
|
["/", { loader: () => import(/* webpackChunkName: "index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/index.html.js"), meta: {"title":""} }],
|
||||||
|
["/guide/6xkx4dnv/", { loader: () => import(/* webpackChunkName: "guide_6xkx4dnv_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/6xkx4dnv/index.html.js"), meta: {"title":"介绍"} }],
|
||||||
|
["/guide/n6o11owv/", { loader: () => import(/* webpackChunkName: "guide_n6o11owv_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/n6o11owv/index.html.js"), meta: {"title":"部署(待更新)"} }],
|
||||||
|
["/notes/sdk/", { loader: () => import(/* webpackChunkName: "notes_sdk_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/notes/sdk/index.html.js"), meta: {"title":"🍉 暂未编写"} }],
|
||||||
|
["/guide/plugin/31eucyqc/", { loader: () => import(/* webpackChunkName: "guide_plugin_31eucyqc_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/plugin/31eucyqc/index.html.js"), meta: {"title":"入门"} }],
|
||||||
|
["/guide/plugin/7ro8hsc0/", { loader: () => import(/* webpackChunkName: "guide_plugin_7ro8hsc0_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/plugin/7ro8hsc0/index.html.js"), meta: {"title":"插件开发"} }],
|
||||||
|
["/update/096h956m/", { loader: () => import(/* webpackChunkName: "update_096h956m_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/096h956m/index.html.js"), meta: {"title":"更新日志"} }],
|
||||||
|
["/update/98pjt8xt/", { loader: () => import(/* webpackChunkName: "update_98pjt8xt_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/98pjt8xt/index.html.js"), meta: {"title":"2月"} }],
|
||||||
|
["/update/moioo5zp/", { loader: () => import(/* webpackChunkName: "update_moioo5zp_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/moioo5zp/index.html.js"), meta: {"title":"3月"} }],
|
||||||
|
["/update/ycbwubyy/", { loader: () => import(/* webpackChunkName: "update_ycbwubyy_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/ycbwubyy/index.html.js"), meta: {"title":"4月"} }],
|
||||||
|
["/update/sfp23i9i/", { loader: () => import(/* webpackChunkName: "update_sfp23i9i_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/sfp23i9i/index.html.js"), meta: {"title":"5月"} }],
|
||||||
|
["/update/dbofligs/", { loader: () => import(/* webpackChunkName: "update_dbofligs_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/dbofligs/index.html.js"), meta: {"title":"7月"} }],
|
||||||
|
["/update/oju4gahd/", { loader: () => import(/* webpackChunkName: "update_oju4gahd_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/oju4gahd/index.html.js"), meta: {"title":"8月"} }],
|
||||||
|
["/update/xis3xfo2/", { loader: () => import(/* webpackChunkName: "update_xis3xfo2_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/xis3xfo2/index.html.js"), meta: {"title":"3月"} }],
|
||||||
|
["/update/doebw5ta/", { loader: () => import(/* webpackChunkName: "update_doebw5ta_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/doebw5ta/index.html.js"), meta: {"title":"4月"} }],
|
||||||
|
["/update/oeg8mvgy/", { loader: () => import(/* webpackChunkName: "update_oeg8mvgy_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/oeg8mvgy/index.html.js"), meta: {"title":"5月"} }],
|
||||||
|
["/update/t48csw55/", { loader: () => import(/* webpackChunkName: "update_t48csw55_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/t48csw55/index.html.js"), meta: {"title":"6月"} }],
|
||||||
|
["/update/8znubzxf/", { loader: () => import(/* webpackChunkName: "update_8znubzxf_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/8znubzxf/index.html.js"), meta: {"title":"7月"} }],
|
||||||
|
["/update/64cj5dsm/", { loader: () => import(/* webpackChunkName: "update_64cj5dsm_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/64cj5dsm/index.html.js"), meta: {"title":"8月"} }],
|
||||||
|
["/update/efnqd97u/", { loader: () => import(/* webpackChunkName: "update_efnqd97u_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/efnqd97u/index.html.js"), meta: {"title":"9月"} }],
|
||||||
|
["/update/elfg1zow/", { loader: () => import(/* webpackChunkName: "update_elfg1zow_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/elfg1zow/index.html.js"), meta: {"title":"10月"} }],
|
||||||
|
["/update/6k8gige3/", { loader: () => import(/* webpackChunkName: "update_6k8gige3_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/6k8gige3/index.html.js"), meta: {"title":"11月"} }],
|
||||||
|
["/update/rw89vgwo/", { loader: () => import(/* webpackChunkName: "update_rw89vgwo_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/rw89vgwo/index.html.js"), meta: {"title":"12月"} }],
|
||||||
|
["/update/wjdm5npt/", { loader: () => import(/* webpackChunkName: "update_wjdm5npt_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/wjdm5npt/index.html.js"), meta: {"title":"1月"} }],
|
||||||
|
["/update/khikfd9q/", { loader: () => import(/* webpackChunkName: "update_khikfd9q_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/khikfd9q/index.html.js"), meta: {"title":"2月"} }],
|
||||||
|
["/update/fi34hwb4/", { loader: () => import(/* webpackChunkName: "update_fi34hwb4_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/fi34hwb4/index.html.js"), meta: {"title":"3月"} }],
|
||||||
|
["/update/xnmgi5kk/", { loader: () => import(/* webpackChunkName: "update_xnmgi5kk_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/xnmgi5kk/index.html.js"), meta: {"title":"4月"} }],
|
||||||
|
["/update/ptvud2e5/", { loader: () => import(/* webpackChunkName: "update_ptvud2e5_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/ptvud2e5/index.html.js"), meta: {"title":"5月"} }],
|
||||||
|
["/update/ptv58fgr/", { loader: () => import(/* webpackChunkName: "update_ptv58fgr_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/update/ptv58fgr/index.html.js"), meta: {"title":"6月"} }],
|
||||||
|
["/guide/swepocsg/", { loader: () => import(/* webpackChunkName: "guide_swepocsg_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/swepocsg/index.html.js"), meta: {"title":"界面"} }],
|
||||||
|
["/guide/f7smai4w/", { loader: () => import(/* webpackChunkName: "guide_f7smai4w_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/f7smai4w/index.html.js"), meta: {"title":"顶栏"} }],
|
||||||
|
["/guide/v0m2jmb5/", { loader: () => import(/* webpackChunkName: "guide_v0m2jmb5_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/v0m2jmb5/index.html.js"), meta: {"title":"数据中心"} }],
|
||||||
|
["/guide/sekzh2c0/", { loader: () => import(/* webpackChunkName: "guide_sekzh2c0_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/sekzh2c0/index.html.js"), meta: {"title":"设置中心"} }],
|
||||||
|
["/guide/4tirtbsc/", { loader: () => import(/* webpackChunkName: "guide_4tirtbsc_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/4tirtbsc/index.html.js"), meta: {"title":"资源中心"} }],
|
||||||
|
["/guide/dbd366ps/", { loader: () => import(/* webpackChunkName: "guide_dbd366ps_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/dbd366ps/index.html.js"), meta: {"title":"项目"} }],
|
||||||
|
["/guide/chhmeza7/", { loader: () => import(/* webpackChunkName: "guide_chhmeza7_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/chhmeza7/index.html.js"), meta: {"title":"界面"} }],
|
||||||
|
["/guide/plugin/builtin/jo87cfk0/", { loader: () => import(/* webpackChunkName: "guide_plugin_builtin_jo87cfk0_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/plugin/builtin/jo87cfk0/index.html.js"), meta: {"title":"glTF 处理器"} }],
|
||||||
|
["/guide/5s7acuj0/", { loader: () => import(/* webpackChunkName: "guide_5s7acuj0_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/5s7acuj0/index.html.js"), meta: {"title":"动画编辑器"} }],
|
||||||
|
["/guide/0q1bxrub/", { loader: () => import(/* webpackChunkName: "guide_0q1bxrub_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/0q1bxrub/index.html.js"), meta: {"title":"日志"} }],
|
||||||
|
["/guide/dju4ekca/", { loader: () => import(/* webpackChunkName: "guide_dju4ekca_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/dju4ekca/index.html.js"), meta: {"title":"资源中心"} }],
|
||||||
|
["/guide/rf1xgf4z/", { loader: () => import(/* webpackChunkName: "guide_rf1xgf4z_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/rf1xgf4z/index.html.js"), meta: {"title":"BIM轻量化"} }],
|
||||||
|
["/guide/u1631nwk/", { loader: () => import(/* webpackChunkName: "guide_u1631nwk_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/u1631nwk/index.html.js"), meta: {"title":"CAD解析预览"} }],
|
||||||
|
["/guide/rzqb0h0l/", { loader: () => import(/* webpackChunkName: "guide_rzqb0h0l_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/rzqb0h0l/index.html.js"), meta: {"title":"场景树"} }],
|
||||||
|
["/guide/kk5cv2ij/", { loader: () => import(/* webpackChunkName: "guide_kk5cv2ij_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/kk5cv2ij/index.html.js"), meta: {"title":"Html面板"} }],
|
||||||
|
["/guide/nct00cif/", { loader: () => import(/* webpackChunkName: "guide_nct00cif_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/nct00cif/index.html.js"), meta: {"title":"几何"} }],
|
||||||
|
["/guide/g3kxptm0/", { loader: () => import(/* webpackChunkName: "guide_g3kxptm0_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/g3kxptm0/index.html.js"), meta: {"title":"动画"} }],
|
||||||
|
["/guide/ae7ufigr/", { loader: () => import(/* webpackChunkName: "guide_ae7ufigr_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/ae7ufigr/index.html.js"), meta: {"title":"历史记录"} }],
|
||||||
|
["/guide/l8hd921o/", { loader: () => import(/* webpackChunkName: "guide_l8hd921o_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/l8hd921o/index.html.js"), meta: {"title":"后期处理"} }],
|
||||||
|
["/guide/ta6draim/", { loader: () => import(/* webpackChunkName: "guide_ta6draim_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/ta6draim/index.html.js"), meta: {"title":"场景图纸"} }],
|
||||||
|
["/guide/pnmbue0k/", { loader: () => import(/* webpackChunkName: "guide_pnmbue0k_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/pnmbue0k/index.html.js"), meta: {"title":"场景配置"} }],
|
||||||
|
["/guide/fn9xwbkf/", { loader: () => import(/* webpackChunkName: "guide_fn9xwbkf_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/fn9xwbkf/index.html.js"), meta: {"title":"天气"} }],
|
||||||
|
["/guide/2xlh6nrf/", { loader: () => import(/* webpackChunkName: "guide_2xlh6nrf_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/2xlh6nrf/index.html.js"), meta: {"title":"对象"} }],
|
||||||
|
["/guide/18al65zg/", { loader: () => import(/* webpackChunkName: "guide_18al65zg_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/18al65zg/index.html.js"), meta: {"title":"广告牌"} }],
|
||||||
|
["/guide/l1df4723/", { loader: () => import(/* webpackChunkName: "guide_l1df4723_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/l1df4723/index.html.js"), meta: {"title":"材质"} }],
|
||||||
|
["/guide/crvssx6j/", { loader: () => import(/* webpackChunkName: "guide_crvssx6j_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/crvssx6j/index.html.js"), meta: {"title":"渲染器配置"} }],
|
||||||
|
["/guide/siz46vj0/", { loader: () => import(/* webpackChunkName: "guide_siz46vj0_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/siz46vj0/index.html.js"), meta: {"title":"粒子"} }],
|
||||||
|
["/guide/component/h4v1bkyh/", { loader: () => import(/* webpackChunkName: "guide_component_h4v1bkyh_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/component/h4v1bkyh/index.html.js"), meta: {"title":"脚本"} }],
|
||||||
|
["/guide/7eo51kfy/", { loader: () => import(/* webpackChunkName: "guide_7eo51kfy_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/7eo51kfy/index.html.js"), meta: {"title":"2D图纸"} }],
|
||||||
|
["/guide/jkg3yahd/", { loader: () => import(/* webpackChunkName: "guide_jkg3yahd_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/jkg3yahd/index.html.js"), meta: {"title":"3D场景"} }],
|
||||||
|
["/404.html", { loader: () => import(/* webpackChunkName: "404.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/404.html.js"), meta: {"title":""} }],
|
||||||
|
["/blog/", { loader: () => import(/* webpackChunkName: "blog_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/blog/index.html.js"), meta: {"title":"博客"} }],
|
||||||
|
["/blog/tags/", { loader: () => import(/* webpackChunkName: "blog_tags_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/blog/tags/index.html.js"), meta: {"title":"标签"} }],
|
||||||
|
["/blog/archives/", { loader: () => import(/* webpackChunkName: "blog_archives_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/blog/archives/index.html.js"), meta: {"title":"归档"} }],
|
||||||
|
["/blog/categories/", { loader: () => import(/* webpackChunkName: "blog_categories_index.html" */"D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/blog/categories/index.html.js"), meta: {"title":"分类"} }],
|
||||||
|
]);
|
||||||
1
packages/docs/src/.vuepress/.temp/internal/sidebar.js
Normal file
1
packages/docs/src/.vuepress/.temp/internal/sidebar.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
export const sidebar = {"/":{"/update":{"items":[{"text":"2025年","collapsed":false,"icon":"carbon:calendar","items":["_2025_01","_2025_02","_2025_03","_2025_04","_2025_05","_2025_06"]},{"text":"2024年","collapsed":false,"icon":"carbon:calendar","items":["_2024_03","_2024_04","_2024_05","_2024_06","_2024_07","_2024_08","_2024_09","_2024_10","_2024_11","_2024_12"]},{"text":"2023年","collapsed":false,"icon":"carbon:calendar","items":["_2023_02","_2023_03","_2023_04","_2023_05","_2023_07","_2023_08"]}],"prefix":"/notes/update/logs/"},"/update/plan":{"items":"auto","prefix":"/notes/update/plan/"},"/guide":{"items":[{"text":"快速入门","collapsed":false,"icon":"carbon:lightning","items":["介绍","部署"]},{"text":"编辑器使用手册","collapsed":false,"prefix":"manual","icon":"carbon:apps","items":[{"text":"首页","collapsed":true,"prefix":"home","items":["项目","数据中心","资源中心","设置中心"]},{"text":"编辑器","collapsed":false,"prefix":"editor","items":["界面","顶栏",{"text":"左侧边栏","collapsed":false,"prefix":"leftSidebar","items":["场景树","CAD解析预览","BIM轻量化"]},{"text":"视口","collapsed":false,"prefix":"viewport","items":["2D图纸","3D场景"]},{"text":"扩展栏","collapsed":false,"prefix":"extras","items":["资源中心","动画编辑器","日志"]},{"text":"右侧边栏","collapsed":false,"prefix":"rightSidebar","items":["场景配置","渲染器配置","后期处理","天气","历史记录","场景图纸","对象","几何","材质","动画","脚本","粒子","广告牌","Html面板"]}]},{"text":"预览页","collapsed":true,"prefix":"preview","items":["界面"]}]},{"text":"插件系统","collapsed":false,"prefix":"plugins","icon":"carbon:lightning","items":["入门","插件开发",{"text":"内置插件","collapsed":false,"prefix":"builtin","icon":"carbon:plug","items":["glTFHandler"]}]}],"prefix":"/notes/guide/"}},"__auto__":{"/notes/update/plan/":[]},"__home__":{}}
|
||||||
1
packages/docs/src/.vuepress/.temp/internal/siteData.js
Normal file
1
packages/docs/src/.vuepress/.temp/internal/siteData.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
export const siteData = JSON.parse("{\"base\":\"/\",\"lang\":\"zh-CN\",\"title\":\"Astral3D\",\"description\":\"Astral3D 文档\",\"head\":[[\"link\",{\"rel\":\"icon\",\"type\":\"image/png\",\"href\":\"/logo64x64.png\"}]],\"locales\":{}}")
|
||||||
@ -0,0 +1 @@
|
|||||||
|
export const themeData = {"locales":{"/":{"selectLanguageName":"简体中文","selectLanguageText":"选择语言","appearanceText":"外观","lightModeSwitchTitle":"切换为浅色主题","darkModeSwitchTitle":"切换为深色主题","outlineLabel":"此页内容","returnToTopLabel":"返回顶部","editLinkText":"编辑此页","contributorsText":"贡献者","prevPageLabel":"上一页","nextPageLabel":"下一页","lastUpdatedText":"最后更新于","changelogText":"变更历史","changelogOnText":"于","changelogButtonText":"查看全部变更历史","copyrightText":"版权所有","copyrightAuthorText":"版权归属:","copyrightCreationOriginalText":"本文链接:","copyrightCreationTranslateText":"本文翻译自:","copyrightCreationReprintText":"本文转载自:","copyrightLicenseText":"许可证:","notFound":{"code":"404","title":"页面未找到","quote":"但是,如果你不改变方向,并且一直寻找,最终可能会到达你要去的地方。","linkText":"返回首页"},"homeText":"首页","blogText":"博客","tagText":"标签","archiveText":"归档","categoryText":"分类","archiveTotalText":"{count} 篇","encryptButtonText":"确认","encryptPlaceholder":"请输入密码","encryptGlobalText":"本站只允许密码访问","encryptPageText":"本页面只允许密码访问","footer":{"message":"","copyright":"Copyright © 2023-present <a target=\"_blank\" href=\"https://github.com/mlt131220\">ErSan <mlt131220@163.com></a>"},"logo":"/logo64x64.png","social":[{"icon":"github","link":"https://github.com/mlt131220/Astral3D"}],"copyright":true,"prevPage":true,"nextPage":true,"createTime":true,"profile":{"avatar":"/logo64x64.png","name":"Astral3D","description":"Astral3D 文档"},"bulletin":{"lifetime":"session","contentType":"markdown","id":"51042952","content":"<div style=\"text-align:center\"><p><strong>QQ 交流群:</strong> <a href=\"https://qm.qq.com/cgi-bin/qm/qr?k=Ewp9bODHFFaY6yphwEzmSe4lv889WbjR&jump_from=webapi&authKey=5gUSKPjhnXjhIy3pudNN/9igLNGxEwnN8yiXEDnEalE9loBQ4lEtVISG8OyXWmx8\" target=\"_blank\" rel=\"noopener noreferrer\">1040320579</a></p>\n<p><img src=\"/images/qq_qrcode.jpg\" alt=\"QQ qr_code\" width=\"618\" height=\"616\" style=\"width: 200px\"></p>\n<p>您在使用过程中遇到任何问题,欢迎通过 <a href=\"https://github.com/mlt131220/Astral3D/issues/new\" target=\"_blank\" rel=\"noopener noreferrer\">issue</a> 反馈。也欢迎加入我们的 QQ 交流群一起讨论。</p>\n<blockquote>\n<p>🔥 4核8G 200兆服务器,仅需49元/月,<a href=\"https://www.rainyun.com/Astral3D_\" target=\"_blank\" rel=\"noopener noreferrer\">点击这里购买</a><br>\n专属优惠码:Astral3D</p>\n</blockquote>\n</div>"},"navbar":[{"text":"指南","icon":"icon-park-outline:guide-board","link":"/notes/guide/介绍.md"},{"text":"SDK","link":"/notes/sdk/README.md","icon":"carbon:api"},{"text":"推广中心","link":"/promotion/","icon":"mdi:star-shooting-outline"},{"text":"更多","icon":"icon-park-outline:more-three","items":[{"text":"常见问题","link":"/questions/","icon":"wpf:faq"}]},{"text":"1.0.0","icon":"codicon:versions","items":[{"text":"更新日志","link":"/notes/update/logs/"}]}]}},"appearance":true,"blog":{"pagination":15,"postList":true,"tags":true,"archives":true,"categories":true,"link":"/blog/","tagsLink":"/blog/tags/","archivesLink":"/blog/archives/","categoriesLink":"/blog/categories/"},"navbarSocialInclude":["github","twitter","discord","facebook"],"aside":true,"outline":[2,3],"externalLinkIcon":true,"editLink":true,"prevPage":true,"nextPage":true,"footer":{"message":"","copyright":"Copyright © 2023-present <a target=\"_blank\" href=\"https://github.com/mlt131220\">ErSan <mlt131220@163.com></a>"},"logo":"/logo64x64.png","social":[{"icon":"github","link":"https://github.com/mlt131220/Astral3D"}],"copyright":true,"createTime":true,"profile":{"avatar":"/logo64x64.png","name":"Astral3D","description":"Astral3D 文档"},"contributors":true,"changelog":false,"bulletin":{"lifetime":"session","contentType":"markdown","id":"51042952","content":"<div style=\"text-align:center\"><p><strong>QQ 交流群:</strong> <a href=\"https://qm.qq.com/cgi-bin/qm/qr?k=Ewp9bODHFFaY6yphwEzmSe4lv889WbjR&jump_from=webapi&authKey=5gUSKPjhnXjhIy3pudNN/9igLNGxEwnN8yiXEDnEalE9loBQ4lEtVISG8OyXWmx8\" target=\"_blank\" rel=\"noopener noreferrer\">1040320579</a></p>\n<p><img src=\"/images/qq_qrcode.jpg\" alt=\"QQ qr_code\" width=\"618\" height=\"616\" style=\"width: 200px\"></p>\n<p>您在使用过程中遇到任何问题,欢迎通过 <a href=\"https://github.com/mlt131220/Astral3D/issues/new\" target=\"_blank\" rel=\"noopener noreferrer\">issue</a> 反馈。也欢迎加入我们的 QQ 交流群一起讨论。</p>\n<blockquote>\n<p>🔥 4核8G 200兆服务器,仅需49元/月,<a href=\"https://www.rainyun.com/Astral3D_\" target=\"_blank\" rel=\"noopener noreferrer\">点击这里购买</a><br>\n专属优惠码:Astral3D</p>\n</blockquote>\n</div>"}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
import "D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/katex@0.16.22/node_modules/katex/dist/katex.min.css";
|
||||||
|
import "D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/@vuepress+plugin-markdown-m_abd83ca7e483db759c316333198c3244/node_modules/@vuepress/plugin-markdown-math/lib/client/styles/katex.css";
|
||||||
21
packages/docs/src/.vuepress/.temp/md-power/config.js
Normal file
21
packages/docs/src/.vuepress/.temp/md-power/config.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import { defineClientConfig } from 'vuepress/client'
|
||||||
|
import Tabs from 'D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/vuepress-plugin-md-power@1._2c87109d6cd5f186736a72942ca145fb/node_modules/vuepress-plugin-md-power/lib/client/components/Tabs.vue'
|
||||||
|
import CodeTabs from 'D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/vuepress-plugin-md-power@1._2c87109d6cd5f186736a72942ca145fb/node_modules/vuepress-plugin-md-power/lib/client/components/CodeTabs.vue'
|
||||||
|
import Plot from 'D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/vuepress-plugin-md-power@1._2c87109d6cd5f186736a72942ca145fb/node_modules/vuepress-plugin-md-power/lib/client/components/Plot.vue'
|
||||||
|
import FileTreeNode from 'D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/vuepress-plugin-md-power@1._2c87109d6cd5f186736a72942ca145fb/node_modules/vuepress-plugin-md-power/lib/client/components/FileTreeNode.vue'
|
||||||
|
import Annotation from 'D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/vuepress-plugin-md-power@1._2c87109d6cd5f186736a72942ca145fb/node_modules/vuepress-plugin-md-power/lib/client/components/Annotation.vue'
|
||||||
|
|
||||||
|
import 'D:/A-Ersan/astraljs/Astral3D/node_modules/.pnpm/vuepress-plugin-md-power@1._2c87109d6cd5f186736a72942ca145fb/node_modules/vuepress-plugin-md-power/lib/client/styles/index.css'
|
||||||
|
|
||||||
|
export default defineClientConfig({
|
||||||
|
enhance({ router, app }) {
|
||||||
|
app.component('Tabs', Tabs)
|
||||||
|
app.component('CodeTabs', CodeTabs)
|
||||||
|
app.component('Plot', Plot)
|
||||||
|
app.component('FileTreeNode', FileTreeNode)
|
||||||
|
app.component('Annotation', Annotation)
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
3
packages/docs/src/.vuepress/.temp/pages/404.html.js
Normal file
3
packages/docs/src/.vuepress/.temp/pages/404.html.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/404.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/404.html\",\"title\":\"\",\"lang\":\"zh-CN\",\"frontmatter\":{\"layout\":\"NotFound\",\"description\":\"404 Not Found\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"WebPage\\\",\\\"name\\\":\\\"\\\",\\\"description\\\":\\\"404 Not Found\\\"}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/404.html\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"404 Not Found\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}]]},\"readingTime\":{\"minutes\":0.01,\"words\":3},\"git\":{},\"autoDesc\":true,\"filePathRelative\":null,\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
4
packages/docs/src/.vuepress/.temp/pages/404.html.vue
Normal file
4
packages/docs/src/.vuepress/.temp/pages/404.html.vue
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<template><div><p>404 Not Found</p>
|
||||||
|
</div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/blog/archives/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/blog/archives/\",\"title\":\"归档\",\"lang\":\"zh-CN\",\"frontmatter\":{\"lang\":\"zh-CN\",\"title\":\"归档\",\"draft\":true},\"readingTime\":{\"minutes\":0,\"words\":0},\"git\":{},\"filePathRelative\":null,\"headers\":[],\"type\":\"blog-archives\",\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/blog/categories/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/blog/categories/\",\"title\":\"分类\",\"lang\":\"zh-CN\",\"frontmatter\":{\"lang\":\"zh-CN\",\"title\":\"分类\",\"draft\":true},\"readingTime\":{\"minutes\":0,\"words\":0},\"git\":{},\"filePathRelative\":null,\"headers\":[],\"type\":\"blog-categories\",\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/blog/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/blog/\",\"title\":\"博客\",\"lang\":\"zh-CN\",\"frontmatter\":{\"lang\":\"zh-CN\",\"title\":\"博客\",\"draft\":true},\"readingTime\":{\"minutes\":0,\"words\":0},\"git\":{},\"filePathRelative\":null,\"headers\":[],\"type\":\"blog\",\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/blog/tags/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/blog/tags/\",\"title\":\"标签\",\"lang\":\"zh-CN\",\"frontmatter\":{\"lang\":\"zh-CN\",\"title\":\"标签\",\"draft\":true},\"readingTime\":{\"minutes\":0,\"words\":0},\"git\":{},\"filePathRelative\":null,\"headers\":[],\"type\":\"blog-tags\",\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/0q1bxrub/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/0q1bxrub/\",\"title\":\"日志\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"日志\",\"createTime\":\"2025/03/31 20:03:00\",\"permalink\":\"/guide/0q1bxrub/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"日志\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/0q1bxrub/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"日志\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.03,\"words\":10},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/editor/extras/日志.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/18al65zg/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/18al65zg/\",\"title\":\"广告牌\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"广告牌\",\"createTime\":\"2025/04/17 17:11:18\",\"permalink\":\"/guide/18al65zg/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"广告牌\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/18al65zg/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"广告牌\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.04,\"words\":11},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/editor/rightSidebar/广告牌.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/2xlh6nrf/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/2xlh6nrf/\",\"title\":\"对象\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"对象\",\"createTime\":\"2025/03/31 20:06:07\",\"permalink\":\"/guide/2xlh6nrf/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"对象\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/2xlh6nrf/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"对象\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.03,\"words\":10},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/editor/rightSidebar/对象.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/4tirtbsc/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/4tirtbsc/\",\"title\":\"资源中心\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"资源中心\",\"createTime\":\"2025/08/01 15:14:39\",\"permalink\":\"/guide/4tirtbsc/\",\"description\":\"上传资源 类型:可上传资源类型默认为:模型、材质、纹理、广告牌、HDR; 分类:从树节点中选择资源所属的详细类别; 标签:为资源添加特定的标签,比如 “有动画、有骨骼” 之类的,便于在资源列表顶部勾选标签快速搜索; 缩略图:可以从本地选择,或者在选择资源文件后,点击 通过预览截图 生成。 文件:不同类型的资源具有不同的文件格式支持。 名称:默认会在上传...\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"资源中心\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-08-01T17:28:41.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/4tirtbsc/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"资源中心\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"上传资源 类型:可上传资源类型默认为:模型、材质、纹理、广告牌、HDR; 分类:从树节点中选择资源所属的详细类别; 标签:为资源添加特定的标签,比如 “有动画、有骨骼” 之类的,便于在资源列表顶部勾选标签快速搜索; 缩略图:可以从本地选择,或者在选择资源文件后,点击 通过预览截图 生成。 文件:不同类型的资源具有不同的文件格式支持。 名称:默认会在上传...\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-08-01T17:28:41.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-08-01T17:28:41.000Z\"}]]},\"readingTime\":{\"minutes\":2.97,\"words\":892},\"git\":{\"createdTime\":1754069321000,\"updatedTime\":1754069321000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/manual/home/资源中心.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,157 @@
|
|||||||
|
<template><div><div class="demo-wrapper only-img no-padding">
|
||||||
|
<div class="demo-head">
|
||||||
|
<div class="demo-ctrl"><i></i><i></i><i></i></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="demo-container" >
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/home/assets/assets-page.png"
|
||||||
|
title="资源中心"
|
||||||
|
description="多级分类,精细控制"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/08/01"
|
||||||
|
/>
|
||||||
|
</div></div><h2 id="上传资源" tabindex="-1"><a class="header-anchor" href="#上传资源"><span>上传资源</span></a></h2>
|
||||||
|
<div class="demo-wrapper only-img no-padding">
|
||||||
|
<div class="demo-head">
|
||||||
|
<div class="demo-ctrl"><i></i><i></i><i></i></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="demo-container" >
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/home/assets/asset-upload.png"
|
||||||
|
title="上传资源"
|
||||||
|
description="多级分类,精细控制"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/08/01"
|
||||||
|
/>
|
||||||
|
</div></div><ul>
|
||||||
|
<li><strong>类型</strong>:可上传资源类型默认为:<mark>模型、材质、纹理、广告牌、HDR</mark>;</li>
|
||||||
|
<li><strong>分类</strong>:从树节点中选择资源所属的详细类别;</li>
|
||||||
|
<li><strong>标签</strong>:为资源添加特定的标签,比如 <mark>“有动画、有骨骼”</mark> 之类的,便于在资源列表顶部勾选标签快速搜索;</li>
|
||||||
|
<li><strong>缩略图</strong>:可以从本地选择,或者在选择资源文件后,点击 <mark>通过预览截图</mark> 生成。</li>
|
||||||
|
</ul>
|
||||||
|
<Tabs id="31" :data='[{"id":"通过预览截图"}]'>
|
||||||
|
<template #title0="{ value, isActive }">通过预览截图</template><template #tab0="{ value, isActive }"><blockquote>
|
||||||
|
<p>假设在<code v-pre>模型</code>类型下我先选择了一个飞机模型,然后点击按钮<code v-pre>通过预览截图</code></p>
|
||||||
|
</blockquote>
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/home/assets/asset-preview-screenshot.png"
|
||||||
|
title="通过预览截图"
|
||||||
|
description="点击截图按钮,将自动截取当前画布填充至表单缩略图字段,并关闭此预览弹窗"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/08/01"
|
||||||
|
/>
|
||||||
|
</template></Tabs><ul>
|
||||||
|
<li><strong>文件</strong>:不同类型的资源具有不同的文件格式支持。</li>
|
||||||
|
</ul>
|
||||||
|
<Tabs id="48" :data='[{"id":"模型"},{"id":"材质"},{"id":"纹理"},{"id":"广告牌"},{"id":"HDR"}]'>
|
||||||
|
<template #title0="{ value, isActive }">模型</template><template #title1="{ value, isActive }">材质</template><template #title2="{ value, isActive }">纹理</template><template #title3="{ value, isActive }">广告牌</template><template #title4="{ value, isActive }">HDR</template><template #tab0="{ value, isActive }"><ul class="task-list-container">
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-0" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-0"> glb</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-1" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-1"> gltf</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-2" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-2"> fbx</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-3" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-3"> obj</label></li>
|
||||||
|
</ul>
|
||||||
|
</template><template #tab1="{ value, isActive }"><ul class="task-list-container">
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-4" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-4"> zip</label></li>
|
||||||
|
</ul>
|
||||||
|
<blockquote>
|
||||||
|
<p>默认解析为<mark>PBR材质</mark>。<br>
|
||||||
|
上传的ZIP包内文件应依照特定规则(以下两种之一):</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<Badge type="tip" text="推荐" /> 一. zip包中包含一个<code v-pre>material.json</code>的文件,其中指明各类贴图使用的纹理文件及材质属性,示例如下:</li>
|
||||||
|
</ul>
|
||||||
|
<div class="code-block-title" data-title="material.json"><div class="code-block-title-bar"><span class="title"><VPIcon provider="iconify" name="vscode-icons:file-type-json"/>material.json</span></div><div class="language-json" data-highlighter="shiki" data-ext="json" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-json"><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666">{</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> textures</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> baseColor</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> xxx.</span><span style="--shiki-light:#999999;--shiki-dark:#666666">[</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic">png/jpg/webp/tga/hdr/exr</span><span style="--shiki-light:#999999;--shiki-dark:#666666">],</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> normal</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> xxx.</span><span style="--shiki-light:#999999;--shiki-dark:#666666">[</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic">png/jpg/webp/tga/hdr/exr</span><span style="--shiki-light:#999999;--shiki-dark:#666666">],</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> bump</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> xxx.</span><span style="--shiki-light:#999999;--shiki-dark:#666666">[</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic">png/jpg/webp/tga/hdr/exr</span><span style="--shiki-light:#999999;--shiki-dark:#666666">],</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> displacement</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> xxx.</span><span style="--shiki-light:#999999;--shiki-dark:#666666">[</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic">png/jpg/webp/tga/hdr/exr</span><span style="--shiki-light:#999999;--shiki-dark:#666666">],</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> roughness</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> xxx.</span><span style="--shiki-light:#999999;--shiki-dark:#666666">[</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic">png/jpg/webp/tga/hdr/exr</span><span style="--shiki-light:#999999;--shiki-dark:#666666">],</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> metalness</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> xxx.</span><span style="--shiki-light:#999999;--shiki-dark:#666666">[</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic">png/jpg/webp/tga/hdr/exr</span><span style="--shiki-light:#999999;--shiki-dark:#666666">],</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> ao</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> xxx.</span><span style="--shiki-light:#999999;--shiki-dark:#666666">[</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic">png/jpg/webp/tga/hdr/exr</span><span style="--shiki-light:#999999;--shiki-dark:#666666">],</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> emissive</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> xxx.</span><span style="--shiki-light:#999999;--shiki-dark:#666666">[</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic">png/jpg/webp/tga/hdr/exr</span><span style="--shiki-light:#999999;--shiki-dark:#666666">],</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> alpha</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> xxx.</span><span style="--shiki-light:#999999;--shiki-dark:#666666">[</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic">png/jpg/webp/tga/hdr/exr</span><span style="--shiki-light:#999999;--shiki-dark:#666666">],</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> env</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> xxx.</span><span style="--shiki-light:#999999;--shiki-dark:#666666">[</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic">png/jpg/webp/tga/hdr/exr</span><span style="--shiki-light:#999999;--shiki-dark:#666666">],</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> light</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> xxx.</span><span style="--shiki-light:#999999;--shiki-dark:#666666">[</span><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic">png/jpg/webp/tga/hdr/exr</span><span style="--shiki-light:#999999;--shiki-dark:#666666">],</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> properties</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> metalness</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91"> 1</span><span style="--shiki-light:#999999;--shiki-dark:#666666">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> roughness</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91"> 0.5</span><span style="--shiki-light:#999999;--shiki-dark:#666666">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic"> ...</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span></span></code></pre>
|
||||||
|
</div></div><ul>
|
||||||
|
<li>二. zip包中不包含<code v-pre>material.json</code>文件,此时包中的各纹理文件应语义化命名,如下(文件名均为按照关键字模糊匹配):
|
||||||
|
::: file-tree</li>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li>*.zip
|
||||||
|
<ul>
|
||||||
|
<li>%baseColor%.[png/jpg/webp/tga/hdr/exr] // 基础颜色贴图(高光反射/光泽度工作流:diffuse, 金属/粗糙度工作流:baseColor)</li>
|
||||||
|
<li>%normal%.[png/jpg/webp/tga/hdr/exr] // 法线贴图</li>
|
||||||
|
<li>%bump%.[png/jpg/webp/tga/hdr/exr] // 凹凸贴图,如果定义了法线贴图,则将忽略该贴图</li>
|
||||||
|
<li>%displacement%.[png/jpg/webp/tga/hdr/exr] // 置换贴图(位移贴图)</li>
|
||||||
|
<li>%roughness%.[png/jpg/webp/tga/hdr/exr] // 粗糙度贴图(使用该纹理的绿色通道)</li>
|
||||||
|
<li>%metalness%.[png/jpg/webp/tga/hdr/exr] // 金属度贴图(使用该纹理的蓝色通道)</li>
|
||||||
|
<li>%ao%.[png/jpg/webp/tga/hdr/exr] // 环境遮挡贴图(该纹理的红色通道)</li>
|
||||||
|
<li>%emissive%.[png/jpg/webp/tga/hdr/exr] // 自发光贴图(放射贴图)</li>
|
||||||
|
<li>%alpha%.[png/jpg/webp/tga/hdr/exr] // 透明贴图(一张灰度纹理,用于控制整个表面的不透明度:黑色:完全透明;白色:完全不透明)</li>
|
||||||
|
<li>%env%.[png/jpg/webp/tga/hdr/exr] // 环境贴图(一般不会设置,因为会使用scene.environment)</li>
|
||||||
|
<li>%light%.[png/jpg/webp/tga/hdr/exr] // 光照贴图(需要第二组UV)
|
||||||
|
:::</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</blockquote>
|
||||||
|
</template><template #tab2="{ value, isActive }"><ul class="task-list-container">
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-5" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-5"> png</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-6" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-6"> jpg/jpeg</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-7" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-7"> webp</label></li>
|
||||||
|
</ul>
|
||||||
|
</template><template #tab3="{ value, isActive }"><ul class="task-list-container">
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-8" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-8"> png</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-9" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-9"> jpg/jpeg</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-10" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-10"> webp</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-11" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-11"> svg</label></li>
|
||||||
|
</ul>
|
||||||
|
</template><template #tab4="{ value, isActive }"><ul class="task-list-container">
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-12" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-12"> hdr</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-13" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-13"> exr</label></li>
|
||||||
|
</ul>
|
||||||
|
</template></Tabs><ul>
|
||||||
|
<li><strong>名称</strong>:默认会在上传资源文件后自动获取文件名填充;</li>
|
||||||
|
<li><strong>大小</strong>:会在上传资源文件后自动计算,无需填写。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="预览资源" tabindex="-1"><a class="header-anchor" href="#预览资源"><span>预览资源</span></a></h2>
|
||||||
|
<div class="demo-wrapper only-img no-padding">
|
||||||
|
<div class="demo-head">
|
||||||
|
<div class="demo-ctrl"><i></i><i></i><i></i></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="demo-container" >
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/home/assets/asset-preview.png"
|
||||||
|
title="预览资源"
|
||||||
|
description="点击资源卡片/资源卡片操作栏的预览按钮进行资源预览。 预览弹窗左侧为可操作画布,右侧为资源详情及操作。"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/08/01"
|
||||||
|
/>
|
||||||
|
</div></div><h2 id="编辑资源" tabindex="-1"><a class="header-anchor" href="#编辑资源"><span>编辑资源</span></a></h2>
|
||||||
|
<div class="demo-wrapper only-img no-padding">
|
||||||
|
<div class="demo-head">
|
||||||
|
<div class="demo-ctrl"><i></i><i></i><i></i></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="demo-container" >
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/home/assets/asset-edit.png"
|
||||||
|
title="编辑资源"
|
||||||
|
description="点击资源卡片操作栏的编辑选项进行资源编辑。 编辑时无法修改资源类型和资源文件。"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/08/01"
|
||||||
|
/>
|
||||||
|
</div></div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/5s7acuj0/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/5s7acuj0/\",\"title\":\"动画编辑器\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"动画编辑器\",\"createTime\":\"2025/03/31 19:50:56\",\"permalink\":\"/guide/5s7acuj0/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"动画编辑器\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/5s7acuj0/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"动画编辑器\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.04,\"words\":13},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/editor/extras/动画编辑器.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/6xkx4dnv/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/6xkx4dnv/\",\"title\":\"介绍\",\"lang\":\"zh-CN\",\"frontmatter\":{\"lang\":\"zh-CN\",\"title\":\"介绍\",\"createTime\":\"2025/02/20 15:13:36\",\"permalink\":\"/guide/6xkx4dnv/\",\"description\":\"Astral 3D Engine 是一个基于 ThreeJS 的三维快速开发引擎。 Astral 3D Editor 是一个以 Astral 3D 作为底层的三维可视化编辑器。 从诞生之初,其定位便是快捷、轻量、可扩展的3D低代码创作工具,意在解决Web3D产品开发难,迭代速度慢,并且视觉效果不达标的行业痛点,推动Web3D的发展。 重点功能 场景数据...\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"介绍\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-10-02T16:56:51.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/6xkx4dnv/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"介绍\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"Astral 3D Engine 是一个基于 ThreeJS 的三维快速开发引擎。 Astral 3D Editor 是一个以 Astral 3D 作为底层的三维可视化编辑器。 从诞生之初,其定位便是快捷、轻量、可扩展的3D低代码创作工具,意在解决Web3D产品开发难,迭代速度慢,并且视觉效果不达标的行业痛点,推动Web3D的发展。 重点功能 场景数据...\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-10-02T16:56:51.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-10-02T16:56:51.000Z\"}]]},\"readingTime\":{\"minutes\":1.09,\"words\":326},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1759424211000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":3,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/介绍.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,38 @@
|
|||||||
|
<template><div><blockquote>
|
||||||
|
<p><code v-pre>Astral 3D Engine</code> 是一个基于 <code v-pre>ThreeJS</code> 的三维快速开发引擎。 <br />
|
||||||
|
<code v-pre>Astral 3D Editor</code> 是一个以 <code v-pre>Astral 3D</code> 作为底层的三维可视化编辑器。 <br />
|
||||||
|
从诞生之初,其定位便是快捷、轻量、可扩展的3D低代码创作工具,意在解决Web3D产品开发难,迭代速度慢,并且视觉效果不达标的行业痛点,推动Web3D的发展。 <br /></p>
|
||||||
|
</blockquote>
|
||||||
|
<h2 id="重点功能" tabindex="-1"><a class="header-anchor" href="#重点功能"><span>重点功能</span></a></h2>
|
||||||
|
<ul class="task-list-container">
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-0" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-0"> 场景数据无损压缩;</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-1" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-1"> 网络分包渐进存取;</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-2" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-2"> 支持30+模型格式;</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-3" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-3"> <code v-pre>BIM</code>模型在线轻量化;</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-4" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-4"> <code v-pre>CAD</code>图纸解析预览;</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-5" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-5"> 碰撞检测</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-6" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-6"> 粒子系统</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-7" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-7"> 插件系统</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-8" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-8"> 动画编辑器</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-9" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-9"> Billboard、HtmlPanel(在线解析html、Vue/React打包工程)</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-10" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-10"> 资源中心</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-11" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-11"> 3DTiles支持</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-12" disabled="disabled"><label class="task-list-item-label" for="task-item-12"> 数据组件 (API接口、前端SQL、WebSocket、静态JSON)</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-13" disabled="disabled"><label class="task-list-item-label" for="task-item-13"> Cesium场景融合(GIS支持)</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-14" disabled="disabled"><label class="task-list-item-label" for="task-item-14"> WebGPU 支持</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-15" disabled="disabled"><label class="task-list-item-label" for="task-item-15"> 低代码数据大屏(🎉开发阶段)</label></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="需要掌握的技能" tabindex="-1"><a class="header-anchor" href="#需要掌握的技能"><span>需要掌握的技能</span></a></h2>
|
||||||
|
<p>本项目二开及与服务器交互需要一定前端基础知识,建议在开发前先学习一下以下内容,会对项目理解非常有帮助:</p>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://vuejs.org/" target="_blank" rel="noopener noreferrer">Vue3</a></li>
|
||||||
|
<li><a href="https://threejs.org/" target="_blank" rel="noopener noreferrer">ThreeJS</a></li>
|
||||||
|
<li><a href="https://www.cesium.com/" target="_blank" rel="noopener noreferrer">Cesium</a></li>
|
||||||
|
<li><a href="https://www.naiveui.com/zh-CN/os-theme" target="_blank" rel="noopener noreferrer">Naive UI</a></li>
|
||||||
|
<li><a href="https://www.typescriptlang.org/" target="_blank" rel="noopener noreferrer">TypeScript</a></li>
|
||||||
|
<li><a href="https://vitejs.dev/" target="_blank" rel="noopener noreferrer">Vite</a></li>
|
||||||
|
<li><a href="https://uno.antfu.me/" target="_blank" rel="noopener noreferrer">UnoCSS</a></li>
|
||||||
|
</ul>
|
||||||
|
</div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/7eo51kfy/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/7eo51kfy/\",\"title\":\"2D图纸\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"2D图纸\",\"createTime\":\"2025/03/31 20:00:46\",\"permalink\":\"/guide/7eo51kfy/\",\"description\":\"简要说明 拖入(双击) 添加至场景中的图纸会自动占据中心视口一半的位置,其与3D视图中间的 垂直分割线 可以左右拖动以改变占据视口的大小。 图纸可以与3D视图联动,提供更直观的设计体验。 这一功能不仅提升了图纸的可视化效果,还为设计和协作提供了极大的便利。 主要亮点: 使用OffscreenCanvas技术在Worker线程中对图纸内容进行渲染,不会阻...\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"2D图纸\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/7eo51kfy/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"2D图纸\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"简要说明 拖入(双击) 添加至场景中的图纸会自动占据中心视口一半的位置,其与3D视图中间的 垂直分割线 可以左右拖动以改变占据视口的大小。 图纸可以与3D视图联动,提供更直观的设计体验。 这一功能不仅提升了图纸的可视化效果,还为设计和协作提供了极大的便利。 主要亮点: 使用OffscreenCanvas技术在Worker线程中对图纸内容进行渲染,不会阻...\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":3,\"words\":899},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/manual/editor/viewport/2D图纸.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,109 @@
|
|||||||
|
<template><div><div class="demo-wrapper only-img no-padding">
|
||||||
|
<div class="demo-head">
|
||||||
|
<div class="demo-ctrl"><i></i><i></i><i></i></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="demo-container" >
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/editor/viewport/drawing.png"
|
||||||
|
title="2D图纸"
|
||||||
|
description="拖入(双击)添加至场景中的图纸会自动占据中心视口一半的位置,其与3D视图中间的垂直分割线可以左右拖动以改变占据视口的大小"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/16"
|
||||||
|
/>
|
||||||
|
</div></div><h2 id="简要说明" tabindex="-1"><a class="header-anchor" href="#简要说明"><span>简要说明</span></a></h2>
|
||||||
|
<p><mark>拖入(双击)</mark> 添加至场景中的图纸会自动占据中心视口一半的位置,其与3D视图中间的 <mark>垂直分割线</mark> 可以左右拖动以改变占据视口的大小。<br />
|
||||||
|
图纸可以与3D视图联动,提供更直观的设计体验。<br />
|
||||||
|
这一功能不仅提升了图纸的可视化效果,还为设计和协作提供了极大的便利。<br /></p>
|
||||||
|
<p><strong>主要亮点:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>使用OffscreenCanvas技术在Worker线程中对图纸内容进行渲染,不会阻塞主线程3D场景的渲染。</li>
|
||||||
|
<li>图纸与3D视图联动,操作简单高效。</li>
|
||||||
|
<li>灵活调整视口分割线,优化工作空间。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="功能说明" tabindex="-1"><a class="header-anchor" href="#功能说明"><span>功能说明</span></a></h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>图纸加载</strong>:支持将图纸拖入或双击添加至场景。</li>
|
||||||
|
<li><strong>视口分割</strong>:通过拖动分割线调整2D图纸与3D视图的占比。</li>
|
||||||
|
<li><strong>图纸复位</strong>:将图纸的显示区域恢复为初始状态。</li>
|
||||||
|
<li><strong>图层显隐</strong>:查看图纸的图层列表,并显示/隐藏任意图层。</li>
|
||||||
|
<li><strong>新增标记</strong>:在3D视图中选中模型后,便可以在图纸中新增对应的标记框。</li>
|
||||||
|
<li><strong>删除标记</strong>:删除当前选中的标记。</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="图纸加载" tabindex="-1"><a class="header-anchor" href="#图纸加载"><span>图纸加载</span></a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>功能描述</strong>:将图纸拖入或双击添加至场景后,图纸会自动占据中心视口的一半位置。</li>
|
||||||
|
<li><strong>操作方式</strong>:
|
||||||
|
<ul>
|
||||||
|
<li>在左侧CAD图纸列表中双击目标图纸,快速加载到场景中。</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="视口分割" tabindex="-1"><a class="header-anchor" href="#视口分割"><span>视口分割</span></a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>功能描述</strong>:调整2D图纸与3D视图的占比,优化工作空间。</li>
|
||||||
|
<li><strong>操作方式</strong>:
|
||||||
|
<ul>
|
||||||
|
<li>拖动2D图纸与3D视图中间的垂直分割线,调整两者的占比。</li>
|
||||||
|
</ul>
|
||||||
|
<!-- - 分割线位置会自动保存,方便下次使用。 -->
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="图纸复位" tabindex="-1"><a class="header-anchor" href="#图纸复位"><span>图纸复位</span></a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>功能描述</strong>:将图纸的显示区域恢复为初始状态。</li>
|
||||||
|
<li><strong>操作方式</strong>:
|
||||||
|
<ul>
|
||||||
|
<li>点击图纸菜单栏中的复位按钮(第一个)。</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="图层显隐" tabindex="-1"><a class="header-anchor" href="#图层显隐"><span>图层显隐</span></a></h3>
|
||||||
|
<div class="demo-wrapper only-img no-padding">
|
||||||
|
<div class="demo-head">
|
||||||
|
<div class="demo-ctrl"><i></i><i></i><i></i></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="demo-container" >
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/editor/viewport/drawingLayer.png"
|
||||||
|
title="CAD图层"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/16"
|
||||||
|
/>
|
||||||
|
</div></div><ul>
|
||||||
|
<li><strong>功能描述</strong>:查看图纸的图层列表,并显示/隐藏任意图层。</li>
|
||||||
|
<li><strong>操作方式</strong>:
|
||||||
|
<ul>
|
||||||
|
<li>点击图纸菜单栏中的图层按钮(第二个)。</li>
|
||||||
|
<li>弹出的图层列表中,点击任一个图层前面的小眼睛图标即可隐藏对应图层,反正显示对应图层。</li>
|
||||||
|
<li>图层列表顶部的<mark>全部图层</mark>节点可以同时显示/隐藏所有图层。</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="新增标记" tabindex="-1"><a class="header-anchor" href="#新增标记"><span>新增标记</span></a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>功能描述</strong>:在图纸中新增3D场景中所选中模型的对应的标记框。</li>
|
||||||
|
<li><strong>操作方式</strong>:
|
||||||
|
<ul>
|
||||||
|
<li>在右侧3D场景中选中需要标注的模型。</li>
|
||||||
|
<li>点击图纸菜单栏中的新增标记按钮(第三个)。</li>
|
||||||
|
<li>在图纸需要标记的位置按住鼠标左键拖动,即可绘制出长方形标记框。</li>
|
||||||
|
<li>只会只要在图纸中点击该标记,右侧3D场景便会自动聚焦并选中相应模型。</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="删除标记" tabindex="-1"><a class="header-anchor" href="#删除标记"><span>删除标记</span></a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>功能描述</strong>:删除当前选中的标记。</li>
|
||||||
|
<li><strong>操作方式</strong>:
|
||||||
|
<ul>
|
||||||
|
<li>在图纸上选中需要删除的标记。</li>
|
||||||
|
<li>点击图纸菜单栏中的删除按钮(第四个)。</li>
|
||||||
|
<li>标记及其与模型的关联关系将被移除。</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/ae7ufigr/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/ae7ufigr/\",\"title\":\"历史记录\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"历史记录\",\"createTime\":\"2025/03/31 20:05:25\",\"permalink\":\"/guide/ae7ufigr/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"历史记录\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/ae7ufigr/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"历史记录\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.04,\"words\":12},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/editor/rightSidebar/历史记录.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/chhmeza7/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/chhmeza7/\",\"title\":\"界面\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"界面\",\"createTime\":\"2025/04/14 00:49:50\",\"permalink\":\"/guide/chhmeza7/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"界面\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/chhmeza7/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"界面\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.03,\"words\":10},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/preview/界面.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/component/h4v1bkyh/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/component/h4v1bkyh/\",\"title\":\"脚本\",\"lang\":\"zh-CN\",\"frontmatter\":{\"lang\":\"zh-CN\",\"title\":\"脚本\",\"createTime\":\"2025/02/20 15:13:36\",\"permalink\":\"/guide/component/h4v1bkyh/\",\"description\":\"主要面相于开发人员,主要功能有: 编写脚本逻辑,并将其挂载于实体模型上; 脚本组件使用JavaScript编程语言; 脚本组件由事件驱动,在对应生命周期内执行; 脚本组件可以访问实体模型的属性和方法; 运行时执行脚本逻辑,并获取脚本执行结果; 内置变量 在脚本中已经内置了以下变量: 内置方法 在脚本中已经内置了以下方法: 内置生命周期 支持以下几个基本...\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"脚本\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-10-03T15:00:46.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/component/h4v1bkyh/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"脚本\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"主要面相于开发人员,主要功能有: 编写脚本逻辑,并将其挂载于实体模型上; 脚本组件使用JavaScript编程语言; 脚本组件由事件驱动,在对应生命周期内执行; 脚本组件可以访问实体模型的属性和方法; 运行时执行脚本逻辑,并获取脚本执行结果; 内置变量 在脚本中已经内置了以下变量: 内置方法 在脚本中已经内置了以下方法: 内置生命周期 支持以下几个基本...\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-10-03T15:00:46.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-10-03T15:00:46.000Z\"}]]},\"readingTime\":{\"minutes\":5.02,\"words\":1505},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1759503646000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":4,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/manual/editor/rightSidebar/脚本.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,482 @@
|
|||||||
|
<template><div><blockquote>
|
||||||
|
<p>主要面相于开发人员,主要功能有:</p>
|
||||||
|
<ol>
|
||||||
|
<li>编写脚本逻辑,并将其挂载于实体模型上;</li>
|
||||||
|
<li>脚本组件使用<code v-pre>JavaScript</code>编程语言;</li>
|
||||||
|
<li>脚本组件由事件驱动,在对应生命周期内执行;</li>
|
||||||
|
<li>脚本组件可以访问实体模型的属性和方法;</li>
|
||||||
|
<li>运行时执行脚本逻辑,并获取脚本执行结果;</li>
|
||||||
|
</ol>
|
||||||
|
</blockquote>
|
||||||
|
<h3 id="内置变量" tabindex="-1"><a class="header-anchor" href="#内置变量"><span>内置变量</span></a></h3>
|
||||||
|
<p>在脚本中已经内置了以下变量:</p>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>变量</th>
|
||||||
|
<th>描述</th>
|
||||||
|
<th>类型</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>this</td>
|
||||||
|
<td>当前实体模型的引用</td>
|
||||||
|
<td><code v-pre>THREE.Object3D</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>THREE</td>
|
||||||
|
<td>THREE对象</td>
|
||||||
|
<td><code v-pre>THREE</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>helper</td>
|
||||||
|
<td>辅助类函数集合</td>
|
||||||
|
<td><a href="#helper">Helper</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>renderer</td>
|
||||||
|
<td>当前渲染器的引用</td>
|
||||||
|
<td><code v-pre>THREE.WebGLRenderer</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>scene</td>
|
||||||
|
<td>当前场景的引用</td>
|
||||||
|
<td><code v-pre>THREE.Scene</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>camera</td>
|
||||||
|
<td>当前场景相机的引用</td>
|
||||||
|
<td><code v-pre>THREE.PerspectiveCamera</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>controls</td>
|
||||||
|
<td>当前场景控制器的引用</td>
|
||||||
|
<td><a href="https://github.com/yomotsu/camera-controls" target="_blank" rel="noopener noreferrer">CameraControls</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>timer</td>
|
||||||
|
<td>场景运行时间跟踪</td>
|
||||||
|
<td><code v-pre>three/addons/misc/Timer.js</code></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<h3 id="内置方法" tabindex="-1"><a class="header-anchor" href="#内置方法"><span>内置方法</span></a></h3>
|
||||||
|
<p>在脚本中已经内置了以下方法:</p>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>方法</th>
|
||||||
|
<th>描述</th>
|
||||||
|
<th>传入参数</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>render</td>
|
||||||
|
<td>驱动场景渲染一帧。</td>
|
||||||
|
<td><code v-pre>{delta?:number}</code></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<h3 id="内置生命周期" tabindex="-1"><a class="header-anchor" href="#内置生命周期"><span>内置生命周期</span></a></h3>
|
||||||
|
<p>支持以下几个基本生命周期:</p>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>生命周期</th>
|
||||||
|
<th>描述</th>
|
||||||
|
<th>参数</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>loaded</td>
|
||||||
|
<td>场景加载完成时执行,仅执行一次</td>
|
||||||
|
<td>-</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>beforeAnimation</td>
|
||||||
|
<td>场景当前动画帧循环开始之前触发,每一帧执行一次</td>
|
||||||
|
<td><code v-pre>{"delta":number}</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>afterAnimation</td>
|
||||||
|
<td>场景当前动画帧循环完成之后立即触发,每一帧执行一次</td>
|
||||||
|
<td><code v-pre>{"delta":number,"toBeRender":(_needRender: boolean) => void}</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>beforeRender</td>
|
||||||
|
<td>场景当前动画帧循环完成之后渲染之前触发,每一次渲染执行一次</td>
|
||||||
|
<td><code v-pre>{"delta":number}</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>afterRender</td>
|
||||||
|
<td>场景当前帧渲染完成之后触发,每一次渲染执行一次</td>
|
||||||
|
<td><code v-pre>{"delta":number}</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>beforeDestroy</td>
|
||||||
|
<td>场景销毁前调用,仅执行一次</td>
|
||||||
|
<td>-</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>afterDestroy</td>
|
||||||
|
<td>场景销毁后调用,仅执行一次</td>
|
||||||
|
<td>-</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<blockquote>
|
||||||
|
<p>Tips:</p>
|
||||||
|
<blockquote>
|
||||||
|
<p><code v-pre>toBeRender</code>:由于本系统默认为事件驱动渲染,而非持续渲染,故提供此方法以便在脚本中实现自定义的逻辑。推荐用法:</p>
|
||||||
|
<div class="language-javascript line-numbers-mode" data-highlighter="shiki" data-ext="javascript" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-javascript"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">afterAnimation</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">delta</span><span style="--shiki-light:#999999;--shiki-dark:#666666">,</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">toBeRender</span><span style="--shiki-light:#999999;--shiki-dark:#666666">){</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> // 传入true则下一帧一定渲染</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> toBeRender</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">true</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span></span></code></pre>
|
||||||
|
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></blockquote>
|
||||||
|
</blockquote>
|
||||||
|
<h3 id="内置事件" tabindex="-1"><a class="header-anchor" href="#内置事件"><span>内置事件</span></a></h3>
|
||||||
|
<p>支持以下几个基本事件:</p>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>事件</th>
|
||||||
|
<th>描述</th>
|
||||||
|
<th>参数</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>onPick</td>
|
||||||
|
<td>模型单击事件</td>
|
||||||
|
<td><code v-pre>intersect:THREE.Intersection</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>onDoubleClick</td>
|
||||||
|
<td>模型双击事件</td>
|
||||||
|
<td><code v-pre>intersect:THREE.Intersection</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>onKeydown</td>
|
||||||
|
<td>键盘按下事件(全局)</td>
|
||||||
|
<td><code v-pre>event:KeyboardEvent</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>onKeyup</td>
|
||||||
|
<td>键盘抬起事件(全局)</td>
|
||||||
|
<td><code v-pre>event:KeyboardEvent</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>onPointerDown</td>
|
||||||
|
<td>指针按下事件(全局)</td>
|
||||||
|
<td><code v-pre>event:PointerEvent</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>onPointerUp</td>
|
||||||
|
<td>指针抬起事件(全局)</td>
|
||||||
|
<td><code v-pre>event:PointerEvent</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>onPointerMove</td>
|
||||||
|
<td>指针移动事件(全局)</td>
|
||||||
|
<td><code v-pre>event:PointerEvent</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>onTouchStart</td>
|
||||||
|
<td>触屏按下事件(全局)</td>
|
||||||
|
<td><code v-pre>event:TouchEvent</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>onTouchEnd</td>
|
||||||
|
<td>触屏释放事件(全局)</td>
|
||||||
|
<td><code v-pre>event:TouchEvent</code></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<br/>
|
||||||
|
<hr>
|
||||||
|
<h3 id="辅助类-helper" tabindex="-1"><a class="header-anchor" href="#辅助类-helper"><span>辅助类(<a id="helper">Helper</a>)</span></a></h3>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>成员</th>
|
||||||
|
<th>描述</th>
|
||||||
|
<th>类型</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>scene</td>
|
||||||
|
<td>当前场景的引用,内置变量scene的引用</td>
|
||||||
|
<td><code v-pre>THREE.Scene</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Animation</td>
|
||||||
|
<td>未实例化的动画类</td>
|
||||||
|
<td><a href="#helper-animation">Animation</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>方法</th>
|
||||||
|
<th>描述</th>
|
||||||
|
<th>参数</th>
|
||||||
|
<th>返回值</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>objectByUuid</td>
|
||||||
|
<td>通过uuid获取场景中的Object3D对象</td>
|
||||||
|
<td><code v-pre>uuid:string</code></td>
|
||||||
|
<td><code v-pre>THREE.Object3D</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>moveObject</td>
|
||||||
|
<td>移动3D对象到指定位置</td>
|
||||||
|
<td><code v-pre>object: Object3D</code><br/><code v-pre>parent: Object3D</code><br/><code v-pre>before: Object3D</code></td>
|
||||||
|
<td>-</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>removeObject</td>
|
||||||
|
<td>从场景中移除3D对象</td>
|
||||||
|
<td><code v-pre>object: THREE.Object3D</code></td>
|
||||||
|
<td>-</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<h3 id="动画类-animation" tabindex="-1"><a class="header-anchor" href="#动画类-animation"><span>动画类(<a id="helper-animation">Animation</a>)</span></a></h3>
|
||||||
|
<h4 id="基础用法" tabindex="-1"><a class="header-anchor" href="#基础用法"><span>基础用法</span></a></h4>
|
||||||
|
<div class="language-javascript line-numbers-mode" data-highlighter="shiki" data-ext="javascript" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-javascript"><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676"> const</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> animation</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> =</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676"> new</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> helper</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">Animation</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076">this</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span></code></pre>
|
||||||
|
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div></div></div><h4 id="api" tabindex="-1"><a class="header-anchor" href="#api"><span>API</span></a></h4>
|
||||||
|
<div class="language-typescript line-numbers-mode" data-highlighter="shiki" data-ext="typescript" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-typescript"><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676"> new</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> helper</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">Animation</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">object</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE">:</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">THREE</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">Object3D</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span></span></code></pre>
|
||||||
|
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div></div></div><table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>成员</th>
|
||||||
|
<th>描述</th>
|
||||||
|
<th>类型</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>object</td>
|
||||||
|
<td>构造函数形参值,动画绑定的对象。<br/> 如果实例化时传入参数this(如上),则指向内置变量this</td>
|
||||||
|
<td><code v-pre>THREE.Object3D</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>actions</td>
|
||||||
|
<td>动画动作集合</td>
|
||||||
|
<td><code v-pre>THREE.AnimationAction[]</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>actionsMap</td>
|
||||||
|
<td>动画动作映射表,key为动作名称,value为THREE.AnimationAction对象</td>
|
||||||
|
<td><code v-pre>Map<string, THREE.AnimationAction></code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>lastPlayAction</td>
|
||||||
|
<td>正在播放的动作名称</td>
|
||||||
|
<td><code v-pre>THREE.AnimationAction | undefined</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>repetitions</td>
|
||||||
|
<td>动画重复次数</td>
|
||||||
|
<td><code v-pre>number</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>ActionLoop (static)</td>
|
||||||
|
<td>动画循环模式枚举:<br/> LoopOnce - 只执行一次 <br/> LoopRepeat - 重复次数为repetitions的值, 且每次循环结束时候将回到起始动作开始下一次循环。 <br/> LoopPingPong - 重复次数为repetitions的值, 且像乒乓球一样在起始点与结束点之间来回循环。</td>
|
||||||
|
<td><code v-pre>Enum</code></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>方法</th>
|
||||||
|
<th>描述</th>
|
||||||
|
<th>参数</th>
|
||||||
|
<th>返回值</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>getAction</td>
|
||||||
|
<td>获取指定名称的动画动作,用于用户直接调用<a href="https://threejs.org/docs/index.html#api/zh/animation/AnimationAction" target="_blank" rel="noopener noreferrer">THREE.AnimationAction的方法</a></td>
|
||||||
|
<td><code v-pre>name:string</code></td>
|
||||||
|
<td><code v-pre>THREE.AnimationAction | undefined</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>play</td>
|
||||||
|
<td>播放指定名称的动画动作,支持链式调用</td>
|
||||||
|
<td><code v-pre>name:string</code> <br/> <code v-pre>loop:AnimationActionLoopStyles = helper.Animation.ActionLoop.LoopRepeat</code> <br/> <code v-pre>timeScale:number = 1</code></td>
|
||||||
|
<td><code v-pre>this(helper.Animation)</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>pause</td>
|
||||||
|
<td>暂停动画,支持链式调用</td>
|
||||||
|
<td><code v-pre>name:string | undefined</code></td>
|
||||||
|
<td><code v-pre>this(helper.Animation)</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>stop</td>
|
||||||
|
<td>停止动画,支持链式调用</td>
|
||||||
|
<td><code v-pre>name:string | undefined</code></td>
|
||||||
|
<td><code v-pre>this(helper.Animation)</code></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<h3 id="基础用法-1" tabindex="-1"><a class="header-anchor" href="#基础用法-1"><span>基础用法</span></a></h3>
|
||||||
|
<p>完整结构:</p>
|
||||||
|
<div class="language-javascript line-numbers-mode" data-highlighter="shiki" data-ext="javascript" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-javascript"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 场景加载完成时执行,仅执行一次</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> loaded</span><span style="--shiki-light:#999999;--shiki-dark:#666666">()</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> console</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">group</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">'</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D">loaded</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">'</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> console</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">log</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076">this</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> console</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">log</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">renderer</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> console</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">log</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">scene</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> console</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">log</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">camera</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> console</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">log</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">controls</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> console</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">log</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">timer</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> console</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">groupEnd</span><span style="--shiki-light:#999999;--shiki-dark:#666666">()</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 场景当前动画帧循环开始之前触发,每一帧执行一次</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">number</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> delta</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> beforeAnimation</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">delta</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 场景当前动画帧循环完成之后立即触发,每一帧执行一次</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">number</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> delta</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">(_needRender: boolean) => void</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> toBeRender</span><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> 设置下一帧是否将渲染</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> afterAnimation</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">delta</span><span style="--shiki-light:#999999;--shiki-dark:#666666">,</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">toBeRender</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 场景当前动画帧循环完成之后渲染之前触发,每一次渲染执行一次</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">number</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> delta</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> beforeRender</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">delta</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 场景当前帧渲染完成之后触发,每一次渲染执行一次</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">number</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> delta</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> afterRender</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">delta</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 场景销毁前调用,仅执行一次</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> beforeDestroy</span><span style="--shiki-light:#999999;--shiki-dark:#666666">()</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 场景销毁后调用,仅执行一次</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> afterDestroy</span><span style="--shiki-light:#999999;--shiki-dark:#666666">()</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 模型单击事件</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">THREE.Intersection</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> intersect</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> onPick</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">intersect</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 模型双击事件</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">THREE.Intersection</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> intersect</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> onDoubleClick</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">intersect</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 键盘按下事件(全局)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">KeyboardEvent</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> event</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> onKeyDown</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">event</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 键盘抬起事件(全局)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">KeyboardEvent</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> event</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> onKeyUp</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">event</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 指针按下事件(全局)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">PointerEvent</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> event</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> onPointerDown</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">event</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 指针抬起事件(全局)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">PointerEvent</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> event</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> onPointerUp</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">event</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 指针移动事件(全局)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">PointerEvent</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> event</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> onPointerMove</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">event</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 触屏按下事件(全局)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">TouchEvent</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> event</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> onTouchStart</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">event</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">/**</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * 触屏释放事件(全局)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> * </span><span style="--shiki-light:#999999;--shiki-dark:#666666">@</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">param</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">TouchEvent</span><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> event</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> */</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> onTouchEnd</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">event</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {}</span></span></code></pre>
|
||||||
|
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><hr>
|
||||||
|
<h3 id="示例代码" tabindex="-1"><a class="header-anchor" href="#示例代码"><span>示例代码</span></a></h3>
|
||||||
|
<h4 id="_1-动态天空盒-模型动画-键盘事件" tabindex="-1"><a class="header-anchor" href="#_1-动态天空盒-模型动画-键盘事件"><span>1. 动态天空盒/模型动画/键盘事件</span></a></h4>
|
||||||
|
<Tabs id="700" :data='[{"id":"scene"},{"id":"wolf"}]' :active="1" tab-id="animate">
|
||||||
|
<template #title0="{ value, isActive }">Scene</template><template #title1="{ value, isActive }">Wolf</template><template #tab0="{ value, isActive }"><div class="language-javascript line-numbers-mode" data-highlighter="shiki" data-ext="javascript" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-javascript"><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> afterAnimation</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">delta</span><span style="--shiki-light:#999999;--shiki-dark:#666666">,</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">toBeRender</span><span style="--shiki-light:#999999;--shiki-dark:#666666">){</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> toBeRender</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">true</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">const</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> DEG2RAD</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> Math</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">PI</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676"> /</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91"> 180</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> beforeRender</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">delta</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676"> const</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> t</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> delta</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676"> *</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> DEG2RAD</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> scene</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">backgroundRotation</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">y</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> t</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span></span></code></pre>
|
||||||
|
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></template><template #tab1="{ value, isActive }"><div class="language-javascript line-numbers-mode" data-highlighter="shiki" data-ext="javascript" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-javascript"><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">const</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> anime</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> =</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676"> new</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> helper</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">Animation</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076">this</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> loaded</span><span style="--shiki-light:#999999;--shiki-dark:#666666">()</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> anime</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">play</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">"</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D">01_Run_Armature_0</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> onKeyDown</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">event</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> // 按下1则执行 "01_Run_Armature_0" 动画,按下2则执行 "02_walk_Armature_0" 动画,按下3则执行 ""05_site_Armature_0"" 动画,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375"> switch</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> (</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">event</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">key</span><span style="--shiki-light:#999999;--shiki-dark:#666666">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375"> case</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77"> "</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D">1</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> anime</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">stop</span><span style="--shiki-light:#999999;--shiki-dark:#666666">();</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> anime</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">play</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">"</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D">02_walk_Armature_0</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375"> break</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375"> case</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77"> "</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D">2</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> anime</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">stop</span><span style="--shiki-light:#999999;--shiki-dark:#666666">();</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> anime</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">play</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">"</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D">05_site_Armature_0</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375"> break</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375"> case</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77"> "</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D">3</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> anime</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">stop</span><span style="--shiki-light:#999999;--shiki-dark:#666666">();</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> anime</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">play</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">"</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D">01_Run_Armature_0</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375"> break</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">function</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> beforeDestroy</span><span style="--shiki-light:#999999;--shiki-dark:#666666">()</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> anime</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">stop</span><span style="--shiki-light:#999999;--shiki-dark:#666666">();</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span></span></code></pre>
|
||||||
|
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></template></Tabs><iframe height=500 width=100% src="https://editor.astraljs.com/#/preview/a18eb710-c1f8-4cff-b8ab-c3a2056ccf57" frameborder=0 allowfullscreen></iframe></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/crvssx6j/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/crvssx6j/\",\"title\":\"渲染器配置\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"渲染器配置\",\"createTime\":\"2025/03/31 20:04:34\",\"permalink\":\"/guide/crvssx6j/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"渲染器配置\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/crvssx6j/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"渲染器配置\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.04,\"words\":13},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/editor/rightSidebar/渲染器配置.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/dbd366ps/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/dbd366ps/\",\"title\":\"项目\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"项目\",\"createTime\":\"2025/08/01 15:13:58\",\"permalink\":\"/guide/dbd366ps/\",\"description\":\"新建项目 可以选择新建一个空项目或者依据内置模板创建。\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"项目\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-08-01T17:28:41.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/dbd366ps/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"项目\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"新建项目 可以选择新建一个空项目或者依据内置模板创建。\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-08-01T17:28:41.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-08-01T17:28:41.000Z\"}]]},\"readingTime\":{\"minutes\":0.31,\"words\":94},\"git\":{\"createdTime\":1754069321000,\"updatedTime\":1754069321000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/manual/home/项目.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
<template><div><div class="demo-wrapper only-img no-padding">
|
||||||
|
<div class="demo-head">
|
||||||
|
<div class="demo-ctrl"><i></i><i></i><i></i></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="demo-container" >
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/home/project/project-page.png"
|
||||||
|
title="项目"
|
||||||
|
description=""
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/08/01"
|
||||||
|
/>
|
||||||
|
</div></div><h2 id="新建项目" tabindex="-1"><a class="header-anchor" href="#新建项目"><span>新建项目</span></a></h2>
|
||||||
|
<blockquote>
|
||||||
|
<p>可以选择新建一个空项目或者依据内置模板创建。</p>
|
||||||
|
</blockquote>
|
||||||
|
<div class="demo-wrapper only-img no-padding">
|
||||||
|
<div class="demo-head">
|
||||||
|
<div class="demo-ctrl"><i></i><i></i><i></i></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="demo-container" >
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/home/project/new-project.png"
|
||||||
|
title="新建项目"
|
||||||
|
description="可以选择新建一个空项目或者依据内置模板创建"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/08/01"
|
||||||
|
/>
|
||||||
|
</div></div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/dju4ekca/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/dju4ekca/\",\"title\":\"资源中心\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"资源中心\",\"createTime\":\"2025/03/31 19:51:33\",\"permalink\":\"/guide/dju4ekca/\",\"description\":\"简要说明 在扩展栏左上角下拉菜单中可将扩展面板切换到资源中心模块。 资源共分为模型、材质、粒子、广告牌、Html面板、灯光、相机。 编辑器已内置大多通用资源,也可在扩展栏右上角切换资源来源:内置资源/公共资源。 主要亮点: 资源分类清晰:支持多种资源类型,方便用户快速查找和使用。 资源来源灵活:可切换内置资源和公共资源,满足不同场景需求。 高效管理:支...\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"资源中心\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/dju4ekca/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"资源中心\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"简要说明 在扩展栏左上角下拉菜单中可将扩展面板切换到资源中心模块。 资源共分为模型、材质、粒子、广告牌、Html面板、灯光、相机。 编辑器已内置大多通用资源,也可在扩展栏右上角切换资源来源:内置资源/公共资源。 主要亮点: 资源分类清晰:支持多种资源类型,方便用户快速查找和使用。 资源来源灵活:可切换内置资源和公共资源,满足不同场景需求。 高效管理:支...\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":4.14,\"words\":1242},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/manual/editor/extras/资源中心.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,92 @@
|
|||||||
|
<template><div><div class="demo-wrapper only-img no-padding">
|
||||||
|
<div class="demo-head">
|
||||||
|
<div class="demo-ctrl"><i></i><i></i><i></i></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="demo-container" >
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/editor/extras/resource.png"
|
||||||
|
title="资源中心"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/17"
|
||||||
|
/>
|
||||||
|
</div></div><h2 id="简要说明" tabindex="-1"><a class="header-anchor" href="#简要说明"><span>简要说明</span></a></h2>
|
||||||
|
<p>在扩展栏左上角下拉菜单中可将扩展面板切换到资源中心模块。<br />
|
||||||
|
资源共分为<mark>模型、材质、粒子、广告牌、Html面板、灯光、相机</mark>。<br />
|
||||||
|
编辑器已内置大多通用资源,也可在扩展栏右上角切换资源来源:<mark>内置资源/公共资源</mark>。</p>
|
||||||
|
<p><strong>主要亮点:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>资源分类清晰</strong>:支持多种资源类型,方便用户快速查找和使用。</li>
|
||||||
|
<li><strong>资源来源灵活</strong>:可切换内置资源和公共资源,满足不同场景需求。</li>
|
||||||
|
<li><strong>高效管理</strong>:支持资源的快速预览、搜索和分类管理。</li>
|
||||||
|
<li><strong>扩展性强</strong>:用户可自定义资源并上传到公共资源库。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="功能说明" tabindex="-1"><a class="header-anchor" href="#功能说明"><span>功能说明</span></a></h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>资源搜索</strong>:按名称模糊搜索已选择分类下的资源。</li>
|
||||||
|
<li><strong>模型</strong>:内置多种类型的模型,用户可快速预览模型并拖拽到场景中使用。</li>
|
||||||
|
<li><strong>材质</strong>:提供丰富的材质库,用户可实时预览材质效果并应用至模型。</li>
|
||||||
|
<li><strong>粒子</strong>:内置多种粒子效果模板,支持参数调整和自定义粒子效果创建。</li>
|
||||||
|
<li><strong>广告牌</strong>:支持图片和文字广告牌的快速创建,适用于场景标注和装饰。</li>
|
||||||
|
<li><strong>Html面板</strong>:允许嵌入自定义HTML内容,支持动态交互和样式调整。</li>
|
||||||
|
<li><strong>灯光</strong>:提供多种灯光类型(如点光源、聚光灯等),支持实时调整光照参数。</li>
|
||||||
|
<li><strong>相机</strong>:内置透视相机与正交相机,满足不同场景需求。</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="资源搜索" tabindex="-1"><a class="header-anchor" href="#资源搜索"><span>资源搜索</span></a></h3>
|
||||||
|
<p>搜索框位于扩展栏顶部中间。
|
||||||
|
输入搜索内容,将根据当前所选取资源类型进行模糊查询。</p>
|
||||||
|
<h3 id="模型" tabindex="-1"><a class="header-anchor" href="#模型"><span>模型</span></a></h3>
|
||||||
|
<p>如本页首图,内置了多种类型的模型,用户可通过<mark>拖拽/双击</mark>方式将模型添加到场景中。</p>
|
||||||
|
<ul>
|
||||||
|
<li><mark>拖拽</mark>:模型将放置在鼠标放开的屏幕位置</li>
|
||||||
|
<li><mark>双击</mark>:模型将放置在场景中心</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="材质" tabindex="-1"><a class="header-anchor" href="#材质"><span>材质</span></a></h3>
|
||||||
|
<p>内置了多类型的PBR材质、Shader材质,用户可通过<mark>拖拽/双击</mark>方式将材质应用到模型上; <br />
|
||||||
|
成功应用的材质可在 右侧边栏-<VPLink href="/guide/l1df4723/">材质</VPLink> 进行参数配置及修改。</p>
|
||||||
|
<ul>
|
||||||
|
<li><mark>右键</mark>:预览材质</li>
|
||||||
|
<li><mark>拖拽</mark>:材质将应用至鼠标放开位置选取到的模型上</li>
|
||||||
|
<li><mark>双击</mark>:材质将应用至所选取的模型上</li>
|
||||||
|
</ul>
|
||||||
|
<p><strong>注意</strong>:材质只能应用至Mesh节点,不能应用于Group、广告牌、粒子、Html面板等节点。即材质只能应用于本身就包含材质属性的模型节点。</p>
|
||||||
|
<h3 id="粒子" tabindex="-1"><a class="header-anchor" href="#粒子"><span>粒子</span></a></h3>
|
||||||
|
<p>内置火焰、烟雾、萤火虫等常见粒子效果模板,用户可通过<mark>拖拽/双击</mark>方式将粒子添加到场景中; <br />
|
||||||
|
成功添加的粒子可在 右侧边栏-<VPLink href="/guide/siz46vj0/">粒子</VPLink> 调整粒子发射器参数及粒子行为。</p>
|
||||||
|
<ul>
|
||||||
|
<li><mark>拖拽</mark>:粒子将放置在鼠标放开的屏幕位置</li>
|
||||||
|
<li><mark>双击</mark>:粒子将放置在场景中心</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="广告牌" tabindex="-1"><a class="header-anchor" href="#广告牌"><span>广告牌</span></a></h3>
|
||||||
|
<p>内置图标、文本广告牌,用户可通过<mark>拖拽/双击</mark>方式将广告牌添加到场景中; <br />
|
||||||
|
成功添加的广告牌可在 右侧边栏-<VPLink href="/guide/18al65zg/">广告牌</VPLink> 进行参数配置及修改。</p>
|
||||||
|
<ul>
|
||||||
|
<li><mark>拖拽</mark>:广告牌将放置在鼠标放开的屏幕位置</li>
|
||||||
|
<li><mark>双击</mark>:广告牌将放置在场景中心</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="html面板" tabindex="-1"><a class="header-anchor" href="#html面板"><span>Html面板</span></a></h3>
|
||||||
|
<p>内置多个Html面板模板,用户可通过<mark>拖拽/双击</mark>方式将Html面板添加到场景中; <br />
|
||||||
|
该功能允许用户在场景中嵌入HTML内容,如视频播放器、交互式表单、数据图表等,支持动态更新; <br />
|
||||||
|
成功添加的Html面板可在 右侧边栏-<VPLink href="/guide/kk5cv2ij/">Html面板</VPLink> 进行参数配置及内容修改。</p>
|
||||||
|
<ul>
|
||||||
|
<li><mark>拖拽</mark>:Html面板将放置在鼠标放开的屏幕位置</li>
|
||||||
|
<li><mark>双击</mark>:Html面板将放置在场景中心</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="灯光" tabindex="-1"><a class="header-anchor" href="#灯光"><span>灯光</span></a></h3>
|
||||||
|
<p>内置<mark>环境光、平行光、半球光、点光源、聚光灯</mark>五种灯光类型,用户可通过<mark>拖拽/双击</mark>方式将灯光添加到场景中; <br />
|
||||||
|
成功添加的灯光(选中后)可在 右侧边栏-<VPLink href="/guide/2xlh6nrf/">对象</VPLink> 进行参数配置及修改。</p>
|
||||||
|
<ul>
|
||||||
|
<li><mark>拖拽</mark>:灯光将放置在鼠标放开的屏幕位置</li>
|
||||||
|
<li><mark>双击</mark>:灯光将放置在场景中心</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="相机" tabindex="-1"><a class="header-anchor" href="#相机"><span>相机</span></a></h3>
|
||||||
|
<p>内置<mark>透视相机、正交相机</mark>,用户可通过<mark>拖拽/双击</mark>方式将相机添加到场景中; <br />
|
||||||
|
相机添加后可在<VPLink href="/guide/jkg3yahd/">3D视口</VPLink>左上角进行主相机切换;<br />
|
||||||
|
成功添加的相机(选中后)可在 右侧边栏-<VPLink href="/guide/2xlh6nrf/">对象</VPLink> 进行参数配置及修改。</p>
|
||||||
|
<ul>
|
||||||
|
<li><mark>拖拽</mark>:相机将放置在鼠标放开的屏幕位置</li>
|
||||||
|
<li><mark>双击</mark>:相机将放置在场景中心</li>
|
||||||
|
</ul>
|
||||||
|
</div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/f7smai4w/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/f7smai4w/\",\"title\":\"顶栏\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"顶栏\",\"createTime\":\"2025/03/31 20:09:24\",\"permalink\":\"/guide/f7smai4w/\",\"description\":\"顶栏 说明 顶栏部分为左中右布局,左侧为基础操作区,中间仅展示场景名称,右侧为多功能区域 基础操作区 图标/按钮 从左到右依次是 Logo、撤回、重做、删除、清空、拷贝、全屏、导出、导入 多功能区域 图标/按钮 从左到右依次是 保存、预览、国际化、主题、主色调、设置\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"顶栏\\\",\\\"image\\\":[\\\"https://docs.astraljs.com/images/manual/editor/header.png\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/f7smai4w/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"顶栏\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"顶栏 说明 顶栏部分为左中右布局,左侧为基础操作区,中间仅展示场景名称,右侧为多功能区域 基础操作区 图标/按钮 从左到右依次是 Logo、撤回、重做、删除、清空、拷贝、全屏、导出、导入 多功能区域 图标/按钮 从左到右依次是 保存、预览、国际化、主题、主色调、设置\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:image\",\"content\":\"https://docs.astraljs.com/images/manual/editor/header.png\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":2.3,\"words\":689},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/manual/editor/顶栏.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,111 @@
|
|||||||
|
<template><div><div class="demo-wrapper only-img no-padding">
|
||||||
|
<div class="demo-head">
|
||||||
|
<div class="demo-ctrl"><i></i><i></i><i></i></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="demo-container" >
|
||||||
|
<p><img src="/images/manual/editor/header.png" alt="顶栏"></p>
|
||||||
|
</div></div><div class="hint-container tip">
|
||||||
|
<p class="hint-container-title">说明</p>
|
||||||
|
<p><code v-pre>顶栏</code>部分为左中右布局,左侧为<code v-pre>基础操作区</code>,中间仅展示<code v-pre>场景名称</code>,右侧为<code v-pre>多功能区域</code></p>
|
||||||
|
</div>
|
||||||
|
<h2 id="基础操作区" tabindex="-1"><a class="header-anchor" href="#基础操作区"><span>基础操作区</span></a></h2>
|
||||||
|
<blockquote>
|
||||||
|
<p>图标/按钮 从左到右依次是 <mark>Logo、撤回、重做、删除、清空、拷贝、全屏、导出、导入</mark></p>
|
||||||
|
</blockquote>
|
||||||
|
<Tabs id="18" :data='[{"id":"Logo"},{"id":"撤回"},{"id":"重做"},{"id":"删除"},{"id":"清空"},{"id":"拷贝"},{"id":"全屏"},{"id":"导出"},{"id":"导入"}]'>
|
||||||
|
<template #title0="{ value, isActive }">Logo</template><template #title1="{ value, isActive }">撤回</template><template #title2="{ value, isActive }">重做</template><template #title3="{ value, isActive }">删除</template><template #title4="{ value, isActive }">清空</template><template #title5="{ value, isActive }">拷贝</template><template #title6="{ value, isActive }">全屏</template><template #title7="{ value, isActive }">导出</template><template #title8="{ value, isActive }">导入</template><template #tab0="{ value, isActive }"><p>方寸藏寰宇,虚实映乾坤</p>
|
||||||
|
</template><template #tab1="{ value, isActive }"><p>撤销上一步操作。</p>
|
||||||
|
</template><template #tab2="{ value, isActive }"><p>恢复被撤销的操作。</p>
|
||||||
|
</template><template #tab3="{ value, isActive }"><p>删除当前选中的对象。</p>
|
||||||
|
</template><template #tab4="{ value, isActive }"><p>清空场景中的所有内容并重置所有模块。</p>
|
||||||
|
</template><template #tab5="{ value, isActive }"><p>复制当前选中的对象。</p>
|
||||||
|
</template><template #tab6="{ value, isActive }"><p>切换编辑器的全屏模式,全屏后会变为退出全屏图标,点击可退出全屏。</p>
|
||||||
|
</template><template #tab7="{ value, isActive }"><CardGrid>
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/editor/header/exportObject.png"
|
||||||
|
title="导出选中对象"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/14"
|
||||||
|
/>
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/editor/header/exportScene.png"
|
||||||
|
title="导出场景"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/14"
|
||||||
|
/>
|
||||||
|
</CardGrid>
|
||||||
|
<p>导出功能分为两类,一是导出选中的物体,二是导出整个场景。<br />
|
||||||
|
两者所支持的导出格式一致,分别是<mark>JSON、GLB、GLTF、OBJ、PLY、PLY(二进制)、STL、STL(二进制)、USDZ</mark></p>
|
||||||
|
</template><template #tab8="{ value, isActive }"><p>从文件系统导入模型/场景文件,允许多选,支持在此处导入的文件格式如下:</p>
|
||||||
|
<ul class="task-list-container">
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-0" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-0"> glb</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-1" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-1"> gltf</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-2" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-2"> fbx</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-3" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-3"> json (Three JSON / Astral3D JSON)</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-4" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-4"> zip <Annotation label="zip" :total="1"><template #item-0><p>导入zip包时,系统会自动解析处理,分为下面几种情况:</p>
|
||||||
|
<ul>
|
||||||
|
<li>同时包含<code v-pre>model.obj</code>和<code v-pre>materials.mtl</code>,会按照<code v-pre>.obj</code>解析</li>
|
||||||
|
<li>遍历解析zip包中的<code v-pre>fbx</code>、<code v-pre>glb</code>、<code v-pre>gltf</code></li>
|
||||||
|
</ul>
|
||||||
|
</template></Annotation></label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-5" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-5"> obj</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-6" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-6"> mtl</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-7" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-7"> ifc</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-8" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-8"> 3dm</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-9" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-9"> 3ds</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-10" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-10"> 3mf</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-11" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-11"> amf</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-12" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-12"> dae</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-13" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-13"> drc</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-14" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-14"> kmz</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-15" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-15"> ldr</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-16" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-16"> mpd</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-17" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-17"> md2</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-18" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-18"> pcd</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-19" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-19"> ply</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-20" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-20"> stl</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-21" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-21"> svg</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-22" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-22"> usdz</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-23" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-23"> vox</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-24" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-24"> vtk</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-25" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-25"> vtp</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-26" disabled="disabled"><label class="task-list-item-label" for="task-item-26"> vtu</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-27" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-27"> wrl</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-28" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-28"> xyz</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-29" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-29"> js</label></li>
|
||||||
|
</ul>
|
||||||
|
</template></Tabs><h2 id="多功能区域" tabindex="-1"><a class="header-anchor" href="#多功能区域"><span>多功能区域</span></a></h2>
|
||||||
|
<blockquote>
|
||||||
|
<p>图标/按钮 从左到右依次是 <mark>保存、预览、国际化、主题、主色调、设置</mark></p>
|
||||||
|
</blockquote>
|
||||||
|
<Tabs id="226" :data='[{"id":"保存"},{"id":"预览"},{"id":"国际化"},{"id":"主题"},{"id":"主色调"},{"id":"设置"}]'>
|
||||||
|
<template #title0="{ value, isActive }">保存</template><template #title1="{ value, isActive }">预览</template><template #title2="{ value, isActive }">国际化</template><template #title3="{ value, isActive }">主题</template><template #title4="{ value, isActive }">主色调</template><template #title5="{ value, isActive }">设置</template><template #tab0="{ value, isActive }"><p>打包当前场景,并保存至服务器。</p>
|
||||||
|
</template><template #tab1="{ value, isActive }"><p>打开新的<VPLink href="/guide/chhmeza7/">预览页</VPLink>窗口进行场景预览。</p>
|
||||||
|
</template><template #tab2="{ value, isActive }"><p>切换编辑器的语言,默认支持语言如下:</p>
|
||||||
|
<ul class="task-list-container">
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-30" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-30"> 简体中文</label></li>
|
||||||
|
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" id="task-item-31" checked="checked" disabled="disabled"><label class="task-list-item-label" for="task-item-31"> English</label></li>
|
||||||
|
</ul>
|
||||||
|
</template><template #tab3="{ value, isActive }"><p>切换编辑器的主题风格。<br />
|
||||||
|
切换顺序为<code v-pre>深色</code>--><code v-pre>跟随系统</code>--><code v-pre>浅色</code>--><code v-pre>深色</code> <br />
|
||||||
|
系统默认为<code v-pre>深色</code>风格</p>
|
||||||
|
</template><template #tab4="{ value, isActive }"><ImageCard
|
||||||
|
image="/images/manual/editor/header/mainColor.png"
|
||||||
|
title="主色调"
|
||||||
|
description="调整编辑器的主色,系统会自动生成相应的浅色、深色色阶,用于鼠标经过以及选中等效果"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/14"
|
||||||
|
/>
|
||||||
|
<p>调整编辑器的主色,系统会自动生成相应的浅色、深色色阶,用于鼠标经过以及选中等效果。</p>
|
||||||
|
<p></p>
|
||||||
|
</template><template #tab5="{ value, isActive }"><ImageCard
|
||||||
|
image="/images/manual/editor/header/setting.png"
|
||||||
|
title="系统设置"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/14"
|
||||||
|
/>
|
||||||
|
<p>打开编辑器的设置面板。</p>
|
||||||
|
</template></Tabs></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/fn9xwbkf/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/fn9xwbkf/\",\"title\":\"天气\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"天气\",\"createTime\":\"2025/03/31 20:05:08\",\"permalink\":\"/guide/fn9xwbkf/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"天气\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/fn9xwbkf/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"天气\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.03,\"words\":10},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/editor/rightSidebar/天气.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/g3kxptm0/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/g3kxptm0/\",\"title\":\"动画\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"动画\",\"createTime\":\"2025/03/31 20:07:33\",\"permalink\":\"/guide/g3kxptm0/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"动画\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/g3kxptm0/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"动画\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.03,\"words\":10},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/editor/rightSidebar/动画.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/jkg3yahd/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/jkg3yahd/\",\"title\":\"3D场景\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"3D场景\",\"createTime\":\"2025/03/31 20:00:56\",\"permalink\":\"/guide/jkg3yahd/\",\"description\":\"简要说明 编辑器的核心视口,展示用户所编辑的场景内容。 主要亮点: 提供六视角切换/主相机切换功能,方便用户观察3D场景。 自适应视口。 支持多种渲染模式,满足不同场景需求。 提供丰富的变换控制工具,便于编辑和调整模型。 功能说明 主相机切换:支持在默认的透视相机和其他添加进场景的相机之间切换,满足不同场景的观察需求。 六视图:快速切换到前、后、左、右...\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"3D场景\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/jkg3yahd/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"3D场景\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"简要说明 编辑器的核心视口,展示用户所编辑的场景内容。 主要亮点: 提供六视角切换/主相机切换功能,方便用户观察3D场景。 自适应视口。 支持多种渲染模式,满足不同场景需求。 提供丰富的变换控制工具,便于编辑和调整模型。 功能说明 主相机切换:支持在默认的透视相机和其他添加进场景的相机之间切换,满足不同场景的观察需求。 六视图:快速切换到前、后、左、右...\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":3.09,\"words\":928},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/manual/editor/viewport/3D场景.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,107 @@
|
|||||||
|
<template><div><div class="demo-wrapper only-img no-padding">
|
||||||
|
<div class="demo-head">
|
||||||
|
<div class="demo-ctrl"><i></i><i></i><i></i></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="demo-container" >
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/editor/viewport/viewer.png"
|
||||||
|
title="3D场景"
|
||||||
|
description="编辑器的核心视口,展示用户所编辑的场景内容。"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/16"
|
||||||
|
/>
|
||||||
|
</div></div><h2 id="简要说明" tabindex="-1"><a class="header-anchor" href="#简要说明"><span>简要说明</span></a></h2>
|
||||||
|
<p>编辑器的核心视口,展示用户所编辑的场景内容。</p>
|
||||||
|
<p><strong>主要亮点:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>提供六视角切换/主相机切换功能,方便用户观察3D场景。</li>
|
||||||
|
<li>自适应视口。</li>
|
||||||
|
<li>支持多种渲染模式,满足不同场景需求。</li>
|
||||||
|
<li>提供丰富的变换控制工具,便于编辑和调整模型。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="功能说明" tabindex="-1"><a class="header-anchor" href="#功能说明"><span>功能说明</span></a></h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>主相机切换</strong>:支持在默认的透视相机和其他添加进场景的相机之间切换,满足不同场景的观察需求。</li>
|
||||||
|
<li><strong>六视图</strong>:快速切换到<mark>前、后、左、右、上、下</mark>六个标准视角,便于精确调整模型。</li>
|
||||||
|
<li><strong>渲染模式</strong>:提供<mark>真实、原色、法线、线框</mark>四种渲染模式,适应不同的设计需求。</li>
|
||||||
|
<li><strong>变换控制</strong>:支持平移、旋转、缩放三种变换操作,用户可以通过鼠标或快捷键快速调整模型。</li>
|
||||||
|
<li><strong>坐标参考</strong>:可以切换<mark>世界坐标、本地坐标</mark>,以查看不同坐标系下的轴情况,帮助用户明确模型的方向和位置。</li>
|
||||||
|
<li><strong>场景统计信息</strong>:实时显示场景中的模型数量、顶点数、三角面数、帧时等信息,便于性能优化。</li>
|
||||||
|
<li><strong>视角辅助</strong>:提供视角导航工具,帮助用户快速调整观察方向。</li>
|
||||||
|
<li><strong>操作快捷键</strong>:内置聚焦、删除等快捷键操作,便于快速设计。</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="主相机切换-六视图" tabindex="-1"><a class="header-anchor" href="#主相机切换-六视图"><span>主相机切换/六视图</span></a></h3>
|
||||||
|
<div class="demo-wrapper only-img no-padding">
|
||||||
|
<div class="demo-head">
|
||||||
|
<div class="demo-ctrl"><i></i><i></i><i></i></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="demo-container" >
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/editor/viewport/viewerCamera.png"
|
||||||
|
title="场景相机/六视图"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/16"
|
||||||
|
/>
|
||||||
|
</div></div><h3 id="渲染模式" tabindex="-1"><a class="header-anchor" href="#渲染模式"><span>渲染模式</span></a></h3>
|
||||||
|
<div style="display:flex;justify-content:center;">
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/editor/viewport/viewerRenderMode.png"
|
||||||
|
title="渲染模式"
|
||||||
|
width="400"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/16"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<p>提供以下渲染模式:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>真实模式</strong>:显示模型的材质效果,并进行实时采样,以产生类似光线追踪的效果。</li>
|
||||||
|
<li><strong>原色模式</strong>:显示模型的材质效果,便于检查纹理和光影。</li>
|
||||||
|
<li><strong>法线模式</strong>:</li>
|
||||||
|
<li><strong>线框模式</strong>:仅显示模型的边框线条,便于查看内部结构。</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="变换控制" tabindex="-1"><a class="header-anchor" href="#变换控制"><span>变换控制</span></a></h3>
|
||||||
|
<div style="display:flex;justify-content:center;">
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/editor/viewport/viewerTransform.png"
|
||||||
|
title="变换控制"
|
||||||
|
width="400"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/16"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
支持以下变换操作:
|
||||||
|
- **平移**:拖动模型在平面内移动。
|
||||||
|
- **旋转**:绕指定轴旋转模型。
|
||||||
|
- **缩放**:调整模型的大小比例。
|
||||||
|
<h3 id="坐标参考" tabindex="-1"><a class="header-anchor" href="#坐标参考"><span>坐标参考</span></a></h3>
|
||||||
|
<p>变换控制右边的按钮,点击后会在<mark>世界坐标/本地坐标</mark>之间切换。<br />
|
||||||
|
用于表明场景中显示的坐标轴(X、Y、Z)所使用的参考坐标系。<br />
|
||||||
|
比如:A模型在世界坐标下Y轴向上,但是本地坐标下却是Z轴向上。确定轴向可以辅助用户快速定位一些矩阵变换错误的原因。<br /></p>
|
||||||
|
<h3 id="场景统计信息" tabindex="-1"><a class="header-anchor" href="#场景统计信息"><span>场景统计信息</span></a></h3>
|
||||||
|
<p>在界面左下角显示场景的实时统计信息,包括:</p>
|
||||||
|
<ul>
|
||||||
|
<li>模型数量</li>
|
||||||
|
<li>顶点数</li>
|
||||||
|
<li>三角面数</li>
|
||||||
|
<li>帧时(帧率 = 1000/帧时)</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="视角辅助" tabindex="-1"><a class="header-anchor" href="#视角辅助"><span>视角辅助</span></a></h3>
|
||||||
|
<p>在界面右下角提供了视角辅助器,方便用户快速切换视角,共支持22个视角。
|
||||||
|
其颜色会跟随编辑器主题变换(深色/浅色)。</p>
|
||||||
|
<h3 id="操作快捷键" tabindex="-1"><a class="header-anchor" href="#操作快捷键"><span>操作快捷键</span></a></h3>
|
||||||
|
<p>支持以下快捷键操作:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>W</strong>:切换到平移模式。</li>
|
||||||
|
<li><strong>E</strong>:切换到旋转模式。</li>
|
||||||
|
<li><strong>R</strong>:切换到缩放模式。</li>
|
||||||
|
<li><strong>F</strong>:聚焦选中模型。</li>
|
||||||
|
<li><strong>Del</strong>:删除选中模型。</li>
|
||||||
|
<li><strong>Ctrl + Z</strong>:撤销上一步操作。</li>
|
||||||
|
<li><strong>Ctrl + Shift +Z</strong>:重做被撤销的操作。</li>
|
||||||
|
</ul>
|
||||||
|
<p>如果在设置中修改了对应快捷键,则请使用对应快捷键操作。</p>
|
||||||
|
</div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/kk5cv2ij/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/kk5cv2ij/\",\"title\":\"Html面板\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"Html面板\",\"createTime\":\"2025/04/17 17:03:07\",\"permalink\":\"/guide/kk5cv2ij/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"Html面板\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/kk5cv2ij/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"Html面板\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.04,\"words\":11},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/editor/rightSidebar/Html面板.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/l1df4723/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/l1df4723/\",\"title\":\"材质\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"材质\",\"createTime\":\"2025/03/31 20:07:10\",\"permalink\":\"/guide/l1df4723/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"材质\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/l1df4723/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"材质\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.03,\"words\":10},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/editor/rightSidebar/材质.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/l8hd921o/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/l8hd921o/\",\"title\":\"后期处理\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"后期处理\",\"createTime\":\"2025/03/31 20:04:44\",\"permalink\":\"/guide/l8hd921o/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"后期处理\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/l8hd921o/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"后期处理\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.04,\"words\":12},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/editor/rightSidebar/后期处理.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/n6o11owv/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/n6o11owv/\",\"title\":\"部署(待更新)\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"部署(待更新)\",\"createTime\":\"2025/03/29 23:50:17\",\"permalink\":\"/guide/n6o11owv/\",\"description\":\"此文档尚未更新,请勿参考。 本文档适用于部署 Astral3D 编辑器到服务器上。 以Golang版本后端为例,其他语言版本后端部署方式请参考官方文档。 本地打包 前端打包 后端打包 服务器部署(Windows) 基础环境 Nginx MySQL 或者直接使用集成环境,如PHPStudy。 前端部署 将Astral 3D Editor打包后的文件放到方...\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"部署(待更新)\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/n6o11owv/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"部署(待更新)\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"此文档尚未更新,请勿参考。 本文档适用于部署 Astral3D 编辑器到服务器上。 以Golang版本后端为例,其他语言版本后端部署方式请参考官方文档。 本地打包 前端打包 后端打包 服务器部署(Windows) 基础环境 Nginx MySQL 或者直接使用集成环境,如PHPStudy。 前端部署 将Astral 3D Editor打包后的文件放到方...\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":3.13,\"words\":940},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/部署.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,148 @@
|
|||||||
|
<template><div><blockquote>
|
||||||
|
<p><strong>此文档尚未更新,请勿参考。</strong></p>
|
||||||
|
</blockquote>
|
||||||
|
<blockquote>
|
||||||
|
<p>本文档适用于部署 Astral3D 编辑器到服务器上。 <br />
|
||||||
|
以<a href="https://github.com/mlt131220/Astral3DEditorGoBack" target="_blank" rel="noopener noreferrer">Golang版本</a>后端为例,其他语言版本后端部署方式请参考官方文档。</p>
|
||||||
|
</blockquote>
|
||||||
|
<h2 id="本地打包" tabindex="-1"><a class="header-anchor" href="#本地打包"><span>本地打包</span></a></h2>
|
||||||
|
<h3 id="前端打包" tabindex="-1"><a class="header-anchor" href="#前端打包"><span>前端打包</span></a></h3>
|
||||||
|
<div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-bash"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># 确认 Node.js 版本(≥ 23.x)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">node</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076"> -v</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># 拉取代码</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">git</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> clone</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> https://github.com/mlt131220/Astral3D.git</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># 安装依赖</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#998418;--shiki-dark:#B8A965">cd</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> Astral3D</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">pnpm</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> install</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># 打包 Astral 3D Engine SDK</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">pnpm</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> run</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> sdk:build</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># 打包Astral 3D Editor</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">pnpm</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> run</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> editor:build</span></span></code></pre>
|
||||||
|
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="后端打包" tabindex="-1"><a class="header-anchor" href="#后端打包"><span>后端打包</span></a></h3>
|
||||||
|
<div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-bash"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># 确认go环境</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">go</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> version</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># 拉取代码</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">git</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> clone</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> https://github.com/mlt131220/Astral3DEditorGoBack.git</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># 安装依赖</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">go</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> mod</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> tidy</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># 修改数据库等配置(修改 conf/app.conf,详见 https://github.com/mlt131220/Astral3DEditorGoBack/blob/main/README.md)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">edit</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> conf/app.conf</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># 安装bee工具</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">go</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> get</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076"> -u</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> github.com/beego/bee/v2</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># 编译后端代码</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># Linux</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">bee</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> pack</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076"> -be</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> GOOS=linux</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076"> -be</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> GOARCH=amd64</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># Windows</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">bee</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> pack</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076"> -be</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> GOOS=windows</span></span></code></pre>
|
||||||
|
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="服务器部署-windows" tabindex="-1"><a class="header-anchor" href="#服务器部署-windows"><span>服务器部署(Windows)</span></a></h2>
|
||||||
|
<h3 id="基础环境" tabindex="-1"><a class="header-anchor" href="#基础环境"><span>基础环境</span></a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://nginx.org/en/download.html" target="_blank" rel="noopener noreferrer">Nginx</a></li>
|
||||||
|
<li><a href="https://www.mysql.com/cn/downloads/" target="_blank" rel="noopener noreferrer">MySQL</a></li>
|
||||||
|
</ul>
|
||||||
|
<p>或者直接使用集成环境,如<a href="https://old.xp.cn/download.html" target="_blank" rel="noopener noreferrer">PHPStudy</a>。</p>
|
||||||
|
<h3 id="前端部署" tabindex="-1"><a class="header-anchor" href="#前端部署"><span>前端部署</span></a></h3>
|
||||||
|
<p>将Astral 3D Editor打包后的文件放到方便读取的目录下,如 <code v-pre>C:\www\Astral3dEditor</code>;</p>
|
||||||
|
<h3 id="后端部署" tabindex="-1"><a class="header-anchor" href="#后端部署"><span>后端部署</span></a></h3>
|
||||||
|
<ol>
|
||||||
|
<li>将后端编译后的文件放到方便读取的目录下,如 <code v-pre>C:\www\Astral3DEditorGoBack</code>;</li>
|
||||||
|
<li>打开 MySQL 数据库,创建名为 <code v-pre>astral3d</code> 的数据库,并导入 <code v-pre>Astral3DEditorGoBack/static/sql/astral-3d-editor.sql</code> 文件;</li>
|
||||||
|
<li>启动 MySQL 服务,并确保 MySQL 服务正常运行;</li>
|
||||||
|
<li>双击后端程序打包生成的可执行文件 <code v-pre>Astral3DEditorGoBack.exe</code> 启动后端服务,默认监听 <code v-pre>8080</code> 端口;</li>
|
||||||
|
</ol>
|
||||||
|
<h3 id="nginx-配置" tabindex="-1"><a class="header-anchor" href="#nginx-配置"><span>Nginx 配置</span></a></h3>
|
||||||
|
<ol>
|
||||||
|
<li>打开 Nginx 配置文件,假设nginx安装目录为<code v-pre>C:\nginx</code>,则配置文件路径为<code v-pre>C:\nginx\conf\nginx.conf</code>;</li>
|
||||||
|
<li>在 <code v-pre>http</code> 块中添加以下配置:<div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-"><span class="line"><span>http {</span></span>
|
||||||
|
<span class="line"><span> # ... 忽略原有其他配置不变更</span></span>
|
||||||
|
<span class="line"><span> </span></span>
|
||||||
|
<span class="line"><span> # 开启gzip</span></span>
|
||||||
|
<span class="line"><span> gzip on;</span></span>
|
||||||
|
<span class="line"><span> </span></span>
|
||||||
|
<span class="line"><span> # 导入所有的server配置</span></span>
|
||||||
|
<span class="line"><span> include vhosts/*.conf;</span></span>
|
||||||
|
<span class="line"><span>}</span></span></code></pre>
|
||||||
|
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li>
|
||||||
|
<li>在 <code v-pre>C:\nginx\conf</code> 目录下创建 <code v-pre>vhosts</code> 目录(与上方http中增加的配置路径同名,并非一定要为<code v-pre>vhost</code>,可以自定义);</li>
|
||||||
|
<li>在 <code v-pre>C:\nginx\conf\vhosts</code> 目录下创建 <code v-pre>astral3d.conf</code> 文件,内容如下:<div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-"><span class="line"><span>server {</span></span>
|
||||||
|
<span class="line"><span> # 监听端口,即前端部署的端口,一般设置为80</span></span>
|
||||||
|
<span class="line"><span> listen 80;</span></span>
|
||||||
|
<span class="line"><span> # 域名/ip/localhost</span></span>
|
||||||
|
<span class="line"><span> server_name 127.0.0.1;</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> # 访问 server_name:listen 后,请求就会被转发到这个location块中</span></span>
|
||||||
|
<span class="line"><span> location / {</span></span>
|
||||||
|
<span class="line"><span> # 前端部署的目录,即前端打包后的文件所在目录</span></span>
|
||||||
|
<span class="line"><span> root "C:\www\Astral3dEditor";</span></span>
|
||||||
|
<span class="line"><span> # 文件url重写规则,将请求转发到index.html(单页面应用)</span></span>
|
||||||
|
<span class="line"><span> try_files $uri $uri/ index.html;</span></span>
|
||||||
|
<span class="line"><span> # 项目入口文件</span></span>
|
||||||
|
<span class="line"><span> index index.html;</span></span>
|
||||||
|
<span class="line"><span> }</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> # 后端api接口代理,接口请求匹配 /api 的会走此处转发,下面都同理</span></span>
|
||||||
|
<span class="line"><span> location /api {</span></span>
|
||||||
|
<span class="line"><span> # 后端接口访问地址,上面部署在了本机的8080端口</span></span>
|
||||||
|
<span class="line"><span> proxy_pass http://127.0.0.1:8080/api;</span></span>
|
||||||
|
<span class="line"><span> }</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> # 前端websocket代理</span></span>
|
||||||
|
<span class="line"><span> location /socket {</span></span>
|
||||||
|
<span class="line"><span> proxy_pass http://127.0.0.1:8080/api/sys/ws; </span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> proxy_http_version 1.1;</span></span>
|
||||||
|
<span class="line"><span> proxy_set_header Upgrade $http_upgrade;</span></span>
|
||||||
|
<span class="line"><span> proxy_set_header Connection "Upgrade";</span></span>
|
||||||
|
<span class="line"><span> proxy_connect_timeout 10s;</span></span>
|
||||||
|
<span class="line"><span> proxy_read_timeout 300s;</span></span>
|
||||||
|
<span class="line"><span> proxy_send_timeout 300s;</span></span>
|
||||||
|
<span class="line"><span> }</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> # 如果需要使用upyun上传功能,则需要添加以下配置</span></span>
|
||||||
|
<span class="line"><span> # 假设 http://upyun.xxx.com 为你的upyun存储</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> location /upyun {</span></span>
|
||||||
|
<span class="line"><span> rewrite ^/upyun(.*)$ $1 break;</span></span>
|
||||||
|
<span class="line"><span> proxy_pass http://upyun.xxx.com;</span></span>
|
||||||
|
<span class="line"><span> }</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> location /static/upload {</span></span>
|
||||||
|
<span class="line"><span> proxy_pass http://upyun.xxx.com/static/upload;</span></span>
|
||||||
|
<span class="line"><span> }</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> location /static/bim2gltf {</span></span>
|
||||||
|
<span class="line"><span> proxy_pass http://upyun.xxx.com/static/bim2gltf;</span></span>
|
||||||
|
<span class="line"><span> }</span></span>
|
||||||
|
<span class="line"><span>}</span></span></code></pre>
|
||||||
|
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li>
|
||||||
|
</ol>
|
||||||
|
<h3 id="启动服务" tabindex="-1"><a class="header-anchor" href="#启动服务"><span>启动服务</span></a></h3>
|
||||||
|
<div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-bash"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">nginx</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076"> -s</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> start</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"># 重启 nginx(如果修改了配置文件)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665">nginx</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076"> -s</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D"> reload</span></span></code></pre>
|
||||||
|
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>此时访问 <code v-pre>http://127.0.0.1</code> 即可访问到 Astral 3D Editor。</p>
|
||||||
|
<h2 id="服务器部署-linux" tabindex="-1"><a class="header-anchor" href="#服务器部署-linux"><span>服务器部署(Linux)</span></a></h2>
|
||||||
|
<h2 id="docker-部署" tabindex="-1"><a class="header-anchor" href="#docker-部署"><span>Docker 部署</span></a></h2>
|
||||||
|
<h2 id="注意事项" tabindex="-1"><a class="header-anchor" href="#注意事项"><span>注意事项</span></a></h2>
|
||||||
|
<ol>
|
||||||
|
<li>后端打包前请确认<code v-pre>Astral3DEditorGoBack/conf/app.conf</code>文件中的<code v-pre>runmode = prod</code>;</li>
|
||||||
|
<li>后端部署时,请确保 MySQL 数据库配置正确,并导入 <code v-pre>Astral3DEditorGoBack/static/sql/astral-3d-editor.sql</code> 文件;</li>
|
||||||
|
<li>前端部署时,请确保 Nginx 配置正确,并将前端部署到服务器上;</li>
|
||||||
|
<li>后端部署时,请确保后端程序启动成功,并监听 <code v-pre>Astral3DEditorGoBack/conf/app.conf</code>中配置的端口<code v-pre>httpport </code>,默认为 <code v-pre>8080</code> ;</li>
|
||||||
|
<li>前端部署时,请确保前端程序启动成功,并监听 Nginx 配置中配置的端口,比如上面示例的 <code v-pre>80</code> 端口;</li>
|
||||||
|
<li>部署完成后,请确保 Nginx 与 MySQL 服务正常运行;</li>
|
||||||
|
<li>部署完成后,请确保前端程序与后端程序正常运行;</li>
|
||||||
|
</ol>
|
||||||
|
</div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/nct00cif/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/nct00cif/\",\"title\":\"几何\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"几何\",\"createTime\":\"2025/03/31 20:06:40\",\"permalink\":\"/guide/nct00cif/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"几何\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/nct00cif/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"几何\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.03,\"words\":10},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/editor/rightSidebar/几何.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/plugin/31eucyqc/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/plugin/31eucyqc/\",\"title\":\"入门\",\"lang\":\"zh-CN\",\"frontmatter\":{\"lang\":\"zh-CN\",\"title\":\"入门\",\"createTime\":\"2025/02/20 15:13:36\",\"permalink\":\"/guide/plugin/31eucyqc/\",\"description\":\"Astral 3D 内置了插件系统,为其提供了巨大的灵活性和可扩展性。 使用方法 打开插件中心: 插件中心入口 单击需要使用的插件运行(以glTF处理器为例): 插件中心 glTF处理器 内置插件 Astral 3D Editor 内置了以下插件: glTF处理器:在Web端处理glTF文件的能力。用于对 glTF 格式的模型文件进行压缩、优化等操作;\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"入门\\\",\\\"image\\\":[\\\"https://docs.astraljs.com/images/plugin/entrance.jpg\\\",\\\"https://docs.astraljs.com/images/plugin/plane.jpg\\\",\\\"https://docs.astraljs.com/images/plugin/glTFHandler/plane.jpg\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/plugin/31eucyqc/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"入门\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"Astral 3D 内置了插件系统,为其提供了巨大的灵活性和可扩展性。 使用方法 打开插件中心: 插件中心入口 单击需要使用的插件运行(以glTF处理器为例): 插件中心 glTF处理器 内置插件 Astral 3D Editor 内置了以下插件: glTF处理器:在Web端处理glTF文件的能力。用于对 glTF 格式的模型文件进行压缩、优化等操作;\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:image\",\"content\":\"https://docs.astraljs.com/images/plugin/entrance.jpg\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.45,\"words\":136},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/plugins/入门.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
<template><div><blockquote>
|
||||||
|
<p>Astral 3D 内置了插件系统,为其提供了巨大的灵活性和可扩展性。</p>
|
||||||
|
</blockquote>
|
||||||
|
<h2 id="使用方法" tabindex="-1"><a class="header-anchor" href="#使用方法"><span>使用方法</span></a></h2>
|
||||||
|
<ol>
|
||||||
|
<li>打开插件中心:</li>
|
||||||
|
</ol>
|
||||||
|
<p><img src="/images/plugin/entrance.jpg" alt="插件中心入口"></p>
|
||||||
|
<ol start="2">
|
||||||
|
<li>单击需要使用的插件运行(以<kbd>glTF处理器</kbd>为例):</li>
|
||||||
|
</ol>
|
||||||
|
<p><img src="/images/plugin/plane.jpg" alt="插件中心"></p>
|
||||||
|
<p><img src="/images/plugin/glTFHandler/plane.jpg" alt="glTF处理器"></p>
|
||||||
|
<h2 id="内置插件" tabindex="-1"><a class="header-anchor" href="#内置插件"><span>内置插件</span></a></h2>
|
||||||
|
<p>Astral 3D Editor 内置了以下插件:</p>
|
||||||
|
<ul>
|
||||||
|
<li>glTF处理器:在Web端处理glTF文件的能力。用于对 glTF 格式的模型文件进行压缩、优化等操作;</li>
|
||||||
|
</ul>
|
||||||
|
</div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/plugin/7ro8hsc0/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/plugin/7ro8hsc0/\",\"title\":\"插件开发\",\"lang\":\"zh-CN\",\"frontmatter\":{\"lang\":\"zh-CN\",\"title\":\"插件开发\",\"createTime\":\"2025/02/20 15:13:36\",\"permalink\":\"/guide/plugin/7ro8hsc0/\",\"description\":\"开发插件时,插件入口类需要实现以下接口,并以esm方式导出,Astral3D Engine会加载默认导出模块。 插件入口类接口 示例插件\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"插件开发\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/plugin/7ro8hsc0/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"插件开发\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"开发插件时,插件入口类需要实现以下接口,并以esm方式导出,Astral3D Engine会加载默认导出模块。 插件入口类接口 示例插件\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.69,\"words\":208},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/plugins/插件开发.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
<template><div><blockquote>
|
||||||
|
<p>开发插件时,插件入口类需要实现以下接口,并以esm方式导出,Astral3D Engine会加载默认导出模块。</p>
|
||||||
|
</blockquote>
|
||||||
|
<h2 id="插件入口类接口" tabindex="-1"><a class="header-anchor" href="#插件入口类接口"><span>插件入口类接口</span></a></h2>
|
||||||
|
<div class="language-typescript line-numbers-mode" data-highlighter="shiki" data-ext="typescript" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-typescript"><span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">export</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676"> interface</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994"> Plugin</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> // 插件名称,插件的唯一标识</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> name</span><span style="--shiki-light:#999999;--shiki-dark:#666666">: </span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">string</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE"> </span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> // 插件版本号</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> version</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">number</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE"> </span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> // 插件图标</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> icon</span><span style="--shiki-light:#999999;--shiki-dark:#666666">:</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">string</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> // 插件安装函数,在插件安装时调用</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> install</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">config</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">?</span><span style="--shiki-light:#999999;--shiki-dark:#666666">: </span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">any</span><span style="--shiki-light:#999999;--shiki-dark:#666666">):</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994"> void</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE"> </span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> // 插件卸载函数,在插件卸载时调用</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> uninstall</span><span style="--shiki-light:#999999;--shiki-dark:#666666">():</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994"> void</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD"> // 从插件盒子面板点击插件时的运行方法</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> run</span><span style="--shiki-light:#999999;--shiki-dark:#666666">():</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994"> void</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE"> </span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span></span></code></pre>
|
||||||
|
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="示例插件" tabindex="-1"><a class="header-anchor" href="#示例插件"><span>示例插件</span></a></h2>
|
||||||
|
<div class="language-typescript line-numbers-mode" data-highlighter="shiki" data-ext="typescript" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code" v-pre=""><code class="language-typescript"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">// 暂未发布到npm,请自行将代码拷贝到项目中</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD">// import { Plugin } from 'msy3d';</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994"> ExamplePlugin</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676"> implements</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> Plugin</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> name</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> =</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77"> '</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D">example-plugin</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">'</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> version</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> =</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91"> 1.0</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> icon</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> =</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77"> '</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D">https://example.com/icon.png</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">'</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> install</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A">config</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676">?</span><span style="--shiki-light:#999999;--shiki-dark:#666666">: </span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994">any</span><span style="--shiki-light:#999999;--shiki-dark:#666666">):</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994"> void</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> console</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">log</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">'</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D">ExamplePlugin installed</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">'</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666"> }</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> uninstall</span><span style="--shiki-light:#999999;--shiki-dark:#666666">():</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994"> void</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> console</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">log</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">'</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D">ExamplePlugin uninstalled</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">'</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666"> }</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665"> run</span><span style="--shiki-light:#999999;--shiki-dark:#666666">():</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994"> void</span><span style="--shiki-light:#999999;--shiki-dark:#666666"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> console</span><span style="--shiki-light:#999999;--shiki-dark:#666666">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665">log</span><span style="--shiki-light:#999999;--shiki-dark:#666666">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">'</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D">ExamplePlugin run</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77">'</span><span style="--shiki-light:#999999;--shiki-dark:#666666">);</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666">}</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375">export</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375"> default</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A"> ExamplePlugin</span><span style="--shiki-light:#999999;--shiki-dark:#666666">;</span></span></code></pre>
|
||||||
|
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/plugin/builtin/jo87cfk0/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/plugin/builtin/jo87cfk0/\",\"title\":\"glTF 处理器\",\"lang\":\"zh-CN\",\"frontmatter\":{\"lang\":\"zh-CN\",\"title\":\"glTF 处理器\",\"createTime\":\"2025/02/20 15:13:36\",\"permalink\":\"/guide/plugin/builtin/jo87cfk0/\",\"description\":\"此插件提供了在 Web 端处理 glTF 文件的能力,主要能力如下: 优化 glTF 文件: a. 压缩模型数据(包括贴图材质与几何数据),减少文件大小; b. 网格顶点优化,减少顶点数量,提升渲染性能; c. 实例化网格,减少渲染 DrawCall,提升渲染性能; d. 压缩裁剪纹理贴图,减少内存占用,提升渲染性能; 面板 glTF处理器 使用方法 ...\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"glTF 处理器\\\",\\\"image\\\":[\\\"https://docs.astraljs.com/images/plugin/glTFHandler/plane.jpg\\\",\\\"https://docs.astraljs.com/images/plugin/glTFHandler/result.jpg\\\",\\\"https://docs.astraljs.com/images/plugin/glTFHandler/compare.jpg\\\",\\\"https://docs.astraljs.com/images/plugin/glTFHandler/compare2.jpg\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/plugin/builtin/jo87cfk0/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"glTF 处理器\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"此插件提供了在 Web 端处理 glTF 文件的能力,主要能力如下: 优化 glTF 文件: a. 压缩模型数据(包括贴图材质与几何数据),减少文件大小; b. 网格顶点优化,减少顶点数量,提升渲染性能; c. 实例化网格,减少渲染 DrawCall,提升渲染性能; d. 压缩裁剪纹理贴图,减少内存占用,提升渲染性能; 面板 glTF处理器 使用方法 ...\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:image\",\"content\":\"https://docs.astraljs.com/images/plugin/glTFHandler/plane.jpg\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":3.16,\"words\":947},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/plugins/builtin/glTFHandler.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,136 @@
|
|||||||
|
<template><div><blockquote>
|
||||||
|
<p>此插件提供了在 Web 端处理 glTF 文件的能力,主要能力如下:</p>
|
||||||
|
<ul>
|
||||||
|
<li>优化 glTF 文件:
|
||||||
|
<ul>
|
||||||
|
<li>a. 压缩模型数据(包括贴图材质与几何数据),减少文件大小;</li>
|
||||||
|
<li>b. 网格顶点优化,减少顶点数量,提升渲染性能;</li>
|
||||||
|
<li>c. 实例化网格,减少渲染 DrawCall,提升渲染性能;</li>
|
||||||
|
<li>d. 压缩裁剪纹理贴图,减少内存占用,提升渲染性能;</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</blockquote>
|
||||||
|
<!-- > - 查看glTF文件构成:
|
||||||
|
> - a. 显示glTF文件的结构,包括文件头、场景、节点、动画、材质、几何体等;
|
||||||
|
> - b. 显示glTF文件中的贴图、几何体、动画等资源的属性信息; -->
|
||||||
|
<h2 id="面板" tabindex="-1"><a class="header-anchor" href="#面板"><span>面板</span></a></h2>
|
||||||
|
<p><img src="/images/plugin/glTFHandler/plane.jpg" alt="glTF处理器"></p>
|
||||||
|
<h2 id="使用方法" tabindex="-1"><a class="header-anchor" href="#使用方法"><span>使用方法</span></a></h2>
|
||||||
|
<h4 id="_1-点击面板顶部上传区域-选择-gltf-文件-相关文件不会上传至服务器-仅用于本地处理" tabindex="-1"><a class="header-anchor" href="#_1-点击面板顶部上传区域-选择-gltf-文件-相关文件不会上传至服务器-仅用于本地处理"><span>1. 点击面板顶部上传区域,选择 glTF 文件(相关文件不会上传至服务器,仅用于本地处理);</span></a></h4>
|
||||||
|
<h4 id="_2-修改配置选项或直接使用默认配置" tabindex="-1"><a class="header-anchor" href="#_2-修改配置选项或直接使用默认配置"><span>2. 修改配置选项或直接使用默认配置;</span></a></h4>
|
||||||
|
<h4 id="_3-点击-优化-按钮-开始处理-gltf-文件-优化日志会实时显示在面板顶部-原上传文件区域" tabindex="-1"><a class="header-anchor" href="#_3-点击-优化-按钮-开始处理-gltf-文件-优化日志会实时显示在面板顶部-原上传文件区域"><span>3. 点击“优化”按钮,开始处理 glTF 文件,优化日志会实时显示在面板顶部(原上传文件区域);</span></a></h4>
|
||||||
|
<h2 id="配置说明" tabindex="-1"><a class="header-anchor" href="#配置说明"><span>配置说明</span></a></h2>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>配置项</th>
|
||||||
|
<th>描述</th>
|
||||||
|
<th>值</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>压缩方式</td>
|
||||||
|
<td>网格浮点压缩方法<br/>Draco 压缩 geometry;<br/>Meshopt & Quantization 压缩 geometry 和 animation;</td>
|
||||||
|
<td><code v-pre>Draco</code>|<code v-pre>Meshopt</code>|<code v-pre>Quantization</code>|<code v-pre>None</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Meshopt 压缩级别</td>
|
||||||
|
<td>压缩方式选择<code v-pre>Meshopt</code>时需要选择压缩级别</td>
|
||||||
|
<td><code v-pre>low</code>|<code v-pre>medium</code>|<code v-pre>high</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>实例化网格</td>
|
||||||
|
<td>使用 GPU 实例化技术共享网格引用,即生成<code v-pre>THREE.InstancedMesh</code>对象,减少 DrawCall</td>
|
||||||
|
<td><code v-pre>true</code>|<code v-pre>false</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>实例化网格界限</td>
|
||||||
|
<td>实例化网格所需的实例数,实例数低于该值的网格将不会实例化</td>
|
||||||
|
<td><code v-pre>min:2,max:Infinity</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>展平场景树</td>
|
||||||
|
<td>将场景内子模型对象全部展平到场景根节点。<br/>开启合并网格时此项无法关闭</td>
|
||||||
|
<td><code v-pre>true</code>|<code v-pre>false</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>合并网格</td>
|
||||||
|
<td>合并网格以减少渲染调用,合并后的网格无法单独选中。<br/>前置条件:开启展平场景树</td>
|
||||||
|
<td><code v-pre>true</code>|<code v-pre>false</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>合并纹理</td>
|
||||||
|
<td>创建调色板纹理并合并材质</td>
|
||||||
|
<td><code v-pre>true</code>|<code v-pre>false</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>合并纹理界限</td>
|
||||||
|
<td>合并纹理所需的纹理数,纹理数低于该值将不会合并</td>
|
||||||
|
<td><code v-pre>min:2,max:Infinity</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>修剪</td>
|
||||||
|
<td>从文件中删除未被场景引用的属性</td>
|
||||||
|
<td><code v-pre>true</code>|<code v-pre>false</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>修剪顶点</td>
|
||||||
|
<td>是否修剪未使用的顶点属性</td>
|
||||||
|
<td><code v-pre>true</code>|<code v-pre>false</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>修剪子节点</td>
|
||||||
|
<td>是否修剪空的叶子节点</td>
|
||||||
|
<td><code v-pre>true</code>|<code v-pre>false</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>修剪纹理</td>
|
||||||
|
<td>是否修剪实体(单色)纹理,将其转换为材质元素</td>
|
||||||
|
<td><code v-pre>true</code>|<code v-pre>false</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>合并同位顶点</td>
|
||||||
|
<td>合并按位相同的顶点。合并和索引后,顶点之间的数据共享效率更高。文件大小可以减小,GPU 可以更高效地使用顶点缓存。<br/>开启简化网格时此项无法关闭</td>
|
||||||
|
<td><code v-pre>true</code>|<code v-pre>false</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>简化网格</td>
|
||||||
|
<td>基于<code v-pre>meshoptimizer</code>的简化算法,生成具有较少三角形和顶点的网格。简化是有损的,但该算法旨在针对给定的参数尽可能地保持视觉质量。<br/>前置条件:开启合并同位顶点</td>
|
||||||
|
<td><code v-pre>true</code>|<code v-pre>false</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>简化误差界限</td>
|
||||||
|
<td>简化网格误差容忍度,以网格尺寸的百分比表示</td>
|
||||||
|
<td><code v-pre>min:0.01,max:100</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>简化锁定边界</td>
|
||||||
|
<td>是否锁定网格的拓扑边界,拓扑结构(尤其是分割顶点)会限制简化器</td>
|
||||||
|
<td><code v-pre>true</code>|<code v-pre>false</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>简化比率</td>
|
||||||
|
<td>要保留的顶点的比率(0-1)</td>
|
||||||
|
<td><code v-pre>min:0,max:1</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>纹理压缩</td>
|
||||||
|
<td><code v-pre>AVIF</code>和<code v-pre>WebP</code>优化传输大小;<br/><code v-pre>Auto</code>按原始格式进行压缩;</td>
|
||||||
|
<td><code v-pre>WebP</code>|<code v-pre>AVIF</code>|<code v-pre>Auto</code>|<code v-pre>None</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>纹理最大尺寸</td>
|
||||||
|
<td>超过该尺寸的纹理将被压缩,值一般为 2 的 N 次方</td>
|
||||||
|
<td><code v-pre>min:2,max:Infinity</code></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<h2 id="结果" tabindex="-1"><a class="header-anchor" href="#结果"><span>结果</span></a></h2>
|
||||||
|
<p><img src="/images/plugin/glTFHandler/result.jpg" alt="glTF优化结果"></p>
|
||||||
|
<p><img src="/images/plugin/glTFHandler/compare.jpg" alt="glTF优化文件对比"></p>
|
||||||
|
<p><img src="/images/plugin/glTFHandler/compare2.jpg" alt="glTF优化文件对比"></p>
|
||||||
|
</div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/pnmbue0k/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/pnmbue0k/\",\"title\":\"场景配置\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"场景配置\",\"createTime\":\"2025/03/31 20:04:17\",\"permalink\":\"/guide/pnmbue0k/\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"场景配置\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/pnmbue0k/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"场景配置\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":0.04,\"words\":12},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"filePathRelative\":\"notes/guide/manual/editor/rightSidebar/场景配置.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
<template><div></div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/rf1xgf4z/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/rf1xgf4z/\",\"title\":\"BIM轻量化\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"BIM轻量化\",\"createTime\":\"2025/03/31 19:48:15\",\"permalink\":\"/guide/rf1xgf4z/\",\"description\":\"简要说明 通过编辑器的BIM轻量化功能,您可以将复杂的BIM工程文件(如.rvt)转换为轻量化的.glTF文件。 转换过程中保留了BIM构件的属性信息,同时对模型进行了压缩优化,方便在Web端进行高效解析与展示。 主要亮点: 支持BIM文件的轻量化转换,优化模型大小。 保留构件属性,便于后续操作与分析。 界面设计与类似,操作直观易用。 功能说明 模型列...\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"BIM轻量化\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/rf1xgf4z/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"BIM轻量化\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"简要说明 通过编辑器的BIM轻量化功能,您可以将复杂的BIM工程文件(如.rvt)转换为轻量化的.glTF文件。 转换过程中保留了BIM构件的属性信息,同时对模型进行了压缩优化,方便在Web端进行高效解析与展示。 主要亮点: 支持BIM文件的轻量化转换,优化模型大小。 保留构件属性,便于后续操作与分析。 界面设计与类似,操作直观易用。 功能说明 模型列...\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":2.92,\"words\":875},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/manual/editor/leftSidebar/BIM轻量化.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
@ -0,0 +1,80 @@
|
|||||||
|
<template><div><div style="display:flex;justify-content:center;">
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/editor/leftSidebar/bim.png"
|
||||||
|
title="BIM"
|
||||||
|
description="通过将BIM工程文件(.rvt)转换为glTF文件,在保留BIM构件属性的同时压缩优化模型,以达到web端解析BIM并且轻量化的目的。"
|
||||||
|
width="300"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/15"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<h2 id="简要说明" tabindex="-1"><a class="header-anchor" href="#简要说明"><span>简要说明</span></a></h2>
|
||||||
|
<p>通过编辑器的BIM轻量化功能,您可以将复杂的BIM工程文件(如<code v-pre>.rvt</code>)转换为轻量化的<code v-pre>.glTF</code>文件。<br>
|
||||||
|
转换过程中保留了BIM构件的属性信息,同时对模型进行了压缩优化,方便在Web端进行高效解析与展示。</p>
|
||||||
|
<p><strong>主要亮点:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>支持BIM文件的轻量化转换,优化模型大小。</li>
|
||||||
|
<li>保留构件属性,便于后续操作与分析。</li>
|
||||||
|
<li>界面设计与<VPLink href="/guide/u1631nwk/">CAD解析预览</VPLink>类似,操作直观易用。</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="功能说明" tabindex="-1"><a class="header-anchor" href="#功能说明"><span>功能说明</span></a></h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>模型列表</strong>:展示用户上传转换的所有BIM模型。</li>
|
||||||
|
<li><strong>上传模型</strong>:点击顶部<mark>历史记录</mark>右侧的<mark>上传按钮</mark>,会打开模型上传界面。</li>
|
||||||
|
<li><strong>历史记录</strong>:点击顶部<mark>历史记录</mark>按钮,会弹出历史上传记录列表。</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="模型列表" tabindex="-1"><a class="header-anchor" href="#模型列表"><span>模型列表</span></a></h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>功能描述</strong>:展示用户上传并转换成功的所有BIM模型。</li>
|
||||||
|
<li><strong>操作方式</strong>:<br>
|
||||||
|
如本页面首图,列表以网格形式展示;<br>
|
||||||
|
从列表中直接<mark>拖动</mark>相应模型到中间的三维视口 或 <mark>双击</mark>该模型,都可加载并渲染对应模型。</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="上传模型" tabindex="-1"><a class="header-anchor" href="#上传模型"><span>上传模型</span></a></h3>
|
||||||
|
<div style="display:flex;justify-content:center;">
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/editor/leftSidebar/bimUpload.png"
|
||||||
|
title="上传模型"
|
||||||
|
width="400"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/15"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li><strong>支持格式</strong>:<code v-pre>.rvt、.rfa</code></li>
|
||||||
|
<li><strong>转换方式</strong>:
|
||||||
|
<ul>
|
||||||
|
<li>文件会在上传后通过WebSocket发起轻量化转换请求。</li>
|
||||||
|
<li>转换结果通过WebSocket消息返回,并加载渲染展示。</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><strong>转换配置</strong>:
|
||||||
|
<ul>
|
||||||
|
<li>极致轻量化:模型会在转换过程中执行<mark>网格优化、材质贴图压缩并转换格式为WebP、网格实例化、网格合并</mark>等模型优化操作,以确保输出的BIM轻量化模型是最小体积及最小渲染损耗的glTF模型。过程中可能执行的具体优化项可参考<VPLink href="/guide/plugin/builtin/jo87cfk0/">glTF处理器</VPLink>章节;</li>
|
||||||
|
<li>导出属性:生成的glTF模型中是否包含构件属性;</li>
|
||||||
|
<li>转换视图:一个BIM文件中可能会包含多个3D视图,如果用户有确切的转换视图目标,可选择<code v-pre>按名称</code>并输入视图名称以转换;否则将自动以<code v-pre>默认3D视图</code>为目标转换;
|
||||||
|
-视觉样式:此设置影响最终输出的模型材质。<code v-pre>着色</code>模式基本不包含任何材质贴图,以纯色材质方式输出;<code v-pre>真实</code>模式会包含用户建模时的材质贴图,输出材质更真实;</li>
|
||||||
|
<li>坐标参考:一般情况下,一个BIM工程模型会由多工程师完成,便会存在多个单体BIM文件。此设置会决定最终输出模型与笛卡尔坐标系原点的相对位置信息。关于<mark>原点、项目基点、测量点</mark>的详细说明,可以参考这篇文章:<a href="https://zhuanlan.zhihu.com/p/220113797" target="_blank" rel="noopener noreferrer">详解Revit坐标系</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="历史记录" tabindex="-1"><a class="header-anchor" href="#历史记录"><span>历史记录</span></a></h3>
|
||||||
|
<div class="demo-wrapper only-img no-padding">
|
||||||
|
<div class="demo-head">
|
||||||
|
<div class="demo-ctrl"><i></i><i></i><i></i></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="demo-container" >
|
||||||
|
<ImageCard
|
||||||
|
image="/images/manual/editor/leftSidebar/bimHistory.png"
|
||||||
|
title="历史记录"
|
||||||
|
author="ErSan"
|
||||||
|
date="2025/04/15"
|
||||||
|
/>
|
||||||
|
</div></div><ul>
|
||||||
|
<li><strong>功能描述</strong>:展示用户之前上传的所有BIM模型记录,方便快速查找和重新加载。</li>
|
||||||
|
<li><strong>操作方式</strong>:点击顶部<mark>历史记录</mark>按钮,弹出历史上传记录列表。</li>
|
||||||
|
</ul>
|
||||||
|
</div></template>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import comp from "D:/A-Ersan/astraljs/Astral3D/packages/docs/src/.vuepress/.temp/pages/guide/rzqb0h0l/index.html.vue"
|
||||||
|
const data = JSON.parse("{\"path\":\"/guide/rzqb0h0l/\",\"title\":\"场景树\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"场景树\",\"createTime\":\"2025/03/31 19:58:06\",\"permalink\":\"/guide/rzqb0h0l/\",\"description\":\"简要说明 场景树是 Astral3D 编辑器中用于管理场景中所有对象的工具。它以树状结构展示场景中的层级关系,便于用户快速定位和操作对象。 功能说明 节点搜索:顶部搜索栏用于快速查找节点,模糊查询到的节点父级会自动展开,并在改节点下添加下划线。 层级管理:通过拖拽操作,可以调整对象的父子关系。 对象选择:点击场景树中的对象名称,可以在场景中选中对应的对...\",\"head\":[[\"script\",{\"type\":\"application/ld+json\"},\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Article\\\",\\\"headline\\\":\\\"场景树\\\",\\\"image\\\":[\\\"\\\"],\\\"dateModified\\\":\\\"2025-04-21T09:37:33.000Z\\\",\\\"author\\\":[]}\"],[\"meta\",{\"property\":\"og:url\",\"content\":\"https://docs.astraljs.com/guide/rzqb0h0l/\"}],[\"meta\",{\"property\":\"og:site_name\",\"content\":\"Astral3D\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"场景树\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"简要说明 场景树是 Astral3D 编辑器中用于管理场景中所有对象的工具。它以树状结构展示场景中的层级关系,便于用户快速定位和操作对象。 功能说明 节点搜索:顶部搜索栏用于快速查找节点,模糊查询到的节点父级会自动展开,并在改节点下添加下划线。 层级管理:通过拖拽操作,可以调整对象的父子关系。 对象选择:点击场景树中的对象名称,可以在场景中选中对应的对...\"}],[\"meta\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"meta\",{\"property\":\"og:locale\",\"content\":\"zh-CN\"}],[\"meta\",{\"property\":\"og:updated_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}],[\"meta\",{\"property\":\"article:modified_time\",\"content\":\"2025-04-21T09:37:33.000Z\"}]]},\"readingTime\":{\"minutes\":1.39,\"words\":418},\"git\":{\"createdTime\":1745228253000,\"updatedTime\":1745228253000,\"contributors\":[{\"name\":\"ErSan\",\"username\":\"ErSan\",\"email\":\"mlt131220@163.com\",\"commits\":1,\"avatar\":\"https://avatars.githubusercontent.com/ErSan?v=4\",\"url\":\"https://github.com/ErSan\"}]},\"autoDesc\":true,\"filePathRelative\":\"notes/guide/manual/editor/leftSidebar/场景树.md\",\"headers\":[],\"bulletin\":true}")
|
||||||
|
export { comp, data }
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user