← AnimalesObjeto 3Dfogon/conejo
Conejo
Arrastrá para girarlo// «Conejo» · gpt-6-sol (medium)
// A cute cartoon white rabbit sitting on its haunches, facing front (-y): a round egg-shaped body, big rear feet, small front paws, a round head with two very long upright ears (pink inside), pink nose, black dot eyes and a fluffy round white tail at the back.
// Sitting rabbit: front is -y.
const fur = "#eeece8";
const furLight = "#fffdf9";
const furShade = "#dcdad6";
const pink = "#f49baa";
const pinkLight = "#ffc0ca";
const ink = "#252329";
part("body", [24, 25, 13]);
// Round body, haunches, and oversized feet.
ellipsoid(24, 26, 14, 12, 11, 12, fur);
ellipsoid(14, 29, 8, 7, 8, 8, fur);
ellipsoid(34, 29, 8, 7, 8, 8, fur);
ellipsoid(15, 16, 3, 7, 9, 3, fur);
ellipsoid(33, 16, 3, 7, 9, 3, fur);
// Subtle shading and flecks on the exposed fur.
forEach((x, y, z, color) => {
if (color !== fur) return;
const exposed = !get(x, y - 1, z) || !get(x, y, z + 1) ||
!get(x + 1, y, z);
if (!exposed) return;
const n = rand();
if (z < 6 || (z < 12 && n < 0.14)) set(x, y, z, furShade);
else if (z > 17 || n < 0.13) set(x, y, z, furLight);
});
// Bright tummy and little paws resting against it.
ellipsoid(24, 15, 15, 8, 3, 8, "#faf9f5");
ellipsoid(17, 13, 14, 3, 3, 5, furLight);
ellipsoid(31, 13, 14, 3, 3, 5, furLight);
ellipsoid(17, 11, 11, 3, 2, 2, "#f5f3ef");
ellipsoid(31, 11, 11, 3, 2, 2, "#f5f3ef");
// A few broad toe divisions, visible from the front.
for (const cx of [15, 33]) {
for (const dx of [-3, 0, 3]) {
line(cx + dx, 8, 4, cx + dx, 10, 5, 0, "#fffefa");
}
}
// Puffy tail peeking out behind the body.
sphere(24, 39, 12, 5, furLight);
sphere(21, 41, 13, 2, "#f6f5f1");
sphere(27, 41, 13, 2, "#f6f5f1");
sphere(24, 42, 15, 2, "#fffefa");
// The head bobs independently.
part("head", [24, 18, 24]);
const headFur = "#f2f0ec";
ellipsoid(24, 18, 25, 12, 10, 9, headFur);
forEach((x, y, z, color) => {
if (color !== headFur) return;
if (!get(x, y - 1, z) || !get(x, y, z + 1)) {
if (z >= 27 || rand() < 0.12) set(x, y, z, furLight);
else if (z < 21 && rand() < 0.22) set(x, y, z, furShade);
}
});
// Plump muzzle, tiny nose, and a simple smiling mouth.
ellipsoid(21, 8, 21, 4, 3, 3, "#fffefa");
ellipsoid(27, 8, 21, 4, 3, 3, "#fffefa");
ellipsoid(24, 5, 23, 2, 1, 1, pink);
set(24, 4, 22, "#df7188");
set(24, 5, 20, "#716b70");
set(23, 5, 19, "#716b70");
set(25, 5, 19, "#716b70");
// Black bead eyes with single bright catchlights.
for (const x of [18, 30]) {
ellipsoid(x, 8, 27, 2, 2, 2, ink);
set(x - 1, 6, 28, "#ffffff");
}
ellipsoid(14, 11, 22, 2, 1, 1, "#f9d8d9");
ellipsoid(34, 11, 22, 2, 1, 1, "#f9d8d9");
// Each long ear has its own pivot and a broad pink inner surface.
part("leftEar", [17, 20, 31]);
ellipsoid(17, 20, 38, 4, 3, 7, "#f4f2ee");
ellipsoid(17, 17, 39, 2, 1, 5, pink);
ellipsoid(17, 16, 40, 1, 1, 3, pinkLight);
animate("leftEar", { type: "swing", axis: "x", speed: 3, amplitude: 0.2 });
part("rightEar", [31, 20, 31]);
ellipsoid(31, 20, 38, 4, 3, 7, "#f4f2ee");
ellipsoid(31, 17, 39, 2, 1, 5, pink);
ellipsoid(31, 16, 40, 1, 1, 3, pinkLight);
animate("rightEar", { type: "swing", axis: "x", speed: -3, amplitude: 0.2 });
animate("head", { type: "bob", axis: "z", speed: 2, amplitude: 0.5 });import { draw } from "./assets/voxel";
import { conejo } from "./assets/conejo";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, conejo, 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 conejo
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["conejo"] })
# Queda en client/assets/conejo.ts
# https://fogon.page/object/conejo