2. Points Clouds

2.1. ccPointCloud

All the inherited members are given here for convenience. Most of the time, this class is used rather than the bases classes.

class cloudComPy.ccPointCloud

Bases: PointCloudTpl_ccGenericPointCloud_QString

A 3D cloud and its associated features ( normals, scalar fields, etc.)

A point cloud can have multiple features:

  • normals (compressed) (TODO)

  • scalar fields

  • an octree structure

  • other children objects (meshes, calibrated pictures, etc.) (TODO)

__init__(self: _cloudComPy.ccPointCloud, name: QString = '', uniqueID: int = 4294967295) None

Default constructor Creates an empty cloud without any feature. Each of them should be specifically instantiated/created (once the points have been added to this cloud, at least partially).

Parameters:
  • name (string,optional) – cloud name

  • uniqueID (int,optional) – unique ID (handle with care)

addChild(self: _cloudComPy.ccHObject, child: _cloudComPy.ccHObject, dependencyFlags: int = <DEPENDENCY_FLAGS.DP_NONE: 0>, insertIndex: int = -1) bool

Adds a child.

warning the C++ default for DEPENDENCY_FLAGS (DP_PARENT_OF_OTHER) is replaced by DP_NONE in Python: The other values may induce a delete of the original child object in C++, not handled correctly on the Python side.

Parameters:
  • child (ccHObject) – child instance to append to the child list

  • dependencyFlags (DEPENDENCY_FLAGS,optional) – dependency flags, default DP_NONE

  • insertIndex (int,optional) – insertion index, default -1: if <0, child is simply appended to the children list.

Returns:

success

Return type:

bool

addPoint(self: _cloudComPy.PointCloudTpl_ccGenericPointCloud_QString, arg0: Vector3Tpl<T>) None

Adds a 3D point to the database

To ensure the best efficiency, the database memory must have already been reserved (with PointCloud::reserve). Otherwise nothing happens.

Parameters:

P (tuple) – a 3D point

addScalarField(self: _cloudComPy.ccPointCloud, arg0: str) int

Creates a new scalar field and registers it.

Warnings:

  • the name must be unique (the method will fail if a SF with the same name already exists)

  • this method DOES resize the scalar field to match the current cloud size

Parameters:

uniqueName (str) – scalar field name (must be unique)

Returns:

index of this new scalar field (or -1 if an error occurred)

Return type:

int

applyRigidTransformation(*args, **kwargs)

Overloaded function.

  1. applyRigidTransformation(self: _cloudComPy.ccPointCloud, arg0: ccGLMatrix) -> None

Applies a GL transformation to the entity:

this = rotMat*(this-rotCenter)+(rotCenter+trans)
Parameters:

trans (ccGLMatrix) – a ccGLMatrix structure

  1. applyRigidTransformation(self: _cloudComPy.ccPointCloud, arg0: ccGLMatrixTpl<float>) -> None

Applies a GL transformation to the entity:

this = rotMat*(this-rotCenter)+(rotCenter+trans)
Parameters:

trans (ccGLMatrix) – a ccGLMatrix structure

applyScalarFieldGaussianFilter(self: _cloudComPy.ccPointCloud, SFindex: int, sigma: float = 0.0, theOctree: _cloudComPy.DgmOctree = None) bool

Computes a spatial gaussian filter on a scalar field associated to a point cloud. The “amplitude” of the gaussian filter must be precised (sigma). As 99% of the gaussian distribution is between -3*sigma and +3*sigma around the mean value, this filter will only look for neighbouring points (around each point) in a sphere of radius 3*sigma.

Parameters:
  • sfIndex (int) – scalar field index in the cloud

  • sigma (float,optional) – filter variance, default 0 meaning using a cloud kernel size as a first guess.

  • theOctree (DgmOctree,optional) – the octree, (default None) if it has already been computed

Returns:

success

Return type:

bool

changeColorLevels(self: _cloudComPy.ccPointCloud, arg0: int, arg1: int, arg2: int, arg3: int, arg4: bool, arg5: bool, arg6: bool) bool

Linear transformation of color components levels between boundaries: the input levels are defined by a lower and an upper bound, and similarly at the output. The transformation can be applied on one or more color component (red, green, blue)

Parameters:
  • in0 (int) – input lower bound in range [0..255]

  • in1 (int) – input upper bound in range [0..255]

  • out0 (int) – output lower bound in range [0..255]

  • out1 (int) – output upper bound in range [0..255]

  • onRed (bool) – whether to apply the transformation on the red component

  • onGreen (bool) – whether to apply the transformation on the green component

  • onBlue (bool) – whether to apply the transformation on the blue component

Returns:

success

Return type:

bool

cloneThis(self: _cloudComPy.ccPointCloud, destCloud: _cloudComPy.ccPointCloud = None, ignoreChildren: bool = False) _cloudComPy.ccPointCloud

Clones this entity.

All the main features of the entity are cloned, except from the octree and the points visibility information.

Parameters:
  • destCloud (ccPointCloud,optional) – the destination cloud can be provided here

  • ignoreChildren (bool,optional) – whether to ignore the cloud’s children or not (in which case they will be cloned as well)

Returns:

a copy of this entity

Return type:

ccPointCloud

colorize(self: _cloudComPy.ccPointCloud, r: float, g: float, b: float, a: float = 1.0) bool

Multiplies all color components of all points by coefficients.

If the cloud has no color, all points are considered white and the color array is automatically allocated.

Parameters:
  • r (float) – red component (normalized value in [0., 1.])

  • g (float) – green component (normalized value in [0., 1.])

  • b (float) – blue component (normalized value in [0., 1.])

  • a (float,optional) – alpha component default 1.0, (normalized value in [0., 1.])

Returns:

success

Return type:

bool

colorsFromNPArray_copy(self: _cloudComPy.ccPointCloud, arg0: numpy.ndarray[numpy.uint8]) None

Set cloud color from a Numpy array (nbPoints,4).

Each row is (r,g,b,alpha) of type uint8 (unsigned char). Color memory is reserved automatically in the cloud.

Parameters:

array (ndarray) – a Numpy array (nbPoints,4).

colorsShown(self: _cloudComPy.ccHObject) bool

Returns True if the colors are shown, False otherwise. It is used to prepare the state of the entity when it is saved in a .bin format, for reopening in the GUI in a predefined state (colors, normal, scalarFields).

