Skip to content

Drop Detection

A gripper opens too early. A handover between two conveyors misses by a few millimetres. A stopper releases at the wrong moment. The part involved can remain in mid-air. Outside a Physics Zone, a horizontal, straight Transport Surface settles a part onto its top if the part’s underside is within 0.1 m (100 mm) above it. This does not apply to ramps, radial surfaces or guided surfaces. Beyond a surface’s reach or beside it, there is no kinematic gravity: a released part stands in mid-air and quietly leaves your field of view. You find out when the count at the end of the line does not add up.

Drop Detection turns that into a visible finding. It is on by default, even without a component: a part that has previously been carried or held, is now unsupported and has nothing underneath it gets the pulsing orange outline and a card in the messages panel on the right, in the same form as a collision card. The simulation keeps running: this is a notice, not a safety stop.

Detection uses the defaults in rv-odt.json. Turn it off in Settings > Simulation > Unsupported-part detection. The switch takes effect immediately and is saved in this browser across model changes and reloads. If browser storage is unavailable, the default is on.

The Drop Detection component is an optional scene-wide fine tuner for the parameters and signal slots below. Its Enabled = off disables detection for that scene. The Options switch always takes precedence: Options off means detection off even if the component is enabled. Removing the component restores the schema defaults. Disabling stops new detection and optional deletion; existing cards remain until acknowledged or reset.

A part is reported only if it has previously been carried, held, placed on a Grip Target or supported as a load on another part, and all of these are true for the Grace Time:

  • nothing holds it — no gripper, no typed connection, no hold zone, no commissioning drag
  • no conveyor plausibly carries it
  • it does not sit on a Grip Target
  • it does not rest on another part as a load
  • and there is nothing beneath it, within Support Probe Distance

“Plausibly carries it” is the part that matters in practice. A part can still name a conveyor it was once on, while actually hanging half a metre above it — so it is not enough to ask whether a conveyor is assigned. Drop Detection uses the same rule the transport itself uses to decide whether a conveyor may pick a part up: if the conveyor cannot reach that part from below, it is not carrying it.

The check for what is beneath a part is one short ray straight down. Anything it hits counts as support, including plain CAD geometry with no component on it at all — a table, a chute, a shelf plate, a pallet. That is deliberate: a tool that cries wolf whenever a part is set down somewhere gets switched off, and then it does not find the real case either. A part is reported only when there is demonstrably nothing below it.

  • Parts that have never been carried or held. A static, pre-placed part is not reported unless it first gains and then loses support from a conveyor, a holder, a Grip Target or a carrier part.

  • Parts in a Physics Zone. There, falling is exactly what you asked for, and the zone cleans up what falls out of it. Drop Detection ignores every part a physics engine owns.

  • Parts vanishing at the end of a line. A line that deletes its parts at the end is not reporting a drop at every belt end.

Every reported part gets its own card, directly below the collision cards:

  • The card latches. It stays after the part is supported again — the finding is the point, not the current state.
  • Click the card to frame the camera on the part and flash it.
  • OK acknowledges this part. While it is still unsupported, the next simulation tick reports it again.
  • Ignore <Source> mutes every part from that source for the rest of the run. Use it when one station legitimately sets parts down somewhere the ray cannot see. Ignores are dropped when the next model is loaded.

A part created as an instanced part has no node of its own, so it gets a card but no outline, and the card has no click target. The card still tells you its name and the position it stood at.

SettingUnitDefaultWhat it does
Enabled–onRuns the detection. Off keeps the settings but reports nothing.
Grace Times0.5How long a part has to be unsupported before it is reported. Bridges the moment in a handover when a part belongs to neither conveyor.
Support Probe Distancemm50How far below a part to look for something it could be resting on. A 10 mm part on a roller bed wants a smaller value than a pallet on a chain conveyor.
Support Mode–Geometry BelowGeometry Below casts the ray. State Only skips it and reports on the state alone — then a part lying on anything that is not a conveyor is reported too. Use it only in a model you know has no free set-down areas.
Support Recheck Intervals0.5How often at most the same part is re-probed. Keeps the ray off the per-frame path.
Delete Unsupported–offDeletes a reported part. See below.
Delete Delays1.0How long after the report the part is deleted. Only read while Delete Unsupported is on.

Deleting the part destroys the one thing you are looking for: where it stood and what it was. The normal case is to report it and leave it. Switch Delete Unsupported on for long unattended runs, where the parts would otherwise pile up in mid-air until the model hits its part limit. The card stays either way, and names the part together with the position it stood at.

  1. Open the Inspector on your scene root (any node works — the effect is the whole scene)
  2. Add the Drop Detection component
  3. Adjust the parameters for this model and start the simulation (detection also runs without the component)
  4. If you get reports for parts that are legitimately set down on CAD geometry, raise Support Probe Distance; if a real case is missed because the part hangs far above the floor, lower it

Only one Drop Detection is read per model. If a second one is present, the first one is in effect and the other is listed in the Problems panel.

The settings are stored in the model’s rv_extras and travel with the GLB, so a model you hand on arrives with the detection configured the way you set it.

You do not have to wait for a real defect to see what a report looks like. While detection is enabled, diag.unsupportPart releases a part from whatever holds it — it does not fake a report, it only changes the part’s state, so what you then see is the real detection answering. diag.dropStatus shows the current settings and findings, diag.dropReset clears them.

The state is mirrored into the signal store, so a controller can react to it in Live mode:

SignalTypeDirectionMeaning
DropActiveboolreadtrue while at least one part is reported
DropCountintreadnumber of reported parts
ResetDropsboolwriterising edge clears all reports; parts still unsupported are reported again on the next tick