open3d.t.geometry.LineSet¶
-
class
open3d.t.geometry.
LineSet
¶ A LineSet contains points and lines joining them and optionally attributes on the points and lines. The
LineSet
class stores the attribute data in key-value maps, where the key is the attribute name and value is a Tensor containing the attribute data. There are two maps: one each forpoint
andline
.The attributes of the line set have different levels:
import open3d as o3d dtype_f = o3d.core.float32 dtype_i = o3d.core.int32 # Create an empty line set # Use lineset.point to access the point attributes # Use lineset.line to access the line attributes lineset = o3d.t.geometry.LineSet() # Default attribute: point.positions, line.indices # These attributes is created by default and are required by all line # sets. The shape must be (N, 3) and (N, 2) respectively. The device of # "positions" determines the device of the line set. lineset.point.positions = o3d.core.Tensor([[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1]], dtype_f, device) lineset.line.indices = o3d.core.Tensor([[0, 1], [1, 2], [2, 3], [3, 0]], dtype_i, device) # Common attributes: line.colors # Common attributes are used in built-in line set operations. The # spellings must be correct. For example, if "color" is used instead of # "color", some internal operations that expects "colors" will not work. # "colors" must have shape (N, 3) and must be on the same device as the # line set. lineset.line.colors = o3d.core.Tensor([[0.0, 0.0, 0.0], [0.1, 0.1, 0.1], [0.2, 0.2, 0.2], [0.3, 0.3, 0.3]], dtype_f, device) # User-defined attributes # You can also attach custom attributes. The value tensor must be on the # same device as the line set. The are no restrictions on the shape or # dtype, e.g., lineset.point.labels = o3d.core.Tensor(...) lineset.line.features = o3d.core.Tensor(...)
-
__init__
(*args, **kwargs)¶ Overloaded function.
__init__(self: open3d.cpu.pybind.t.geometry.LineSet, device: open3d.cpu.pybind.core.Device = CPU:0) -> None
Construct an empty LineSet on the provided device.
__init__(self: open3d.cpu.pybind.t.geometry.LineSet, point_positions: open3d.cpu.pybind.core.Tensor, line_indices: open3d.cpu.pybind.core.Tensor) -> None
Construct a LineSet from point_positions and line_indices.
The input tensors will be directly used as the underlying storage of the line set (no memory copy). The resulting
LineSet
will have the samedtype
anddevice
as the tensor. The device forpoint_positions
must be consistent withline_indices
.__init__(self: open3d.cpu.pybind.t.geometry.LineSet, arg0: open3d.cpu.pybind.t.geometry.LineSet) -> None
Copy constructor
-
clear
(self)¶ Clear all elements in the geometry.
- Returns
open3d.t.geometry.Geometry
-
clone
(self: open3d.cpu.pybind.t.geometry.LineSet) → open3d.cpu.pybind.t.geometry.LineSet¶ Returns copy of the line set on the same device.
-
cpu
(self: open3d.cpu.pybind.t.geometry.LineSet) → open3d.cpu.pybind.t.geometry.LineSet¶ Transfer the line set to CPU. If the line set is already on CPU, no copy will be performed.
-
cuda
(self: open3d.cpu.pybind.t.geometry.LineSet, device_id: int = 0) → open3d.cpu.pybind.t.geometry.LineSet¶ Transfer the line set to a CUDA device. If the line set is already on the specified CUDA device, no copy will be performed.
-
extrude_linear
(self: open3d.cpu.pybind.t.geometry.LineSet, vector: open3d.cpu.pybind.core.Tensor, scale: float = 1.0, capping: bool = True) → open3d::t::geometry::TriangleMesh¶ Sweeps the line set along a direction vector.
- Parameters
vector (open3d.core.Tensor) – The direction vector.
scale (float) – Scalar factor which essentially scales the direction vector.
- Returns
A triangle mesh with the result of the sweep operation.
Example
- This code generates an L-shaped mesh::
import open3d as o3d
lines = o3d.t.geometry.LineSet([[1.0,0.0,0.0],[0,0,0],[0,0,1]], [[0,1],[1,2]]) mesh = lines.extrude_linear([0,1,0]) o3d.visualization.draw([{‘name’: ‘L’, ‘geometry’: mesh}])
-
extrude_rotation
(self: open3d.cpu.pybind.t.geometry.LineSet, angle: float, axis: open3d.cpu.pybind.core.Tensor, resolution: int = 16, translation: float = 0.0, capping: bool = True) → open3d::t::geometry::TriangleMesh¶ Sweeps the line set rotationally about an axis.
- Parameters
angle (float) – The rotation angle in degree.
axis (open3d.core.Tensor) – The rotation axis.
resolution (int) – The resolution defines the number of intermediate sweeps about the rotation axis.
translation (float) – The translation along the rotation axis.
- Returns
A triangle mesh with the result of the sweep operation.
Example
This code generates a spring from a single line:
import open3d as o3d line = o3d.t.geometry.LineSet([[0.7,0,0],[1,0,0]], [[0,1]]) spring = line.extrude_rotation(3*360, [0,1,0], resolution=3*16, translation=2) o3d.visualization.draw([{'name': 'spring', 'geometry': spring}])
-
static
from_legacy
(lineset_legacy, float_dtype=Float32, int_dtype=Int64, device=CPU:0)¶ Create a LineSet from a legacy Open3D LineSet.
- Parameters
lineset_legacy (open3d.geometry.LineSet) – Legacy Open3D LineSet.
float_dtype (open3d.core.Dtype, optional, default=Float32) – Float32 or Float64, used to store floating point values, e.g. points, normals, colors.
int_dtype (open3d.core.Dtype, optional, default=Int64) – Int32 or Int64, used to store index values, e.g. line indices.
(open3d.core.Device (device) – 0): The device where the resulting LineSet resides.
optional – 0): The device where the resulting LineSet resides.
default=CPU – 0): The device where the resulting LineSet resides.
- Returns
open3d.t.geometry.LineSet
-
get_axis_aligned_bounding_box
(self: open3d.cpu.pybind.t.geometry.LineSet) → open3d::t::geometry::AxisAlignedBoundingBox¶ Create an axis-aligned bounding box from point attribute ‘positions’.
-
get_center
(self: open3d.cpu.pybind.t.geometry.LineSet) → open3d.cpu.pybind.core.Tensor¶ Returns the center for point coordinates.
-
get_max_bound
(self: open3d.cpu.pybind.t.geometry.LineSet) → open3d.cpu.pybind.core.Tensor¶ Returns the max bound for point coordinates.
-
get_min_bound
(self: open3d.cpu.pybind.t.geometry.LineSet) → open3d.cpu.pybind.core.Tensor¶ Returns the min bound for point coordinates.
-
get_oriented_bounding_box
(self: open3d.cpu.pybind.t.geometry.LineSet) → open3d::t::geometry::OrientedBoundingBox¶ Create an oriented bounding box from point attribute ‘positions’.
-
has_valid_material
(self: open3d.cpu.pybind.t.geometry.DrawableGeometry) → bool¶ Returns true if the geometry’s material is valid.
-
is_empty
(self)¶ Returns
True
iff the geometry is empty.- Returns
bool
-
rotate
(self, R, center)¶ Rotate points and lines. Custom attributes (e.g. point normals) are not rotated.
- Parameters
R (open3d.core.Tensor) – Rotation [Tensor of shape (3,3)].
center (open3d.core.Tensor) – Center [Tensor of shape (3,)] about which the LineSet is to be rotated. Should be on the same device as the LineSet.
- Returns
open3d.t.geometry.LineSet
-
scale
(self, scale, center)¶ Scale points and lines. Custom attributes are not scaled.
- Parameters
scale (float) – Scale magnitude.
center (open3d.core.Tensor) – Center [Tensor of shape (3,)] about which the LineSet is to be scaled. Should be on the same device as the LineSet.
- Returns
open3d.t.geometry.LineSet
-
to
(self: open3d.cpu.pybind.t.geometry.LineSet, device: open3d.cpu.pybind.core.Device, copy: bool = False) → open3d.cpu.pybind.t.geometry.LineSet¶ Transfer the line set to a specified device.
-
to_legacy
(self: open3d.cpu.pybind.t.geometry.LineSet) → open3d.cpu.pybind.geometry.LineSet¶ Convert to a legacy Open3D LineSet.
-
transform
(self, transformation)¶ Transforms the points and lines. Custom attributes (e.g. point normals) are not transformed. Extracts R, t from the transformation as:
\[\begin{split}T_{(4,4)} = \begin{bmatrix} R_{(3,3)} & t_{(3,1)} \\ O_{(1,3)} & s_{(1,1)} \end{bmatrix}\end{split}\]It assumes \(s = 1\) (no scaling) and \(O = [0,0,0]\) and applies the transformation as \(P = R(P) + t\)
- Parameters
transformation (open3d.core.Tensor) – Transformation [Tensor of shape (4,4)]. Should be on the same device as the LineSet
- Returns
open3d.t.geometry.LineSet
-
translate
(self, translation, relative=True)¶ Translates points and lines of the LineSet.
- Parameters
translation (open3d.core.Tensor) – Translation tensor of dimension (3,). Should be on the same device as the LineSet
relative (bool, optional, default=True) – If true (default) translates relative to center of LineSet.
- Returns
open3d.t.geometry.LineSet
-
property
device
¶ Returns the device of the geometry.
-
property
is_cpu
¶ Returns true if the geometry is on CPU.
-
property
is_cuda
¶ Returns true if the geometry is on CUDA.
-
property
line
¶ Dictionary containing line attributes. The primary key
indices
contains indices of points defining the lines.
-
property
material
¶
-
property
point
¶ Dictionary containing point attributes. The primary key
positions
contains point positions.
-