Extend OVRTX semantic AOVs
When to Use
Use when adding semantic or instance AOV support.
Boundary
Implement stable authoring, product selection, parsing, and presentation in a
feature branch of the distributed source checkout. Treat renderer IDs as
runtime outputs, not persistent scene identity, and use documented typed
readback interfaces.
Code map
- Add
semantic_identity.py to inventory evaluated Blender instances, choose
stable owners, and produce deterministic class/instance records. Keep this
policy separate from renderer-generated numeric IDs.
- Use
addon/ovrtx_blender_example/scene_generation.py and the existing
geometry/material prim builders to attach semantic records to the same
generated prim identities. If semantic opinions are overlays, contribute them
through ovrtx_scene_composition.py rather than editing exported source USD.
addon/ovrtx_blender_example/properties.py and ui.py: expose product
selection and identity diagnostics.
addon/ovrtx_blender_example/render_requests.py: replace a single
color-only render_var assumption with normalized requested product
descriptors while preserving the existing LdrColor/HdrColor path.
addon/ovrtx_blender_example/ovrtx_scene_composition.py: author each
RenderVar's exact sourceName and orderedVars membership; include product
identity in composition/session digests.
addon/ovrtx_blender_example/ovrtx_runtime_client.py: the current
render_result branches accept only LdrColor/HdrColor. Add generic typed
selection/decoding beside _render_var_paths; return a new typed AOV result
carrying bytes/array, shape, dtype, product path, frame/time, and status.
- Add
semantic_aov.py for active-count parsing, ID-map reconciliation,
palettes, tight boxes, and derived overlays. Do not put semantic parsing in
the native binding adapter.
addon/ovrtx_blender_example/ovrtx_session_controller.py and viewport
handoff code: preserve product identity and never feed integer/record buffers
into the RGBA upload path.
Instructions
- Define stable class and instance ownership across Blender objects, linked
data, collections, evaluated instances, USD composition, and flattening.
- Author typed semantic schemas or supported primvars deterministically and
retain an object/prim/label map. Never derive persistent IDs from traversal
order or display colors.
- Expose supported native products such as StableIdSegmentation,
SemanticSegmentation, SemanticIdMap, and SemanticBoundingBox2DTight. Record
product path, type, shape, dtype, orientation, frame, and camera.
- Parse raw buffers losslessly, including active-count versus capacity rules.
Keep raw integer maps separate from palettes, boxes, labels, and overlays.
- Test identity propagation, request composition, buffer parsing, and stale
frame/camera rejection. Validate a tiny occluded fixture, then a
representative multi-object scene at first/middle/last frames.
Required tests
Add tests/test_semantic_identity.py, test_semantic_aov.py, and
test_semantic_aov_runtime.py. Extend test_ovrtx_runtime_client.py,
test_render_requests.py, test_generated_presentation_defs.py,
test_ovrtx_session.py, and test_viewport_handoff.py. Fixtures must cover two
classes, two instances of one class, one occluder, padded tight-box capacity,
an ID map, unsupported products, stale frames, and lossless integer IDs.
Client/server escalation gate
Use a direct-client fixture with known typed semantics and RenderVars. Escalate
only if a documented native product is unavailable, its typed buffer or ID map
cannot be retrieved through the official API, or the worker returns incorrect
data on the minimal fixture. Missing Blender identity policy, USD authoring,
product UI, parsing, or overlays is add-on work.
Handoff
Return the changed files, semantic fixture result, unit/runtime tests, raw
product identity, and any add-on/runtime boundary finding. Add previews or a
provenance bundle only when requested.
1---2name: extend-ovrtx-semantic-aovs3description: Extend the OVRTX Blender add-on with stable semantic and instance identity authoring, native semantic render-variable requests, typed buffer parsing, ID maps, tight boxes, UI controls, and validation. Use when adding semantic or instance AOV support.4license: Apache-2.05---6# Extend OVRTX semantic AOVs78## When to Use910Use when adding semantic or instance AOV support.1112## Boundary1314Implement stable authoring, product selection, parsing, and presentation in a15feature branch of the distributed source checkout. Treat renderer IDs as16runtime outputs, not persistent scene identity, and use documented typed17readback interfaces.1819## Code map2021- Add `semantic_identity.py` to inventory evaluated Blender instances, choose22 stable owners, and produce deterministic class/instance records. Keep this23 policy separate from renderer-generated numeric IDs.24- Use `addon/ovrtx_blender_example/scene_generation.py` and the existing25 geometry/material prim builders to attach semantic records to the same26 generated prim identities. If semantic opinions are overlays, contribute them27 through `ovrtx_scene_composition.py` rather than editing exported source USD.28- `addon/ovrtx_blender_example/properties.py` and `ui.py`: expose product29 selection and identity diagnostics.30- `addon/ovrtx_blender_example/render_requests.py`: replace a single31 color-only `render_var` assumption with normalized requested product32 descriptors while preserving the existing LdrColor/HdrColor path.33- `addon/ovrtx_blender_example/ovrtx_scene_composition.py`: author each34 RenderVar's exact `sourceName` and `orderedVars` membership; include product35 identity in composition/session digests.36- `addon/ovrtx_blender_example/ovrtx_runtime_client.py`: the current37 `render_result` branches accept only LdrColor/HdrColor. Add generic typed38 selection/decoding beside `_render_var_paths`; return a new typed AOV result39 carrying bytes/array, shape, dtype, product path, frame/time, and status.40- Add `semantic_aov.py` for active-count parsing, ID-map reconciliation,41 palettes, tight boxes, and derived overlays. Do not put semantic parsing in42 the native binding adapter.43- `addon/ovrtx_blender_example/ovrtx_session_controller.py` and viewport44 handoff code: preserve product identity and never feed integer/record buffers45 into the RGBA upload path.4647## Instructions48491. Define stable class and instance ownership across Blender objects, linked50 data, collections, evaluated instances, USD composition, and flattening.512. Author typed semantic schemas or supported primvars deterministically and52 retain an object/prim/label map. Never derive persistent IDs from traversal53 order or display colors.543. Expose supported native products such as StableIdSegmentation,55 SemanticSegmentation, SemanticIdMap, and SemanticBoundingBox2DTight. Record56 product path, type, shape, dtype, orientation, frame, and camera.574. Parse raw buffers losslessly, including active-count versus capacity rules.58 Keep raw integer maps separate from palettes, boxes, labels, and overlays.595. Test identity propagation, request composition, buffer parsing, and stale60 frame/camera rejection. Validate a tiny occluded fixture, then a61 representative multi-object scene at first/middle/last frames.6263## Required tests6465Add `tests/test_semantic_identity.py`, `test_semantic_aov.py`, and66`test_semantic_aov_runtime.py`. Extend `test_ovrtx_runtime_client.py`,67`test_render_requests.py`, `test_generated_presentation_defs.py`,68`test_ovrtx_session.py`, and `test_viewport_handoff.py`. Fixtures must cover two69classes, two instances of one class, one occluder, padded tight-box capacity,70an ID map, unsupported products, stale frames, and lossless integer IDs.7172## Client/server escalation gate7374Use a direct-client fixture with known typed semantics and RenderVars. Escalate75only if a documented native product is unavailable, its typed buffer or ID map76cannot be retrieved through the official API, or the worker returns incorrect77data on the minimal fixture. Missing Blender identity policy, USD authoring,78product UI, parsing, or overlays is add-on work.7980## Handoff8182Return the changed files, semantic fixture result, unit/runtime tests, raw83product identity, and any add-on/runtime boundary finding. Add previews or a84provenance bundle only when requested.