- 1 Main entities
- 2 Point cloud associated structures
- 3 Other entities
A point cloud is a set of unorganized 3D points (X,Y,Z).
It can be associated to:
- a unique color for the whole entity (RGB)
- per-point colors (RGB)
- per-point normal vectors (Nx,Ny,Nz)
- per-point scalar values (a scalar field) - multiple scalar fields can be associated to the same cloud
Note: since version 2.6.2, point clouds coming from structured/gridded files (such as PTX, DP or FARO) are now associated to a simple grid structure. This structure will mainly be used to export the cloud in a structured format, but it can also be used when computing normals for instance.
A mesh is a set of triangles. Internally, triangles are represented by triplets of integer indexes. Those indexes are relative to an associated cloud (the mesh vertices). Therefore a mesh 'inherits' of all the features associated to a point cloud (see above).
In addition a mesh can be associated to:
- per-triangle normal vectors (Nx,Ny,Nz)
- per-triangle materials
- per-triangle texture coordinates
A standard mesh generally corresponds to a single object. Its vertices are stored as a point cloud (which is generally a child of the mesh object in the DB tree).
When importing a mesh with multiple parts (from OBJ or FBX files for instance) or when merging multiple meshes, CloudCompare can create 'sub-meshes'. They are subsets of a main mesh (and can therefore only be child of this parent mesh). They all share the same set of vertices and the same features.
Primitives are a special kind of meshes. They can be created with the 'Primitive Factory', or with the 'Tools > Fit' methods (or also imported from CAD formats - e.g. PDMS macros).
Primitives are described by simple parameters (radius, height, etc.). However they are associated to a tessellated representation (i.e. a proper triangular mesh). This way they can be used as standard meshes (for distance calculation, etc.).
Note: for some primitives (spheres, cylinders, etc.) the user can change the 'drawing precision' (i.e. the amount of tessellated triangles).
A polyline is a set of points connected by contiguous segments. The polyline can be closed (i.e. a loop) or not. By default a polyline is a 3D object. But they can also be 2D entities (in which case they will be displayed as a 2D overlay object and their coordinates are always in pixels).
Internally a polyline is a set of indexes. Those indexes are relative to an associated point cloud (the polyline vertices). Its vertices are stored as a point cloud (which is generally a child of the mesh object in the DB tree).
For now polylines don't inherit the features of their associated cloud (color, normals, etc.). However they can be associated to a single color (RGB).
Point cloud associated structures
The octree structure is a very important structure in CloudCompare. It is used by most of the processing algorithms (distance computation, spatial operators, etc.).
For general information about octree structures refer to http://en.wikipedia.org/wiki/Octree.
For more information about the practical implementation of the octree structure in CloudCompare, see the CloudCompare octree section.
There are currently two kind of sensors in CloudCompare.
Point clouds acquired thanks to a Ground Based Laser scanner (also called a Terrestrial Laser Scanner) can be associated to a sensor entity. This is a structure containing information about the sensor (intrinsic and extrinsic parameters, position and orientation relatively to the cloud, etc.). It can be used to localize the sensor position in the 3D scene, to display the cloud in polar coordinates (' bubble-view' display mode), or to compute scattering angles, etc.
Proprietary formats typically contain this kind of information (PTX, FARO, DP, etc.). They are automatically created (as children of the loaded cloud(s)) when loaded from such files.
Otherwise sensors can be 'manually' created:
Point clouds or pictures acquired thanks to a camera can be associated to a sensor entity. This is a structure containing information about the sensor (intrinsic and extrinsic parameters, position and orientation relatively to the cloud, etc.). It can be used to localize the sensor position in the 3D scene, display the cloud as if it was viewed by the camera (see the 'Apply' button in the sensor properties), filter the points actually viewed by this camera, etc.
Camera sensors are automatically created when loading calibrated pictures from a Bundler .OUT file for instance (or from some E57 files as well).
They can also be 'manually' created with the 'Sensors\Camera Sensor\Create' method.
P.S.: see also the Calibrated Picture entity below
Clouds can be associated to Labels. See the Point picking > Labels section for more information.
A simple group of other entities (can be used to classify or regroup entities). Groups can be created by right-clicking on the DB tree – see Context menu).
Images can be loaded from standard image file formats (jpg, bmp, png, etc.) via the standard 'File > Open' mechanism.
They can only be displayed in the 3D view as a 2D overlay (matching the 3D view extents). The user can change their transparency so as to visualize the 3D scene behind.
Calibrated pictures are standard images that are associated to a 'Camera' sensor. Therefore it is possible to set the camera parameters and position of the current 3D view to match the sensor parameters. This way the (calibrated) picture can be displayed above the 3D scene (with a customizable transparency).
Calibrated pictures can be loaded from Bundler .OUT files or from E57 files. They can also be loaded thanks to ICM meta-files.
The current 3D view 'viewport' can be saved anytime with the 'Display > Save viewport as object' method.
The corresponding viewport can be restored later thanks to this entity.
Note: this entity can only be saved in BIN files.
A special kind of label named '2D area label' can be created with the Point picking tool.
It has many common features with the 'Viewport' entity. And as this entity, it can only be saved in BIN files.