Change Log
2026
3.6.0
- Standard and Pro new
Clip PlaneandClip Boxgizmos - Standard and Pro new
Clip Planes StatesUI inside Display > Clip - removed Tools > Clip Planes (functionality replaced by gizmos)
- Standard new
Smooth Normalsoperator, interpolate existing normals with neighbours within distance and max count - Pro fixed Tools > Split UI bug that prevented running split e57 to las/laz
2025
3.5.0
- Pro new tileset type
Parallel. Tiles are loaded and processed in parallel. UI will not be responsive until loading is fully finished. Fastest, but non-interactive- 1.5gp (that's "gigapoint") dataset:
Sequential2:27,Parallel0:49, (Threaded1:12)
- 1.5gp (that's "gigapoint") dataset:
- Pro
Defaulttileset type renamed toSequential - pcv debug mode now requires specific debug value to be set so it does not interfere with blender builtin values
3.4.0
- new PCV Pro with Tiles mode
- new option
Lumain Filter > Scalars > Add Scalar
3.3.2
- matcaps - blender 5.0 ships with matcaps as multilayer exr files. there is no reliable python api to load all/specific layers from such exr files as pixel arrays, so rather then remove feature, copy exr files from older blender system directory e.g.
4.5/datafiles/studiolights/matcap/*.exrto user directory5.0/scripts/presets/point_cloud_visualizer/matcaps/*.exr(more info about blender directory layout) and then they will show in matcap menu as before. if target directory is empty, one matcap (CC0 / public domain as per info here) is bundled in pcv, so menu is not empty and warning is displayed - more small blender 5.0 fixes here and there
- increased
display > points > adaptive point sizemaximum, handy with very large datasets with relatively sparse points
3.3.1
- fix Trace tool vertex reposition without snapping if points container is transformed
3.3.0
- new Retopology >
Tracetool for tracing flooplans, use clip planes to clip points vertically to narrow outline, then you can create lines or polygons with Trace tool while snapping to points (or move freely if points are missing), by default points will be in fixed height along global z axis set by first added point or existing in linked work mesh, lines can be cyclic or open, cyclic can be filled. Until line/polygon is commited, its points can be moved around (with or without snapping to points), once commited, can't be edited, but key shortcut to jump into mesh edit mode exists to enable editing of commited lines. - new e57
Expandoption forAddoperator, makes empty for each individual scan in e57 with its associated points (currently, you cannot save that back to e57, and unless you save each scan individually to a file, you won't be able to load points back on Blender restart) - Blender 4.5 compatibility, initial Blender 5.0 compatibility. but use in 5.0 at your own risk
- convert to native pointcloud object in Blender 4.5 and later (finally python api call is available in Blender release builds)
3.2.2
- LAS/LAZ:
Force 8-bit Colorsoption to load correct colors from LAS/LAZ files that has been saved incorrectly with 8bit values in 16bit fields. Without this enabled, points would appear almost black on screen. Available in Add and Load operators and in Load > Reader Options panel. It is aplied only if enabled and all rgb color fields are uint16 dtype and have all values less or equal 255.
3.2.1
- shader workaround for blender 4.4 and later https://projects.blender.org/blender/blender/issues/138928
3.2.0
- new filter > mesh > Find Contours: Rasterize points along world Z direction, render to a texture using Point Size and Resolution, optionally Interpolate missing pixel values, compute Contours from pixel depth data in Range and Levels and add them as mesh object. So for example, If you need contour at every 10cm in point cloud 1-2m section that has 3m total height from world origin, set Range [1.0, 2.0]m and Levels 11 (1m/0.1m + 1) (+1 to have 10 sections between 11 contours)
- if viewport shading is solid or wireframe and X-Ray is enabled, override drawing for points to be on top with 0.5 alpha to mimic blender viewport drawing. this behavior can be turned off, or alpha can be adjusted in pcv preferences,
Viewportsection. setting alpha to 1.0 will look like in blender < 4.3, there was a change in blender overlay engine in 4.4, hence this setting - fix: Render error when supersampling is used together with adaptive point size
3.1.2
- Convert > Gaussian Splatting: added support for Spherical Harmonics levels less than 3, so levels 0, 1, 2 and 3 can be now successfully converted
- fix Convert operator nodetree set boolean error in blender 4.4
3.1.1
- drag and drop for add pcv helper operator, only .ply, .las, .laz, .e57 and .pcd files, ascii types are not supported for drag and drop
3.1.0
- extension, required blender >= 4.2.6
- all libraries bundled, distribution split to platforms (while i provide mac intel package, i cannot test it, my intel mac is too old to run blender 4.0+), libraries wheels (except pye57 for mac intel, that one is built by me, because official is not available) are downloaded from PyPI (except pymeshlab until blender is fixed, see known issues)
- updated libraries to latest (almost)
- added automatic system for handling open3d conflicts on windows, data is saved to disk, separate python process is launched and results are collected back to blender, slower to run, but prevents freezes and crashes, no need to save e57 and laz files to ply and restarting blender anymore
- removed pymeshlab based e57 reader, pye57 is now officially available for mac arm64 and it is now the only way to read e57 files on all platforms
- removed laszip (no mac arm64 wheel, conflict with open3d on windows, laspy prefers lazrs anyway), lazrs is now they only way to read laz files
- fast navigation is now enabled by default, can be disabled in add helper defaults or globally
- both open3d and pymeshlab surface reconstruction freeze on arm64, automatic workaround is available, it is only a bit slower to execute
- removed experimental viewer, because of hard-to-identify-cause crashes, will be reintroduced in future using architecture similar to new tiles mode
- becase of extension system, importing pcv in user code is now:
import bl_ext.user_default.point_cloud_visualizer as pcv,user_defaultbeing repository directory name where pcv is installed - updated deprecated nodes in all geometry nodetrees
- fixed filter select points by color not using delta value properly
2024
3.0.2
- various small fixes
3.0.1
- fix: tool help panel visibility is now persistent whole blender session. if you don't need it,
Hto toggle it off and it will stay off when next tool is run
3.0.0.17 (alpha)
- docs: https://jakubuhlik.com/docs/pcv/
- new:
Transfer Datafilter - Transfer data from active to (single) selected PCV instance (object) by proximity, there is no interpolation, value is taken from closest point in active instance - fix: auto radius in scipy based hidden point removal
3.0.0.16 (alpha)
- new
Hidden Point Removalalternative implementation usingSciPy(instead ofOpen3D) as filter operator and render function - faster voxelize option in filter > simplify > type: voxel grid, will sort points to 3d grid and then throw away all, but one point from each cell
- slightly easier on eyes default colors in
Heightshader - optional libraries - updated support for their latest versions (that also means Blender 3.6 LTS is minimum now)
- Open3D 0.18.0 (so it available for python 3.11 that is shipped with blender 4.1+)
- lazrs 0.6.0
- pye57 0.4.5
- PyMeshLab 2023.12.post1 (e57 reader is not backward compatible)
- to update library, click
Install NAMEbutton in pcv preferences, then restart blender
3.0.0.15 (alpha)
- new:
Project Image From Camerafilter - Create points colors from projected image through camera (only Perspective and Orthographic types are supported), selected image is cloned and resized to render resolution before projection - new: four color schemes for scalar fields,
Viridisis now default- http://bids.github.io/colormap/
- https://github.com/BIDS/colormap/blob/master/colormaps.py
- original color schemes are released under a CC0 "no rights reserved" license
- new:
Custom Colorsscheme for scalar fields- ui for list of colors, shader will interpolate color between them according to scalar value
- add template as steps between two colors operator
- custom colors list is included in
Displaypreset and another preset saving menu is added toScalar Fieldsubpanel for scalar field display options only - cistom colors will also synchronize with
Synchronize Shader Propertiesoperator in3D Viewport Panel
- new:
PosterizescalarDisplay > Scalar Field- in shader posterization, only on screenFilter > Scalars > Posterize Scalar- as a filter that add a new posterized uint8 scalar field- if settings are the same, both produce identical result, so shader can be used as preview for filter
- fix: if
Addmenu operator is used withSync Shift/Scaleoption enabled orSync Shift/Scaleoperator (PCV > Load > General) is run after on pcv instances, results are now stored asCustom Shift/Scale, that means shift/scale values are stored in container properties and saved to blend. so, on blend file reload (and/or point cloud source reload) custom shift/scale is used and points will appear where they were before and not reset to their individual centers like it was before (and you don't have to run sync again)..
3.0.0.14 (alpha)
- new: Tools >
Clip Planes: manipulate clip planes visually with gizmos, store/restore clip planes states (states are saved to blend file and can be restored without tool running) - new: all Tools now on
RMBcancel current action in progress (3d cursor and all selection tools were changed) - gpu: reduced number of uniform buffers (was running out of available slots (ubuntu + nvidia driver))
- fix:
Renderoperator error on windows platform whenHidden Point Removaloption was enabled
3.0.0.13 (alpha)
- updated
laspyto latest version (click install button in preferences to update) - added button in preferences to install
lazrs- laz filelaspybackend, faster and available also for arm macs- if both
laszipandlazrsbackends are installed,laspywill preferlazrs, otherwise will use which one is available
- if both
- new api for drawing from python
- some small changes and optimizations to internal data storage
3.0.0.12 (alpha)
- new
Fast Navigation- Draw low resolution point cloud during viewport navigation- to be enabled in pcv preferences, it is off by default for now
- during viewport navigation, normals and bounding box drawing is skipped, there rest of shading options is kept, selection is always drawn in full
- a few other options in preferences
Delayset to what is comfortable, too short might interfere with overall smoothness of navigationAuto Excludepoint clouds with less than set points will not use itPercentageandMaximumcontrols how large is subset of points, set percentage of points is taken, if it is larger then maximum, maximum is used. please keep it low..- each PCV instance can be excluded by unchecking
PCV > Display > Options > Use Fast Navigation
- some implementation notes: Blender API has no way to tell if user is navigating viewport (well, at least without using modal operator and that is not applicable in this case) so solution involves timers and because of that, when you are still navigating, but pause any movement a bit, high resolution will be drawn after delay and also first redraw when you just started navigating might lag a bit, API does not provide mouse events so i cannot react before view is really changed
- new
Convertto3D Gaussian Splatting- converts result PLY files from 3D Gaussian Splatting for Real-Time Radiance Field Rendering to something Blender renderable, keep in mind that this training software has its own terms of use. License of the original paper implementation says the official training software for the 3D Gaussian Splatting may be used "non-commercially", i.e., for research and/or evaluation purposes only. Commercial usage requires getting license from INRIA. PCV only reads user supplied 3D Gaussian Splatting PLY files and interpret their data in Blender context. You need to consider how did you get your 3D Gaussian Splatting PLY files.
- please, take it as a very experimental feature, more like exploring what blender can do or not
- spherical harmonics formulas used in material nodetree are taken from https://github.com/aras-p/UnityGaussianSplatting/blob/main/package/Shaders/GaussianSplatting.hlsl#L134
- there are 4 approaches so far: points, octagons, spheres and sphere instances with volume. each have some advantages and each has problems, none is ideal
- "Point" - Point primitive, splat rotation and scale does not apply
- "Octagon"- Flat polygon primitive, lighter meshes, texture gradient falloff, lack of third dimension makes result look too sparse, by default has doubled size to counter that
- "Sphere" - UV sphere primitive, better shape representation, bad gradient falloff due to available surface material possibilities
- "Volumetric Sphere" - Instanced UV sphere primitive, volumetric material, very slow to render, volume density does not translate that well
- increasing
Properties > Render Properties > Light Paths > Transparentwill get rid of weird opaque patches in render
- new
Add Colors From Spherical HarmonicsinFilter > Colors- Colorize points from 'f_dc_0', 'f_dc_1', 'f_dc_2' and 'opacity' fields that are present in 3D Gaussian Splatting PLY files- if you plan to export back to gaussian splatting ply file, you can remove colors in
Datapanel before exporting. regular gaussian splatting ply files does not contain colors, so they should be ignored even they are there, but that might depend on specific viewer implementation, to be safe, remove them. also exported file will be smaller..
- if you plan to export back to gaussian splatting ply file, you can remove colors in
- fix
Generate(from Mesh Surface and Mesh Volume sources) colors being black in Blender versions >= 3.5
2023
3.0.0.11 (alpha)
- new
Histogram 3Dfilter - new
Display > EffectsDisplace- move points along their normalsNoise- add "random" noise to positions
- new
Apply Shader Effectsfilter to apply shader effects directly to point data (note:Noisewill produce different result then on screen because of random numbers generation, it will look the same in large scale, but individual points will be on different places) - new option
Apply Shader EffectstoSequence > Batch Filter - refactored
Projectfilter- faster: projecting 1.8m points on mesh with 25k faces, color from uv 8k image, smooth normals, discard enabled, old: 5m 22s, refactored: 1m 26s, accelerated: 24s
- new
Use Open3Doption to do ray casting with Open3D (faster, no loops) instead of blender BVHTree (slower, no dependencies - is builtin) - new option to use closest point on mesh instead of ray casting, does not require normals on points
- fix of previous fix of color management with uv images
- fix of getting color attributes
- fix of getting uv coordinates due to api change (somewhere between blender 3.4 and 3.6)
Filterpanel sorted to categoriesPoints,Colors,Normals,ScalarsandMesh, general rule is: filters removing something are on top, then modifying and lastly adding filters, order from most used to less (well, based on me..)Transfer Colorsfilter, when existing and saved image is used, margin obtained with cycles baking will use saved image pixels instead of just generated (may be a blender bug) so it is no longer possible to select existing image from list, but it is forced to create a new image via button similar to blender new image, new blank images are not affected by this so margin will be created from generated pixels as it should beASCII Preset Buildercontrol number of lines (1-32, default is still 10) shown in previewBatch Filtermenu sorted to categories mirroringFiltersubpanels- fix
Transfer Colorsfilter color management with float images - fix
ConvertandGenerateto always use appended copy of material and node tree (was a bug, not feature) - fix
Blur Scalarerror when neighbours=1
3.0.0.10 (alpha)
Tools > Lasso SelectandTools > Circle Select, significantly better performance, drawn area size has no longer impact on performance, only number of points under selection and not that much, from my tests, large selection (relatively large drawn area (~500x500px@72), a lot of points under area (~1m)) from ~1m50s to ~1s, so more than 100x faster. please note, tool is caching points projected to 2d screen space (old versions did the same too), that cache is invalidated when view is moved. so first use of tool is slightly slower then subsequent if view is not moved because points got to be projected to 2d, mentioned test times are including cache creation, point selecting algo is much faster.- new "Undo/Redo" (a bit exaggerated) system, mainly meant for filters, but working also with tools etc, everything that change loaded point data directly.
Storestate of point data with a button, thenRestoreif you want to go back to that stored state at any time, only one state is stored, it is cleared when new point cloud file is loaded, current unloaded, container object is deleted and renamed, when new blend file is loaded or whenClearbutton is pressed. a bit crude system, but better than nothing. - new "Fancy" selection shader, looks better, takes more gpu memory (needs points colors), in case memory is a problem, uncheck
Fancy Selection Shaderin preferences to use old shader - new
Clone Selectedoperator inCleanup Toolsto copy selected points to a new pcv instance (for example clone can be transformed and joined back) - new
Blur Scalarfilter, averages scalar values in radius (better) or by n nearest neighbours (faster) - new
Scalars From Mesh UVfilter, adds 2 scalars (u, v) computed from target mesh by proximity (needed that for some custom processing, maybe someone will find that useful as well) - new
Convert Scalarfilter, lets you remap values and convert data type of scalar field - new
Standard PTSoption forLoadandAddoperators, will use special PTS reader that expect standard fields format and order (x, y, z, intensity, red, green, blue), this is format used during PTS exporting from pcv. also available as defaults option in pcv preferences, if enabled it will be used for files with .pts extension, if disabled, pts file will be processed with generic ascii reader and requires saved preset (as it was until now) - new
Screened PoissonSurface Reconstruction filter, depends onPyMeshLab, can also transfer point colors and all scalars (as floats, no type checking, also requiresscipyinstalled) to result mesh Joinfilter, newKeep Transformationoption to copy transformation from active pcv instance- support for sequences of other file formats - las, laz, e57, pts (standard flavour, see
Standard PTSload option), all formats that can be exported can be loaded back as sequence, bothPreloadedandOn The Flysequence types are supported Sequence > Batch Exportcan now export any file format selected inExportpanel- new
Sequence > Batch Operations > Batch Apply Transformationto apply container transformation on all sequence frames (export sequence to keep changes) - fix tool widgets drawing in other viewports then initial
- fix retopology tools save function when blend file has not been saved yet and has no filepath
- KNOWN ISSUE: another incompatibility found:
Open3Dandlaszip, only on Windows. loading LAZ file and then using Open3D filter leads to instant crash (also true whenlaszipis just installed and LAS file is loaded). workaround is the same as withOpen3Dandpye57, load LAS/LAZ, export as PLY, restart blender, load PLY and continue withOpen3Dfilter (or pack points and save blend, exporting to PLY can keep shift/scale, packing to blend will remove it). unless library is fixed in future i see no other way around it. the crash is so hard it leaves no log, no message, no clue..- this is main cause of new pcv preferences option:
Prevent Library Conflicts, it is visible on all platforms, but ONLY on Windows it actually does something (at the time of writing). it is making sure that blender does not crash, for example by preventing you running filter (with message popup) that is usingOpen3Dafter conflicting file reading library has been used to load points. turn off to disable checks if you are feeling lucky..
- this is main cause of new pcv preferences option:
3.0.0.9 (alpha)
- updated compatibility of optional libraries to latest versions (run
Install Xoperators from pcv preferences again to update) - blender requirement is 3.6 now (because of
numpyversion required byOpen3D, the rest of pcv is stil compatible with 3.4) - set custom or modify current shift/scale, useful when you need to load separate files that should match. you can also sync shift/scale, but setting values directly allow more control
- disabled auto shuffling, loading is now ~40% faster, added
Shuffle Pointsbutton next toDisplay > Percentageslider, addedShuffleoption toConvertifSubsetof points is requested - removed
Merge With Other PLYfilter, useJoinfilter to merge point clouds from any source files together - float colors are not clipped (to 0.0-1.0 range) anywhere unless exported to file format that does not support them. colors over 1.0 is very rare scenario, regular scanned data should be in 0.0-1.0 range, but since pcv can generate colors also from exr images, might be useful to leave unclipped values. when points converted to mesh should emit light for example
- new filter
Clip Colors, clips color values to 0.0-1.0. that's all it does. just in case unclipped colors are not desirable and float color export is still needed - new filter
Scalar From Mesh Vertex Group, create scalar field from mesh vertex group by point proximity - new
Clone Unclipped Pointsoperator inDisplay > Clip, copy visible - unclipped points to a new PCV instance Projectfilter, addedSmooth Normalsoption to interpolate smooth normals from projected face vertex normals- added new filters to
Sequence > Batch Filter Reset PCVmoved from Load to Preferences asReset PCV On Active Object, also addedReset PCV Preferencesbutton- fixed color management in
Projectfilter when color is taken from uv image source
3.0.0.8 (alpha)
- redesigned data runtime storage
- keep double precision positions (if possible, depends on source file format)
- takes much less system ram when colors/normals are not available in source file (down to 1/3 in best case)
- system ram does not peak that much during loading (1/3 of total is saved compared to previous version in some scenarios)
- slightly better performance when creating from raw loaded points (in exchange with slightly slower gpu batches creating when doubles are stored)
- shift/scale to fit single precision for display is fully automatic and reversible if source file contains positions as double precision floats (if file contains only single precision, it will be executed as well and positions will be converted to doubles, although precision is already lost when source file was created)
- some operations can remove shift/scale, operator should warn about that, if not it is a bug
- some filters, especially those which use blender data to set positions may remove double precision positions (this will be addressed)
- if Packer is used, precision is lost, because blender stores mesh vertices positions in floats, if high precision is required, do not use Packer, always export point cloud file if points are modified. Packer is just workflow convenience if precision higher than 32 floats provide is not needed and it is not required to export points exactly at original locations as in initial file
- export LAS/LAZ (depends on
laspy/laszip), las version 1.2, point format 3 and extra dimensions (optional normals and other scalars (other than standard fields) https://laspy.readthedocs.io/en/latest/intro.html#point-records), it is always a new file, original header data (if source is LAS/LAZ) is not copied (as for now) - export E57 (depends on
pye57), only positions, intensity (if exists) and colors (pye57 does not support normals), it is always a new file, original header data (if source is E57) is not copied (as for now) - E57 and LAS/LAZ are exported unshifted/unscaled because file format allows it, PLY and PTS, unshift/unscale is optional
- export PTS changed floating point numbers handling, if point data has shift/scale and it is requested to be unapplied, 16 decimal places for doubles will be used, else 6 for regular floats
- export PLY
- ascii PLY uses 16 decimal places for doubles and 6 for floats (applies for point positions, normals, colors and scalars as well)
- added option for colors data type, now can export uint8 (that is usual format, it is default), uint16 and float32, colors are always in srgb, float32 colors are unclipped, if float32 colors are used, there is also option to convert them to linear color space
- load LAS/LAZ detect normals in file, if there are 3 scalar fields (x, y, z) named in one of these conventions ('nx', 'NormalX', 'normal_x', 'normalx', 'normal x'), those fields will be used together as point normals (and removed from scalars). this is optional, can be set in preferences for add and load operators and can be changed on object as well in Load > Reader Options
- DBSCAN Clustering filter (depends on
open3d), result goes to new integer scalar field, can be later split with another filter - Outlier Removal filter (depends on
open3d), select and remove points that are most likely noise or artifacts - Split Points By Scalar Value filter, integer scalars only, splits points per unique value in scalar (useful after dbscan clustering or E57 import with scan indices to scalar field and files with classification)
- optional render to new image datablock instead of saving directly to disk (single render only, animation is always saved)
- fixed inaccuracy in 16 bit per channel colors handling during loading
- several convert and generate corner cases fixes, fixed color management with generate scene: lidar simulation and scene: project
- load e57 via
pye57library can be monkey patched to read weird files with scans without translation and rotation elements defined in header. option is available in pcv preferences underExperimental Features, library is modified at runtime, its files are not modified. it helps when reading e57 file ends in errorE57 element path well formed but not defined (E57_ERROR_PATH_UNDEFINED)and in console with lines like this:
File "/Users/redacted/.local/lib/python3.10/site-packages/pye57/e57.py", line 214, in read_scan
xyz = self.to_global(xyz, header.rotation, header.translation)
File "/Users/redacted/.local/lib/python3.10/site-packages/pye57/scan_header.py", line 32, in rotation
q = Quaternion([e.value() for e in self.node["pose"]["rotation"]])
pye57.libe57.E57Exception: E57 element path well formed but not defined (E57_ERROR_PATH_UNDEFINED)
3.0.0.7 (alpha)
- fix of
Convertfix from previous version Packeruses same logic, points are stored in mesh chunks with max 2 ** 26 vertices
3.0.0.6 (alpha)
- new
Densityfilter: make scalar from volume density (in sphere radius around each point), surface (projected to 2d along world z in circle radius) and neighbours (distance to closest neighbour point) - Convert to mesh/pointcloud operators will detect when more than 2 ** 26 (~67m) points is being converted and will split result meshes, each to fit in 2 ** 26 vertices (https://projects.blender.org/blender/blender/issues/110334)
- disable Display panel ui when no points are loaded
3.0.0.5 (alpha)
- e57 optional scan indices as scalar fields
- e57 optional scan poses as transformed empties parented to container object, available only in Add Helper: Shift+A > PCV
- filter
Remove Valuecan also use integer values - filter
Remove Valueno longer requires displayed scalar to edit, uses selection in Data panel Generate > Scene > Projectcan use perspective camera view (in addition to viewport perspective view)Generate > Scenebetter random noise inProjectandLidar Simulation, scaled with distance from “sensor”, creates scalars with xyz offsets and factor- some blender 4.0 compatibility fixes, but using blender 4.0 is not recommended, don’t know what will break next…
- fix the “if file is missing at absolute path, then same filename is loaded if exists next to blend” when path is windows style, but current platform is posix (blend file has been moved between platforms)
PCV 3.0 (alpha)
- Blender 3.4 and later
- right now available as alpha release
Core
- Metal gpu backend support
- one main shader, recompiled on the fly (instead of single use shaders)
- many shading options can be mixed together (opacity, blending modes)
- several performance improvements, data batches are recreated (and uploaded to gpu) only when needed
- all custom shaders (main shaders, internal utility shaders, tools shaders, render shaders, …) has been updated to be cross compilation ready (OpenGL, Metal and upcoming Vulkan backends)
Data
- new
Datapanel with overview what has been loaded from file - filters or other operators that expect scalar field to be selected now will use
Data > Scalar Fieldslist (with some exceptions that require displayed scalar, like remove value filter) - if linked file is not found, try to recover by loading file with same filename next to blend if exists, path will be updated if blend is saved
File I/O
- any supported format can now be selected as main file, import panel has been removed
- file loading options can be set at file select dialog
- import ascii files has been replaced with
ASCII Preset Builder - new export option:
PTS
Packer
- formerly experimental
Packeris enabled by default - loaded point data have to marked for packing (shield icon next to file path on main panel, like with other blender datablocks), the rest is automatic, driven by blend file save and load events
Packeroperators and packed data overview is in 3d viewport popup menu
Filter
- filters working with meshes has been updated to not use any deprecated mesh properties
- new
Distance To Meshto scalar field - new
Reducemethod toSimplifyfilter, remove points so their count is exactly given number - new
Add Noisefilter (uses either random sampling in sphere volume to add to current positions, or mathutils.noise.turbulence_vector (quite slow), for more advanced uses, convert data to mesh > point and modify positions with geometry nodes, better performance, undo, etc.) - removed
Discardfilters, they are substituted byDatapanel, any data except positions can be removed there
Render
- animation buffers caching to speed up rendering (depends, but by a lot in some cases), cannot be used with sequences and in some other cases, see checkbox tooltip
Convert
- complete rewrite (also because of deprecated mesh properties)
- to
Mesh- uses geometry nodes to instance mesh primitives or points, geometry nodes modifier is preserved to allow changes after conversion - to
Volume- creates vdb file that is reloaded back to blender - to
Pointcloud- pointcloud object in blender alpha builds - removed
ParticlesandInstancertypes
Generate
- complete rewrite (also because of deprecated mesh properties)
- uses Geometry Nodes as backend where applicable for much better performance
- new
Scene > Lidar Simulationgenerate type, project in spherical coords around origin, colorize with Cycles equirectangular render - new
Scene > Projectgenerate type, project from camera to scene, colorize with Cycles render using same camera - new
Rendergenerate type, generate from multilayer exr, camera and position or depth pass - active image node, material, uv etc is no longer needed, related datablocks are selected in ui by names
- removed
Particlessource
Sequence
- new
Batch Generateuses options inGeneratepanel Batch Exportuses options inExportpanel (including PTS export)
Postprocess
- output directly to image datablock for quick renders from viewport view
UI
- many areas reworked to fit new features
- presets for select panels in header
Preferences- loading defaults for main file select operator
Other Notes
- regarding Metal support, since my mac is kinda old, it only supports Metal version older then Blender requires, so i cannot personally test Metal at all (if OpenGL works, there is chance Metal will work as well, but it is not 100%), any bug report will be appreciated. problem with Metal shader will appear as nothing is drawn on screen, no error popup is displayed. in such case, please start blender from command line and try again to set the same display options so it happens again and include all messages from terminal with report
- any suggestions and bug reports are welcome
- and lastly, as per usual, it will be free upgrade
2.2.1
- pcv preferences > install libraries > Check operator to list which library is installed and usable (importable)
- display warning if using Metal gpu backend in blender >= 3.5
2.2.0
Tools
- new ui, sorted to subpanels, options shown when tool is running
- new gpu accelerated Place 3D Cursor tool
- new tools for container transformation:
- Translate: move container so selected point is at given location
- Rotate XY: rotate container so 3 selected points at right angle to each otehr are aligned with x and y axes
- Align Z: shortest rotation around selected point with second point they are aligned with z axis
- Scale: select two points and scale container so distance between those two points matches given length
- new Gradient Select tool
- new tools for retopology:
- Polygon: select points or vertices, make polygons from them, tweak while snapping to points, and much more…
- Plane: select points, single quad plane is fitted between them, scaled to cover points, can be rotated before adding to mesh
- Cube: quickly draw cuboids by selecting 3 points and cuboid height
Display
- new Cull and Billboard Cull shaders, omit drawing of ‘backfacing’ points (requires correct normals on points to work)
Filters
- new option in Simplify filter: Voxel Grid v2 - faster, more options (also available in Sequence > Batch Filter)
Add Menu Helper
- added support for all readable file formats. defaults can be set in preferences and overrided when helper is being run (ascii file types need format preset saved in advance) and mixed file types can be added at once.
- removed File > Import menu item
Other
- need for Prevent Floating Point Precision Errors enabled is automaticly detected by default, user is notified when this happen (there is option in preferences to disable it)
- fixed detection of shift in negative direction when Prevent Floating Point Precision Errors is used
2.1.0
- filter: Hidden Point Removal (using Open3D), view dependent points removal
- render: Hidden Point Removal option, filter will be run on each frame on points that are send to render
- Height Shader: added global axes and fit to range options
2022
2.0.3
- fix open3d version requirement on other platforms than mac (required open3d 0.16.1 is available only for mac, while other platforms latest version is 0.16.0, haven’t noticed it…)
2.0.2
- fixed error in blender 3.4 on activation, one operator name was too long for blender taste
2.0.1
- new join sequences operator
- sequences can be loaded with gaps in frames, or with gaps merged. default is merge
- fixed playback when multiple sequences are loaded, there was 1 frame offset on second sequence, 2 frames on third and so on
- fixed error in batch filter > simplify
- fixed obscure context errors in batch filter when filter operator poll() fails
2.0.0
- Open3D 0.16.0 support (including python 3.10, so blender 3.1+ is supported)
- renamed addon directory to point_cloud_visualizer, does not matter much for normal use, only if you happen to use pcv in scripts, now it got to be imported with import point_cloud_visualizer as pcv for example
- updated laspy support to latest version
1.999.15
- preferences > calculator: calculate approx. number of points that can fit into given gpu memory while using default shader without scalars
- generate > mesh surface > project from view: basically you can simulate how real scanning is done. it can be run multiple times and new points are appended to existing. you can add some jitter in pixel grid and some displacement noise to look more realistic. want to blend generated points with real? this is tool for you
- fix render > depth and mask pass file format (was always saved as png, instead of what was set in blender properties > output)
1.999.14
- new helper operator Export, export all/selected/active pcv instances to ply files
- new export option Ignore Zero Scalars, do not export scalars that sum to zero
- new filter Poisson Disk Elimination (depends on scipy), even spaced subsampling
- fix incorrect/error default colors in some cases
- ui Convert panel
- ui pye57 is now default option for importing e57 files
1.999.13
- all colors pickers in ui are gamma corrected
- fixed index error (when exact emitter face cannot be found, nearest will be used), color interpolation (was not working properly) and emitter transformation in generate from particle system
- fixed linear to srgb conversion colors in generate from geometry nodes vertices (most of colors in blender are in linear color space, pcv uses gamma corrected as they are in ply, las, etc. files)
- fixed missing alpha blending when selection is displayed
- fixed container transformation in Split Selected operator in Remove Color, Remove Value filters and Tools
- fixed Transfer Colors ui
1.999.12
- generate points from geometry nodes vertices and attributes
- filter > Remove Value and edit > Select Value (both for scalars) can now select single value instead of range only (input value is converted to scalar data type before selecting, e.g. if scalar is unsigned int then ui input float value is converted positive integer, so input 1.789 will select 1 in integer scalar)
- filter > Project new parameter Strength, at 1.0 points land on surface, at 0.5 they will move half way and so on
- filter > Simplify new method option Slice, it does the same as Display > Percentage, but it applies to points directly
- fixed unresponsive blender ui after render is finished on windows ( @Aepi9 )
- removed export > visible only, because of confusion, use filter > simplify > slice to get the same result
1.999.11
- new Convert option: Mesh To Points, creates vertex mesh with attributes from points, adds geometry nodes that converts vertices to points and assigns colors to points and adds material, with this you get cycles point cloud rendering without need for blender alpha build (works in blender 3.1+)
- Start Frame setting for ply sequences
- Split Selected operator for Remove Color and Remove Value filters and selection Tools
- updated optional packages to latest versions (except open3d which is not yet available for python 3.10 included in blender 3.1+), to update package, click its install button from preferences
- fixed scalar soft light blend mode formula
- fixed some primitive drawing types deprecation in blender 3.2
- fixed viewport name label depth in some situations
- fixed point selection drawing in some situations
- fixed center viewport camera view on points operator in some situations and renamed to Frame Points
- fixed sequence playback not restarting after end of sequence is reached while Cycle Forever is turned off
1.999.10
- fixed ply export
- fixed project filter (https://developer.blender.org/T97025)
1.999.9
- new Add Colors and Add Normals filters to create Colors and Normals from scalar values
- new Invert Selection operator in Tools
- new Save As Render option to use view transformation as set in Color Management properties
- render operator is now using properties from: Output Properties > Format, Output Properties > Output and Render Properties > Color Management instead its own, more standard path handling, save any still image format, all color and color depth options, color management looks, etc…
- pye57 support for reading multi scan e57 files
- compatibility with pymeshlab 2022.2.post2
- fixed pip installing latest package instead of specific version
- fixed clip planes in Color Adjustment shader
1.999.8
- All new Tools panel
- Place 3D Cursor
- Box Select
- Lasso Select
- Circle Select
- X-Ray Shader
1.999.7
- Blending modes for scalars (Normal, Multiply, Screen, Overlay, Soft Light)
- Color adjustment (Exposure, Gamma, Brightness, Contrast) per channel in shader and filter
- Discard filters (Discard Normals/Colors/Scalars)
- Generate from native pointcloud object (Blender 3.1 Alpha or Blender 3.2 Alpha, i.e. build with pointcloud object enabled)
- Viewport postprocessing
- LAZ import: https://github.com/tmontaigu/laszip-python 3
- Alternative E57 reader: https://github.com/davidcaron/pye57 6
- Reading all points from E57 multi scan file when using PyMeshLab for import
- Better ui for packages installation in preferences
- Removed Extras panel and moved contents to filters
- Plugin icon in ui marks functionality depending on 3rd party package
1.999.6
- optional installs (open3d, laspy, etc) are now installed into user python site-packages on all platforms, windows and linux users no longer need to use blender portable/zip distribution
- added sequence batch filter, convert and export to ply. sequence have to be preloaded (not loaded on-the-fly). batch filter and convert uses settings as set in filter/convert panels, batch export uses its own settings in batch export panel. so, for example, if you want apply Remove Duplicates to sequence go Filter > Remove Duplicates, set desired distance, go Sequence > Batch Filter choose Remove Duplicates from list and click Batch Filter. if you start blender from command line, each sequence frame is printed so you can observe some progress
1.999.5
- convert to blender native point cloud object (blender 3.1) - can be rendered in cycles as spheres: https://developer.blender.org/D9887 12
- buttons to uninstall optional libraries
2021
1.999.4
- install Open3d button enabled, Open3d 0.14.1 is already available on PyPI for python 3.9 shipped with blender 3.0
- added “Remove Duplicates” filter for removing points from too dense areas or for very fast subsampling (uses SciPy, need to be installed from preferences, or it comes with Open3d)
- added reload upon export option, so exported points can be reloaded from exported file after export
- added convert to geonodes, number of vertices in instance mesh is calculated from instanced mesh itself
- fixed render when some of points have in front option enabled and rendering of all points in scene is requested
- fixed animation render not updating when some of pcv properties are animated
- fixed sync display settings in 3d view menu
1.999.3
- pcd format import (ascii and binary types), my own custom implementation so i consider it experimental
- e57 format import via pymeshlab (only position, normal and color is imported), experimental as well, if you use older macos than catalina it will crash blender, linux and windows are untested yet
- load default options in preferences for helpers (File > Import > PCV and Add > PCV)
- added normals length in edit mode
- fixed transfer colors to texture exception when uv is from edge to edge
- fixed render all scene points in depth and mask passes
1.999.2
- blender 3.0+ only (bgl module is being deprecated, gpu module only is now used, so “Prepared for the future!”)
- scalar color schemes
- all new edit mode (on the inside - using mesh attributes), works with scalars, can select by scalar value, set scalar value, flip normals
- all filters preserve scalars
- new filters for working with scalars: Remove Value, Colorize, Add Scalar
- render extra mask and depth pass in separate files (there seems to be no way to make multi layer file via python)
- updated Open3D, installation right now need some extra steps, when Open3D 0.14 will be released on PyPI, i enable button in preferences for easy installing
1.999.1
- scalar display is now handled in shaders - faster, can be animated and rendered, added bleeding parameter to mix colors and scalar
- whole internal shader system rewritten, any shader can use clip planes and mixing with scalar
- added sequence “on the fly” frame ply loading - no need to preload all frames, reasonably fast with smaller files, works for render too
- all filters updated to work with new data system and scalars
- fix “in front” display option
- fix export ply with scalars
- and many smaller things…
1.10.0
- convert to geometry nodes with colors (blender 3.0+)
- convert to mesh divided to even chunks
- render points in 3d viewport together with other scene objects
1.9.0
- clipping planes for all shaders (viewport and render)
- auto clipping planes update, linked object can be animated (viewport and render)
- more Split filter options
- shader panel updated
1.8.0
- faster rendering
- render current or all visible point clouds
- optional shuffle when joining points
- optional basic uv layout generation for Convert (mesh based result)
- Convert to vertex mesh with pcv-normal and pcv-color attributes (to be used with Geometry Nodes)
1.7.0
- new in edit mode: Select Color and Set Color
- new filters Split and Join
- Project filter point position change is now optional
- Remove Color both by color and numbers and Color Adjustment Apply speed improvements
- fixed View Points not being correct when container is transformed
2020
1.6.0
- point set registration with several global and local methods (using Open3D)
- normal estimation with normal orientation by direction or camera location (using Open3D)
- new Fast viewport shader
- new File > Import and 3D Viewport > Add helper menu operators
- new center view on points operator
- new edit operators: points to origin, apply transformation
- edit mode enter, update and exit significantly faster
- faster render manual depth sorting
- compatibility with Blender 2.91 viewport drawing and rendering
- compatibility with Open3D 0.10.0
- fixed edit mode ui glitches
- fixed ascii import guess separator
1.5.0
- import points from text file formats
1.4.0
- MatCap and MatCap Billboard shaders
- Fast bounding box Crop points
- Open3D: Voxel Downsample, Estimate Normals and Surface Reconstruction
- fixed render transparency (blender 2.9x)
1.3.0
- Remove Color numeric input with python expression and invert selection operator
- Convert use custom mesh as instance
- Project filter align projected point normal to target mesh surface normal
- fixed point generation on triangles with very small area when using Weighted Random In Triangle
- fixed Sequence not reseting when new blend is loaded
1.2.0
- viewport menu to batch control PCV instances
- Height Colors, Depth Effects and Alpha shaders
- load alpha, export alpha
- render with manual depth sorting
- fixed sequence animation render
1.1.0
- Transfer colors from points to mesh vertex colors or uv texture
- Voxel-like simplification method
- Generate points in mesh volume
1.0.0
- core completely rewritten
- takes less system memory
- better undo / redo handling
- partial ply loading - slice, evenly spaced or random strategies
- out of video memory crash prevention with maximum display points user setting
- more shader types and shader options (Phong, Billboard, Billboard Phong, Fresnel, Bounding Box, Position with scale and offset)
- render to image with any shader
- optional faster triangulated conversion to mesh
- many small fixes and optimizations
2019
- 0.9.30 join filter, ui tweaks, fixes
- 0.9.29 fixes, render logging
- 0.9.28 clipping planes from object bounding box, faster all numpy export, many minor fixes
- 0.9.27 render supersampling and draw smooth circles
- 0.9.26 color adjustment fixes
- 0.9.25 color adjustment, faster boolean
- 0.9.24 project colors
- 0.9.23 fixes
- 0.9.22 extra debug shaders
- 0.9.21 preferences
- 0.9.20 ui changes, poisson disk sampling generation, size and alpha available in edit mode, various fixes, removed manual depth sorting during render
- 0.9.19 point cloud generation from vertices and particles
- 0.9.18 point cloud generation from mesh surface
- 0.9.17 fixes
- 0.9.16 boolean filters
- 0.9.15 selection preview for remove color filter
- 0.9.14 external api improvements
- 0.9.13 faster normals drawing
- 0.9.12 ply sequence, external api
- 0.9.11 merge filter
- 0.9.10 ui
- 0.9.9 point cloud global alpha
- 0.9.8 basic editing
- 0.9.7 project point cloud on mesh surface
- 0.9.6 ply exporting now uses original or viewport data
- 0.9.5 simplify and remove color filters
- 0.9.4 export ply
- 0.9.3 conversion to instancer
- 0.9.2 load ply with 16bit colors
- 0.9.1 all new render settings
- 0.9.0 conversion to particles
- 0.8.14 fixes
- 0.8.13 fixes
- 0.8.12 fixes
- 0.8.11 ui tweaks
- 0.8.10 fixes
- 0.8.9 ui tweaks, code cleanup
- 0.8.8 refactored convert to mesh
- 0.8.7 fixed vcols bug in convert
- 0.8.6 ui tweaks, a few minor optimizations
- 0.8.5 convert to mesh all or subset
- 0.8.4 preferences, ui tweaks
- 0.8.3 display normals
- 0.8.2 fixed shader unknown attribute name
- 0.8.1 fixed ply with alpha, fixed convert to mesh when normals or colors are missing
- 0.8.0 convert to mesh
- 0.7.2 ui tweaks
- 0.7.1 viewport performance fixes
- 0.7.0 ascii ply support
- 0.6.6 fixed drawing after undo/redo
- 0.6.5 point cloud illumination
- 0.6.4 refactored draw handlers, fixed occasional crash on erase
- 0.6.3 added percentage of rendered points, fixed render colors to look the same as in viewport
- 0.6.2 fixed point size display in viewport, separated view and render point size
- 0.6.1 single cloud rendering almost completely rewritten to be better and faster
- 0.6.0 single cloud rendering
2018
- 0.5.2 refactored some logic, removed icons from buttons
- 0.5.1 load ply without vertex colors, uniform grey will be used
- 0.5.0 performance improvements using numpy for loading and processing data
- 0.4.6 fixed crash when parent object is deleted while drawing, fixed removal of loaded data when parent is deleted
- 0.4.5 added 'Display' percentage, better error handling during .ply loading
- 0.4.0 almost complete rewrite for blender 2.80, performance improvements using shaders, simplified ui
2017
- 0.3.0 new ply loader, can be used with any binary ply file with vertex coordinates and colors
- 0.2.0 display percentage
- 0.1.0 first release