
为什么你的渲染图看起来平淡rayshader_portraits相机参数与高度夸张z值调优10个技巧【免费下载链接】rayshader_portraits项目地址: https://gitcode.com/gh_mirrors/ra/rayshader_portraits用 R 的 rayshader 包做阴影浮雕地图时很多人渲染出的图平得像一张平面图。其实 rayshader_portraits 这个仓库就是答案库——它收录了上百张美国国家公园与美国各州人口密度渲染图的完整代码。今天我们把作者调优相机参数phi、theta、zoom与高度夸张 z 值的 10 个技巧拆开讲让你快速做出有立体感、有质感的渲染图。先搞清楚两个z不是同一个东西新手最容易混淆的点项目里其实有两个 z参数所在函数作用z 10~14elevatr::get_elev_raster()DEM 数据分辨率越大越精细、越耗时z resrayshader::plot_3d()高度夸张系数值越小高度越夸张这个区分在 R/portraits/bryce_canyon/render_graphic.R 中写得非常清楚数据下载时z - 14是全量分辨率而plot_3d中的z才是控制山耸不耸的旋钮。技巧 1-3迭代速度优先的 z 值策略技巧 1迭代期先用z 10出图再拉满模板代码 R/templates/elevation/render_graphic.R 默认z - 10。原因很实际分辨率越高矩阵越大每次调整视角都要等更久。等构图满意了再把 z 提到 14 渲染终稿。技巧 2用resize_matrix()压缩数据快速试参数不想降 z 的话作者给了另一个方案small - resize_matrix(mat, .25)数据缩小到 1/4试相机角度时响应飞快构图确定后再换回全量矩阵。技巧 3高度夸张用相对值而不是拍脑袋看 R/portraits/zion/render_graphic.R 第 91-94 行作者没有写死一个数字而是从数据本身算夸张系数res - mean(round(terra::res(zelev))) / 5 # 约为数据分辨率的 5 倍z res传入plot_3d()夸张程度与地块范围自动匹配——换成任何地图都不用重调。想更夸张就把除数从 5 调小想更自然就调大。技巧 4-6相机参数 phi、theta、zoom 的调法render_camera()是整条流水线里最重要的一个函数三个参数各司其职render_camera(phi 80, zoom 1, theta 0)技巧 4用phi控制俯仰角——立体感的总开关phi就是太阳角度般的俯仰角phi 90正上方俯视标准地图感phi越小越接近侧视0 完全侧面剖视立体感越强翻一翻仓库里的实战案例拱门、锡安这类峡谷图用phi 90保持地理可读性见 R/portraits/arches/render_graphic.R而阿拉斯加、加州这种想强调山势的图直接把phi压到 35配zoom 0.95地形立刻站起来了见 R/portraits/california/render_graphic.R。技巧 5用theta旋转构图让边界更顺眼theta 0保持北朝上但很多时候轻微旋转 10~20 度能让地图轮廓和画幅更贴合亚利桑那render_camera(phi 60, zoom .65, theta 0)阿拉巴马phi 45, theta -10加州theta 60大胆旋转突出海岸线技巧旋转后配合zoom 1防止地图顶出画面这是仓库里几乎所有theta ≠ 0的图都遵守的搭配。技巧 6zoom是最后的构图微调旋钮zoom只决定地图占画面多大0.5留出大量白边适合加文字1是默认充满。作者常用zoom 0.7如 R/portraits/bryce_canyon/render_graphic.R 第 103 行给标题和标注留空间之后由markup.R补上文字。技巧 7-8灯光与阴影决定高级感技巧 7shadowdepth决定阴影落地的位置shadowdepth是阴影地面的海拔与数据同单位。作者的通用做法见 zion 脚本第 89 行shadow_depth - min(mat, na.rm TRUE) - 500 # 最低点再往下 500 英尺设得离数据太近山体像浮空设得太远阴影拖得过长、画面发灰。技巧 8HDR 环境光 intensity_envrotate_env这是区分平淡和出片的关键一步。终稿渲染时关闭普通光源改用 HDR 环境贴图render_highquality( outfile, samples 300, light FALSE, environment_light assets/env/phalzer_forest_01_4k.hdr, intensity_env 1.5, # 调亮/调暗 rotate_env -20 # 逆时针旋转光源 )rotate_env相当于转太阳方向阴影走向一变山脊的明暗节奏完全不同——同一片地形转 90 度就是另一张图。技巧 9-10终稿渲染与工程化收尾技巧 9长渲染前先写一张测试 PNGrender_highquality()跑起来可能要几个小时。作者的保险动作zion 脚本第 163-165 行先png::writePNG(matrix(1), outfile)测试输出路径能不能写再正式渲染避免几小时后才发现路径错了。另外samples 300是作者验证过的下限sobol 采样在 256 以上才稳定。技巧 10把调好的参数存进header.rds文字交给markup.R每调好一组参数仓库的约定是立刻存档map、调色板、z 值、输出文件名、坐标到各地图目录的header.rds例如 R/portraits/zion/header.rds。之后 R/portraits/zion/markup.R 读取这份配置用{magick}叠加标题文字并导出高清图与适配社交平台的小图两份。参数可追溯改稿时不用重新盲调。总结一张速查表症状调整方向画面太平、没立体感降低phi如 80 → 45、缩小plot_3d的z山体过于夸张调大plot_3d的z如 res/5 → res/3构图拥挤降zoom0.7~0.85或用theta旋转贴合画幅阴影拖太长发灰减小shadowdepth与数据的距离明暗没层次换 HDR 环境光调rotate_env与intensity_env每次试参都慢迭代期用z 10或resize_matrix(mat, .25)照着 R/templates/elevation/render_graphic.R 的模板起步再对照 R/portraits/ 下上百个地图目录的实战参数你会发现一张出片的渲染图本质就是 phi、theta、zoom 三个相机参数和 z 值夸张系数在反复迭代中找到了平衡点。【免费下载链接】rayshader_portraits项目地址: https://gitcode.com/gh_mirrors/ra/rayshader_portraits创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考