Gaitkit Open the lab
Kayak, A kayak at real size (about 3.8 to 5.6 m) with a seated paddler: a closed-deck touring kayak, an open sit-on-top or a two-seat tandem. It swims on the water surface (altitude 0, bow toward +Z): userData.tick(distance) plays the paddle stroke, the paddler twisting and the double-bladed paddle dipping left and right (rotate parts paddler and paddle), one full stroke cycle per loop.
Vehicle · Swims

Kayak

A kayak at real size (about 3.8 to 5.6 m) with a seated paddler: a closed-deck touring kayak, an open sit-on-top or a two-seat tandem. It swims on the water surface (altitude 0, bow toward +Z): userData.tick(distance) plays the paddle stroke, the paddler twisting and the double-bladed paddle dipping left and right (rotate parts paddler and paddle), one full stroke cycle per loop.

Size
3.1 × 0.97 × 4.6 m
Triangles
1,100
Open in the lab Loop clip inside. The download carries the knobs you set here.

Tune it

4 knobs: Style, Hull colour, Paddler, Length.

Specs

Size
3.1 × 0.97 × 4.6 m
width × height × depth
Triangles
1,100
of 6,000
Draw calls
1
one vertex-colour material
Loop clip
3.2 m
of travel per cycle
Altitude
0 m
below the surface
Moving parts
4
paddler · rotate, paddle · rotate, arm_L · rotate, arm_R · rotate
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/kayak.mjs';

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

let dist = 0;
renderer.setAnimationLoop(() => {
  dist += speed * clock.getDelta();
  kayak.position.set(0, groundY + kayak.userData.altitude, dist);
  kayak.userData.tick(dist);            // the body waves with the distance
  renderer.render(scene, camera);
});

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

Knobs

KnobTypeValuesDefaultWhat it does
stylechoicetouring sit-on-top tandemtouringtouring (a long closed-deck sea kayak with a cockpit and deck bungees), sit-on-top (a wide open recreational kayak with a moulded seat), tandem (a long two-seat kayak with two paddlers stroking in time).
colorchoicered yellow orange lime blueredHull colour: red, yellow, orange, lime or blue. The deck is a slightly lighter tone.
paddlertoggleon / offtrueSeat a paddler (life vest, helmet) who strokes with the double-bladed paddle. Off leaves the kayak empty with its paddle laid across the deck.
lengthrange0.85 to 1.15, step 0.051Length multiplier on the style length: touring 4.6 m, sit-on-top 3.8 m, tandem 5.6 m at 1.

Presets: sea expedition {"style":"touring","color":"yellow","length":1.1} · beach rental {"style":"sit-on-top","color":"lime"} · tandem tour {"style":"tandem","color":"orange"}

Files

FileWhat
kayak.glbGLB, default look · 122 KB
kayak.mjsES module, every knob live
kayak.objOBJ, static, no colour
kayak-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.