← AsiáticoObjeto 3Dfogon/cartel-de-neon
Cartel de neón japonés
Arrastrá para girarlo// «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
});import { draw } from "./assets/voxel";
import { cartelDeNeon } from "./assets/cartel-de-neon";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, cartelDeNeon, x, y, { size: 64, angle: 0, t: performance.now() / 1000 });
// size: lo que mide en px su lado más largo
// angle: giro sobre el piso, en radianes
// t: segundos; si se mueve, se anima solo con eso# En una terminal, en la carpeta del juego
fogon assets add cartel-de-neon
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["cartel-de-neon"] })
# Queda en client/assets/cartel-de-neon.ts
# https://fogon.page/object/cartel-de-neon