Open the recording studio
The application is now titled Crucible; its subtitle is a 2D material laboratory. The folder/project ID remains Physics_2D so existing paths keep working.
Use the newly built build-local/Release/Crucible2.5D.exe. In the top bar, open Presets → Recording studio, choose a take and click Load and run to start immediately, or Load paused to arrange the shot first. The panel shows the loaded scene, its PAUSED / RUNNING state and a Run take / Pause take button. The global Run (P) / Pause (P) control is first in the toolbar so it remains visible in narrower windows. The larger recording preset panel includes Original surface, optional Surface finishes, Particle diagnostic, Material beauty, Temperature, Damage/crust and Material history views. P runs/pauses, R resets recording scenes to paused, U hides the interface, middle-drag pans, and the wheel zooms. SPACE opens Create and right-click places the selected material.
The two empty stages preselect Heavy Ferrofluid or Culture Tissue respectively. They remain empty until you place something. Appearance → Thermal capture & comparison contains the new display controls and optional model comparisons.
From the source root, this opens the kiln gallery without replacing saved window settings:
./build-local/Release/Crucible2.5D.exe --scene 121 --no-settings
python tools/build_local.py --configure --target noita_gish contact_reaction_test thermal_comparison_test creates an isolated local build from the dependencies already cached in this checkout. The historical CMake target name remains noita_gish; its output is Crucible2.5D.exe. Do not reuse the copied build/ CMake cache, which may still refer to the original development folder.
For repeatable framebuffer captures and native checks:
python tools/check_recording_scenes.py --frames 240
python tools/check_recording_controls.py
./build-local/Release/Crucible2.5D.exe --scene 128 --frames 480 --run --hidden --no-ui --no-settings --capture glass.bmp
--seed-material explicitly places the starter material for scenes 120/123. --thermal-view selects the temperature diagnostic; --fixed-heat selects the symmetric diffusion comparison. --legacy-heater restores the old heater/gizmo link, and --heater-gizmo turns that drawing on. All hidden runs require a finite --frames limit. Captures are lossless BMP files; the native window itself works with OBS as before.
Compositions
Twenty-three additive presets start at scene ID 120. The original 120 scenes and their IDs are unchanged. Filter the Scene Browser to recording, load a composition, arrange the camera while paused, and only then run. The selected row contains a short shot guide. Magnetic Tank and Living Pedestal are intentionally empty so the recording can begin with placing the material.
These scenes stage existing models. They are not new claims of physical accuracy. Use a clean natural-material view for the main take and a second temperature, pressure, field or fiber view to explain what happened. Keep failed takes: a useful comparison can show a limit without presenting it as a validated physical result.
| ID | Preset | First take | Useful comparison |
|---|---|---|---|
| 120 | Magnetic Tank | Drop a radius 0.35–0.5 Heavy Ferrofluid blob near (0,-0.35), let it settle, then hold M above it. |
Reload with ordinary or Sticky Ferrofluid. Sweep the same cursor path. A broad empty basin makes their differences legible. |
| 121 | Crust & Kiln Gallery | Unpause three cold specimens over the 820 K source. Record the boule swelling, tile firing and hollow vessel response. | Temperature view reveals shell/core lag. Current crust rules may leave a connected skin rather than separated cracks; show that result honestly. |
| 122 | Rocket & Chamber Range | From the left launch mark, aim a Rocket at the chamber door around y=0.2. Three equal ceramic witnesses sit progressively deeper inside. |
Cold stoneware supplies the existing airtight shell tag; use air resolution 512+. Remove a roof/wall section for a cavity-connectivity comparison. Rendered rings and Sedov fronts still use SDF obstruction, so this is not a claim of complete MPM shock shielding. |
| 123 | Living Pedestal | Drop a radius 0.25 Culture Tissue seed at (0,0.5) in the shallow raised dish, then unpause. |
Show its field overlay, then one burn/reclaim take with live material left nearby. Other legacy living backends remain separate experiments rather than interchangeable versions of one model. |
| 124 | Three Grains | Unpause the three equal loading beads above warm orthotropic strips. Only the fiber directions differ: along, across, diagonal. | Reload and use Spring Drag on one strip. Compare existing fracture modes at the same geometry, timestep and load. A visible tear is not a fracture-toughness measurement. |
| 125 | Layered Press | Unpause the press weight onto the bun/patty/stretch-layer stack. | Move the weight aside before a second take, then heat the stack from below. These are material analogues, not a cooking simulator. |
| 126 | Reaction Row | Unpause four identical square specimens above compact equal burning pads: wax, crust, glaze, timber. | Record natural colours, then temperature and damage/field views. Equal geometry/start temperature does not imply equal heat capacity or equal absorbed energy. |
| 127 | Metal Heat Cycle | Left strip starts at 300 K, right at 700 K. Record the warm strip cooling on its saddles, then heat one end. | Cool and reheat. The implemented hardening history is one-way on cooling; call this heat-treatment memory, not a reversible annealing model. |
| 128 | Glass Drape | Equal glass strips at 300 K and 1100 K fall onto identical rounded formers. | Heat the initially cold copy, then allow cooling. The hot copy starts above the implemented 720–980 K softening window; it still retains a stiffness floor. This is not a measured viscosity/temperature curve. |
| 129 | Fuel & Cauldron | Unpause the compact MPM fuel bed beneath the thin rigid pot. Watch the initially cold contents with a fixed temperature scale. | The compact fixture demonstrates gentle indirect warming with no radius heater. Compare with the retained thick-pot failure; this is not a melting or calibrated heat-transfer demonstration. |
The additional Liquid Cascade (130), Ribbon Canopy (131) and Wax Drop Bowl (132) compositions have their own shot guides.
Fuel & Water (133) replaces the cauldron's two MPM ingredients with a shallow 300 K pool of ordinary SPH Water. The fuel and conductive pot provide the heat; there is no radius heater. Both cauldron scenes enable Ordinary water can boil under Recording studio. Turning it off restores ordinary Water's previous calm response. Read what the water model actually does before presenting this as a physical boiling simulation.
Optional surface finishes
The latest nine material-contrast scenes (134–142) add thin heating witnesses, scored crust bridges, metal bending, open kiln shapes, matched impacts, notched and hanging grain tests, and two layered burger takes.
Under Presets → Recording studio → Surface finishes, try Satin first for a continuous soft surface. Liquid gives a wetter highlight, Porcelain a brighter polished finish, and Soft wax warm translucency. Original clay restores the established shading. These presets change both SPH and MPM drawing; they do not change the physical material or motion. The same controls are under Appearance → Surface finish presets.
Surface smoothing blends the lighting towards a broader density field. Smoothing radius controls the size of the lighting detail; Surface relief controls how strongly the surface appears rounded. Coverage and material colors still come from the original field, preserving droplets, gaps and boundaries. Zero smoothing bypasses the new shading; the original look remains the default. The patterned Field styles keep their existing behavior.
This removes an artificial source of lumps: the former normal calculation gave even a tiny particle-density ripple a full-strength tilt. The optional normals retain gradient magnitude and use two half-resolution Gaussian passes. There is no added GPU readback and no blur pass when smoothing is off. This is a display treatment, not a new liquid solver or a geometric surface reconstruction; coarse particle silhouettes can still be visible in sparse regions.
For reproducible captures, add --surface-finish satin (or original, liquid,
porcelain, wax) to the existing capture command.
Framing and presentation
All compositions except Rocket & Chamber Range fit the usual world. The range uses the established XL domain and approximately 92 pixels per world unit. Leave the launch lane empty. The other recording scenes start with a camera centered at (0,-0.25) and zoom 160, with the original surface presentation (Clay for MPM; Liquid for the new SPH cascade). Use Particle diagnostic for the underlying samples. Press U for a clean take without the interface or tool HUD. There is intentional empty space above for motion and plumes.
Start with 5–10 seconds of the untouched specimen, then one clear intervention. Keep the camera still during the reaction. Reset instead of stacking multiple unrelated effects into one take. A second close-up or field-overlay take can explain the same event without covering the first take in controls.
Prefer display exposure/temperature colouring when the air turns uniformly gold. Those controls change appearance. Increasing air cooling changes the simulated experiment and should be identified in the caption or comparison. Do not label either as an automatically more accurate result.
For magnetic and living scenes, the initial blank frame is useful: place one material and let that action introduce the experiment. There is no hidden seed or pre-triggered magnetic source in either composition.
A heater can stay on while its gizmo is hidden
Under Appearance → Thermal capture & comparison, Independent heater control (comparison) separates Scene heater enabled from Draw heater gizmos. It is enabled for the new recording scenes. This matters for a clean kiln recording: hiding the explanatory drawing must not turn off the experiment. Switching the comparison off restores the original drawing/activation link for an explicit A/B.
The historical connection was a real source of misleading captures: a configured temperature alone did not prove the source was active. Keep the activation state with the recording, and inspect the temperature readout before judging a thermal material's response.
Runtime activation contract
The scene loaders own geometry, particles and explicit heat-source parameters. Application integration owns pause, camera/domain and the field modules:
- Every
is_recording_scene(id)scene starts paused on a normal Scene Browser load or reset. Recording studio's Load and run explicitly starts it; Load paused retains the staging state. An explicit command-line run request can also override the initial pause for repeatable captures. A still scene immediately after a normal load is intentional; press P or Run take. - The independent heater control is enabled in recording scenes; scene 121 has its configured radius source active. The other new presets explicitly have source radius zero unless the user adds a source.
- 120: magnetic field enabled; existing field tuning. The Create choice should be
MPMMaterial::HEAVY_FERRO_FLUID(67), catalog nameHeavy Ferrofluid [new][experimental]. No particle is automatically created. - 122: use the XL SDF bounds
(-6.2,-2.2)to(6.2,4.4), grid bounds(-6.4,-2.5)to(6.4,4.6), camera(0,0.55), zoom92. Use the application's existing rocket and airtight/blast path. No automatic rocket launch. - 123: current Living Culture backend enabled, Grow enabled,
CULTURE_TISSUE(95), and the same-1.5gravity used by the existing Culture showcase. No particle is automatically created. The catalog name isCulture Tissue [new]; tissue starts at 305 K when placed from that preset. - 126: enable the existing structural fire damage option for the timber witness. Oxygen coupling on both air and MPM sides is a suitable explicit recording configuration.
- 129: air and MPM oxygen coupling is suitable. Source radius remains zero; the fuel is the heat source. The compact fixture explicitly uses pot segment radius
0.06, fuel top-0.90(bottom-1.36), air cooling0.15, solid thermal capacity1, diffusivity0.012and contact rate0.03. These are scene-specific experimental settings; old scenes retain their defaults. - Other model switches retain the normal existing backend defaults. In particular, these presets do not silently select a new fracture, bake, magnetic or thermal solver.
Recording presets now also retain the familiar fire display by default. Material
beauty restores it after Temperature. Heat-triggered blast visuals are an
explicit experimental option, since ordinary heating can fool that detector;
projectile rupture effects remain independent. See regression_review_20260920.md.
All new helpers restore spawn-time global Young's modulus, Poisson ratio and fiber strength after authoring the batches. Material bake profiles may intentionally supply their own per-material base values when the existing Bake Profiles option is enabled. The point-sampled hollow vessel and rounded bun seed their shell from their actual exposed shape, including the cavity, rather than giving every point a uniform shell/core flag.
Interpretation limits
The suite prioritizes legibility and repeatability. It is not a promise that every staged effect will be spectacular under every solver combination. The current thermal crust laws mix temperature-dependent stiffness, prescribed growth/shrinkage, shell seeds, accumulated damage and residual cohesion. That can produce attractive shell/core contrasts while retaining visible bridges across a nominal crack. The new hollow vessel is an extra diagnostic for that behavior.
Likewise, current metal hardening history, living growth and fire/explosion phenomenology have different levels of physical grounding. Keep their settings and names explicit. “The same framework hosts several models with different assumptions” is a stronger and more accurate story than “every material simulates its real counterpart.”
Validation record
Source construction is checked against the actual material enum, catalog and existing spawn APIs. Runtime captures and model audit results are recorded in the continuation handoff for this pass. A composition's presence here does not by itself establish that the desired dynamic outcome has been observed.
The first 240-frame run of each of the ten scenes completed without reported nonfinite particle values. That establishes a short stability check, not the success of every planned shot. Scene 121 exposed the hidden-heater issue described above: with independent activation enabled, its 8,483 MPM particles reached 297.92–631.97 K after 240 frames, compared with 297.75–299.83 K in the legacy hidden-gizmo run.
In scene 128, a 480-frame capture with the right specimen starting at 1100 K shows visible softening and dripping, while the cold strip slides as an intact body. The first staging attempt at 650 K did not cross the model's 720–980 K softening interval and showed no such contrast. This verifies the intended comparison within this stylized glass model; it does not validate a physical melt viscosity. Keep the same fixed temperature-display range across both specimens and comparison takes.
The first scene 129 fixture failed its indirect-heating shot. After 2,400 frames (20 simulated seconds), fuel mean was 818.39 K, while wax and stretch means were 291.24 K and 292.21 K, below their initial 300 K. The retained control-validation/cauldron-2400.log records this finite but unsuccessful result.
The compact retune above produced gentle indirect warming, with no radius heater: after 2,400 frames, fuel mean was 816.29 K, wax 317.58 K, and stretch 318.37 K. Air probes below the vessel, at its wall and above it read 574.66 K, 484.12 K and 357.73 K. All 2,607 particles remained finite. Evidence: control-validation/cauldron-compact-2400.log. This supports a staged warming example; it does not establish melting, a calibrated thermal model or a general repair to particle/air transfer. Keep both fixtures' outcomes in the model discussion.