feat(preview): add low poly vehicle library
This commit is contained in:
54
.trellis/tasks/08-05-lowpoly-cars-assets/design.md
Normal file
54
.trellis/tasks/08-05-lowpoly-cars-assets/design.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# 设计:LowPoly Cars 资产库
|
||||
|
||||
## 边界与目录
|
||||
|
||||
本任务独立于区域构建和 Cesium 预览。新增目录
|
||||
`assets/models/custom/lowpoly_cars/`,其内部结构与 Shapespark 植物包一致:
|
||||
|
||||
```text
|
||||
lowpoly_cars/
|
||||
manifest.json
|
||||
index.html
|
||||
textures/
|
||||
<vehicle-id>/model.gltf
|
||||
<vehicle-id>/model.bin
|
||||
<vehicle-id>/preview.png
|
||||
```
|
||||
|
||||
源 `.blend` 保留在用户 Downloads,不复制入仓库;`manifest.json` 保存源文件名与根对象名,
|
||||
以便可追溯而不引入二进制源文件。
|
||||
|
||||
## 拆分与规范化
|
||||
|
||||
新 Blender 工具以 Empty 根节点和其全部后代 mesh 作为一辆车。根节点名是稳定初始 ID:
|
||||
`car_a01_002`、`truck_a01_001` 等。名称重复的车辆保留全部条目,不依据几何统计猜测合并。
|
||||
|
||||
导出前把每辆车的根节点变换 bake 到其后代网格,再把局部原点置于车辆的水平中心和最低接地点。
|
||||
规范化的预览坐标为 X 前进、Y 向上、Z 横向;若源根节点的朝向不符合它,工具按对象族显式
|
||||
变换并由渲染缩略图复核。不能依赖源文件中用于陈列的全局坐标、`0.001` 缩放或 90°/180°旋转。
|
||||
|
||||
保留同一辆车的 mesh 分件与材质槽,避免为图库的便利合并导致窗、轮胎等材质丢失。图像依赖
|
||||
集中复制到 `textures/`,glTF 以相对路径引用,重复车款不能复制同一张贴图。
|
||||
|
||||
## 产物与预览
|
||||
|
||||
工具为每辆车导出 glTF/bin,使用隔离的三点布光、地面阴影与固定透视相机输出
|
||||
`preview.png`。`index.html` 只消费 manifest,响应式显示缩略图、ID、类别、三角面数、尺寸和
|
||||
材质;它不依赖 Cesium、Node 打包或区域输出,通过 HTTP 直接查看。
|
||||
|
||||
`manifest.json` 的每项至少包含 `id`、`name`、`category`、`sourceRoot`、`model`、`bin`、
|
||||
`preview`,以及 `metrics.vertices`、`metrics.triangles`、`metrics.dimensions`、
|
||||
`metrics.materials`。`category` 取 `car`、`truck` 或 `tractor`。
|
||||
|
||||
## 风险与回退
|
||||
|
||||
Blender 的沙箱内加载会崩溃,因此导出、渲染和检查仅通过受批准的沙箱外 Blender 调用。若
|
||||
某一根节点导出失败,工具记录错误并继续其余资产;manifest 只收录有效产物,失败根节点写入
|
||||
报告。删除 `lowpoly_cars/` 不影响任何当前构建阶段或 Cesium 巡航。
|
||||
|
||||
## Cesium 候选集
|
||||
|
||||
候选集固定为 `car_a01_002`、`car_a02_002`、`car_a03_001`,以及按稳定 ID 排序的前三辆
|
||||
卡车 `truck_a01_001`、`truck_a02_001`、`truck_a03_001`。预览构建把这六个 glTF/bin 与一张
|
||||
共享 512px 贴图复制到区域输出目录并改写其 image URI;浏览器页面加载时从文件名列表随机选
|
||||
一项,所有巡航实体在本页使用相同模型。这样构建产物保持确定,随机性只属于用户可见的会话。
|
||||
Reference in New Issue
Block a user