---
title: 3D Lines
slug: task-view-guide/recommended-workflow-3d-lines
docTags: 
createdAt: 2026-08-25T09:14:16.575Z
---

This page has two halves. **Annotating** is the order to work in and the tools that make each step cheap. **Reviewing** is what to check before a task leaves your hands — the same checks whether you are checking your own work or someone else's.

Annotating, in short:

::::WorkflowBlock
:::WorkflowBlockItem
Set up the view

Bird's Eye View (`b`) plus the settings that make the ground visible.
:::

:::WorkflowBlockItem
Read the scene

What you are annotating, and whether the data supports it.
:::

:::WorkflowBlockItem
Choose the order

One class at a time, each class supporting the next.
:::

:::WorkflowBlockItem
Draw the lines
:::

:::WorkflowBlockItem
Adjust

Simplify, align to the ground, fix directions.
:::

:::WorkflowBlockItem
Set properties

Once, then paste along the run.
:::
::::

# Annotating

:::::ExpandableHeading
## 1. Setting up the view

3D lines describe the ground, so set the view up to show the ground clearly. Once per project is usually enough.

**If you change only three things:** Bird's Eye View (`b`), point cloud colours by **Intensity**, and **Show node ground alignment**. The rest is refinement.

### See the ground

| Setting                   | Where                           | Why                                                        |
| ------------------------- | ------------------------------- | ---------------------------------------------------------- |
| **Bird's Eye View** (`b`) | Main view                       | New nodes land at ground level, based on the lidar points. |
| **Hide object points**    | View → Point cloud point filter | Hides other objects' points. Not in all task types.        |

### See the markings

| Setting                                                      | Where                                  | Why                                                              |
| ------------------------------------------------------------ | -------------------------------------- | ---------------------------------------------------------------- |
| **Point cloud colors → Intensity** or **Intensity gradient** | View → Point cloud colors              | Painted markings reflect more light, so they stand out.          |
| **Point cloud color interval**                               | Window → Point cloud color interval... | Intensity gradient only separates markings from road once tuned. |
| **Point cloud highlight → Full view**                        | View → Point cloud highlight           | Lights the whole cloud, not just the current field of view.      |

### See your own lines

| Setting                                   | Where                         | Why                                                                                  |
| ----------------------------------------- | ----------------------------- | ------------------------------------------------------------------------------------ |
| **3D node mode → All nodes**              | View → 3D node mode           | Shows every line's nodes, not only the selected line's.                              |
| **Show node ground alignment**            | View                          | Colours nodes by distance to the ground.                                             |
| **Show node indices**                     | View                          | Numbers each line's nodes from 1, so a node can be named. Follows your 3D node mode. |
| **Direction indicator → All lines/lanes** | View → Direction indicator    | Shows which way every line runs.                                                     |
| **Geometry settings**                     | Window → Geometry settings... | On-screen size of lines and nodes — easier to see and click.                         |

### Check your lines against the cameras

| Setting                                                      | Where              | Why                                                                         |
| ------------------------------------------------------------ | ------------------ | --------------------------------------------------------------------------- |
| **Projections → Selected object (2D)**, **All objects (2D)** | View → Projections | Projects your lines into the images, to check against what the cameras saw. |
| **Projections → Search light**                               | View → Projections | Shows where in 3D an area of the image is.                                  |
| **Object camera ruler**                                      | View               | Adds a scale to the object cameras, so you can judge how far off a node is. |

The cameras can also follow your work, from the [The camera drawer](docId\:yXkLcvOmtEbTlj06G704G):

- **Auto-switch: object camera and frame visibility** — jumps to the camera and frame where the selection is best visible. Best for reviewing. Aggregated scenes only.
- **Auto-switch: cursor position** — follows your mouse. Best for classes you read from the images rather than the point cloud.

::::LinkArray{contentSource="CUSTOM"}
:::LinkArrayItem
[View](docId\:uqZMVCnqfx8NYUZfkIzex)
:::

:::LinkArrayItem
[Point slicing](docId\:gTV4dz53CZR-JKxl1l1LY)
:::

:::LinkArrayItem
[Projections](docId\:HnGmpFPjhTMaCdfUwwe8M)
:::

:::LinkArrayItem
[Object cameras](docId\:Wq00nqTw-hvAvjskFarnn)
:::

:::LinkArrayItem
[Point cloud aggregation](docId\:bcoYTPTDI72b6fMuqvntX)
:::
::::
:::::

:::ExpandableHeading
## 2. Reading the scene

