CloudCompare Versions Save

CloudCompare main repository

v2.13.1

1 month ago

v2.13.1 (Kharkiv) - (03/20/2024)

Improvements: - the Facets plugin will now retain the Global Shift information when extracting facets, and the 'Global center' will also be exported when exporting facets info to CSV or SHP files - the Compass plugin will now warn the user if a wrong entity is picked - the 'Edit > Tools > Apply transformation' dialog accuracy has been improved (so as to properly handle small rotation angles) - It is now possible to save clouds (points and normals) as an OBJ file - the 'Tools > Distances > Cloud/Mesh distances' tool will now use a smarter algorithm to avoid edge cases when determining the sign of the distance. - the dialog has a new 'robust' option (enabled by default) to control whether this new algorithm should be used, or if the old algorithm should be used. - the ICP tool dialog also has a 'robust' option (Research tab) to control this behavior when using C2M distances - new command line option -NON_ROBUST to force the old behavior for both the C2M distances computation and the ICP tools (see below) - Command line options - New suboption for the -C2M_DIST command line option: - -NON_ROBUST to disable the robust signed C2M distances computation algorithm (old behavior) - New suboptions for the -ICP command line option: - -USE_C2M_DIST to force the computation of Cloud/Mesh distances (only if the reference entity is a mesh) - -NON_ROBUST to disable the robust signed C2M distances computation algorithm (old behavior) - -NORMAL_MATCH {OPTION} to specify the normals matching mode (no normal matching is used by default). {OPTION} can be OPPOSITE, SAME_SIDE or DOUBLE_SIDED - The 3DFin plugin version has been bumped to 0.3.3

Bug fixes: - CSF: the multi-threading strategy could cause artefacts in the cloth simulation, leading to suboptimal results - CSF: the acceleration component was wrongly multiplied twice by the square time increment, requiring much more iterations for the algorithm to converge - 3DMASC: when using a test cloud, the process was automatically terminated as if the user had clicked on the 'cancel' button - The DotPorduct (DP) file I/O filter was not able to load files with non latin characters. It was also wrongly reporting its ability to export files while it is no longer the case. - Upgrading the DotProduct SDK to version 5.2 to avoid crashes when loading some DP files - The -EXTRACT_CC command line option could overwrite the automatically saved component clouds if multiple clouds were originating from the same file. Now the component filenames will contain the cloud name and index in the file to make sure they are unique. - The Global Shift information was not always saved when exporting to the PCD format - When refusing to change the Global Shift & Scale information after applying a transformation, the Global Shift & Scale information could be reset - When changing values in the Apply Transformation tool, a chain of events/updates could lead to a strange behavior of the dialog

v2.13

2 months ago

