---
title: Stationary 2D/3D boxes
slug: task-view-guide/stationary-2d3d-boxes
docTags: 
createdAt: 2025-11-25T12:09:43.281Z
---

:::hint{type="info"}
This guide is a work in progress and may be subject to change.
:::

This guide helps you annotate stationary objects accurately with minimal keyframes and adjustments. It applies to two types of stationary objects:

**Parked vehicles** — cars, trucks, and other vehicles that are stationary in the scene

**Always-static objects** — traffic signs, traffic signals, poles, bollards, barriers, and similar infrastructure

Your workflow depends on data quality — detecting drift before drawing determines which approach to use.

:::hint{type="info"}
If your task uses the [Static objects guided workflow](docId\:QxqHn8yIN9bS5HJdsz0O4), follow it whenever possible. It provides step-by-step guidance and automatically enables aggregation.
:::

:::::ExpandableHeading
# Detecting drift

::::WorkflowBlock
:::WorkflowBlockItem
Find a stationary object in the scene to use as a drift indicator
:::

:::WorkflowBlockItem
Enable [Point cloud aggregation](docId\:bcoYTPTDI72b6fMuqvntX) and observe its points
:::
::::

If the points appear sharp and well-aligned, the data is clean — there is no drift. If the points appear smeared or blurry, drift is present.

**How to choose a good object for drift detection:**

- The object should appear in front of the ego vehicle (visible in the front camera)
- It should be close to the ego vehicle in one or more frames — proximity means better lidar point resolution and makes drift easier to detect

:::hint{type="success"}
Skip this step if your task instructions already specify whether drift compensation is required. Check with your manager if unsure.
:::
:::::

::::ExpandableHeading
# Creating the 3D box

There are two methods to create the initial 3D box: from a prelabel or manually with drawing mode.

## Create from prelabel

If prelabels are available, this is the fastest option. Stationary predictions appear in pink and other predictions in white — prioritise the pink ones.

**Class first:&#x20;**&#x53;elect a class (this activates the cuboid drawing tool), then click the prelabel

**Prelabel first:&#x20;**&#x43;lick the prelabel to select it, then select a class

After creating the box, navigate to the **best frame**. If a best-frame marker is visible in the video bar, click it. Otherwise, right-click the object and select "Go to best frame".

If the prelabel quality is poor (wrong size, position, or orientation that would require significant correction), draw the box manually instead.

:::hint{type="warning"}
[Copilot](docId:1KFJv7-eMBNRKxRV8oFfT) predictions frequently have an incorrect direction (rotated 180 degrees). Use `,` to rotate the direction 90 degrees at a time until it is correct.
:::

## Create manually

Choose the mode based on the type of object:

**Parked vehicles** (cars, trucks) — use [Center mode](docId\:e7wp2MdiMgJfIhcVj1ma7) or [Side mode](docId\:ZdkgrBvXD6uwmF17C0FwH). These objects have a clear longest side and a recognisable front and back. Use Center mode when you have a good view of the front or back center of the vehicle. Use Side mode when you have a clearer view of the side. In both modes, drag across the longest side of the object for the best result.

**Always-static objects** (traffic signs, traffic signals, poles, bollards, barriers) — use [Point mode](docId\:yMbch0f2-gEv54o0egP1-). These are typically smaller objects where painting the exact points gives better control over the box boundaries. View the object from the front before drawing — the box direction is based on your viewing angle.
::::

:::::ExpandableHeading
# 3D workflow - no drift

When data is clean, enable [Point cloud aggregation](docId\:bcoYTPTDI72b6fMuqvntX) and draw the object once — no further adjustments should be needed.

::::WorkflowBlock
:::WorkflowBlockItem
Enable [Point cloud aggregation](docId\:bcoYTPTDI72b6fMuqvntX)
:::

:::WorkflowBlockItem
Use [4D navigation](docId\:tPcQGNlxGjDgbSBDByyah) to click on the object points, this will navigate you to the frame where there are the most points
:::

:::WorkflowBlockItem
Create a first 3D box in this frame
:::

:::WorkflowBlockItem
One keyframe is sufficient — do not add more.
:::
::::
:::::

:::::ExpandableHeading
# 3D workflow - with drift

When drift happens, the process includes two steps: first, create a well-annotated reference 3D box for each area to correct drift; second, use that 3D box for subsequent objects within the same area.

## Reference object per area

Annotate an appropriate object to establish the drift correction for the area. A good reference object is one that is in front of the ego vehicle and close by in one or more frames. Typically, only one manually annotated reference object is required per area.

::::WorkflowBlock
:::WorkflowBlockItem
**With prelabels:&#x20;**&#x43;reate the 3D box from the prelabel

**Without prelabels:** Use [4D navigation](docId\:tPcQGNlxGjDgbSBDByyah) to click on the object points, this will navigate you to the frame with the most points - create the 3D box in this frame
:::

:::WorkflowBlockItem
Right-click on the 3D box and select [View in best frame](docId\:pxlp45Bdpfj4d8ZpgoRhq)
:::

:::WorkflowBlockItem
Adjust the size of the 3D box in the best frame - do not adjust the size of the box after this step
:::

:::WorkflowBlockItem
Move approximately 5 frames forward or backward (adjust based on sequence Hz)
:::

:::WorkflowBlockItem
Adjust position and rotation to compensate for drift

Use [Transformation controls](docId\:AI1c20I3hoU_BEXm8fFMX) with [snapping](docId\:AI1c20I3hoU_BEXm8fFMX) for efficient adjustments.
:::

