Files
osmWorkflow/blender/README.md
que01 cf69c99d20 通用化项目结构:Blender 脚本去硬编码、config 路径占位符、layerPrefix 配置
- blender/generate_nantaizi.py → blender/generate_scene.py(去硬编码路径,
  --geojson 改为可选,--office-overrides 替代硬编码 way ID)
- blender/export_cesium.py CLI 参数改为必传,修复隐藏物体导出崩溃
- blender/README.md 重写为中文通用文档
- config/default.json 路径改为占位符,template.json 新增 blender 配置块
- scripts/build-osm2streets-qgis.js 新增 layerPrefix 配置驱动 QGIS 图层名
- package.json name → osm-gis-pipeline
- README.md 重写并增加实际运行示例
2026-07-24 17:09:43 +08:00

66 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Blender 3D 场景生成
该生成器将 OSM 建筑、水体、植被标签,以及可选的 osm2streets GeoJSON 道路图层,组合为 Blender 3D 场景。
## 生成场景
```bash
/Applications/Blender.app/Contents/MacOS/Blender \
--background --factory-startup \
--python blender/generate_scene.py -- \
--osm "/path/to/input.osm" \
--geojson "/path/to/osm2streets_web_out" \
--output "/path/to/output.blend" \
--render "/path/to/preview.png"
```
`--geojson` 为可选参数。不提供时,道路使用简单的 OSM highway 折线,而非详细 osm2streets 几何。
使用 `--office-overrides` 指定一组 OSM way ID逗号分隔这些建筑将渲染为办公楼风格即使其 OSM 标签为 `building=industrial`
```
--office-overrides "117753521,117753535"
```
### 说明
- OSM `bounds` 元素定义场景范围(排除远处的地铁等关系成员)
- `natural=tree` 节点 → 独立树木(程序化或模型树冠)
- `natural=tree_row` 路径 → 沿路径均匀分布的树木
- `landuse=grass` → 绿色地面
- `natural=scrub` → 低矮灌木丛
- `amenity=fountain` → 低多边形喷泉
- 建筑:`building=industrial` → 厂房风格;其他 → 办公楼风格(带窗带)
- 植被和建筑高度从 OSM `height` 标签读取
- 程序化细节(窗带、屋顶设备、树冠)不改变 OSM 体量
- 纹理使用 Poly Haven 的 1K CC0 纹理,打包在 `.blend`
## 导出为 Cesium GLB
```bash
/Applications/Blender.app/Contents/MacOS/Blender \
--background \
--python blender/export_cesium.py -- \
--blend "/path/to/output.blend" \
--glb "/path/to/output_cesium.glb" \
--metadata "/path/to/output_cesium.json"
```
GLB 使用以 OSM bounds 中心为原点的局部 ENU 坐标系X 东Y 北Z 上)。
使用配套的 JSON 元数据文件将模型放置到 Cesium 中。
导出脚本会:
- 应用网格修改器并创建 UV
- 将 Blender 特有材质转换为 glTF 兼容 PBR 材质
- 烘焙色调覆盖基础色以实现干净的 Web 渲染
- 将所有纹理图片嵌入 GLB
- 写入包含 WGS84 锚点和 Cesium JS 辅助代码的 JSON 元数据
### 预览
在输出目录上启动 HTTP 服务后打开预览页:
```bash
cd /path/to/output
python3 -m http.server 8765
```