# make-a-three-scene
**Repository Path**: superlbr/make-a-three-scene
## Basic Information
- **Project Name**: make-a-three-scene
- **Description**: 制作一个 three.js 场景
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 3
- **Created**: 2023-04-20
- **Last Updated**: 2023-04-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
make-a-three-scene
可直接复用的 three.js 场景收藏夹
## 项目简介
`make-a-three-scene`是一个主要使用three.js创建的简单业务场景收藏夹,便于相同或类似业务场景下的效果快速复用。
* 所有场景均放置在`src/scenes`下,每个文件夹代表一个场景,你可以通过脚本命令 `yarn make:tpl 场景名称` 快速创建一个空场景模板(场景名仅限小写英文字母,数字和-的组合)
* 当你的场景添加完成后,你可以通过脚本命令 `yarn make:menu`生成场景菜单,同时你将在`/scene`路由页面看到你添加的场景
* 在线预览地址:点我查看
## 其他说明
* 以场景`example`为例,执行`yarn make:tpl example`脚本命令后, `src/scenes/example`文件夹下包含`desc.json, scene.png, ScenePage.vue`三个文件, 你需要修改`desc.json`中每个字段的值为你想呈现的内容,其次你需要替换`scene.png`内容,这两项改动将用于`example`场景的缩略样式、提示信息等,最后你可以编辑`ScenePage.vue`文件来完成你的`example`场景效果(所有example场景需要使用的资源应当在`src/scenes/example`文件夹下管理)
* 通过脚本创建的空场景模板`ScenePage.vue`文件示例中,通过具名插槽提供了`theme`值(`light/dark`),你可以使用提供的值管理你的场景在浅色/深色主题下的样式;此外通过`props`接收`foldChange`值,可以在菜单栏折叠/展开时更新你的场景效果(如复位,重置相机等)
* 场景的最终实现可以是`.js/.ts`的文件形式,但应当至少满足便捷应用、便捷运行和便捷销毁三个特点,针对便捷应用这一特点,建议使用类或构造函数的形式实现
* `src/utils/resource-tracker.ts`提供了一个资源跟踪类,方便在运行时跟踪场景资源,并在销毁场景时便捷销毁此前跟踪的资源
## 备注

上图为场景右上角的操作按钮,目前设想功能分别为作者/场景说明Popover, 另外一个为场景的场景图树结构可视化效果,目前暂未实现。