Symptom Index#
Find the symptom you are seeing below, check the listed causes and follow the linked guide for configuration details. Use the renderer log and output metadata to verify a diagnosis before changing parameters.
Missing output#
No output arrives, or one arrives with a delivered count of zero on every step.
For the Radar generic wpmDmat model, a published scan with Counts[0] == 0
is an acquisition that detected no targets; a step with no radar firing returns
no radar frame. See empty radar scans.
Output not requested#
Check that the RenderProduct lists the required RenderVars in orderedVars and that
each RenderVar has the correct sourceName. For lidar and radar the channels list
on a PointCloud RenderVar names the tensors to produce; Counts and Flags are
published whether or not they were requested. See Output Configuration and Sensor Outputs.
Requested channel missing#
Check spelling, case and the model’s supported channel names.
The Lidar generic core and Radar generic wpmDmat models log a warning for an unknown name and omit that channel. The rest of the output is still produced.
The Lidar generic wpm model also omits unknown names. If an explicit list contains none of its eight supported channels, it reports an error and produces no
PointCloudoutput until the list is corrected.
See the Outputs pages for core lidar, WPM lidar and radar.
Wrong channels attribute type#
channels is a token[] attribute, and only a token array is read: a string[]
value is read as an empty list. On the Lidar generic core model and the Radar generic
wpmDmat model an empty list leaves only Counts and Flags; on the Lidar generic wpm
model an empty list selects all eight channels, so there the sign is every channel
arriving rather than none. Author token[] channels = [...]. See Output
Configuration and, for the radar’s selectable names,
the radar’s channels.
Lidar initialization rejected#
Run Sensor Definition Validation and check the renderer log. Core lidar produces no output until its initial parameters are valid. Check for:
Emitter arrays that are neither empty nor
numberOfEmitterslong.Fire times that decrease or exceed one tick.
More distinct channel ids than
numberOfChannelsacross the emitter states.A positive scan rate below 0.466 Hz.
WPM lidar reports an error and produces no output after rejecting its initial parameters. Correct invalid parameters. Check for:
Malformed firing arrays or invalid ranges.
Non-positive physical parameters or unsupported token combinations.
A direct return-processing mode combined with
gaussianBeam.tiledSubSamplingthat removes all rows from a firing pattern or rotary scan.
See rejected core lidar parameters, array lengths, fire-time order, minimum scan rate, Configure a Firing Pattern and WPM lidar attributes.
Lidar detection threshold too high#
For the Lidar generic core model, minReflectance and minReflectionRangeM are one
calibration point rather than two knobs, and together they set the minimum signal a hit
has to produce before it becomes a point. Lowering the reference reflectance allows weaker
returns. Increasing the reference range also lowers the threshold under RAW or
CORRECTION, but under the default NORMALIZATION with IDEALIZED rays it barely
moves the floor. See the calibration pair.
Acoustic envelopes have no valid echoes#
Check that motion BVH is enabled. The Acoustic generic wpm model requires it; without it, envelopes contain no echo data. See Set Up an Acoustic Sensor for renderer setup and to Motion BVH for the switch.
Radar array geometry left unset#
The element counts and spacings of the transmit element, the receive element and the
receiving aperture all default to zero, and zero is not a legal value: the defaults are
placeholders rather than a working array. Left at zero, a PATCH_ARRAY_MODEL element
evaluates to zero gain in every direction, and a WAVEFORM scan whose aperture element
spacing is zero cannot turn its spectrum into detections at all. Author the geometry
together with the mode. See the radar USD attributes.
Invalid radar RCS coefficients#
rcsTuningCoefficients must hold exactly three values. See the RCS
coefficients.
Camera sensor pipeline not enabled#
The Camera generic core model requires exactly one sensor schema on the camera:
OmniSensorGenericCameraCoreAPI. A product activates the pipeline by requesting one of
its seven reserved output names.
Check that the camera has the required schema and that the product requests HdrColor
and at least one primary output. Missing requirements cause the product to be skipped with
an error. Avoid using the reserved names for custom outputs, since those names activate
the sensor pipeline.
Camera pipeline input or primary output missing#
The pipeline’s only input is the HdrColor AOV, which must sit on the same product, and
one of the two primary outputs, OmniCameraSensorPreIsp or OmniCameraSensorPostIsp,
has to be present as well. If either is missing, the product is skipped and an error is
logged; a diagnostic tap on its own does not build a pipeline for the tap to sit on. See
the primary outputs and
Compand to a RAW Format and Run the ISP.
Companding output exceeds 16 bits#
The curve’s last y exceeds 65535. Keep it at or below that for the full pipeline; the pre-ISP pipeline alone has no such limit. See Stay within 16 bits and companding.
ISP outputs missing#
Check both the output request and the ISP program:
Request
OmniCameraSensorPostIspto build the ISP portion of the pipeline. A pre-ISP-only request does not support the ISP diagnostic taps.Set
ispSmodelCameraProgramto an ISP program. Its default is empty; without a program,OmniCameraSensorPostYuvIspandOmniCameraSensorPostIspcontain no processed image.
See the ISP guide, primary outputs and ISP attributes.
Incomplete depth-sensor output request#
The Camera single-view stereo depth model requires all three input RenderVars and at least one depth output on its RenderProduct. A missing input prevents depth processing and logs an error. See the model’s Outputs.
Empty WPM lidar startup output#
Empty startup output is expected. An accepted point cloud request publishes an output marked empty:
the requested channel tensors hold zero points, Counts[0] is zero, and the configured
maxPoints, layout, channel types and coordinate metadata are all still present. See
the empty output.
Point-cloud mapping failed#
The array map device (Device.CUDA_ARRAY in Python) is the zero-copy path for image
outputs, which are array-backed. The channels of a PointCloud output are held in
linear device memory, so requesting the array mode for them fails and directs you to the
linear CUDA mode. Map point clouds on the CPU or on the CUDA device. See Sensor
Outputs.
Fewer points or pixels than expected#
Returns arrive, but not as many as the sensor should have produced, or some steps carry none at all; on a depth image, the same symptom is pixels that hold no distance where you expected one.
WPM lidar subsampling enabled#
On the Lidar generic wpm model, an omni:sensor:LidarWpm:tiledSubSampling above 1,
read from tile zero, reduces the emitter rows fired by every tile; 0 and 1 mean no
reduction. Leave the default 0, or author 1, on tile zero when every tile should
trace at full fidelity. See Tiling and subsampling on the Lidar generic wpm
model’s USD attributes.
Nearby lidar returns missing#
Check the near-range limits if nearby objects are missing while distant objects appear.
With the default IDEALIZED rays minDistBetweenEchosM also imposes a near limit.
The larger limit applies. See the near range.
Step ends before the lidar scan completes#
By default — omni:sensor:Core:partialOutputs is false — a Lidar generic core model
that is part-way through a scan when a step ends delivers no output for its product on
that step, and the whole scan arrives on the step that completes it. If you need the
points as they are traced, author partialOutputs true; in either case bound every
read by Counts[0]. See partial outputs,
Sensor Scheduling and Sensor Outputs.
Radar steps without a scan#
On the Radar generic wpmDmat model, a step that fires no scan returns no radar
PointCloud frame and leaves the pending scan and its ambiguity entry unchanged.
A scan that fires but detects no targets still delivers a frame with Counts[0] == 0
and scan metadata. Inspect those params when checking the scan sequence. Step at the
scan period, and read the scan index from the scanIdx param of the PointCloud
output rather than inferring it from how many steps ran. A timestampNs of 0 is
valid for a scan acquired at time zero. See
Step at the scan period and Sensor Scheduling.
Radar detection capacity reached#
A radar scan is capped at 2500 detections by design: detections past the cap are dropped,
the count stops rising, and the only hint is a Counts[0] that stays at 2500. Narrow
what the scan sees, with a smaller maxRangeM or smaller maxAzAngDeg and
maxElAngDeg half-angles (what lies beyond them is discarded while
enableRangeAliasing and enAngAliasing stay false), or raise cfarOffset so
that fewer cells pass the detection threshold. See the detection cap, field of view, range and resolution and CFAR.
Unexpected acoustic signal-way count#
The numSignalWays param counts the signal ways the frame is laid out for — one per
receiving mount per channel id — not the ones that heard something; count those by the
VALID bit of Flags. If the layout count itself is not the number of mounts times
the number of distinct channel ids, check the mounts you authored and the channel ids of
your firing sequences: the ids must run from 0 without gaps, so renumber them if they
do not. See the layout on the acoustic
Outputs and channel ids on its
USD attributes.
No returns through transmissive surfaces#
On the Lidar generic core model raising maxReturns is what keeps the return from
behind the surface, and on the Lidar generic wpm model the waveform return-processing
mode is. See the Lidar generic core model’s USD attributes and Choose a Return-Processing Mode.
Nearby surfaces merge into one lidar return#
On the Lidar generic core model they lie closer than the down-range separation. With the
default IDEALIZED ray type that separation is minDistBetweenEchosM alone; with a
beam ray type it is the larger of minDistBetweenEchosM and half the distance light
travels in pulseTimeNs, so there a long pulse merges them. See Tune Intensity
and Point Drops and the model’s USD
attributes.
Invalid or narrow radar gain grid#
A CUSTOM grid whose angle vectors or gain arrays break the grid rules is rejected: the reason is logged as an
error, and a running sensor keeps the configuration it had (Batch validation). A grid that passes still has zero gain outside
its angular extent, so a scan whose targets lie beyond the grid’s angles produces far
fewer detections than expected, or none. See the radar USD attributes.
Radar targets merge at the same range and velocity#
For a FAST scan, check cfarMode. Use 4D instead of 2D to distinguish
targets by angle as well as range and velocity. See the scope of cfarMode.
Zero regions in a depth image#
On the Camera single-view stereo depth model, occlusion holes, failed confidence, distances outside the range limits and disparities above the maximum all resolve to the same zero distance, and widening the product moves the near limit outward without anything being authored. See the model’s Outputs and its USD attributes.
Incorrect coordinates or units#
Points, or the distances of a depth image, arrive in a plausible shape but are measured from somewhere other than what the consumer assumed: the prim faces the wrong way, or the output is read against another coordinate representation, frame or unit. Each of these produces an output that looks right on its own.
Incorrect sensor orientation#
A sensor prim follows the camera convention, whatever model it runs: it looks along its
local -Z with +Y up, and a lidar’s beam pattern, a radar’s field of view and an
acoustic sensor’s lobe are all aimed along that axis. A transform authored for a device
that looks along its own +X therefore aims the scan elsewhere. A prim with no rotation
authored looks along world -Z, which in a Z-up stage is straight down.
Rotate the prim until its -Z points where the sensor should look: to look along world
+X in a Z-up stage, the lidar and radar examples author xformOp:rotateXYZ = (90, 0,
-90).
See Orienting the prim and to the forward-axis statements of the Lidar generic core model, the Radar generic wpmDmat model and the Acoustic generic wpm model.
Spherical output interpreted as Cartesian#
elementsCoordsType defaults to SPHERICAL on both lidar models and on the Radar
generic wpmDmat model alike. Author it explicitly rather than relying on the default being
what you expect, and read the coordsType param back to see which one was actually
used. See Configure Lidar Output,
the Lidar generic wpm model’s USD attributes
and the radar Outputs.
Angular units confused#
The three components are azimuth in degrees, elevation in degrees and distance in meters,
in that order, and the spherical-to-Cartesian conversion that the lidar and radar models
use reads them that way. On the radar, the scan-limit params (minAzRad through
maxElRad) are in radians while the spherical Coordinates are in degrees. Confirm
against the values before scaling them. See Sensor Outputs and the radar Outputs.
Incorrect output reference frame#
outputFrameOfReference decides whether the coordinates are measured against the
sensor, the world or a frame you place yourself, and a custom transform is read only when
that attribute says CUSTOM. The Lidar generic core model rotates HitNormal and
Velocity into that frame along with the coordinates. See Configure Lidar Output and the model’s Outputs.
Incorrect tensor layout#
Read the mapped tensor’s shape and strides; packing differs by model:
Core lidar and radar
Coordinatesare component-first: all x values, then all y values, then all z values.Core lidar
HitNormal,VelocityandObjectIdare point-first.WPM lidar
Coordinatesare point-first.
See Sensor Outputs and the model Outputs pages for core lidar, WPM lidar and radar.
Motion-distorted lidar scan#
For core lidar, select COMPENSATED output or deskew downstream using per-point
TimeOffsetNs. Check the delivered motionCompensationState: 0 means
compensation was not applied; 1 means it was applied.
Also check the renderer’s motion BVH setting. Without it, there is no within-frame motion in the trace to compensate. Lidar and radar can still produce output, so an empty point cloud does not diagnose the motion BVH setting.
See Motion Artifacts, compensation and motion BVH and Motion BVH.
Lidar channel ids used as indices#
The Lidar generic core model reports each point’s ChannelId exactly as its emitter’s
channelId was authored, so a consumer that adds or subtracts one to recover a beam
number, or indexes a table by the reported value, attributes points to the neighboring
detector. See channel ids are labels
and ChannelId.
Radar field of view twice the intended size#
A total angle was authored into an attribute that expects a half-angle: maxAzAngDeg
and maxElAngDeg each describe the positive half of a symmetric interval, so a 150°
field of view is authored as 75. See Choose Parameter Values.
Radar coordinate attributes in the wrong namespace#
The attributes were authored under omni:sensor:Core:, the Lidar generic core model’s
namespace, instead of omni:sensor:WpmDmat:. A radar prim does not carry the lidar’s
attribute, and authoring it there changes nothing; the delivered coordsType and
frameOfReference params report what the model actually used. See the radar USD
attributes and to incorrect attribute
names or namespaces below.
Depth image and point cloud use different units#
The Camera single-view stereo depth model applies no scene-unit conversion of its own. Its
distance output and its minDistance and maxDistance range limits are in meters,
because the renderer delivers DistanceToImagePlaneSD in meters whatever the stage’s
metersPerUnit; its point positions come from Camera3dPositionSD, which is in scene
units. On a stage whose metersPerUnit is not 1 the two differ by that factor. See
the model’s Outputs.
Sensors return identical point clouds#
Check whether the sensors have the same transform. The sensors are separate prims — each on its own RenderProduct on the Lidar generic core model, tiles of one product on the Lidar generic wpm model — and each needs its own placement. See independent RenderProducts and, for the Lidar generic wpm model, its tiling how-to.
ROI wraps around the sensor#
A minAzimuthROI greater than maxAzimuthROI is a wrapping interval rather than an
error. See Constrain the Field of View.
Motion distortion affects scan alignment#
Check for motion distortion in the scans. Compensate at the sensor, or deskew before the mapper. See Motion Artifacts.
Incorrect units in a device profile#
Half-angles against a full field of view, millimeters against meters, and a rational Hz pair against a plain number are the three that catch people building a profile from a vendor specification. See the spec-sheet how-to of the model: Lidar generic core model, Radar generic wpmDmat model or Camera single-view stereo depth model.
Depth image and point cloud use different frames#
The distance image sits on the second imager’s pixel grid; the point cloud positions are read from the rendered view’s camera-space positions. Projecting one with the other’s geometry mixes two frames. See the model’s Outputs.
Values look plausible but are wrong#
Check output interpretation and model configuration when values are in range but do not match the expected measurements.
Reading beyond the delivered count#
The shape is the capacity. Bound every per-entry read by Counts[0], the first element
of the Counts tensor, not by the tensor’s length; on the Radar generic wpmDmat model
the capacity is a fixed 2500, so reading to the tensor length gives 2500 entries of which
most are not detections. See Delivered-entry count.
Incorrect validity-bit test#
A lidar or radar entry is real when the VALID bit (0x40) of Flags is set.
Flags is a bit field: the Lidar generic core model can also set the new-scan bit
(0x20) on a real return, so an equality test
against the VALID value rejects perfectly good returns. Acoustic Flags carry the
same bit, once per signal way rather than once per sample, and a test for the value 1
rejects every signal way. See Sensor Outputs, the
Lidar generic core model’s Outputs and the
acoustic Outputs.
Radar values read from an empty scan#
If a published radar scan has Counts[0] == 0, none of its allocated
per-detection tensor elements is a measurement. Read the scan metadata, but do
not read coordinates, RCS or velocity beyond the delivered count. See
empty scans.
Incorrect radial-velocity sign#
Radial velocity is signed and approaching detections are negative, so use the sign to distinguish approaching and receding targets. Use the absolute value when testing radial speed regardless of direction. See the radar Outputs.
Aliased radar detections#
With range or angular aliasing enabled, out-of-interval contributions fold into the configured interval instead of being discarded, and a folded detection is indistinguishable from a real one by inspection. A target whose radial speed exceeds the scan’s unambiguous velocity folds the same way, and that folding has no switch to turn it off. Aliasing belongs in the parameterization only when the real operating mode has the same ambiguity. See the radar USD attributes and Validate a Parameterization.
Non-visual material id is zero#
The labels are not being read. An unmatched base token, an absent attribute and a
deliberate none all read as none, base index 0, so the number itself does not say
which happened. Work through the authoring checklist on Non-Visual Sensor Materials; the Lidar generic core model’s
Outputs explains how to read MaterialId.
Material label has no effect#
On a lidar, read the reported MaterialId first: a label missing there was not read or
did not match. See the Lidar generic core model’s Outputs.
Radar per-detection time offsets are zero#
Radar TimeOffsetNs is zero by design, because the model simulates each scan as a
single instant, and each model measures the offset from its own instant. Take the scan’s
time from the frame’s params instead: timestampNs is the scan’s instant, and
frameStartTimeStampNs and frameEndTimeStampNs bound the frame’s time window, which
can be wider than that instant. See Timestamps and Model-specific channel
definitions.
WPM lidar firing-pattern indices changed#
On the Lidar generic wpm model, FiringPatternIndex is the pattern’s position in
lexicographic order, so renaming one, adding one, or removing one that sorts earlier
changes the value reported for every pattern after it. Do not store the index as a
pattern’s identity across edits, and name the instances with zero-padded numbers, such as
p001 and p002, so that a new pattern sorts where you expect it. See
FiringPatternIndex is a position and the firing-pattern
instances.
Lidar scans are instantaneous#
instantLidar delivers a complete scan per frame, which is convenient for a
demonstration and is not representative of a time-resolved scan. An
omni:sensor:frameRate of (0, 1) does the same on the Lidar generic core
model: the rate reads as unset and every capture flashes a whole scan, on the
renderer’s default capture schedule. For a time-resolved scan, leave
instantLidar at its default false and author a positive scan rate of at
least 0.466 Hz, such as (10, 1). See
the scan rate on the Lidar generic core model’s USD attributes and
instant lidar on Configure Lidar Output.
Unprocessed depth required#
Read DistanceToImagePlaneSD or DistanceToCameraSD, described in Cameras:
Outputs. The Camera single-view stereo depth model applies stereo-camera effects to the rendered distances.
Results differ between runs#
The scene, the motion or the material assignments moved, or the two runs did not start
from the same point or take the same steps. No sensor model takes a seed. Each model’s
noise starts from a fixed, built-in point when its RenderProduct is first stepped and
again after reset() (ovrtx_reset() in C). It advances
with every frame the model traces. An attribute edit applied after a reallocation restarts
the noise of the Lidar generic core, Radar generic wpmDmat and Acoustic generic wpm models
as well (Runtime Parameter Updates). Compare multiple
frames when evaluating noise; a single frame does not establish the distribution. See
Validate a Parameterization.
Radar calibration does not transfer between scenes#
Detection settings tuned before materials and antenna response were stable do not carry
across scenes, and a radar cross section that is systematically off across the whole scene
is a calibration matter — the material assignments, the antenna gain data, powerFactor
and rcsTuningCoefficients — rather than a geometric parameter. Re-run the checks of
Validate a Parameterization in their order. Hold the scene, the motion and the material
assignments fixed between runs.
Calibrate powerFactor and rcsTuningCoefficients against measured return strength
before you touch CFAR. See the order of the checks and materials and
antenna response on
Validate a Parameterization, and values from calibration on Choose Parameter Values.
Variable tick count per rotation#
The ticks-per-rotation ratio is real-valued rather than integral, and the Lidar generic core model carries the fractional phase across rotations, so a completed rotation holds either the floor or the ceiling of it. A fixed integer tick count per scan is only nominal: do not size a per-rotation buffer from it, and do not assume that every rotation reports the same number of ticks. See fractional ticks and the model’s USD attributes.
Unexpected lidar intensity#
Changing the wavelength can change intensity because it affects photon conversion. For an unexpected intensity
range, check the scale and processing mode. If every return carries the same value,
intensityScalePercent / 100 under LINEAR mapping, the cause is the output clip
instead: the detection floor is compared before the clip, so when the floor is above 1
every kept return is clipped to the same intensity.
On the Lidar generic wpm model, when intensity saturates, check the raw versus
range-normalized mode, intensityScale, calibrationGain, the detector field of view
and the material assignment before touching detection thresholds: mapping cannot recover a
signal the return pipeline already rejected.
See Tune Intensity and Point Drops, the Lidar generic wpm model’s intensity how-to and its USD attributes.
Camera mosaic is black or saturated#
colorFilterArrayMaximalValue is a multiplier, not a clamp, so check it
against the range the image actually occupies. See the color filter
array how-to and the
color filter array attributes.
Camera exposure differs from OpenUSD defaults#
An exposure:fStop, exposure:responsivity or exposure:time that is not authored
takes the renderer’s defaults — f/5, 1.10267091 and 1/50 s — rather than the OpenUSD
schema fallbacks of 1, 1 and 1. Each attribute is decided on its own, and exposure:iso
is not affected. Author all three when you compute exposure from them. See the
camera USD attributes.
Acoustic identity channels use floating-point storage#
TransmitterIds, ReceiverIds and ChannelIds use floating-point storage. Convert
valid entries to integers before using them as array indices. See the acoustic
Outputs.
Implausible acoustic parameters accepted#
The Acoustic generic wpm model’s parameter validation checks the types of its scalar and
coefficient attributes and the signalMode token, not physical plausibility, so an
implausible value can be accepted and affect the output. A receiver index or rxGroupId
that names no mount or group is repaired by the model, which logs an error. See the
acoustic USD attributes and Sensor
Definition Validation.
Runtime edits have no effect#
The stage shows the new value; the output does not.
Attribute cannot change at runtime#
Check runtime-update support on the model’s USD Attributes page; support varies by
attribute and model. On the Lidar generic core model scanType and rayType are the
fixed ones: author them before the sensor starts producing, and recreate the sensor to
change either. See Runtime Parameter Updates and
what the Lidar generic core model holds fixed.
Rejected update retained the old configuration#
Check the renderer log for a rejected update. An output frame has no general update-acceptance flag; compare the relevant output params and behavior. See refusals show in the log.
Reading a frame created before the edit#
Read the delivered params of a later frame. The frame in flight when you edit finishes
with the values it started with, so compare a frame built after it. If that frame’s params
— coordsType, frameOfReference, motionCompensationState — still report the old
value, the edit did not reach the model: it was refused, and the log says so, or it was
authored where nothing reads it. See Runtime Parameter Updates and the Lidar generic core model’s Outputs.
Invalid parameter rejects the update batch#
Several edits made together all failed to apply, and the log names one value. The model rebuilds its configuration from the sensor’s entire parameter set, so one bad value drops the well-formed edits that traveled with it, on that update and on every later one until it is corrected. Correct it, and change one thing at a time while diagnosing; the rules a firing pattern is checked against are listed under the rejected parameter set above. See Batch validation.
Incorrect attribute name or namespace#
Check the exact schema name, spelling and instance prefix. USD attribute names are case-sensitive; an unrecognized attribute does not configure the model.
WPM lidar uses
omni:sensor:LidarWpm:tiledSubSampling, with a capitalSinSampling.Radar scan attributes require the
scan:<instance>:segment.Pinhole and fisheye lens-distortion attributes use different namespaces. Author attributes for the selected lens model.
See attribute namespaces, the model’s USD Attributes page and lens-model selection.
Legacy lens-distortion schema warning#
The camera applies OmniLensDistortionFthetaAPI, OmniLensDistortionKannalaBrandtK3API or
OmniLensDistortionRadTanThinPrismAPI, one of the three compatibility schemas, and it
still renders through that model. Migrate the calibration to the OpenCV, lookup-table or
omni-directional stereo schema. See the lens-distortion schemas.
Emitter state not applied#
No API schema instance is applied to the prim, or its arrays are authored under a prefix that does not match the instance name. See Configure a Firing Pattern.
Acoustic firing arrays have different lengths#
A firing sequence is four parallel arrays with one entry per event; author all four together, with the same length. See the parallel arrays.
Control does not apply to the scan type#
The azimuth limits do nothing on a solid-state sensor, where they do not apply at all. See the azimuth window and Constrain the Field of View.
Unsupported attributes#
A few declared attributes are not read by any model. On the Lidar generic core model the
emitter-states file, omni:sensor:Core:emitterStatesFile, is one; on the Camera generic
core model the three color-correction flags colorCorrectionRedBlueSwap,
colorCorrectionOutputFloat16 and colorCorrectionOutputFloat32 are three more.
Authoring them changes nothing. See Limitations for the complete list
and to the USD attributes page of the model.
Basic-mode acoustic attribute used in interference mode#
The attribute belongs to the basic mode, and the interference mode leaves it unread. See what each mode reads.
CFA label changed without changing its weights#
The token is a label, not a control; see the color filter array attributes.
Required control not enabled#
colorCorrectionBlack and colorCorrectionFullwellBlack are read only when
colorCorrectionApplySaturation is true, which is not the default, and a custom
frame transform is read only when the frame of reference says CUSTOM. See color correction and Configure
Lidar Output.
ROI or radar scan configuration ineffective#
A region-of-interest window does not narrow a lidar’s field of view; the azimuth pair does
that. An authored ROI has no effect while one of its two limits is still at the default
400, or while no emitter state is tagged with isROIState. On the radar, a second scan
configuration left unauthored sits at schema defaults that are a working scan rather than
an inert one, which looks like success. See Constrain the Field of View and Run More Than One Scan Pattern.
Unexpected radar scan index or order#
If every acquired scan reports scanIdx = 0, check that each additional
OmniSensorGenericRadarWpmDmatScanCfgAPI:<name> instance is applied. Applying the
instance supplies the attributes used to discover the scan configurations.
Inspect every returned radar frame, including scans with Counts[0] == 0;
their metadata still identifies the scan that fired. Steps without a radar firing
return no radar frame and do not advance the configuration sequence. Instances run in
lexicographic name order; use zero-padded names
such as s002 rather than s2.
Radar resolution and processing-mode mismatch#
rangeResM and velResMps set detection-cell sizes. Use the noise attributes to
configure measurement error.
Check that the attributes you edit apply to the selected datacubeMode:
FASTuses bin dimensions and resolutions, and ignores explicit waveform parameters.WAVEFORMuses waveform, sampling, padding, window and aperture parameters, and ignores bin dimensions and resolutions.
See radar attributes and Choose Parameter Values.
WPM lidar edit applied to the wrong tile#
WPM lidar reads its parameters from the first sensor in the product; edit that sensor. See tile zero.
WPM lidar subsampling update rejected#
On the Lidar generic wpm model, a value that leaves a firing pattern, or the whole rotary
scan, with no emitter rows is rejected. The last valid profile remains active; a sensor
created with an invalid value publishes nothing. Reduce
omni:sensor:LidarWpm:tiledSubSampling. See Tile Lidars and Retune the Sensor While It Runs.
Performance problems#
Check the following causes of increased frame time or memory use.
Sensor count increases workload#
Runtime and memory grow with every sensor you add. On the Lidar generic core model each
sensor renders on its own RenderProduct and is traced and stored on its own. On the Lidar
generic wpm model every tile of a product adds its workload and its share of the point
cloud. Use tiledSubSampling on tile zero to reduce the number of emitter rows traced
by every tile. See its tiling how-to.
Ray density increases tracing cost#
raysPerDeg controls geometric sampling density; raising it costs frame time and does
not sharpen the configured angular resolution. Tune it for stable geometric coverage at an
acceptable frame time. See Choose Parameter Values.
Trace depth increases tracing cost#
Frame time grew with traceTreeDepth on the Radar generic wpmDmat model or the Acoustic
generic wpm model, or with maxReturns on the Lidar generic wpm model, which derives
its depth from it. Raise the depth only when the scenario needs indirect paths. See
traceTreeDepth on the radar,
the acoustic USD attributes and Choose
a Return-Processing Mode.
Acoustic interference mode costs more#
Modeling interference between concurrent transmissions costs more than the basic mode,
which is the default. Where interference is not needed, set enableInterference back to
false on the running sensor: the model rebuilds its buffers for the basic mode, so the
prim need not be recreated, and a frame already in flight finishes in the mode it started
in. See the acoustic USD attributes.
Runtime edit increases step time#
An edit that changes how much memory the sensor needs — a longer firing sequence, an extra
mount, a larger return capacity — makes the step it lands on longer, and on the Acoustic
generic wpm model so does a change to a scalar such as noiseMax. See the four
outcomes and the acoustic USD attributes.
Mapping transfers data between devices#
Asking for a CPU mapping of device-resident data blocks until the copy has arrived, and asking for a device pointer from host-resident data allocates and copies the other way. Map on the device where you consume the data. See Sensor Outputs and C API and Python API.
Camera startup and render-mode costs#
Textures stream on demand and the path tracer accumulates samples, so warm-up
frames are the cost of both. The render mode underneath a camera sensor is the
other lever: the Camera generic core model reads only HdrColor, which
MinimalRendering does not produce, so only a path-tracing product can feed
it; Render Modes compares the two
path-tracing modes. See Configure the Input Image and the warm-up section of
Output Configuration.
Diagnostics#
Configure logging before diagnosing rejected parameters or runtime updates:
In C, install a callback with
ovrtx_set_log_callback. Its filter is a comma-separated list of<channel prefix>=<level>rules; allow errors fromomni.rtx.In Python, set
RendererConfig.log_levelandRendererConfig.log_file_path. Matching configuration entries are available in C. Useerroror a more verbose level to retain rejection messages.
Parameter-validation failures and rejected updates are logged as errors. See Renderer Configuration, logging and error handling, Sensor Definition Validation and rejected updates.
Use output metadata to check the configuration that produced a frame:
Compare params such as
coordsTypeandframeOfReferencewith the authored values on a frame built after the edit. See Runtime Parameter Updates.Request
MaterialIdto check resolved material labels on valid core or WPM lidar returns. See the core lidar Outputs and WPM lidar Outputs pages, and Non-Visual Sensor Materials.
Generic wpm output is empty or differs from the requested configuration#
A missing output can mean that the product requests no Contributions
RenderVar, the sensor has no complete pattern, or the configuration was refused.
Use OmniGeneralSensor with OmniSensorGenericWpmAPI, author every required
pattern array and request one Contributions output. Start with
Set Up a Sensor.
A zero-length tensor is an empty output, including startup before an accepted
configuration. A tensor with allocated slots whose Valid entries are all
zero is a completed capture without valid contributions. Geometry intersections
alone do not guarantee positive transport power or receiver visibility. See
Outputs before reading payloads.
If an edit appears ineffective, read the accepted selectors in output params. A rejected batch retains its previous accepted controls and patterns, while the scene keeps advancing. Check array cardinalities, positive counts, active-local receiver indices and every group on the selected mapping page. A shape or capacity incompatibility rejects the whole batch. Publish related writes at one ordinal and finish them before rendering. See Switch Stored Patterns.
If distances appear too large, check the emission and receiver origins.
RoundTripDistanceM is total path length. Dividing by two gives direct-return
range only when the ray’s emission origin and the receiver origin coincide;
coincident transmitter and receiver origins alone do not ensure this. Check
coordinate frames and
use receiver-slot order when reading mapped groups.