:::WorkflowBlockItem
Repeat steps 5-6 until the box wraps the points correctly when you scrub through the sequence
:::

:::WorkflowBlockItem
Trim the lifespan of the 3D box with the videobar [visibility controls](docId:7_f60sR9Daxz7LIcrzdzz)
:::

:::WorkflowBlockItem
Run [Filter cuboids below point threshold](docId\:mlkQv7jin_EOzifQoSOMB) to mark frames where the object point count is below the configured threshold as not visible
:::
::::

## Subsequent objects

All subsequent objects in the area can be corrected using the reference object.

::::WorkflowBlock
:::WorkflowBlockItem
**With prelabels:&#x20;**&#x43;reate the 3D box from the prelabel

**Without prelabels:** Use [4D navigation](docId\:tPcQGNlxGjDgbSBDByyah) to click on the object points, this will navigate you to the frame with the most points - create the 3D box in this frame
:::

:::WorkflowBlockItem
Right-click on the 3D box and select [View in best frame](docId\:pxlp45Bdpfj4d8ZpgoRhq)
:::

:::WorkflowBlockItem
Adjust the size of the 3D box in the best frame - do not adjust the size of the box after this step
:::

:::WorkflowBlockItem
Activate [Relative keyframe in 3D](docId:1PKhCyGtgWlFQZoHUFTQv) and select a nearby well-annotated object as a reference
:::

:::WorkflowBlockItem
**Optional**: scrub through the sequence to verify the compensation
:::

:::WorkflowBlockItem
Trim the lifespan of the 3D box with the videobar [visibility controls](docId:7_f60sR9Daxz7LIcrzdzz)
:::

:::WorkflowBlockItem
Run [Filter cuboids below point threshold](docId\:mlkQv7jin_EOzifQoSOMB) to mark frames where the object point count is below the configured threshold as not visible
:::
::::
:::::

:::ExpandableHeading
# Common mistakes&#x20;

**Adjusting the 3D box in every frame** — for stationary objects, one keyframe (or using [Relative keyframe in 3D](docId:1PKhCyGtgWlFQZoHUFTQv)) is almost always sufficient

**Skipping Point cloud aggregation on clean data** — Point cloud aggregation gives a complete view of the object and improves sizing accuracy

**Using Action assist in 3D on stationary objects** — avoid this; it is not suitable for objects that do not move

**Using Quick-move (**`F`**) or Refine (**`M`**)** — these are not recommended for stationary objects
:::

::::ExpandableHeading
# Draw the connected 2D boxes

After completing the 3D annotation, create 2D bounding boxes.

## Creating 2D boxes

**If prelabels are available**, use [2D bounding boxes with autocomplete](docId\:TfjsznROmWyAZm4_SMR5C), hover over the object and press `Tab` to accept the suggested box. If the suggestion is inaccurate, press `Escape` and draw manually instead.

**If there are no prelabels**, click the "Create connected 2D box" button to generate boxes across all visible frames based on the 3D projection. Only use this if the first projected box looks correctly placed — if it is misaligned due to poor calibration, draw manually using the four-point method instead.

**If the object is missing in a specific camera**, select it and click "Draw connected object" in the sidebar to draw a 2D box for that camera.

## Adjusting 2D boxes

After creating 2D boxes, scrub through the sequence and check each camera source to verify the boxes are correctly placed. Add or adjust boxes where needed.

If a 2D box needs correction, use one of the following (ordered by preference):

1. **Redraw** — press `0` to reactivate the drawing tool and draw a new box with four clicks
2. [Action assist: 2D / 3D fusion](docId\:Take58EC1RmPcBLdkZrn4) — press `shift+space`; the system zooms to the 3D box's projection and activates the drawing tool. Only works well if camera calibrations are good
3. [Auto complete](docId\:TfjsznROmWyAZm4_SMR5C) — hover over the object and press `Tab` to accept the suggested box
4. [Auto-adjust objects](docId\:V66INpJdyEuOFPHcXg6vm) — for clearly visible, unoccluded vehicles (not suitable for traffic signs, poles, or other non-vehicle objects). With the object selected, press `M` to auto-adjust the 2D bounding box
5. **Drag the control handles** on the edges of the box — useful for small corrections

:::hint{type="info"}
Pay attention to objects near image borders — calibration and time synchronisation issues may cause these frames to display incorrect visibility status.
:::
::::

::::LinkArray{contentSource="CUSTOM"}
:::LinkArrayItem
[2D/3D boxes in sequence](docId\:hGMlZcQHULmuQnW1Xu_wC)&#x20;
:::

:::LinkArrayItem
[Static objects](docId\:QxqHn8yIN9bS5HJdsz0O4)&#x20;
:::

:::LinkArrayItem
[Point cloud aggregation](docId\:bcoYTPTDI72b6fMuqvntX)&#x20;
:::

:::LinkArrayItem
[Relative keyframe in 3D](docId:1PKhCyGtgWlFQZoHUFTQv)&#x20;
:::

:::LinkArrayItem
[Transformation controls](docId\:AI1c20I3hoU_BEXm8fFMX)&#x20;
:::

:::LinkArrayItem
[4D navigation](docId\:tPcQGNlxGjDgbSBDByyah)&#x20;
:::

:::LinkArrayItem{headerType="NONE"}
[Filter cuboids below point threshold](docId\:mlkQv7jin_EOzifQoSOMB)&#x20;
:::
::::

