Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## 0.60.0-test3 — Roof bars and upper back-tower spots

- Adds eight individually addressable LED bars along the stage roof, evenly placed between the existing washes.
- Adds one spot above the beam row on each of the eight mirrored back towers.
- Carries forward test2's individual bar-cell dimmers and colours, plus the balanced show and local debug feedback.

## 0.60.0-test2 — Independently programmed LED bars

- Every batten has twelve independently set dimmer and colour cells, still rendered in one batch.
Expand Down
8 changes: 7 additions & 1 deletion docs/sv-recovery-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,12 @@ Lever per stap één onveranderlijke lokale kandidaat met een kleine, duidelijke
- De barpatronen omvatten aangehouden 50/50-vlakken, even/oneven cellen, midden, uiteinden en een langzaam verplaatsend venster. Afwisselende kleuren volgen het bestaande showpalet en monochrome scènes blijven monochroom.
- `tools/test_bar_pixels.gd` controleert het aantal cellen, patroonvormen, determinisme en de gebatchte renderstructuur.

## Uitgevoerd in kandidaat 0.60.0-test3

- Acht roof-bars vullen de gelijk verdeelde openingen op de tweede rooftruss, naast de roof spots en washes.
- Elke back tower heeft een vierde kop boven de bestaande drie beams, als spot voor een aanvullende rol.
- De show-tests controleren tellingen en spiegeling van beide uitbreidingen.

## Resterende uitvoering

Volgende stappen zijn de visuele beoordeling van pixelbars en towergeometrie, een roof-spotpassage die zonder Stage row en Hall beams leesbaar blijft, daarna pas nieuwe roof-bars en een extra spotrij op de back towers. Vervolgens volgen samenhang, comfortlogging, prestaties, scherm/zaal/camera, langere praktijkbeoordeling en lokale iteraties. De candidate status is geen artistieke goedkeuring.
Volgende stappen zijn de artistieke beoordeling van de uitgebreide rig en een roof-spotpassage die zonder Stage row en Hall beams leesbaar blijft. Vervolgens volgen samenhang, comfortlogging, prestaties, scherm/zaal/camera, langere praktijkbeoordeling en lokale iteraties. De candidate status is geen artistieke goedkeuring.
2 changes: 1 addition & 1 deletion project.godot
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ config_version=5
[application]

config/name="Stage Visualizer"
config/version="0.60.0-test2"
config/version="0.60.0-test3"
run/main_scene="res://main.tscn"
config/features=PackedStringArray("4.7", "Forward Plus")

Expand Down
5 changes: 5 additions & 0 deletions scripts/rig.gd
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ func build() -> void:
var z := Hall.BACK + 1.0
Kit.truss(chords, braces, Vector3(x, Hall.DECK, z), Vector3(x, 13.8, z), 0.3)
for j in 3: _add(BEAM, "back", Vector3(x, 6.5 + j * 3.0, z + 0.15), Vector3.BACK, -1, k / 7.0, j)
_add(SPOT, "back", Vector3(x, 13.0, z + 0.15), Vector3.BACK, -1, k / 7.0, 3)
for j in 2: _batten("back", Vector3(x, 8.0 + j * 3.0, z + 0.22), -1, Vector3.UP, Vector3.BACK, k / 7.0)

# roof: two trusses over the stage, spots, washes and blinders at the crowd
Expand All @@ -195,6 +196,10 @@ func build() -> void:
for k in 8:
var u := k / 7.0
_add(WASH, "roof", Vector3(-17.5 + u * 35.0, 11.55, rz - 5.0), Vector3.DOWN, -1, u, 1)
# Eight addressable bars fill the gaps between the rear roof-truss washes.
for k in 8:
var u := (k + 0.5) / 8.0
_batten("roof", Vector3(-17.5 + u * 35.0, 11.1, rz - 5.0), -1, Vector3.RIGHT, Vector3.DOWN, u)
for k in 8:
var x := -17.5 + k * 5.0
_blinder(Vector3(x, 11.4, rz + 0.35), Vector3(x * 1.3, 1.5, 6.0))
Expand Down
14 changes: 13 additions & 1 deletion tools/test_stage_detail.gd
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func _run() -> void:
var rig := Rig.new()
root.add_child(rig)
rig.build()
check(rig.fixtures.size() == 212, "The symmetric back towers add only their three planned heads")
check(rig.fixtures.size() == 220, "The rig adds one roof spot per symmetric back tower")
var tower_x := {}
for f in rig.fixtures:
if f.group == "back": tower_x[snappedf(f.mount.x, 0.01)] = true
Expand All @@ -27,6 +27,18 @@ func _run() -> void:
for i in range(ordered_towers.size()):
check(is_equal_approx(float(ordered_towers[i]), -float(ordered_towers[7 - i])), "Back towers must mirror around the screen centre")
if i > 0: check(is_equal_approx(float(ordered_towers[i]) - float(ordered_towers[i - 1]), 6.0), "Back towers must have equal 6 m spacing")
var upper_spots := rig.fixtures.filter(func(f): return f.group == "back" and f.kind == Rig.SPOT)
check(upper_spots.size() == 8, "Every back tower must carry one top-row spot")
for f in upper_spots:
check(is_equal_approx(f.mount.y, 13.0) and f.row == 3, "Top-row spots must sit above the beams and below the tower cap")
var roof_bars := rig.battens.filter(func(b): return b.group == "roof")
check(roof_bars.size() == 8, "The stage roof adds eight pixel bars between the washes")
var roof_x: Array = roof_bars.map(func(b): return b.mount.x)
roof_x.sort()
if roof_x.size() == 8:
for i in range(roof_x.size()):
check(is_equal_approx(float(roof_x[i]), -float(roof_x[7 - i])), "Roof bars must mirror around the screen centre")
if i > 0: check(is_equal_approx(float(roof_x[i]) - float(roof_x[i - 1]), 4.375), "Roof bars must keep equal spacing")
for label in ["DelayMounts", "DelaySafeties", "TowerFeet"]:
check_batch(rig, label)
var mounts := rig.get_node_or_null("DelayMounts") as MultiMeshInstance3D
Expand Down
Loading