← Basics3D assetfogon/camioneta-v4
Camioneta
Drag to turn it// «Camioneta» · gpt-6-sol (medium)
// Pickup truck («Camioneta»). One of several variations of this object: follow the reference picture closely.
const red = "#cf4033";
const redLight = "#ed5945";
const redDark = "#982d28";
const trim = "#283238";
const glass = "#193b48";
// Chassis and undercarriage
box(14, 5, 6, 34, 43, 9, "#343c40");
box(16, 7, 5, 32, 41, 6, "#626c6e");
box(13, 6, 9, 35, 42, 12, redDark);
// Four chunky tires, with inset steel hubs
for (const x of [10, 36]) {
for (const cy of [13, 37]) {
for (let dx = 0; dx < 4; dx++) {
for (let dy = -6; dy <= 6; dy++) {
for (let dz = -5; dz <= 5; dz++) {
const d = (dy * dy) / 32 + (dz * dz) / 25;
if (d > 1) continue;
let c = d > 0.72 ? "#192126" : "#242b30";
if (d > 0.72 && rand() < 0.16) c = "#30383b";
set(x + dx, cy + dy, 5 + dz, c);
}
}
}
const face = x === 10 ? 9 : 40;
for (let dy = -3; dy <= 3; dy++) {
for (let dz = -3; dz <= 3; dz++) {
const d = dy * dy + dz * dz;
if (d <= 10) set(face, cy + dy, 5 + dz, d > 5 ? "#536064" : "#899497");
}
}
box(face, cy - 1, 4, face, cy + 1, 6, "#5b686c");
set(face, cy, 5, "#adb4b2");
}
}
// Long red body and hood
box(13, 5, 10, 35, 18, 14, red);
box(14, 6, 15, 34, 18, 16, redLight);
box(13, 7, 14, 13, 17, 15, redDark);
box(35, 7, 14, 35, 17, 15, "#b4342b");
box(14, 6, 16, 34, 7, 16, "#fa654d");
box(13, 17, 13, 35, 19, 15, redDark);
// Raised seams on the hood
box(17, 9, 17, 18, 17, 17, "#da4938");
box(19, 9, 17, 19, 16, 17, "#a9342b");
box(29, 9, 17, 30, 17, 17, "#da4938");
box(31, 9, 17, 31, 16, 17, "#a9342b");
// Front grille, upright corner headlights, and bumper
box(17, 4, 9, 31, 5, 13, "#263038");
for (let z = 10; z <= 12; z += 2) {
box(18, 3, z, 30, 3, z, "#627074");
}
for (const x of [13, 33]) {
box(x, 4, 9, x + 2, 5, 14, "#444e50");
box(x, 3, 10, x + 2, 3, 13, "#e8d5a4");
box(x, 3, 12, x + 2, 3, 12, "#fff0be");
}
box(12, 3, 6, 36, 5, 7, "#929d9a");
box(15, 2, 7, 33, 3, 7, "#6b7778");
box(12, 4, 7, 14, 5, 9, "#c1c3ae");
box(34, 4, 7, 36, 5, 9, "#c1c3ae");
// Cab: red pillars enclosing a broad dark windshield
box(13, 19, 15, 35, 30, 25, redDark);
box(15, 20, 17, 33, 29, 25, "#263f47");
box(15, 18, 18, 33, 19, 24, glass);
box(16, 17, 22, 22, 17, 23, "#386474");
box(26, 17, 21, 31, 17, 23, "#315968");
box(13, 18, 17, 15, 20, 25, red);
box(33, 18, 17, 35, 20, 25, red);
box(23, 17, 18, 24, 19, 25, "#34464a");
box(14, 17, 17, 34, 18, 18, "#3c494b");
// Side windows and door, visible on both sides
for (const x of [12, 36]) {
box(x, 20, 18, x, 29, 24, "#173a47");
box(x, 21, 22, x, 24, 23, "#356273");
box(x, 27, 20, x, 28, 22, "#315563");
box(x, 20, 17, x, 29, 18, "#586164");
box(x, 25, 18, x, 26, 25, "#a6332b");
box(x, 19, 18, x, 20, 25, red);
box(x, 29, 18, x, 30, 25, redDark);
box(x, 19, 12, x, 30, 16, red);
box(x, 21, 12, x, 21, 15, redDark);
box(x, 29, 12, x, 29, 16, redDark);
box(x, 26, 16, x, 28, 16, "#87918b");
}
// Projecting side mirrors
box(8, 19, 19, 12, 20, 21, "#424d50");
box(8, 18, 20, 10, 20, 23, "#29363b");
box(37, 19, 19, 40, 20, 21, "#424d50");
box(39, 18, 19, 41, 21, 22, "#39474a");
box(41, 19, 20, 41, 20, 21, "#a2aaaa");
// Flat, slightly overhanging red roof
box(12, 17, 25, 36, 31, 26, redDark);
box(13, 18, 27, 35, 30, 27, redLight);
box(15, 19, 28, 33, 28, 28, "#e94f3f");
box(14, 29, 27, 35, 30, 27, "#a52f29");
box(12, 17, 25, 36, 18, 25, "#f15c47");
// Pickup bed: recessed dark floor and thick red rails
box(13, 30, 10, 35, 43, 12, redDark);
box(15, 32, 13, 33, 41, 13, "#593b33");
box(13, 30, 13, 15, 43, 17, red);
box(33, 30, 13, 35, 43, 17, red);
box(14, 42, 12, 34, 44, 17, "#b7352d");
box(15, 42, 17, 33, 43, 17, redLight);
box(13, 30, 17, 15, 42, 18, "#ec5341");
box(33, 30, 17, 35, 42, 18, "#e34a39");
box(13, 31, 14, 13, 41, 16, "#a52f28");
box(35, 31, 14, 35, 41, 16, "#a42e27");
box(16, 31, 13, 32, 31, 18, "#9c3029");
// Wooden cargo crate peeking over the bed
box(18, 33, 14, 31, 40, 21, "#b98246");
box(18, 33, 21, 31, 40, 22, "#e7ad61");
for (const x of [19, 23, 27, 31]) {
box(x, 33, 15, x, 40, 21, "#d69b55");
box(x, 34, 22, x, 39, 22, "#f0bd72");
}
box(18, 33, 17, 31, 33, 18, "#e2a65c");
box(18, 40, 17, 31, 40, 18, "#9c6938");
box(18, 33, 21, 31, 33, 21, "#f5c47b");
// Dark wheel arches, side sill, and small rear details
for (const cy of [13, 37]) {
for (const x of [12, 36]) {
for (let dy = -7; dy <= 7; dy++) {
for (let z = 8; z <= 12; z++) {
const d = (dy * dy) / 45 + ((z - 5) * (z - 5)) / 39;
if (d > 0.82 && d < 1.3) set(x, cy + dy, z, "#283137");
}
}
}
}
box(36, 20, 9, 37, 30, 10, "#697578");
box(12, 20, 9, 13, 30, 10, "#697578");
box(15, 43, 8, 33, 44, 9, "#8e9997");
box(14, 44, 11, 16, 44, 14, "#c67354");
box(32, 44, 11, 34, 44, 14, "#c67354");import { draw } from "./assets/voxel";
import { camionetaV4 } from "./assets/camioneta-v4";
// Every frame: standing on (x, y), the centre of its base.
draw(ctx, camionetaV4, 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 camioneta-v4
# With Fogón's tools (connector)
add_assets({ slug: "<your-game>", ids: ["camioneta-v4"] })
# It lands in client/assets/camioneta-v4.ts
# https://fogon.page/object/camioneta-v4