A minute here is the cheapest minute in the task.

- **Look through the scene.** Step through a few frames in 2D: which markings and edges you will annotate, which belong together, how far the work reaches.
- **Use the ego trajectory to navigate, not to place lines.** Clicking it jumps to that frame. Where the vehicle drove is not where a line belongs — on a narrow road it may drive down the middle while the scene still needs a line each side.
- **Wait for the ground.** Nodes snap to the ground only after **Detecting ground** finishes.
- **Know what you are looking at.** Your nodes are only as accurate as the ground under them:
  - **Smearing** — a stationary object that looks smeared means the cloud drifts, so the ground is not where it appears.
  - **Ghost shells** — vehicles and pedestrians look hollow in an [Point cloud aggregation](docId\:bcoYTPTDI72b6fMuqvntX). Expected, not a fault.

What to do about these is a project question: some projects want the task flagged, others want it annotated as it is.
:::

::::ExpandableHeading
## 3. Choosing the order you annotate in

Which classes a scene needs is decided for you. The order you create them in usually is not — and it changes how much each class costs you.

**Finish one class before starting the next.** Fewer class switches, properties paste across a whole run, and the [Property overlay](docId\:nHzgrCSfQJGCxO2BPhp7V) shows whether a run is complete.

Then order the classes so each supports the next:

1. **Reference lines** — the longest, clearest lines, usually painted markings. Easiest to place accurately, and they orient you in 3D for everything else.
2. **Physical boundaries** — curbs, road edges, barriers. Later lines are judged against these, so draw them before.
3. **Closing lines** — where the area ends without a physical edge, such as the far end of the road. Hold `alt` to attach their end nodes to the boundaries and close the area.
4. **Surfaces and connections derived from those lines** — build with [Derived classes](docId\:t7pVIh7-6-Q3NbuECCDgF) rather than freehand. Only cheap once steps 2 and 3 are right: a derived shape inherits its sources.
5. **Exclusions inside a surface** — islands and obstacles. If they need links to the shapes they sit inside, set those now, while both shapes are fresh.
6. **Classes you judge from the images** — surface conditions, ground deviations. Place the first nodes with **Auto-switch: cursor position** on.
7. **The extent of the annotation** — a shape that says how much of the scene is annotated, if the task has one, comes last: only then can you see how far the cloud stays dense and what has to fit inside.

Not every scene has all seven. With no painted markings, step 1 falls away and the physical boundaries become your reference lines.

:::hint{type="info"}
**Two kinds of boundary.** A *physical* boundary is visible in the cloud, so it comes early and everything is measured against it. An *extent* boundary is a decision about how much to annotate, so it comes last. Treating the second like the first is what makes people redraw it.
:::

### Plan where each line starts and stops

- **Break lines where they need to connect.** Derived tools work from line ends, so a stretch that connects to something must end there — one object per stretch, not per road.
- **Run lines past the shape that bounds them** where they are meant to cross it, rather than stopping exactly on the boundary.
- **Start a line only where the feature is real.** Too narrow for what it describes means it has not started yet.

### Node density and placement

- Few nodes on straights, more through curves. Extra nodes on a straight add review time, not accuracy.
- Keep nodes on the ground, not on what stands above it. A node on a tree, pole or parked vehicle leaves the line floating.
- Skip adjustments below your project's tolerance.
::::

:::::ExpandableHeading
## 4. Drawing 3D lines

Work in **Bird's Eye View** (`b`) whenever you can: each node lands at the lowest point in the cloud where you place it.

- Hold `alt` while drawing to [Attach nodes](docId:-Yy4teRrG6JlD5UIHQUA5) to another line, lane or point.
- Select the Pen tool again to continue the selected line.
- Extend a finished line with `0` at the end, `shift+0` at the start.

[Action assist: 3D lines](docId\:D0K8KFtHb7PIB6SwfWXsE) steps the view sideways as you place nodes, so the drawing motion is shorter and your hands stay in one place. If it stops stepping, press `esc`, `b`, select the class again and place the first node.

### Building on lines that already exist

[Derived classes](docId\:t7pVIh7-6-Q3NbuECCDgF) make a new shape from shapes you already drew:

| Derived class       | What it gives you                                                                                                | Options                                                                                                                     |
| ------------------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| **Centerline**      | A line midway between two lines or lanes, e.g. between left and right lane edges.                                | Length: same as selected, or selected plus connected lines.                                                                 |
| **Lane connection** | A smooth line connecting two lines or lanes.                                                                     | Curve type **Soft** or **Sharp** and curve strength. A type is suggested, and the choice appears only for lines that cross. |
| **Combined line**   | One line through two or more existing lines, with a node at every selected node. For U-shaped and closed shapes. | Offset in cm; positive pushes nodes outward.                                                                                |