Returns:

whether the colors are shown.

Return type:

bool

colorsToNpArray(self: _cloudComPy.ccPointCloud) numpy.ndarray

Wrap the PointCloud colors into a numpy Array, without copy.

Returns a numpy Array of shape (number of Points, 4) (r, g ,b, a). Data type np.uint8. Data is not copied, the numpy Array object does not own the data.

WARNING No automatic action on the Python side on the variables referencing the C++ object in case of destruction!

Returns:

numpy Array of shape (number of Points, 4) dtype uint8

Return type:

ndarray

colorsToNpArrayCopy(self: _cloudComPy.ccPointCloud) numpy.ndarray

Wrap the PointCloud colors into a numpy Array, with copy.

Returns a numpy Array of shape (number of Points, 4) (r, g ,b, a). Data type np.uint8. Data is copied, the numpy Array object owns its data. Ownership is transfered to Python: the numpy Array object and its data will be handled by the Python Garbage Collector

Returns:

numpy Array of shape (number of Points, 4) dtype uint8

Return type:

ndarray

computeGravityCenter(self: _cloudComPy.ccPointCloud) Vector3Tpl<T>

Return a tuple of the 3 coordinates of the gravity center of the cloud.

Returns:

gravity center coordinates

Return type:

tuple of float

computeOctree(self: _cloudComPy.ccGenericPointCloud, progressCb: CCCoreLib::GenericProgressCallback = None, autoAddChild: bool = True) CCCoreLib::DgmOctree

Computes the cloud octree.

The octree bounding-box is automatically defined as the smallest 3D cube that totally encloses the cloud.

WARNING: any previously attached octree will be deleted, even if the new octree computation failed.

Parameters:
  • progressCb,optional – (default None), use None

  • autoAddChild (bool,optional) – (default True) whether to automatically add the computed octree as child of this cloud or not

Returns:

the computed octree

Return type:

ccOctree

computeScalarFieldGradient(self: _cloudComPy.ccPointCloud, SFindex: int, radius: float, euclideanDistances: bool, theOctree: _cloudComPy.DgmOctree = None) bool

Computes the geometrical gradient of a scalar field associated to a point cloud.

The gradient is a new scalar field. See Daniel Girardeau-Montaut’s PhD manuscript (Chapter 3, section 3.3.2) for more information. As explained in this section, if the scalar field corresponds to (euclidean) distances between the points and another entity, then it is possible to filter out aberrant values.

Parameters:
  • SFindex (int) – The scalar Field index in the Point Cloud.

  • radius (double) – spherical neighborhood size (or 0 for automatic size)

  • euclideanDistances (bool) – indicates if the scalar values are euclidean distances

  • theOctree (DgmOctree,optional) – the octree, if it has already been computed

Returns:

success

Return type:

bool

convertCurrentScalarFieldToColors(self: _cloudComPy.ccPointCloud, mixWithExistingColor: bool = False) bool

Converts current scalar field to RGB colors.

Requires a current “displayed” scalar field: see setCurrentDisplayedScalarField().

Parameters:

mixWithExistingColor (bool,optional) – whether to mix with an existing color, default False

Returns:

success

Return type:

bool

convertNormalToDipDirSFs(self: _cloudComPy.ccPointCloud) bool

Converts normals to two scalar fields: ‘dip’ and ‘dip direction’.

See Strike and dip. Angles are in degrees.

Returns:

success

Return type:

bool

convertNormalToRGB(self: _cloudComPy.ccPointCloud) bool

Converts normals to color.

Converts the normals of a cloud to an HSV color field. H = dip direction, S = dip and V = 1.

Returns:

success

Return type:

bool

convertRGBToGreyScale(self: _cloudComPy.ccPointCloud) bool

Converts RGB to grey scale colors.

Returns:

success

Return type:

bool

coordsFromNPArray_copy(self: _cloudComPy.ccPointCloud, arg0: numpy.ndarray[numpy.float32]) None

Set cloud coordinates from a Numpy array (nbPoints,3).

WARNING Be sure to have an array data in C-style contiguous order, for instance, a transpose operation do not reorder the data in memory. Check the boolean array.flags['C_CONTIGUOUS'] and, if False, reorder with array.copy(order='C').

Cloud memory is reserved /resized automatically

Parameters:

array (ndarray) – a Numpy array (nbPoints,3).

countRef(self: object) int

Get the value of the Python reference counter. Do not use, for debug and tests only.

crop2D(self: _cloudComPy.ccPointCloud, arg0: _cloudComPy.ccPolyline, arg1: int, arg2: bool) _cloudComPy.ccPointCloud

Crop the point cloud using a 2D polyline.

Parameters:
  • poly (ccPolyline) – polyline object

  • orthoDim (int) – normal plane, value in (0, 1, 2) 0 = oY, 1 = oX, 2 = oZ

  • inside (bool) – boolean

Returns:

the cropped cloud. Points are copied, the original cloud is not modified.

Return type:

ccPointCloud

decRef(self: object) None

Decrement the Python reference counter. Do not use, for debug and tests only.

deleteAllScalarFields(self: _cloudComPy.ccPointCloud) None

Deletes all scalar fields associated to this cloud

deleteOctree(self: _cloudComPy.ccGenericPointCloud) None

Erases the octree

deleteScalarField(self: _cloudComPy.ccPointCloud, arg0: int) None

Deletes a specific scalar field.

WARNING: this operation may modify the scalar fields order (especially if the deleted SF is not the last one). However current IN & OUT scalar fields will stay up-to-date (while their index may change).

Parameters:

index (int) – index of scalar field to be deleted

enhanceRGBWithIntensitySF(self: _cloudComPy.ccPointCloud, sfIdx: int, useCustomIntensityRange: bool = False, minI: float = 0.0, maxI: float = 1.0) bool

Enhances the RGB colors with a scalar field (assuming it’s intensities)

Parameters:
  • sfIdx (int) – scalarField index

  • useCustomIntensityRange (bool,optional) – whether to set a custom range for intensity, default False

  • minI (float,optional) – min value for the custom range, default 0.

  • maxI (float,optional) – max value for the custom range, default 1.

Returns:

status

Return type:

bool

exportCoordToSF(self: _cloudComPy.ccPointCloud, arg0: bool, arg1: bool, arg2: bool) bool

