fix: 树发黑的真正原因是反照率没提亮,并加饱和度让远看更绿
emissive 提到 0.8 仍然发黑:它乘的是本来就很暗的反照率,0.8 × 深绿约等于 sRGB [0.22, 0.31, 0.11],还是暗的。要提的是反照率本身。 Cesium 截图定位:草亮黄绿、建筑近白、路面浅灰,只有树暗。这棵树图集的叶片 本来就是深绿(绿色系像素均值 sRGB [0.249, 0.35, 0.12]),按真实反照率渲染 是对的,但场景里其他材质都被手工提亮过——EXPORT_TINTS 草 0.72、带肋墙面 0.86,EXPORT_EMISSION_OVERRIDES 建筑 0.18,全是针对 Cesium 偏白的默认光照 调出来的。新资产没调过,是唯一如实渲染的东西,放旁边就显得发黑。 - FOLIAGE_ALBEDO_GAIN = 2.1,在抠图植被 dilate 那一遍顺带乘上。用增益而非 tint:其他材质是单一表面,而这是同时装着叶片/树皮/果实的图集,往绿色混会 把树干染绿。缩放保留色相关系,只把整体抬到和邻居一样的曝光。 - FOLIAGE_SATURATION = 1.75,绕各像素自身 Rec.709 亮度做饱和度拉伸。图集本 来就偏灰(平均饱和度 0.22),远看时 mip 把叶片、树皮、缝隙混在一起会更往 中性靠。绕亮度拉伸把叶片推绿而基本不动本来中性的部分,也没有绿色 tint 强 加给树干的色相偏移。叶片 sRGB → [0.262, 0.529, 0.021],饱和度 0.22 → 0.34, 过曝到纯白的像素占 0.3%。 - FOLIAGE_EMISSION 回调 0.25,它只负责给背光面兜底。 - 新增 triangulate_mesh():export_tangents 打开后刷了 55 行「切向空间只能只算 三角/四边形」,MeshBatch 建的 OSM 轮廓都是 n-gon。glTF 只有三角形,导出时 无论如何都会三角化,提前做不改变任何输出三角形(三角数 51719 前后一致), 切线 49/102 → 102/102,警告归零。 被数据排除的假设:贴图颜色全链路逐位一致;模拟 mip 链可见像素亮度 0.127→0.124;法线贴图抠图区是干净平面法线;GLB 重新导入 Blender 渲染正常。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,37 @@
|
||||
# Changelog
|
||||
|
||||
## 2026-07-31(三)远看发黑的真正原因:反照率没被提亮
|
||||
|
||||
(二)里加的 emissive 提到 0.8 仍然发黑。原因是 emissive 乘的是本来就很暗的
|
||||
反照率:0.8 × 深绿 ≈ sRGB `[0.22, 0.31, 0.11]`,还是暗的。**要提的是反照率本身。**
|
||||
|
||||
用户给的 Cesium 截图定位了问题:草是亮黄绿、建筑近白、路面浅灰,只有树是暗的。
|
||||
这棵树的图集叶片本来就是深绿——绿色系像素均值 sRGB `[0.249, 0.35, 0.12]`。按真实
|
||||
反照率渲染是对的,但**场景里其他材质都被手工提亮过**(`EXPORT_TINTS` 草 0.72、
|
||||
带肋墙面 0.86,`EXPORT_EMISSION_OVERRIDES` 建筑 0.18),全是针对 Cesium 偏白的
|
||||
默认光照调出来的。新资产没调过,是唯一一个如实渲染的东西,放在旁边就显得发黑。
|
||||
|
||||
- 新增 `FOLIAGE_ALBEDO_GAIN = 2.1`,在抠图植被的 dilate 那一遍里顺带乘上去。
|
||||
用增益而不是 tint:其他材质是单一表面所以 tint 合适,而这是一张同时装着叶片、
|
||||
树皮、果实的图集,往绿色混会把树干也染绿。缩放保留色相关系,只是把整体抬到和
|
||||
邻居一样的曝光。叶片 sRGB `[0.249, 0.35, 0.12]` → `[0.36, 0.50, 0.18]`,
|
||||
过曝到纯白的像素只占 0.4%
|
||||
- `FOLIAGE_EMISSION` 回调到 0.25:它的职责只是给背光面兜底,不是主要提亮手段
|
||||
- 增益之后远看仍偏灰绿,再加 `FOLIAGE_SATURATION = 1.75`,绕各像素自身
|
||||
Rec.709 亮度做饱和度拉伸。这张图集本来就偏灰(平均饱和度 0.22),而远看时
|
||||
mip 会把叶片、树皮和缝隙混在一起,越小越往中性靠。绕亮度拉伸能把叶片推绿而
|
||||
基本不动本来就中性的部分,也没有绿色 tint 强加给树干的色相偏移——树皮只是变
|
||||
暖一点。叶片 sRGB → `[0.262, 0.529, 0.021]`,整体饱和度 0.22 → 0.34
|
||||
- 新增 `triangulate_mesh()`:`export_tangents` 打开后刷了 55 行
|
||||
「切向空间只能只算三角/四边形」——`MeshBatch` 建的 OSM 轮廓都是 n-gon,
|
||||
Blender 只能给三角/四边形算切线。glTF 本来就只有三角形,导出时无论如何都会
|
||||
三角化,所以提前做不改变任何一个输出三角形(实测三角数 51719 前后一致),
|
||||
但切线从 49/102 变成 102/102,警告归零
|
||||
|
||||
排查中被数据排除的假设,记下来免得重走:贴图颜色全链路逐位一致(不是 gamma);
|
||||
模拟 mip 链可见像素亮度 0.127→0.124(不是 mipmap);法线贴图抠图区是干净平面法线
|
||||
(不是法线污染);把导出的 GLB 重新导入 Blender 渲染,树是正常的(文件没问题)。
|
||||
|
||||
## 2026-07-31(二)远看整棵树发黑
|
||||
|
||||
黑色色块修掉后,Cesium 里近看正常、远看整棵树是暗色块。逐项排查:
|
||||
|
||||
Reference in New Issue
Block a user