- **Selection order matters** — it sets a lane connection's direction and a combined line's shape. If the result doubles back, check both sources run the same way.
- **Keep lane connection curves gradual** unless the real geometry is sharp.
- **A derived line is only as good as its sources.** Expect to check length, direction, overlap, ground position and node count before you move on. On complex stretches, drawing the line yourself beats repairing a derived one.

**Drag to duplicate** creates the opposite edge in one motion, usually needing edits after. See [Drag to duplicate](docId\:lmdZSyT0y5o40zkJMriU9).

::::LinkArray{contentSource="CUSTOM"}
:::LinkArrayItem
[3D lines](docId:7INL_rq6tOYb7ytadaUwB)
:::

:::LinkArrayItem
[Add/ remove nodes](docId\:l9gxHlChBCDxOg2lc3PeR)
:::
::::
:::::

:::ExpandableHeading
## 5. Adjusting 3D lines

**Node tools** — add, remove and adjust one or many nodes. Most are in the [The action bar](docId\:NTY4YGlaqsQRySd-VJcWI); [Transformation controls](docId\:AI1c20I3hoU_BEXm8fFMX) work on a single node.

[Add/ remove nodes](docId\:l9gxHlChBCDxOg2lc3PeR) · [Align 3D nodes to ground](docId\:E27ypfHIdmMW_NZydSyki) · [Multi-edit nodes](docId\:UmF1ixrqo2cPGeL0yQTTL) · [Attach nodes](docId:-Yy4teRrG6JlD5UIHQUA5) · [Detach nodes](docId\:mTpENSv2pyO6mT0MHC6E6)

**Shape tools** — modify or combine whole shapes; Scissors works on several lines at once. For position, scale or rotation, activate [Node and shape edit modes](docId:9Y0ax8qabL5CeiKmQxRDe).

[Align 3D nodes to ground](docId\:E27ypfHIdmMW_NZydSyki) · [Simplify 3D line/ lanes](docId\:Ed75biMfbdkc-5uYXIxIR) · [Scissors](docId\:ANO8t0CQ_TEMTKVDatc1j) · [Join lines/ lanes](docId\:geIEKjONJACt0bvz_wen9)

- **Wrong direction?** Right-click the line → **Reverse direction**.
- **Splitting gives you two objects.** Anything that referenced the original — a link, or a shape derived from it — may now point at the wrong half.
- **Joining merges two lines into one object and ID.** Pick the ends; the preview arrow shows the resulting direction. If a join will not commit, detach the lines and leave a gap between the ends.
:::

:::ExpandableHeading
## 6. Setting properties

Set them however you normally do — [Quick-properties](docId\:jRG96ECGJB68hRhKC7k_Y), the **Edit** tab, or copy and [Properties](docId\:uWjx3tIgR8RGs2EGHw7FB) of the same class.

What is worth doing differently on lines: set one line correctly, then paste its properties down the whole run before moving to the next class. The [Property overlay](docId\:nHzgrCSfQJGCxO2BPhp7V) colours shapes by their properties, so a run you have not finished is easy to spot.
:::

# Reviewing

Run these checks before a task leaves your hands. They are the same whether you are finishing your own annotation or reviewing someone else's — the difference is what you do with what you find: correct it, or record it as [Add feedback](docId\:dYaP_Cmm72dMzPvZ6e5lB) for whoever annotated it. Which of the two your project expects is a project question.

When you add feedback to a line or lane, a pin is placed automatically — at the point you clicked, or at the node you had selected when you opened the form — and **Go to pin** on the feedback card takes the annotator straight there. The pin follows one object, so it disappears if you select a second.

Go through the scene with Bird's Eye View both on and off — each exposes different mistakes.

:::ExpandableHeading
## Node positions

With **Show node ground alignment** and **3D node mode → All nodes** on, look for orange and red:

| Colour | Meaning                               |
| ------ | ------------------------------------- |
| Green  | On the ground — within 10 cm.         |
| Orange | Slightly off — within 25 cm.          |
| Red    | More than 25 cm off.                  |
| White  | Ground could not be determined there. |

Turn on **Show node indices** as well if you are writing feedback: it numbers the nodes from 1, so a comment can name the node it is about instead of describing where it is.