Export coordinates to ScalarFields.

Parameters:
  • isXexported (bool) – export X coordinates

  • isYexported (bool) – export Y coordinates

  • isZexported (bool) – export Z coordinates

Returns:

status

Return type:

bool

exportNormalToSF(self: _cloudComPy.ccPointCloud, arg0: bool, arg1: bool, arg2: bool) bool

Export normals to ScalarFields.

Parameters:
  • isXexported (bool) – export X normals coordinate

  • isYexported (bool) – export Y normals coordinate

  • isZexported (bool) – export Z normals coordinate

Returns:

status

Return type:

bool

filterPointsByScalarValue(self: _cloudComPy.ccPointCloud, minVal: float, maxVal: float, outside: bool = False) _cloudComPy.ccPointCloud

Filters out points whose scalar values falls into an interval.

Threshold values should be expressed relatively to the current displayed scalar field. See setCurrentDisplayedScalarField() method.

Parameters:
  • minVal (float) – minimum value

  • maxVal (float) – maximum value

  • outside (bool,optional) – default False, whether to select the points inside or outside of the specified interval

Returns:

resulting cloud (remaining points)

Return type:

ccPointCloud

fuse(self: _cloudComPy.ccPointCloud, arg0: _cloudComPy.ccPointCloud) None

Append in place another cloud.

No return.

Parameters:

other (ccPointCloud) – cloud to fuse with this one, modification in place.

getChild(self: _cloudComPy.ccHObject, arg0: int) _cloudComPy.ccHObject

Get child by index.

Parameters:

index (int) – index of child, see getChildrenNumber().

Returns:

child object

Return type:

ccHObject

getChildCountRecursive(self: _cloudComPy.ccHObject) int

Get the number of children of this object, recursively.

Returns:

number of children, recursively

Return type:

int

getChildrenNumber(self: _cloudComPy.ccHObject) int

Get the number of direct children of this object.

Returns:

number of direct children

Return type:

int

getClassID(self: _cloudComPy.ccHObject) int

Get the type of this object.

Returns:

type

Return type:

CC_TYPE

getCurrentDisplayedScalarField(self: _cloudComPy.ccPointCloud) _cloudComPy.ccScalarField

Returns the currently displayed scalar (or None if none)

Current displayed scalar field is used in some methods such as filterPointsByScalarValue()

Returns:

currently displayed scalar field

Return type:

ScalarField or None

getCurrentDisplayedScalarFieldIndex(self: _cloudComPy.ccPointCloud) int

Returns the currently displayed scalar field index (or -1 if none)

Current displayed scalar field is used in some methods such as filterPointsByScalarValue()

Returns:

currently displayed scalar field index

Return type:

int

getCurrentInScalarField(self: _cloudComPy.ccPointCloud) _cloudComPy.ScalarField

Return the current ‘in’ ScalarField if there is one, otherwise None.

Returns:

current ‘in’ ScalarField

Return type:

ScalarField or None

getCurrentOutScalarField(self: _cloudComPy.ccPointCloud) _cloudComPy.ScalarField

Return the current ‘out’ ScalarField if there is one, otherwise None.

Returns:

current ‘out’ ScalarField

Return type:

ScalarField or None

getGlobalScale(self: _cloudComPy.ccShiftedObject) float

Returns the scale applied to original coordinates.

Returns:

the scale applied to original coordinates.

Return type:

double

getGlobalShift(self: _cloudComPy.ccShiftedObject) Vector3Tpl<T>

Returns the shift applied to original coordinates.

Original coordinates are equal to ‘(P/scale - shift)’ The shift is typically used when saving to a file.

Returns:

applied shift (x, y, z)

Return type:

tuple

getName(self: _cloudComPy.ccHObject) QString

Get the name of the entity

Returns:

entity name

Return type:

str

getNumberOfScalarFields(self: _cloudComPy.ccPointCloud) int

Return the number of scalar fields associated to the cloud.

Returns:

number of scalar fields

Return type:

int

getOctree(self: _cloudComPy.ccGenericPointCloud) CCCoreLib::DgmOctree

Returns the associated octree (if any).

Returns:

octree

Return type:

ccOctree or None

getOwnBB(self: _cloudComPy.ccGenericPointCloud) _cloudComPy.ccBBox

Returns the bounding box object.

Returns:

bounding box

Return type:

ccBBox

getParent(self: _cloudComPy.ccHObject) _cloudComPy.ccHObject

Get the parent of this object.

Returns:

parent object

Return type:

ccHObject

getPoint(self: _cloudComPy.PointCloudTpl_ccGenericPointCloud_QString, arg0: int) Vector3Tpl<T>

get the ith point in the cloud array.

Returns:

point coordinates

Return type:

tuple

getScalarField(*args, **kwargs)

Overloaded function.

  1. getScalarField(self: _cloudComPy.ccPointCloud, arg0: int) -> _cloudComPy.ScalarField

Find by index: return a ScalarField if index is valid, otherwise None.

Parameters:

index (int) – index of the ScalarField

Returns:

the ScalarField at index

Return type:

ScalarField or None

  1. getScalarField(self: _cloudComPy.ccPointCloud, arg0: QString) -> _cloudComPy.ScalarField

Find by name: return a ScalarField if there is one with this name, otherwise None.

Parameters:

name (str) – name of the ScalarField

Returns:

ScalarField

Return type:

ScalarField or None

getScalarFieldDic(self: _cloudComPy.ccPointCloud) dict[QString, int]

Return a dictionary [ScalarField name] –> ScalarField index.

Returns:

a dictionary [name]->index

Return type:

dic

getScalarFieldName(self: _cloudComPy.ccPointCloud, arg0: int) str

Return the ScalarField name if index is valid, otherwise None.

Parameters:

index (int) – index of the ScalarField

Returns:

ScalarField name at index

Return type:

str or None

getSensors(self: _cloudComPy.ccPointCloud) list[ccSensor]

Returns a list of sensors if any, otherwise empty list.

Returns:

list of ccSensor

Return type:

list

hasColors(self: _cloudComPy.ccPointCloud) bool

Return whether the cloud has Colors.

Returns:

True or False

Return type:

bool

hasNormals(self: _cloudComPy.ccPointCloud) bool

Return whether the cloud has Normals.

Returns:

True or False

Return type:

bool

