# Rover Foundry: the complete recipe

A Scenario concept becomes an editable nine-system rover: eight mechanical
categories with three choices each, six finishes with three materials per finish,
seven surrounding worlds, and user-controlled music and equipment sound.

This recipe documents the actual production sequence. Generation is not
necessarily deterministic, even when the recorded parameters are reused.

## Keep the working files

- **Complete kit:** `rover-foundry-complete-kit.zip` contains the current packed
  Blender source, neutral modular GLB, all 18 optimized texture maps, seven selected
  panoramas, eight prepared audio files, metadata, exact requests, this recipe and
  the illustrated PDF. It contains ready-to-use media, without duplicate archives.
- **3D models and Blender:** `rover-foundry-asset-pack.zip` contains the original
  concept, current native/GLB, material manifest and standalone exporter.
- **Textures:** `rover-foundry-textures.zip` contains all 18 original PNGs,
  optimized WebPs and the packed Blender material library.
- **Worlds:** `rover-foundry-worlds.zip` contains seven original GPT panoramas,
  chosen runtime derivatives, thumbnails, provenance and exact requests.
- **Audio:** `rover-foundry-audio.zip` contains original and prepared MP3 files,
  provenance and exact requests.
- **Exact prompts:** `rover-foundry-prompts.json` retains 40 completed generation
  and review requests. One Europa upscale and two ElevenLabs music takes are
  marked as unselected iterations.