Then check from a second angle: turn Bird's Eye View off and travel the scene at ground level, or step through frames in 2D. A line that looked fine from above is obviously floating from the side. **Auto-switch: object camera and frame visibility** (aggregated scenes) or **Auto-switch: object camera visibility** does this as you step node to node, with the line projected into the [2D miniature image](docId\:BUDTV3lL0y3HHQYK8qXGl).
:::

:::ExpandableHeading
## Line direction

Turn on [Direction indicator](docId\:vg0RqVtpdKretT4oSVWCH) for all lines and check them in one pass. What a direction means is defined per task, and can differ between datasets in one project — right-hand versus left-hand traffic, for instance — so check which the task is from rather than assuming.
:::

:::ExpandableHeading
## Links

Where two shapes are meant to be related, check the link is actually set. Turn on object links in the [Edit tab](docId\:zicM7AvHQ1eaF_HKrqLFp) to see the connections in the scene, and View → **Show object link area** to shade the stretch each link covers, with one colour per area on a shape that has several — useful when the question is not whether a link exists but whether it covers the right stretch.

Re-check links near anything that was cut, joined or redrawn: a shape that referenced the original line may now point at the wrong object.
:::

:::ExpandableHeading
## Properties

Use the [Property overlay](docId\:nHzgrCSfQJGCxO2BPhp7V) to confirm every class carries the properties it needs.

When the objects in your way are defined by a value rather than a class, hover the value in an expanded property and click the hide icon: every object with that value disappears, including objects with no value set for that property. Hide several at once, and save the combination as a favourite filter if you use it in every task.
:::

:::::ExpandableHeading
## Validation

Resolve the validation warnings, then [Submit & reset a task](docId\:sqpFvjrJkS0EGMkwQbEfP).

::::LinkArray{contentSource="CUSTOM"}
:::LinkArrayItem
[Feedback overview](docId\:kkOaaDN2hL33jbtqug7Po)
:::

:::LinkArrayItem
[Object feedback](docId\:J6DVumpe0fwoqWQZ-QWFH)
:::

:::LinkArrayItem
[Focused Review](docId:31tTldc-nIluS-cJNBVO8)
:::
::::
:::::

# Reference

Applies to both halves.

:::ExpandableHeading
## Tips for common issues

**Too many nodes.** [Simplify 3D line/ lanes](docId\:Ed75biMfbdkc-5uYXIxIR) removes redundant points, or reduces the line to a node count you choose.

**Nodes are not on the ground.** Try [Align 3D nodes to ground](docId\:E27ypfHIdmMW_NZydSyki) first; where it fails — sparse cloud, steep elevation — align manually. On curbs and raised edges, check the result: alignment can settle nodes on top of the structure instead of at its base.

To fix a whole line's height: select it, activate [Node and shape edit modes](docId:9Y0ax8qabL5CeiKmQxRDe), view it in the side cameras, and use the scale transform to "squish" all nodes to the same z-position.

**Trees, poles or buildings block the view from above.** Hold `Ctrl` and `scroll` to slice the cloud, or set the range in Window → Point cloud slicing... See [Point slicing](docId\:gTV4dz53CZR-JKxl1l1LY). Slicing keeps a flat band of heights, so on sloping ground the band that clears the trees at one end can cut away the road at the other — slice for the stretch you are on, then widen again.

**I can see the error in the image but not in 3D.** Turn on **Search light** under View → [Projections](docId\:HnGmpFPjhTMaCdfUwwe8M).

**The point cloud barely shows the feature.** Turn on **Auto-switch: cursor position** in [The camera drawer](docId\:yXkLcvOmtEbTlj06G704G) so a camera follows your mouse.

**Nodes will not move, or drawing stops responding.** Switch to 2D and back to 3D.
:::

:::ExpandableHeading
## Shortcuts worth knowing for lines

Only the line and node ones — the general shortcuts are in [The keybindings window](docId\:ZeOhmSOo_kfy-qZQnMNY2), where you can also change these or add your own.

| Shortcut                              | Action                                             |
| ------------------------------------- | -------------------------------------------------- |
| `b`                                   | Bird's eye view mode                               |
| `alt` (hold while drawing or editing) | Attach node to another 3D line, lane or point      |
| `alt+n` / `alt+p`                     | Step to next / previous node                       |
| `+` / `-`                             | Add node / remove node                             |
| `0` / `shift+0`                       | Extend the selected line at the end / at the start |
| `shift+z`                             | Switch between shape edit and node edit            |
:::

