Home

Awesome

Point Cloud Visualizer 2.0+

Point Cloud Visualizer PCV

Supported, maintained and updated to work in latest Blender versions. Many, many more features.

Available here: https://www.blendermarket.com/products/pcv

Full documentation is here: https://jakubuhlik.com/docs/pcv/docs.html



All addons available in this repository are unmaintained and unsupported, some may work in recent Blender versions some may not, some are obsolete.



Addons for blender 2.80 and 2.81 (maybe up to 2.83)



Point Cloud Visualizer 0.9.x (for blender 2.80)

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

Works with any PLY file with 'x, y, z, nx, ny, nz, red, green, blue' vertex values. Vertex normals and colors are optional.

This is old, unmaintained and unsupported version

This version fully works only in Blender 2.81

Point Cloud Visualizer

General info

Point Cloud Visualizer

Basic Usage:
Display Options:

Shaders

Point Cloud Visualizer

Clip

Shader with 6 clipping planes. Planes can be enabled/disabled independently with eye icon, first 3 values are plane normal (x, y, z), last value is plane distance from origin. These can be set from different object bounding box, choose object from scene in Object and hit Set Clip Planes From Object Bounding Box, object can then be hidden/deleted, set values will stay until operator is executed again. X reset all the settings to their defaults.

Point Cloud Visualizer

Point Cloud Visualizer

Edit

Point Cloud Visualizer

Point Cloud Visualizer

Point Cloud Visualizer

Quasi point cloud Edit Mode. Hit Start and all points are converted to helper mesh with vertices and entered to mesh edit mode. You can transform, delete and duplicate vertices using regular Blender's tools. If you want update displayed points, hit Update, when you are finished editing hit End to update points for a last time and delete helper mesh. If something went wrong, select main object with cloud and hit Cancel to reload original points, return interface to regular mode and attempt to clean helper mesh if it is still available.

Start - Start edit mode, create helper object and switch to it Overlay Alpha - Overlay point alpha Overlay Size - Overlay point size Update - Update displayed cloud from edited mesh End - Update displayed cloud from edited mesh, stop edit mode and remove helper object Cancel - Stop edit mode, try to remove helper object and reload original point cloud

Filter

Filter current point cloud, all changes are only temporary, original data are still intact. To keep changes, you have to export cloud as ply file.

Point Cloud Visualizer

Simplify

Simplify point cloud to exact number of evenly distributed samples. All loaded points are processed. Higher samples counts may take a long time to finish. Surely there are better (and faster) tools for the job, but.. Basically it takes some random point and set as accepted sample, then another set of random candidates, measure distance from already accepted samples and stores the one that is most distant as another accepted, repeat until number of samples is reached.

Project

Project points on mesh (or object convertible to mesh) surface. Projects point along their normals until it hit surface or Search Distance is reached. You can choose between Positive (along normal direction), Negative (vice versa) or both. Optionally you can Discard Unprojectable points that was not possible to project and after projection Shift points a fixed distance along normal (positive value) or the other way around (negative value). Projected points can be optionally colorized by vertex colors, uv texture and vertex group from target mesh.

Boolean

Intersect or Exclude points with mesh object. Mesh have to be non-manifold.

Remove Color

Remove points with exact/similar color as chosen in color picker (Eyedropper works too). Currently i can't get to match sampled color from viewport with color in loaded cloud. Floating point error, incorrectly handled Gamma (at my side for sure), color management in Blender's viewport or any combination of all, or something else.. Anyway, if you leave at least one delta at hue/saturation/value (whatever works best for given cloud) it should remove the color you picked.

Merge

Load another ply and merge with currently displayed. Hit Merge With Other PLY, select ply file and load. New point will be appended to old, shuffled if shuffle is enabled in preferences.

Join

Join current active point cloud with another on different object. Object transformations are applied to clouds to look the same as before joining.

Color Adjustment

Point Cloud Visualizer

