Help us improve
Share bugs, ideas, or general feedback.
From summer
Generates hard-surface 3D vehicle models (car, spaceship, mech, boat, tank, helicopter) with multi-angle reference and optional detail-texture pass. Wires as Vehicle3D or MeshInstance3D with polycount targets per use case.
npx claudepluginhub summerengine/summer-engine-agent --plugin summerHow this skill is triggered — by the user, by Claude, or both
Slash command
/summer:vehicle-modelassets/vehicles/**assets/models/****/*.tscn**/*.gdThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Vehicles are the hardest 3D-gen category. Hard surfaces (flat panels, sharp edges, symmetrical bodies) expose every flaw the AI mesher has — smoothing-group artifacts on flat panels, asymmetric headlights, melted door seams. This skill exists to push the success rate up by giving the model **multi-angle reference**, picking the right backend, and using a **secondary detail-texture pass** to rec...
Generates a single static 3D prop (sword, chest, barrel, lantern, statue, crate, etc.) as a MeshInstance3D. Searches existing assets before generating and wires the mesh into the scene. Uses summer_generate_3d with hunyuan, trellis, or meshy backends.
Generates custom 3D models from text or images using Meshy AI, auto-rigs and animates them for Three.js games. Use when needing custom GLB assets beyond free libraries.
Builds interactive 3D web scenes with Three.js using WebGL/WebGPU. Guides on scenes, cameras, renderers, geometries, materials, meshes, lights, animations, and OrbitControls.
Share bugs, ideas, or general feedback.
Vehicles are the hardest 3D-gen category. Hard surfaces (flat panels, sharp edges, symmetrical bodies) expose every flaw the AI mesher has — smoothing-group artifacts on flat panels, asymmetric headlights, melted door seams. This skill exists to push the success rate up by giving the model multi-angle reference, picking the right backend, and using a secondary detail-texture pass to recover crispness on the body panels.
Backing tool: summer_generate_3d. Default model is hunyuan (best general quality). For pure hard-surface (clean spaceship, F1 car), try trellis first — it tends to preserve panel edges better.
summer:3d-assets/character-model. Generate them separately and parent the character to the vehicle's seat.summer:3d-assets/prop-model with first-person framing.summer:3d-assets/prop-model is fine; vehicle-model's overhead isn't worth it.summer:3d-assets/environment-kit to generate a vehicle-parts kit instead.| Use case | Tris | Pass via |
|---|---|---|
| Player vehicle (close camera, lots of screen time) | 15k–30k | target_polycount: 25000 |
| Hero showpiece (cinematic, garage view) | 30k–60k | target_polycount: 50000 |
| Background traffic (mid-range, multiple onscreen) | 2k–5k | target_polycount: 4000 |
| Distant flyby / parked scenery | 1k–2k | target_polycount: 1500 |
Vehicles benefit more from polycount than props — flat panels need edge density to look right. Don't go below 2k for anything the camera will get close to.
Vehicles are highly view-dependent. A front-only reference produces a mesh with great front detail and a melted rear. The fix: generate a front + 3/4 side composite reference before the 3D pass.
summer_generate_image(
prompt="A sleek red sports car, front view AND 3/4 rear-side view side by side, two angles in one image, white background, studio lighting, clean references for 3D modeling, isolated, no scenery."
)
Most image models will produce a two-view composite. Then feed it to image-to-3D:
summer_generate_3d(
kind="image-to-3d",
imageUrl="<composite reference url>",
model="hunyuan",
options={ target_polycount: 25000 }
)
If the user has reference images already (concept art, photos), prefer those — composite them into a single image first if they aren't already.
summer_search_assets(query="<vehicle type>", assetType="3d_model", source="all")
For hard-edged vehicles (spaceships, F1, mechs), try trellis first — sharper panel edges. For organic-curved vehicles (muscle cars, motorcycles, classic boats), hunyuan handles the curves better.
Pattern: <vehicle type> + <silhouette / era / style> + <materials> + <surface state> + isolated suffix.
| Goal | Prompt that works |
|---|---|
| Player race car | A sleek modern Formula 1 race car, aerodynamic carbon-fiber bodywork, large rear wing, exposed wheels, racing livery in red and white. Front and 3/4 side views. Game asset, stylized, clean white background, isolated vehicle. |
| Sci-fi fighter | A sleek single-seat sci-fi space fighter, swept-forward wings, twin engine nacelles, glass cockpit canopy, painted matte gray with cyan trim. Front and 3/4 side views. Game asset, stylized hard-surface, white background, isolated vehicle. |
| Hover bike | A rusted desert hover bike, exposed engine block, single seat, handlebars, no wheels (hover thrusters underneath), weathered orange paint. Front and 3/4 side views. Game asset, stylized, white background, isolated vehicle. |
| Mech | A 4 meter tall bipedal combat mech, blocky armored torso, articulated arms with rifle and missile pod, thick legs with hydraulic pistons, painted olive drab with hazard stripes. Front and 3/4 side views. Game asset, hard-surface stylized, white background, isolated vehicle. |
| Background sedan | A generic 90s civilian sedan, four doors, beige paint, slightly worn. Front and 3/4 side views. Game asset, low-detail stylized, white background, isolated vehicle. |
The phrase front and 3/4 side views is what triggers the multi-angle composite reference internally.
About to generate
red_race_carviahunyuan, target ~25k tris, multi-angle ref. ~$0.60, ~90s. OK?
summer_generate_3d(
prompt="A sleek modern Formula 1 race car, ...",
model="hunyuan",
options={ target_polycount: 25000 },
wait=true
)
summer_get_asset(assetId="<assetId>")
summer_import_asset_by_id(assetId="<assetId>", path="res://assets/vehicles/race_car.glb")
summer_inspect_resource(path="res://assets/vehicles/race_car.glb")
Open the import preview. Look for:
Generate Tangents = on and a custom shader.symmetric, mirrored bilateral added to the prompt.For hero vehicles, run a texture-only pass to recover panel-line crispness without re-meshing:
summer_generate_3d(
kind="texture",
imageUrl="<original front-view reference>",
model="hunyuan",
options={ target_polycount: 25000 } // matched to existing mesh
)
This re-textures the existing mesh with sharper detail — panel lines, decals, weathering. Cheaper than re-meshing. Apply via material override in the editor.
| Use case | Parent type | Notes |
|---|---|---|
| Player-driven (car, bike, hover) | VehicleBody3D (Godot 4.5 wheeled) or RigidBody3D (free physics) | Add VehicleWheel3D children for wheeled vehicles |
| Player-driven (spaceship, mech) | RigidBody3D or CharacterBody3D | Custom thrust / walk code, see summer:character-controllers |
| Background scenery (parked, flyby) | MeshInstance3D under a Node3D | No physics, no collision needed for distant traffic |
| Background traffic (moving but not interactive) | Node3D + AnimationPlayer driving the position | Cheap, no physics overhead |
Player car wiring:
summer_add_node(parent="./World", type="VehicleBody3D", name="RaceCar")
summer_add_node(parent="./World/RaceCar", type="MeshInstance3D", name="Body")
summer_set_prop(path="./World/RaceCar/Body", property="mesh", value="res://assets/vehicles/race_car.glb")
summer_add_node(parent="./World/RaceCar", type="CollisionShape3D", name="Collider")
# Add a BoxShape3D resource matched to the AABB
# Add VehicleWheel3D children at each wheel position
summer_save_scene
Background scenery wiring:
summer_add_node(parent="./World/Street", type="MeshInstance3D", name="ParkedSedan")
summer_set_prop(path="./World/Street/ParkedSedan", property="mesh", value="res://assets/vehicles/sedan.glb")
summer_save_scene
symmetric, mirrored you get one headlight bigger than the other 30% of the time.meshy (legacy). Worse hard-surface fidelity than hunyuan or trellis.summer:3d-assets/prop-model (or use a tiled texture on a torus). For animation, scroll the track texture's UV.summer:3d-assets/character-model with the rig pass, then animate via summer:animation/generate-motion (custom backend, prompt as "mech walks heavily").summer:3d-assets/prop-model and parent it. Spin via code in _process.summer:3d-assets/prop-model for the interior, and switch meshes when the camera enters first-person view..glb.res://assets/vehicles/.After the vehicle is wired:
race_car.glbplaced at./World/RaceCaras a VehicleBody3D. Next:
- Vehicle controls: WASD steering / accel — see
summer:character-controllersfor the vehicle controller pattern (or write directly withengine_force,steering, andbrakeon VehicleBody3D).- Driver character: generate via
summer:3d-assets/character-modeland parent to the seat position.- Engine sound + tire screech:
summer:audio/sound-effectfor one-shots,summer:audio/ambient-bedfor the engine loop.- Particles: exhaust smoke, dust trail, sparks on collision —
summer:vfx/particles(when available) or built-in GPUParticles3D.
summer:3d-assets/character-model — for the driver/pilot.summer:3d-assets/prop-model — for separable parts (rotors, decals as decals, modular kit pieces).summer:asset-pipeline/asset-strategy — meta-router.summer:character-controllers — for player-driven vehicle input wiring.references/mcp-tools-reference.md — summer_generate_3d schema, including kind: "texture" for the secondary detail pass.