@aura3d/cli 3.0.1 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -15
- package/dist/admission/artDirection.d.ts +28 -0
- package/dist/admission/artDirection.d.ts.map +1 -0
- package/dist/admission/artDirection.js +47 -0
- package/dist/admission/artDirection.js.map +1 -0
- package/dist/admission/audio.d.ts +19 -0
- package/dist/admission/audio.d.ts.map +1 -0
- package/dist/admission/audio.js +31 -0
- package/dist/admission/audio.js.map +1 -0
- package/dist/admission/builder-patterns.d.ts +25 -0
- package/dist/admission/builder-patterns.d.ts.map +1 -0
- package/dist/admission/builder-patterns.js +40 -0
- package/dist/admission/builder-patterns.js.map +1 -0
- package/dist/admission/gates.d.ts +136 -0
- package/dist/admission/gates.d.ts.map +1 -0
- package/dist/admission/gates.js +335 -0
- package/dist/admission/gates.js.map +1 -0
- package/dist/admission/glb.d.ts +64 -0
- package/dist/admission/glb.d.ts.map +1 -0
- package/dist/admission/glb.js +128 -0
- package/dist/admission/glb.js.map +1 -0
- package/dist/admission/index.d.ts +8 -0
- package/dist/admission/index.d.ts.map +1 -0
- package/dist/admission/index.js +8 -0
- package/dist/admission/index.js.map +1 -0
- package/dist/admission/profiles.d.ts +52 -0
- package/dist/admission/profiles.d.ts.map +1 -0
- package/dist/admission/profiles.js +91 -0
- package/dist/admission/profiles.js.map +1 -0
- package/dist/admission/qrFlags.d.ts +12 -0
- package/dist/admission/qrFlags.d.ts.map +1 -0
- package/dist/admission/qrFlags.js +48 -0
- package/dist/admission/qrFlags.js.map +1 -0
- package/dist/admission/routeGates.d.ts +36 -0
- package/dist/admission/routeGates.d.ts.map +1 -0
- package/dist/admission/routeGates.js +144 -0
- package/dist/admission/routeGates.js.map +1 -0
- package/dist/admission/texel.d.ts +50 -0
- package/dist/admission/texel.d.ts.map +1 -0
- package/dist/admission/texel.js +177 -0
- package/dist/admission/texel.js.map +1 -0
- package/dist/admission/textureStats.d.ts +45 -0
- package/dist/admission/textureStats.d.ts.map +1 -0
- package/dist/admission/textureStats.js +201 -0
- package/dist/admission/textureStats.js.map +1 -0
- package/dist/animation-asset-validator.d.ts +44 -0
- package/dist/animation-asset-validator.d.ts.map +1 -1
- package/dist/animation-asset-validator.js +80 -1
- package/dist/animation-asset-validator.js.map +1 -1
- package/dist/asset-core-types.d.ts +100 -4
- package/dist/asset-core-types.d.ts.map +1 -1
- package/dist/asset-inspection-types.d.ts +9 -0
- package/dist/asset-inspection-types.d.ts.map +1 -1
- package/dist/asset-manifest.d.ts +1 -0
- package/dist/asset-manifest.d.ts.map +1 -1
- package/dist/asset-manifest.js +17 -5
- package/dist/asset-manifest.js.map +1 -1
- package/dist/asset-route-typegen.d.ts +37 -0
- package/dist/asset-route-typegen.d.ts.map +1 -0
- package/dist/asset-route-typegen.js +179 -0
- package/dist/asset-route-typegen.js.map +1 -0
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +9 -4
- package/dist/cli-help.js.map +1 -1
- package/dist/cli-options.d.ts +7 -0
- package/dist/cli-options.d.ts.map +1 -1
- package/dist/cli-options.js +33 -2
- package/dist/cli-options.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +126 -11
- package/dist/cli.js.map +1 -1
- package/dist/codemods/engine-entry-imports.d.ts +22 -0
- package/dist/codemods/engine-entry-imports.d.ts.map +1 -0
- package/dist/codemods/engine-entry-imports.js +159 -0
- package/dist/codemods/engine-entry-imports.js.map +1 -0
- package/dist/codemods/lean-imports.d.ts +40 -0
- package/dist/codemods/lean-imports.d.ts.map +1 -0
- package/dist/codemods/lean-imports.js +175 -0
- package/dist/codemods/lean-imports.js.map +1 -0
- package/dist/codemods/renderer-imports.d.ts +36 -0
- package/dist/codemods/renderer-imports.d.ts.map +1 -0
- package/dist/codemods/renderer-imports.js +364 -0
- package/dist/codemods/renderer-imports.js.map +1 -0
- package/dist/codemods/renderer-mode.d.ts +38 -0
- package/dist/codemods/renderer-mode.d.ts.map +1 -0
- package/dist/codemods/renderer-mode.js +130 -0
- package/dist/codemods/renderer-mode.js.map +1 -0
- package/dist/commands/prd01/index.d.ts +8 -0
- package/dist/commands/prd01/index.d.ts.map +1 -0
- package/dist/commands/prd01/index.js +39 -0
- package/dist/commands/prd01/index.js.map +1 -0
- package/dist/commands/prd02/environmentsBake.d.ts +6 -0
- package/dist/commands/prd02/environmentsBake.d.ts.map +1 -0
- package/dist/commands/prd02/environmentsBake.js +174 -0
- package/dist/commands/prd02/environmentsBake.js.map +1 -0
- package/dist/commands/prd02/index.d.ts +2 -0
- package/dist/commands/prd02/index.d.ts.map +1 -0
- package/dist/commands/prd02/index.js +26 -0
- package/dist/commands/prd02/index.js.map +1 -0
- package/dist/commands/prd02/migrateLighting.d.ts +17 -0
- package/dist/commands/prd02/migrateLighting.d.ts.map +1 -0
- package/dist/commands/prd02/migrateLighting.js +86 -0
- package/dist/commands/prd02/migrateLighting.js.map +1 -0
- package/dist/commands/prd02/migrateLightingSweep.d.ts +20 -0
- package/dist/commands/prd02/migrateLightingSweep.d.ts.map +1 -0
- package/dist/commands/prd02/migrateLightingSweep.js +105 -0
- package/dist/commands/prd02/migrateLightingSweep.js.map +1 -0
- package/dist/commands/prd03/index.d.ts +7 -0
- package/dist/commands/prd03/index.d.ts.map +1 -0
- package/dist/commands/prd03/index.js +9 -0
- package/dist/commands/prd03/index.js.map +1 -0
- package/dist/commands/prd04/index.d.ts +10 -0
- package/dist/commands/prd04/index.d.ts.map +1 -0
- package/dist/commands/prd04/index.js +10 -0
- package/dist/commands/prd04/index.js.map +1 -0
- package/dist/commands/prd04/modelTintReport.d.ts +16 -0
- package/dist/commands/prd04/modelTintReport.d.ts.map +1 -0
- package/dist/commands/prd04/modelTintReport.js +114 -0
- package/dist/commands/prd04/modelTintReport.js.map +1 -0
- package/dist/commands/prd04/pinEmissiveDefaults.d.ts +3 -0
- package/dist/commands/prd04/pinEmissiveDefaults.d.ts.map +1 -0
- package/dist/commands/prd04/pinEmissiveDefaults.js +36 -0
- package/dist/commands/prd04/pinEmissiveDefaults.js.map +1 -0
- package/dist/commands/prd05/admit.d.ts +54 -0
- package/dist/commands/prd05/admit.d.ts.map +1 -0
- package/dist/commands/prd05/admit.js +153 -0
- package/dist/commands/prd05/admit.js.map +1 -0
- package/dist/commands/prd05/codemods/assetsRouteModules.d.ts +3 -0
- package/dist/commands/prd05/codemods/assetsRouteModules.d.ts.map +1 -0
- package/dist/commands/prd05/codemods/assetsRouteModules.js +92 -0
- package/dist/commands/prd05/codemods/assetsRouteModules.js.map +1 -0
- package/dist/commands/prd05/index.d.ts +9 -0
- package/dist/commands/prd05/index.d.ts.map +1 -0
- package/dist/commands/prd05/index.js +171 -0
- package/dist/commands/prd05/index.js.map +1 -0
- package/dist/commands/prd05/library.d.ts +23 -0
- package/dist/commands/prd05/library.d.ts.map +1 -0
- package/dist/commands/prd05/library.js +245 -0
- package/dist/commands/prd05/library.js.map +1 -0
- package/dist/commands/prd05/lookdev.d.ts +14 -0
- package/dist/commands/prd05/lookdev.d.ts.map +1 -0
- package/dist/commands/prd05/lookdev.js +68 -0
- package/dist/commands/prd05/lookdev.js.map +1 -0
- package/dist/commands/prd05/optimize.d.ts +16 -0
- package/dist/commands/prd05/optimize.d.ts.map +1 -0
- package/dist/commands/prd05/optimize.js +55 -0
- package/dist/commands/prd05/optimize.js.map +1 -0
- package/dist/commands/prd05/prune.d.ts +26 -0
- package/dist/commands/prd05/prune.d.ts.map +1 -0
- package/dist/commands/prd05/prune.js +104 -0
- package/dist/commands/prd05/prune.js.map +1 -0
- package/dist/commands/prd05/review.d.ts +24 -0
- package/dist/commands/prd05/review.d.ts.map +1 -0
- package/dist/commands/prd05/review.js +40 -0
- package/dist/commands/prd05/review.js.map +1 -0
- package/dist/commands/prd06/index.d.ts +6 -0
- package/dist/commands/prd06/index.d.ts.map +1 -0
- package/dist/commands/prd06/index.js +86 -0
- package/dist/commands/prd06/index.js.map +1 -0
- package/dist/commands/prd06/inspectAnimationClips.d.ts +86 -0
- package/dist/commands/prd06/inspectAnimationClips.d.ts.map +1 -0
- package/dist/commands/prd06/inspectAnimationClips.js +168 -0
- package/dist/commands/prd06/inspectAnimationClips.js.map +1 -0
- package/dist/commands/prd06/validateHero.d.ts +18 -0
- package/dist/commands/prd06/validateHero.d.ts.map +1 -0
- package/dist/commands/prd06/validateHero.js +91 -0
- package/dist/commands/prd06/validateHero.js.map +1 -0
- package/dist/commands/prd07/codemods.d.ts +28 -0
- package/dist/commands/prd07/codemods.d.ts.map +1 -0
- package/dist/commands/prd07/codemods.js +155 -0
- package/dist/commands/prd07/codemods.js.map +1 -0
- package/dist/commands/prd07/index.d.ts +2 -0
- package/dist/commands/prd07/index.d.ts.map +1 -0
- package/dist/commands/prd07/index.js +151 -0
- package/dist/commands/prd07/index.js.map +1 -0
- package/dist/commands/prd08/feelLint.d.ts +13 -0
- package/dist/commands/prd08/feelLint.d.ts.map +1 -0
- package/dist/commands/prd08/feelLint.js +32 -0
- package/dist/commands/prd08/feelLint.js.map +1 -0
- package/dist/commands/prd08/index.d.ts +2 -0
- package/dist/commands/prd08/index.d.ts.map +1 -0
- package/dist/commands/prd08/index.js +16 -0
- package/dist/commands/prd08/index.js.map +1 -0
- package/dist/commands/prd08/motionReport.d.ts +94 -0
- package/dist/commands/prd08/motionReport.d.ts.map +1 -0
- package/dist/commands/prd08/motionReport.js +197 -0
- package/dist/commands/prd08/motionReport.js.map +1 -0
- package/dist/commands/prd09/codemods/audio-wrapper.d.ts +9 -0
- package/dist/commands/prd09/codemods/audio-wrapper.d.ts.map +1 -0
- package/dist/commands/prd09/codemods/audio-wrapper.js +30 -0
- package/dist/commands/prd09/codemods/audio-wrapper.js.map +1 -0
- package/dist/commands/prd09/codemods/capture-branches.d.ts +10 -0
- package/dist/commands/prd09/codemods/capture-branches.d.ts.map +1 -0
- package/dist/commands/prd09/codemods/capture-branches.js +54 -0
- package/dist/commands/prd09/codemods/capture-branches.js.map +1 -0
- package/dist/commands/prd09/codemods/evidence-globals.d.ts +8 -0
- package/dist/commands/prd09/codemods/evidence-globals.d.ts.map +1 -0
- package/dist/commands/prd09/codemods/evidence-globals.js +19 -0
- package/dist/commands/prd09/codemods/evidence-globals.js.map +1 -0
- package/dist/commands/prd09/codemods/perf-script.d.ts +8 -0
- package/dist/commands/prd09/codemods/perf-script.d.ts.map +1 -0
- package/dist/commands/prd09/codemods/perf-script.js +24 -0
- package/dist/commands/prd09/codemods/perf-script.js.map +1 -0
- package/dist/commands/prd09/index.d.ts +8 -0
- package/dist/commands/prd09/index.d.ts.map +1 -0
- package/dist/commands/prd09/index.js +19 -0
- package/dist/commands/prd09/index.js.map +1 -0
- package/dist/commands/prd09/perf-report.d.ts +56 -0
- package/dist/commands/prd09/perf-report.d.ts.map +1 -0
- package/dist/commands/prd09/perf-report.js +118 -0
- package/dist/commands/prd09/perf-report.js.map +1 -0
- package/dist/commands/prd09/sfx-admit.d.ts +18 -0
- package/dist/commands/prd09/sfx-admit.d.ts.map +1 -0
- package/dist/commands/prd09/sfx-admit.js +120 -0
- package/dist/commands/prd09/sfx-admit.js.map +1 -0
- package/dist/commands/prd10/index.d.ts +2 -0
- package/dist/commands/prd10/index.d.ts.map +1 -0
- package/dist/commands/prd10/index.js +109 -0
- package/dist/commands/prd10/index.js.map +1 -0
- package/dist/commands/prd11/batchOptout.d.ts +35 -0
- package/dist/commands/prd11/batchOptout.d.ts.map +1 -0
- package/dist/commands/prd11/batchOptout.js +155 -0
- package/dist/commands/prd11/batchOptout.js.map +1 -0
- package/dist/commands/prd11/index.d.ts +2 -0
- package/dist/commands/prd11/index.d.ts.map +1 -0
- package/dist/commands/prd11/index.js +13 -0
- package/dist/commands/prd11/index.js.map +1 -0
- package/dist/commands/prd11/perfGate.d.ts +15 -0
- package/dist/commands/prd11/perfGate.d.ts.map +1 -0
- package/dist/commands/prd11/perfGate.js +98 -0
- package/dist/commands/prd11/perfGate.js.map +1 -0
- package/dist/commands/prd13/index.d.ts +15 -0
- package/dist/commands/prd13/index.d.ts.map +1 -0
- package/dist/commands/prd13/index.js +26 -0
- package/dist/commands/prd13/index.js.map +1 -0
- package/dist/commands/prd13/run.d.ts +10 -0
- package/dist/commands/prd13/run.d.ts.map +1 -0
- package/dist/commands/prd13/run.js +29 -0
- package/dist/commands/prd13/run.js.map +1 -0
- package/dist/commands/prd14/index.d.ts +6 -0
- package/dist/commands/prd14/index.d.ts.map +1 -0
- package/dist/commands/prd14/index.js +6 -0
- package/dist/commands/prd14/index.js.map +1 -0
- package/dist/commands/prd15/index.d.ts +8 -0
- package/dist/commands/prd15/index.d.ts.map +1 -0
- package/dist/commands/prd15/index.js +152 -0
- package/dist/commands/prd15/index.js.map +1 -0
- package/dist/commands/registry.d.ts +19 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/registry.js +19 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/contracts/assetManifest.d.ts +80 -0
- package/dist/contracts/assetManifest.d.ts.map +1 -0
- package/dist/contracts/assetManifest.js +9 -0
- package/dist/contracts/assetManifest.js.map +1 -0
- package/dist/contracts/commands.d.ts +53 -0
- package/dist/contracts/commands.d.ts.map +1 -0
- package/dist/contracts/commands.js +37 -0
- package/dist/contracts/commands.js.map +1 -0
- package/dist/index.d.ts +17 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +297 -73
- package/dist/index.js.map +1 -1
- package/dist/library-manifest.d.ts +86 -0
- package/dist/library-manifest.d.ts.map +1 -0
- package/dist/library-manifest.js +95 -0
- package/dist/library-manifest.js.map +1 -0
- package/dist/look/capture.d.ts +51 -0
- package/dist/look/capture.d.ts.map +1 -0
- package/dist/look/capture.js +229 -0
- package/dist/look/capture.js.map +1 -0
- package/dist/look/judge.d.ts +24 -0
- package/dist/look/judge.d.ts.map +1 -0
- package/dist/look/judge.js +151 -0
- package/dist/look/judge.js.map +1 -0
- package/dist/look/lint-static.d.ts +45 -0
- package/dist/look/lint-static.d.ts.map +1 -0
- package/dist/look/lint-static.js +241 -0
- package/dist/look/lint-static.js.map +1 -0
- package/dist/look/rubric.d.ts +70 -0
- package/dist/look/rubric.d.ts.map +1 -0
- package/dist/look/rubric.js +169 -0
- package/dist/look/rubric.js.map +1 -0
- package/dist/meshy/admission.d.ts.map +1 -1
- package/dist/meshy/admission.js +32 -7
- package/dist/meshy/admission.js.map +1 -1
- package/dist/meshy/import.d.ts +7 -1
- package/dist/meshy/import.d.ts.map +1 -1
- package/dist/meshy/import.js +84 -6
- package/dist/meshy/import.js.map +1 -1
- package/dist/migrate-three/CompatibilityWarnings.d.ts +6 -0
- package/dist/migrate-three/CompatibilityWarnings.d.ts.map +1 -0
- package/dist/migrate-three/CompatibilityWarnings.js +24 -0
- package/dist/migrate-three/CompatibilityWarnings.js.map +1 -0
- package/dist/migrate-three/ImportMap.d.ts +19 -0
- package/dist/migrate-three/ImportMap.d.ts.map +1 -0
- package/dist/migrate-three/ImportMap.js +35 -0
- package/dist/migrate-three/ImportMap.js.map +1 -0
- package/dist/migrate-three/R3fMigration.d.ts +32 -0
- package/dist/migrate-three/R3fMigration.d.ts.map +1 -0
- package/dist/migrate-three/R3fMigration.js +70 -0
- package/dist/migrate-three/R3fMigration.js.map +1 -0
- package/dist/migrate-three/ThreeToA3DAdapter.d.ts +8 -0
- package/dist/migrate-three/ThreeToA3DAdapter.d.ts.map +1 -0
- package/dist/migrate-three/ThreeToA3DAdapter.js +20 -0
- package/dist/migrate-three/ThreeToA3DAdapter.js.map +1 -0
- package/dist/migrate-three/emit.d.ts +21 -0
- package/dist/migrate-three/emit.d.ts.map +1 -0
- package/dist/migrate-three/emit.js +117 -0
- package/dist/migrate-three/emit.js.map +1 -0
- package/dist/migrate-three/mappings.d.ts +21 -0
- package/dist/migrate-three/mappings.d.ts.map +1 -0
- package/dist/migrate-three/mappings.js +42 -0
- package/dist/migrate-three/mappings.js.map +1 -0
- package/dist/migrate-three/parse.d.ts +20 -0
- package/dist/migrate-three/parse.d.ts.map +1 -0
- package/dist/migrate-three/parse.js +56 -0
- package/dist/migrate-three/parse.js.map +1 -0
- package/dist/migrate-three/report.d.ts +18 -0
- package/dist/migrate-three/report.d.ts.map +1 -0
- package/dist/migrate-three/report.js +16 -0
- package/dist/migrate-three/report.js.map +1 -0
- package/dist/pull-bridge/adapters.d.ts +1 -1
- package/dist/pull-bridge/adapters.d.ts.map +1 -1
- package/dist/pull-bridge/adapters.js +17 -4
- package/dist/pull-bridge/adapters.js.map +1 -1
- package/dist/pull-bridge/provenance.d.ts.map +1 -1
- package/dist/pull-bridge/provenance.js +3 -2
- package/dist/pull-bridge/provenance.js.map +1 -1
- package/dist/pull-bridge/pullable.d.ts.map +1 -1
- package/dist/pull-bridge/pullable.js +14 -3
- package/dist/pull-bridge/pullable.js.map +1 -1
- package/dist/pull-bridge/scoring.d.ts +36 -8
- package/dist/pull-bridge/scoring.d.ts.map +1 -1
- package/dist/pull-bridge/scoring.js +143 -47
- package/dist/pull-bridge/scoring.js.map +1 -1
- package/dist/pull-bridge/search.d.ts +2 -0
- package/dist/pull-bridge/search.d.ts.map +1 -1
- package/dist/pull-bridge/search.js +17 -10
- package/dist/pull-bridge/search.js.map +1 -1
- package/dist/pull-bridge.d.ts +2 -2
- package/dist/pull-bridge.d.ts.map +1 -1
- package/dist/pull-bridge.js +24 -8
- package/dist/pull-bridge.js.map +1 -1
- package/package.json +6 -3
- package/skills/agent-files/AGENTS.md +3 -0
- package/skills/aura3d-animation-studio/SKILL.md +153 -0
- package/skills/aura3d-animation-studio/references/shot-looks.md +26 -0
- package/skills/aura3d-art-direction/SKILL.md +84 -0
- package/skills/aura3d-art-direction/references/failure-gallery.md +64 -0
- package/skills/aura3d-art-direction/references/framing-and-shots.md +45 -0
- package/skills/aura3d-art-direction/references/look-recipes.md +32 -0
- package/skills/aura3d-art-direction/references/quality-bar.md +103 -0
- package/skills/aura3d-art-direction/references/reference-frames.md +82 -0
- package/skills/aura3d-assets/SKILL.md +151 -0
- package/skills/aura3d-assets/references/preview-under-look.md +26 -0
- package/skills/aura3d-browser-game/SKILL.md +149 -0
- package/skills/aura3d-browser-game/references/genre-looks.md +52 -0
- package/skills/aura3d-character-animation/SKILL.md +129 -0
- package/skills/aura3d-character-animation/references/stage-and-lighting.md +31 -0
- package/skills/aura3d-core/SKILL.md +143 -0
- package/skills/aura3d-core/references/boundaries.md +91 -0
- package/skills/aura3d-evidence-review/SKILL.md +106 -0
- package/skills/aura3d-game-art/SKILL.md +118 -0
- package/skills/aura3d-game-art/references/sheet-check.mjs +58 -0
- package/skills/aura3d-game-art/references/sprite-palettes.md +25 -0
- package/skills/aura3d-materials-environments/SKILL.md +139 -0
- package/skills/aura3d-performance/SKILL.md +97 -0
- package/skills/aura3d-retexture/SKILL.md +115 -0
- package/skills/aura3d-retexture/references/geometry-hash.mjs +89 -0
- package/skills/aura3d-scene-authoring/SKILL.md +132 -0
- package/skills/aura3d-scene-authoring/references/look-by-family.md +28 -0
- package/skills/aura3d-threejs-migration/SKILL.md +125 -0
- package/skills/aura3d-threejs-migration/references/look-mapping.md +27 -0
- package/skills/llms.txt +147 -0
- package/skills/manifest.json +163 -0
- package/skills/meshy-cli/SKILL.md +148 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Look by scene family
|
|
2
|
+
|
|
3
|
+
One look per scene family, matched to `aura3d-art-direction/references/look-recipes.md`
|
|
4
|
+
genres. Values are starting points; the look-dev loop refines them.
|
|
5
|
+
|
|
6
|
+
| Scene family | Look preset | Key light | Palette accent | Atmosphere | Post grade |
|
|
7
|
+
| --- | --- | --- | --- | --- | --- |
|
|
8
|
+
| Physics playground | `interior-industrial` | high window key, 60° elevation | safety orange on concrete | light haze for depth | `product-studio` |
|
|
9
|
+
| Particle fountain | `neon-night` | rim/back light through the spray | cyan-magenta emissive trail | thin fog catching bloom | `neon-night` |
|
|
10
|
+
| Solar system | `space` | single hard key from the sun | warm gold rim on planets | none — void is the look | `space` |
|
|
11
|
+
| Neon tunnel | `neon-arcade` | receding emissive rings | alternating ring hues | fog inside the tube | `neon-night` |
|
|
12
|
+
| Data visualization | `interior-neutral` | soft key over axis plane | single accent per series | none | `product-studio` |
|
|
13
|
+
| Mini golf | `outdoor-day` | warm afternoon key, 40° | turf greens + flag red | light fog on horizon | `daylight-outdoor` |
|
|
14
|
+
| Material lab | `product-studio` | triple softbox | neutral grey stage | none | `product-studio` |
|
|
15
|
+
| City block | `neon-night` | streetlight pools | sodium amber + sign neon | ground fog at street level | `neon-night` |
|
|
16
|
+
| Humanoid walk | `character-showcase` | 3/4 front key + rim | cloth accent color | light ground fog | `product-studio` |
|
|
17
|
+
| Product viewer | `product-studio` | hero softbox | brand accent on plinth | none | `product-studio` |
|
|
18
|
+
| Cinematic scene | `golden-hour` | low warm sun, 15° | teal shadow vs amber key | atmosphere haze layer | `cinematic-film` |
|
|
19
|
+
| Underwater | `underwater` | caustic shafts from surface | deep teal + biolume accent | volume haze, God rays | `underwater` |
|
|
20
|
+
|
|
21
|
+
## Reading the row
|
|
22
|
+
|
|
23
|
+
- Look preset supplies IBL, background, fog base and grade; the row's key and
|
|
24
|
+
palette entries are the scene-specific tweak you apply on top.
|
|
25
|
+
- Fog density belongs to the look until the capture shows depth banding — then
|
|
26
|
+
raise it in the look, not with ad-hoc `world.fog` nodes.
|
|
27
|
+
- Palette accent is one saturated color the eye can find fast; the rest of the
|
|
28
|
+
frame stays in the look's own grade.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aura3d-threejs-migration
|
|
3
|
+
description: Ports three.js code to Aura3D by picking the matching migration template, rewriting to `@aura3d/engine` public APIs, and recording every approximation in the migration notes without drop-in claims. Use when porting three.js or R3F code, reading `THREE.*` imports, running the `aura3d migrate three` codemod (`migrateThreeToA3D`), or scaffolding a migration template (formerly `three-compat-*`).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Aura3D three.js migration
|
|
7
|
+
|
|
8
|
+
Aura3D is not a three.js drop-in. The target of a migration is a route written
|
|
9
|
+
against `@aura3d/engine` public APIs. There is no installed compat shim
|
|
10
|
+
package — `@aura3d/three-compat` was deleted in 4.0.0 — so the migration
|
|
11
|
+
codemod plus an honest written record of what could not be reproduced is the
|
|
12
|
+
on-ramp. Shared rules (claim labels, forbidden patterns, typed assets) are in
|
|
13
|
+
[../aura3d-core/references/boundaries.md](../aura3d-core/references/boundaries.md).
|
|
14
|
+
|
|
15
|
+
## Look target
|
|
16
|
+
|
|
17
|
+
The migration replaces a hand-tuned renderer stack with a look preset: the
|
|
18
|
+
target genre's recipe row maps `toneMapping`, `scene.environment`, exposure and
|
|
19
|
+
fog into `looks.preset(<id>)` + `looks.appOptions(<id>)`. Keep the original
|
|
20
|
+
lighting intent visible in the migration notes rather than porting raw
|
|
21
|
+
toneMapping constants.
|
|
22
|
+
|
|
23
|
+
## Establish the contract
|
|
24
|
+
|
|
25
|
+
1. Run `npx @aura3d/cli@latest --help`, and check the installed
|
|
26
|
+
`@aura3d/engine` version. Name only exports you can see in its types.
|
|
27
|
+
2. Inventory the source: list every `three`, `three/examples/jsm/*`, and
|
|
28
|
+
`three/addons/*` import, plus any `WebGLRenderer`, render loop, loader, and
|
|
29
|
+
`EffectComposer` use. That list is the migration scope.
|
|
30
|
+
3. Read `src/aura-assets.ts`. Every GLB the old code loaded by URL must become
|
|
31
|
+
a typed asset (load `aura3d-assets`).
|
|
32
|
+
4. Benchmark mode: `npm install && npm run build`, then stop.
|
|
33
|
+
|
|
34
|
+
## Procedure
|
|
35
|
+
|
|
36
|
+
1. Pick the closest template and scaffold it with
|
|
37
|
+
`npx create-aura3d@latest <dir> --template <name>`:
|
|
38
|
+
|
|
39
|
+
| Source code looks like | Template |
|
|
40
|
+
| --- | --- |
|
|
41
|
+
| Hand-rolled starter: renderer, ground, lit primitives | `custom-scene` |
|
|
42
|
+
| Product on a studio stage | `premium-product-viewer` |
|
|
43
|
+
| Room or interior built from boxes | `architecture-interior` |
|
|
44
|
+
| Single asset on an inspection stage | `asset-inspector` |
|
|
45
|
+
| Character on a pedestal | `character-viewer` |
|
|
46
|
+
| Material swatch row | `material-authoring` |
|
|
47
|
+
| Bloom or emissive post pass | `postprocess-scene` |
|
|
48
|
+
| Many repeated meshes | `large-scene` |
|
|
49
|
+
|
|
50
|
+
The former `three-compat-*` names scaffold the same templates through a
|
|
51
|
+
deprecation alias (removed next minor). All eight templates import only
|
|
52
|
+
`@aura3d/engine`. Keep it that way.
|
|
53
|
+
2. Map each construct to the engine API. `createAuraApp` owns the renderer,
|
|
54
|
+
scene graph, camera, and frame loop, so delete them rather than port them.
|
|
55
|
+
|
|
56
|
+
| three.js | Aura3D |
|
|
57
|
+
| --- | --- |
|
|
58
|
+
| `WebGLRenderer` plus a render loop | `createAuraApp("#app", { scene })` |
|
|
59
|
+
| `new Scene()` | `scene()` |
|
|
60
|
+
| `PerspectiveCamera` | `camera.perspective(...)` or `camera.orbit(...)` |
|
|
61
|
+
| `OrbitControls` | `interactions.orbit(...)` |
|
|
62
|
+
| Lights | `lights.*` |
|
|
63
|
+
| `MeshStandardMaterial` and friends | `material.*` |
|
|
64
|
+
| Mesh plus a glTF loader | `model(assets.x)` |
|
|
65
|
+
| Box, sphere, plane geometry (set dressing) | `primitives.*` |
|
|
66
|
+
| `EffectComposer` bloom | `effects.bloom(...)` |
|
|
67
|
+
|
|
68
|
+
3. When the port must stay three-shaped for a while, run the CLI codemod
|
|
69
|
+
and keep its output as a report, not as proof:
|
|
70
|
+
`aura3d migrate three "src/**/*.ts" --report` walks each file and prints
|
|
71
|
+
the per-construct verdicts; `--write` applies the rewrite in place. The
|
|
72
|
+
underlying adapter `migrateThreeToA3D(source)` returns `code`,
|
|
73
|
+
`rewrittenImports`, and `warnings`. Imports in `THREE_COMPAT_UNSUPPORTED_THREE_IMPORTS`
|
|
74
|
+
(`EffectComposer`, `RenderPass`, `UnrealBloomPass`, and others) are left
|
|
75
|
+
unchanged with a `postprocessing-unsupported` warning. Treat that as a
|
|
76
|
+
manual rewrite to `effects.*`, never as a pass.
|
|
77
|
+
4. Triage coverage from the codemod's warning list, not a matrix: the
|
|
78
|
+
import map `THREE_COMPAT_THREE_IMPORT_MAP` names every specifier the
|
|
79
|
+
codemod rewrites; anything three-shaped it leaves alone shows up in
|
|
80
|
+
`warnings` as `postprocessing-unsupported` or an unmapped import. Each
|
|
81
|
+
warning is the work item — a manual rewrite to `effects.*` or
|
|
82
|
+
`material.*`, never a pass.
|
|
83
|
+
5. There is no approximation ledger or compatibility matrix anymore — the
|
|
84
|
+
`@aura3d/three-compat` package was deleted in 4.0.0. For every construct
|
|
85
|
+
the codemod could not rewrite, record the approximation yourself in the
|
|
86
|
+
migration notes: what the three.js API did, what the Aura3D replacement
|
|
87
|
+
does, and the honest delta. For example, `MeshPhongMaterial`'s
|
|
88
|
+
Blinn-Phong specular maps to a native `material.*` preset with GGX —
|
|
89
|
+
write that delta down, do not imply equivalence.
|
|
90
|
+
6. Keep `three` out of the engine route. The shipped route must pass
|
|
91
|
+
`aura3d check-deploy --dist dist --source`; a `three` import anywhere in
|
|
92
|
+
the shipped tree fails the deploy check.
|
|
93
|
+
7. Write the migration notes: each supported API by name with the test that
|
|
94
|
+
covers it, each codemod warning and how it was resolved, and each dropped
|
|
95
|
+
or manually rewritten construct.
|
|
96
|
+
8. Build and verify: `npm run build`, then `npm run test` (the template's
|
|
97
|
+
route-health and screenshot specs; run on CI or a remote worker), then
|
|
98
|
+
`aura3d assets validate --source`. Hand claim wording to
|
|
99
|
+
`aura3d-evidence-review`.
|
|
100
|
+
|
|
101
|
+
## Stop and report
|
|
102
|
+
|
|
103
|
+
- The source depends on something with no engine equivalent (custom
|
|
104
|
+
`ShaderMaterial` passes, render targets, `EffectComposer` chains, or an
|
|
105
|
+
import the codemod leaves unmapped): stop and list each construct with the
|
|
106
|
+
codemod warning that flagged it. Do not fake it with CSS, a DOM overlay,
|
|
107
|
+
or a CPU pixel pass.
|
|
108
|
+
- A kept construct renders only approximately: it is not parity. Label that
|
|
109
|
+
part `prototype` or rewrite it natively.
|
|
110
|
+
- A codemod warning you cannot resolve: report it; do not silently keep the
|
|
111
|
+
three.js shape.
|
|
112
|
+
- The old code loaded a GLB by URL and no typed asset replaces it: stop and
|
|
113
|
+
hand off to `aura3d-assets`. Never keep the URL or use `unsafeModelUrl`.
|
|
114
|
+
- Never write "drop-in", "full parity", or "100% three.js compatible". Name
|
|
115
|
+
the specific supported API and the test that proves it.
|
|
116
|
+
|
|
117
|
+
## References
|
|
118
|
+
|
|
119
|
+
- [Migration guide and boundaries](https://github.com/auraoneai/aura3d/blob/main/docs/project/migration.md)
|
|
120
|
+
- [Migration codemod adapter](https://github.com/auraoneai/aura3d/blob/main/packages/aura3d-cli/src/migrate-three/ThreeToA3DAdapter.ts)
|
|
121
|
+
- [Codemod import map](https://github.com/auraoneai/aura3d/blob/main/packages/aura3d-cli/src/migrate-three/ImportMap.ts)
|
|
122
|
+
- [Codemod warnings](https://github.com/auraoneai/aura3d/blob/main/packages/aura3d-cli/src/migrate-three/CompatibilityWarnings.ts)
|
|
123
|
+
- [Codemod CLI command (`aura3d migrate three`)](https://github.com/auraoneai/aura3d/blob/main/packages/aura3d-cli/src/commands/prd15/index.ts)
|
|
124
|
+
- [Custom migration template](https://github.com/auraoneai/aura3d/blob/main/packages/create-aura3d/templates/custom-scene/src/main.ts)
|
|
125
|
+
- [three.js lighting stack → Aura3D look](references/look-mapping.md)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# three.js lighting stack → Aura3D look
|
|
2
|
+
|
|
3
|
+
The single largest visual change in a migration: a hand-assembled renderer,
|
|
4
|
+
lighting and post stack collapses into one look preset. Map by intent, not by
|
|
5
|
+
constant.
|
|
6
|
+
|
|
7
|
+
| three.js source pattern | Replaced by | Watch for |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| `scene.environment` + PMREM + env map | the look's IBL | do not re-add a second environment — lint `look/no-ibl`/`double-aa` guards |
|
|
10
|
+
| `AmbientLight` (any intensity) | drop — the look fills ambient | re-adding it flattens the grade (`look/ambient-kills-ibl`) |
|
|
11
|
+
| `DirectionalLight` key + `castShadow` | the look's key (elevation/azimuth baked per genre) | a second DirectionalLight doubles the shadow read |
|
|
12
|
+
| `toneMapping`, `toneMappingExposure` | the look's `output.preset` | exposure moves inside the preset, not the renderer |
|
|
13
|
+
| `scene.fog = new Fog(...)` | the look's fog/atmosphere | recipe rows give per-genre density |
|
|
14
|
+
| `scene.background = color` | the look's backdrop | a solid color is `look/solid-void` unless declared |
|
|
15
|
+
| `EffectComposer` bloom/vignette | the look's post stack | do not stack `antiAlias`/post twice (`look/double-aa`) |
|
|
16
|
+
| `setPixelRatio` | `looks.appOptions(<id>)` DPR cap | `look/low-dpr` catches manual low ratios |
|
|
17
|
+
| `HemisphereLight` | the look fill (or `lights.hemisphere` when you must override) | hemisphere + IBL flattens (`look/ambient-flattens`) |
|
|
18
|
+
|
|
19
|
+
## Procedure tie-in
|
|
20
|
+
|
|
21
|
+
1. Delete the lighting/renderer block entirely, apply `looks.preset(<genre>)` +
|
|
22
|
+
`looks.appOptions(<genre>)`.
|
|
23
|
+
2. Recapture: the migrated scene's palette, shadow density and background come
|
|
24
|
+
from the look; the ledger records *intent deltas* (e.g. "original had a
|
|
25
|
+
cooler fill"), not constant deltas.
|
|
26
|
+
3. `aura3d look lint` catches the leftovers the ledger cannot: orphaned
|
|
27
|
+
fog nodes, double AA, ambient that kills the IBL.
|
package/skills/llms.txt
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
Aura3D agent guide — a typed scene API for building real 3D apps: scenes, looks,
|
|
2
|
+
lighting, materials, typed assets, camera rigs, gameFeel, SDF text, decals, rigid bodies, and gameplay through
|
|
3
|
+
`@aura3d/engine` plus the `@aura3d/cli` toolchain. Current release: Aura3D 4.0.1 (succeeding 4.0.0).
|
|
4
|
+
|
|
5
|
+
Hello world: every scene gets a look first.
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { createAuraApp, looks, model, scene } from "@aura3d/engine";
|
|
9
|
+
import { assets } from "./aura-assets";
|
|
10
|
+
|
|
11
|
+
createAuraApp("#app", {
|
|
12
|
+
scene: scene().add(looks.preset("product-studio")).add(model(assets.robot)),
|
|
13
|
+
...looks.appOptions("product-studio")
|
|
14
|
+
});
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The quality floor — what the defaults give you, and the never list:
|
|
18
|
+
|
|
19
|
+
- A `looks.preset` supplies environment light (IBL), a shadow-casting key, fog,
|
|
20
|
+
background and a post grade as one unit — never hand-wire
|
|
21
|
+
`lights.ambient()` as the only fill, it flattens shading and kills IBL.
|
|
22
|
+
- Never a solid void background: the look's sky, biome or studio backdrop owns it.
|
|
23
|
+
- Never `pixelRatio`/`qualityProfile`/`safe-basic`/FXAA overrides or
|
|
24
|
+
`replaceTextures: true` — `looks.appOptions(id)` carries the renderer contract.
|
|
25
|
+
- Never a hero subject made of primitives; `model(assets.x)` with a typed
|
|
26
|
+
catalog asset.
|
|
27
|
+
- Never emissive cards or sprites faking reflections, puddles, splashes or glows —
|
|
28
|
+
use the look's `post` grade and `effects.*`.
|
|
29
|
+
- Never CSS/DOM particles, overlays or labels standing in for rendered output;
|
|
30
|
+
HUD lives in the DOM, the scene does not.
|
|
31
|
+
- Keep the key shadow at full strength with contact darkening at the subject's
|
|
32
|
+
feet; fog or atmosphere carries depth to the horizon.
|
|
33
|
+
|
|
34
|
+
three.js → Aura3D mapping (corrected):
|
|
35
|
+
|
|
36
|
+
| three.js | Aura3D |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| `new THREE.Scene()` | `scene()` |
|
|
39
|
+
| `new THREE.Mesh(...)` + `new GLTFLoader()` | `model(assets.x)` (typed asset) |
|
|
40
|
+
| `new THREE.PerspectiveCamera(...)` | `camera.perspective(...)`, `camera.rigs.*` |
|
|
41
|
+
| `AmbientLight` | `lights.hemisphere(...)` or the look's environment fill |
|
|
42
|
+
| `DirectionalLight` key/fill | the look's `key`/`rim` slots |
|
|
43
|
+
| `scene.environment` + PMREM | `environments.preset|hdri`, `world.biome` |
|
|
44
|
+
| `toneMapping`/exposure | `output.preset` and the look's post grade |
|
|
45
|
+
| `setPixelRatio` | `quality: "auto"` via `looks.appOptions` |
|
|
46
|
+
| `castShadow = true` | `shadow: true` on the light/node |
|
|
47
|
+
| `EffectComposer` passes | `output.preset` + `effects.*` |
|
|
48
|
+
| `AnimationMixer` | `AnimationController` / `createAnimationController` |
|
|
49
|
+
| `new OrbitControls(...)` | `interactions.orbit(...)` |
|
|
50
|
+
|
|
51
|
+
Effects, post-processing, atmospherics & VFX (`effects.*` in `@aura3d/engine@4.0.1`):
|
|
52
|
+
- Post-processing: `effects.bloom`, `effects.neonBloom`, `effects.cinematicBloom`, `effects.ambientOcclusion`, `effects.contactOcclusion`, `effects.contactShadows`, `effects.screenSpaceReflections`, `effects.depthOfField`, `effects.motionBlur`, `effects.colorGrade`, `effects.vignette`, `effects.filmGrain`, `effects.chromaticAberration`, `effects.antiAlias`, `effects.outline`
|
|
53
|
+
- Atmospherics & volumetrics: `effects.fog`, `effects.depthFog`, `effects.volumetricFog`, `effects.fogVolume`, `effects.lightCone`, `effects.auroraRibbon`, `atmosphere.setSky`, `atmosphere.setWetness`
|
|
54
|
+
- Particles, weather & trails: `effects.particles`, `effects.meshParticles`, `effects.rain`, `effects.snow`, `effects.flipbook`, `effects.trail`, `effects.beam`, `ResidentGPUParticleRenderer` (WebGPU compute)
|
|
55
|
+
- Game feel & genre kits: `game.feel` / `app.feel` (`hitStop`, `slowMo`, `damageFlash`, `speedLines`, `landingDust`, camera trauma), `game.platformer`, `game.racing`, `game.arcadeKart`, `game.grandPrixRoad`, `game.carSoccer`, `game.carSoccerPitch`, `game.racketSports`, `game.fallingBlocks`, `game.fighting`
|
|
56
|
+
|
|
57
|
+
Genre recipes (see `aura3d-art-direction/references/look-recipes.md`):
|
|
58
|
+
|
|
59
|
+
| Genre | Look | Camera + fov | Palette/accent | Atmosphere |
|
|
60
|
+
| --- | --- | --- | --- | --- |
|
|
61
|
+
| platformer | `outdoor-day` | follow2d fov 50 | greens/sky/wood + gold | fog 0.0025 |
|
|
62
|
+
| racing | `golden-hour` | chase fov 60 | asphalt/orange/charcoal + amber | fog 30–180 m |
|
|
63
|
+
| fighting | `arena-fight` | fighting fov 45 | arena dark/rope/crowd + rim | haze cone |
|
|
64
|
+
| arena shooter | `space` | topDown fov 55 | space blue/graphite/teal + magenta | none |
|
|
65
|
+
| sports/table | `interior-industrial` | topDown fov 40 | turf/white/dark + ball | indoor haze |
|
|
66
|
+
| product | `product-studio` | orbit fov 35 | grey/white/metal + brand | none |
|
|
67
|
+
| character | `character-showcase` | orbit fov 40 | costume neutrals + rim | room haze |
|
|
68
|
+
| outdoor env | `overcast` | wide fov 55 | green/slate/fog blue + wildflower | fog 0.004 |
|
|
69
|
+
| interior | `interior-warm` | orbit fov 45 | wood/cream/spines + plant | dust shafts |
|
|
70
|
+
| night city | `night-city` | tele fov 35 | sodium/neon/asphalt + cyan | fog 15–90 m |
|
|
71
|
+
| space | `space` | orbit fov 60 | void blue/limb/stars + aurora | none |
|
|
72
|
+
| underwater | `underwater` | follow fov 50 | deep blue/teal/kelp + coral | scatter 0.03 |
|
|
73
|
+
| cinematic | `polar-night` | dolly fov 35 | aurora/snow/night + lantern | snow mist 0.006 |
|
|
74
|
+
|
|
75
|
+
The look-dev loop:
|
|
76
|
+
|
|
77
|
+
1. Pick the genre recipe row and 1–3 reference frames; write a 3-line look brief.
|
|
78
|
+
2. Build with the look preset and typed assets; no renderer overrides.
|
|
79
|
+
3. Capture `aura3d look capture --route / --shots opening,mid,action`.
|
|
80
|
+
4. Judge each frame against the quality-bar rubric; read `aura3d look lint`.
|
|
81
|
+
5. Fix the single highest-leverage thing; one change per round; repeat until
|
|
82
|
+
every category reads 7+ or the loop exits flat.
|
|
83
|
+
|
|
84
|
+
Assets — resolve real objects from the catalog first. Do not invent asset paths,
|
|
85
|
+
URLs or ids — every model comes from a generated `assets.<key>`:
|
|
86
|
+
|
|
87
|
+
- `npx @aura3d/cli@latest assets search "<object>"` (natural descriptive phrase;
|
|
88
|
+
the catalog is ~850k license-verified GLB/glTF aggregated from Objaverse,
|
|
89
|
+
Sketchfab, Poly Pizza, Poly Haven, OS3A, Khronos and CC0 packs).
|
|
90
|
+
- `assets resolve "<object>" --name <name>` pulls the top auto-pullable match
|
|
91
|
+
and types it as `assets.<name>` → `model(assets.<name>)`.
|
|
92
|
+
- Add local files with `assets add ./assets/model.glb --name model`, then read
|
|
93
|
+
the generated `src/aura-assets.ts`.
|
|
94
|
+
- Playable characters: `assets resolve "animated humanoid fighting character"
|
|
95
|
+
--profile fighting-character` keeps provenance in `aura.assets.json`.
|
|
96
|
+
|
|
97
|
+
Scaffold:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
npx create-aura3d@latest my-scene --template product-viewer
|
|
101
|
+
npx create-aura3d@latest my-fighter --template fighting-game
|
|
102
|
+
cd my-scene && npm run dev
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Mandatory 3D game & scene anti-failure guardrails:
|
|
106
|
+
|
|
107
|
+
1. No primitive-box characters, vehicles, or hero props ("no stick-figure humans or box cars"):
|
|
108
|
+
- Never assemble characters, athletes, enemies, vehicles, aircraft, trees, or architectural landmarks out of `primitives.box`, `primitives.sphere`, or `primitives.cylinder` — keep every silhouette, look, lighting, and shadow readable with real 3D geometry.
|
|
109
|
+
- Every character, vehicle, creature, weapon, and landmark must mount a real 3D GLB via `model(assets.<name>, { targetMaxDimension, role })` from `src/aura-assets.ts`. If the catalog lacks a required 3D model, generate a bespoke PBR 3D model with Meshy (`meshy`) and admit it via `aura3d assets import-meshy`.
|
|
110
|
+
- Primitives (`primitives.plane`, `primitives.box`, `primitives.cylinder`, `primitives.torus`) are reserved strictly for ground/court surfaces, field lines, UI rings/reticles, laser beams, and invisible physics colliders.
|
|
111
|
+
2. Boot directly into live 60 FPS 3D gameplay (no blocking start modals):
|
|
112
|
+
- Never hide the 3D canvas, camera framing, or atmosphere behind an opaque full-screen HTML start menu, character select modal, or briefing overlay on initial page load, and never require query parameters (`?autoplay=1`, `?demo=1`, `?play=1`) for the scene to animate.
|
|
113
|
+
- Every game route must start in active 60 FPS gameplay on Frame 1 with an intelligent AI autopilot/demo controller that plays the game autonomously and yields instant manual control on the first keyboard (`keydown`), pointer, touch, or gamepad input.
|
|
114
|
+
- Keep mode, stage, camera, and roster selectors in a compact, non-blocking top HUD bar, and always call `button.blur()` after button clicks so `Space` or `Enter` gameplay keys never re-trigger focused HUD buttons.
|
|
115
|
+
3. Always decimate and compress Meshy 3D GLBs before admission (`<= 20,000` vertices, `<= 2 MB`, 16-bit indices):
|
|
116
|
+
- Raw Meshy exports often contain `200,000–1,750,000` vertices and `20–65 MB` of uncompressed 4K PNG textures, which stall main-thread glTF parsing and exhaust GPU memory when multiple models load in one scene.
|
|
117
|
+
- Every generated Meshy GLB must be simplified (`MeshoptSimplifier` to `<= 20,000` vertices for props/vehicles, 16-bit `Uint16Array` indices, de-interleaved `byteStride === 0` buffers) and have its textures compressed to `<= 1024x1024` (`~0.5–2.0 MB` per GLB) before being admitted into `public/aura-assets/` so PBR palette, contrast, and reflection stay responsive.
|
|
118
|
+
4. Always use canonical typed asset manifest refs (`hash` required):
|
|
119
|
+
- The production glTF bridge requires `createAssetProvenance(node.asset).source === "typed-aura-assets-manifest"`, which requires a valid 64-character `sha256-...` `hash` and `public/aura-assets/...` provenance from `aura.assets.json` / `src/aura-assets.ts` so the rendered look and silhouette load cleanly.
|
|
120
|
+
- Never omit `hash` in custom `defineAssets(...)` declarations and never place unhashed duplicate GLBs in route-local `apps/<route>/public/aura-assets/` that collide with root `public/aura-assets/`.
|
|
121
|
+
5. Mutate node handles instead of calling `app.setScene()` on every restart:
|
|
122
|
+
- Do not call `app.setScene()` when restarting a round, hole, or bout on the same stage/world; tearing down and remounting the scene disposes live GPU resources, breaks lighting and postprocess continuity, and aborts in-flight GLB loads. Track a scene signature (`stageId` / `worldId`) and reset positions, visibility, and animations through runtime node handles (`app.nodes.require(...)`).
|
|
123
|
+
|
|
124
|
+
Claims: use every feature freely. Claim only what a judged capture shows.
|
|
125
|
+
|
|
126
|
+
- Label every capability as one of: `createAuraApp` root safe API,
|
|
127
|
+
`production-runtime`, `rendering` internals, CLI asset pipeline, template-only
|
|
128
|
+
scaffold, prototype, or roadmap.
|
|
129
|
+
- Public examples prove only what the safe API renders through `@aura3d/engine`.
|
|
130
|
+
- A compiling route is not proof: route health, typed provenance and a readable
|
|
131
|
+
frame are required.
|
|
132
|
+
|
|
133
|
+
Release integrity rules:
|
|
134
|
+
- no raw string asset IDs, raw GLB/glTF URLs, `unsafeModelUrl(...)`, `three` imports, or `GLTFLoader` in public examples;
|
|
135
|
+
- no primary character, vehicle, product, weapon, creature, world, or hero environment made only from primitives unless the route is explicitly abstract visualization;
|
|
136
|
+
- no CSS/DOM particle implementation for examples claiming Aura3D particle rendering;
|
|
137
|
+
- no WebGPU, PBR, postprocess, skinned animation, morph, or game-runtime claim without matching browser evidence;
|
|
138
|
+
- no public showcase or README claim that exceeds detected capability, route-health evidence, or screenshots.
|
|
139
|
+
|
|
140
|
+
Benchmark mode: if `aura3d look capture` is available, run the look-dev loop;
|
|
141
|
+
otherwise run finite commands (`npm install && npm run build`) then stop and
|
|
142
|
+
label the result `prototype`.
|
|
143
|
+
|
|
144
|
+
| Scene Kit | API | Status |
|
|
145
|
+
| --- | --- | --- |
|
|
146
|
+
| Material lab | `sceneKits.materialLab()` | root-proven (partial advanced coat extensions) |
|
|
147
|
+
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "aura3d.skills/1.0",
|
|
3
|
+
"cliVersion": "4.0.0",
|
|
4
|
+
"docsBase": "https://github.com/auraoneai/aura3d/blob/main/",
|
|
5
|
+
"coreSet": [
|
|
6
|
+
"aura3d-core",
|
|
7
|
+
"aura3d-art-direction",
|
|
8
|
+
"aura3d-assets",
|
|
9
|
+
"aura3d-evidence-review",
|
|
10
|
+
"aura3d-scene-authoring"
|
|
11
|
+
],
|
|
12
|
+
"skills": {
|
|
13
|
+
"aura3d-core": {
|
|
14
|
+
"tier": "core",
|
|
15
|
+
"prd": "C1"
|
|
16
|
+
},
|
|
17
|
+
"aura3d-scene-authoring": {
|
|
18
|
+
"tier": "core",
|
|
19
|
+
"prd": "C2"
|
|
20
|
+
},
|
|
21
|
+
"aura3d-assets": {
|
|
22
|
+
"tier": "core",
|
|
23
|
+
"prd": "C3"
|
|
24
|
+
},
|
|
25
|
+
"aura3d-evidence-review": {
|
|
26
|
+
"tier": "core",
|
|
27
|
+
"prd": "C4"
|
|
28
|
+
},
|
|
29
|
+
"aura3d-art-direction": {
|
|
30
|
+
"tier": "core",
|
|
31
|
+
"prd": "QR13"
|
|
32
|
+
},
|
|
33
|
+
"aura3d-browser-game": {
|
|
34
|
+
"tier": "domain",
|
|
35
|
+
"prd": "D1"
|
|
36
|
+
},
|
|
37
|
+
"aura3d-character-animation": {
|
|
38
|
+
"tier": "domain",
|
|
39
|
+
"prd": "D2"
|
|
40
|
+
},
|
|
41
|
+
"aura3d-animation-studio": {
|
|
42
|
+
"tier": "domain",
|
|
43
|
+
"prd": "D3"
|
|
44
|
+
},
|
|
45
|
+
"aura3d-threejs-migration": {
|
|
46
|
+
"tier": "domain",
|
|
47
|
+
"prd": "D4"
|
|
48
|
+
},
|
|
49
|
+
"meshy-cli": {
|
|
50
|
+
"tier": "asset",
|
|
51
|
+
"prd": "P1"
|
|
52
|
+
},
|
|
53
|
+
"aura3d-materials-environments": {
|
|
54
|
+
"tier": "asset",
|
|
55
|
+
"prd": "P2"
|
|
56
|
+
},
|
|
57
|
+
"aura3d-game-art": {
|
|
58
|
+
"tier": "asset",
|
|
59
|
+
"prd": "P3"
|
|
60
|
+
},
|
|
61
|
+
"aura3d-retexture": {
|
|
62
|
+
"tier": "asset",
|
|
63
|
+
"prd": "P4"
|
|
64
|
+
},
|
|
65
|
+
"aura3d-performance": {
|
|
66
|
+
"tier": "later",
|
|
67
|
+
"prd": "L1"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"templates": {
|
|
71
|
+
"product-viewer": [
|
|
72
|
+
"aura3d-materials-environments",
|
|
73
|
+
"aura3d-retexture",
|
|
74
|
+
"meshy-cli"
|
|
75
|
+
],
|
|
76
|
+
"cinematic-scene": [
|
|
77
|
+
"aura3d-materials-environments",
|
|
78
|
+
"aura3d-character-animation"
|
|
79
|
+
],
|
|
80
|
+
"mini-game": [
|
|
81
|
+
"aura3d-browser-game",
|
|
82
|
+
"aura3d-materials-environments",
|
|
83
|
+
"aura3d-game-art"
|
|
84
|
+
],
|
|
85
|
+
"racing-starter": [
|
|
86
|
+
"aura3d-browser-game",
|
|
87
|
+
"aura3d-materials-environments",
|
|
88
|
+
"aura3d-game-art"
|
|
89
|
+
],
|
|
90
|
+
"falling-blocks-starter": [
|
|
91
|
+
"aura3d-browser-game",
|
|
92
|
+
"aura3d-materials-environments",
|
|
93
|
+
"aura3d-game-art"
|
|
94
|
+
],
|
|
95
|
+
"fighting-game": [
|
|
96
|
+
"aura3d-browser-game",
|
|
97
|
+
"aura3d-materials-environments",
|
|
98
|
+
"aura3d-character-animation",
|
|
99
|
+
"aura3d-game-art"
|
|
100
|
+
],
|
|
101
|
+
"arena-shooter": [
|
|
102
|
+
"aura3d-browser-game",
|
|
103
|
+
"aura3d-materials-environments",
|
|
104
|
+
"aura3d-game-art"
|
|
105
|
+
],
|
|
106
|
+
"character-controller": [
|
|
107
|
+
"aura3d-browser-game",
|
|
108
|
+
"aura3d-materials-environments",
|
|
109
|
+
"aura3d-character-animation"
|
|
110
|
+
],
|
|
111
|
+
"animation-channel": [
|
|
112
|
+
"aura3d-character-animation",
|
|
113
|
+
"aura3d-animation-studio"
|
|
114
|
+
],
|
|
115
|
+
"prompt-animation-channel": [
|
|
116
|
+
"aura3d-character-animation",
|
|
117
|
+
"aura3d-animation-studio"
|
|
118
|
+
],
|
|
119
|
+
"animation-studio": [
|
|
120
|
+
"aura3d-character-animation",
|
|
121
|
+
"aura3d-animation-studio"
|
|
122
|
+
],
|
|
123
|
+
"episode-builder": [
|
|
124
|
+
"aura3d-character-animation",
|
|
125
|
+
"aura3d-animation-studio"
|
|
126
|
+
],
|
|
127
|
+
"premium-product-viewer": [
|
|
128
|
+
"aura3d-threejs-migration",
|
|
129
|
+
"aura3d-materials-environments"
|
|
130
|
+
],
|
|
131
|
+
"architecture-interior": [
|
|
132
|
+
"aura3d-threejs-migration",
|
|
133
|
+
"aura3d-materials-environments"
|
|
134
|
+
],
|
|
135
|
+
"material-authoring": [
|
|
136
|
+
"aura3d-threejs-migration",
|
|
137
|
+
"aura3d-materials-environments"
|
|
138
|
+
],
|
|
139
|
+
"asset-inspector": [
|
|
140
|
+
"aura3d-threejs-migration"
|
|
141
|
+
],
|
|
142
|
+
"character-viewer": [
|
|
143
|
+
"aura3d-threejs-migration",
|
|
144
|
+
"aura3d-character-animation"
|
|
145
|
+
],
|
|
146
|
+
"postprocess-scene": [
|
|
147
|
+
"aura3d-threejs-migration"
|
|
148
|
+
],
|
|
149
|
+
"custom-scene": [
|
|
150
|
+
"aura3d-threejs-migration"
|
|
151
|
+
],
|
|
152
|
+
"large-scene": [
|
|
153
|
+
"aura3d-threejs-migration",
|
|
154
|
+
"aura3d-performance"
|
|
155
|
+
]
|
|
156
|
+
},
|
|
157
|
+
"clients": {
|
|
158
|
+
"claude": ".claude/skills",
|
|
159
|
+
"cursor": ".cursor/skills",
|
|
160
|
+
"generic": ".agents/skills",
|
|
161
|
+
"copilot": ".github/skills"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: meshy-cli
|
|
3
|
+
description: Guides safe Meshy 3D generation, retexture, remesh, rigging, and animate work through the pinned official CLI and admits results with `aura3d assets import-meshy`. Use when the catalog has no clean candidate, or when planning, generating, resuming, downloading, post-processing, or admitting Meshy assets for Aura3D.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Meshy CLI
|
|
7
|
+
|
|
8
|
+
The installed official Meshy CLI is the command authority. Do not reproduce
|
|
9
|
+
its API or trust remembered flags. Paid-generation controls are shared in
|
|
10
|
+
[boundaries](../aura3d-core/references/boundaries.md).
|
|
11
|
+
|
|
12
|
+
## Look target
|
|
13
|
+
|
|
14
|
+
Decide the look before writing the generation prompt — the recipe row's palette
|
|
15
|
+
and material mood belong in the Meshy text ("matte ceramic", "sun-faded
|
|
16
|
+
plastic") so the returned PBR set lands inside the frame's lighting instead of
|
|
17
|
+
fighting it. Judge the result under the scene's look preset, not in a neutral
|
|
18
|
+
viewer.
|
|
19
|
+
|
|
20
|
+
## Establish the contract
|
|
21
|
+
|
|
22
|
+
1. Run `meshy --version` and require the repository pin `0.2.0`.
|
|
23
|
+
2. Read `meshy --help`, `meshy resources`, and `meshy <resource> create --help`
|
|
24
|
+
for every resource you will call.
|
|
25
|
+
3. Run `npx @aura3d/cli@latest --help` and confirm `assets import-meshy` and
|
|
26
|
+
its `--profile prop|environment|vehicle|humanoid` values.
|
|
27
|
+
4. Confirm the catalog was tried first (`aura3d-assets`) and its rejection
|
|
28
|
+
reasons were reported. For the full upstream agent skill, review and pin a
|
|
29
|
+
revision of [meshy-3d-agent](https://github.com/meshy-dev/meshy-3d-agent)
|
|
30
|
+
before installing; do not copy its text here.
|
|
31
|
+
|
|
32
|
+
## Decision tree
|
|
33
|
+
|
|
34
|
+
Start from the closest existing mesh and pick the smallest operation:
|
|
35
|
+
|
|
36
|
+
| Situation | Operation |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| Geometry and topology are right, look is wrong | `meshy retexture create` (hand the look to `aura3d-retexture` first) |
|
|
39
|
+
| Look is right, triangle count or topology fails the profile | `meshy remesh create --target-polycount N` |
|
|
40
|
+
| Textured humanoid, static, needs a skeleton | `meshy rigging create --height-meters M` |
|
|
41
|
+
| Rig succeeded, a named action is missing | `meshy animate create --rig-task-id <id> --action-id N` |
|
|
42
|
+
| Nothing usable exists | `meshy make "<prompt>"` or `meshy make ./ref.png` |
|
|
43
|
+
| Only format or real-world size is wrong | `meshy convert` or `meshy resize` |
|
|
44
|
+
|
|
45
|
+
Reject instead of generating when the subject is a named real product,
|
|
46
|
+
brand, or person whose rights you cannot evidence; when rights evidence for
|
|
47
|
+
the output cannot be recorded; when the user has not approved a maximum; or
|
|
48
|
+
when a catalog candidate already passes the rubric.
|
|
49
|
+
|
|
50
|
+
## Procedure
|
|
51
|
+
|
|
52
|
+
1. Plan: `meshy make "<prompt>" --dry-run` and show the steps and estimate.
|
|
53
|
+
For single resources, read the create help and state the planned inputs.
|
|
54
|
+
2. Get explicit approval for the maximum, then pass `--max-credits <approved>`.
|
|
55
|
+
3. Run, preferring `--async` when other work can proceed. Persist task IDs
|
|
56
|
+
and provider resume hints in ignored local state. Resume a completed
|
|
57
|
+
preview; never recreate paid work that succeeded.
|
|
58
|
+
4. Download immediately: `-o artifacts/meshy/<asset>/`. Never overwrite an
|
|
59
|
+
existing output directory without direct instruction.
|
|
60
|
+
5. Texture precedence on `retexture create`: `--input-task-id` wins over
|
|
61
|
+
`--model-url`; `--multiview-image-urls` excludes both `--text-style-prompt`
|
|
62
|
+
and `--image-style-url`, which exclude each other. Keep
|
|
63
|
+
`--enable-original-uv true` to preserve an admitted mesh's UVs, and keep
|
|
64
|
+
`--enable-pbr true` so normal, metallic, roughness, and emission maps exist.
|
|
65
|
+
6. Profile traps, from the Aura3D admission budgets:
|
|
66
|
+
|
|
67
|
+
| `--profile` | Max triangles | Min triangles | Max textures | Max texture px |
|
|
68
|
+
| --- | --- | --- | --- | --- |
|
|
69
|
+
| `prop` | 100,000 | none | 8 | 4096 |
|
|
70
|
+
| `vehicle` | 250,000 | 1,000 | 12 | 4096 |
|
|
71
|
+
| `humanoid` | 150,000 | 3,000 | 12 | 4096 |
|
|
72
|
+
| `environment` | 500,000 | none | 16 | 8192 |
|
|
73
|
+
|
|
74
|
+
Meshy `--texture-resolution` defaults to `4k`; `8k` fails every profile
|
|
75
|
+
except `environment`. With `--enable-pbr` each map counts toward the
|
|
76
|
+
texture limit. Non-indexed geometry leaves the triangle check `unproven`.
|
|
77
|
+
Omitting `--profile` infers it from `--role` (`character` to humanoid,
|
|
78
|
+
`vehicle` to vehicle, `world`/`environment`/`track` to environment, else
|
|
79
|
+
prop). Remesh defaults to 30,000; about 10,000 rigs well. Raw Meshy exports
|
|
80
|
+
often contain `200,000–1,750,000` vertices and `20–65 MB` of uncompressed 4K
|
|
81
|
+
PNG textures, which stall main-thread glTF parsing and exhaust GPU memory
|
|
82
|
+
when multiple models share one scene look and lighting setup. Before
|
|
83
|
+
admission into `public/aura-assets/`, always simplify every generated Meshy
|
|
84
|
+
GLB (`MeshoptSimplifier` to `<= 20,000` vertices for props/vehicles, 16-bit
|
|
85
|
+
`Uint16Array` indices, de-interleaved `byteStride === 0` buffers) and
|
|
86
|
+
compress textures to `<= 1024x1024` (`~0.5–2.0 MB` per GLB) so silhouettes,
|
|
87
|
+
shadows, palette, and PBR reflections load fast.
|
|
88
|
+
7. Admit the local output with rights evidence.
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
npx @aura3d/cli@latest assets import-meshy artifacts/meshy/arena-relic/ \
|
|
92
|
+
--name arenaRelic --rights-evidence artifacts/meshy/arena-relic/rights.json \
|
|
93
|
+
--profile prop --role prop --thumbnail artifacts/meshy/arena-relic/thumbnail.png
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Use `--file` when the run has several GLBs. Import defaults to
|
|
97
|
+
`--quality candidate` and refuses release certification. Read the
|
|
98
|
+
admission `blockers` and `unproven` lists; `routeReady: false` is a result
|
|
99
|
+
to report. Ensure the admitted entry in `aura.assets.json` /
|
|
100
|
+
`src/aura-assets.ts` carries a valid 64-character `sha256-...` `hash` and
|
|
101
|
+
`public/aura-assets/...` provenance for clean look and silhouette so
|
|
102
|
+
`createAssetProvenance(node.asset).source === "typed-aura-assets-manifest"`
|
|
103
|
+
preserves lighting and contrast; never omit `hash` in custom
|
|
104
|
+
`defineAuraAssets(...)` / `defineAssets` declarations (keeps shadow and
|
|
105
|
+
reflection intact) or place unhashed duplicate GLBs in
|
|
106
|
+
`apps/<route>/public/aura-assets/`.
|
|
107
|
+
8. Rig handoff: after importing a rigged humanoid, inspect it and map clips
|
|
108
|
+
before any code names them, then load `aura3d-character-animation`.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
npx @aura3d/cli@latest assets inspect public/aura-assets/<file>.glb --animation --humanoid --skeleton
|
|
112
|
+
npx @aura3d/cli@latest assets validate-animation --clips <from inspect> \
|
|
113
|
+
--map idle=<clip>,walk=<clip>,run=<clip> --require idle,walk,run --require-rig
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
9. Use only the generated `assets.<key>` in code. Provider URLs, task IDs,
|
|
117
|
+
and `artifacts/meshy` paths never appear in route source. Send review to
|
|
118
|
+
`aura3d-evidence-review`.
|
|
119
|
+
|
|
120
|
+
## Safety
|
|
121
|
+
|
|
122
|
+
- Keep credentials out of arguments, prompts, logs, commits, and output. Use
|
|
123
|
+
OAuth locally (`meshy auth login`) or runtime `MESHY_API_KEY` injection in
|
|
124
|
+
authorized CI. Never use `auth login --with-key` with a pasted key.
|
|
125
|
+
- Send Meshy only intentional prompts and selected media, never repository
|
|
126
|
+
source or unrelated user data.
|
|
127
|
+
- Propagate Meshy exit codes (3 auth, 4 validation, 6 rate limit, 8 timeout,
|
|
128
|
+
9 credits exhausted). Prism or agent-capacity failures are separate issues.
|
|
129
|
+
|
|
130
|
+
## Stop and report
|
|
131
|
+
|
|
132
|
+
- No approved maximum: stop after the dry run and present the plan.
|
|
133
|
+
- Exit code 9 or a plan above the approved maximum: stop; do not split the
|
|
134
|
+
job to stay under the cap.
|
|
135
|
+
- Admission reports blockers for the chosen profile: keep the file as a
|
|
136
|
+
rejected local candidate, report the failing checks, and label the route
|
|
137
|
+
`prototype` or `blocked`.
|
|
138
|
+
- `validate-animation` reports missing clips: do not name them in code;
|
|
139
|
+
report the gap and consider `meshy animate` with fresh approval.
|
|
140
|
+
- Rights evidence cannot be produced: do not import.
|
|
141
|
+
|
|
142
|
+
## References
|
|
143
|
+
|
|
144
|
+
- [Boundaries](../aura3d-core/references/boundaries.md)
|
|
145
|
+
- [Aura3D Meshy pipeline](https://github.com/auraoneai/aura3d/blob/main/docs/meshy-cli.md)
|
|
146
|
+
- [Admission budgets source](https://github.com/auraoneai/aura3d/blob/main/packages/aura3d-cli/src/meshy/admission.ts)
|
|
147
|
+
- [Meshy CLI](https://github.com/meshy-dev/meshy-cli)
|
|
148
|
+
- [Meshy API docs](https://docs.meshy.ai/en/api)
|