hasScalarFields(self: _cloudComPy.ccPointCloud) bool

Return whether the cloud has ScalarFields.

Returns:

True or False

Return type:

bool

incRef(self: object) None

Increment the Python reference counter. Do not use, for debug and tests only.

interpolateColorsFrom(self: _cloudComPy.ccPointCloud, otherCloud: _cloudComPy.ccGenericPointCloud, octreeLevel: int = 0) bool

Interpolate colors from another cloud (nearest neighbor only).

Parameters:
  • other (ccGenericPointCloud) – source cloud with color

  • octreeLevel (int,optional) – octreeLevel, default 0

Returns:

success

Return type:

bool

isA(self: _cloudComPy.ccHObject, arg0: int) bool

Check the type of object.

Parameters:

type (CC_TYPES) – type to check

Returns:

OK if object is of this type

Return type:

bool

isKindOf(self: _cloudComPy.ccHObject, arg0: int) bool

Check the type of object.

Parameters:

type (CC_TYPES) – type to check

Returns:

OK if object is a kind of this type

Return type:

bool

isShifted(self: _cloudComPy.ccShiftedObject) bool

Returns whether the cloud is shifted or not

Returns:

whether the cloud is shifted or not

Return type:

bool

normalsFromNpArrayCopy(self: _cloudComPy.ccPointCloud, arg0: numpy.ndarray[numpy.float32]) None

Set cloud normals from a Numpy array (nbPoints,3).

WARNING Be sure to have an array data in C-style contiguous order, for instance, a transpose operation do not reorder the data in memory. Check the boolean array.flags['C_CONTIGUOUS'] and, if False, reorder with array.copy(order='C').

Normals array in cloud is created/rewrited automatically. Each normal is normalized automatically. Note: normals are stored in a compressed form inside the cloud.

Parameters:

array (ndarray) – a Numpy array (nbPoints,3).

normalsShown(self: _cloudComPy.ccHObject) bool

Returns True if the normals are shown, False otherwise. It is used to prepare the state of the entity when it is saved in a .bin format, for reopening in the GUI in a predefined state (colors, normal, scalarFields).

Returns:

whether the normals are shown

Return type:

bool

normalsToNpArrayCopy(self: _cloudComPy.ccPointCloud) numpy.ndarray

Export the PointCloud normals into a numpy Array.

returns a numpy Array of shape (number of Points, 3). Because the normals are stored in compressed way inside the cloud, the exported normals are decompressed in a new array: the numpy Array object owns its data. Ownership is transfered to Python: the numpy Array object and its data will be handled by the Python Garbage Collector. The normals must have been computed before.

Returns:

numpy Array of shape (number of Points, 3)

Return type:

ndarray

orientNormalsTowardViewPoint(self: _cloudComPy.ccPointCloud, VP: Vector3Tpl<T> = (0.0, 0.0, 0.0)) bool

Orient normals towards view point

Parameters:

VP (CCVector3,optional) – optional view point coordinates, default (0,0,0)

Returns:

success

Return type:

bool

orientNormalsWithFM(self: _cloudComPy.ccPointCloud, octreeLevel: int = 6) bool

Orient normals with Fast Marching method.

See Fast marching method.

Parameters:

octreeLevel (int,optional) – octree level, default 6

Returns:

success

Return type:

bool

orientNormalsWithMST(self: _cloudComPy.ccPointCloud, octreeLevel: int = 6) bool

Orient normals with Minimum Spanning Tree method.

See Minimum spanning tree.

Parameters:

octreeLevel (int,optional) – octree level, default 6

Returns:

success

Return type:

bool

partialClone(self: _cloudComPy.ccPointCloud, arg0: _cloudComPy.ReferenceCloud) tuple

Creates a new point cloud object from a ReferenceCloud (selection)

‘Reference clouds’ are a set of indexes referring to a real point cloud. See CClib documentation for more information about ReferenceClouds.

Warning: the ReferenceCloud structure must refer to this cloud.

Parameters:

selection (ReferenceCloud) – a ReferenceCloud structure (pointing to source)

Returns:

a tuple(ccPointCloud, CLONE_WARNINGS) warning status, if not 0, indicate out of memory errors (see CLONE_WARNINGS)

Return type:

tuple

renameScalarField(self: _cloudComPy.ccPointCloud, arg0: int, arg1: str) bool

Rename the ScalarField if index is valid.

Warning: the name should not be already used by other ScalarFields of the cloud! TODO: check the names in use.

Parameters:
  • index (int) – index of the ScalarField

  • name (str) – new name

Returns:

True in case of success

Return type:

bool

reserve(self: _cloudComPy.ccPointCloud, arg0: int) bool

Reserves memory for all the active features.

This method is meant to be called before increasing the cloud population. Only the already allocated features will be re-reserved.

Parameters:

nbPts (int) – number of points

Returns:

True if ok, False if there’s not enough memory

Return type:

bool

resize(self: _cloudComPy.ccPointCloud, arg0: int) bool

Resizes all the active features arrays.

This method is meant to be called after having increased the cloud population (if the final number of insterted point is lower than the reserved size). Otherwise, it fills all new elements with blank values.

Returns:

True if ok, False if there’s not enough memory

Return type:

bool

scale(self: _cloudComPy.ccPointCloud, fx: float, fy: float, fz: float, center: Vector3Tpl<T> = (0.0, 0.0, 0.0)) None

Scale the cloud with separate factors along the 3 directions x,y,z and an optional center (default: (0,0,0)).

Parameters:
  • fx (float) – scale x

  • fy (float) – scale y

  • fz (float) – scale z

  • center (tuple,optional) – (xc, yc, zc), default (0,0,0)

setColor(self: _cloudComPy.ccPointCloud, arg0: _cloudComPy.QColor) bool

Set a unique color for the whole cloud (RGBA). Color array is automatically allocated if necessary.

Parameters:

color (QColor) – a unique color, alpha is taken into account.

Returns:

success

Return type:

bool

setColorGradient(self: _cloudComPy.ccPointCloud, arg0: int, arg1: _cloudComPy.QColor, arg2: _cloudComPy.QColor) bool

Assigns color to points proportionally to their ‘height’.

Height is defined with regard to to the specified dimension (heightDim). Color array is defined by a two colors (QColor).

