90 lines
4.1 KiB
Markdown
90 lines
4.1 KiB
Markdown
# Nantaizi Lake Blender scene
|
|
|
|
This generator combines the source OSM building, water and height tags with
|
|
the detailed osm2streets GeoJSON road layers.
|
|
|
|
## Outputs
|
|
|
|
- `../outputs/nantaizi-lake-innovation-valley/nantaizi_lake_innovation_valley.blend`
|
|
- `../outputs/nantaizi-lake-innovation-valley/nantaizi_lake_innovation_valley.png`
|
|
- `../outputs/nantaizi-lake-innovation-valley/nantaizi_lake_innovation_valley_cesium.glb`
|
|
- `../outputs/nantaizi-lake-innovation-valley/nantaizi_lake_innovation_valley_cesium.json`
|
|
- `../outputs/nantaizi-lake-innovation-valley/nantaizi_cesium_preview.html`
|
|
|
|
## Regenerate
|
|
|
|
```bash
|
|
/Applications/Blender.app/Contents/MacOS/Blender \
|
|
--background \
|
|
--factory-startup \
|
|
--python blender/generate_nantaizi.py -- \
|
|
--osm "/Users/que01/Desktop/南台子湖创新谷OSM.osm" \
|
|
--geojson "/Users/que01/osm2streets-qgis-workflow/outputs/nantaizi-lake-innovation-valley/osm2streets_web_out" \
|
|
--output "/Users/que01/osm2streets-qgis-workflow/outputs/nantaizi-lake-innovation-valley/nantaizi_lake_innovation_valley.blend" \
|
|
--render "/Users/que01/osm2streets-qgis-workflow/outputs/nantaizi-lake-innovation-valley/nantaizi_lake_innovation_valley.png"
|
|
```
|
|
|
|
The OSM file contains distant subway relation members. The generator uses the
|
|
explicit OSM `bounds` element to keep the scene limited to the park.
|
|
|
|
Vegetation is read from the OSM export: `natural=tree` nodes become individual
|
|
trees, `natural=tree_row` ways become evenly spaced rows using their height,
|
|
`landuse=grass` becomes green ground, and `natural=scrub` becomes low shrub
|
|
volumes. `amenity=fountain` nodes become low-poly fountain basins and water
|
|
sprays. No trees or fountains are inferred from open ground.
|
|
|
|
The renderer adds procedural presentation detail without changing OSM massing:
|
|
rounded layered crowns and tapered trunks for trees, window bands and roof
|
|
equipment for office buildings, and clerestory windows, skylights and roof
|
|
equipment for `building=industrial` footprints.
|
|
|
|
Ordinary `building=yes` footprints below 30 meters are rendered as three-floor
|
|
park offices at 11.4 meters plus a small roof unit. Explicit high-rises and all
|
|
`building=industrial` heights remain sourced from OSM. White plaster, gray
|
|
corrugated iron, grass and bark use 1K CC0 textures downloaded from Poly Haven.
|
|
The images used by the scene are packed into the generated `.blend`; source and
|
|
license details are recorded in `assets/textures/polyhaven/SOURCES.md`.
|
|
|
|
OSM ways `117753521` and `117753535` are explicitly rendered as three-floor
|
|
white offices because the surveyed site use differs from their current
|
|
`building=industrial` tags.
|
|
|
|
## Export for Cesium
|
|
|
|
```bash
|
|
/Applications/Blender.app/Contents/MacOS/Blender \
|
|
--background \
|
|
--python blender/export_cesium.py
|
|
```
|
|
|
|
The GLB uses a local east-north-up meter frame centered on the OSM bounds. Its
|
|
companion JSON records the WGS84 anchor used by the preview page. The export
|
|
script applies mesh modifiers, creates UVs, converts Blender-only materials to
|
|
glTF-compatible PBR materials, and embeds the used texture images in the GLB.
|
|
For the Cesium preview, use this script rather than Blender's manual glTF
|
|
export: it preserves the local ENU placement metadata and bakes/overrides the
|
|
building display materials so the web preview stays close to Blender's clean
|
|
material-preview look.
|
|
|
|
You can export directly from Blender for a quick material sanity check, but the
|
|
manual GLB will not create/update `nantaizi_lake_innovation_valley_cesium.json`
|
|
and therefore will not be positioned automatically by
|
|
`nantaizi_cesium_preview.html`.
|
|
|
|
Serve the output directory over HTTP before opening the preview because web
|
|
browsers do not allow the page to fetch GLB/JSON files from `file://`:
|
|
|
|
```bash
|
|
cd outputs/nantaizi-lake-innovation-valley
|
|
python3 -m http.server 8765
|
|
```
|
|
|
|
Then open `http://localhost:8765/nantaizi_cesium_preview.html`.
|
|
|
|
## Blender MCP
|
|
|
|
The current machine has the `blosm` add-on but no Blender MCP add-on or Codex
|
|
MCP server configuration. An MCP workflow requires both sides and a Codex
|
|
restart after adding the server. The generator remains useful with MCP because
|
|
it creates a stable base scene that can then be edited interactively.
|