窗户透进来的光能照亮书桌,也会让坐在桌前的人伸手调整百叶帘。要预测房间里的光照,需要描述各个表面、追踪光的传播,还要明确测量什么。伯克利实验室开发的开源光照引擎 Radiance 将这些工作交给不同的小程序。房间发生变化后,各个程序还能复用哪些结果?从这个问题入手,就能看清它的架构。[1]
设想一间办公室:一扇窗、浅色墙壁,以及一排书桌。我们既想看到坐在椅子上的视野,也想计算各处工作台面的光照水平。下文讨论 Radiance 常规的光线追踪与环境光计算;光子映射和全年天然采光分析还会用到其他方法与工具。
准备房间模型
Radiance 的场景文件描述几何形状、材料和光源。oconv 程序将这些场景描述编译成八叉树,通常保存为 .oct 文件。[2] 这种空间索引先用一个立方体包住整个场景,再不断把空间细分为八个更小的立方体。射线借助它缩小搜索范围,查找沿途会碰到的表面。[3]
八叉树回答的是一个几何问题:房间的这片区域里有什么?至于每张书桌上的光照,还要另行计算。准备场景与查询光照是两项独立的操作。
场景信息还有两种封装方式。通常,八叉树保留对场景文件的引用;使用 oconv -f 则会将场景信息冻结在八叉树内。改变表面坐标,或者增删图元,都需要重新生成八叉树。对于普通的、未冻结的八叉树,手册允许修改非表面参数并继续使用原有索引,因此重新编译的要求有其适用范围。[2]
为了让比较可以复现,可以为房间的每个变体同时保存冻结的八叉树及其对应源文件,留下一份明确的模型文件。要得到结果,还需补齐计算设置和查询输入。
用相机或测量点提问
rpict 接收八叉树和视图参数,生成一幅 Radiance 图像。[4] 椅子的位置与观看方向,决定了我们从哪个角度观察房间。
rtrace 则采用另一种输入输出方式。它从标准输入读取射线的起点和方向,再将结果写到标准输出。启用大写 -I 后,输入表示测量点及其朝向,输出表示辐照度,也就是单位面积接收到的辐射功率。[5]
这样就可以布置一排虚拟传感器,逐一测量桌面上的光照,省去为相机安排视角、让每张桌面都进入画面的步骤。朝向会影响结果:朝上的工作台面与人眼位置的竖直表面,接收到的光有所不同。在这个例子里,它们使用同一份房间描述,提出不同的查询。
参数字母的大小写只差一点,含义却相差很大。小写 -i 针对射线到达的表面计算辐照度;大写 -I 直接采用输入的测量点和朝向。混用两者,就会改变实际测量的位置。[5] 脚本即使顺利运行,回答的也会是另一个问题。
记住间接光
从窗户进入的光,会经过墙壁和天花板的反射再落到书桌上。若为图像中的每个像素单独重算这部分漫反射贡献,计算成本会很高。Ward 在 1994 年介绍 Radiance 系统的论文中描述了它的处理办法:在需要的位置计算间接辐照度,保存结果,再利用附近适用的数值做插值。采样会随场景调整,直射光与镜面反射的贡献则分别处理。[3]
保存下来的数值描述的是表面上的光照,因此换一个视角仍然有用。相机移动后,遇到尚待计算的新区域时可以补算,已经完成的计算也能继续派上用场。图像像素与可复用的光照结果各有自己的有效期,原因就在这套分工里。[3]
在常规环境光计算中,-ab 限制漫反射反弹的次数;设为零会关闭这项间接光计算。这个计数只涵盖漫反射反弹,渲染器还会处理其他类型的反射。-aa 控制环境光插值,设为零会关闭插值。[4] 这些设置决定光照如何计算;增大图像的像素尺寸,调整的则是视图采样的精细程度。
认清缓存何时失效
-af 选项将间接辐照度数值写入环境光文件,供后续程序运行时复用。rpict 手册介绍了一种做法:先计算一张较小的图像,预先积累缓存,再以相同的计算参数生成较大的图像。[4]
现在,把这间办公室的百叶帘放下来。先前保存的光照数值对应的是变化前的场景。Radiance 手册要求,在场景或计算参数改变后,丢弃旧的环境光文件。[4][5]
依据这条规则,小型研究或设计团队可以把每个场景变体、对应设置和环境光文件放在一起管理。如果多次实验悄然沿用 room.amb 这样的同名文件,就容易误用此前的计算结果。这项工作流程建议来自文档中的缓存规则;至于 Radiance 是否会自动追踪全部依赖关系,这条规则并未作出这样的保证。
排查问题时也要分清两件事:几何索引过期,与光照缓存过期,是两种不同的错误。重建几何索引后,光照缓存是否仍然有效,还需单独核实。
让计算与实测相互对照
伯克利实验室 FLEXLAB 与飞利浦的合作,将自动百叶帘、照明控制、传感器和有人使用的办公室纳入同一项实验。案例研究记载,研究人员比较了实测光度数据与 Radiance 模拟结果。[6][7] 照片呈现了这次比较背后的实地环境:实验设备,以及一间光照变化可供观察的房间。
到了实测环节,软件的局限便有了具体形态。即使计算方法在技术上成立,结果仍取决于输入的窗玻璃特性、表面属性、几何形状和照明条件。若模型描述的房间本身就与实际不符,再多的计算也无法弥补。团队用模拟辅助设计决策时,还需要记录这些输入,并选取有代表性的结果与实测数据核对。
洛桑联邦理工学院(EPFL)在一篇介绍 Greg Ward 获得 2018 年 Daylight Award 的独立报道中,强调了 Ward 与 Radiance 用户持续为天然采光研究作出的贡献。[8] 从架构上看,Radiance 的价值也有迹可循:同一个场景可以回答不同的问题,耗费大量计算所得的结果也能在生成一张图像之后继续使用。准确记录哪些内容发生了变化,这种复用才有可靠的依据。
来源
- 美国能源部,《Radiance》——开源项目介绍及其在照明设计中的应用;核查日期:2026 年 10 月 7 日。
- Radiance 项目,oconv(1) 手册——场景编译、冻结八叉树及重新生成的规则。
- Gregory J. Ward,《The RADIANCE Lighting Simulation and Rendering System》,SIGGRAPH 1994——重点参见第 3.2 节与第 3.6 节,涉及间接辐照度缓存和空间细分。
- Radiance 项目,rpict(1) 手册——图像生成、漫反射反弹、插值及环境光文件复用。
- Radiance 项目,rtrace(1) 手册——射线输入、测量点模式及环境光文件失效规则。
- 伯克利实验室,《FLEXLAB Helps Philips Light Offices Right》——实地实验及其与 Radiance 模拟结果的比较。
- 伯克利实验室,《Integrated Lighting & Shading Controls》——介绍该实验及其实地试验平台的配套文章。
- Sandrine Perroud,《EPFL to host the 2018 Daylight Award Ceremony》,2018 年 9 月 17 日——由独立机构介绍 Ward 的工作与 Radiance 社区。