You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/content/concepts/transforms.md
+35-6Lines changed: 35 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -43,7 +43,7 @@ While entity path hierarchies work well for many cases, sometimes you need more
43
43
In particular for anyone familiar with ROS we recommend using explicit transform frames as it allows you to model
44
44
your data much closer to how it would be defined when using ROS' [tf2](https://wiki.ros.org/tf2) library.
45
45
46
-
In a nutshell, by explicitely specifying transform frames, you can decouple the spatial relationships from the entity hierarchy.
46
+
In a nutshell, by explicitly specifying transform frames, you can decouple the spatial relationships from the entity hierarchy.
47
47
48
48
Instead of relying on the path relationships of entities, each entity is first associated with a named transform frame using
49
49
the [`CoordinateFrame`](https://rerun.io/docs/reference/types/archetypes/coordinate_frame) archetype.
@@ -88,7 +88,7 @@ However, currently once an entity specified the relation between two frames, thi
88
88
89
89
Named transform frames have a few of advantages over entity path based hierarchies:
90
90
* topology may change over time
91
-
* which entity is associated with which frame may change over time (it can also be [overriden via blueprint](..concepts/visualizers-and-overrides.md))
91
+
* which entity is associated with which frame may change over time (it can also be [overridden via blueprint](..concepts/visualizers-and-overrides.md))
92
92
* several entities may be associated with the same frame without
93
93
* frees up entity paths for semantic rather than geometric organization
94
94
@@ -145,9 +145,10 @@ rr.log("robot/arm/gripper",
145
145
146
146
### Mixing explicit and implicit transform frames
147
147
148
-
We generally do not recommend mixing explicit and implicit transform frames, but doing so works seemlessly
149
-
and can be useful in some situations:
148
+
We generally do not recommend mixing explicit and implicit transform frames since it can get confusing,
149
+
but doing so works seamlessly and can be useful in some situations.
TODO: Write a chapter on how pinhole projections are also spatial relationships in Rerun
164
+
In Rerun, pinhole cameras are also treated as spatial relationships that define projections from 3D spaces to 2D subspaces.
165
+
This unified approach allows the same transform system to handle both traditional 3D-to-3D transforms and 3D-to-2D projections seamlessly.
166
+
167
+
The [`Pinhole`](https://rerun.io/docs/reference/types/archetypes/pinhole) archetype defines this projection relationship through its intrinsic matrix (`image_from_camera`) and resolution.
168
+
Both implicit & named coordinate frames are supported, exactly as on [`Transform3D`](https://rerun.io/docs/reference/types/archetypes/transform3d).
169
+
170
+
With the right setup, pinholes allow a bunch of powerful visualizations:
171
+
* the pinhole glyph itself in 3D views
172
+
* 2D in 3D: all 2D content that is part of the pinhole's transform subtree
173
+
* 3D in 2D: if the pinhole is at the origin of the view, 3D objects can be projected through pinhole camera into the view.
174
+
* Both the [nuscenes](https://rerun.io/examples/robotics/nuscenes_dataset) and [arkit](https://rerun.io/examples/spatial-computing/arkit_scenes) examples make use of this
175
+
176
+
### Example: 3D scene with 2D projections
177
+
178
+
Here's how to set up a 3D scene with pinhole cameras that create 2D projections:
179
+
180
+
In this example, the 3D objects (box and points) are automatically projected into the 2D camera view,
181
+
demonstrating how Rerun's transform system handles the spatial relationship between 3D world coordinates
182
+
and 2D image coordinates through pinhole projections.
@@ -179,7 +208,7 @@ For 2D spaces and other entities, view coordinates currently have currently no e
179
208
180
209
## Poses & instancing
181
210
182
-
TODO: briefly explain poses, how they're relative to their entity's frame, how they can be used for instancing. Use a viewer embedd of the instancing example.
211
+
TODO: briefly explain poses, how they're relative to their entity's frame, how they can be used for instancing. Use a viewer embed of the instancing example.
0 commit comments