参照测量
“让它看起来像这样”只有在数字确认后才算完成。此技能将参考转化为测量值,在隔离集合中构建,并将每次渲染与目标进行比较。
权威顺序
- 用户写下的内容(显式值和规则)。
- 节点截图:它们决定连接和设置。
- 参考渲染:它决定外观。 任何你推断而非读取的内容都是假设:在回复中列出并让用户确认。
工作流程
- 开始一个隔离的工作区:
scripts/workspace.py action=begin name=match1(保存相机、世界、引擎、视图设置;创建集合)。 - 读取截图,使用
references/reading-node-screenshots.md:在构建之前将节点图写成文本(节点、关键值、连接)。截图中的小数字容易读错;标记出不确定的。 - 测量参考:
scripts/ref_report.py image=ref.png给出亮度均值、对比度、剪切、饱和度、一个包含色块及其占比的sRGB十六进制调色板以及一个4x4锐度图(显示对焦区域)。scripts/ref_colors.py读取特定点的精确颜色;hex是你看到的颜色,linear是进入着色器的颜色。 - 构建节点,使用
gauge.node_build/gauge.gn_make(参见 gauge-materials, gauge-geonodes),然后使用scripts/node_text.py重新读取你构建的内容,并与你的转录进行比较。 - 小尺寸渲染,然后运行
scripts/ref_match.py image=mine.png reference=ref.png。每个未通过的检查会附带一个数值修正:曝光档位(将光照乘以 2^-stops)、对比度比率、每通道色调、结构误差。 - 每次只改一个东西,渲染,再次测量。当各项指标通过门槛时停止(默认:曝光偏差在 0.35 档内,对比度比率 0.85-1.15,色调偏差在 0.04 内,误差 <= 0.08)。
- 结束:
workspace.py action=end恢复场景并列出将删除的内容;仅在用户同意时传递confirm=true。
工具
| 脚本 | 回答的问题 |
|---|---|
ref_report.py | 这张图片里有什么(以及与另一张图片的差距有多大) |
ref_colors.py | 某一点的确切颜色 |
ref_match.py | 我的渲染是否足够接近,以及需要修改什么 |
node_text.py | 这个材质/组/世界/合成器树里有什么 |
workspace.py | 开始/结束而不留下混乱 |
规则
- 先匹配结构(构图、形状、光照方向),再匹配颜色,最后匹配细节。
- 先修正曝光再处理颜色:1档曝光误差会改变所有颜色测量值。
- 50%尺寸、24 samples的渲染足以判断上述所有指标。
- 有压缩或不同伽马值的参考图像不精确:信任调色板和比率,而不是单个像素。