Unity 3d generator
Skill tea-x-random/unity-game-skills/skills/unity-3d-generator
Claude Agent Skills for building casual iOS games in Unity 6 — orchestration, MCP Editor control, generative 2D/3D/audio assets, graphics, UI, monetization, QA & release.
npx -y skills add tea-x-random/unity-game-skills --skill unity-3d-generatorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Generate 3D source assets with Tripo, then technically qualify, rig, animate, import, and promote them into Unity runtime prefabs. Use for text/image/multiview-to-3D, GLB/FBX characters, creatures, props, vehicles, weapons, obstacles, collectibles, low-poly/mobile optimization, rig and skin validation, animation retargeting, Unity ModelImporter/Avatar setup, LODs, colliders, and game-ready asset contracts. Treat every generated mesh as source geometry until deterministic model QA, realized Unity import QA, deformation tests, and registry promotion pass. Pair with unity-image-generator or unity-asset-designer for approved turnarounds and with unity-asset-pipeline for lifecycle gates.
SKILL.md
14.9 KB, as published. Nobody here has run it
Unity 3D Generator
Create 3D source assets with Tripo, then qualify and import them with mobile-correct settings. A successful generation task is not a production asset. Read ../unity-asset-pipeline/references/asset-lifecycle.md before production work and use references/unity-import.md for realized Unity checks.
Truthful status rule: say
generated,rig attempt passed,technically inspected,Unity-imported, orapproved. Saygame-readyonly after the final registry gate.riggable=true, a named skeleton, or a pretty preview alone never justifies that claim.
Choose the production route by asset risk
| Asset | Generator output may become final after gates? | Required route |
|---|---|---|
| Background prop, pickup, simple obstacle | Often | Generate → inspect → repair → Unity import/prefab gates. |
| Repeated environment module | Sometimes | Require clean seams/pivots, LODs, shared materials and performance capture; manual topology cleanup is normal. |
| Secondary rigged NPC/creature | Conditionally | Approved neutral turnaround → generate → preregcheck → rig/weight/clip inspection → deformation test. Reject failures; do not patch them with prompt prose. |
| Hero, close-camera actor, combat character, equipment-changing avatar | Rarely | Use generation for concept/blockout; require DCC retopology, UVs, controlled edge flow, manual bone placement/weights and authored corrective tests before Unity promotion. |
Do not route every visual asset through text-to-3D. Prefer authored primitives/modular kits for strict geometry, 2D/billboards when depth adds no gameplay value, and a clean reusable base mesh when many characters share one rig. Keep weapons, capes and large accessories separate when they would fuse limbs or corrupt skinning.
API key & script
Key resolution: --api-key, then TRIPO_API_KEY. Probe first (some keys live only in interactive shells):
bash $UNITY_GAME_SKILLS_HOME/unity-game-director/scripts/probe_asset_credentials.sh # TRIPO_API_KEY=SET|MISSING
If SET but the script reports missing, wrap with the user's profile:
zsh -c 'source "$HOME/.zprofile" 2>/dev/null; source "$HOME/.zshrc" 2>/dev/null; python3 $UNITY_GAME_SKILLS_HOME/unity-3d-generator/scripts/unity_3d_asset.py ...'
Download URLs expire fast — always --download immediately on success.
python3 $UNITY_GAME_SKILLS_HOME/unity-3d-generator/scripts/unity_3d_asset.py --help
Subcommands: text, image, status, download, postprocess, validate-rig, validate-animation, character-pipeline.
Generate (download straight into the Unity project)
Write outputs under Assets/ so Unity auto-imports them. Prefer GLB for static props, FBX for rigged/animated characters.
# Static prop / obstacle / collectible (mobile budget)
python3 $UNITY_GAME_SKILLS_HOME/unity-3d-generator/scripts/unity_3d_asset.py text \
--prompt "game-ready stylized coin pickup, bold readable silhouette, clean low-poly, PBR, centered pivot, no text" \
--model-version v3.1-20260211 --texture-quality detailed --geometry-quality standard \
--wait --download --out-dir Assets/<Game>/Art/Source/TripoRaw/coin
# Image-to-3D from a style-locked turnaround (canon sheet for characters — see Style lock below)
python3 $UNITY_GAME_SKILLS_HOME/unity-3d-generator/scripts/unity_3d_asset.py image \
--image "Assets/<Game>/Art/_ArtDirection/sheets/hero_knight_canon.png" --model-version v3.1-20260211 \
--enable-image-autofix --texture-alignment original_image --texture-quality detailed \
--wait --download --out-dir Assets/<Game>/Art/Source/TripoRaw/hero
# Full animated character (gen -> prerig check -> validated rig -> retargets -> download)
python3 $UNITY_GAME_SKILLS_HOME/unity-3d-generator/scripts/unity_3d_asset.py character-pipeline \
--prompt "stylized runner character, T-pose, full body, arms away from body, game-ready, readable silhouette" \
--animations preset:idle,preset:walk,preset:run,preset:jump \
--out-dir Assets/<Game>/Art/Source/TripoRaw/runner
Postprocess (texture / rig / animate / convert / stylize), rigging reliability rules (T/A-pose, prerigcheck-first, rig version by body plan, never --animate-in-place), and creature stance rules are in references/api-notes.md. Load it before any postprocess, rig, or animation work.
Technical eligibility gate before Unity
Write the v2 asset contract first, including runtime.model.geometry, runtime.model.rig, and runtime.model.animation budgets. Then inspect the downloaded GLB/glTF:
python3 $UNITY_GAME_SKILLS_HOME/unity-asset-pipeline/scripts/inspect_3d_asset.py \
Assets/<Game>/Art/Source/TripoRaw/runner/rig.glb \
--profile rigged \
--contract Assets/<Game>/Art/Approved/runner/asset-contract.yaml \
--report Assets/<Game>/Art/Source/QA/runner.model-qa.json
Exit 0 qualifies the file for Unity import; it does not approve it. The inspector gates triangle/material budgets, mesh attributes and bounds, skins, inverse bind matrices, normalized weights, influence/unweighted-vertex limits, required bones/clips, and animation scale tracks. It cannot prove deformation quality, manifold topology, collider suitability, LOD quality, or Unity Avatar validity. Route those through a DCC cleanup pass where required and the Unity import/deformation gates.
Style lock — production inputs come from the art-spec
Tripo inherits its 3D style entirely from the 2D input — the game's 2D style lock is the upstream root (no major 3D generator offers trained style locks). Hard rules for production assets (see docs/PIPELINE_CONVENTIONS.md for paths and missing-spec behavior):
- Image-to-3D input MUST be style-locked. Characters: the approved canon sheet/turnaround from the art-spec
characters.<id>.canon_sheet. Props: the family golden or a turnaround generated under the game's 2D style lock (art-spec conditioning viaunity-asset-designer/unity-image-generator). Never feed image-to-3D a fresh, unconditioned concept. - Prompts embed the art-spec's style tokens VERBATIM (materials, shape_language, palette); characters copy their frozen
identity_stringexactly, varying only pose clauses (T-pose for rigging). - Scale comes from the art-spec
scaleblock (unit_rule,character_height_m,standard_door_height_m; per-assetscale_mfrom the AssetBrief) — enforced by the mandatory post-import bounds gate inreferences/unity-import.md. Never shipglobalScale = 1.0unmeasured. - Re-shade to spec after import. Converge imported materials to the spec's
materials(roughness/metallic ranges, texture_language) andrendering.shader_family: Unity-side shared-material conversion by default, or a Tripotexture_modelpostprocess (postprocess --type texture_model --original-task-id <id> --texture-prompt "<spec style tokens>") when the baked texture itself is off-style. Raw Tripo PBR beside flat/cel 2D fails theunity-aaa-graphicsfinish-consistency axis. Do not add other 3D/texture vendors for this.
No art-spec yet? Exploratory/concept modeling stays legal — say so and flag outputs as placeholders; production assets wait for the spec.
Riggable characters need a clean full-body T-pose (or A-pose)
Auto-rigging is most reliable on a clean, full-body, limbs-separated pose. If you feed image-to-3D a concept in an action pose (an archer mid-draw, arms crossed, a prop held across the body, a ¾ "hero" stance, or a cropped/occluded body), the rig will often fail or come out broken — limbs fuse, joints land wrong, animation retargets garble.
The rule: for any character that will be rigged/animated, the image-to-3D input must be a T-pose (arms straight out horizontally) or A-pose (arms down ~45°), full body in frame, legs slightly apart, arms clearly away from the torso, neutral/symmetrical, no props or weapons occluding the limbs, plain background. Generate that rigging-ready concept first, rig from it, then animate the action cycles (the bow-draw, the attack) as animation clips — never bake the action into the static mesh pose.
Workflow: generate a clean T-pose concept (unity-image-generator, or a T-pose turnaround from unity-asset-designer) → image to 3D → prerigcheck → rig → animate (preset/retarget cycles). If a rig fails, suspect the input pose first, regenerate a cleaner T-pose, and re-run — don't fight the rigger. Hold the character's style/identity constant (same prompt tokens) but swap the pose to neutral. (Props the character uses — bow, sword — are usually modeled/attached separately or kept to the side in the concept, not crossed over the body.)
Use Tripo for non-pixel 2D pre-rendering — not for pixel art
Tripo is not only for runtime 3D games. For high-res/painterly/illustrated "2D" mobile games, generate a model with Tripo, rig/animate it, then render it from the game camera to transparent sprites. Reach for this when a non-pixel asset needs multiple angles, animation frames, or a consistent premium rendered finish.
Do not use Tripo renders as the source of pixel art. If the target finish is pixel art, route final generation to unity-pixel-art / PixelLab. Downscaling 3D destroys native pixel clusters, palette discipline, outline rules, and readable silhouettes.
Why pre-rendered 3D beats per-frame non-pixel image generation:
- Consistency — one model, lit once, renders identically every frame/angle. Generating each sprite or animation frame independently with an image model drifts; a rendered rig does not.
- Animation for free — rig + animate once (Tripo), then render each frame of a cycle to a sprite strip with perfect identity.
- Any angle — render top-down, 3/4, side, or an N-direction set from the same model.
- Baked depth/lighting/AO — rendered sprites carry real form and shadow for non-pixel styles.
Pipeline
- Generate (and rig/animate) with Tripo for the non-pixel asset.
- Import into Unity, set up an orthographic camera + lighting matching the game's angle.
- Render to PNG with transparent background — static frame, animation frames, or rotations.
- Import the rendered PNGs as sprites (see
unity-image-generatorimport settings: Sprite, ASTC, atlas) and animate viaunity-animation.
Compact render recipe lives in references/prerender-2d.md. Use Gemini (unity-image-generator) for concepts, textures, tiling grounds, and UI; use Tripo + render for non-pixel characters/props/animated actors that need consistency; use unity-pixel-art for final pixel sprites.
Prompt quality (game-ready, on-model)
A premium, on-model model starts with a premium prompt — generic prompts give blobs. Name, in order: subject; art style + 1–2 named touchstones; shape language / silhouette readability; material & palette; and detail/fidelity ("clean low-poly, readable silhouette, game-ready, PBR, centered pivot, no text"). Always include negatives — NOT: blobby, off-model, jagged, low-detail.
For production assets, image-to-3D conditioned on the style-locked turnaround/canon sheet is mandatory (see "Style lock" above) — the sheet locks proportions, palette, and silhouette so the mesh matches canon; bare text-to-3D is for exploration only. See ../unity-aaa-graphics/references/prompt-library.md for the full AAA template and per-genre art kits/exemplars.
Refine: if the silhouette is wrong, regenerate the prompt (not just re-roll the seed); reuse the verbatim style tokens that already produced on-model results.
Import into Unity (the part that is Unity-specific)
After download, the file is in Assets/. Refresh and configure import settings — do not trust defaults. Load references/unity-import.md for the full recipe. Short version, driven through unity-mcp-bridge:
refresh_unity(scope="assets", wait_for_ready=true)so Unity imports the new file.manage_asset(action="import")only reimports — it cannot set import settings. Configure viaexecute_codedrivingModelImporter: scale factor,Read/Writeoff (saves memory) unless mesh is read at runtime, mesh compression on for mobile, import materials/textures as needed, and for characters set the rig (AnimationType.Humanoidfor biped Mixamo-style,Genericfor creatures).- Realized import gate (mandatory): emit a machine-readable Unity report for renderer bounds/scale, mesh budgets and attributes, Avatar/skin/bind pose, required clips, materials, LODs, colliders and importer settings. Correct failures and re-run. Recipe and acceptance fields are in
references/unity-import.md. - For GLB, ensure the glTFast package (
com.unity.cloud.gltfast) is installed, or convert to FBX. FBX imports natively. - Set texture compression to ASTC for iOS (platform override) — the default can be wrong on mobile. Re-shade materials to the spec (
materials+rendering.shader_family— "Style lock" rule 4). - Production flow — contract, not ad-hoc prefabs: write
asset-contract.yaml, runvalidate_asset_manifest.py(must exit 0), then ApplyAssetContract → GeneratePrefabFromContract → registry entry, all viaunity-asset-pipeline. Scenes instantiate the REGISTRY prefab — never the raw FBX/GLB. (Standalone/exploratory only:manage_gameobject(action="create", prefab_path=...)+manage_prefabs(action="create_from_gameobject")is allowed, but the result is a flagged placeholder, not an approved asset.) - Animated characters use Unity's Animator/Mecanim: create an Animator Controller, add the imported clips as states, and test bind pose plus representative extreme poses. Verify locomotion, attack/contact, root motion and skin deformation in Play Mode; a static screenshot is insufficient.
unity-animationowns events so attacks/shots fire on the right frame.
Quality & mobile rules
- Improve prompts with material, silhouette, scale, camera readability, and game-use constraints.
- Casual iOS is triangle/draw-call/memory bound: favor
smart_low_poly,--face-limit, low-poly postprocess, shared atlased materials, and GPU instancing for repeated props. - Use generated models for hero/high-fidelity content; build repeated background props procedurally or via instancing.
- Always download immediately. Report Tripo task IDs, model/rig versions, output paths, model-inspection report, Unity import report, deformation test, and BeautyCell evidence.