Parameters:
  • heightDim (int) – ramp dimension (0:X, 1:Y, 2:Z)

  • first (QColor) – first color of the array

  • second (QColor) – second color of the array

Returns:

success

Return type:

bool

setColorGradientBanded(self: _cloudComPy.ccPointCloud, arg0: int, arg1: float) bool

Assigns color to points by ‘banding’. Banding is performed along the specified dimension. Color array is automatically defined.

Parameters:
  • heightDim (int) – banding dimension (0:X, 1:Y, 2:Z)

  • freq (double) – banding frequency (size of the bands along the axis)

Returns:

success

Return type:

bool

setColorGradientDefault(self: _cloudComPy.ccPointCloud, arg0: int) bool

Assigns color to points proportionally to their ‘height’.

Height is defined with regard to to the specified dimension (heightDim). Color array is defined by default.

Parameters:

heightDim (int) – ramp dimension (0:X, 1:Y, 2:Z)

Returns:

success

Return type:

bool

setCurrentDisplayedScalarField(self: _cloudComPy.ccPointCloud, arg0: int) None

Sets the currently displayed scalar field.

Current displayed scalar field is used in some methods such as filterPointsByScalarValue()

Warning: this scalar field will automatically be set as the OUTPUT one!

Parameters:

index (int) – index of the displayed ScalarField

setCurrentInScalarField(self: _cloudComPy.ccPointCloud, arg0: int) None

Set the current ‘in’ ScalarField index. No validity check. Use -1 to set None.

Parameters:

index (int) – index of the ‘in’ ScalarField

setCurrentOutScalarField(self: _cloudComPy.ccPointCloud, arg0: int) None

Set the current ‘out’ ScalarField index. No validity check. Use -1 to set None.

Parameters:

index (int) – index of the ‘out’ ScalarField

setCurrentScalarField(self: _cloudComPy.ccPointCloud, arg0: int) None

Set the current ‘in’ and ‘out ScalarField index. No validity check. Use -1 to set None.

Parameters:

index (int) – index of the ‘in’ and ‘out’ ScalarField

setGlobalScale(self: _cloudComPy.ccShiftedObject, arg0: float) None

Sets the scale applied to original coordinates (information storage only).

Parameters:

scale (double) – scale applied

setGlobalShift(self: _cloudComPy.ccShiftedObject, arg0: float, arg1: float, arg2: float) None

Sets shift applied to original coordinates (information storage only)

Such a shift can typically be applied at loading time. Original coordinates are equal to ‘(P/scale - shift)’

Parameters:
  • x (double) – x shift

  • y (double) – y shift

  • z (double) – z shift

setName(self: _cloudComPy.ccHObject, arg0: QString) None

Set the name of the entity

Parameters:

name (str) – entity name

setPointSize(self: _cloudComPy.PointCloudTpl_ccGenericPointCloud_QString, arg0: int) None

Sets point size for display (render in file)

Parameters:

size (int) – point size >= 0 (default size: 0)

sfBilateralFilter(self: _cloudComPy.ccPointCloud, SFindex: int, spatialSigma: float = 0, scalarFieldSigma: float = 0) bool

Computes a spatial gaussian filter on a scalar field associated to a point cloud. The “amplitude” of the gaussian filter is defined by sigma (spatialSigma). As 99% of the gaussian distribution is between -3*sigma and +3*sigma around the mean value, this filter will only look for neighbouring points (around each point) in a sphere of radius 3*sigma. The filter is used here as a bilateral filter where the weights are computed also considering the distance of the neighbor’s scalar value from the current point scalar value. (weighted with gaussian as distances are)

Parameters:
  • sfIndex (int) – scalar field index in the cloud

  • spatialSigma (float,optional) – spatial sigma, default 0 meaning using a cloud kernel size as a first guess.

  • scalarFieldSigma (float,optional) – weighted distance, default 0 meaning using 1/4 of the scalarField range: (max-min)/4

Returns:

success

Return type:

bool

sfFromColor(self: _cloudComPy.ccPointCloud, arg0: bool, arg1: bool, arg2: bool, arg3: bool, arg4: bool) bool

Creates ScalarFields from color components.

Parameters:
  • exportR (bool) – whether to create a scalarField from red component

  • exportG (bool) – whether to create a scalarField from green component

  • exportB (bool) – whether to create a scalarField from blue component

  • exportAlpha (bool) – whether to create a scalarField from Alpha

  • exportComposite (bool) – whether to create a scalarField from (r+g+b)/3.

Returns:

success

Return type:

bool

sfShown(self: _cloudComPy.ccHObject) bool

Returns True if the scalar fields are shown, False otherwise. It is used to prepare the state of the entity when it is saved in a .bin format, for reopening in the GUI in a predefined state (colors, normal, scalarFields).

Returns:

whether the scalar fields are shown

Return type:

bool

sfSplitCloud(self: _cloudComPy.ccPointCloud, sfIdx: int, maxNbClouds: int = 30) list[_cloudComPy.ccPointCloud]

Splits the cloud along integer values of the designated scalar field (the original cloud is kept)

Parameters:
  • sfIndex (int) – scalar field index in the cloud

  • maxNbClouds (int,optional) – default 30, do not split the cloud if the expectet number of sclices is more than that value

Returns:

list of ccPointCloud

Return type:

list

shiftPointsAlongNormals(self: _cloudComPy.ccPointCloud, arg0: float) bool

Shift Points along their normal.

The point cloud must have normals, otherwise return False.

Parameters:

shift (float) – the value of the shift to apply.

Returns:

success

Return type:

bool

showColors(self: _cloudComPy.ccHObject, arg0: bool) None

Prepare the state of the entity when it is saved in a .bin format, for reopening in the GUI in a predefined state (colors, normal, scalarFields).

Parameters:

isShown (bool) – whether to show or not the colors.

showNormals(self: _cloudComPy.ccHObject, arg0: bool) None

Prepare the state of the entity when it is saved in a .bin format, for reopening in the GUI in a predefined state (colors, normal, scalarFields).

Parameters:

isShown (bool) – whether to show or not the normals.

showSF(self: _cloudComPy.ccHObject, arg0: bool) None

Prepare the state of the entity when it is saved in a .bin format, for reopening in the GUI in a predefined state (colors, normal, scalarFields).

Parameters:

isShown (bool) – whether to show or not the ScalarFields.

