← Animals3D assetfogon/oso-pardo
Oso pardo
Drag to turn it// «Oso pardo» · gpt-6-sol (medium)
// A big chubby cartoon brown bear on all fours, horizontal along y, head at the front (-y): a heavy rounded body in dark brown with a lighter brown muzzle, round ears, small black eyes and a black nose, four thick legs with pale claws and a tiny tail.
const body = "#80512f";
const head = "#895632";
// Heavy, rounded torso
ellipsoid(24, 27, 19, 15, 17, 12, body);
forEach((x, y, z, color) => {
if (color !== body) return;
if (z >= 25) set(x, y, z, rand() < 0.12 ? "#a06b3e" : "#956037");
else if (z <= 13) set(x, y, z, "#6d4229");
else if (rand() < 0.045) set(x, y, z, "#8c5934");
});
// Big head and round cheeks at the front
ellipsoid(24, 12, 23, 11, 10, 10, head);
forEach((x, y, z, color) => {
if (color !== head) return;
if (z >= 28) set(x, y, z, rand() < 0.12 ? "#ad7646" : "#9c673c");
else if (z <= 18) set(x, y, z, "#784728");
else if (rand() < 0.04) set(x, y, z, "#966039");
});
ellipsoid(17, 7, 18, 5, 4, 5, "#a36b3e");
ellipsoid(31, 7, 18, 5, 4, 5, "#a36b3e");
// Ears, with their inner surfaces facing the viewer
ellipsoid(15, 11, 33, 4, 3, 5, "#784628");
ellipsoid(33, 11, 33, 4, 3, 5, "#784628");
ellipsoid(15, 8, 34, 2, 1, 3, "#c18a65");
ellipsoid(33, 8, 34, 2, 1, 3, "#c18a65");
// Broad pale muzzle and a tiny smiling face
ellipsoid(24, 5, 18, 7, 4, 5, "#c99560");
ellipsoid(24, 3, 19, 5, 2, 3, "#dbad78");
ellipsoid(24, 1, 20, 2, 1, 2, "#28211e");
set(24, 0, 17, "#483027");
set(23, 1, 16, "#483027");
set(25, 1, 16, "#483027");
ellipsoid(18, 3, 26, 2, 2, 2, "#211b19");
ellipsoid(30, 3, 26, 2, 2, 2, "#211b19");
set(17, 1, 27, "#ffffff");
set(29, 1, 27, "#ffffff");
// Little button tail
sphere(24, 43, 21, 3, "#78502e");
sphere(24, 45, 21, 2, "#97643a");
// Four independent, short, sturdy walking legs
function leg(name, x, y, speed) {
part(name, [x, y, 16]);
ellipsoid(x, y, 9, 4, 5, 8, "#75482b");
ellipsoid(x, y - 1, 8, 3, 4, 6, "#8d5933");
// Flat-bottomed, oversized toy paws
box(x - 3, y - 5, 0, x + 3, y + 2, 2, "#75482b");
ellipsoid(x, y - 2, 3, 5, 6, 3, "#85512f");
for (const dx of [-3, 0, 3]) {
box(x + dx, y - 7, 1, x + dx + 1, y - 6, 2, "#e8d1a4");
}
animate(name, { type: "swing", axis: "x", speed, amplitude: 0.3 });
}
leg("frontLeft", 13, 15, 3);
leg("frontRight", 35, 15, -3);
leg("rearLeft", 13, 37, -3);
leg("rearRight", 35, 37, 3);
part("body", [24, 24, 19]);import { draw } from "./assets/voxel";
import { osoPardo } from "./assets/oso-pardo";
// Every frame: standing on (x, y), the centre of its base.
draw(ctx, osoPardo, 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 oso-pardo
# With Fogón's tools (connector)
add_assets({ slug: "<your-game>", ids: ["oso-pardo"] })
# It lands in client/assets/oso-pardo.ts
# https://fogon.page/object/oso-pardo