Point Cloud Visualizer

pcv

Display, edit, filter, render, convert, generate and export colored point cloud PLY files.

header-500px

Available at Blender Market

Key Features:

  • Display hundreds of millions of colored points in 3d viewport, limited only by system and gpu memory.
  • Any Blender object can be used as container for points, points are not part of Blender data (until converted to) for maximal performance.
  • Supported file formats - read: PLY, LAS/LAZ, E57, PCD, any text based file format such as PTS, XYZ, TXT, CSV etc., write: PLY.
  • Custom PLY reader/writer optimized for point data and performance.
  • Display points with number of various shaders, display point normals, use clipping planes, display scalar values (value remapping in range, color schemes).
  • Cleanup points directly with modal selection tools or by using Blender edit mode with temporary mesh linked with points using Blender tools.
  • Abundance of editing filters: subsample/voxelize/slice points, crop, boolean, color adjustment, remove by color or value, project on mesh, remove duplicates, estimate normals, point set registration, surface reconstruction.
  • Builtin OpenGL rendering to image or images sequence with or viewport or transparent background.
  • Convert points to various Blender data (mesh, instancer, particle system, Geometry Nodes instances, Geometry Nodes points) for rendering with any render engine.
  • Generate point clouds from mesh surface, mesh volume, particle system, Geometry Nodes vertices with attributes.
  • Working with PLY sequences, playback, batch convert, filter and export.
  • Can be used as debugging tool to display 3d location/normal/color data with easy to use controller class.

Full documentation here: Point Cloud Visualizer - documentation

Upcoming features already available under Experimental section:

Packer

Store loaded points as hidden mesh datablock with attributes in blend file. Automatically restore and draw points from datablock at blend file load, save points to datablock on blend file save. More info here in documentation: https://jakubuhlik.com/docs/pcv/docs.html#experimental-packer

Viewer

Load and display very large datasets that does not fit into gpu memory. Octree, Level of Detail, Camera Frustum, Threading, PLY, LAS/LAZ and E57, all of it is thereā€¦ More info here in documentation: https://jakubuhlik.com/docs/pcv/docs.html#experimental-viewer

31 Likes

Congratulations carbon2,
One more time, a very useful addon!
Friendly yours.
Namaste. :eyebrowlift:
Spirou4D

Itā€™s amazing !!! :cool:
Thanks

Iā€™ve been looking for this for months now. Thanks carbon2, well done :slight_smile:

Awesome. Thanks

update: added display percentage

Nice point cloud tool. hope somedays blender can import huge color pointcloud like recap.

Great, this new feature :slight_smile:

For information, ambient occlusion works on the cloud (my first test with photoscan trial version) :wink:
OpenGL render donā€™t work. Why ? Do you have a solution ?


opengl render (i guess) is out of reach from python, so i donā€™t think it is possible. 3d manipulators are not rendered too.

For turn around this problem, itā€™s possible to take bgl captures!!! Itā€™s works perfectly ! :smiley:

update: 0.3.0 new ply loader, can be used with any binary ply file with vertex coordinates and colors
from now it should load any binary ply with ā€˜x, y, z, red, green, blueā€™ vertex values. all other values are ignored. color values must be in 0-255 range.

Awesome work!

But how to load a file automatically from python scripts? Setting the file path works:

bpy.data.objects[ā€œemptyā€].point_cloud_visualizer.filepath = rā€™ā€™ā€˜path o\file.plyā€™ā€™ā€™

Loading the pc file by changing the default value for automatic loading to true is not working

Hi carbon2,
Nice work !
For opengl render under python you may take a look at MesureIt or archipack [1], (sharing same codebase).
The trick is to use gl to draw over an image rather than on screen.
Keep in mind that blender gl api is likely to deeply change under 2.8 (complete rewrite, not yet done).

[1] archipack gl render

i donā€™t think i understand, for rendering like on image right? not rendering to viewport, or there is some performance black magic, drawing all to in memory image and then the drawing image over viewport to speed things upā€¦

So Iā€™m very excited about this add-on, as I NEED vert colors from point clouds for what Iā€™m trying to do.
Iā€™m using Mandelbulb 3D to generate point clouds of 3D fractals to import into Blender for volumetric rendering in cycles and renderman. Mandelbulb 3D bases the vert colors on the fractally calculated colors, which is important. ā€œFakingā€ that sort of thing just isnā€™t really possible.
So Iā€™ve installed this ā€¦ I think ā€¦ All I need is the second link you listed, yes? I tried downloading the .zip from the first GitHub link, but Blender wouldnā€™t accept that for an install.
When I try to load my .ply files, Iā€™m told ā€œUnable to load .plyā€
Here is one of my point clouds Iā€™m attempting to import. This is a pretty small one. Just a default formula for test export. Some of the point clouds .ply files are over 150 megs, and Iā€™m sure I could easily go bigger.
https://drive.google.com/open?id=1Boa4KLp1Hwf4FEcY89GU-IM5kr1jV__x

I very much look forward to be able to use this add-on.

ā€¦ I even tried running the .ply thru MeshLab and exporting it as Collada, but Blender still didnā€™t bring in the vert colors.

the first link is my repo of all addons, it canā€™t be installed as a whole. the second link is addon itself.
but seems like you sorted it out and successfully installed addon, now the ply files. the ply you linked is ascii ply file and only binary ply files works in my addon. it has ply reader built in and it accepts only binary encoded ply files, so if you can save them as binary or in meshlab load your ascii ply, save as ply again, this time with binary encoding checked and you are good to go. i tested it with your file and works well.
by the way, with binary encoding you get much smaller file sizesā€¦

Okay thanks. That worked to get it into your visualizer, and the colors do indeed come through nicely.
Is there a way for me to apply that to a volumetric material?
While trying to figure if/how I could do that, it crashed and gave me this error, which I duly report:

Traceback (most recent call last):
File ā€œC:\Users\freeman\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\view3d_point_cloud_visualizer.pyā€, line 299, in modal
context.area.tag_redraw()
AttributeError: ā€˜NoneTypeā€™ object has no attribute ā€˜tag_redrawā€™

location: <unknown location>:-1

ALSO! Thanks for the tip about the binary file. I didnā€™t realize Mandelbulb 3D was outputting text. And no, there is no binary option, sadly.

can you provide some steps to reproduce the error? such errors does not say much. it might be for example, that you switched are type from viewport to something else while drawing pointcloud. documentation about drawing to viewport is kinda non existentā€¦

Hi carbon2,
bgl is able to draw over viewport and over any image.
No black magick here, in MesureIt, the code draw gl only part over a black empty image and then composite with regular render.
This way you may add gl over any regular render, regardless of render engine used.

Sorry, no. It has only happened once, and I donā€™t remember exactly what series of steps I had done that resulted in that.
Any tips on using those vertex colors as the source for volumetric colors?
What Iā€™m trying to do is use point clouds of fractals to create volumetrics in Blender, and really kinda need the colors from the fractals as well.