These names are relative to the experiment's
[download directory](https://www.scenario.com/experiments/rover-foundry/).
Use **Download > Current build** in the viewer for a GLB with only your selected
parts and all three selected finish maps. The direct `.blend` and complete kit
contain every equipment option, rather than a single browser configuration.

## 1. Generate a clear reference

Model: `model_openai-gpt-image-2-5-sunburst`, GPT Image 2.5 Sunburst.
The retained `concept` request uses 1536 x 1024. Its exact prompt describes a
complete six-wheel military lunar rover, rounded transparent two-seat cockpit,
ivory panels, graphite frame and restrained amber accents. Functional modules
and mounting positions give later modeling a consistent reference.

Review silhouette, wheel count, cockpit, cargo deck and complete framing before
using the output as the reconstruction reference.

## 2. Reconstruct named parts

Model: `model_scenario-gpt6-astra-3d`, GPT-6 Astra 3D.
The `reconstruction` request references the generated concept. Scenario Blender
Studio 0.1.6 drafted, estimated and submitted the job; an adapter confined to the
owned Blender session routed its installed handlers through Scenario MCP. The
completed output was imported with the installed plugin.

The original generated output reports 237,732 faces, 303,172 vertices and
17 materials; the Blender import inventory contains 1,462 meshes. These are
source measurements, not counts for the current assembled kit. The original raw
binaries are preserved in local production history, outside the current downloads.

## 3. Author equipment and correct the fit

Local Blender work assembles eight categories: wheels, armor, turret, cargo,
communications, sensors, power and utility. Each has three options. Generated
geometry supplies seven non-armor base choices; the fourteen alternatives and
three armor kits contain locally authored geometry.

Inspection led to wider wheel track, revised axle spacing, smaller tires,
ground-contact corrections and clearer equipment mounts. The final simplification
physically removes all coil springs and both alternative suspension groups.
Six plain support corners remain under `base/wheel_supports`.

The current native has 269 meshes and 18 independent wheel assemblies. Each wheel
has an axle-centered pivot. Native and selected-GLB checks rotate all 18 wheels
without moving siblings. The removal operation discarded 108 meshes while
preserving geometry, transforms, UVs and materials of every retained mesh.

## 4. Generate three materials for each finish

Model: `model_scenario-texture`, the GPT-based Scenario Texture model.
All 18 requests use 1024 x 1024, high quality, seam erasure, 128-pixel overlap and
64-pixel feathering. Exact prompts and parameters are in the `paint-*` records.

| Finish               | Primary            | Secondary           | Accent           |
| -------------------- | ------------------ | ------------------- | ---------------- |
| Lunar ceramic        | Ivory ceramic      | Blue titanium       | Amber ceramic    |
| Martian ochre        | Ochre              | Oxide composite     | Verdigris alloy  |
| Polar expedition     | Polar pattern      | Midnight polymer    | Signal coral     |
| Deep-space carbon    | Carbon             | Gunmetal titanium   | Burnished copper |
| Verdant digital camo | Digital camouflage | Forest composite    | Sand ceramic     |
| Rescue vermilion     | Vermilion          | Ivory rescue enamel | Graphite fiber   |

Inspect the flat images and repeated tiles. Apply actual generated basecolor
images through Scenario Blender Studio, then set roughness and metalness locally.
The manifest records those scalar choices; they are not generated texture maps.
Primary covers painted body/equipment, secondary covers selected housings, and
accent covers handles and trim. Tires, glass, optics and upholstery keep their
functional shaders. The packed native includes all 18 recipes and paint UVs.

## 5. Generate and inspect surrounding worlds

Model: `model_scenario-skybox-gpt` for all seven original 3072 x 1536 panoramas:
Lunar, Mars, Orbital workshop, Europa icefield, Elysian valley, Obsidian frontier
and Titan dunes. Prompts keep the near foreground clear and landmarks farther away.

Inspect each image on a sphere, including its horizontal wrap and poles. Titan
uses `model_sc-upscale-flux-skybox` at 2x, then local proportional reduction to
3072 x 1536. An Europa upscale retained a visible join, so the selected Europa
uses `model_scenario-skybox-flux` with its GPT reference, strength 0.25 and geometry
enforcement 75. Its native 1536 x 768 output is retained without upscaling.
All three refinement requests remain in the prompt record, including the rejected
Europa iteration. The 6144-pixel refinement originals remain in the private source
project and local production files; the world archive includes original GPT maps
and selected runtime derivatives.

Local preparation makes WebPs and small thumbnails. In the viewer, a ground-aware
projection, shadow receiver and authored lights place the rover in the panorama.
These are surrounding image environments, not navigable reconstructed terrain.
Maps load on demand; the cache holds at most three on desktop or two on mobile.

## 6. Generate a choice of soundtracks

All tracks were generated through Scenario MCP in the same source project.
The original Orbital drift MP3 is preserved byte-for-byte. Ion drive is selected
by default, with playback off until the visitor enables sound.

| Track            | Model                     | Prompted direction                   |
| ---------------- | ------------------------- | ------------------------------------ |
| Orbital drift    | ElevenLabs Music 2.5      | Original ambient pads and slow pulse |
| Ion drive        | ElevenLabs Music 2.5      | Exploration electro, 110 BPM         |
| Neon convoy      | MiniMax Music 3.0         | Synthwave, 118 BPM                   |
| Dust runner      | ACE-Step 1.5 Quality      | Light breakbeat, 126 BPM             |
| Assembly line    | ElevenLabs Music 2.5      | Mechanical groove, 104 BPM           |
| Beyond the ridge | ElevenLabs Music 2.5      | Cinematic percussion, 112 BPM        |
| Hangar rhythm    | Sonilo V1.1 Text to Music | Orbital workshop groove, 116 BPM     |

Model IDs are `model_elevenlabs-music-v2-5`, `model_minimax-music-3-0`,
`model_ace-step-1-5-quality-text-to-music` and
`model_sonilo-v1-1-text-to-music`. The BPM values above are prompt requests, not
measured output tempos. Five ElevenLabs requests were completed first. MiniMax
and ACE-Step then provided the selected Neon convoy and Dust runner alternatives;
the two unused ElevenLabs originals remain in the audio category archive.
Sonilo supplies the additional seventh selectable track.

Exact requests record each model's supported parameters. MiniMax has no duration
parameter in its live schema; its original output is longer than the requested
one-minute structure. Local preparation chooses a shorter active passage. The
other new requests use 60-second duration parameters. Trim ranges and resulting
loop durations are recorded in `mission-media.json`; the full originals remain
available. Active passages are joined with circular crossfades and normalized to
-20 LUFS, then encoded as 48 kHz stereo MP3s. Tempo-guided crossfade lengths are
local editing choices, not a guarantee of generated bar alignment.

The original 48-second ambience remains its existing 45.95-second loop. The
0.6-second equipment latch uses `model_elevenlabs-sound-effects-v2` and is also
unchanged. The music-note control selects a track without enabling muted audio.
The speaker enables playback; equipment changes trigger the latch. Switching
tracks crossfades briefly. Mute, hidden pages and disposal suspend or stop audio;
superseded loads are cancelled. The decoded cache holds at most three music
tracks plus the equipment sound. Tests cover actual decoding, playback and
lifecycle; they do not substitute for subjective listening approval.

## 7. Open, inspect and re-export

Open `Blender/Rover Foundry Modular Kit.blend` in Blender 5.2.1 or later.
The default Pathfinder is visible. Use the category collections and option roots
0, 1 and 2 to inspect other equipment. Make a copy before authoring changes.

From the extracted `Rover Foundry` folder, this standalone command re-exports all
24 choices, the base and fixed supports without credentials or another generation:

```sh
blender --background --python Scripts/export_current_kit.py -- \
  --native "Blender/Rover Foundry Modular Kit.blend" \
  --output "website/workdir/rover-foundry/assets/rover.glb"
```

The native is left unchanged. Existing exports are preserved in a sibling versions
folder. Generated paint maps are disconnected only in the in-memory neutral GLB
export because the configurator applies its selected three-material recipe later.
For a portable textured selection, use the viewer's **Download > Current build**.

## 8. Reuse the prompts in your own Scenario project

The recorded scope is team `M3XwRy9nTzOneywRfGejig`, project
`proj_imq14Hbsi7ZQpd7SHpezr2KP`. Its original assets are private. Source-job links
require access; the local files in these downloads do not.

Copy a record's exact `request`, change team/project scope to your own workspace,
and replace reference asset IDs with assets uploaded there. Discover the current
model and read its schema before submitting. Quote the exact request with a dry
run, submit once, then wait on its job ID. Keep the returned job and output IDs
with your copy of the request. Re-running can produce a different result.

- [Create with Scenario](https://app.scenario.com/login?referral=experiments-rover-foundry&utm_source=scenario.com&utm_medium=experiment&utm_campaign=rover-foundry&utm_content=making-of-recipe)
- [Scenario MCP](https://mcp.scenario.com/?referral=experiments-rover-foundry&utm_source=scenario.com&utm_medium=experiment&utm_campaign=rover-foundry&utm_content=scenario-mcp)
- [Scenario skills](https://github.com/scenario-labs/skills?referral=experiments-rover-foundry&utm_source=scenario.com&utm_medium=experiment&utm_campaign=rover-foundry&utm_content=making-of-recipe)
- [Open Rover Foundry](https://www.scenario.com/experiments/rover-foundry/)
