fogón

← AsiáticoObjeto 3Dfogon/bandeja-de-sushi

Bandeja de sushi

de fogonCC07545 bloques
Bandeja de sushiArrastrá para girarlo
// «Bandeja de sushi» · gpt-6-sol (medium)
// A wooden sushi tray (geta board) with an assortment: salmon and tuna nigiri on white rice, a row of maki rolls with dark green nori and colorful centers, a small mound of green wasabi and pink pickled ginger, and a small soy sauce dish.

// Lacquered wooden geta tray: feet, board, and gold edging.
box(9, 12, 0, 39, 15, 4, "#53251f");
box(9, 33, 0, 39, 36, 4, "#53251f");
box(10, 12, 0, 38, 12, 1, "#a84331");
box(10, 33, 0, 38, 33, 1, "#a84331");
box(5, 7, 5, 43, 40, 6, "#651f1c");
box(6, 8, 7, 42, 39, 7, "#a13729");

for (let y = 9; y <= 38; y++) {
  for (let x = 7; x <= 41; x++) {
    if (rand() < 0.10) set(x, y, 7, rand() < 0.5 ? "#ad4430" : "#86271f");
  }
}
box(5, 7, 7, 43, 7, 8, "#d6a34c");
box(5, 40, 7, 43, 40, 8, "#aa7434");
box(5, 8, 7, 5, 39, 8, "#e4b65c");
box(43, 8, 7, 43, 39, 8, "#b87d35");
box(7, 9, 8, 41, 9, 8, "#733020");
box(7, 38, 8, 41, 38, 8, "#733020");
for (const x of [7, 41]) for (const y of [9, 38]) {
  set(x, y, 9, "#f3cc78");
}

// Shaded, softly rounded food shapes.
function food(cx, cy, cz, rx, ry, rz, base, light, dark, fleck) {
  for (let z = Math.ceil(cz - rz); z <= Math.floor(cz + rz); z++)
    for (let y = Math.ceil(cy - ry); y <= Math.floor(cy + ry); y++)
      for (let x = Math.ceil(cx - rx); x <= Math.floor(cx + rx); x++) {
        const d = ((x-cx)/rx)**2 + ((y-cy)/ry)**2 + ((z-cz)/rz)**2;
        if (d > 1) continue;
        let c = z > cz + 0.3 && y < cy ? light : z < cz - 0.6 ? dark : base;
        if (rand() < fleck) c = rand() < 0.5 ? light : dark;
        set(x, y, z, c);
      }
}

// Two generous nigiri: pearl-white rice below draped salmon and tuna.
for (const x of [14, 26]) {
  food(x, 18, 10.3, 4.5, 5.7, 2.5,
       "#f0eee3", "#fffdf2", "#d7d8ce", 0.10);
  for (let y = 14; y <= 22; y += 2)
    for (let dx = -3; dx <= 3; dx += 2)
      if (rand() < 0.65) set(x + dx, y, 12, "#fffef6");
}
food(14, 18, 13.25, 4.3, 5.4, 1.9,
     "#ed8057", "#ffad78", "#be593f", 0.06);
food(26, 18, 13.25, 4.3, 5.4, 1.9,
     "#ab343f", "#e05c60", "#782632", 0.05);

// Fine diagonal marbling follows the top of each fish.
for (let y = 13; y <= 23; y++)
  for (let x = 10; x <= 30; x++) {
    if (x > 18 && x < 22) continue;
    for (let z = 14; z <= 15; z++) {
      const c = get(x, y, z);
      if (!c) continue;
      if (x < 19 && (2*x + y) % 7 < 2)
        set(x, y, z, "#ffbd88");
      if (x > 21 && (2*x + y) % 9 === 0)
        set(x, y, z, "#eb7774");
    }
  }

// Upright maki: nori sides, rice faces, and jewel-colored fillings.
const rolls = [
  {x: 11, filling: "#e97b50", leaf: "#7daf61"},
  {x: 19, filling: "#e68150", leaf: "#b5cf78"},
  {x: 27, filling: "#c9414e", leaf: "#82b86c"},
  {x: 35, filling: "#ef8956", leaf: "#a9c66b"}
];
for (const roll of rolls) {
  const x = roll.x, y = 33;
  cylinder(x, y, 8, 3.5, 5, "#18352f");
  cylinder(x, y, 12, 3.5, 1, "#315b43");
  cylinder(x, y, 13, 2.8, 1, "#f0eee1");
  cylinder(x, y, 14, 1.45, 1, roll.filling);
  set(x - 1, y, 14, roll.leaf);
  set(x, y + 1, 14, roll.leaf);
  set(x + 1, y - 1, 14, "#f4b26b");
  for (let i = 0; i < 8; i++) {
    const a = i * Math.PI / 4;
    const px = Math.round(x + 2.4 * Math.cos(a));
    const py = Math.round(y + 2.4 * Math.sin(a));
    set(px, py, 14, i % 3 ? "#fffaf0" : "#dce4d8");
  }
}

// A little soy dish, with a thick glazed rim and dark glossy sauce.
cylinder(37, 17, 8, 4.5, 2, "#e4ded0");
cylinder(37, 17, 10, 4.5, 1, "#f5eee0");
cylinder(37, 17, 11, 3.4, 1, "#4a2824");
cylinder(37, 17, 12, 2.7, 1, "#301f21");
set(35, 15, 12, "#866357");
set(36, 15, 12, "#63453d");

// Jade-green wasabi mound and folded cherry-pink pickled ginger.
food(39, 26, 9.6, 2.4, 2.6, 1.8,
     "#659743", "#a6c96c", "#477637", 0.13);
food(38, 25, 10.7, 1.4, 1.4, 1.0,
     "#80ad50", "#b8d879", "#5e913f", 0.09);

food(32, 25, 9.4, 2.6, 2.2, 1.3,
     "#d98795", "#f6b8bd", "#a95770", 0.08);
line(30, 25, 10, 33, 24, 11, 0, "#ffd0cb");
line(31, 27, 10, 34, 26, 11, 0, "#f3a5ac");
line(32, 23, 10, 34, 24, 10, 0, "#ffe0d2");