The six additions use IDs 144-149, preserving all existing scene IDs and loaders. Load/reset follows the recording studio's paused-start contract. The food surface view changes appearance; shape changes still come from MPM/SPH, gravity, heat, collision and the user's drag tools.
| ID / scene | Camera center; zoom (px/world) | Initial temperature | Continuing heater | First take |
|---|---|---|---|---|
| 144 Food Studio | (0, -0.45); 220 |
Food 330 K; oil 320 K | Off | Hold the paused display: curved sausage, layered burger, open crumb loaf and oil well. Run for settling, then heat one item. |
| 145 Sausage Heat & Tear | (0, -0.12); 205 |
385 K | (0, 0.25), radius 0.62, 535 K |
Run to dry the notched middle; Spring Drag the right tip slowly right/down. The left eyelet loops around a visible skewer. |
| 146 Open Crumb Loaf | (0, -0.12); 205 |
355 K | (0, -0.46), radius 1.90, 505 K |
Watch shell and pore walls as the real drying and vent fields evolve. After heating, pull a rim to inspect the exposed interior. |
| 147 Cheese Pull & Press | (0, -0.12); 190 |
Cheese 450 K; press 300 K | Off | Run for the right press. Pull the left lower bulb down/right to stretch its neck while the eyelet rests on the peg. |
| 148 Burger Close-up | (0, -0.12); 220 |
360 K | (0, -0.65), radius 1.85, 515 K |
Watch cheese edges sag and the patty brown. Spring Drag the upper bun downward for manual compression. |
| 149 Oil Skillet | (0, -0.12); 205 |
320 K | Off | Record the three falling oil droplets, their impacts and the resting shallow pool. |
The camera values are suggested framing for a 1280 x 720 viewport. Scene 144 is
the clean paused hero arrangement; scene 145 is the focused tearing setup.
Heating is a controlled radius source where specified, including direct heating
of the material; these scenes are not measurements of pan-only heat conduction.
Scenes 144-148 use gravity -1.5 m/s² for both solvers, making the large 2D
specimens easier to film without immediate collapse under their own weight.
Scene 149 keeps normal -9.81 m/s² gravity for its droplet impacts.
Materials and appearance
- The sausage and burger patty use Maillard (32), authored as partly cooked,
cooled specimens: initial browning
0.18, dryness0.72, blistering0. These are explicit material histories, separate from their starting temperature. Heating continues to evolve their stored browning/drying state. The existing wet-viscosity branch collapses the large specimens in short takes; the dry-set state avoids that branch without a solver change. The legacy generic spawn fallback also starts Maillard's blister channel at one, so the new scene batches explicitly clear it instead of starting fully blistered and weakened. This set does not demonstrate raw-meat hydration. - Maillard has no tensile fracture law. Scene 145 therefore joins its two lobes with a notched Tear Skin (36) band. The band has vertical fibers and lower scene-local base stiffness, so a horizontal pull loads it across the fibers. Its existing heat/dry/weakening law supplies damage. The skewer is a rigid SDF circle inside an actual missing-particle eyelet, with no code-pinned particles.
- The bread uses Crumb Loaf (34), with five authored empty pores. It starts as one connected body. Pore walls and outside edges seed real initial shell depth. Scene 146 selects the existing Porous Growth v3 and Bake v2 laws in pure 2D, with both thickness modes off. This shows drying/porosity/vent evolution; the initial openings are not a claim of simulated fermentation.
- Burger buns use Crust Dough (23) and Steam Bun (27), with Bake Profiles v1 thermal behavior enabled in scenes 144 and 148. New food loaders spawn with the profile flag off to preserve their authored elastic bases, then enable it for the intended thermal evolution. Cheese Pull (29) supplies their cheese layer and both samples in scene 147. Warm cheese softens and can form stretched necks; cooling makes it firmer. It is a cohesive melt, not an anchored cloth.
- The cheese press is a real Thermo Metal (24) body with density scale 1.8 and an initial downward velocity of 0.45 m/s. Its subsequent trajectory is solved.
- Oil is native Light Oil SPH (material 52), authored at stiffness 7 and viscosity 0.16 per batch. Global SPH defaults remain untouched. It is a finite liquid-droplet composition with no steam or automatic boiling. Heating it does not establish a physical oil vapor or oil/water phase model.
All shaped MPM objects use the configured particle spacing. The curves and
rounded corners contain no overlapping duplicate particle blocks. The sausage
band uses the same lattice and outer distance as the adjoining meat, so its
material interface does not become a fake exposed shell. Shell seeds also
follow real holes and notches. Base stiffness changes are per-spawn and the
existing RecordingObjects guard restores the global spawn parameters.
The meat and lower bun/loaf base stiffness is 32,000; the upper bun is 28,000;
the cheese layers use 11,000 and pull/press samples 12,000; the tear band uses
12,000. Existing v3 stiffness multipliers still apply. These scene-specific
values keep the samples legible at this specimen scale without changing any
material catalog default or constitutive shader.
Recording controls and limits
Use the food view for the appearance take and Material history / Temperature
for the mechanism take. Pause before selecting a drag target; resume to apply
forces. Pull gradually with a brush smaller than the whole specimen. The
sausage's right end is near (1.35, -0.03) and the cheese bulb near
(-0.98, -0.59). A sufficiently large or fast pull may dislodge the eyelet,
separate fragments or flatten a sample; none of these outcomes is overridden.
Compare hot/cold behavior by resetting, disabling the continuing heater where present, and applying the existing cooling control before the pull or press. For the cheese press, move the weight aside while paused when filming only the pull. For the burger, use the board as the lower support and pull the top bun downward; there is no hidden presser.
These are 2D analogues using existing constitutive laws. There are no added muscle fibers, fat transport, fermentation chemistry, calibrated culinary temperatures, or hidden 3D connectivity. A damage value does not by itself guarantee an open geometric crack. The renderer must preserve real gaps and detached droplets; it must not animate deformation or fill missing pores.
Validation
The catalog and dispatch checks should cover all six names and IDs. Run the existing native scene smoke checker explicitly with the new IDs after building:
python tools/check_recording_scenes.py --scenes 144 145 146 147 148 149 --frames 180
Also capture paused frame 1 for the hero arrangement and interactive pulls for 145/147. The smoke check covers native loading and finite state; it does not verify a user-driven tear or establish material calibration. No existing test expectations need changing for these additive scenes.
Surface controls and reproducible captures
Use build-local/Release/Crucible2.5D.exe. The previous executable and pre-pass
shader/data bundle are retained outside this checkout in the AIO portfolio-work
checkpoint. The historical build target is still noita_gish.
Open Presets → Recording studio → Food beauty studio, or the matching Appearance section. Food skin selects the optional renderer. Use simulated cooking reads stored cure/drying state; disable it for the explicitly labeled Cooking appearance preview. Extra char appearance, Pore detail, Skin gloss, and Rounded depth change presentation only. Choose the original grid, dark studio, or warm studio backdrop. The original surface finishes and particle/temperature/history diagnostics remain selectable.
The original surface is captured on the first enabled food-render frame after reset. Enable this mode before deforming a sample if you want newly exposed edges distinguished from its original casing. Offscreen births use the existing material shell seed when available. Porosity detail and char are independent; one is not evidence of the other.
./build-local/Release/Crucible2.5D.exe --scene 144 --no-settings
./build-local/Release/Crucible2.5D.exe --scene 148 --frames 2 --hidden --no-ui --no-settings --width 1920 --height 1080 --capture burger.bmp
./build-local/Release/Crucible2.5D.exe --scene 145 --frames 300 --food-pull --hidden --no-ui --no-settings --capture pull.bmp
--food-pull drives the existing Spring Drag force along a repeatable target in
scene 145 or 147. It never writes particle positions. --food-cook 0.6,
--food-char 0.4, and --food-porosity 0.8 are appearance previews, not simulated
cooking interventions. --studio-backdrop 0|1|2 and --surface-finish food|original
allow matched image comparisons. Capture size is optional; default 1280×720.
Observed recording limits
The food board retains its composed solids after 180 running frames. At 480 frames, the heated burger keeps its layers while cheese spreads and the buns develop openings; mean patty browning rises from 0.18 to about 0.37.
The restrained sausage force pull stretches the body without separating the notched connector. A stronger 600-frame pull opens gaps near the grabbed end, where the interior shading becomes visible; this is not a calibrated fracture test. The cheese pull can open and slip from its peg by 300 frames, while its press sample spreads beneath the falling weight. Film a shorter take for the intact strand, or show the breakaway as an explicit limit.
The renderer regression passes 68 checks covering simulation-buffer immutability, GL state restoration, cooking/history changes, exposed edges, scene reset, appended particles, viewport resizing and offscreen births. Finite native runs of all six scenes and the force-pull probes reported no nonfinite particle state. These checks establish implementation behavior, not food calibration.