BlenderGIS 地形工作流程
使用活跃的 Blender 项目和 BlenderGIS 插件。保留当前场景,并在可用时重用用户的现有材质。
收集运行输入
在开始前询问任何缺失的值。除非用户明确要求重用,否则不要从之前的运行中带入值。
- 纬度
- 经度
- 地图范围
From Min - 地图范围
From Max - 渲染文件名,不包含扩展名
使用 BlenderGIS 首选项中配置的本地 OpenTopography API 密钥。切勿将 API 密钥、精确坐标或每次运行的范围值放入此技能、AGENTS.md、版本控制或公共日志中。如果密钥缺失,请要求用户在本地配置。
构建底图和地形
- 确认 BlenderGIS 已启用,并在更改任何内容之前检查当前场景、项目路径和选中的地形对象。
- 将地理参考场景居中到提供的纬度和经度。使用缩放级别为 14 的 Google 卫星底图,并将当前视图导出为纹理平面。
- BlenderGIS 的
G位置搜索使用 Nominatim 地理编码器。如果用户未授权将坐标发送到该服务,则改为本地设置场景的地理参考,而不提交搜索查询。 - 地图瓦片提供商将收到所选区域的瓦片请求。在用户的请求未明确授权该外部请求时,请与用户确认提供商。
- BlenderGIS 的
- 请求底图范围的 OpenTopography SRTM 30 米高程数据,并将其应用于选中的底图网格。使用用户的本地 API 密钥首选项;不要打印或记录请求 URL。
- 优先使用临时栅格路径,并在清理临时文件之前将生成的图像/纹理打包到 Blender 项目中。避免覆盖现有栅格或在授权的项目文件夹之外写入
.blend文件。
- 优先使用临时栅格路径,并在清理临时文件之前将生成的图像/纹理打包到 Blender 项目中。避免覆盖现有栅格或在授权的项目文件夹之外写入
- 在编辑模式下,选择所有地形几何体并使用 6 次切割进行细分。返回物体模式。
- 按堆栈顺序应用地形的修改器。
- 移除旧的材质分配,如果存在则使用用户的现有材质
Material.001。如果缺失,询问使用哪种材质,而不是在未指示的情况下创建替代品。 - 在该材质中,找到名为
Map Range的节点。将其标量From Min和From Max插座设置为提供的值。Blender 可能暴露重复的浮点和向量插座;编辑VALUE插座。保持不变的其他节点值和链接。
设置相机和渲染
- 创建或重用当前自上而下的正交相机。将其 X/Y 位置居中到地形评估的世界边界上。将裁剪起始设置为
0.1 m,裁剪结束设置为12000 m。 - 使用请求的正交缩放(在既定工作流程中为 9000)开始,并将相机放置在地形上方。选择一个高于最高表面点且使整个地形保持在裁剪范围内的 Z 值。
- 正交相机的 Z 值不会改变构图。将
camera.data.view_frame(scene=scene)中的相机帧与地形的世界边界进行比较。如果请求的缩放裁剪了表面,请解释尺寸并在更改用户指定的缩放前询问。全帧缩放应满足frame_width >= terrain_width和frame_height >= terrain_height。 - 切换到布局工作区并使用当前相机进行渲染。使用提供的文件名和
.png扩展名、PNG 格式、黑白颜色模式和 16 位深度,将图像保存到活跃的.blend文件旁边。除非用户要求,否则不要保存.blend文件。 - 验证保存的文件存在且为 16 位灰度 PNG。报告其路径、渲染设置以及
.blend文件本身是否已保存。
可移植性和文件处理
- 在运行时从活跃的
.blend文件解析输出文件夹;不要硬编码特定机器的路径。 - 如果项目文件夹位于可写工作区之外,则将渲染暂存到授权的工作区,并使用批准的文件复制路径将其放置到项目旁边。切勿通过 Blender 脚本绕过文件系统权限。
- 在覆盖现有输出图像之前先与用户确认。