← Animals3D assetfogon/perro-salchicha
Perro salchicha
Drag to turn it// «Perro salchicha» · gpt-6-sol (medium)
// A cartoon dachshund: a very long low sausage body (about three times longer along y than tall), shiny reddish brown with a lighter tan belly, four tiny stubby legs, a long head at the front (-y) with a pointed snout and black nose, black dot eyes and long floppy ears hanging down. A thin tail sticking up at the back.
// Long, low body with a warm belly and a shiny back.
ellipsoid(24, 27, 11, 8.5, 16, 6, "#a94d27");
forEach((x, y, z, color) => {
if (color !== "#a94d27") return;
let shade = "#ae5029";
if (z >= 15) shade = rand() < 0.22 ? "#d4773d" : "#c66732";
else if (z >= 11) shade = rand() < 0.12 ? "#c06332" : "#ad4d27";
else if (z <= 7) shade = "#80391f";
else if (z <= 9 && y > 14 && y < 40) shade = "#d99455";
set(x, y, z, shade);
});
// Rounded chest, large head, and tan muzzle.
ellipsoid(24, 15, 10, 6, 5, 4, "#d38a4c");
ellipsoid(24, 12, 14, 8, 7, 7, "#a94c27");
ellipsoid(24, 12, 18, 6.4, 5.2, 2.6, "#bd5d2e");
ellipsoid(20.6, 7.7, 11.5, 3.6, 3.7, 3, "#e0a266");
ellipsoid(27.4, 7.7, 11.5, 3.6, 3.7, 3, "#d89559");
ellipsoid(24, 6, 12, 5.2, 4.2, 3.1, "#bd642f");
ellipsoid(24, 4.7, 10.7, 3.7, 2.7, 1.8, "#e4a469");
// Long, dark, floppy ears.
for (const side of [-1, 1]) {
ellipsoid(24 + side * 8.1, 12, 13.7, 2.3, 3.1, 5.3, "#71351f");
ellipsoid(24 + side * 9.5, 11.5, 9.4, 2.5, 3, 3.5, "#813b22");
ellipsoid(24 + side * 8.6, 10.3, 14.8, 1, 1.5, 3, "#a34d29");
}
// Big, widely spaced toy-like eyes and a rounded black nose.
for (const x of [19, 29]) {
sphere(x, 7, 17, 1.35, "#201b1a");
set(x - 1, 6, 18, "#ffffff");
set(x, 8, 20, "#ce753b");
}
ellipsoid(24, 2.7, 12.1, 2, 1.6, 1.6, "#242024");
set(23, 1, 13, "#555056");
line(24, 3, 10, 24, 4, 9, 0, "#6c3625");
line(22, 4, 9, 26, 4, 9, 0, "#703a27");
// Four independently swinging little legs.
const legs = [
{ name: "frontLeft", x: 17, y: 17, speed: 5 },
{ name: "frontRight", x: 31, y: 17, speed: -5 },
{ name: "rearLeft", x: 17, y: 37, speed: -5 },
{ name: "rearRight", x: 31, y: 37, speed: 5 }
];
for (const leg of legs) {
part(leg.name, [leg.x, leg.y, 8]);
ellipsoid(leg.x, leg.y, 4, 2.6, 2.5, 4, "#a64b27");
ellipsoid(leg.x, leg.y - 1, 1.3, 2.8, 2.4, 1.4, "#bd6735");
box(leg.x - 1, leg.y - 3, 0, leg.x + 1, leg.y - 2, 1, "#d38345");
animate(leg.name, { type: "swing", axis: "x", speed: leg.speed, amplitude: 0.3 });
}
// Thin tail curling upward behind the body.
part("tail", [24, 41, 15]);
line(24, 41, 15, 24, 44, 19, 1, "#a74d28");
line(24, 44, 19, 24, 45, 23, 0, "#bd6230");
set(24, 45, 23, "#d77c3d");
animate("tail", { type: "swing", axis: "z", speed: 8, amplitude: 0.4 });
part("body", [24, 24, 0]);import { draw } from "./assets/voxel";
import { perroSalchicha } from "./assets/perro-salchicha";
// Every frame: standing on (x, y), the centre of its base.
draw(ctx, perroSalchicha, x, y, { size: 64, angle: 0, t: performance.now() / 1000 });
// size: its longest side, in px
// angle: turn on the floor, in radians
// t: seconds; if it moves, that animates it# In a terminal, in the game's folder
fogon assets add perro-salchicha
# With Fogón's tools (connector)
add_assets({ slug: "<your-game>", ids: ["perro-salchicha"] })
# It lands in client/assets/perro-salchicha.ts
# https://fogon.page/object/perro-salchicha