Adjust exposure, gamma, brightness, contrast, hue, saturation, value or invert colors. Click Enable to enable color adjustment shader, adjust values as needed, click Apply to apply colors to points. Click Reset to set all to default value. Shader can be disabled without changes anytime unchecking Enable. When color adjustment shader is enabled, all other shaders are disabled.

Render

Currently only sigle point cloud per render/frame is supported. Output image is RGBA 8bit PNG - transparent background with colored point cloud, which can be composed over something else later.

Usage:
Render options:

Point Cloud Visualizer

Render smoothing/anti-aliasing notes:

Use Supersampling for most of the time with lowest value (to be exact, 2 works great) that look still good. If you run into problems due to very large supersampled image sizes Blender or hardware cannot handle, you can try to disable Supersampling and use Smooth Circles to draw smooth points directly in target resolution, but you are limited to basic shader and points before drawing have to be depth sorted manually which can be very slow with large point counts.

Convert

Point Cloud Visualizer

Point Cloud Visualizer

Convert point cloud to mesh. May result in very large meshes, e.g. 1m point cloud to cubes = 8m poly mesh. Depending on what point cloud data is available and desired mesh type, some options may not be enabled.

Conversion to instancer specifics: points are converted to triangle mesh object, vertex colors are baked to texture, extra instanced sphere object is added as child object of main mesh, material using baked colors is added to sphere and each instance inherits color of corresponding face it is instanced from.

Conversion to particles specifics: points are converted to triangle mesh object, vertex colors are baked to texture, particle system is added to mesh with one particle on each face, extra instanced sphere added as child object of main mesh and particle system is set to render that sphere, material using baked colors is added to sphere and each instance inherits color of corresponding face it emit from. Result is regular particle system which can be further edited, e.g. instance mesh changed, physics added etc.

Point Cloud Visualizer

Generate

Generate point cloud from mesh (or object convertible to mesh). To store point cloud, use Export to save as ply file.

Point Cloud Visualizer

Point Cloud Visualizer

Point Cloud Visualizer Point Cloud Visualizer

Point Cloud Visualizer Point Cloud Visualizer

When Source is Particles, for generating colors (apart from Constant color), non-overlapping UV layout is required (can be really bad, useless for real production).

Export

Export current point cloud as binary ply file with several options. If exporting modified (filtered) points, check Use Viewport Points, otherwise you will not get modified points. If exporting viewport points colors may slightly differ. Transformation and axis conversion can be applied on both loaded and viewport points.

Point Cloud Visualizer

Sequence

Load sequence of ply files to play in viewport. Load first frame as regular file and when Preload Sequence is clicked it tries to load all ply files matching selected ply filename, e.g. you select sequence-001.ply and all sequence-###.ply will be loaded from directory. Only last number in filename is considered. Numbers should start at 1. All other features works when animation is not playing, but all changes are lost when you change frame to another.

Point Cloud Visualizer

External API

To display point cloud data from other addons/custom scripts.

import bpy
import numpy as np
from space_view3d_point_cloud_visualizer import PCVControl
o = bpy.context.active_object
c = PCVControl(o)
n = 100
vs = np.random.normal(0, 2, (n, 3))
ns = np.array([[0.0, 0.0, 1.0]] * n)
cs = np.random.random((n, 3))
# draw points
c.draw(vs, ns, cs)
# if some data like normals/colors are not available
c.draw(vs, None, None)
c.draw(vs, [], [])
c.draw(vs)
# it is also possible to pass nothing in which case nothing is drawn
c.draw()
# to stop any drawing
c.erase()
# to return object control to user
c.reset()

Addon Preferences:

Point Cloud Visualizer

Changelog:

Known bugs:

BlenderArtist.org thread


Color Management Presets (for blender 2.80)

Presets support for Render > Color Management panel, nothing more, nothing less.. Comes with a few presets i use which are created upon activation.

Color Management Presets


Tube UV Unwrap (for blender 2.80)

