Gaitkit Sign in Open the lab
Skateboard, A real-size skateboard: a 0.81 m double-kick popsicle street deck, a 0.71 m cruiser with a rounded nose and one kick tail, or a 1 m pintail longboard. The pressed deck has concave, a two-tone ply edge, an abstract graphic (stripes, flames, chevrons, waves) under clear grip or black/grey grip tape with the truck bolts showing; two trucks with baseplates, kingpins, bushings and hangers carry four urethane wheels (wheel_0..3) that roll with distance.
Vehicle · Rolls with distance

Skateboard

A real-size skateboard: a 0.81 m double-kick popsicle street deck, a 0.71 m cruiser with a rounded nose and one kick tail, or a 1 m pintail longboard. The pressed deck has concave, a two-tone ply edge, an abstract graphic (stripes, flames, chevrons, waves) under clear grip or black/grey grip tape with the truck bolts showing; two trucks with baseplates, kingpins, bushings and hangers carry four urethane wheels (wheel_0..3) that roll with distance.

Size
0.21 × 0.14 × 0.81 m
Triangles
2,336
Open in the lab

ProPro download.

Also as , a .zip with the .obj and its .mtl.

Loop clip inside. The download carries the knobs you set here.

Tune it

4 knobs: Deck shape, Graphic, Wheel colour, Grip tape.

Specs

Size
0.21 × 0.14 × 0.81 m
width × height × depth
Triangles
2,336
of 6,000
Draw calls
1
one vertex-colour material
Loop clip
0.17 m
of travel per cycle
Moving parts
4
wheel_0 · spin, wheel_1 · spin, wheel_2 · spin, wheel_3 · spin
Knobs
4
3 presets
Night lights
0
none

Passed the validator: real scale, rests on y = 0, front faces +Z, deterministic.

Use it

Code for the specimen as it is set up above; it follows your knobs.

JavaScript
import { createAsset } from 'https://gaitkit.com/cdn/skateboard.mjs';

const skateboard = createAsset();
scene.add(skateboard);                      // rests on y = 0, front faces +Z

let dist = 0;
renderer.setAnimationLoop(() => {
  dist += speed * clock.getDelta();
  skateboard.position.z = dist;
  skateboard.userData.tick(dist);            // wheels roll exactly with the distance
  renderer.render(scene, camera);
});

More in the docs; agents can fetch all of this through MCP.

Knobs

KnobTypeValuesDefaultWhat it does
shapechoicepopsicle cruiser longboardpopsiclepopsicle (0.81 m double-kick street and park deck, small hard wheels), cruiser (0.71 m, wide rounded nose, one kick tail, soft fat wheels) or longboard (1 m pintail, flat, wide trucks and big soft wheels).
graphicchoicestripes flames chevrons waves plainflamesAbstract bottom graphic, no logos: stripes (navy with mustard and cream bands), flames (orange and yellow flames licking up from the tail on black), chevrons (blue and red chevrons pointing to the nose on cream), waves (pale wave bands on deep blue) or plain (natural maple).
wheelschoicecream red teal yellow black purplecreamUrethane wheel colour: cream, red, teal, yellow, black or purple.
gripchoiceblack grey clear stripeclearTop of the deck: black grip tape, grey grip tape, clear grip (the graphic shows through on top) or stripe (black grip with a band of the graphic colour across the middle).

Presets: street deck {"shape":"popsicle","graphic":"stripes","wheels":"red","grip":"black"} · beach cruiser {"shape":"cruiser","graphic":"waves","wheels":"teal","grip":"clear"} · downhill longboard {"shape":"longboard","graphic":"chevrons","wheels":"yellow","grip":"stripe"}

Files

FileWhat
skateboard.glb ProGLB, default look · 238 KB
skateboard.mjs ProES module, every knob live
skateboard.obj ProOBJ, static; colours in the .mtl
skateboard.mtlOBJ colours; keep it next to the .obj
skateboard-params.jsonknob schema, presets, night zones

Licence

Use it in games, apps, renders and client work, commercially and without credit. Do not resell it as an asset or train a 3D generator on it. The full licence.