showSFColorsScale(self: _cloudComPy.ccPointCloud, arg0: bool) None

Display or not the Color Scale ramp when render to a file.

Parameters:

state (bool) – whether to display the Color Scale Ramp when render to a file

shrinkToFit(self: _cloudComPy.ccPointCloud) None

Removes unused capacity

size(self: _cloudComPy.ccPointCloud) int

Return the number of points in the cloud.

Returns:

number of points in the cloud

Return type:

int

toNpArray(self: _cloudComPy.ccPointCloud) numpy.ndarray

Wrap the PointCloud coordinates into a numpy Array, without copy.

Returns a numpy Array of shape (number of Points, 3). Data is not copied, the numpy Array object does not own the data.

WARNING No automatic action on the Python side on the variables referencing the C++ object in case of destruction!

Returns:

numpy Array of shape (number of Points, 3)

Return type:

ndarray

toNpArrayCopy(self: _cloudComPy.ccPointCloud) numpy.ndarray

Wrap the PointCloud coordinates into a numpy Array, with copy.

returns a numpy Array of shape (number of Points, 3) Data is copied, the numpy Array object owns its data. Ownership is transfered to Python: the numpy Array object and its data will be handled by the Python Garbage Collector

Returns:

numpy Array of shape (number of Points, 3)

Return type:

ndarray

translate(self: _cloudComPy.ccPointCloud, arg0: Vector3Tpl<T>) None

translate the cloud of (x,y,z).

Parameters:

translation (tuple) – tuple: (x,y,z)

unallocateColors(self: _cloudComPy.ccPointCloud) None

Erases the cloud colors.

unallocateNorms(self: _cloudComPy.ccPointCloud) None

Erases the cloud normals.

2.2. bases classes for Points Clouds

The generic class ccHObject is used when manipulating a list of points clouds and meshes, for instance to save the list of objects on a file.

class cloudComPy.PointCloudTpl_ccGenericPointCloud_QString

Bases: ccGenericPointCloud

__init__(*args, **kwargs)
addPoint(self: _cloudComPy.PointCloudTpl_ccGenericPointCloud_QString, arg0: Vector3Tpl<T>) None

Adds a 3D point to the database

To ensure the best efficiency, the database memory must have already been reserved (with PointCloud::reserve). Otherwise nothing happens.

Parameters:

P (tuple) – a 3D point

getPoint(self: _cloudComPy.PointCloudTpl_ccGenericPointCloud_QString, arg0: int) Vector3Tpl<T>

get the ith point in the cloud array.

Returns:

point coordinates

Return type:

tuple

reserve(self: _cloudComPy.PointCloudTpl_ccGenericPointCloud_QString, arg0: int) bool

Reserves memory for the point database.

This method tries to reserve some memory to store points that will be inserted later (with PointCloud::addPoint). If the new number of points is smaller than the actual one, nothing happens.

Parameters:

newNumberOfPoints (int) – the new number of points

Returns:

true if the method succeeds, false otherwise

Return type:

bool

resize(self: _cloudComPy.PointCloudTpl_ccGenericPointCloud_QString, arg0: int) bool

Resizes the point database.

The cloud database is resized with the specified size. If the new size is smaller, the overflooding points will be deleted. If its greater, the database is filled with blank points warning the PointCloud::addPoint method will insert points after those ones.

Parameters:

newNumberOfPoints (int) – the new number of points

Returns:

true if the method succeeds, false otherwise

Return type:

bool

setPointSize(self: _cloudComPy.PointCloudTpl_ccGenericPointCloud_QString, arg0: int) None

Sets point size for display (render in file)

Parameters:

size (int) – point size >= 0 (default size: 0)

class cloudComPy.ccGenericPointCloud

Bases: GenericIndexedCloudPersist, ccShiftedObject

__init__(*args, **kwargs)
computeOctree(self: _cloudComPy.ccGenericPointCloud, progressCb: CCCoreLib::GenericProgressCallback = None, autoAddChild: bool = True) CCCoreLib::DgmOctree

Computes the cloud octree.

The octree bounding-box is automatically defined as the smallest 3D cube that totally encloses the cloud.

WARNING: any previously attached octree will be deleted, even if the new octree computation failed.

Parameters:
  • progressCb,optional – (default None), use None

  • autoAddChild (bool,optional) – (default True) whether to automatically add the computed octree as child of this cloud or not

Returns:

the computed octree

Return type:

ccOctree

deleteOctree(self: _cloudComPy.ccGenericPointCloud) None

Erases the octree

getOctree(self: _cloudComPy.ccGenericPointCloud) CCCoreLib::DgmOctree

Returns the associated octree (if any).

Returns:

octree

Return type:

ccOctree or None

getOwnBB(self: _cloudComPy.ccGenericPointCloud) _cloudComPy.ccBBox

Returns the bounding box object.

Returns:

bounding box

Return type:

ccBBox

class cloudComPy.ReferenceCloud

Bases: GenericIndexedCloudPersist

A very simple point cloud (no point duplication).

Implements the GenericIndexedCloudPersist interface. A simple point cloud that stores references to Generic3dPoint instances in a vector. Partial thread safety for all methods that can change the size of the cloud or that change or rely on point ordering.

Several methods provide a ReferenceCloud as a result, which can be seen as a selection on an original ccPointCloud (the associatedCloud). The ReferenceCloud can be transformed in a ccPointCloud, using the partialClone method of the associated ccPointCloud.

__init__(self: _cloudComPy.ReferenceCloud, arg0: _cloudComPy.GenericIndexedCloudPersist) None

Constructor, using a GenericIndexedCloudPersist object (GenericIndexedCloudPersist is a base class for cloud classes).

Parameters:

cloud (GenericIndexedCloudPersist) – reference cloud

addPointIndex(self: _cloudComPy.ReferenceCloud, arg0: int, arg1: int) bool

Point global index insertion mechanism (range), thread safe.

Parameters:
  • firstIndex (int) – first point global index of range

  • lastIndex (int) – last point global index of range (excluded)

Returns:

false if not enough memory

Return type:

bool

addPointIndexGlobal(self: _cloudComPy.ReferenceCloud, arg0: int) bool

Point global index insertion mechanism, Thread safe.

Parameters:

globalIndex (int) – a point global index

Returns:

false if not enough memory

Return type:

bool

enableScalarField(self: _cloudComPy.ReferenceCloud) bool

