Tennis Set
Tennis gear at real size laid out on the ground: one or two 0.69 m rackets with a strung head (mains and crosses), an open throat, a bumper guard and a wrapped grip with a butt cap, loose felt balls with seams, a ball can with a lid, and optionally a ball machine (wheeled body, hopper full of balls, launch chute) or a net post with a section of net, headband and winder.
- Size
- 1.1 × 0.27 × 0.75 m
- Triangles
- 1,092
Tune it
5 knobs: Rackets, Loose balls, Ball can, Extra, Colourway.
Specs
- Size
- 1.1 × 0.27 × 0.75 m width × height × depth
- Triangles
- 1,092 of 6,000
- Draw calls
- 1 one vertex-colour material
- Knobs
- 5 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.
import { createAsset } from 'https://gaitkit.com/cdn/tennis-set.mjs';
const tennisSet = createAsset();
scene.add(tennisSet); // rests on y = 0, front faces +Zimport { useMemo } from 'react';
import { createAsset } from 'https://gaitkit.com/cdn/tennis-set.mjs';
export function TennisSet() {
const model = useMemo(() => createAsset(), []);
return <primitive object={model} />;
}# Import tennis-set.glb (download below). It is a static mesh, one material per colour.
add_child(preload("res://tennis-set.glb").instantiate())// Import tennis-set.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": "tennis-set", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
rackets | range | 1 to 2, step 1 | 2 | How many rackets lie on the ground: 1 or 2 (side by side, heads apart). |
balls | range | 0 to 5, step 1 | 3 | Number of loose tennis balls scattered around the rackets, 0 to 5. |
can | toggle | on / off | true | A ball can (tube with a coloured lid and label band) standing beside the rackets. |
extra | choice | none ball machine net post | none | none, ball machine (a wheeled practice ball launcher with a hopper full of balls and a chute pointing +Z) or net post (one court post with its winder and a 1.4 m section of net with the white headband) behind the rackets. |
colourway | choice | classic lime crimson ocean | classic | Racket frame / accent / grip and can colours: classic (off-white frame, navy), lime (black frame, lime), crimson (red frame, black) or ocean (blue frame, cream). |
Presets: club bag dump {"rackets":2,"balls":4,"can":true,"extra":"none","colourway":"classic"} · practice session {"rackets":1,"balls":5,"can":false,"extra":"ball machine","colourway":"lime"} · court side {"rackets":2,"balls":2,"extra":"net post","colourway":"crimson"}
Files
| File | What |
|---|---|
| tennis-set.glb | GLB, default look · 156 KB |
| tennis-set.mjs | ES module, every knob live |
| tennis-set.obj | OBJ, static; colours in the .mtl |
| tennis-set.mtl | OBJ colours; keep it next to the .obj |
| tennis-set-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.