diff --git a/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/check.jsonl b/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/check.jsonl new file mode 100644 index 0000000..9dd3234 --- /dev/null +++ b/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/check.jsonl @@ -0,0 +1 @@ +{"_example": "Fill with {\"file\": \"\", \"reason\": \"\"}. Put spec/research files only — no code paths. Run `python3 .trellis/scripts/get_context.py --mode packages` to list available specs. Delete this line once real entries are added."} diff --git a/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/implement.jsonl b/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/implement.jsonl new file mode 100644 index 0000000..9dd3234 --- /dev/null +++ b/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/implement.jsonl @@ -0,0 +1 @@ +{"_example": "Fill with {\"file\": \"\", \"reason\": \"\"}. Put spec/research files only — no code paths. Run `python3 .trellis/scripts/get_context.py --mode packages` to list available specs. Delete this line once real entries are added."} diff --git a/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/prd.md b/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/prd.md new file mode 100644 index 0000000..9da236e --- /dev/null +++ b/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/prd.md @@ -0,0 +1,47 @@ +# Use low-poly scrub bush asset + +## Goal + +Prefer the new custom low-poly scrub bush asset for scrub edge instances and +validate `nantaizi-lake-innovation-valley` Blender/Cesium/preview output. + +The user supplied `assets/models/custom/bush_low/bush_low.glb`. The goal is to +test whether using it reduces scrub bush mesh cost and improves Follow +smoothness without losing scrub ground cover or breaking material tinting. + +## Requirements + +1. Update `blender/generate_scene.py` to prefer + `assets/models/custom/bush_low/bush_low.glb` for scrub edge bushes. +2. Keep `assets/models/custom/bush/bush.glb` as a fallback if the low asset is + missing or fails to import. +3. Preserve deterministic scrub edge sampling and current scrub density budget: + `SCRUB_BUSH_SPACING = 1.8`, `SCRUB_BUSH_LIMIT_PER_PATCH = 60`. +4. Preserve existing material tint behavior based on material names containing + `leaf`, `trunk`, or `twig`. +5. Rebuild `nantaizi-lake-innovation-valley` stages `blender,cesium,preview`. +6. Measure and report: + - `SCENE_DONE.scrub_bushes` + - GLB total nodes + - scrub bush node count + - scrub bush mesh vertex/index bytes or primitive counts from GLB digest + - output GLB size +7. Do not change road/building/tree/vehicle route behavior. + +## Acceptance Criteria + +- [ ] `generate_scene.py` prefers `bush_low.glb` and falls back to `bush.glb`. +- [ ] `python3 -m py_compile blender/generate_scene.py` passes. +- [ ] `python3 -m unittest blender/tests/test_pure.py` passes. +- [ ] `npm run build:area -- --config config/areas/nantaizi-lake-innovation-valley.json --stages blender,cesium,preview` passes. +- [ ] GLB digest confirms scrub bush nodes remain about `266` and scrub ground + metadata remains present. +- [ ] Task report/changelog records whether `bush_low` meaningfully reduced + mesh cost and whether it is worth keeping. + +## Out Of Scope + +- Compressing textures or changing baked material export. +- Replacing the preview car asset. +- Runtime LOD implementation. +- Further changing scrub density unless low asset validation shows it is needed. diff --git a/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/report.md b/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/report.md new file mode 100644 index 0000000..7818278 --- /dev/null +++ b/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/report.md @@ -0,0 +1,47 @@ +# Low-poly scrub bush experiment report + +## Outcome + +Do not adopt `assets/models/custom/bush_low/bush_low.glb` as the default scrub +edge bush. + +The asset successfully reduced geometry cost, but user validation found the +visual result unsatisfactory. The default generator was restored to +`assets/models/custom/bush/bush.glb`. + +## Measurements + +Commands used during the experiment: + +```bash +python3 -m py_compile blender/generate_scene.py +python3 -m unittest blender/tests/test_pure.py +npm run build:area -- --config config/areas/nantaizi-lake-innovation-valley.json --stages blender,cesium,preview +node scripts/glb-digest.js outputs/nantaizi-lake-innovation-valley/nantaizi-lake-innovation-valley.glb --out /tmp/nantaizi-bush-low-glb-digest.json +node scripts/glb-digest.js assets/models/custom/bush/bush.glb --out /tmp/bush-original-digest.json +node scripts/glb-digest.js assets/models/custom/bush_low/bush_low.glb --out /tmp/bush-low-asset-digest.json +``` + +Low-poly asset geometry: + +- Original `bush.glb`: `9.10 MB`, `63,762` vertices, `67,536` indices. +- Experimental `bush_low.glb`: `5.79 MB`, `4,044` vertices, `4,050` indices. +- Texture count stayed at `6`, so file size did not fall proportionally with + geometry. + +Nantaizi rebuild while using `bush_low.glb`: + +- `SCENE_DONE.scrub_bushes`: `266` +- GLB nodes: `830` +- Scrub bush nodes: `266` +- Scrub bush shared mesh: `4,044` vertices, `4,050` indices +- GLB size: `27.51 MB` +- Metadata scrub polygons: `5` + +## Decision + +This proved geometry reduction works, but this particular low-poly model is not +good enough visually. Keep the current density budget and original default bush +asset for now. The next useful direction is a better-authored low-poly bush: +same approximate silhouette/volume as the original, lower geometry, and reduced +or compressed texture payload. diff --git a/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/task.json b/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/task.json new file mode 100644 index 0000000..248466a --- /dev/null +++ b/.trellis/tasks/archive/2026-08/08-03-use-low-poly-scrub-bush/task.json @@ -0,0 +1,26 @@ +{ + "id": "use-low-poly-scrub-bush", + "name": "use-low-poly-scrub-bush", + "title": "Use low-poly scrub bush asset", + "description": "Prefer the new custom low-poly scrub bush asset and validate nantaizi output.", + "status": "completed", + "dev_type": null, + "scope": null, + "package": null, + "priority": "P2", + "creator": "dingkang", + "assignee": "dingkang", + "createdAt": "2026-08-03", + "completedAt": "2026-08-03", + "branch": null, + "base_branch": "main", + "worktree_path": null, + "commit": null, + "pr_url": null, + "subtasks": [], + "children": [], + "parent": null, + "relatedFiles": [], + "notes": "", + "meta": {} +} \ No newline at end of file