HDR环境光照教程:用intensity_env和rotate_env在rayshader_portraits中打造电影级光影
HDR环境光照教程:用intensity_env和rotate_env在rayshader_portraits中打造电影级光影
【免费下载链接】rayshader_portraits项目地址: https://gitcode.com/gh_mirrors/ra/rayshader_portraits
rayshader_portraits 是基于 R 语言 rayshader 与 rayrender 包制作阴影地形图的开源项目。本教程将带你用三个关键参数——HDR 环境光照、intensity_env(光照强度)和 rotate_env(光源旋转)——快速为地形图打造电影级光影效果。无需渲染器经验,看完即可上手 🌄
什么是 HDR 环境光照?为什么它更"电影感"
传统的 3D 渲染只用一个"假太阳"打光,高光生硬、阴影发死。而HDR 环境光照(High Dynamic Range environment lighting)会把一整张高动态范围的环境照片(天空、地面、周边景物)包裹在场景四周,让光线从四面八方自然地照亮地形,产生柔和的漫反射、真实的色彩过渡,效果接近电影调色。
项目中所有渲染脚本都默认加载一张 4K 森林 HDR 环境图,路径为assets/env/phalzer_forest_01_4k.hdr。下面这张拱门国家公园地形图,就是 HDR 光照渲染出的成品——岩石表面呈现出自然的天光反射与层次分明的阴影:
核心参数速览:定义光影的 3 个开关
在渲染函数的参数列表中,控制环境光照的关键配置如下(摘自模板 R/templates/elevation/render_graphic.R 中的render_highquality()调用):
| 参数 | 示例值 | 作用 |
|---|---|---|
environment_light | assets/env/phalzer_forest_01_4k.hdr | 指定 HDR 环境贴图文件 |
light | FALSE | 关闭传统单光源,让环境光接管打光 |
intensity_env | 1.5 | 调节整体光照强度,越大越亮 |
rotate_env | -20 | 旋转光源角度,正值逆时针旋转 |
render_highquality( outfile, samples = 300, light = FALSE, # 关闭传统光源 environment_light = "assets/env/phalzer_forest_01_4k.hdr", intensity_env = 1.5, # 照亮/压暗场景 rotate_env = -20, # 旋转光源方向 width = 6000, height = 6000 )💡 关键组合是light = FALSE+environment_light = "...":只要用了 HDR 环境图,就必须关掉传统光源,否则两者叠加会过曝。
快速上手:5 步点亮你的地形图
- 创建新作品:打开项目后用内置函数
.new_portrait("你的地图名")一键生成目录和脚本骨架(定义见 R/utils/on_load.R)。 - 准备 DEM 数据:脚本会用
elevatr包自动下载海拔数据。迭代阶段建议z = 10,出成品再升到z = 14。 - 设置 HDR 光照:在
render_highquality()中填入environment_light路径并设light = FALSE。 - 调亮度:从
intensity_env = 1.5起步,画面偏暗就加大,偏曝就减小。 - 转光源:用
rotate_env旋转到阴影方向最戏剧化的角度(正值为逆时针)。
大荒原(Badlands)的这张成图就是典型的 HDR 光照风格——低角度光线把层叠丘陵拉出长长的阴影,"tangerine_blues" 色板与森林环境光相互映衬:
intensity_env:像调"曝光"一样控制亮度
intensity_env相当于相机的曝光补偿,项目中的实际取值可以抄作业:
1.5:最常用基准值,arches、badlands 等大多数作品都采用;0.5:压低强度,营造昏暗、神秘的氛围(见 R/portraits/black_canyon/render_graphic.R);1.75:提亮场景,适合想突出明亮高光的构图(见 R/portraits/bryce_canyon/render_graphic.R)。
经验法则:4K HDR 图本身较亮,1.0 ~ 1.5之间最稳妥;想玩暗调氛围再往下压到0.5试试。
rotate_env:让光源"绕场一周",拍出光影长片
rotate_env以度为单位旋转整个环境贴图,正值逆时针、负值顺时针。改这一个数字,阴影方向就跟着变,同一张地图可以"换无数个太阳":
rotate_env = -20:项目默认值,适合大多数北向构图;rotate_env = 90:把光源转到正上方偏侧, Bryce Canyon 作品即采用此角度;- 动画模式:R/portraits/badlands/render_gif.R 中把
rotate_env = i放进循环,i从 0 到 360 每 3 度渲染一帧,再合成视频——光源绕着地形"日出日落",就是电影级动态光影 🎞️
想要类似 Voyager 那种旋转动效,可以直接参考 R/portraits/voyageurs/gif.R 的写法。
实用技巧清单
- 先试光、后渲染:R/portraits/blank/render_graphic.R 专门用一小块地面测试不同
intensity_env/rotate_env组合,几秒钟出结果,确定参数后再跑小时级正式渲染; - 采样别吝啬:HDR 光属于全局光照,
samples = 300起步配合sobol采样方法,边缘更干净; - 换氛围换贴图:脚本注释里备有
small_rural_road_4k.hdr等备选环境图,不同 HDR 会带入不同色温; - 成品尺寸:
width/height决定最终分辨率,项目成品普遍 4000~6000 像素。
不同参数组合下,同一套工作流产出的风格跨度极大。例如雷尼尔山采用冰川冷调环境光,光影清澈通透:
去哪里看更多真实案例
想直接"抄参数",可以按题材逛这些目录(每个目录内都有 render_graphic.R 渲染脚本和header.rds配置):
| 想看什么 | 目录 |
|---|---|
| 经典 HDR 静态光照 | R/portraits/arches/、R/portraits/badlands/ |
| 暗调低强度光 | R/portraits/black_canyon/ |
| 光源旋转动画 | R/portraits/badlands/render_gif.R、R/portraits/voyageurs/gif.R |
| 可复用的参数骨架 | R/templates/elevation/ |
| 成品效果展示 | tracked_graphics/ |
"创生之柱"天体地形的这张作品,正是环境光照 + 自定义色板结合的产物,星云细节在柔和光线下层次分明:
小结
📌 记住这个组合拳:light = FALSE+environment_light(HDR 路径)+intensity_env管亮度 +rotate_env管方向。从1.5 / -20的默认值起步,先用 blank 测试场景快速试光,满意后再渲染成品,你也能做出同样有"电影感"的地形光影图。
【免费下载链接】rayshader_portraits项目地址: https://gitcode.com/gh_mirrors/ra/rayshader_portraits
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
