world.js sways a tree by rotating a `canopy` group whose origin sits at the trunk top, so the blobs swing about the trunk. The trees shipped canopy_01..03 as siblings of `trunk` with each origin at its own blob centre — rotating one spins a sphere in place, which is visually nothing. Lane A could not have swayed these trees, and the canopy lean is the gust telegraph the player reads a beat before it hits the sail, so the tell would have gone missing rather than looked wrong. Adds the `canopy` empty at the trunk top with the blobs parented under it, so A's existing code works unchanged, plus sway_amp / sway_phase / sway_pivot_y for the per-tree tuning SPRINT2 §Lane E asks for (gum_01 is big and leans less at 0.85; gum_02 is whippy at 1.20 and shows a gust first). sway_phase draws from its own RNG stream: taking it from the shared one would consume a value and shift every blob draw after it, resilhouetting a tree the other lanes have already tuned against. Exported dims are identical to Sprint 1. e.test.js asserts the pivot by rotating the handle and measuring that a blob actually travels — red before this change, green after. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
85 lines
1.3 KiB
JSON
85 lines
1.3 KiB
JSON
{
|
|
"blender": "5.1.2",
|
|
"assets": [
|
|
{
|
|
"name": "tree_gum_01",
|
|
"dims": [
|
|
4.5522,
|
|
4.956,
|
|
7.9702
|
|
],
|
|
"tris": 396,
|
|
"nodes": [
|
|
"branch_anchor_01",
|
|
"branch_anchor_02",
|
|
"branch_anchor_03",
|
|
"canopy",
|
|
"canopy_01",
|
|
"canopy_02",
|
|
"canopy_03",
|
|
"tree_gum_01",
|
|
"trunk"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "tree_gum_02",
|
|
"dims": [
|
|
3.8871,
|
|
2.7787,
|
|
5.4972
|
|
],
|
|
"tris": 288,
|
|
"nodes": [
|
|
"branch_anchor_01",
|
|
"branch_anchor_02",
|
|
"canopy",
|
|
"canopy_01",
|
|
"canopy_02",
|
|
"tree_gum_02",
|
|
"trunk"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
}
|
|
],
|
|
"debris": [
|
|
{
|
|
"file": "BlueCrate_v2.glb",
|
|
"dims": [
|
|
0.36,
|
|
0.36,
|
|
0.29
|
|
],
|
|
"sane": true
|
|
},
|
|
{
|
|
"file": "BlackTub_v2.glb",
|
|
"dims": [
|
|
0.36,
|
|
0.54,
|
|
0.2
|
|
],
|
|
"sane": true
|
|
},
|
|
{
|
|
"file": "WhiteTub_v2.glb",
|
|
"dims": [
|
|
0.36,
|
|
0.54,
|
|
0.2
|
|
],
|
|
"sane": true
|
|
},
|
|
{
|
|
"file": "WoodenBin_v2.glb",
|
|
"dims": [
|
|
0.35,
|
|
0.36,
|
|
0.31
|
|
],
|
|
"sane": true
|
|
}
|
|
]
|
|
} |