# mapv three

## 前置依赖
node版本 >= 20

## 安装
- 在项目根目录下运行：`npm install`，安装JS依赖。
- 除了安装JS依赖，还需要安装wasm的依赖，进入wasm目录：`cd wasm`，运行：`sh scripts/install_deps.sh`，安装wasm依赖。

## 说明
该代码库使用`vite`进行工程化，注意所有工程资源需要放在`/public`目录或者`/`项目根目录下，在开发过程中引用的时候直接使用绝对路径引用即可。在示例页面开发中，将所有的示例放在指定目录下并以`.js`后缀命名`website/pages/*.js`，无需进行其他手动配置，会自动生成与文件名相同的路由，以进行调试。

## 示例页面开发
- 示例页面开发调试 `npm start` 或 `npm run dev`
- 示例页面打包 `npm run website`，默认打离线版包，配置`publicPath`时使用`npm run website -- --base=/path1/path2/.../`
- 打包后启动静态服务访问 `npm run preview`

## 引擎开发
- 源码调试无需启动npm服务，只需启动示例页面调试服务即可，调试页面支持esmodule方式访问源码
- 源码内需要使用的资源文件放在`src/assets`目录下，该目录会在发布时自动同步到BOS上

## [内测版]发布
1. 修改`package.json`中的`version`版本号
2. 运行`npm run build:wasm`，构建wasm文件
3. 运行`npm publish --registry=http://registry.npm.baidu-int.com`，发布在线版包，注意需要提前配置npm源，[点这里学习](https://fe.baidu-int.com/npm/usage)
4. 运行`npm run build`，发布离线版包，产出物在`build_tar/`目录下
5. 运行`npm run docs`，编译产出文档静态页面，产出物在`docs/`目录下

## [开放版]发布
1. 修改`package.open.json`中的`version`版本号
2. 运行`npm run build:wasm`，构建wasm文件
3. 运行`npm run publish:open`，自动将关键文件替换为开放版，并发布到官方源`http://registry.npmjs.org`
4. 运行`npm run docs:open`，编译产出开放版文档静态页面，产出物在`docs/`目录下


## 开发注意事项
- 所有物体都不要缓存`renderer` `camera` `scene`等对象，因为可能发生变化。

## 版本说明
## 3.x.x (wip)
```
调研与探索中，紧跟threejs迭代脚步，threejs预计25年底基本完成重构。
基于webgpu开发，引擎与2.x.x实现完全不同，几乎全部重构。
对应分支：webgpu
```

## 2.x.x (LTS & wip)
```
当前主要维护分支，主推这个版本。
基于webgl2开发，真二三维一体化的版本，大量功能重构。
3D：新支持地球、体积云，矢量栅格瓦片调度、3dtiles加载调度重构。
2.5D：与1.x.x功能保持一致，功能完全对齐。只要不开启地球模式，不会在1.x.x的已有功能上造成额外bug。
对应分支：master
```
具体版本更新日志查看[CHANGELOG](./CHANGELOG.md)

## 1.x.x (stable)
```
不支持地球，动态天空无体积云版本。
```
* 1.2.x-beta1：在1.2.x的基础上，assets模块在有些老项目上需要兼容旧资产平台API，根据需要额外发布的版本。修改内容评审：bdife-2245 资产getDeviceByConditions替换为getDeviceByUUID，参考mapvthree引擎版本。对应分支：无
* 1.2.x：定义了颜色规范。引擎能力满足绝大多数基础应用场景，除bugfix外不做大更新。对应分支：v1.2.x
* 1.1.x：比较早期的版本，不支持ColorManagement。对应分支：无
