Submachine Gun
A generic compact game submachine gun about 55 cm long with the stock open (36 cm folded), standing on its magazine and grip with the muzzle toward +Z (or lying on its side as a pickup): a bevelled boxy receiver with a top rail, a vented barrel shroud with a compensator, a polymer lower with a hand stop, a raked pistol grip, a straight magazine ahead of the trigger guard and a skeleton stock that folds along the right side. Suppressor, red-dot sight, stock open or folded and magazine length are knobs, in modern or sci-fi style. The side cocking handle is a part named bolt that slides back along z; an empty node named muzzle marks the barrel tip (the bullet spawn point) and one named grip the pistol grip. Sights and sci-fi glow strips light up at night.
- Size
- 0.07 × 0.28 × 0.67 m
- Triangles
- 1,458
Tune it
7 knobs: Finish, Style, Suppressor, Red dot, Stock, Magazine, Pose.
Specs
- Size
- 0.07 × 0.28 × 0.67 m width × height × depth
- Triangles
- 1,458 of 6,000
- Draw calls
- 1 one vertex-colour material
- Moving parts
- 1 bolt · slide
- Knobs
- 7 3 presets
- Night lights
- 1 glow
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/smg.mjs';
const smg = createAsset();
scene.add(smg); // rests on y = 0, front faces +Zimport { useMemo } from 'react';
import { createAsset } from 'https://gaitkit.com/cdn/smg.mjs';
export function Smg() {
const model = useMemo(() => createAsset(), []);
return <primitive object={model} />;
}# Import smg.glb (download below). Moving parts are separate nodes, pivoted on their hinge.
add_child(preload("res://smg.glb").instantiate())// Import smg.glb with glTFast (com.unity.cloud.gltfast).
// Drop it in the scene: 1 unit = 1 metre, +Z is its front.Use the gaitkit MCP server: get_variant({ "id": "smg", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
finish | choice | black tan olive gunmetal arctic | black | Colourway: black, tan (desert tan lower and grip), olive (olive drab lower), gunmetal (grey steel receiver) or arctic (white polymer on grey, clean sci-fi look). In sci-fi style it also picks the glow colour. |
style | choice | modern scifi | modern | modern (a compact contemporary SMG) or scifi (angular armour panels with glowing strips, a glowing magazine window and an emitter ring at the muzzle). |
suppressor | toggle | on / off | false | A 16 cm integral-style suppressor on the barrel; the muzzle node moves to its tip. |
optic | toggle | on / off | true | A small red-dot sight on the top rail, with a glowing dot; off gives flip-up iron sights. |
stock | choice | open folded | open | open (the skeleton stock extended to the shoulder) or folded (swung forward along the right side of the receiver, compact). |
magazine | choice | standard extended | standard | standard (a 13 cm straight magazine) or extended (a 20 cm magazine, more rounds). |
pose | choice | upright ground | upright | upright (standing on its magazine and grip as if held, muzzle +Z) or ground (lying on its left side, as a pickup dropped on the floor). |
Presets: swat smg {"finish":"black","optic":true,"stock":"open"} · silenced pdw {"finish":"olive","suppressor":true,"stock":"folded","magazine":"extended"} · neon smg {"finish":"arctic","style":"scifi"}
Files
| File | What |
|---|---|
| smg.glb Pro | GLB, default look · 170 KB |
| smg.mjs Pro | ES module, every knob live |
| smg.obj Pro | OBJ, static; colours in the .mtl |
| smg.mtl | OBJ colours; keep it next to the .obj |
| smg-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.