UV unwrap tube-like meshes (all quads, no caps, fixed number of vertices in each ring)

Tube UV Unwrap

notes:

usage:

  1. tab to Edit mode
  2. select part of mesh you want to unwrap, tube type explained above
  3. make sure your selection has boundaries and there is an active vertex on one border of selection
  4. hit "U" and select "Tube UV Unwrap"
  5. optionally check/uncheck 'Mark Seams' or 'Flip' in operator properties

changelog:

BlenderArtist.org thread


Fast Wavefront^2 (for blender 2.80)

Import/Export single mesh as Wavefront OBJ. Fast. Now with Cython. Binaries not included.

Only active mesh is exported. Only single mesh is expected on import. Supported obj features: UVs, normals, vertex colors using MRGB format (ZBrush) or 'Extended' format (import only) where vertex is defined as (x,y,z,r,g,b).

Fast Wavefront^2

changelog:

installation on mac (win/linux should be similar) and blender 2.83.6 assuming you have blender in /Applications/Blender.app:

get pip and install cython using pip

<pre>cd /Applications/Blender.app/Contents/Resources/2.83/python/bin/ ./python3.7m -m ensurepip ./python3.7m -m pip install -U pip ./pip3 install cython</pre>

clone blender source

<pre>cd ~/Library/Application Support/Blender/2.83/scripts/addons/io_mesh_fast_obj git clone git://git.blender.org/blender.git cd blender git checkout v2.83.6</pre>

build cython extension

<pre>/Applications/Blender.app/Contents/Resources/2.83/python/bin/python3.7m setup.py build_ext --inplace</pre>

Import Agisoft PhotoScan Cameras

Import cameras from Agisoft PhotoScan xml. Works with xml version 1.4.0 which is exported from PhotoScan 1.4.x versions and xml versions 1.5.0 from Agisoft Metashape 1.5.x versions. If you want to have images actually aligned with model, undistort images first. This is done in PhotoScan by Export > Undistort Photos... Because you can't in Blender set resolution for cameras independently, xml with different cameras or image resolutions might not work well.

Import Agisoft PhotoScan Cameras

usage:

  1. go to Properties > Scene > Import Agisoft PhotoScan Cameras panel
  2. Cameras XML: set path to xml
  3. set import options:
    • Camera Display Size: size of imported cameras in viewport
    • Load Camera Images: load images or not
    • Images Directory: path to directory with undistorted images
    • Image Extension: images extension, they all should be the same (currently)
    • Alpha: camera image alpha, 0.0 - 1.0
    • Depth: camera display depth, front / back
  4. there are some more optional properties:
    • Create Chunk Region Borders
    • Align to Active Object: if you import mesh from PhotoScan first, the transform it to correct size and orientation, this option will copy transformation from that mesh if it is active
  5. hit Import
  6. import done..
  7. now you can quickly swap cameras in alphabetical order in PhotoScan Cameras Utilities panel

changelog:

BlenderArtist.org thread


Carbon Tools

Ever-evolving set of small tools, workflows and shortcuts focused mainly on processing photogrammetry scans.

Carbon Tools

Subtools

Dyntopo

Texture Paint

IO

End

Utilities

Conversions

changelog:


Time Tracker (for blender 2.80)

Simple time tracker inside blender. After you install and enable it, it will log loaded and saved files and time spent of file until it is saved. All ui is inside addon preferences.

Time Tracker

Here you can enable / disable logging, clear data collected so far, set custom data path (.csv) and see short summary of collected data and open individual project directories in file browser. The project name is determined by directory name where the blend is. For example if you have project in directory named "MyNewOutstandingProject" and all blends are inside subdirectory "models", set level number to 1 and you will see project name in results. 0 is directory directly above blend, 1 is one directory above blend, and so on. If you are like me and all your projects have the same subdirectory structure, sent directory level and you are good to go.

changelog:

BlenderArtist.org thread