Files
osmWorkflow/.trellis/tasks/08-03-test-shapespark-tree-variants/prd.md

48 lines
1.9 KiB
Markdown

# Test Shapespark tree variants
## Goal
Use the split Shapespark low-poly plant assets as tree, scrub bush, and lawn
tuft variants, then validate `nantaizi-lake-innovation-valley`.
The user liked the Shapespark `bush-03` scrub replacement and wants to evaluate
whether the same kit can replace the current tree asset. If multiple tree
variants are not too expensive, the scene should use varied trees while staying
deterministic for the same OSM input.
## Requirements
1. Prefer Shapespark tree assets from
`assets/models/custom/shapespark_plants/tree-*/model.gltf`.
2. Use deterministic variant selection based on stable tree instance ordering;
do not use unseeded random or time-dependent randomness.
3. Preserve existing tree placement count and route/road/building behavior.
4. Preserve the existing scrub bush `bush-03` experiment.
5. Replace the old Poly Haven `shrub_02` lawn tuft asset with suitable
Shapespark grass assets.
6. Evaluate the cost of loading multiple tree and lawn tuft variants:
- number of shared tree meshes introduced
- number of shared lawn tuft meshes introduced
- texture/image/material counts
- output GLB size
- total nodes
7. Rebuild only `nantaizi-lake-innovation-valley` stages
`blender,cesium,preview`.
## Acceptance Criteria
- [ ] Tree generation uses Shapespark tree variants deterministically.
- [ ] Lawn tufts use Shapespark `grass-*` variants instead of `shrub_02`.
- [ ] `python3 -m py_compile blender/generate_scene.py blender/osmassets/tree.py` passes.
- [ ] `python3 -m unittest blender/tests/test_pure.py` passes.
- [ ] nantaizi `blender,cesium,preview` rebuild passes.
- [ ] GLB digest reports tree mesh/material/image/node cost.
- [ ] User can open the local preview and compare visual result.
## Out Of Scope
- Runtime LOD.
- hanyang validation.
- Texture compression / KTX2.
- Committing the experiment before user approval.