Enables the scalar field associated to the cloud.

If the scalar field structure is not yet initialized/allocated, this method gives the signal for its creation. Otherwise, if possible the structure size should be pre-reserved with the same number of elements as the point cloud.

Warning If the cloud is empty, the scalar field will be empty as well. The scalar field will be reserved with the same capacity as the cloud.

Returns:

success

Return type:

bool

forwardIterator(self: _cloudComPy.ReferenceCloud) None

Forwards the local element iterator.

getAssociatedCloud(self: _cloudComPy.ReferenceCloud) _cloudComPy.GenericIndexedCloudPersist

Returns the associated (source) cloud.

Returns:

the source cloud

Return type:

GenericIndexedCloudPersist

getBoundingBox(self: _cloudComPy.ReferenceCloud) list[Vector3Tpl<T>]

Returns the octree bounding box.

Method to request the octree bounding box limits.

Return limits:

((Xmin,Ymin,Zmin), (Xmax,Ymax,Zmax))

Return type:

tuple

getCurrentPointCoordinates(self: _cloudComPy.ReferenceCloud) Vector3Tpl<T>

Returns the coordinates of the point pointed by the current element.

Returns:

coordinates

Return type:

tuple

getCurrentPointGlobalIndex(self: _cloudComPy.ReferenceCloud) int

Returns the global index of the point pointed by the current element.

Returns:

global index in the cloud

Return type:

int

getCurrentPointScalarValue(self: _cloudComPy.ReferenceCloud) float

Returns the current point associated scalar value.

Returns:

scalar value

Return type:

float

getNextPoint(self: _cloudComPy.ReferenceCloud) Vector3Tpl<T>

Returns the next point (relatively to the global iterator position).

Virtual method to handle the cloud global iterator. Global iterator position should be increased by one each time this method is called.

Warning:

  • the returned object may not be persistent!

  • THIS METHOD MAY NOT BE COMPATIBLE WITH PARALLEL STRATEGIES

(see the DgmOctree::executeFunctionForAllCellsAtLevel_MT and DgmOctree::executeFunctionForAllCellsAtStartingLevel_MT methods).

Returns:

coordinates of next point (TODO: what if no more?)

Return type:

tuple

getPoint(self: _cloudComPy.ReferenceCloud, arg0: int) Vector3Tpl<T>

Returns the ith point.

Method to request a point with a specific index.

WARNINGS:

  • the returned object may not be persistent!

  • THIS METHOD MAY NOT BE COMPATIBLE WITH PARALLEL STRATEGIES

(see the DgmOctree::executeFunctionForAllCellsAtLevel_MT and DgmOctree::executeFunctionForAllCellsAtStartingLevel_MT methods). Consider the other version of getPoint instead or the GenericIndexedCloudPersist class.

Parameters:

index (int) – index of the requested point (between 0 and the cloud size minus 1)

Returns:

the requested point coordinates (undefined behavior if index is invalid)

Return type:

tuple

getPointGlobalIndex(self: _cloudComPy.ReferenceCloud, arg0: int) int

Returns global index (i.e. relative to the associated cloud) of a given element.

Parameters:

localIndex (int) – local index (i.e. relative to the internal index container)

Returns:

global index

Return type:

int

getPointScalarValue(self: _cloudComPy.ReferenceCloud, arg0: int) float

Returns the ith point associated scalar value.

Parameters:

index (int) – local index

Returns:

scalar value

Return type:

float

isScalarFieldEnabled(self: _cloudComPy.ReferenceCloud) bool

Returns True if the scalar field is enabled, False otherwise

Returns:

is the ScalarField enabled?

Return type:

bool

placeIteratorAtBeginning(self: _cloudComPy.ReferenceCloud) None

Sets the cloud iterator at the beginning.

Virtual method to handle the cloud global iterator

setCurrentPointScalarValue(self: _cloudComPy.ReferenceCloud, arg0: float) None

Sets the current point associated scalar value.

Parameters:

value (float) – scalar value

setPointScalarValue(self: _cloudComPy.ReferenceCloud, arg0: int, arg1: float) None

Sets the ith point associated scalar value.

Parameters:
  • index (int) – local index

  • value (float) – scalar value

size(self: _cloudComPy.ReferenceCloud) int

Returns the number of points in the cloud

Returns:

number of points

Return type:

int

class cloudComPy.GenericIndexedCloudPersist

Bases: pybind11_object

__init__(*args, **kwargs)
class cloudComPy.ccShiftedObject

Bases: ccHObject

__init__(*args, **kwargs)
getGlobalScale(self: _cloudComPy.ccShiftedObject) float

Returns the scale applied to original coordinates.

Returns:

the scale applied to original coordinates.

Return type:

double

getGlobalShift(self: _cloudComPy.ccShiftedObject) Vector3Tpl<T>

Returns the shift applied to original coordinates.

Original coordinates are equal to ‘(P/scale - shift)’ The shift is typically used when saving to a file.

Returns:

applied shift (x, y, z)

Return type:

tuple

isShifted(self: _cloudComPy.ccShiftedObject) bool

Returns whether the cloud is shifted or not

Returns:

whether the cloud is shifted or not

Return type:

bool

setGlobalScale(self: _cloudComPy.ccShiftedObject, arg0: float) None

Sets the scale applied to original coordinates (information storage only).

Parameters:

scale (double) – scale applied

setGlobalShift(self: _cloudComPy.ccShiftedObject, arg0: float, arg1: float, arg2: float) None

Sets shift applied to original coordinates (information storage only)

Such a shift can typically be applied at loading time. Original coordinates are equal to ‘(P/scale - shift)’

Parameters:
  • x (double) – x shift

  • y (double) – y shift

  • z (double) – z shift

class cloudComPy.ccHObject

Bases: pybind11_object

__init__(*args, **kwargs)
addChild(self: _cloudComPy.ccHObject, child: _cloudComPy.ccHObject, dependencyFlags: int = <DEPENDENCY_FLAGS.DP_NONE: 0>, insertIndex: int = -1) bool

Adds a child.

warning the C++ default for DEPENDENCY_FLAGS (DP_PARENT_OF_OTHER) is replaced by DP_NONE in Python: The other values may induce a delete of the original child object in C++, not handled correctly on the Python side.

