Helicopter
A light utility helicopter about 10 m long with a glass-nosed cabin, a slim tail boom, skids or floats, a main rotor and a tail rotor that both spin with distance flown. Nav lights, beacon and searchlight glow at night; it cruises 6 m up.
- Size
- 10.6 × 3.3 × 12.0 m
- Triangles
- 1,296
Tune it
5 knobs: Scheme, Main blades, Floats, Searchlight, Size.
Specs
- Size
- 10.6 × 3.3 × 12.0 m width × height × depth
- Triangles
- 1,296 of 6,000
- Draw calls
- 1 one vertex-colour material
- Loop clip
- 2 m of travel per cycle
- Altitude
- 6 m above the ground
- Moving parts
- 3 rotor_main · spin, rotor_tail · spin, airframe · slide
- Knobs
- 5 3 presets
- Night lights
- 4 nav, beacon, lamp, cabin
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/helicopter.mjs';
const helicopter = createAsset();
scene.add(helicopter); // rests on y = 0, front faces +Z
let dist = 0;
renderer.setAnimationLoop(() => {
dist += speed * clock.getDelta();
helicopter.position.set(0, groundY + helicopter.userData.altitude, dist);
helicopter.userData.tick(dist); // wings beat 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/helicopter.mjs';
export function Helicopter({ 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); // wings beat with the distance
});
return <primitive object={model} />;
}# Import helicopter.glb (download below). It carries an in-place "Loop" animation.
@onready var anim: AnimationPlayer = $Helicopter/AnimationPlayer
func _physics_process(delta):
velocity = transform.basis.z * speed
move_and_slide()
anim.play("Loop")
anim.speed_scale = speed / 2 # one Loop = 2 m of travel// Import helicopter.glb with glTFast (com.unity.cloud.gltfast).
animator.Play("Loop");
animator.speed = speed / 2 // one Loop = 2 m of travelUse the gaitkit MCP server: get_variant({ "id": "helicopter", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
scheme | choice | rescue news charcoal olive white | rescue | Paint: rescue (red with a white stripe, air ambulance), news (blue and white), charcoal (dark grey with an orange stripe, corporate), olive (drab utility, no markings), white (white with a teal stripe, tour or private). |
blades | range | 2 to 5, step 1 | 4 | Number of main rotor blades, 2 to 5. Two is a light trainer, four or five a bigger utility machine. |
floats | toggle | on / off | false | Swap the landing skids for inflatable pontoons, for landing on water. |
searchlight | toggle | on / off | true | A swivelling searchlight under the nose that shines at night. Off for a plain cabin. |
size | range | 0.6 to 1.5, step 0.05 | 1 | Uniform scale. 1 is about 10 m long with a 10.6 m rotor; 0.6 is a two-seat trainer, 1.5 a heavy utility helicopter. |
Presets: air ambulance {"scheme":"rescue","blades":4,"searchlight":true} · sea patrol {"scheme":"white","floats":true,"blades":5,"size":1.2} · bush trainer {"scheme":"olive","blades":2,"searchlight":false,"size":0.7}
Files
| File | What |
|---|---|
| helicopter.glb | GLB, default look · 166 KB |
| helicopter.mjs | ES module, every knob live |
| helicopter.obj | OBJ, static, no colour |
| helicopter-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.