fogón

← Asian3D assetfogon/cartel-de-neon

Cartel de neón japonés

by fogonCC013222 blocks
Cartel de neón japonésDrag to turn it
// «Cartel de neón japonés» · gpt-6-sol (medium)
// A vertical Japanese neon sign on a dark metal frame: a tall black panel with glowing pink and cyan tube shapes forming kanji-like strokes and a ramen bowl symbol, small mounting brackets, standing on a short pole.

const metal = "#252b30", metalLight = "#3e464b";
const lacquer = "#842b35", lacquerLight = "#af4149";
const gold = "#d9a94e", goldLight = "#f3d27a";
const black = "#090e17";

// Stone footing and short iron pole.
box(18, 20, 0, 30, 29, 1, "#b9b8ad");
box(19, 21, 2, 29, 28, 2, "#e1ded0");
box(21, 22, 3, 27, 27, 3, metalLight);
box(22, 23, 4, 26, 27, 10, metal);
box(23, 23, 4, 24, 23, 9, metalLight);
box(21, 22, 7, 27, 28, 8, "#1b2025");

// Rear mounting brackets.
for (const x of [14, 34]) {
  line(24, 27, 7, x, 28, 13, 1, metal);
  box(x - 2, 27, 12, x + 2, 29, 14, metalLight);
  set(x, 29, 13, gold);
}

// Deep dark-metal sign casing.
box(9, 20, 9, 39, 27, 45, metal);
box(10, 19, 10, 38, 20, 44, lacquer);
box(11, 18, 11, 37, 19, 43, gold);
box(12, 18, 12, 36, 18, 42, black);

// Subtle vertical sheen on the black enamel.
for (let z = 13; z <= 41; z++) {
  for (let x = 13; x <= 35; x++) {
    if (rand() < 0.055) set(x, 17, z, "#121b24");
  }
}

// Layered lacquer, gold, and metal edges.
for (const x of [9, 39]) {
  box(x, 18, 9, x, 20, 45, lacquer);
  box(x, 17, 11, x, 18, 43, lacquerLight);
}
for (const z of [9, 45]) {
  box(9, 18, z, 39, 20, z, lacquer);
  box(11, 17, z, 37, 18, z, lacquerLight);
}
for (const x of [11, 37]) box(x, 17, 12, x, 18, 42, gold);
for (const z of [11, 43]) box(12, 17, z, 36, 18, z, gold);
for (const x of [10, 38]) {
  for (const z of [10, 44]) set(x, 17, z, goldLight);
}
for (const z of [15, 26, 38]) {
  set(10, 16, z, goldLight);
  set(38, 16, z, goldLight);
}

// Kanji-inspired tube strokes, followed by a steaming ramen bowl.
const strokes = [
  // Upper character: pink.
  [16, 40, 32, 40, 0], [19, 41, 19, 35, 0],
  [15, 37, 23, 37, 0], [16, 34, 23, 34, 0],
  [25, 39, 32, 39, 0], [25, 36, 32, 36, 0],
  [25, 33, 32, 33, 0], [25, 39, 25, 33, 0],
  [32, 39, 32, 33, 0], [28, 40, 28, 32, 0],

  // Middle character: cyan, with a broad roof and inner strokes.
  [16, 30, 32, 30, 1], [16, 30, 16, 27, 1],
  [32, 30, 32, 27, 1], [18, 27, 30, 27, 1],
  [19, 27, 19, 23, 1], [19, 23, 30, 23, 1],
  [30, 27, 30, 23, 1], [24, 28, 24, 22, 1],
  [21, 25, 28, 25, 1],

  // Steam and chopsticks.
  [20, 19, 19, 21, 0], [19, 21, 21, 23, 0],
  [25, 19, 26, 21, 1], [26, 21, 25, 22, 1],
  [30, 19, 29, 21, 0],
  [29, 20, 34, 23, 1], [28, 20, 33, 23, 1],

  // Wide, unmistakable ramen bowl.
  [16, 18, 32, 18, 0],
  [16, 17, 32, 17, 1],
  [16, 17, 19, 13, 0], [32, 17, 29, 13, 0],
  [19, 13, 29, 13, 0],
  [20, 15, 28, 15, 1],
  [22, 12, 26, 12, 0]
];
const colors = ["#ff79b6", "#6ee8e3"];
const halos = ["#8b285e", "#227d88"];

for (const [x0, z0, x1, z1, c] of strokes)
  line(x0, 17, z0, x1, 17, z1, 1.25, halos[c]);

part("neon", [24, 18, 27]);
for (const [x0, z0, x1, z1, c] of strokes)
  line(x0, 15, z0, x1, 15, z1, 0.7, colors[c]);

animate("neon", {
  type: "colors",
  palette: ["#ff79b6", "#f33ca1", "#65eeee"],
  pattern: "flicker",
  glow: 0.9
});