Fix support columns: cylinder axis transposition + floating ramp piers

Two structural bugs found by measuring built parts, not by eye.

1. PierColumn (pre-existing, all 80 instances). Enum.PartType.Cylinder
   puts the circular faces on the local X axis, so Size.X is the length
   ALONG the axis and Size.Y/Z are the diameter. The code passed
   Size = (8, colH, 8) and then rotated 90deg about Z -- building a disc
   8 studs long and colH wide. Measured: world vertical extent 8.0 studs
   for a column that should stand 35.4, leaving every viaduct pier
   floating with a 13.7-stud gap down to the ground. Only the Size
   components were transposed; the rotation was already right.
   After: extent 35.4, base Y=0.0.

2. PARampPillar. Two problems.
   a) Built as 6x6 square blocks. The underside footage (honmoku_jct
      sheet3 -- mislabeled, it is actually shot beneath Daikoku itself)
      shows every column carrying the ramp decks is a smooth cylindrical
      concrete pier. Now Cylinder, same axis convention as PierColumn.
   b) Height was always segMid.Y - (ringY - 1), cutting the column off
      at Y=45, the underside of the PA apron slab. Correct only while
      the ramp is over the slab; the measured helix climbs up to 1182
      studs beyond the slab edge, where nothing exists at Y=45. Base is
      now chosen per-pillar: apron level over the slab, ground (Y=-1)
      beyond it, matching the established viaduct Pillar convention.
      After: all bases at Y=-1, 0 pancakes, min height/width ratio 1.7.

Ramp geometry, chevron alignment and gore zebra all unchanged:
0 misaligned panels (worst 0.06/0.08 studs), 832 gore bars, merge
mouths 24.0/23.8 studs from the nearest bar.
This commit is contained in:
2026-08-03 06:33:59 -04:00
parent 6c753505f0
commit badba0f7a4
+38 -6
View File
@@ -654,16 +654,28 @@ local function buildRoad(map: Folder)
Material = Enum.Material.Concrete, Material = Enum.Material.Concrete,
}) })
cap.Parent = struct cap.Parent = struct
local colH = capY - 1.6
local col = part({ local col = part({
Name = "PierColumn", Name = "PierColumn",
Size = Vector3.new(8, capY - 1.6, 8), -- Enum.PartType.Cylinder puts the circular faces on the
CFrame = CFrame.new(mid.X, (capY - 1.6) / 2, mid.Z), -- LOCAL X axis: Size.X is the length ALONG the axis and
-- Size.Y/Z are the diameter.
--
-- BUG (found 2026-08-03 by measuring the built parts):
-- this passed Size = (8, colH, 8), i.e. 8 studs along the
-- axis by colH wide -- a disc, not a column. Measured on
-- all 80 instances: world vertical extent 8.0 studs for a
-- column that should stand 35.4, leaving each pier
-- floating with a 13.7-stud gap down to the ground.
-- The Z rotation below was already correct; only the Size
-- components were transposed.
Size = Vector3.new(colH, 8, 8),
Color = C_CONCRETE, Color = C_CONCRETE,
Material = Enum.Material.Concrete, Material = Enum.Material.Concrete,
Shape = Enum.PartType.Cylinder, Shape = Enum.PartType.Cylinder,
}) })
-- Cylinder's axis is X, so stand it upright. -- Cylinder's axis is X, so stand it upright.
col.CFrame = CFrame.new(mid.X, (capY - 1.6) / 2, mid.Z) * CFrame.Angles(0, 0, math.rad(90)) col.CFrame = CFrame.new(mid.X, colH / 2, mid.Z) * CFrame.Angles(0, 0, math.rad(90))
col.Parent = struct col.Parent = struct
end end
-- Elevated viaduct: support pillars down to street level -- Elevated viaduct: support pillars down to street level
@@ -1469,14 +1481,34 @@ local function buildPA(map: Folder)
-- Support pillar down to the apron under the raised part of the -- Support pillar down to the apron under the raised part of the
-- ramp, matching the reference photos' elevated structure. -- ramp, matching the reference photos' elevated structure.
local h = segMid.Y - (ringY - 1) --
-- Round, not square (corrected 2026-08-03 against the underside
-- footage in honmoku_jct_sheet3, which is actually shot beneath
-- Daikoku itself): every column carrying the ramp decks there is
-- a smooth cylindrical concrete pier. These were 6x6 boxes.
--
-- The base has to be chosen per-pillar. The old code always cut
-- the column off at `ringY - 1` (Y=45, the underside of the PA
-- apron slab). That is right only while the ramp is still over
-- the slab. The measured helix climbs up to 1182 studs BEYOND
-- the slab edge, and out there nothing exists at Y=45 -- no
-- terrain, no baseplate -- so all 55 columns ended in mid-air.
-- Beyond the slab, run them to ground like the viaduct piers do.
local overApron = math.abs(segMid.X - c.X) <= APRON and math.abs(segMid.Z - c.Z) <= APRON
local baseY = overApron and (ringY - 1) or -1
local h = segMid.Y - baseY
if h > 10 and s % 2 == 0 then if h > 10 and s % 2 == 0 then
local pil = part({ local pil = part({
Name = "PARampPillar", Name = "PARampPillar",
Size = Vector3.new(6, h, 6), -- Cylinder axis is local X, so Size.X is the height and
CFrame = CFrame.new(segMid.X, segMid.Y - h / 2, segMid.Z), -- Size.Y/Z the diameter; the Z rotation stands it upright.
-- (Same transposition that had all 80 viaduct PierColumns
-- built as 8-stud discs -- see the PierColumn note above.)
Size = Vector3.new(h, 6, 6),
CFrame = CFrame.new(segMid.X, segMid.Y - h / 2, segMid.Z) * CFrame.Angles(0, 0, math.rad(90)),
Color = C_CONCRETE, Color = C_CONCRETE,
Material = Enum.Material.Concrete, Material = Enum.Material.Concrete,
Shape = Enum.PartType.Cylinder,
}) })
pil.Parent = pa pil.Parent = pa
end end