Refactor Cesium material export contract
This commit is contained in:
@@ -78,8 +78,9 @@ catalog.MATERIALS 声明「是什么」 纯 Python,无 bpy
|
||||
2. 若 `kind` 是 `textured`,贴图放 `assets/textures/`(`materials.py:14` 的
|
||||
`TEXTURE_ROOT`)
|
||||
3. `generate_scene.py` 里用 `material_from_spec(catalog.MATERIALS["<key>"])` 取
|
||||
4. **若这个材质在 Cesium 里需要调色,去 `export_cesium.py` 的四张表加**——
|
||||
见下文,那边按材质名字符串匹配
|
||||
4. **若这个材质在 Cesium 里需要调色,把 `cesium` 子契约写在同一个
|
||||
`MATERIALS` 条目里**。`materials.from_spec()` 会把它序列化到
|
||||
`material["cesium_export"]`,导出器优先读这个属性
|
||||
|
||||
### 颜色是线性 RGB
|
||||
|
||||
@@ -160,18 +161,24 @@ tilt_y = TILT_JITTER * math.cos(index * 0.927295)
|
||||
模型保持在**局部 ENU 坐标系**(X 东、Y 北、Z 上),靠伴生 JSON 配合
|
||||
`Cesium.Transforms.eastNorthUpToFixedFrame` 摆放。
|
||||
|
||||
### 四张覆盖表(按材质名字符串)
|
||||
### Cesium contract
|
||||
|
||||
| 表 | 位置 | 作用 |
|
||||
|---|---|---|
|
||||
| `EXPORT_TINTS` | `:68` | 往某个颜色混合 |
|
||||
| `EXPORT_METALLIC_OVERRIDES` | `:80` | 平铺的金属度覆盖 |
|
||||
| `EXPORT_BASE_COLOR_OVERRIDES` | `:86` | 直接替换基色 |
|
||||
| `EXPORT_EMISSION_OVERRIDES` | `:95` | 自发光兜底 |
|
||||
新生成场景的 Cesium 导出调色写在 `catalog.MATERIALS[*]["cesium"]`,由
|
||||
`materials.from_spec()` 保存成材质自定义属性 `material["cesium_export"]`。导出器打开
|
||||
`.blend` 后优先读这个属性,不 import `catalog`。
|
||||
|
||||
⚠️ `export_cesium.py` **不 import `catalog`**,靠材质名字符串匹配。
|
||||
`catalog.CESIUM_EXPORT` 是**死代码**。改材质名前先读
|
||||
[模块结构](./module-structure.md#已知现状两个入口靠材质名字符串对接)。
|
||||
`cesium` 子契约字段:
|
||||
|
||||
| 字段 | 作用 |
|
||||
|---|---|
|
||||
| `tint` | diffuse 贴图导出前往目标颜色混合 |
|
||||
| `metallic` | 覆盖导出 PBR metallic |
|
||||
| `base_color` | 直接替换导出基色,并禁用 diffuse/normal 图 |
|
||||
| `emission` | 自发光兜底 |
|
||||
|
||||
`export_cesium.py` 仍保留 `EXPORT_TINTS`、`EXPORT_METALLIC_OVERRIDES`、
|
||||
`EXPORT_BASE_COLOR_OVERRIDES`、`EXPORT_EMISSION_OVERRIDES` 四张按材质名字符串匹配的表,
|
||||
但它们只是旧 `.blend` 兼容回退。新材质不要只写旧表。
|
||||
|
||||
### 为什么新资产总是"发黑"
|
||||
|
||||
@@ -181,8 +188,8 @@ tilt_y = TILT_JITTER * math.cos(index * 0.927295)
|
||||
> 带肋墙面往白混 86%、建筑自发光 0.18。一个没调过的新资产是唯一如实渲染的东西,
|
||||
> 放在旁边就显得发黑。
|
||||
|
||||
所以**加新资产时,"它在 Blender 里看着对"不代表在 Cesium 里对**,必须去四张表里
|
||||
给它配一份调校。
|
||||
所以**加新资产时,"它在 Blender 里看着对"不代表在 Cesium 里对**,必须在
|
||||
`catalog.MATERIALS[*]["cesium"]` 里给它配一份调校。
|
||||
|
||||
抠图植被走的是另一套(`FOLIAGE_ALBEDO_GAIN = 2.1` + `FOLIAGE_SATURATION = 1.75`,
|
||||
`:55, 66`),用**增益**而不是 tint——因为那是一张同时装着叶片、树皮、果实的图集,
|
||||
|
||||
Reference in New Issue
Block a user