← Animals3D assetfogon/condor
Cóndor
Drag to turn it// «Cóndor» · gpt-6-sol (medium)
// A big cartoon Andean condor with wide spread wings, facing front (-y): a black body and wings with white bands on the top of the wings, a white fluffy collar around the neck, a bald pinkish-grey head with a hooked pale beak and small black eyes. The wings span most of the grid along x.
const black = "#22252b";
const blackTop = "#343840";
const blackLow = "#171a20";
const white = "#f2f0e7";
const whiteShade = "#d9d8d2";
// Short legs and chunky feet.
for (const x of [20, 28]) {
box(x - 1, 22, 2, x + 1, 25, 7, "#858780");
box(x - 2, 18, 0, x + 2, 25, 2, "#777a73");
for (const dx of [-2, 0, 2]) {
box(x + dx, 15, 0, x + dx + 1, 20, 1, "#96978a");
set(x + dx, 14, 0, "#c6bda3");
}
}
// Rounded black body, with a soft highlight on the front.
ellipsoid(24, 24, 17, 8.5, 7, 11.5, black);
ellipsoid(24, 18, 18, 5.5, 1.5, 7, "#2c3036");
ellipsoid(24, 23, 24, 6, 5.5, 6, blackTop);
ellipsoid(24, 27, 10, 5, 3, 4, blackLow);
// Fluffy white ruff around the neck.
ellipsoid(24, 23, 28, 7, 6, 3.2, whiteShade);
ellipsoid(24, 22, 29, 6.5, 5.5, 2.6, white);
for (let i = 0; i < 15; i++) {
const a = i * Math.PI * 2 / 15;
sphere(
24 + Math.cos(a) * 5.9,
22 + Math.sin(a) * 4.8,
28.5 + (i % 3 === 0 ? 0.5 : -0.5),
1.45,
i % 4 === 0 ? whiteShade : white
);
}
// Big bald pink-grey head.
ellipsoid(24, 20.5, 35, 5, 4.5, 5, "#ad9290");
ellipsoid(24, 19, 37, 4.5, 3.3, 2.8, "#c3a7a0");
ellipsoid(24, 22.5, 34, 4, 2, 3, "#987e80");
// Simple, widely spaced toy-like eyes.
for (const x of [20, 28]) {
box(x, 15, 35, x + 1, 16, 37, "#111419");
set(x, 14, 37, "#fffaf0");
}
// Pale hooked beak, projecting toward the viewer.
ellipsoid(24, 15.5, 33.5, 2.7, 2.5, 2.3, "#e1d2af");
box(22, 11, 32, 26, 14, 34, "#e9d9b6");
box(23, 10, 30, 25, 12, 33, "#d4c19d");
box(23, 11, 30, 25, 12, 31, "#b6a68d");
set(22, 13, 35, "#766e69");
set(26, 13, 35, "#766e69");
// Each broad wing is a separate flapping part.
function makeWing(name, side, speed) {
const rootX = side < 0 ? 16 : 32;
part(name, [rootX, 24, 27]);
for (let d = 0; d <= 14; d++) {
const x = rootX + side * d;
const front = d < 4 ? 19 : d < 10 ? 18 : 20;
const back = d < 5 ? 29 : d < 11 ? 30 : 27;
const bottom = d < 5 ? 23 : d < 11 ? 24 : 27;
const top = d < 4 ? 29 : d < 11 ? 31 : 32;
box(x, front, bottom, x, back, top, black);
box(x, front + 1, top, x, back - 1, top, blackTop);
box(x, front, bottom, x, front + 1, bottom + 2, blackLow);
// Bold white upper-wing band, leaving dark outer flight feathers.
if (d >= 2 && d <= 11) {
box(x, front, top - 2, x, front + 3, top, white);
box(x, front + 3, top, x, back - 2, top, whiteShade);
if (d % 3 === 0) {
box(x, front, top - 2, x, front + 1, top - 2, whiteShade);
}
}
}
// Separate rounded feather ends along the trailing edge.
for (let d = 4; d <= 13; d += 2) {
const x = rootX + side * d;
const featherZ = d < 10 ? 24 : 27;
box(x, 29, featherZ, x + side, 32, featherZ + 2, blackLow);
box(x, 30, featherZ + 2, x + side, 31, featherZ + 2, blackTop);
}
box(rootX + side * 14, 22, 29, rootX + side * 15, 26, 31, blackLow);
animate(name, { type: "swing", axis: "y", speed, amplitude: 0.35 });
}
makeWing("left wing", -1, 2);
makeWing("right wing", 1, -2);
part("body", [24, 24, 17]);import { draw } from "./assets/voxel";
import { condor } from "./assets/condor";
// Every frame: standing on (x, y), the centre of its base.
draw(ctx, condor, 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 condor
# With Fogón's tools (connector)
add_assets({ slug: "<your-game>", ids: ["condor"] })
# It lands in client/assets/condor.ts
# https://fogon.page/object/condor