Pirate Sloop
A fast 11 m single-masted sloop: a sleek flush-decked hull with a long bowsprit, a gaff mainsail on a swung-out boom, a jib, a low aft cabin and small deck guns poking through the rail. The bow points +Z; it rides the water surface (altitude 0) and bobs, rolls and pitches a little livelier than a galleon. The keel rests on y = 0; the waterline is about 1 m up (userData.waterline). The stern lantern and cabin windows glow at night.
- Size
- 4.4 × 14.6 × 15.7 m
- Triangles
- 1,670
- Kit
- Pirates
Tune it
5 knobs: Hull paint, Sails, Sail colour, Guns, Flag.
Specs
- Size
- 4.4 × 14.6 × 15.7 m width × height × depth
- Triangles
- 1,670 of 6,000
- Draw calls
- 1 one vertex-colour material
- Loop clip
- 9 m of travel per cycle
- Altitude
- 0 m below the surface
- Moving parts
- 4 bob · slide, roll · rotate, pitch · rotate, flag · rotate
- Knobs
- 5 3 presets
- Night lights
- 2 lantern, window
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.
import { createAsset } from 'https://gaitkit.com/cdn/sloop.mjs';
const sloop = createAsset();
scene.add(sloop); // rests on y = 0, front faces +Z
let dist = 0;
renderer.setAnimationLoop(() => {
dist += speed * clock.getDelta();
sloop.position.set(0, groundY + sloop.userData.altitude, dist);
sloop.userData.tick(dist); // the body waves with the distance
renderer.render(scene, camera);
});import { useMemo, useRef } from 'react';
import { useFrame } from '@react-three/fiber';
import { createAsset } from 'https://gaitkit.com/cdn/sloop.mjs';
export function Sloop({ speed = 1 }) {
const model = useMemo(() => createAsset(), []);
const dist = useRef(0);
useFrame((_, dt) => {
dist.current += speed * dt;
model.position.set(0, groundY + model.userData.altitude, dist.current);
model.userData.tick(dist.current); // the body waves with the distance
});
return <primitive object={model} />;
}# Import sloop.glb (download below). It carries an in-place "Loop" animation.
@onready var anim: AnimationPlayer = $Sloop/AnimationPlayer
func _physics_process(delta):
velocity = transform.basis.z * speed
move_and_slide()
anim.play("Loop")
anim.speed_scale = speed / 9 # one Loop = 9 m of travel// Import sloop.glb with glTFast (com.unity.cloud.gltfast).
animator.Play("Loop");
animator.speed = speed / 9 // one Loop = 9 m of travelUse the gaitkit MCP server: get_variant({ "id": "sloop", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
hull | choice | white and blue tarred teal oak mustard | tarred | Hull colour scheme: white and blue (white topsides, blue stripe, red bottom), tarred (black with a red stripe), teal, oak (bare varnished wood), mustard (ochre with a black stripe). |
sails | choice | full furled | full | full (mainsail and jib set, boom swung out to port) or furled (mainsail lashed on the boom along the centreline, jib stowed, as at anchor). |
sailColor | choice | canvas white black tan striped | canvas | Sail cloth: canvas (warm off-white), white, black, tan (tanned red-brown working sails) or striped (canvas with blue bands). Plain cloth, no emblems. |
guns | range | 0 to 4, step 1 | 3 | Small deck guns per side, firing through ports in the rail. 0 is an unarmed trading sloop. |
flag | choice | black red red and gold blue and white green and white | red | Colour of the plain flag at the masthead: black, red, red and gold stripes, blue and white stripes, green and white stripes. |
Presets: smuggler {"hull":"tarred","sailColor":"black","flag":"black","guns":2} · island trader {"hull":"white and blue","sailColor":"tan","guns":0,"flag":"blue and white"} · moored {"hull":"teal","sails":"furled","guns":2,"flag":"green and white"}
Files
| File | What |
|---|---|
| sloop.glb | GLB, default look · 209 KB |
| sloop.mjs | ES module, every knob live |
| sloop.obj | OBJ, static, no colour |
| sloop-params.json | knob 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.