diff --git a/examples/procedural-road/main.nut b/examples/procedural-road/main.nut index af9e7127..f10c7987 100644 --- a/examples/procedural-road/main.nut +++ b/examples/procedural-road/main.nut @@ -58,9 +58,9 @@ function roadCameraForScene(name) { roadCamera.setEye(0.0, 28.0, 18.0); roadCamera.setTarget(0.0, 0.3, 0.0); } else { - // interchange — elevated three-quarter overview - roadCamera.setEye(36.0, 28.0, 32.0); - roadCamera.setTarget(0.0, 3.0, 0.0); + // interchange — overview showing ground cross, ring, and ramps + roadCamera.setEye(42.0, 34.0, 18.0); + roadCamera.setTarget(0.0, 4.0, 0.0); } } @@ -78,7 +78,7 @@ function roadBuildScene(name) { params.setInt("lanes", 2); local segs = 28; if (name == "curve" || name == "bridge") segs = 48; - if (name == "interchange") segs = 36; + if (name == "interchange") segs = 20; params.setInt("pathSegments", segs); params.setBool("piers", true); params.setBool("markings", true); diff --git a/src/modules/procgen/road/RoadNetwork.cpp b/src/modules/procgen/road/RoadNetwork.cpp index 46122178..87b747fb 100644 --- a/src/modules/procgen/road/RoadNetwork.cpp +++ b/src/modules/procgen/road/RoadNetwork.cpp @@ -304,7 +304,7 @@ Result RoadNetwork::makeInterchange(float span, float bridgeHeight, const float jr = asphaltHalf + cornerR; RoadStyle bridge = bridgeStyle(); - bridge.pierSpacing = 9.0f; + bridge.pierSpacing = 14.0f; bridge.sidewalkWidth = 1.0f; bridge.curbWidth = 0.38f; bridge.curbHeight = 0.50f; @@ -317,11 +317,11 @@ Result RoadNetwork::makeInterchange(float span, float bridgeHeight, // Elevated ring corners + hub (overpass). const float r = half * 0.58f; - auto nElev = network.addNode(0.f, h, 0.f, 5.5f); - auto nNE = network.addNode(r, h, -r, 3.5f); - auto nSE = network.addNode(r, h, r, 3.5f); - auto nSW = network.addNode(-r, h, r, 3.5f); - auto nNW = network.addNode(-r, h, -r, 3.5f); + auto nElev = network.addNode(0.f, h, 0.f, 4.0f); + auto nNE = network.addNode(r, h, -r, 2.5f); + auto nSE = network.addNode(r, h, r, 2.5f); + auto nSW = network.addNode(-r, h, r, 2.5f); + auto nNW = network.addNode(-r, h, -r, 2.5f); for (auto* res : {&nGround, &nN, &nS, &nW, &nE, &nElev, &nNE, &nSE, &nSW, &nNW}) { if (!res->ok()) return Result::failure(res->status()); }