v2.13.0 (Kharkiv) - (02/14/2024)

  • New features:

    • New menu entry: Save project

      • File > Save project (or CTRL+SHIFT+S)
      • Saves all entities in the DB as a bin file
    • Tools > Fit > circle

    • Edit > Normals > Set SF(s) as normal (or Edit > Scalar fields > Set SF(s) as normal)

      • allows to set normals from one or several scalar fields (or 0 or 1, or a pass-through option if the cloud already had normals)
    • New section in the Properties when a cloud is selected: "Draw normals as lines"

      • one check box to toggle the display
      • one double spin box to choose the length of the normals (1 by default)
      • one combo box to choose the color of the normals
    • Edit > Normals > Shift points along normals

      • to shift the points of a given quantity along their associated normal
    • New display feature: near and far clipping planes in 3D views

      • extension of the previously existing feature to set a near clipping plane
      • can be enabled and modified in the Camera Parameters dialog or via CTRL + mouse wheel (near) or CTRL + SHIFT + mouse wheel (far)
      • the user shall now input actual distances and not percentages
      • works for all projection modes (orthographic and perspective)
      • does not modify the rendering quality of the EDL or SSAO shaders
      • taken into account when using interactive segmentation or point picking
      • not compatible with the Cross Section tool
    • New 'Display > Display settings' options:

      • Restore window geometry on startup
        • option to control whether the previous window geometry (size and position) should be restored or not
      • Picking cursor ('Cross' or 'Pointing hand')
        • default mouse cursor for picking points will now be a cross
    • New default color ramp: Cividis

  • New plugins

    • New unified plugin to load LAS files (by Thomas Montaigu)

      • based on LASzip
      • should work on all platforms (Windows, Linux, macOS)
      • manages all versions of LAS files (1.0 to 1.4)
      • gives much more control over extended fields (EVLR) as well as custom mapping between the existing fields of a cloud and their destination in the LAS file
    • New plugin: q3DMASC

      • 3DMASC is an advanced plugin for 3D point cloud classification, that uses Multiple Attributes, Scales and Clouds. It is possible to use it with the GUI but also to call it with the command line.
      • See https://lidar.univ-rennes.fr/en/3dmasc
    • New plugin: qTreeIso

      • a 3D graph-based individual-tree isolator (treeiso) from Terrestrial Laser Scanning point clouds
      • by Zhouxin Xi and Chris Hopkinson, Artemis Lab, Department of Geography & Environment, University of Lethbridge (Canada)
    • New Python-based plugin: 3DFin (3D Forest Inventory)

      • automatic computation of tree parameters in terrestrial point clouds
      • accessible via the Python plugin (check the option to install it via the Windows installer)
      • see https://github.com/3DFin/3DFin
      • developed at the Centre of Wildfire Research of Swansea University (UK) in collaboration with the Research Institute of Biodiversity (CSIC, Spain) and the Department of Mining Exploitation of the University of Oviedo (Spain)
  • New command line options

    • SF_ADD_ID allows to add the index of the point as a scalar field (initially as a float32, so there is a loss of accuracy for values above 16777215)
      • the AS_INT parameter allows to store the index as a raw uint32, allowing index values from 0 up to (2**32-1)
    • FLIP_TRI (to flip the order of the triangle vertices of all opened meshes)
    • SF_OP_SF {SF 1 name or index} {operation} {SF 2 name or index}
      • to compute an arithmetic operation between two scalar fields (add, sub, mult, div)
      • works on clouds and meshes
    • SF_INTERP {SF name or index} with sub-option -DEST_IS_FIRST
      • to interpolate a scalar field from one cloud to another cloud (use DEST_IS_FIRST if destination is first)
    • SF_ADD_CONST {SF name} {const value}
      • to add a constant scalar field to a cloud
    • SF_TO_COORD {SF name or index} {X, Y or Z}
      • to set the values of a scalar field as the X, Y or Z coordinates
    • COLOR_INTERP
      • to interpolate the colors from one cloud to another cloud
    • CLEVELS
      • to edit the color bands histogram of a cloud or a mesh (https://www.cloudcompare.org/doc/wiki/index.php/Colors%5CLevels)
      • syntax: -CLEVELS BANDS INPUT_RANGE_MIN INPUT_RANGE_MAX OUTPUT_RANGE_MIN OUTPUT_RANGE_MAX
        • band can be any mix of 'R', 'G' and 'B' (ex: 'G' or 'RB' or 'RGB')
        • selected color component values will be scaled so that [INPUT_RANGE_MIN INPUT_RANGE_MAX] becomes [OUTPUT_RANGE_MIN OUTPUT_RANGE_MAX] (values outside of the input range will also be scaled)
    • RDP {opt: min distance between points}
      • removes duplicate points of all loaded clouds
      • the min distance between points to consider them as duplicated can be set (1e-8 by default)
    • DEBUG
      • display various pieces of information to help one debug and tweak the command line
      • can be placed at different positions
    • RENAME_ENTITIES {base name}
      • rename all loaded entities (clouds or meshes) with the provided base name. A numerical suffix is added if multiple entities are loaded.
    • COMMAND_FILE {file}
      • loads commands from a file
      • multiple lines allowed
      • multiple arguments in each line allowed
      • handle quoted arguments
      • commands after this one will run after all commands in the file have been processed
      • whole line comments with # my comment here or // here
      • comment out single arguments '/* my comment here */', must be quoted with either single or double quote, if it contains spaces
    • SET_GLOBAL_SHIFT {x} {y} {z} -KEEP_ORIG_FIXED
      • set global shift on all entities
      • sub-option -KEEP_ORIG_FIXED: if set, global origin will be preserved (a warning might be issued if the resulting coordinate transformation is too big)
    • SELECT_ENTITIES -{FIRST} {first count} -{LAST} {last count} {-ALL} {-NOT} {-REGEX} {regex_pattern}
      • sub-option -FIRST {count}: if set, first count of entities will be selected (optional). Example: xx.....
      • sub-option -LAST {count}: if set, last count of entities will be selected (optional). Example: .....xx
      • sub-option -ALL: if set, all entities will be selected (optional). It has higher priority than FIRST/LAST/REGEX. Example: xxxxxxx
      • sub-option -REGEX {regex_pattern}: if set, all entities with matching names will be selected (optional). It has higher priority than FIRST/LAST. Example: x(merged)..x(merged)...
      • sub-option -NOT: if set, all condition will be reversed (optional)
        • -NOT -FIRST {count} -> all but first {count}. Example: ..xxxxx
        • -NOT -LAST {count} -> all but last {count}. Example: xxxxx..
        • -NOT -ALL -> none. Example: .......
        • -NOT -REGEX matched -> regex not matched. Example: .(merged)xx.(merged)xxx
        • special case: -NOT -FIRST c1 -LAST c2 -> all except first 'c1' AND last 'c2' entities. Example: ..xxx..
      • sub-option -CLOUD: if set, only clouds will be selected (optional)
      • sub-option -MESH: if set, only meshes will be selected (optional)
      • if neither -CLOUD nor -MESH are set then both types of entities will be selected
      • sub-options can be set in any order
      • it is possible to use FIRST and LAST at the same time. Example: xx...xx
    • REMOVE_SENSORS
      • removes all the sensors (both TLS and cameras, directly under clouds, meshes or mesh vertices)
    • VERBOSITY [0-4] to set verbosity level (0: verbose, 1: standard, 2: important, 3: warnings and errors only, 4: errors only)
      • to hide plugin loading logs, it should be set as first argument (even before -SILENT, in which case -SILENT can be the second argument)
  • Improvements:

    • Edit > Translate/Rotate:

      • In the 'advanced' section, added an option to rotate/translate entities by a small increment, with buttons or using left/right arrows
      • Thanks to Lighpoint Scientific
    • The stereo and the non-stereo versions of CloudCompare and ccViewer are now unified

      • no need to manage/compile 2 different versions anymore
      • CC and ccViewer will automatically detect if Quad Buffer Stereo is supported, and use it when needed
      • (currently, stereo mode is disabled on Linux due to various display issues)
    • Gamepad support

      • ccViewer now supports gamepads
      • CloudCompare should now properly detect gamepads on Windows
    • The display can now be rendered to a file even with 'Anaglyph' (Red/Blue) stereo mode enabled

      • 'Display > Render to file'
      • 'Animation' plugin
    • Tools > Projection > Unroll

      • it is now possible to set any 3D axis for the cylinder or the cone
      • the cone projection type is now set in a separate combo-box to make things clearer
      • cone projection methods are 'Conical', 'Cylindrical (fixed radius)' and 'Cylindrical (adaptive radius)'
      • the conical projection method now takes an additional 'span ratio' parameter as input (to reduce or increase the conical projection angular span)
      • button to flip the 3D axis
      • ability to paste the axis and the axis point from the clipboard (3 numerical values separated by whitespaces, commas or semicolons)
      • option to choose an existing cylinder or cone entity in the DB tree, and use it to set the unrolling parameters
      • option to output the unrolled cloud in an arbitrary coordinate system (X: unroll angle / Y = distance to primitive / Z = longitude)
    • Edit > Apply Transformation

      • new shortcut buttons to set the rotation axis to I(1,0,0), J(0,1,0) or K(0,0,1)
      • new option (checkbox): 'Apply to global coordinates'
        • this allows to apply the transformation matrix to the original Global coordinates instead of the local ones. (useful to georeference a cloud with a known transformation)
      • new tab to define the transformation as a rotation from a vector to another one (+ a translation)
      • ability to paste the axes, triplet of angles and translation vectors from the clipboard (3 numerical values separated by whitespaces, commas or semicolons)
      • the tool now tries to handle rotation scaling separately (with a dedicated field, assuming it's the same scaling for all dimensions)
    • Edit > Multiply/scale

      • when using a negative scale on a point cloud, the normals will now be inverted accordingly
    • Edit > Waveform > 2D Waveform viewer

      • the point which waveform is edited is now spotted in the 3D view and information is displayed as in with the picking tool
    • Multi-threading

      • If possible, CC will now try to use less threads/cores than the maximum number, so as to let the application breath (warning: some dialogs may keep the previous value as it's stored in the system registry)
    • Segmentation

      • CC will now preserve some children entities (labels, sensors, etc.) when segmenting clouds or meshes: with graphical segmentation, cross section tool (for clouds only), subsampling, filter by SF value, etc.
    • Interactive segmentation tool ('scissors' tool)

      • new button in the toolbar to export the current selection as a new cloud or mesh (without having to close the tool)
        • shortcut: E (for 'Export')
      • the user can now configure the name suffix for the remaining and segmented cloud
      • the display should be faster until the first segmentation is performed
      • for meshes: unused mesh vertices should now be properly removed from both the segmented and the remaining mesh parts
      • Polygon mode: use ALT + left click to remove the last vertex
    • Rasterize

      • new option to fill the empty cells with Kriging
      • various improvements and glitch fixes
      • better naming of the scalar fields generated by the tool when exporting the grid to a cloud (with statistics)
      • if a scalar field projection option is chosen, all SF and colors will be projected at once so that all layers are valid right away (no need to 'update' the grid several times)
      • new projection options (inside each cell)
        • Median
        • Inverse variance: the height or scalar value of each cell is equal to a weighted average of the points falling inside the cell. The weights are equal to the inverse variance (= 1/std_dev^2). Standard deviation values (std_dev) are obtained from an already existing scalar field, which must be selected by the user)
      • statistics can now be computed on the altitudes and/or all scalar fields
      • new statistics: median, percentile (with custom percentage) and number of unique values inside a cell
      • new command line sub-options (see below)
      • when exporting Geotiff files, CC will now use NaN as the value for invalid pixels (no data)
    • Raster file format

      • when loading a raster file, CC should now be able to detect the Z band more robustly (even if it's labeled as 'grey indexes' by GDAL)
    • Edit > Color > Set unique & Edit > Color > Colorize

      • CC will now remember the last input color
    • Global Shift

      • the suggested global shift will now be rounded to the nearest thousand (so as to suggest values in kilometers, easier to manage)
    • PoissonRecon plugin

      • the user can now choose the number of threads
    • Edit > Cloud > Paste from clipboard

      • the shortcut has been changed to ALT+P (so as to not conflict with the already existing CTRL+P shortcut for the 'Trace polyline' tool)
    • Color scales / Color scale editor

      • it is now possible to override a custom label value by a text (in the custom labels definition field, add a text between double quotes, after the numerical value)
    • ASCII files

      • ability to load quaternion coordinates (qw, qx, qy and qz) that will be loaded as individual 'Coordinate System' objects
      • once 4 columns are assigned to one of the 4 quaternion components (w,x,y,z), the user can elect the display scale of the 'Coordinate System' objects
    • The ASCII file loading dialog has been improved

      • a 'reset all' button was added to reset all column roles at once
      • the dialog should be smarter when restoring the previously set configuration
      • the 'Apply All' button should now work for more than two files ;)
    • BIN files

      • CC is now able to create BIN files with the lowest version as possible (depending on the selected entities) so that the resulting file may potentially be opened by earlier versions
    • LAS files

      • the default shift for (GPS) time values is now rounded to the nearest 10^5 value
      • the shift value is now displayed as a property of the currently selected scalar field
      • the user can now set a custom shift for GPS time values
      • the 'tiling' option will now remember the last used parameters (destination folder, dimension and number of tiles)
    • E57 files

      • images are now saved internally as JPEG files (faster and smaller)
      • sensors associated to images should now be properly shifted if the associated cloud is shifted, or if they are not associated to a cloud
      • scan grids ('groupingByLine' scheme) will now be loaded by CloudCompare. This is useful to compute clean and fast normals. (note that they are still not exported)
    • PCD files

      • better management of PCD files with large coordinates (the Global Shift & Scale dialog will appear)
      • at export time, if the previous sensor is too far from the points, it might not be saved to preserve numerical accuracy (the previous sensor will be replaced by a default one positioned accordingly to the Global shift)
    • STP files

      • the triangles of meshes tessellated from STEP files should now all be properly oriented
      • the linear deflection is asked only once when multiple files are loaded at the same time
    • PLY files

      • loading dialog: the scalar fields are now displayed in a 'list widget' in case there are too many to fit in the screen
    • Salome/.poly files:

      • CC will now detect that the first and last vertices of a polyline are similar, and will automatically close the polyline
    • SF Arithmetic tool

      • new operation: 'MIN' (to get the minimum values between 2 scalar fields)
      • new operation: 'MAX' (to get the maximum values between 2 scalar fields)
      • new operation: 'SET' (to set a constant value)
      • new operation: 'ABS' (to compute the absolute value)
    • Command line

      • logging should be more responsive (both in the standard console-based mode and the silent mode)
      • simple quotes should now be properly handled (and can be used to set output filenames or scalar field names with space characters)
      • most methods using scalar fields as input will now also accept the scalar field name (in lieu of the SF index) (use simple quotes if the scalar field name has spaces in it)
      • otherwise, the current/default active scalar field can now be designated by index '-1' with the following commands: REMOVE_SF, SF_TO_COORD, SF_ARITHMETIC, SF_OP, SF_INTERP, RENAME_SF, ICP (USE_MODEL_SF_AS_WEIGHT/USE_DATA_SF_AS_WEIGHT)
      • it is now possible to pass -1 as index after -SET_ACTIVE_SF to disable the active SF
      • the -SET_ACTIVE_SF command can now be applied to the loaded meshes
      • the -SF_COLOR_SCALE option now works on meshes (vertices) as well
      • the -FILTER_SF option now works on meshes as well
      • the -FILTER_SF option can now be used with the special values in any order (MIN/DISP_MIN/SAT_MIN/N_SIGMA_MIN/MAX/DISP_MAX/SAT_MAX/N_SIGMA_MAX)
      • new sub-option for the -C2C_DIST and -C2M_DIST commands: -SPLIT_XY_Z to split the distance between the z component and the xy plane component
      • new sub-option for the -C2M_DIST command: -UNSIGNED, to compute unsigned distances
      • new sub-option for the -SF_ARITHMETIC commands:
        • new operations 'MIN', 'MAX' and 'ABS' (see above)
        • -IN_PLACE, to update the scalar field in place, without creating a new SF
      • new sub-option for the -SF_OP command:
        • new operation 'SET' + constant value (see above)
      • new sub-options for the -SF_OP_SF command:
        • new operations 'MIN' and 'MAX' (see above)
      • new sub-options for the -APPLY_TRANS command:
        • -APPLY_TO_GLOBAL {FORCE}
          • to apply the transformation to the global coordinate system instead of the local coordinate system
          • warning: the Global Shift might be automatically adjusted to preserve accuracy (and small local coordinates)
          • by default, the Global Shift won't be automatically adjusted if the local coordinates are already large. Use 'FORCE' after -APPLY_TO_GLOBAL to force CC to adjust the Global Shift in any case.
        • -INVERSE: to inverse the transformation matrix before applying it.
      • new sub-options for -SS command:
        • -SS OCTREE NUMBER_OF_POINTS {number} to subsample with the highest octree level for which the resulting point count won't exceed the given number of points
        • -SS OCTREE NUMBER_OF_POINTS PERCENT {number} to calculate NUMBER_OF_POINTS from PERCENT. PERCENT should be a decimal number between 0 and 100.
        • -SS OCTREE CELL_SIZE {size} to deduce the octree level from the given cell size.
        • -SS RANDOM PERCENT {number} to calculate the number of sampled points from PERCENT. PERCENT should be a decimal number between 0 and 100.
        • -SS SPATIAL {fallback_step} USE_ACTIVE_SF {step_at_SF_min} {step_at_SF_max} to use spatial step interpolation on active scalar field (fallback step will be used if active SF has invalid values)
      • new sub-options for -ICP command:
        • -SKIP_TX to skip translation along X axis
        • -SKIP_TY to skip translation along Y axis
        • -SKIP_TZ to skip translation along Z axis
      • new sub-options for the -RASTERIZE command:
        • -EMPTY_FILL KRIGING
        • -KRIGING_KNN {value}
          • to set the number of neighbors for the Kriging algorithm
        • to be used after -PROJ or -SF_PROJ
          • MED
          • INV_VAR (+ std. dev. SF index or name)
    • New entity picking mechanism (to not rely on the deprecated OpenGL 'names' pushing mechanism)

      • Should hopefully solve most of the random issues with picking
    • Cloning

      • ability to clone images
      • ability to clone 2D labels
      • ability to clone 2D viewport labels
      • ability to clone viewport objects
    • EDL shader

      • contrast and rendering quality improved
    • PCV plugin

      • the number of rays and the context resolution can now be set to up to 65536
    • Camera sensor edition dialog

      • the user can now control whether the input 'center' is in the world C.S. or in the camera C.S. (or more exactly, it's the translation part of a 4x4 transformation matrix - which was the case by default in the previous versions)
    • GBL sensor edition dialog

      • CC will now remember the last parameters used to create a sensor (not to edit one though)
    • CSF plugin

      • the CSF filter can now be applied on multiple clouds at once (both in the GUI and the command line version)
    • qEllipser plugin:

      • option to export the polyline (and its major and minor axes) as polylines
    • Animation plugin:

      • option to export the trajectory as a polyline
      • the Animation plugin will now restore the custom light position (and activation state) if the viewports are saved with this version of CloudCompare. This allows to render animations of still objects but with a moving light source for instance.
    • ICP

      • the computed registration transformation will now be applied to the aligned entity and all its children (if any)
    • Align (point-air based registration):

      • the Align tool will now output the list of points used and the final distance between them in the Console
      • the Align tool will now show errors along X, Y and Z axes in dedicated columns.
    • ICP and Align tools:

      • when using a reference entity having a defined Global Shift & Scale the registration matrix from the to-be-aligned local entity coordinate system to the reference entity global coordinate system will be output in the Console
    • Edit > SF > Compute stat. params

      • some more basic statistics are displayed in the Console: number of valid values, sum of all valid values and squared values, average, RMS
    • Connected Components Extraction:

      • the parameters are now semi-persistent (= maintained as long as CC is running)
    • Cloud-to-primitive distances:

      • refreshed dialog
      • when launching the Cloud-to-mesh distance tool with a primitive as the 'mesh' role, CC will now suggest the user to use the Cloud-to-primitive distance tool instead
    • Edit > Subsample:

      • new option to set the number of randomly sampled points as a percentage
      • the dialog will now remember the previous settings (last method used, sampling value, etc.)
    • Display options:

      • the default threshold to activate the LoD mechanism is now 50M. points
    • Entity properties:

      • the 'Bounding Box dimensions' field will now also show the min and max coordinates
    • Edit > Scalar fields > Set SF as coordinate(s)

      • if a single entity is selected (cloud or mesh), a new dialog will appear, that lets the user choose a (potentially) different scalar field for each dimension, or a constant value (0 or 1) or a pass-through option.
      • the dialog is similar to the 'Set SF(s) as normal' tool
  • Bug fixes:

    • PCD: when transforming a cloud with a sensor (either manually, or via a registration tool, or via Edit > Apply Transformation) and then exporting the cloud to a PCD file, both the points AND the sensor were transformed, resulting in the PCD file coordinates to be in the wrong coordinate system (as if the transformation had been applied twice)
    • The QTextStream::pos method is slow and unreliable. This could cause some issue when loading ASCII files.
    • When creating a new 3D view, it was not possible to pick an entity displayed in it by clicking on it.
    • When clicking on an entity in a 3D view while holding CTRL, it was only possible to select it, not to deselect it if it was already selected.
    • When using the Align tool on an aligned entity with labels, the initial view point could be invalid
    • Zooming in and out or changing the FOV in bubble view mode was not working anymore
    • When pausing the graphical segmentation tool while a contour / polyline was started but not closed, the tool icons would not be clickable anymore (forcing the user to exit the tool with ESC)
    • The 'Point List Picking' tool was not transferring the Global Shift information when exporting the list of points as a polyline
    • Rasterize tool: interpolated scalar fields were not properly exported in geotiff files (the interpolated part was missing)
    • The Registration tools (ICP and Point-pair based alignment) transformation filter mechanism would not let filter both translations and rotation at the same time
    • With a lot of NaN values in a scalar field, the Edit > Scalar field > Compute Stat Params tool could show wrong abscissa values below the histogram and curve. (note that the average, standard deviation, RMS and Chi2 distance values displayed either above the histogram or in the Console were correct)
    • When loading E57 files with large coordinates, and applying a Global Shift, the associated image sensors were not translated of the same Global Shift
    • The 'cartesian bounds' of E57 files saved by CC were expressed in the global coordinate system instead of the local one
    • When applying the viewport of a calibrated image (= image with an associated sensor), the camera f.o.v. was applied instead of a smarter value, taking the 3D view dimensions into account (resulting in a bad match between the 3D scene and the overlaid image)
    • The PCL plugin's 'MLS' tool dialog was broken
    • The CSF plugin command line could truncate the exported clouds filename if floating point values were present in this filename
    • The 'File > Save File' option could also truncate the cloud name when suggesting a default output filename
    • The colors of the 'Compute Stat. Params' histogram could be wrong if the associated color scale was 'absolute'
    • M3C2 plugin:
      • the display was not always updated when M3C2 computation was done
      • some parameters were not properly restored when re-opening the plugin dialog (e.g. the 'normal source')
    • Glitch fix: extracting a single slice via the Contour extraction option of the 'Cross Section' tool would not work
    • Fix the Support for High DPI screens (4K) on Windows
    • Allow OBJ files with symlinks to properly load material files
    • The bottom left scale was not always correctly displayed when rendering the screen with a zoom > 1 (both in terms of width and position)
    • The Primitive Factory 'precision' field was not used
    • The command line -FEATURE now changes the cloud name so that if it is saved with -SAVE_CLOUDS later it will not overwrite the original cloud
    • The Point Pair registration ('Align') or ICP tools could generate a sub-optimal translation if the rotation was constrained
    • The C2M distance could crash if forcing the octree level above 11 or 12 (which would likely require a grid of more than 2 billion cells)
    • Translating or rotating the cloud while the LoD structure was being built could lead to a hang or a crash of CC

v2.13.alpha.230227

1 year ago

v2.12.4

1 year ago

v2.12.4 (Kyiv) - (14/07/2022)

  • Bug fixes:
    • CloudCompare 2.12.X (X<4) could miss some triangles when computing the Cloud-to-Mesh distances (resulting in slightly overestimated distances)
    • CloudCompare would still apply the Global Shift even though it was rejected by the user (which is a bad idea ;). But the entity Global Shift would then be (0, 0, 0), resulting in the loss of the original coordinate system.
    • the scale in the lower-right part of the 3D view could have the wrong length (if the height of the window is larger than its width)
    • FBX: CloudCompare couldn't properly load the materials (textures) of meshes with quads
    • the Compass plugin was exporting large coordinates with a too small precision
    • the command line could ignore the input global shift (set with -GLOBAL_SHIFT) if it was not sufficient to make the points coordinates small enough. This was not consistent with the previous behavior.
    • the segmentation tool in Perspective mode could keep points behind the camera/viewpoint

v2.12.3

1 year ago

Bug fixes:

  • CloudCompare would still apply the Global Shift even though it was rejected by the user (which is a bad idea ;). But the entity Global Shift would then be (0, 0, 0), resulting in the loss of the original coordinate system.
  • the scale in the lower-right part of the 3D view could have the wrong length (if the height of the window is larger than its width)

v2.12.2

1 year ago

v2.12.2 (Kyiv) - (23/05/2022)

  • Improvements:

    • CSF plugin:
      • 'Cloth resolution' and 'Classification threshold' input precision has been increased from 0.1 to 0.001
  • Bug fixes:

    • The LAS PDAL filter could fail to save additional fields with space characters in their name on some architectures (Linux mostly). The filter will now automatically replace space characters (and equal characters) by specific sub-strings to be able to restore the original name when loading the LAS file later.
    • The LAS 1.3 or 1.4 filter was applying the Global Shift to the points even if the original 'LAS offset' was different. But it was declaring in the LAS file header that it has used the original LAS offset. This would lead to a shifted LAS file with the wrong global coordinates.
    • When double-clicking on a file with local characters in the Windows explorer, CC was not able to interpret the filename or file path correctly
    • Computing per-triangle normals (or methods requiring to update per-triangle normals such as Laplacian smoothing) could lead to a crash on some OBJ meshes

v2.12.1

2 years ago
  • Improvements

    • ICP registration:

      • new option to prevent all rotations in the 'Research' tab ('None' option of the Rotation combo-box), to be consistent with the command line version
    • Rasterize tool:

      • the number of grid cells is now displayed (next to the grid size)
      • the number of non-empty cells is now displayed (next to the cloud name and size)
    • Most of the progress dialogs of CloudCompare should not steal the focus anymore (when loading multiple files in the background for instance)

    • Segmentation tool:

      • the icons are now visually disabled (grayed out) while drawing a polyline. Keyboard shortcuts are still working.
  • Bug fixes:

    • The '-ICP -ROT NONE' command line option was not working as expected
    • When saving in a Shapefile the polyline exported from the Interactive Segmentation tool, an invalid global bounding-box was computed and saved by CC.
    • Label markers were preventing the user from picking the points below (in the Point picking tool as well as other tools)
    • LAS filters will now automatically convert NaN values to a default value when saving fields (as NaN is not valid according to specifications and not accepted by most third party libaries and tools)

v2.12.0

2 years ago
  • New tools:

    • Menu 'Edit > Cloud'

      • 'Edit > Cloud > Create single point cloud': to create a cloud with a single point (set by the user)
      • 'Edit > Cloud > Paste from clipboard' (shortcut: CTRL+P): to create a cloud from ASCII/text data stored in the clipboard
    • Menu 'Edit > Scalar fields > Split clouds (integer values)'

      • Will split the cloud in multiple sub-clouds based on the (integer) values of its active scalar field. To be used with a classification SF typically.
    • Menu 'Edit > Scalar fields > Add classification SF'

      • Shortcut to 'Edit > Scalar fields > Add constant SF' to create a 'Classification' SF with a constant (integer) value
  • New plugins:

  • New command line options:

    • Added N_SIGMA_MIN and N_SIGMA_MAX options to the FILTER_SF command.
      • Specify the option followed by a numeric value to filter by N * standardDeviation around the mean.
    • NORMALS_TO_HSV
      • To convert normals to HSV colors
    • RGB_CONVERT_TO_SF
      • To convert RGB colors to 5 scalar fields (red, green, blue, alpha, composite)
  • New file format:

    • STEP CAD files (see above)
    • Google DRACO format .DRC (compressed point clouds and meshes - https://github.com/google/draco)
    • For now, allows to save the geometry of clouds and meshes (as well as normals or RGB colors, but not the texture, etc.) with a configurable compression ratio
  • Improvements

    • New Display options:
      • option to select the application style (Windows Vista, Windows, Fusion, etc.)
      • single click picking can be disabled (can be very slow for very large point clouds)
    • Graphical Segmentation Tool (scissors):
      • the tool can now segment polylines (it will only keep segments with both vertices visible)
      • various improvements (visibility of segmented entities is forced for more clarity, etc.)
      • new option to flag the points inside the polygon with a given class value (instead of segmenting the points).
        • a 'Classification' SF will be added to the cloud if none already (otherwise the 'Classification' SF will be updated)
        • shortcut: 'C'
    • Rasterize tool
      • RGB and scalar field based layers can now be exported to standard image formats
      • improved interpolation scheme on the raster borders
      • new 'max edge length' option when interpolating grid cells, to avoid using large triangles
      • the rasterize tool grid is 'centered' on the raster (image) boundary pixels (the grid min corner coordinates correspond to the lower left raster cell center, and the grid max corner coordinates correspond to the upper right raster cell center). This has been made more explicit in the 'Edit grid' sub-dialog.
    • Section extraction tool
      • polylines (imported or drawn) can now be unselected when not in 'edition' mode. Just click anywhere else.
      • the 'unfold' option can now be used on all the polylines at once if no polyline is selected.
    • RANSAC plugin
      • Can save all leftover points into a new cloud (leftovers were points not assigned to a shape)
      • Can select whether to use Least Squares fitting on found shapes (some shapes take a very long time to process this step specifically Cones)
      • Can select whether to attemot to simplify shapes (torus->cone/cylinder/sphere/planes cone->cylinder/sphere/plane cylinder->sphere/plane, sphere->plane)
      • Can choose whether or not to have a random color assigned to each shape found.
      • Ability to select min and max radii for various shapes (helps prevent giant spheres and cylinders from beating out the more likely plane feature)
    • ICP registration:
      • new option to take the normals into account (if both entities have normals) (several matching modes are available: same side, opposite side, or double-sided)
      • new 'research' option to use signed distances when registering a cloud with a (reference) mesh (helpful to prevent the cloud from sinking below the mesh surface if used in conjunction of a small overlap percentage)
    • Clipping box tool:
      • former 'contours' renamed 'envelopes' for the sake of clarity
      • ability to extract the real contours of the points inside each slice (single slice mode or 'repeat' mode) (CC will rasterize the slice and apply the 'contour plot' extraction algorithm)
    • Compass plugin:
      • planes fitted with the 'Plane tool' should now always have the normal pointing towards the user instead of a random orientation
    • Animation plugin:
      • option to smooth the trajectory
      • option to choose the video output codec/format
    • M3C2 plugin:
      • new options to orient normals: with the previous normal (if any) or with the associated sensor origin
    • Normal computation:
      • New preferred orientation: sensor origin
    • ATI cards:
      • the display should now be faster with ATI cards thanks to a smarter way to manage (2D text) textures
    • Localization:
      • Korean is now supported (thanks to Yun-Ho Chung)
      • Russian translation has been updated (thanks to Gene Kalabin)
      • Chinese is now supported (thanks to https://github.com/jindili)
    • The option 'Edit > Normals > Invert' can now be used on meshes
    • Roughness computation:
      • new option to set a 'up direction' to compute signed roughness values
    • Command line:
      • CSF plugin: added support for command line mode with all available options, except cloth export
        • use -CSF to run the plugin with the next optional settings:
          • -SCENES [scene]: name of the scene (SLOPE|RELIEF|FLAT)
          • -PROC_SLOPE: turn on slope post processing for disconnected terrain
          • -CLOTH_RESOLUTION [value]: double value of cloth resolution (ex 0.5)
          • -MAX_ITERATION [value]: integer value of max iterations (ex. 500)
          • -CLASS_THRESHOLD [value]: double value of classification threshold (ex. 0.5)
          • -EXPORT_GROUND: exports the ground as a .bin file
          • -EXPORT_OFFGROUND: exports the off-ground as a .bin file
      • Command 'Rasterize':
        • New output option '-OUTPUT_RASTER_Z_AND_SF' to explicitly export altitudes AND scalar fields. The former '-OUTPUT_RASTER_Z' option will only export the altitudes as its name implies.
        • New option '-MAX_EDGE_LENGTH' to set a maximum edge length when interpolating values (to be used with the '-EMPTY_FILL INTERP')
      • New sub-option for the RANSAC plugin command line option (-RANSAC)
        • OUT_RANDOM_COLOR = generate random colors for the output clouds (false by default now)
      • New sub-option for the 'FILTER_SF' command:
        • N_SIGMA_MIN and N_SIGMA_MAX: specify the option followed by a numeric value to filter by N * standardDeviation around the mean.
      • new option '-INVERT_NORMALS':
        • Inverts the normals of the loaded entities (cloud or mesh, and per-triangle or per-vertex for meshes)
      • new option '-RENAME_SF' {scalar field index} {name}:
        • To rename a scalar field
      • new option '-REMOVE_SF' {scalar field index}:
        • To remove a specific scalar field
      • new option '-NOISE KNN/RADIUS {value 1} REL/ABS {value 2} {RIP}':
        • To apply the Noise filter to the loaded point clouds
        • value 1: number of neighbors if KNN, radius if RADIUS
        • value 2: relative error (standard deviation multiplier) if REL, absolute error if ABS
        • RIP: remove isolated poins (optional)
      • the 'OCTREE_NORMALS' option has been updated:
        • MINUS_ZERO and PLUS_ZERO can now also be written MINUS_ORIGIN and PLUS_ORIGIN
        • new sub-options '-ORIENT PLUS_SENSOR_ORIGIN' and '-ORIENT MINUS_SENSOR_ORIGIN' (to use the sensor origin to orient the normals - a sensor must be associated to the cloud of course ;)
      • New sub-option for the 'ROUGH' command (Roughness):
        • '-UP_DIR X Y Z' to specify a 'up direction' to compute signed roughness values.
    • PCD:
      • CC can now load PCL files with integer xyz coordinates (16 and 32 bits) as well as double (64 bits) coordinates
      • CC can now load 'scan grids' corresponding to structured clouds (so as to compute robust normals for instance)
      • the (standard ?) 16bytes alignment for the various fields has been removed, so as to drastically reduce the memory consumption and the output file size!
    • STL:
      • loading speed should be greatly improved (compared to v2.10 and v2.11)
    • LAS:
      • the Global Shift, if defined, will now be used as LAS offset if no offset was previously set
      • the PDAL LAS I/O filter and the libLAS I/O filter should now both handle LAS offset and scale the same way at export time.
      • the libLAS I/O filter ('LAS 1.3 or 1.4') will now preserve the Coordinate Reference System (if the LAS file is loaded and saved with this filter)
    • OBJ:
      • support of the 'Ke' (emission) option in MTL files
    • Global Shift & Scale:
      • the qRansacSD plugin can now transfer the Global Shift & Scale info to the created primitives
      • the primitive fitting functions (Fit shpere, Fit plane, Fit facet and Fit quadric) as well
      • the 2.5D Volume calculation tool now transfers the Global Shift & Scale info to the exported difference map/cloud
    • Align tool (Point-pair based registration):
      • labels associated to a point cloud will now remain visible and the user can pick them
      • the tool will display the corresponding label title in the registration summary tables
    • Better management of filenames with non latin characters (for raster files, STL files, PDMS scripts, Point List picking exported files)
    • 'X', 'Y' and 'Z' labels are now displayed next to the trihedron axes (in the bottom right corner)
  • Bug fixes

    • qBroom: the broom was not working properly on a non horizontal surfaces!
    • qM3C2: M3C2 dialog parameters were not properly restored in command line mode
    • Command line:
      • using the "-FBX" option would lead to an infinite loop
      • filenames local ('foreign') characters were not preserved
      • the '-GLOBA_SHIFT FIRST' option was not working properly
    • Trace polyline: the exported polylines had a wrong unique ID. Saving multiple polylines created this way in the same BIN file could lead to a corrupted file.
    • Scissors tool: points were segmented only inside the frustum (screen) even if some segmentation polygon vertices were outside
    • E57: "invalid data" flags were wrongly interpreted
    • The 'Clean > Noise' tool was mixing the number of neighbors (knn) and the 'kernel radius' parameters
    • PLY filter was exporting large coordinates with a limited accuracy when creating ASCII files
    • the 'flip normals' checkbox of the C2M comparison dialog was not accessible anymore
    • minimal LAS scale suggested by CC was sometimes too small, potentially triggering a PDAL exception
    • when loading raster files, GDAL can sometimes report wrong min and max altitudes. This would then let CC think that invalid pixels were present. And when telling CC to keep these invalid points, their altitude would be replaced by a weird/random value...
    • CloudCompare was reporting truncated (integer) dip and dip direction values instead of rounded values
    • SHP files
      • CloudCompare was not able to read shapefiles with missing measurements (while this field is generaly optional for polylines, polygons and point clouds)
      • the SHP I/O filter was writing the local bounding-box in the file header instead of the global one (if the saved entities were shifted)
    • PLY files with point elements containing a 'list' property would be considered as face elements (preventing the user from loading the cloud)
      • It is now possible to load such PLY files if the 'list' is composed of floating point values
    • when merging two clouds, CC could crash is the LoD structure was currently being built at the same time on one of the clouds
    • the 'Guess parameters' option of the M3C2 plugin was suggesting radii while M3C2 scales are diameters (i.e. ideal values should have been twice as big)
    • ASCII file load dialog: CC would assign an 'Intensity' column to the 'Grey' color role, which is rarely a good idea. It will now assign it to 'Scalar field' by default.
    • trying to merge several clouds, some being ancestors of the others, could lead to a crash
    • calling the Mesh > Smooth (Laplacian) tool on a mesh with the database tree unfloded could make CC crash
    • cloning the 'contour' part of a Facet would result in a locked polyline (that cannot be deleted or moved)
    • when rendering the screen with a zoom > 1, the scale label was wrongly scaled as well
    • Graphical segmentation: when using the shortcuts 'i' and 'o' to segment points inside or outside a polyline not yet closed (with a right click), the overlay buttons would become transparent to clicks, and the not yet confirmed vertex of the polyline was not taken into account
    • Rasterize tool: the exported geotiff files were (once again?!) shifted of half the cell size

v2.11.3

3 years ago

Bug fix:

  • when used with only 3 points (pairs), the Align tool could produce a wrong registration matrix

v2.11.2

3 years ago

v2.11.2 (Anoia) - 30/08/2020

  • Bug fixes:
  • command line: the LAST keyword was consistently badly managed (for -SF_OP and -ICP)
  • the new 'Edit > Colors > From Scalar Fields' tool could crash due to a non initialized variable
  • PV files could not be loaded anymore
  • even in the command line 'SILENT' mode, loading a SHP file with additional fields in the associated DBF file would spawn a blocking dialog (these fields will now be ignored in SILENT mode)
  • LAS 1.3 or 1.4 (LASlib): Classification values and flags were not always loaded or saved properly
  • [Windows] The contour lines generated with the Rasterize tool could be incomplete (due to GDAL 3.0 --> reverting to GDAL 2.2)