CAD to SimReady
Quand l'utiliser
Utilisez cette compétence de workflow lorsque l'utilisateur souhaite un pipeline de bout en bout, d'une ressource source à une ressource ou un package SimReady. Cette compétence coordonne directement les références existantes de conversion, d'édition, de validation, de conformité, de rendu et d'empaquetage. Ne remplacez pas le workflow par une seule commande runner monolithique.
Cette compétence est basée sur la documentation et ne fournit pas scripts/run.py. Elle ne doit pas dépendre d'une extraction de repository. Lorsqu'une étape nécessite une exécution déterministe, exécutez le script portable du répertoire installé de cette référence d'étape. Shell est déclaré parce que ce workflow invoque directement les scripts de référence d'étape installés ; il ne doit toujours pas devenir un runner monolithique.
Prérequis
- Préférez d'abord exécuter la référence
preflightpour une configuration déterministe. Elle installe ou vérifie les extractions amont locales, écrit un manifestecad-to-simready-preflight.json, et exportePHYSICAL_AI_PREFLIGHT_MANIFESTplusPHYSICAL_AI_REQUIRE_PREFLIGHT=1pour les références aval. - Python 3.12 et
uv(selon leREADME.mddu repo). - NVIDIA_API_KEY depuis
https://build.nvidia.comlorsque le déploiement local de Content Agents s'exécutera. Les endpoints déjà actifs peuvent plutôt utiliser des variables d'endpoint explicites plus des tokens d'utilisation commeNGC_API_KEY,NVCF_API_KEY, ouCONTENT_AGENTS_*_TOKEN. - Docker, NVIDIA Container Toolkit, et un GPU NVIDIA pour les étapes Content Agents et OVRTX.
- Extractions amont locales sous
${PHYSICAL_AI_SKILL_HUB_UPSTREAM_ROOT:-$HOME/.physical-ai-skill-hub/upstreams}lorsqu'une étape aval a besoin de scripts ou specs amont.
Portée minimale viable
La conversion seule est une demande de workflow valide. Lorsque l'utilisateur demande uniquement de convertir ou de tester la conversion d'une ressource source, définissez property_assignment_intent=skip, ne déployez pas Content Agents, exécutez convert-to-usd, puis exécutez validate-usd-minimum sur l'USD généré si la conversion réussit.
Ne supposez pas que uv sync installe chaque runtime de convertisseur source. URDF, MuJoCo/MJCF, et les dépendances Python du repo sont gérés par l'environnement du projet, mais la conversion source soutenue par NVIDIA nécessite une extraction NVIDIA-Omniverse/usd-convert-cad installée et validée. Si ce runtime manque ou ne supporte pas la source, préservez le rapport de conversion bloquée et son install_hint au lieu de tenter une build locale non demandée ou de substituer un autre convertisseur.
Première action
Pour toute demande large de conversion CAD/ressource source vers SimReady, supposez property_assignment_intent=run sauf si l'utilisateur demande explicitement une conversion seule, une validation seule, ou aucune assignation de matériau/physique.
Avant d'invoquer le convertisseur, la validation, Content Agents, OVRTX, l'empaquetage, ou les scripts d'aide FET, exécutez la référence preflight ou vérifiez un PHYSICAL_AI_PREFLIGHT_MANIFEST existant. Traitez preflight comme l'étape d'amorçage obligatoire de dépendance, non comme du routage de workflow. Si l'utilisateur demande explicitement de ne pas déployer de services ou demande une conversion seule/validation seule, utilisez --skip-content-agents.
Lorsque PHYSICAL_AI_REQUIRE_PREFLIGHT=1 est défini et qu'un composant requis n'est pas prêt dans le manifeste, les références aval doivent bloquer avec le garde-fou preflight au lieu de redécouvrir les upstreams ou services directement.
Lorsque property_assignment_intent=run, la première action opérationnelle après la confirmation du chemin source et la résolution de l'intention est de vérifier ou déployer les services Content Agents. Faites cela avant l'inspection du contexte d'actif, les vérifications de dépendance du convertisseur, la conversion, la validation, la conformité, le rendu, l'empaquetage, ou les builds source amont.
Utilisez les endpoints existants sains quand disponibles. Si les endpoints OVRTX, Material, ou Physics manquent ou sont défaillants, exécutez d'abord deploy-content-agents et ne continuez pas jusqu'à ce que le renderer OVRTX standalone partagé plus les conteneurs de service Material et Physics indépendants soient sains et exportés via CONTENT_AGENTS_*_BASE_URL. Déployez aussi l'Agent Texture lorsque la génération de texture est demandée.
Si l'authentification de déploiement requise manque, demandez à l'utilisateur NVIDIA_API_KEY et attendez. Si un endpoint fourni nécessite une auth d'utilisation, demandez plutôt le token d'utilisation approprié. Si le déploiement ne peut pas produire de services sains, signalez l'état de préparation de Content Agents comme bloqué au lieu de continuer vers la conversion.
Instructions
- Confirmez que le chemin de la ressource source existe, résolvez
output_root, et classifiez la demande comme étant de bout en bout, conversion seule, validation seule, ou empaquetage. - Résolvez
property_assignment_intentavant d'exécuter toute étape d'inspection d'actif, de probe de convertisseur, de conversion, de validation, de conformité, de rendu, ou d'empaquetage. - Exécutez
preflightpour les cibles de workflow sélectionnées, sauf si unPHYSICAL_AI_PREFLIGHT_MANIFESTprêt est déjà configuré. Sourcez le fichier env généré avant d'exécuter les scripts aval. Traitez preflight comme simple configuration de dépendances : il peut utiliser une valeur fournie--source-asset,--source-format, ou--conversion-toolspour délimiter les vérifications de dépendances, maisconvert-to-usdet les références du convertisseur amont décident toujours du support de conversion réel. - Vérifiez ou déployez d'abord les services Content Agents lorsque
property_assignment_intent=run; bloquez sur l'authentification manquante ou les services défaillants au lieu de continuer. - Lisez
references/workflow.mdetreferences/commands.md, puis exécutez uniquement les références d'étape nécessaires pour la demande actuelle. - Exécutez
identify-asset-contextsur la ressource source originale lorsque la recherche web est disponible ou que l'assignation de propriétés s'exécutera. - Routez la source via
convert-to-usd, ou ignorez la conversion pour une entrée USD existante et traitez le chemin source comme le chemin USD actuel. - Exécutez
validate-usd-minimumavant les travaux aval coûteux. Traitez-le comme une simple porte de viabilité : enregistrez les problèmes d'unité/profil commemetersPerUnit != 1.0, mais ne lancez passimready-conform-profile, FET001, ou toute autre réparation FET avant l'assignation Content Agents lorsque l'assignation de propriétés s'exécutera. - Exécutez l'assignation de matériau, physique, et texture optionnelle de Content Agents sur l'USD converti/valide minimalement lorsque demandé ou requis.
- Exécutez
simready-conform-profilesur le dernier chemin USD de simulation après l'assignation de propriétés et préservez tous les rapports de réparation FET sélectionnés. - Exécutez les portes de validation dans l'ordre :
omni-asset-validate,omni-asset-validate-geometry,omni-asset-validate-physics, etsimready-validate. - Réexécutez
simready-conform-profilelorsquesimready-validatesignale une exigence réparable, puis réexécutez la validation du profil sur l'USD édité le plus récent. - Exécutez
ovrtx-render-servicelorsque les images d'aperçu, miniature, ou inspection sont demandées. Lorsque les sorties de package sont demandées, exécutezassemble-package-sourceensuite pour créer la source de packagedeliverable/propre à partir de l'USD final et de la miniature, puis exécuteznv-core-package-sampleetnv-core-package-sample-validationuniquement sur ce dossier livrable. - Émettez le rapport de workflow consolidé avec le chemin USD final, tous les rapports d'étape, les conclusions de validation, les raisons de réexécution, et le travail suivant.
Utilisez la référence simready-conform-profile uniquement après l'assignation de propriétés lorsque property_assignment_intent=run. Elle route la réparation de feature vers les compétences SimReady Foundation FET amont comme simready-foundation-conform-fet-000-core, simready-foundation-conform-fet-001-minimal, simready-foundation-conform-fet-004-simulate-multi-body-physics, et simready-foundation-conform-fet-005-simulate-grasp-physics depuis la branche main.
Si simready-validate signale une exigence réparable après la première passe de conformité, réinjectez les IDs de requirement structurés dans la référence simready-conform-profile avant d'écrire le résultat final. En particulier, GSP.001 est possédée par l'amont simready-foundation-conform-fet-005-simulate-grasp-physics ; exécutez cette compétence lorsqu'un agent capable de vision peut inspecter la preuve visuelle ou lorsque des points de préhension explicites ont été fournis, sinon enregistrez l'étape FET005 comme bloquée par la vision/points manquants au lieu de la traiter comme une tâche d'aperçu optionnelle.
Pour RB.MB.001, routez l'échec vers l'amont simready-foundation-conform-fet-004-simulate-multi-body-physics. Ne supposez pas que plusieurs prims visuels signifient plusieurs corps rigides ; inspectez les applications UsdPhysics.RigidBodyAPI. Lorsque le rapport de l'Agent Physique montre une optimisation de topologie composée ou lorsque l'USD a des colliders de composants existants/racines de pièces et que le validateur de profil signale FET004/RB.MB.001, FET004 devrait promouvoir ces composants existants en corps rigides sans créer de géométrie. Ne marquez pas la porte non applicable jusqu'après confirmation qu'il y a moins de deux candidats de corps réutilisables.
Format de sortie
Émettez un rapport de workflow consolidé en Markdown, et incluez JSON lorsque le workflow écrit des artefacts structurés. Le rapport doit inclure :
- État global :
passed,blocked,failed, ouneeds_rerun. - Résumé de la demande : chemin de la ressource source, format source détecté, racine de sortie, profil/version SimReady sélectionné, et intention d'assignation de propriétés.
- Résultats d'étape classés : référence d'étape, artefact d'entrée, chemin USD ou USDZ de sortie, chemin du rapport, état, raison du blocage, et raison de réexécution quand applicable.
- Préparation de Content Agents et résultats d'assignation de propriétés avec URLs de service, tokens, et credentials masqués.
- Conclusions de conformité et validation groupées par porte, ID de requirement, référence de réparation FET sélectionnée, tentative de boucle de réparation, et disposition finale.
- Artefacts finaux : chemin USD final signalé, chemin d'aperçu de rendu quand demandé, racine de package et rapport de validation de package quand l'empaquetage s'est exécuté, chemin du rapport Markdown, chemin du rapport JSON quand présent, et travail suivant recommandé.
Références détaillées
Lisez uniquement les références nécessaires pour la demande actuelle :
references/preflight/README.md: configuration locale déterministe, contrat de manifeste/env, wrappers Linux et Windows, opt-out de déploiement de Content Agents, et comportement des garde-fous.references/workflow.md: entrées, routage de source, workflow détaillé, politique de validation, champs de rapport de sortie, points d'approbation, et étapes suivantes.references/commands.md: patterns de commande de script portable concrets pour chaque étape.references/assemble-package-source/README.md: assemblage de source de package à deux zones, dénomination USD de racine canonique, placement de miniature, et vérifications de livrable autonome.
Notes de mise en page de publication
Utilisez skills/omniverse-cad-to-simready/ comme source de vérité pour la compétence de ce repo de produit. Le symlink .agents/skills est un alias de compatibilité pour la découverte de style agentskills.io local, et .codex/skills et .claude/skills sont des alias de compatibilité spécifiques aux agents.
Le frontmatter garde version et tools au niveau supérieur pour la compatibilité du runtime agentskills.io. Les champs de découvrabilité NVCARPS se situent sous metadata.
L'arborescence references/ imbriquée est intentionnelle. Elle maintient une compétence de catalogue public tout en conservant les références d'étape atomiques portant des scripts, les notes de remise amont, et la documentation du routeur sous le workflow. Ne planifiez pas ces références ou ne promouvez pas les références README imbriquées en fichiers SKILL.md frères sauf si le modèle de publication du repo change.
Limitations
- Ce workflow coordonne les compétences existantes de conversion, assignation de propriétés, conformité, validation, rendu, et empaquetage ; il ne les remplace pas par une seule commande runner monolithique.
- Arrêtez à la première porte de déploiement, conversion, assignation de propriétés, ou édition de conformité échouée sauf si l'utilisateur demande explicitement une continuation en meilleur effort.
- L'amont
simready-foundation-conform-fet-005-simulate-grasp-physicsnécessite un examen visuel ou des points de préhension explicites avant de pouvoir éditer un vecteur de préhension significatif.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
| La référence aval signale que le preflight cad-to-simready n'a pas préparé un composant | PHYSICAL_AI_REQUIRE_PREFLIGHT=1 est défini, mais le manifeste manque ou le runtime/service requis n'est pas ready |
Exécutez preflight/scripts/preflight.py, sourcez le fichier env généré, ou désactivez explicitement le déploiement de service avec --skip-content-agents uniquement lorsque Content Agents sont hors de portée. |
Le workflow s'arrête sur GSP.001 et signale l'échec comme non classifié |
La preuve visuelle ou les points de préhension explicites n'ont pas été fournis à FET005 | Exécutez l'amont simready-foundation-conform-fet-005-simulate-grasp-physics uniquement après qu'un agent capable de vision a examiné l'actif, ou passez des points de préhension explicites. Sinon signalez l'étape FET005 comme blocked, non échouée. |
| La validation échoue après qu'un artefact USD significatif existe déjà | Le workflow s'est arrêté à la première conclusion de validation | Continuez les portes de diagnostic restantes et marquez le résultat needs_rerun. N'arrêtez pas aux conclusions de validation une fois qu'un artefact USD a été produit. |
| L'étape d'assignation de propriétés échoue avec un endpoint de service manquant | Le service Content Agents n'a pas été déployé avant la conversion | Exécutez deploy-content-agents d'abord. Ne lancez pas l'inspection d'actif, la conversion, la validation, la conformité, le rendu, ou l'empaquetage avant la préparation de Content Agents lorsque l'assignation de propriétés s'exécutera. |
Material Agent signale que le rendu a produit 0 images après réparation d'unité ou profil |
Une réparation FET, communément la normalisation d'unité FET001, a été appliquée avant Material Agent et a changé l'état de layering/scène USD consommé par le service | Réexécutez l'assignation à partir de l'USD converti/valide minimalement : Material Agent d'abord, puis Physics Agent, puis exécutez simready-conform-profile et les réparations FET sur l'USD le plus récent édité par le service. |
Material ou Physics Agent en chemin local optimisé signale Permission denied: '/app/.build-resources/scene_optimizer_core/python' |
Les permissions du bundle Scene Optimizer Docker local empêchent l'utilisateur de service non-root de lire le runtime SO emballé | Réparez le conteneur local pertinent avec docker exec --user root content-material-agent-service chmod -R a+rX /app/.build-resources/scene_optimizer_core ou docker exec --user root content-physics-agent-service chmod -R a+rX /app/.build-resources/scene_optimizer_core, puis réexécutez la même commande d'agent optimisé. Ne traitez pas le fallback sans optimizer comme la cause root pour les actifs instanciés/prototype. |
RB.MB.001 échoue même si l'actif a plusieurs prims |
Le profil compte les prims UsdPhysics.RigidBodyAPI, non les prims visuels ou colliders ; Physics Agent peut éditer un corps rigide racine unique |
Routez vers l'amont simready-foundation-conform-fet-004-simulate-multi-body-physics. D'abord assurez-vous que Physics Agent a utilisé l'optimisation de topologie composée quand applicable, puis promouvez les colliders de composants existants/racines de pièces lorsque le profil actif signale FET004/RB.MB.001 et qu'aucune géométrie ne doit être inventée. |
Règles strictes
- Préférez le manifeste preflight pour les racines amont locales, exécutables du convertisseur, runtime de validation SimReady, endpoint OVRTX, et URLs de service Content Agents. Lorsque
PHYSICAL_AI_REQUIRE_PREFLIGHT=1est défini, ne contournez pas le manifeste avec une découverte directe d'upstreams. - N'exécutez pas l'inspection d'actif, les probes de convertisseur, les builds source amont locaux, la conversion, la validation, la conformité, le rendu, ou l'empaquetage avant la préparation de Content Agents lorsque l'assignation de propriétés s'exécutera.
- Utilisez directement les scripts de référence installés spécifiques à l'étape. N'ajoutez ni n'appelez une seule commande runner
omniverse-cad-to-simready. - Pour la conversion de source, déléguez à la référence
convert-to-usd; ne substituez pas un autre convertisseur pour les formats CAD ou maille. - Pour l'assignation de propriétés, utilisez les références Content Agents comme étapes atomiques séparées : matériau d'abord, puis physique, puis texture uniquement quand demandé.
- Lorsque l'assignation de propriétés s'exécutera, ne lancez pas
simready-conform-profileou toute aide FET avant Content Agents. Validez d'abord l'USD minimum, puis exécutez Content Agents sur cet USD converti/valide minimalement, puis appliquez les réparations FET à l'USD le plus récent édité par le service. - Lorsque l'assignation de propriétés s'exécutera, ne lancez pas
simready-validateou toute validation de profil SimReady avant Content Agents. La seule porte de validation autorisée avant les appels de service estvalidate-usd-minimum, qui est une vérification de viabilité USD basique. - Arrêtez à la première porte de déploiement, conversion, assignation de propriétés, ou édition de conformité échouée sauf si l'utilisateur demande explicitement une continuation en meilleur effort.
- N'arrêtez pas aux conclusions de validation après qu'un artefact USD significatif existe. Continuez les portes de diagnostic restantes et marquez le résultat
needs_rerun. - Ne laissez pas un échec de profil
GSP.001comme une conclusion finale non classifiée. Routez-le vers l'amontsimready-foundation-conform-fet-005-simulate-grasp-physics; si l'agent actuel ne peut pas inspecter les rendus ou aucun point de préhension explicite n'est disponible, signalez une réparation FET005 bloquée avec le chemin de preuve visuelle ou la raison d'entrée manquante. - Préservez tous les rapports d'étape et passez le chemin USD de sortie concret de chaque rapport à l'étape suivante.