Développement d'extension d'add-on Blender

VérifiéSûr

Développement d'extensions pour l'add-on OVRTX de Blender, incluant propriétés, UI, paramètres de rendu, conversion de scène/USD, éditions interactives, et tests.

Spar Skills Guide Bot
DeveloppementAvancé
27/07/2026
Claude CodeCodex
#blender#omniverse#addon-development#usd#render-pipeline

Recommandé pour

Synthèse automatique

Guide de routage pour implémenter des modifications dans l'add-on Blender OVRTX : il indique, pour chaque type de fonctionnalité, les modules de départ, les modules à traverser et les tests à exécuter.

Points forts

  • Table de routage précise par fonctionnalité (propriétés/UI, réglages de rendu, matériaux OpenPBR, topologie de scène, éditions interactives, sessions/séquences, capteurs/AOV, viewport, diagnostics) avec fichiers d'entrée et tests requis.
  • Rappelle les contraintes structurantes du dépôt : imports `bpy` protégés pour garder les modules purs testables, appels worker sur le thread de rendu sérialisé existant.
  • Impose une étape de classification de propriété (topologie USD durable vs valeur propre à l'add-on) avant d'écrire du code.
  • Périmètre explicite : travailler dans le checkout source distribué, avec une sonde de capacité minimale avant de signaler une capacité runtime manquante.

Limites

  • Fortement couplé au dépôt OVRTX/Omniverse : quasiment inutilisable sur un autre add-on ou un autre moteur.
  • Le texte fourni est tronqué en pleine section « Classify ownership before coding », donc la procédure de classification est incomplète.
  • Suppose une connaissance préalable de Blender, d'USD et de l'architecture runtime ; aucun extrait de code ni commande concrète n'est fourni.
Quand l'utiliser

À utiliser lorsqu'on ajoute ou modifie une fonctionnalité de l'add-on Blender OVRTX et qu'il faut savoir quels modules toucher et quels tests lancer.

Quand l'éviter

À éviter pour du développement d'add-on Blender générique ou pour obtenir des exemples de code autonomes plutôt qu'un routage dans un dépôt précis.

Analyse de sécurité

Sûr
Score qualité84/100

This is a purely editorial/process guide for modifying a Blender add-on source tree. It contains no executable payloads, no shell pipelines, no network fetches, no credential or environment access, and no obfuscation. It references internal repository paths and test suites, which limits applicability, but everything it directs (editing Python modules, running pytest, launching a Blender fixture) is ordinary developer workflow with no destructive or exfiltration behavior. No prompt-injection or instruction-override attempts were present in the content.

Aucun point d'attention détecté

Comment cette analyse est faite

Exemples

New render setting
Add a motion-blur exposure setting to the OVRTX add-on render panel: wire it through RTPT_RENDER_SETTINGS, RenderRequest and scene composition, then update the focused render-property and live-change tests.
New sensor product
Add a new sensor/AOV result product in the OVRTX add-on and surface it through the typed result model and engine presentation layer, with the matching render_requests and runtime client tests.
New UI panel toggle
Add a toggle to an existing OVRTX Blender panel, following the property/panel route from properties.py through ui.py and engine.py, and tell me which panel tests to extend.

name: blender-addon-extension-development description: Route and implement source changes in the OVRTX Blender add-on. Use when adding Blender properties or UI, render settings, scene or USD conversion, interactive edits, render sequences, sensor products, viewport presentation, diagnostics, or tests. license: "Apache-2.0" metadata: author: "Max Bickley" version: "0.1" team: "omniverse" domain: "physical-ai" tags: - blender - omniverse - ovrtx - addon-development

Blender add-on extension development

When to Use

Use when adding Blender properties or UI, render settings, scene or USD conversion, interactive edits, render sequences, sensor products, viewport presentation, diagnostics, or tests.

Boundary

Work in the distributed source checkout and use its documented add-on and runtime interfaces. Start with an add-on implementation and use a minimal capability probe before reporting a missing runtime capability.

Use paths below relative to the source root. Preserve guarded bpy imports so pure modules and tests remain importable outside Blender. Keep all worker calls on the existing serialized session-owner/render thread.

Instructions

Choose the narrowest route before editing:

| Feature | Start here | Continue through | Required tests | | --- | --- | --- | --- | | Blender property or panel | addon/ovrtx_blender_example/properties.py | ui.py, engine.py, typed request/composition module | focused property and panel tests such as tests/test_rtpt_scene_properties.py and tests/test_rtpt_render_panel.py | | Render setting | properties.py::RTPT_RENDER_SETTINGS and RtptSettingSpec | render_requests.py::RenderRequest, ovrtx_scene_composition.py, view_update_stream.py, runtime_scheduler.py | test_rtpt_scene_properties.py, test_rtpt_render_product_authoring.py, test_rtpt_live_change.py | | Material graph/OpenPBR | materialx_openpbr_conversion.py::scene_layer_from_materials | texture_materialization.py, blender_signal_translation.py::_material_scene_layer_from_scene | test_materialx_openpbr_conversion.py, test_texture_materialization.py, test_render_requests.py | | Scene object/topology | scene_generation.py::SceneGenerationOwner | _stock_export, _compile_add_on_opinions, topology reconciliation, topology_edit_fallback.py | test_scene_generation.py, test_scene_generation_contract.py, test_topology_edit_fallback.py | | Interactive value edit | blender_signals.py and blender_signal_translation.py | blender_interactive_edit_builders.py, interactive_edit_planner.py, value_edit_conversion.py, interactive_edit_workflow.py, runtime_scheduler.py | corresponding test_blender_*, test_interactive_*, test_value_edit_conversion.py | | Session or sequence | render_requests.py::RenderRequest | ovrtx_session.py, ovrtx_session_controller.py, runtime_scheduler.py, engine.py | test_ovrtx_session.py, test_ovrtx_session_controller.py, test_runtime_scheduler.py, test_final_render_on_rpc_thread.py | | Sensor/AOV result | render_requests.py and ovrtx_runtime_client.py | typed result model, scheduler publication, engine.py presentation | test_render_requests.py, test_ovrtx_runtime_client.py, scheduler and presentation tests | | Viewport upload/display | viewport_handoff.py and viewport_presentation.py | viewport_render_thread.py, engine.py | test_viewport_handoff.py, test_viewport_presentation.py, test_viewport_render_thread.py | | Preflight/diagnostics | preflight.py or the owning module's diagnostics model | user_messages.py, ui.py | test_addon_preflight.py, test_user_messages.py, focused diagnostics test |

For a specialized route, use the matching extend-ovrtx-* skill when present.

Classify ownership before coding

Write down these decisions in the implementation plan:

  1. Identify the Blender signal and the normalized add-on-owned value.
  2. Classify it as durable USD topology, durable USD value, same-session runtime value, session identity, worker-startup configuration, or presentation-only.
  3. Identify the typed request/result boundary. Do not pass arbitrary dictionaries across an existing dataclass boundary just to avoid modeling it.
  4. Decide whether omission means INHERIT, whether an explicit value means OVERRIDE, and how reset returns to inherited behavior.
  5. Identify the observable acceptance result: authored USD, effective setting, typed product, rendered pixels, or an explicit rejection diagnostic.

Implementation

  1. Add pure normalized types and conversion policy in a focused module. Reject unsupported input explicitly; do not silently approximate topology or units.
  2. Add Blender properties and registration in properties.py and __init__.py only when the feature is user-configurable.
  3. Carry the normalized value through RenderRequest or the appropriate edit intent/result type. Include it in identity/digests only when it changes the composed session.
  4. Author durable USD through scene generation or composition. Route supported same-session values through the established edit/update stream. Replace the generation or session for topology and unsupported live writes.
  5. Add UI after the typed path works. Display effective state and rejection or fallback reason, not only the requested value.
  6. Add unit tests at each boundary and one included fixture/probe that observes the actual product with the installed runtime when available.

Architectural invariants

  • Keep Blender callbacks and UI code free of blocking runtime calls.
  • Submit runtime work through RuntimeScheduler/OvrtxSessionController; do not instantiate another worker client in a property callback or operator.
  • Keep current-scene generation separate from exact-stage validation. Exact-stage requests must not replace source materials, lights, or topology.
  • Preserve SceneGenerationOwner.replace/accept/reject: a failed candidate must leave the last accepted generation usable.
  • Keep material, lighting, color, and viewport presentation ownership singular. Do not compensate for a renderer problem by mutating source material values.
  • Make cached keys depend on every input that changes output, and test both reuse and invalidation.
  • Return typed results for non-image products; do not force point clouds or AOVs through an RGBA-only result model.
  • Never report success from an accepted API call alone. Check the composed stage, effective state, product metadata, and visible/numeric output as applicable.

Validation

Run the focused pure-Python tests first, then the complete tests suite. For Blender-dependent behavior, run the documented included Blender fixture. For runtime-dependent behavior, use the documented runtime interface and record versions, request, response, diagnostics, and a caller-selected artifact path.

Test success, inheritance/reset, invalid input, missing optional capability, cache invalidation, session replacement or reuse, cancellation/shutdown, and plain-Python import behavior where relevant.

Escalation gate

Report a runtime capability gap only when the smallest documented-interface probe shows that the typed operation cannot be expressed, is rejected by a compatible runtime, or cannot return enough metadata to distinguish success from false success. Missing add-on routing, USD authoring, threading, UI, conversion, caching, or diagnostics remains add-on work.

Handoff

Return changed paths and symbols, focused and full-suite results, fixture or visual evidence, compatibility notes, and exactly one boundary decision: addon-only or runtime-capability-missing with the minimal probe.

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/blender-add-on-extension-development-ms2s7cy1/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/blender-add-on-extension-development-ms2s7cy1' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/blender-add-on-extension-development-ms2s7cy1/download' --output '.skill-downloads/blender-add-on-extension-development-ms2s7cy1/SKILL.md.part' && mv '.skill-downloads/blender-add-on-extension-development-ms2s7cy1/SKILL.md.part' '.skill-downloads/blender-add-on-extension-development-ms2s7cy1/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/blender-add-on-extension-development-ms2s7cy1/SKILL.md' && test -s '.skill-downloads/blender-add-on-extension-development-ms2s7cy1/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/blender-addon-extension-development' && cp -R '.skill-downloads/blender-add-on-extension-development-ms2s7cy1' '.claude/skills/blender-addon-extension-development'

Codex
test -f '.skill-downloads/blender-add-on-extension-development-ms2s7cy1/SKILL.md' && test -s '.skill-downloads/blender-add-on-extension-development-ms2s7cy1/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/blender-addon-extension-development' && cp -R '.skill-downloads/blender-add-on-extension-development-ms2s7cy1' '.agents/skills/blender-addon-extension-development'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/blender-add-on-extension-development-ms2s7cy1'

openskills read 'blender-add-on-extension-development-ms2s7cy1'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/blender-add-on-extension-development-ms2s7cy1/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires