feat(hero): facade rework — inscription, medallions, motto band, banner lettering #39

Merged
zwitschi merged 93 commits from hero-facade-0.3.0 into main 2026-11-10 15:37:40 +01:00
78 changed files with 109 additions and 77 deletions
Showing only changes of commit 358673bcfc - Show all commits

No files matched your search

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -339,6 +339,26 @@ void AGigLineVehicle::Tick(float DeltaSeconds)
}
}
// Is the body actually dynamic? A kinematic body is teleported by whoever holds it and reports
// no velocity - exactly the profile measured - so this decides the next step.
{
static bool bDynamicsChecked = false;
if (!bDynamicsChecked && SettleElapsed > 0.2f)
{
bDynamicsChecked = true;
if (USkeletalMeshComponent* Body = GetMesh())
{
FBodyInstance* Instance = Body->GetBodyInstance();
UE_LOG(LogTemp, Warning,
TEXT("GigLine vehicle dynamic: simulate=%d instance=%s profile=%s"),
Body->IsSimulatingPhysics() ? 1 : 0,
Instance ? TEXT("yes") : TEXT("no"),
Body->GetCollisionProfileName().IsNone()
? TEXT("none") : *Body->GetCollisionProfileName().ToString());
}
}
}
// Velocity profile: an impulse shows as a spike at t=0, a force as steady growth.
{
static float NextSample = 0.0f;
+12
View File
@@ -50,6 +50,12 @@ So the wheel bones match, the terrain has no proxy lid, and stopping the mover d
2. **`UChaosWheeledVehicleMovementComponent::UpdateState` / `OnUpdateTransform`** writing the transform from a vehicle state that was never created (which is also why `CreateVehicle()` yields no wheels).
3. **The skeletal mesh asset itself** - `SK_Vehicle_Sedan` came from our own FBX pipeline; if its bone layout does not match what the wheel setups name, `CreateVehicle()` bails before creating wheels.
### Bisect plan for the next pass
1. Spawn the same pawn in `ReviewMap` (flat 160 m floor, no slices, no UCX ground) and repeat the profile. Flies there too -> the asset/component is at fault. Settles there -> something in `DemoMap` (the UCS slabs, the terrain, or the world settings) drives it.
2. In parallel, spawn a stock `AWheeledVehiclePawn` with `SK_Vehicle_Sedan` and default settings in the same spot: if the stock pawn settles, the difference is in `AGigLineVehicle`'s setup (mass override, stability control, our movement subclass).
3. Only after the bisect: fix, then confirm `Wheels.Num() == 4`.
### Tasks
- [ ] Give `SK_Vehicle_Sedan` a physics asset whose single chassis body matches the car's box and is positioned below the shell, then confirm the pawn settles on the road instead of launching.
@@ -60,6 +66,12 @@ So the wheel bones match, the terrain has no proxy lid, and stopping the mover d
Split out of `0.3.0` on 2026-11-09 on the owner's instruction: the three hero-facade staging shots (`review-hero-facade-front`, `review-hero-facade-oblique`, `review-hero-portals`) were rejected as "rework needed to match reference", and that is asset work rather than vehicle work.
### Bisect plan for the next pass
1. Spawn the same pawn in `ReviewMap` (flat 160 m floor, no slices, no UCX ground) and repeat the profile. Flies there too -> the asset/component is at fault. Settles there -> something in `DemoMap` (the UCS slabs, the terrain, or the world settings) drives it.
2. In parallel, spawn a stock `AWheeledVehiclePawn` with `SK_Vehicle_Sedan` and default settings in the same spot: if the stock pawn settles, the difference is in `AGigLineVehicle`'s setup (mass override, stability control, our movement subclass).
3. Only after the bisect: fix, then confirm `Wheels.Num() == 4`.
### Tasks
- [ ] Rebuild the El Capitan hero facade to match the reference photography: cornice depth, the banner proportions, window rhythm, and the three entry portals.