CloudCompare Versions Save

CloudCompare main repository

v2.11.1

3 years ago

v2.11.1 (Anoia) - 29/07/2020

  • Bug fixes:
    • [macOS] Fix determination of command line use so opening a file in the GUI using the command line works (#1296).
    • E57, Bundler: when trying to apply a Global Shift translation on load without 'preserving' the shift information, the Global Shift was simply not applied!
    • Global Shift: when unchecking the 'preserve shift on save' option of the Global Shift dialog, and then hitting the "Apply all" button, the selection was not maintained and propagated to the other loaded clouds
    • command line: the 'LAST' keyword was not properly managed after -SF_ARITHMETIC

v2.11.0

3 years ago
  • New features

    • 3 methods to quickly change the coordinate system of one or several entities
      • Tools > Registration > Move bounding-box center to origin
      • Tools > Registration > Move bounding-box min corner to origin
      • Tools > Registration > Move bounding-box max corner to origin
    • Add smooth zoom when middle mouse button is pressed
    • Roll view around view-vector when pressing SHIFT and left mouse button
    • Edit > Plane > Flip: to flip the selected planes
    • Edit > Plane > Compare: to compare the two selected planes (angle and relative distances)
    • Edit > Mesh > Flip triangles: to flip the triangles (vertices) in case they are defined in the wrong order
    • Tools > Distances > Cloud/Primitive Dist
      • Used to calculate distance to primitive shape (supports spheres, planes, cylinders, cones and boxes) rather than the mesh of that shape (more accurate results for spheres) planes are now optionally treated as bounded or unbounded. for cones this will not work with Snout mode cones.
    • New tool:
      • Edit > Normals > Export normals to SF(s) (or equivalently Edit > Scalar fields > Export normals to SF(s))
      • Command line argument: -NORMALS_TO_SFS (all dimensions are exported by default as 3 scalar fields)
    • Command line:
      • '-H_EXPORT_FMT' added to select format for hierarchy objects exported
      • The PCV tool can now be accessed via the command line:
      • RANSAC plugin support added, all parameters below are optional and can be added in any order, and will work on all clouds opened and already loaded when called
        • '-RANSAC' (main command)
          • EPSILON_ABSOLUTE - max distance to primitive
          • EPSILON_PERCENTAGE_OF_SCALE - max distance to primitive as a percentage of cloud scale 0.0-1.0 exclusive
          • BITMAP_EPSILON_PERCENTAGE_OF_SCALE - sampling resolution as a percentage of cloud scale 0.0-1.0 exclusive
          • BITMAP_EPSILON_ABSOLUTE - sampling resolution
          • SUPPORT_POINTS - min Support points per primitive
          • MAX_NORMAL_DEV - max normal deviation from the ideal shape normal vector [in Degrees]
          • PROBABILITY - probability that no better candidate was overlooked during sampling, the lower the better!
          • OUT_CLOUD_DIR - path to save detected shapes clouds to, current dir if unspecified
          • OUT_MESH_DIR - path to save detected shapes meshes to, current dir if unspecified
          • OUT_PAIR_DIR - path to save detected shapes clouds & meshes to, current dir if unspecified
          • OUT_GROUP_DIR - path to save all shapes and primitives to as a single file, current dir if unspecified
          • OUTPUT_INDIVIDUAL_SUBCLOUDS - output detected shapes clouds
          • OUTPUT_INDIVIDUAL_PRIMITIVES - output detected shapes meshes
          • OUTPUT_INDIVIDUAL_PAIRED_CLOUD_PRIMITIVE - output detected shapes clouds & meshes
          • OUTPUT_GROUPED - output all detected shapes clouds & meshes as single file
          • ENABLE_PRIMITIVE - each shape listed after this option will be searched for
            • Shapes are: PLANE, SPHERE, CYLINDER, CONE, TORUS
      • '-NORMALS_TO_DIP': converts the loaded cloud normals to dip and dip direction (scalar fields)
      • '-NORMALS_TO_SFS': converts the loaded cloud normals to 3 scalar fields (Nx, Ny and Nz)
      • '-REMOVE_RGB': to remove RGB colors (from all loaded entities, i.e. clouds or meshes)
      • '-REMOVE_Normals': to remove normals (from all loaded entities, i.e. clouds or meshes)
      • The 1st Order Moment tool (Tools > Other > Compute geometric features) can now be accessed via the command line mode with option -MOMENT {kernel size}
        • Computes 1st order moment on all opened clouds and auto saved by default.
      • The Feature tools (Tools > Other > Compute geometric features) can now be accessed via the command line mode with option -FEATURE {type} {kernel size}
        • type is one of the following: SUM_OF_EIGENVALUES, OMNIVARIANCE, EIGENTROPY, ANISOTROPY, PLANARITY, LINEARITY, PCA1, PCA2, SURFACE_VARIATION, SPHERICITY, VERTICALITY, EIGENVALUE1, EIGENVALUE2, EIGENVALUE3.
    • 4 new default color scales:
      • Brown > Yellow
      • Yellow > Brown
      • Topo Landserf
      • High contrast
    • Translate/Rotate Tool:
      • Advanced translate mode to translate along a single segment polyline or plane normal vector.
      • Advanced rotate mode to update the axis of rotation to a single segment polyline or plane normal vector.
      • Rotation center can be set to either the object center, or the polyline/plane normal.
  • Improvements

    • CloudCompare now handles RGBA colors for points, mesh vertices, text, and labels
      • partial ability to display these elements with some transparency (warning: points and triangles are not depth-sorted yet - display of clouds and meshes might not be very nice ;))
      • default materials and colors (Display > Display settings) now have an editable 'alpha' channel
      • the 'Edit > Colors > Set unique' and 'Edit > Colors > Colorize' tools also have an editable 'alpha' channel
      • this fixes a bug with ATI cards (when using VBOs - see below)
    • Better support for High DPI screens (4K) on Windows
    • Both the local and global bounding-box centers are now displayed in the cloud properties (if the cloud has been shifted)
    • The PoissonRecon plugin now relies on the PoissonRecon V12 library
      • new algorithm
      • option to set the final 'resolution' instead of the octree depth
    • Align (Point-pair based registration) tool
      • can now be used with several entities (both several aligned and several reference entities)
      • option to pick the center of sphere entities as registration point(CC will ask whether to use the sphere center or not when picking a point anywhere on a sphere entity)
    • Clipping box tool:
      • option to select the extracted contour type (LOWER, UPPER or FULL)
      • 'up' direction is always Z for slices normal to X or Y (the local X, Y or Z directions of the active cross-section)
      • 'up' direction is X for slices normal to Z
    • All parameters should now be properly remembered from one call to the other (during the same session)
    • The current box/slice position can now be exported (resp. imported) to (resp. from) the clipboard via the 'Advanced' menu
    • Command line tool:
      • The C2M_DIST command (Cloud-to-Mesh distances) can now be called with 2 meshes as input. In this case the first mesh vertices are used as compared cloud.
      • New suboption for the -O -GLOBAL_SHIFT option: 'FIRST' To use the first encountered (non null) global shift for all loaded entities (must be defined for all entities nevertheless ;)
      • The CROP command will now remove the input cloud if it's totally 'cropped out' (instead of leaving the full original cloud loaded)
      • The 'FWF_O' command (to load LAS files with associated waveform data) now properly supports the '-GLOBAL_SHIFT' option
      • No more popup will appear when loading a raster file via the command line mode in SILENT mode (raster is never loaded as a textured quad, and invalid points are always ignored and not loaded)
      • One can now use the 'auto' value for the radius value input after -OCTREE_NORMALS to automatically guess the normal computation radius
    • Raster import:
      • new "Apply all" option when CC asks whether invalid pixels of a raster should be ignored or not
    • Point picking:
      • points can now be picked on meshes (triangles)
      • the Point List Picking tool can now be used on meshes
      • when using 'Shift+left click' or the Point picking tool on a mesh, CC won't spawn a 3-point label anymore, but a single point label at the right position
      • labels picked on a mesh can be used to re-orient the camera (right-click on the label entry in the DB)
      • for now, labels associated to meshes are not preserved when cloning or merging the meshes
      • points are now exclusively picked inside the current fustum (no more points behind the camera)
    • The center of sphere (entities) can now be picked (a popup will let the user select the sphere center or a point on the surface)
    • Graphical segmentation:
      • points are now exclusively segmented inside/outside the frustum
    • Plugins:
      • plugins may now be enabled/disabled in the plugin info window
      • to take effect, CloudCompare must be restarted
      • all plugins are still available on the command line
    • PCD now supports loading more field types (16 bit signed and unsigned, 32 bit unsigned, 64 bit floating point)
    • OBJ files:
      • we now correctly handle faces with more than 4 vertices! (they should be properly tessellated)
      • support of escaped lines ('' at the end of the line)
      • now accepts MTL files with the 'Tf' keyword (well, CC just ignores it and doesn't complain about a wrong MTL file anymore ;)
      • enhanced progress report (thanks to https://gitlab.com/Epic_Wink)
    • Translation:
      • new Argentinian Spanish translation
    • M3C2:
      • the computation speed should be improved when using a small projection radius (smarter selection of the octree level)
    • LAS files:
      • the standard LAS Filter now handles the OVERLAP classification bit (for point format >= 6)
      • improved/fixed management of classification and classification flags
      • LAS offset (chosen at saving time) should be a little bit smarter:
        • CC will try to keep the previous one, or use the bounding-box min corner ONLY if the coordinates are too large
        • CC won't use the previous scale if it is too small for the current cloud
        • the 'optimal' scale is simpler (round values + the same for all dimensions)
      • The LAS 1.3/1.4 filter (Windows only) has been improved:
        • option to save any scalar field as extra bytes (and load extra bytes as scalar fields)
        • proper minor version setting
        • proper header size
        • using the latest version of LASlib with proper management of UTF8/UTF16 ('foreign') characters
    • ASCII files:
      • now allows mixed white space (spaces / tabs)
      • the ASCII load dialog option has now an option to load numerical values with a comma as digit separator ('use comma as decimal character' checkbox)
    • E57 files:
      • sensors are now automatically created below each scan (if a sensor position is defined in the file)
        • these can be used to orient the normals for instance
      • after loading an E57 file, the scan (sensor) origin and orientation is stored as meta-data and should be properly restored and saved when exporting the scan(s) back to E57
    • Unroll
      • ability to set the start and stop angles for the cone unrolling options
      • ability to unroll meshes
      • new unrolling mode: 'Straightened cone' (the previous one has been renamed 'Straightened cone (fixed radius)'). This new mode unrolls the cone as a cylinder but with a varying radius.
    • The 'Straightened cone' options are now using the real curvilinear abscissa (0 = cone apex)
    • Tools > Others > Compute geometric features
      • option to compute the 1st moment added
      • option to compute the 1st, 2nd and 3rd eigenvalues added
    • Stereo mode updated:
      • new stereo mode (Generic stereo display) to handle more stereo displays (PluraView, etc.)
      • new stereo parameters (screen/display size, distance to screen, and eye separation)
    • SBF files
    • Others:
      • CC now saves the radius (parameter) after computing normals (as meta-data associated to the cloud)
      • stereogram tool of the Facets plugin now uses the new 'High contrast' color scale by default
  • Changes

    • Command line tool:
      • The -FBX_EXPORT_FMT command is now split. Use -FBX -EXPORT_FMT.
    • Plugins:
      • The I/O plugin interface has changed, so if you have your own I/O plugins, you will need to update them.
        • The interface name changed from ccIOFilterPluginInterface to ccIOPluginInterface.
        • The ccIOPluginInterface::getFilter() method was removed in favour of ccIOPluginInterface::getFilters().
        • The FileIOFilter base class now takes a struct as an argument containing all the static info about a filter - extensions, features (import/export), etc.. See FooFilter in the ExampleIOPlugin and the comments in FileIOFilter::FilterInfo.
        • The use of FileIOFilter::FilterInfo means that the following virtual functions in I/O filters are no longer virtual/required:
          • importSupported
          • exportSupported
          • getFileFilters
          • getDefaultExtension
          • canLoadExtension
      • The GL plugin interface has changed, so if you have your own GL plugins, you will need to update them.
        • The interface name changed from ccGLFilterPluginInterface to ccGLPluginInterface.
    • CC will now handle external matrices (loaded or input via the 'Edit > Apply Transformation' tool) with a 16th component different than 0 (this 16th component will be considered as the inverse scale)
    • Attempt to improve gamepads detection/connection
  • Bug fixes:

    • LAS classification flags were not always properly extracted/saved by the standard LAS filter (depending on the point format)
    • Trace Polyline tool: when changing the OpenGL camera position while tracing a polyline AND using oversampling, strange spikes could appear
    • The Unroll dialog was not enabling all the apex coordinate fields after switching from Cylinder to Cone mode
    • The Clipping-box tool 'edit' dialog would sometimes move the box in an unexpected way when opening and closing it without making any change
    • M3C2: the 'subsampling' option was not properly restored when loading the parameters from a file (if 'SubsampleEnabled = false')
    • Orienting normals with a sensor position could lead to a crash
    • Shapefile: at export time, the SHX file (created next to the SHP file) was malformed
      • this prevented loading the file in most GIS tools
      • polylines were mistakenly exported as polygons
    • SRS (Spatial Reference System) information could be lost when loading LAS files
    • The cartesian bounding-box of exported E57 files was wrongly expressed in the file-level coordinate system (instead of the local one)
    • Data could be lost when merging two clouds with FWF data
    • When VBOs were activated with an ATI card, CloudCompare could crash (because ATI only supports 32bit aligned VBOs :p)
    • The LAS 1.3/1.4 filter was not compressing files with a minor case 'laz' extension :(
    • The iteration stop criteria has been changed in the CSF plugin to fix a small bug
    • qBroom: the broom was not working properly on a non horizontal surface!
    • Point picking on meshes: picking points on triangles that were partially outside of the frustum would lead to the wrong point being picked (or no point picked)

v2.10.3

4 years ago
  • Enhancements

    • Speed up the Fit Sphere tool and point picking in the Registration Align (point pairs picking) tool
    • Translation:
      • new (argentinian) Spanish translation
      • updated Russian translation
  • Bug fixes

    • Command line:
      • the 'EXTRACT_VERTICES' option was actually deleting the extracted vertices right after extracting them, causing a crash when trying to access them later :| (#847)
      • fix handling of SF indices in SF_ARITHMETIC and COMMAND_SF_OP
      • the COMMAND_ICP_ROT option of the ICP command line tool was ignored (#884)
      • when loading a BIN file from the command line, only the first-level clouds were considered
    • Fix loading LAS files with paths containing multi-byte characters when using PDAL (#869)
    • When saving a cloud read from LAS 1.0 let PDAL choose the default LAS version (#874)
    • Fix potential crash or use of incorrect data when comparing clouds (#871)
    • Fix potential crash when quitting or switching displays
    • Quitting the "Section extraction tool" (and probably any tool that uses a temporary 3D view, such as the Align tool) would break the picking hub mechanism (preventing the user from picking points typically) (#886)
    • Fix the camera name being displayed in the wrong place (#902)
    • The layers management of the Rasterize tool was partially broken
    • the C2C/C2M distance computation tool called through the command line was always displaying progress dialogs even in SILENT mode
    • the ICP registration tool called through the command line was always displaying progress dialogs even in SILENT mode
    • Fix potential crash with qCSF (see github issue #909)
    • In some cases, the (subsampled) core points cloud was not exported and saved at the end of the call to M3C2 through the command line
    • Some points were incorrectly removed by the 'Clean > Noise filer' method (parallelism issue)
    • The radius was not updated during the refinement pass of the Sphere fitting algorithm (i.e. the final radius was not optimal)

v2.10.2

5 years ago

v2.10.2 (Zephyrus) - 24/02/2019

  • Bug fixes

    • Rasterize tool:
      • interpolating empty cells with the 'resample input cloud' option enabled would make CC crash
      • change layout so it works better on lower-resolution monitors
    • Command line:
      • the 'EXTRACT_VERTICES' option was not accessible
      • calling the -RASTERIZE option would cause an infinite loop
      • the Global Shift & Scale information of the input cloud was not transferred to the output cloud of the -RASTERIZE tool
    • glitch fix: the 3D window was not properly updated after rendering the screen as a file with a zoom > 1
    • glitch fix: the name of the entity was not displayed at the right place when rendering the screen as a file with a zoom > 1
    • the Surface and Volume Density features were potentially outputting incorrect values (the wrong source scalar field was used when applying the dimensional scale!)
    • the chosen octree level could be sub-optimal in some very particular cases
    • E57 pinhole images:
      • fix sensor array information (it was displaying total image size for the width of the image)
      • fix pixel width & height
  • Translations

    • updated Russian translation (thanks to Eugene Kalabin)
    • added Japanese translation (thanks to the translators at CCCP)
  • macOS Note

    • I (Andy) had to update ffmpeg, which is used by the animation plugin, for this patch release. Normally I would wait for 2.11, but homebrew changed their policies and started including everything in their build, so I can no longer use it. The good news is that compiling ffmpeg myself and statically linking shaves about 30 MB off the size of CloudCompare.app...
    • it has been reported that this fixes a potential crash in ffmpeg's libavutil.56.dylib

v2.10.1

5 years ago

v2.10.1 (Zephyrus) - 01/16/2019

  • Bug fixes:

    • writing E57 files was broken
    • an exception was being thrown when you close CC after saving an ASCII file (#834)

v2.10

5 years ago

v2.10 (Zephyrus)

  • new features:

    • Edit > Polyline > Sample points

      • to regularly samples points on one or several polylines
    • New set of geometrical features to compute on clouds:

      • Tools > Other > Compute geometric features
      • features are all based on locally computed eigen values:
        • sum of eigen values
        • omnivariance
        • eigenentropy
        • anisotropy
        • planarity
        • linearity
        • PCA1
        • PCA2
        • surface variation
        • sphericity
        • verticality
      • most of the features are defined in "Contour detection in unstructured 3D point clouds", Hackel et al, 2016
    • Localization support

  • enhancements:

    • Roughness, Density and Curvature can now all be computed via the new 'Tools > Other > Compute geometric features' menu (Approx density can't be computed anymore)

    • Global Shift & Scale dialog

      • new option "Preserve global shift on save" to directly control whether the global coordinates should be preserved at export time or simply forgotten
    • The 'Display > Lock vertical rotation' option has been renamed 'Display > Lock rotation about an axis' (Shortcut: L)

      • CC will now ask for the rotation axis to be locked (default: Z)
    • The M3C2 plugin can now be called from the command line:

      • the first time you'll need the configuration file saved with the GUI tool (Use the 'Save parameters to file' button in the bottom-left corner of the M3C2 dialog --> the floppy icon)
      • then load 2 files (cloud 1 and cloud2)
      • optionally load a 3rd cloud that will be used as core points
      • and eventually call the -M3C2 option with the parameter file as argument: CloudCompare -O cloud1 -O cloud2 (-O core_points) -M3C2 parameters_file
      • new option to use the core points cloud normals (if any)
    • The Canupo plugin is now open-source!

    • The "Classify" option of the Canupo plugin can now be called from the command line:

      • you'll need a trained classifier (.prm file)
      • main option: -CANUPO_CLASSIFY classifier.prm
      • confidence threshold:
        • -USE_CONFIDENCE {threshold} (threshold must be between 0 and 1)
        • (use the 'SET_ACTIVE_SF' after loading a cloud to set the active scalar field if you want it to be used to refine the classification)
      • syntax: CloudCompare -O cloud1 ... -O cloudN -CANUPO_CLASSIFY (-USE_CONFIDENCE 0.9) classifier.prm
    • Labels can now be imported from ASCII files:

      • new column role in the ASCII loading dialog: "Labels"
      • labels can be created from textual or numerical columns
      • one "2D label" entity is created per point (don't try to load too many of them ;)
      • labels are displayed in 3D by default (i.e. next to each point), but they can also be displayed in 2D (see the dedicated check-box)
    • FBX units:

      • default FBX units are 'cm'
      • if a FBX file with other units is imported, CC will now store this information as meta-data and will set it correctly if the corresponding meshes are exported as FBX again
    • Command line mode:

      • scalar field convert to RGB:
        • '-SF_CONVERT_TO_RGB {mixWithExistingColors bool}'
      • scalar field set color scale:
        • '-SF_COLOR_SCALE {filename}'
      • extract all loaded mesh vertices as standalone 'clouds' (the mesh is discarded)
        • '-EXTRACT_VERTICES'
      • remove all scan grids
        • '-REMOVE_SCAN_GRIDS'
      • new sub-option of 'SAVE_CLOUDS' to set the output filename(s) (e.g. -SAVE_CLOUDS FILE "cloud1.bin cloud2.bin ..."
      • new options for the 'OCTREE_NORMALS' (thanks to Michael Barnes):
        • '-ORIENT' to specify a default orientation hint:
          • PLUS_ZERO
          • MINUS_ZERO
          • PLUS_BARYCENTER
          • MINUS_BARYCENTER
          • PLUS_X
          • MINUS_X
          • PLUS_Y
          • MINUS_Y
          • PLUS_Z
          • MINUS_Z
          • PREVIOUS
        • '-MODEL' to specify the local model:
          • LS
          • TRI
          • QUADRIC
    • Unroll tool:

      • the cylindrical unrolling can be performed inside an arbitrary angular range (between -3600 and +3600 degrees)
      • this means that the shape can be unrolled on more than 360 degrees, and from an arbitrary starting orientation
    • New options (Display > Display options):

      • the user can now control whether normals should be enabled on loaded clouds by default or not (default state is now 'off')
      • the user can now control whether load and save dialogs should be native ones or generic Qt dialogs
    • Normals:

      • ergonomics of 'Normals > compute' dialog have been (hopefully) enhanced
      • normals can now be oriented toward a sensor even if there's no grid associated to the point cloud.
      • the Normal Orientation algorithm based on the Minimum Spanning Tree now uses much less memory (~1/10)
    • PCV:

      • the PCV plugin can now be applied on several clouds (batch mode)
    • LAS I/O:

    • E57:

      • the E57 plugin now uses [libE57Format] (https://github.com/asmaloney/libE57Format) which is a fork of the old E57RefImpl
      • if you compile CloudCompare with the E57 plugin, you will need to use this new lib and change some CMake options to point at it - specifically OPTION_USE_LIBE57FORMAT and LIBE57FORMAT_INSTALL_DIR
      • the E57 plugin is now available on macOS
    • RDS (Riegl)

      • the reflectance scalar field read from RDS file should now have correct values (in dB)
    • SHP:

      • improved support thanks to T. Montaigu (saving and loading Multipatch entities, code refactoring, unit tests, etc.)
    • Cross section tool:

      • can now be started with a group of entities (no need to select the entities inside anymore)
      • produces less warnings
    • Plugins (General):

      • the "About Plugins" dialog was rewritten to provide more information about installed plugins and to include I/O and GL plugins.
      • [macOS] the "About Plugins..." menu item was moved from the Help menu to the Application menu.
      • added several fields to the plugin interface: authors, maintainers, and reference links.
      • I/O plugins now have the option to return a list of filters using a new method getFilters() (so one plugin can handle multiple file extensions)
      • moved support for several less frequently used file formats to a new plugin called qAdditionalIO
        • Snavely's Bundler output (*.out)
        • Clouds + calibrated images [meta][ascii] (*.icm)
        • Point + Normal cloud (*.pn)
        • Clouds + sensor info. [meta][ascii] (*.pov)
        • Point + Value cloud (*.pv)
        • Salome Hydro polylines (*.poly)
        • SinusX curve (*.sx)
        • Mensi Soisic cloud (*.soi)
    • Misc:

      • some loading dialogs 'Apply all' button will only apply to the set of selected files (ASCII, PLY and LAS)
      • the trace polyline tool will now use the Global Shift & Scale information of the first clicked entity
      • when calling the 'Edit > Edit Shift & Scale' dialog, the precision of the fields of the shift vector is now 6 digits (so as to let the user manually "geo-reference" a cloud)
      • the ASCII loading dialog can now load up to 512 columns (i.e. almost as many scalar fields ;). And it shouldn't become huge if there are too many columns or characters in the header line!
  • bug fixes:

    • subsampling with a radius dependent on the active scalar field could make CC stall when dealing with negative values
    • point picking was performed on each click, even when double-clicking. This could actually prevent the double-click from being recognized as such (as the picking could be too slow!)
    • command line mode: when loading at least two LAS files with the 'GLOBAL_SHIFT AUTO' option, if the LAS files had different AND small LAS Shift
    • point picking on a mesh (i.e. mainly in the point-pair based registration tool) could select the wrong point on the triangle, or even a wrong triangle
    • raster I/O: when importing a raster file, the corresponding point cloud was shifted of half a pixel
    • the RASTERIZE command line could make CC crash at the end of the process
    • hitting the 'Apply all' button of the ASCII open dialog would not restore the previous load configuration correctly in all cases (the header line may not be extracted the second time, etc.)
    • align tool: large coordinates of manually input points were rounded off (only when displayed)
    • when applying an orthographic viewport while the 'stereo' mode is enabled, the stereo mode was broken (now a warning message is displayed and the stereo mode is automatically disabled)
    • the global shift along vertical dimension (e.g. Z) was not applied when exporting a raster grid to a raster file (geotiff)
    • the 2.5D Volume calculation tool was ignoring the strategy for filling the empty cells of the 'ceil' cloud (it was always using the 'ground' setting)
    • [macOS] fixed the squished text in the Matrix and Axis/Angle sections of the transformation history section of the properties
    • [macOS] fixed squished menus in the properties editor
    • the application options (i.e. only whether the normals should be displayed or not at loading time) were not saved!
    • DXF files generated by the qSRA plugin were broken (same bug as the DXF filter in version 2.9)
    • the OCTREE_NORMALS command was saving a file whatever the state of the AUTO_SAVE option
    • the Align tools could make CC crash when applying the alignment matrix (if the octree below the aligned entity was visible in the DB tree)
    • the clouds and contour lines generated by the Rasterize tool were shifted of half a cell
    • in some cases, merging a mesh with materials with a mesh without could make CC crash
    • command line mode: the VOLUME command parser would loop indefinitely if other commands were appended after its own options + it was ignoring the AUTO_SAVE state.
    • some files saved with version 2.6 to 2.9 and containing quadric primitives or projective camera sensors could not be loaded properly since the version 2.10.alpha of May 2018
    • for a mysterious reason, the FWF_SAVE_CLOUDS command was not accessible anymore...
    • when computing C2C distances, and using both a 2.5D Triangulation local model and the 'split distances along X, Y and Z' option, the split distances could be wrong in some times

v2.9.1

6 years ago

v2.9.1 - 11/03/2017

  • enhancements:

    • Primitive factory
      • sphere center can now be set before its creation (either manually, or via the clipboard if the string is 'x y z')
  • Bug fixes:

    • DXF export was broken (styles table was not properly declared)
    • PLY files with texture indexes were not correctly read

v2.9.0

6 years ago

v2.9 - 10/26/2017

  • New features:

    • New plugin: qCompass

    • 3D view pivot management:

      • new option to position the pivot point automatically on the point currently at the screen center (dynamic update) (now the default behavior, can be toggled thanks to the dedicated icon in the 'Viewing tools' toolbar or the 'Shift + P' shortcut)
      • double clicking on the 3D view will also reposition the pivot point on the point under the cursor
      • the state of this option is automatically saved and restored when CC starts
    • New tool to import scalar fields from one cloud to another: 'Edit > SFs > Interpolate from another entity'

      • 3 neighbor extraction methods are supported (nearest neighbor, inside a sphere or with a given number of neighbors)
      • 3 algorithms are available: average, median and weighted average
    • New sub-menu 'Tools > Batch export'

      • 'Export cloud info' (formerly in the 'Sand-box' sub-menu)
        • exports various pieces of information about selected clouds in a CSV file
        • Name, point count, barycenter
        • for each scalar field: name, mean value, std. dev. and sum
      • 'Export plane info'
        • exports various pieces of information about selected planes in a CSV file
        • Name, width, height, center, normal, dip and dip direction
    • New interactor to change the default line width (via the 'hot zone' in the upper-left corner of 3D views)

    • New option: 'Display > Show cursor coordinates'

      • if activated, the position of the mouse cursor relatively to the 3D view is constantly displayed
      • the 2D position (in pixels) is always displayed
      • the 3D position of the point below the cursor is displayed if possible
    • New shortcut: P (pick rotation center)

  • enhancements:

    • When a picking operation is active, the ESC key will cancel it.

    • qBroom plugin:

    • qAnimation plugin:

      • new output option 'zoom' (alternative to the existing 'super resolution' option)
      • the plugin doesn't spam the Console at each frame if the 'super resolution' option is > 1 ;)
    • M3C2 plugin:

      • "Precision Maps" support added (as described in "3D uncertainty-based topographic change detection with SfM photogrammetry: precision maps for ground control and directly georeferenced surveys" by James et al.)
      • Allows for the computation of the uncertainty based on precision scalar fields (standard deviation along X, Y and Z) instead of the cloud local roughness
    • 'Unroll' tool:

      • new cone 'unroll' mode (the true 'unroll' mode - the other one has been renamed 'Straightened cone' ;)
      • option to export the deviation scalar-field (deviation to the theoretical cylinder / cone)
      • dialog parameters are now saved in persistent settings
    • Plugins can now be called in command line mode (the 'ccPluginInterface::registerCommands' method must be reimplemented) (someone still needs to do the job for each plugin ;)

    • Trace polyline tool

      • the tool now works on meshes
      • Holding CTRL while pressing the right mouse button will pan the view instead of closing the polyline
      • new 'Continue' button, in case the user has mistakenly closed the polyline and wants to continue
    • Command line mode

      • the Rasterize tool is now accessible via the command line:
        • '-RASTERIZE -GRID_STEP {value}'
        • additional options are: -VERT_DIR {0=X/1=Y/2=Z} - default is Z -EMPTY_FILL {MIN_H/MAX_H/CUSTOM_H/INTERP} - default is 'leave cells empty' -CUSTOM_HEIGHT {value} - to define the custom height filling value if the 'CUSTOM_H' strategy is used (see above) -PROJ {MIN/AVG/MAX} - default is AVG (average) -SF_PROJ {MIN/AVG/MAX} - default is AVG (average) -OUTPUT_CLOUD - to output the result as a cloud (default if no other output format is defined) -OUTPUT_MESH - to output the result as a mesh -OUTPUT_RASTER_Z - to output the result as a geotiff raster (altitudes + all SFs by default, no RGB) -OUTPUT_RASTER_RGB - to output the result as a geotiff raster (RGB) -RESAMPLE - to resample the input cloud instead of generating a regular cloud (or mesh)
        • if OUTPUT_CLOUD and/or OUTPUT_MESH options are selected, the resulting entities are kept in memory. Moreover if OUTPUT_CLOUD is selected, the resulting raster will replace the original cloud.
      • 2.5D Volume Calculation tool
        • '-VOLUME -GRID_STEP {...} etc.' (see the wiki for more details)
      • Export coord. to SF
        • '-COORD_TO_SF {X, Y or Z}'
      • Compute unstructured cloud normals:
        • '-OCTREE_NORMALS {radius}'
        • for now the local model is 'Height Function' and no default orientation is specified
      • Clear normals
        • '-CLEAR_NORMALS'
      • New mesh merging option
        • '-MERGE_MESHES'
      • Compute mesh volume:
        • '-MESH_VOLUME'
        • optional argument: '-TO_FILE {filename}' to output the volume(s) in a file
      • LAS files:
        • when loading LAS files without any specification about Global Shift, no shift will be applied, not even the LAS file internal 'shift' (to avoid confusion)
        • however, it is highly recommanded to always specifiy a Global Shift (AUTO or a specific vector) to avoid losing precision when dealing with big coordinates!
      • Other improvements:
        • the progress bar shouldn't appear anymore when loading / saving a file with 'SILENT' mode enabled
        • the ASCII loading dialog shouldn't appear anymore in 'SILENT' mode (only if CC really can't guess anything)
        • the default timestamp resolution has been increased (with milliseconds) in order to avoid overwriting files when saving very small file (too quickly!)
    • Rasterize tool

      • contour lines generation is now based on GDAL (more robust, proper handling of empty cells, etc.)
      • new option to re-project contour lines computed on a scalar field (i.e. a layer other than the altitudes) on the altitudes layer
      • the grid step bounds have been widened (between 1E-5 and 1E+5)
    • Edit > SF > Compute Stat. params

      • the RMS of the active SF is now automatically computed and displayed in the Console
    • PLY I/O filter

      • now supports quads (quads are loaded as 2 triangles)
    • DXF I/O filter

      • now based on dxflib 3.17.0
      • point clouds can now be exported to DXF (the number of points should remain very limited)
      • see fixed bugs below
    • LAS I/O filter

      • the 'Spatial Reference System' of LAS files is now stored as meta-data and restored when exporting the cloud as a LAS/LAZ file.
    • [Windows] qLAS_FWF:

      • the plugin (based on LASlib) can now load most of the standard LAS fields
      • the plugin can now save files (with or without waveforms)
      • the plugin can now be called in command line mode: -FWF_O: open a LAS 1.3+ file -FWF_SAVE_CLOUDS: save cloud(s) to LAS 1.3+ file(s) (options are 'ALL_AT_ONCE' and 'COMPRESSED' to save LAZ files instead of LAS)
    • New method: 'Edit > Waveforms > Compress FWF data'

      • To compress FWF data associated to a cloud (useful after a manual segmentation for instance as the FWF data is shared between clouds and remains complete by default)
      • Compression is done automatically when saving a cloud with the 'LAS 1.3 / 1.4' filter (QLAS_FWF_IO_PLUGIN) (but it's not done when saving the entity as a BIN file)
    • Oculus support

      • CC now displays in the current 3D view the mirror image of what is displayed in the headset
      • using SDK 1.15
    • Point List Picking tool

      • the list can now be exported as a 'global index, x, y, z' text file
    • Scale / Multiply dialog:

      • new option to use the same scale for all dimensions
      • new option to apply the scale to the 'Global shift' (or not)
    • New Menu Entry: 'Edit > Grid > Delete scan grids'

      • scan grids associated to a cloud can now be deleted (to save space when saving the cloud to a BIN file for instance)
    • qEllipser plugin:

      • option to export the image as a (potentially scaled) point cloud
    • Normal computation tool:

      • new algorithm to compute the normals based on scan grids (faster, and more robust)
      • the 'kernel size' parameter is replaced by 'the minimum angle of triangles' used in the internal triangulation process
      • Plane and Quadric modes will now automatically increase the radius adaptively to reach a minimum number of points and to avoid creating 'zero' (invalid) normals
    • Edit the scalar value of a single point

      • create a label on the point (SHIFT + click)
      • make sure a scalar field is active
      • right click on the label entry in the DB tree and select 'Edit scalar value'
    • Merge (clouds)

      • new option to generate a scalar field with the index of the original cloud for each point
    • Other

      • color scales are now listed in alphabetical order
      • polylines exported from the 'Interactive Segmentation' tool will now use the same Global Shift as the segmented entity(ies)
      • when changing the dip and dip direction of plane parallel with XY, the resulting plane shouldn't rotate in an arbitrary way anymore
      • the filter and single-button plugin toolbars are now on the right side of the window by default (to reset to the default layouts, use "Reset all GUI element positions" at the bottom of the Display menu)
      • the Plane edition dialog now lest the user specify the normal plane in addition to its dip and dip direction
      • new 'Clone' icon with a colored background so as to more clearly spot when the icon is enabled (Nyan sheep!)
      • now using PoissonRecon 9.011
      • the default maximum point size and maximum line width increased to 16 pixels
  • Bug fixes:

    • STL files are now output by default in BINARY mode in command line mode (no more annoying dialog)
    • when computing distances, the octree could be modified but the LOD structure was not updated (resulting in potentially heavy display artifacts)
    • glitch fix: the 'SF > Gradient' tool was mistakenly renaming the input scalar field ('.gradient' appended)
    • glitch fix: the picking process was ignoring the fact that meshes could be displayed in wireframe mode (they are now ignored in this case)
    • command line 'CROSS_SECTION' option: the repetition of the cuts (<RepeatDim> option) could be incomplete in some cases (some chunks were missing)
    • raster loading: rasters loaded as clouds were shifted of half a pixel
    • the 'Edit > Sensors > Camera > Create' function was broken (input parameters were ignored)
    • merging clouds with FWF data would duplicate the waveforms of the first one
    • invalid lines in ASCII (text) files could be considered as a valid point with coordinates (0, 0, 0)
    • Point-pair based alignment tool:
      • extracting spheres on a cloud with Global Shift would create the sphere in the global coordinate system instead of the local one (i.e. the sphere was not visible)
      • deleting a point would remove all the detected spheres
    • The FARO I/O plugin was associating a wrong transformation to the scan grids, resulting in weird results when computing normals or constructing a mesh based on scan grids
    • When editing only the dip / dip direction of a plane, the rotation was not made about the plane center
    • qSRA plugin: profile polyline automatically generated from cylinders or cone were shifted (half of the cylinder/cone height), resulting in a 'shifted' distance map (half of the cloud was 'ignored')
    • DXF export
      • the I/O filter was mistakenly exporting the vertices of polylines and meshes as separate clouds
      • the I/O filter was not exporting the shifted point clouds at the right location
    • Render to file:
      • when the 'draw rounded points' option was enabled, pixel transparency could cause a strange effect when exported to PNG images
    • Octree rendering:
      • the 'Cube' mode was not functional
      • the 'Point' mode with normals was not functional

v2.8.1

7 years ago
  • Bug fixes:
    • LAS I/O filter: if the points of a LAS file were not saved in increasing GPS time order, the corresponding 'Time' scalar field could be rejected later at export time
    • A visible 2D label with the 'show 2D label' option disabled could break the picking process
    • The sphere fitting algorithm was not always finding the optimal sphere
    • Rasterize tool: scalar fields were vertically mirrored when exported to a geotiff raster
    • [macOS] Fix the packaging of the qAnimation plugin so it can find the correct libraries
    • qAnimation plugin: the export to separate frames was broken

v2.8.0

7 years ago
  • New features:
    • New plugin: qBroom (Virtual Broom) [Windows, macOS]
      • smart and interactive selection of points on a surface (globally flat, e.g. like a road ;)
      • selection of the points inside the 'broom', above, below or both
      • option to invert the selection
      • automation mode
    • New plugin: qCSF (Cloth Simulation Filtering) [Windows, macOS]
      • automatic ground / non-ground classification of aerial LIDAR point clouds
      • based on the article: "An Easy-to-Use Airborne LiDAR Data Filtering Method Based on Cloth Simulation", W. Zhang, J. Qi, P. Wan, H. Wang, D. Xie, X. Wang, G. Yan. Remote Sensing. 2016; 8(6):501.
    • New plugin: qHoughNormals (Normal Estimation in Unstructured Point Clouds) [Windows, macOS, Linux]
      • based on "Deep Learning for Robust Normal Estimation in Unstructured Point Clouds" by Alexandre Boulch and Renaud Marlet, Symposium of Geometry Processing 2016, Computer Graphics Forum
    • New plugin: qM3C2 (Multiscale Model to Model Cloud Comparison) [Windows, macOS, Linux]
      • based on "Accurate 3D comparison of complex topography with terrestrial laser scanner: application to the Rangitikei canyon (N-Z)", Lague, D., Brodu, N. and Leroux, J., 2013, ISPRS Journal of Photogrammmetry and Remote Sensing
    • Support for FWF (Full WaveForm) airborne LIDAR data [Windows only]
      • use the 'LAS 1.3 or 1.4 (*.las *.laz)' filter to open LAS files with full waveform data
      • new 'Edit > Waveform > 2D Waveform viewer' to visualize waveforms associated to each point (as 2D curve)
      • option to export the waveform as a CSV file
    • New 'Geological' plane creation / edition methods:
      • Edit > Plane > Create: lets the user create a plane with specific dip / dip direction, center (can be picked on a cloud or a mesh), width and height
      • Edit > Plane > Edit: edit the above parameters on an existing plane entity
    • New Polyline export format:
      • 2D height profile (curvilinear abscissa + Z coordinate)
    • New tool: Edit > Mesh > Create surface between two polylines
      • Creates a surface patch between two polylines
    • New tool: Edit > Mesh > Mesh scan grids
      • Creates a surface from a cloud with one or several scan grids (one mesh per grid)
    • New tool: Edit > Color > Enhance with intensities
      • Enhances the RGB colors thanks to the intensity scalar field (RGB-IHS method)
    • Gamepad support (XBox, etc.) [Windows only]
      • Enable it with the 'File > Gamepad > Enable' menu entry
      • A: toggle viewer-based perspective mode
      • B: toggle object-based perspective mode
      • left stick: move body (viewer-based mode) or move object [left/right and forward/backward]
      • right stick: rotate head (viewer-based mode) or rotate object
      • cross: move body (viewer-based mode) or move object [left/right and up/down]
      • L1/R1: change point size
      • L2/R2: roll left/right
      • start: zoom and center on the visible entities
    • New color scales:
      • two colorscales for dip and dip direction display (thanks to T. Dewez)
      • matplotlib's veridis colormap (perceptually-uniform)
    • Adds an "Open Recent" item to the File menu to quickly access the last 10 files that you've worked with.
    • New 'display' option to draw round points instead of square ones (when the point size > 1). Warning, the display may be slower then.
    • New formats supported:
      • Photoscan PSZ
      • [Windows] Riegl RDBX
  • Enhancements:
    • Animation plugin
      • new 'Export frames' button to generate individual frames instead of an animation
    • Poisson Reconstruction plugin:
      • based on the latest version of PoissonRecon by Misha (V9.1)
      • the user can now choose the boundary conditions (free / Dirichlet / Neumann)
    • Cross-section tool
      • the tool now supports multiple clouds and/or meshes
    • DB Tree (select children by type and/or by name)
      • regular expressions can now be used to select entities in the DB tree
    • Facets plugin
      • meta-data (normals, dip/direction, etc.) is now updated when the facet is rotated / transformed
      • the 3D representation of the normal vector now depends on the facet size and not on its min. bounding-box size
    • New shortcuts 'a la Meshlab':
      • CC now supports the 'CTRL + mouse wheel' shortcut to change the point size
      • CC now supports the 'ALT + mouse wheel' shortcut to change the zNear value (perspective mode)
      • CC now supports the 'SHIFT + mouse wheel' shortcut to change the field of view (perspective mode)
    • 2D labels:
      • most of the 2D labels parts (segment, point legend, etc.) are now displayed in 2D (this way they appear above the entities to be visible all the time).
    • SHP files:
      • when loading 2D points, the Z coordinate can now be exported from an associated DBF field
    • File loading:
      • when a multiple files are loaded, cancelling the loading process of one file will stop the whole loading procedure
    • LAS/LAZ files:
      • load dialog reorganized
      • info about the file are now displayed in a 'Info' tab (point count, bounding box)
      • new 'Tiling' option to tile a (big) LAS/LAZ file into smaller ones (the cloud is not actually loaded in memory)
    • Global Shift & Scale:
      • the PoissonRecon plugin now transfers the Global Shift & Scale information from the cloud to the resulting mesh
      • the 'Tools > Projection > Contour plot (polylines) to mesh' tool transfers the Global Shift & Scale information from the (first) polyline to the resulting mesh
    • 2.5D Volume Calculation tool:
      • new option to export the height difference grid as a cloud (warning: the exported points height will actually be equal to the height difference)
      • default color scale is now symmetrical if the height differences are not only positive or only negative
    • Rasterize tool:
      • the 'interpolate' option for empty cells now also interpolates the scalar fields and RGB color layers
      • the rasterize tool now uses the 'PixelIsArea' convention (i.e. the grid min corner coordinates correspond to the first grid cell center). This allows one to apply the Rasterize tool on a regular grid without any interference / sampling issues.
      • as a result, the volume calculation tool has been updated. Notably, results from the rasterize tool can be used in the 2.5D Volume calculation tool without any sampling artefact
      • exported rasters (geotiff) are using the same convention. They are also now properly oriented (they could be loaded flipped in some GIS tools).
      • ASCII matrix is now exported from top (highest Y coordinates) to bottom (lowest)
      • mixing RGB bands and other layers (heights, scalar fields, etc.) in a geotiff is in fact a bad idea. It results in 64 bits color bands that are not properly handled by most of the other GIS tools. CC will now warn the user about this.
      • exported clouds and meshes are now properly exported in the same coordinate system as the input cloud (it was not the case for clouds projected along X or Y)
      • a coarse estimation of the grid volume (relative to Z = 0) is now available in the 'volume' tab
    • Raster file import:
      • New option to import the raster as a textured quad (mesh). Only available if the raster has at least R, G and B bands.
      • CC is now able to properly load raster files with multiple undefined bands
    • All the selected lines of the Console can now be copied at once (e.g. with CTRL+C on Windows)
    • Connected Components Extraction:
      • safeguard added if too many components are to be created (CC will ask the user to confirm the creation of more than 500 components)
    • CC should now warn the user when they try to save a file with a filename containing special characters when the third party library in charge of the export doesn't support them (see the warning Console message)
    • Display options
      • menu entry changed from 'Display parameters' to 'Display options' for the sake of consistency
      • new option: 'double sided' (light) to control whether triangles should be lit from the back or not
    • Apply Transformation tool
      • new 'Reset' button
      • new 'From dip / dip direction' to initialize the transformation as a rotation matrix passing from (0, 0) to the specified (dip, dip dir.) orientation
    • Normals computation
      • glitch fix: when computing normals with the 'LS plane' model, only 3 neighbors are requested instead of 12
      • CC now handles properly the (0, 0, 0) normal resulting from an insufficient number of neighbors
      • Dip / Dip direction computation takes the (0, 0, 0) normal and outputs NAN values for these normals --> this way it is possible to filter out the points with bad normals with 'Edit > SF > Filter by value' and using the full (valid) range
    • Other
      • Transformation history is now saved in BIN files
      • The normal of a plane entity can now be visualized as a 3D arrow (just as the Facet entities)
      • Dip and dip direction are now displayed in the properties of Facets and Planes
      • M3C2 sources are now publicly released! (GPL license)
      • New option to update an existing viewport object (with the current camera parameters)
      • [macOS] Now looks for the global_shift.txt file beside the .app instead of inside the application bundle
      • [macOS] Hides the 3D mouse and Gamepad menus since they are not yet supported on macOS
      • [macOS] Increases the default font sizes for the 3D viewer (these may be set in the Display Options)
      • I/O plugins (Faro, DP, Riegl, etc) are now loaded even when using CC in command line mode
  • Bug fixes:
    • the custom light was broken (enabled and displayed in the 2D screen coordinates space instead of the 3D world!)
    • the 2D labels marker size (in 3D) was too dependent on the perspective camera position
    • the fields named 'intensity', 'grey', 'gray' or 'col***i' in PLY files are now automatically loaded as scalar fields (instead of 'intensity', i.e. grey level RGB)
    • when using a DBF field as height for polylines (in SHP files), the height value could be read from the wrong field
    • qSRA (Surface or Revolution Analysis): the profile origin was not always properly taken into account. The latitude angles were not always computed relative to the profile origin and changing the origin via the distance map dialog could be misleading.
    • when clicking on the 'Apply all' button of the LAS/LAZ loading dialog, the global shift set for the first file could be ignored by the subsequent ones
    • the 3-points label vertex names (A,B,C) were not displayed by default
    • Rasterize tool:
      • the 'Hillshade' computation tool was considering the grid upside-down (hence the sun azimuth angle was inverted)
      • contour lines generated with a projection direction other than Z were not displayed in the right orientation compared to the grid raster (inside the Rasterize tool only)
    • Command line tool:
      • the CROP2D option applied with an orientation other than Z was not performing the cut at the right position
      • the CURV option was no longer accessible
    • Connected Components Extraction: the tool couldn't be used properly with an octree level > 10
    • CC failed to save E57 files with multiple clouds with normals
    • ccViewer was transforming input arguments to upper case, hence preventing files to be opened this way on Linux
    • Documentation: contrarily to what was written in the wiki, the Level tool does not use the first picked point as origin for the new coordinate system! It only rotates the cloud about this point.
    • The new plane fitting algorithm (Least Squares fit) was giving strange results in some particular cases. Rolling back to the previous algorithm.
    • The sandbox tool 'Distance map to best fit 3D quadric' was broken
    • When computing normals with the Least Squares best fitting plane, CC required at least 12 points in the neighborhood, when only 3 are theoretically sufficient.
    • The SOR filter was broken (it was potentially using much more points than the number specified by the user, and it was changing over the cloud!)
    • Fixed a problem when creating a new 3D view with the view not updating until the window was resized or refreshed.
    • [macOS] Fix plugins on case-sensitive file systems
    • [macOS] Fix problem with the main window jumping around and resizing when dragging toolbars
    • [macOS] Fixes the layout of the 2.5D Volume Calculation dialog
    • Global shift & scale information could be lost when cloning entities or merging them with other non-shifted entities