Extend OVRTX LiDAR capture
When to Use
Use when adding LiDAR support rather than producing a synthetic point overlay.
Boundary
Start in a feature branch of the distributed source checkout and use documented
sensor schemas and runtime interfaces. A visualization made from mesh samples
or a depth image is not native LiDAR support.
Code map
addon/ovrtx_blender_example/authoring_properties.py: define sensor
profile, pose, range, rate, and return-policy properties when they belong to
authored scene data; use properties.py for render-session controls.
addon/ovrtx_blender_example/blender_signal_translation.py: translate
Blender sensor state into immutable request values.
addon/ovrtx_blender_example/render_requests.py: extend
RenderRequest.sensor_paths/selected_sensor_paths with a typed product
selection structure if LiDAR needs fields beyond a render-variable name.
addon/ovrtx_blender_example/ovrtx_scene_composition.py: extend
_generated_presentation_body_lines or add a dedicated sensor contribution
that authors typed ancestors, sensor prim, product, and requested variables.
addon/ovrtx_blender_example/ovrtx_runtime_client.py: use documented bindings
and add add-on-side request construction and
result decoding beside _render_var_paths, render_result, and
render_result_from_native. Do not force point arrays through RenderResult;
introduce a typed SensorResult.
addon/ovrtx_blender_example/ovrtx_session.py: include immutable
profile/shape fields in reuse_decision; allow pose/time changes to reuse a
session when the installed API supports them.
- Add
lidar_capture.py for coordinate conversion, raw persistence,
accumulation, and derived viewport data. Keep these out of the runtime
adapter.
addon/ovrtx_blender_example/ui.py: expose capability, profile,
capture, and raw/derived status without presenting synthetic points as native.
Instructions
- Probe supported sensor profiles, output fields, array shapes, coordinate
convention, timing, immutable session fields, and capability errors.
- Add Blender sensor properties and deterministic USD authoring with explicit
profile, pose, frame rate, range, return policy, and typed ancestry.
- Capture and retain raw points, return identity, timestamps, pose, range,
intensity and labels when available before any filtering.
- Convert to world space, validate an asymmetric isolated target, then add
camera projection, first-surface visibility, decimation, accumulation, and
viewport presentation as derived layers.
- Test authoring and array parsing with fixtures. Run one short scan of a
representative multi-object scene and validate finite values, bounds,
pose/time changes, coverage, raw hashes, and truthful raw-versus-derived
labeling.
Required tests
Add tests/test_lidar_authoring.py, test_lidar_capture.py, and
test_lidar_session_reuse.py. Extend test_ovrtx_runtime_client.py with fake
installed bindings that return exact point arrays and capability failures;
extend test_render_requests.py and test_generated_presentation_defs.py for
request normalization and typed USD. Test handedness, row/column convention,
finite values, immutable raw arrays, pose/time identity, and unsupported fields.
Client/server escalation gate
Run the smallest direct-client sensor fixture. Escalate only if the official
runtime exposes no native PointCloud/LiDAR product, omits required raw fields,
returns an unusable schema, or cannot advance/capture a supported sensor.
Missing Blender controls, authoring, transforms, accumulation, or visualization
are add-on responsibilities. Preserve the capability response before proposing
protocol, client, or worker changes.
Handoff
Return the changed files, authoring/parser tests, one raw-array alignment result,
and any add-on/runtime boundary finding. Add review bundles only when requested.
1---2name: extend-ovrtx-lidar-capture3description: Extend the OVRTX Blender add-on with native LiDAR sensor authoring, runtime capability discovery, raw-return capture, coordinate conversion, accumulation, viewport presentation, and evidence. Use when adding LiDAR support rather than producing a synthetic point overlay.4license: Apache-2.05---6# Extend OVRTX LiDAR capture78## When to Use910Use when adding LiDAR support rather than producing a synthetic point overlay.1112## Boundary1314Start in a feature branch of the distributed source checkout and use documented15sensor schemas and runtime interfaces. A visualization made from mesh samples16or a depth image is not native LiDAR support.1718## Code map1920- `addon/ovrtx_blender_example/authoring_properties.py`: define sensor21 profile, pose, range, rate, and return-policy properties when they belong to22 authored scene data; use `properties.py` for render-session controls.23- `addon/ovrtx_blender_example/blender_signal_translation.py`: translate24 Blender sensor state into immutable request values.25- `addon/ovrtx_blender_example/render_requests.py`: extend26 `RenderRequest.sensor_paths`/`selected_sensor_paths` with a typed product27 selection structure if LiDAR needs fields beyond a render-variable name.28- `addon/ovrtx_blender_example/ovrtx_scene_composition.py`: extend29 `_generated_presentation_body_lines` or add a dedicated sensor contribution30 that authors typed ancestors, sensor prim, product, and requested variables.31- `addon/ovrtx_blender_example/ovrtx_runtime_client.py`: use documented bindings32 and add add-on-side request construction and33 result decoding beside `_render_var_paths`, `render_result`, and34 `render_result_from_native`. Do not force point arrays through `RenderResult`;35 introduce a typed `SensorResult`.36- `addon/ovrtx_blender_example/ovrtx_session.py`: include immutable37 profile/shape fields in `reuse_decision`; allow pose/time changes to reuse a38 session when the installed API supports them.39- Add `lidar_capture.py` for coordinate conversion, raw persistence,40 accumulation, and derived viewport data. Keep these out of the runtime41 adapter.42- `addon/ovrtx_blender_example/ui.py`: expose capability, profile,43 capture, and raw/derived status without presenting synthetic points as native.4445## Instructions46471. Probe supported sensor profiles, output fields, array shapes, coordinate48 convention, timing, immutable session fields, and capability errors.492. Add Blender sensor properties and deterministic USD authoring with explicit50 profile, pose, frame rate, range, return policy, and typed ancestry.513. Capture and retain raw points, return identity, timestamps, pose, range,52 intensity and labels when available before any filtering.534. Convert to world space, validate an asymmetric isolated target, then add54 camera projection, first-surface visibility, decimation, accumulation, and55 viewport presentation as derived layers.565. Test authoring and array parsing with fixtures. Run one short scan of a57 representative multi-object scene and validate finite values, bounds,58 pose/time changes, coverage, raw hashes, and truthful raw-versus-derived59 labeling.6061## Required tests6263Add `tests/test_lidar_authoring.py`, `test_lidar_capture.py`, and64`test_lidar_session_reuse.py`. Extend `test_ovrtx_runtime_client.py` with fake65installed bindings that return exact point arrays and capability failures;66extend `test_render_requests.py` and `test_generated_presentation_defs.py` for67request normalization and typed USD. Test handedness, row/column convention,68finite values, immutable raw arrays, pose/time identity, and unsupported fields.6970## Client/server escalation gate7172Run the smallest direct-client sensor fixture. Escalate only if the official73runtime exposes no native PointCloud/LiDAR product, omits required raw fields,74returns an unusable schema, or cannot advance/capture a supported sensor.75Missing Blender controls, authoring, transforms, accumulation, or visualization76are add-on responsibilities. Preserve the capability response before proposing77protocol, client, or worker changes.7879## Handoff8081Return the changed files, authoring/parser tests, one raw-array alignment result,82and any add-on/runtime boundary finding. Add review bundles only when requested.