Parameters:
  • child (ccHObject) – child instance to append to the child list

  • dependencyFlags (DEPENDENCY_FLAGS,optional) – dependency flags, default DP_NONE

  • insertIndex (int,optional) – insertion index, default -1: if <0, child is simply appended to the children list.

Returns:

success

Return type:

bool

colorsShown(self: _cloudComPy.ccHObject) bool

Returns True if the colors are shown, False otherwise. It is used to prepare the state of the entity when it is saved in a .bin format, for reopening in the GUI in a predefined state (colors, normal, scalarFields).

Returns:

whether the colors are shown.

Return type:

bool

countRef(self: object) int

Get the value of the Python reference counter. Do not use, for debug and tests only.

decRef(self: object) None

Decrement the Python reference counter. Do not use, for debug and tests only.

getChild(self: _cloudComPy.ccHObject, arg0: int) _cloudComPy.ccHObject

Get child by index.

Parameters:

index (int) – index of child, see getChildrenNumber().

Returns:

child object

Return type:

ccHObject

getChildCountRecursive(self: _cloudComPy.ccHObject) int

Get the number of children of this object, recursively.

Returns:

number of children, recursively

Return type:

int

getChildrenNumber(self: _cloudComPy.ccHObject) int

Get the number of direct children of this object.

Returns:

number of direct children

Return type:

int

getClassID(self: _cloudComPy.ccHObject) int

Get the type of this object.

Returns:

type

Return type:

CC_TYPE

getName(self: _cloudComPy.ccHObject) QString

Get the name of the entity

Returns:

entity name

Return type:

str

getParent(self: _cloudComPy.ccHObject) _cloudComPy.ccHObject

Get the parent of this object.

Returns:

parent object

Return type:

ccHObject

hasColors(self: _cloudComPy.ccHObject) bool

Returns True if the entity has colors, False otherwise.

Returns:

whether the entity has colors

Return type:

bool

hasNormals(self: _cloudComPy.ccHObject) bool

Returns True if the entity has normals, False otherwise.

Returns:

whether the entity has normals

Return type:

bool

hasScalarFields(self: _cloudComPy.ccHObject) bool

Returns True if the entity has ScalarFields, False otherwise.

Returns:

whether the entity has ScalarFields

Return type:

bool

incRef(self: object) None

Increment the Python reference counter. Do not use, for debug and tests only.

isA(self: _cloudComPy.ccHObject, arg0: int) bool

Check the type of object.

Parameters:

type (CC_TYPES) – type to check

Returns:

OK if object is of this type

Return type:

bool

isKindOf(self: _cloudComPy.ccHObject, arg0: int) bool

Check the type of object.

Parameters:

type (CC_TYPES) – type to check

Returns:

OK if object is a kind of this type

Return type:

bool

normalsShown(self: _cloudComPy.ccHObject) bool

Returns True if the normals are shown, False otherwise. It is used to prepare the state of the entity when it is saved in a .bin format, for reopening in the GUI in a predefined state (colors, normal, scalarFields).

Returns:

whether the normals are shown

Return type:

bool

setName(self: _cloudComPy.ccHObject, arg0: QString) None

Set the name of the entity

Parameters:

name (str) – entity name

sfShown(self: _cloudComPy.ccHObject) bool

Returns True if the scalar fields are shown, False otherwise. It is used to prepare the state of the entity when it is saved in a .bin format, for reopening in the GUI in a predefined state (colors, normal, scalarFields).

Returns:

whether the scalar fields are shown

Return type:

bool

showColors(self: _cloudComPy.ccHObject, arg0: bool) None

Prepare the state of the entity when it is saved in a .bin format, for reopening in the GUI in a predefined state (colors, normal, scalarFields).

Parameters:

isShown (bool) – whether to show or not the colors.

showNormals(self: _cloudComPy.ccHObject, arg0: bool) None

Prepare the state of the entity when it is saved in a .bin format, for reopening in the GUI in a predefined state (colors, normal, scalarFields).

Parameters:

isShown (bool) – whether to show or not the normals.

showSF(self: _cloudComPy.ccHObject, arg0: bool) None

Prepare the state of the entity when it is saved in a .bin format, for reopening in the GUI in a predefined state (colors, normal, scalarFields).

Parameters:

isShown (bool) – whether to show or not the ScalarFields.

class cloudComPy.DEPENDENCY_FLAGS

Members:

DP_NONE

DP_NOTIFY_OTHER_ON_DELETE

DP_NOTIFY_OTHER_ON_UPDATE

DP_DELETE_OTHER

DP_PARENT_OF_OTHER

DP_DELETE_OTHER = <DEPENDENCY_FLAGS.DP_DELETE_OTHER: 8>
DP_NONE = <DEPENDENCY_FLAGS.DP_NONE: 0>
DP_NOTIFY_OTHER_ON_DELETE = <DEPENDENCY_FLAGS.DP_NOTIFY_OTHER_ON_DELETE: 1>
DP_NOTIFY_OTHER_ON_UPDATE = <DEPENDENCY_FLAGS.DP_NOTIFY_OTHER_ON_UPDATE: 2>
DP_PARENT_OF_OTHER = <DEPENDENCY_FLAGS.DP_PARENT_OF_OTHER: 24>
__init__(self: _cloudComPy.DEPENDENCY_FLAGS, value: int) None
property name
property value
class cloudComPy.CLONE_WARNINGS

Members:

WRN_OUT_OF_MEM_FOR_COLORS

WRN_OUT_OF_MEM_FOR_NORMALS

WRN_OUT_OF_MEM_FOR_SFS

WRN_OUT_OF_MEM_FOR_FWF

WRN_OUT_OF_MEM_FOR_COLORS = <CLONE_WARNINGS.WRN_OUT_OF_MEM_FOR_COLORS: 1>
WRN_OUT_OF_MEM_FOR_FWF = <CLONE_WARNINGS.WRN_OUT_OF_MEM_FOR_FWF: 8>
WRN_OUT_OF_MEM_FOR_NORMALS = <CLONE_WARNINGS.WRN_OUT_OF_MEM_FOR_NORMALS: 2>
WRN_OUT_OF_MEM_FOR_SFS = <CLONE_WARNINGS.WRN_OUT_OF_MEM_FOR_SFS: 4>
__init__(self: _cloudComPy.CLONE_WARNINGS, value: int) None
property name
property value