diff --git a/public/assets/models/chicken_wing.glb b/public/assets/models/chicken_wing.glb deleted file mode 100644 index 373dd67..0000000 Binary files a/public/assets/models/chicken_wing.glb and /dev/null differ diff --git a/public/assets/models/chip_golden.glb b/public/assets/models/chip_golden.glb deleted file mode 100644 index fed981c..0000000 Binary files a/public/assets/models/chip_golden.glb and /dev/null differ diff --git a/public/assets/models/chip_raw.glb b/public/assets/models/chip_raw.glb deleted file mode 100644 index 245865a..0000000 Binary files a/public/assets/models/chip_raw.glb and /dev/null differ diff --git a/public/assets/models/egg_carton.glb b/public/assets/models/egg_carton.glb deleted file mode 100644 index b92c2b5..0000000 Binary files a/public/assets/models/egg_carton.glb and /dev/null differ diff --git a/public/assets/models/egg_carton_empty.glb b/public/assets/models/egg_carton_empty.glb new file mode 100644 index 0000000..73190b7 Binary files /dev/null and b/public/assets/models/egg_carton_empty.glb differ diff --git a/public/assets/models/wing_cooked.glb b/public/assets/models/wing_cooked.glb deleted file mode 100644 index f22eb99..0000000 Binary files a/public/assets/models/wing_cooked.glb and /dev/null differ diff --git a/public/assets/models/wire_basket.glb b/public/assets/models/wire_basket.glb deleted file mode 100644 index f14a3ae..0000000 Binary files a/public/assets/models/wire_basket.glb and /dev/null differ diff --git a/scripts/gen-assets.sh b/scripts/gen-assets.sh index 0e7119a..d46b3f2 100755 --- a/scripts/gen-assets.sh +++ b/scripts/gen-assets.sh @@ -196,17 +196,23 @@ do_prep2d() { do_stations() { # the air fryer bench gen_3d air_fryer 241 "a chunky black modern air fryer appliance with a pull out drawer basket and a round dial on top, matte plastic body" - gen_3d wire_basket 243 "a square wire mesh air fryer basket tray with a crumb rack, empty, seen at an angle" - gen_3d chicken_wing 245 "a single raw chicken wing piece, pale pink skin, plump, on nothing" - gen_3d wing_cooked 247 "a single golden crispy fried chicken wing, glistening browned skin" + # REJECTED (the procedural rack reads better from the top-down camera and never occludes the wings): + # gen_3d wire_basket 243 "a square wire mesh air fryer basket tray with a crumb rack, empty, seen at an angle" + # REJECTED (per-piece food stays procedural — its COLOUR is the gameplay read): + # gen_3d chicken_wing 245 "a single raw chicken wing piece, pale pink skin, plump, on nothing" + # REJECTED (same: browning is a live tint, not a second mesh): + # gen_3d wing_cooked 247 "a single golden crispy fried chicken wing, glistening browned skin" # the deep fryer bench gen_3d fryer_pot 249 "a deep stainless steel stockpot of golden cooking oil, tall straight sides, no handle visible, seen from a low angle" gen_3d fryer_basket 251 "a round wire mesh deep fryer basket with a long metal hooked handle, empty" gen_3d drain_rack 253 "a small rectangular wire cooling rack on short legs over a metal tray, empty" - gen_3d chip_raw 255 "a single thick cut raw potato chip fry baton, pale starchy white" - gen_3d chip_golden 257 "a single thick cut golden fried potato chip, crisp browned edges" + # REJECTED (per-piece food stays procedural — raw-to-golden must tint per frame): + # gen_3d chip_raw 255 "a single thick cut raw potato chip fry baton, pale starchy white" + # REJECTED (same: the gold IS the judgement): + # gen_3d chip_golden 257 "a single thick cut golden fried potato chip, crisp browned edges" # the egg bench - gen_3d egg_carton 259 "an open cardboard egg carton holding six brown eggs, lid folded back" + # REJECTED (ships with six eggs baked in; that bench is about which eggs are YOURS): + # gen_3d egg_carton 259 "an open cardboard egg carton holding six brown eggs, lid folded back" gen_3d egg_carton_empty 260 "an open EMPTY cardboard egg carton with six empty moulded hollows, lid folded back, no eggs in it at all" gen_3d mixing_bowl 261 "a wide shallow white ceramic mixing bowl, empty, seen at a three quarter angle" gen_3d tall_glass 263 "a plain tall clear drinking glass of water, empty of anything else" diff --git a/src/scenes/eggbench.ts b/src/scenes/eggbench.ts index 4055c64..a336f38 100644 --- a/src/scenes/eggbench.ts +++ b/src/scenes/eggbench.ts @@ -15,6 +15,7 @@ import { } from '../sim/eggs'; import { el, Panel } from '../ui/hud'; import { loadBackdrop } from './props'; +import { loadProp } from './assets'; const BENCH_Y = 0; @@ -113,6 +114,9 @@ export class EggBenchView implements View { ); this.glass.position.set(2.1, BENCH_Y + 0.45, -0.4); this.root.add(this.glass); + // ponytail: NO glass prop. The generated tumbler renders opaque, and this + // glass exists solely so you can WATCH an egg sink, stand or float in it. + // A pretty glass you cannot see through deletes the float test. const water = new THREE.Mesh( new THREE.CylinderGeometry(0.4, 0.35, 0.62, 20), new THREE.MeshStandardMaterial({ color: 0x6fa8c4, roughness: 0.15, transparent: true, opacity: 0.5 }), @@ -127,6 +131,15 @@ export class EggBenchView implements View { ); this.bowl.position.set(0, BENCH_Y + 0.31, 0.55); this.root.add(this.bowl); + // The cylinder stays as the drop-target geometry the eggs measure against; + // the real bowl just stands where it stands. + void loadProp('/assets/models/mixing_bowl.glb', 1.65) + .then((prop) => { + prop.position.set(0, BENCH_Y - 0.01, 0.55); + this.bowl.visible = false; + this.root.add(prop); + }) + .catch(() => undefined); this.bowlMix = new THREE.Mesh( new THREE.CylinderGeometry(0.92, 0.92, 0.05, 28), new THREE.MeshStandardMaterial({ color: 0xf4f0e4, roughness: 0.35, transparent: true, opacity: 0 }),