Point Cloud Visualizer

Yep, that look similar to my needs, thanks ! Is it by default in the addon, or it is a new feature ?

thatā€™s new, i still need to finish some stuff, but will be in next alpha

Great news on the developement @carbon2. I canā€™t wait to try the new features.

Hi I am trying to use animation button in blender 3.01 and this pcy 2.0 alpha version and the plugin just renders the animation and overwrites on the same png file over and over againā€¦how do i fix this?

hi, i think you donā€™t have ### symbols in you output file path which are then swapped for frame number, it should look like this:

Screen Shot 2022-03-03 at 07.36.06

without ### it will always save into one file. number of # controls number of zero padded digits in frame number

This looks like banding artifacts from floating point precision error rather than skipped points. Are you sure your point cloud is close to world origin when you export it ? Blender and most other 3D softs donā€™t support very high coordinates.

interestingā€¦ probable, never dealt with large scale data. pcv uses single precision floats internally. gpu batch wonā€™t accept doubles anyway

Iā€™ve seen this happening when importing / exporting from softs like recap which iirc doesnā€™t support georeferenced point clouds very well. It was actually baked in the point locations so itā€™s not really a display problem. Cloudcompare for instance has a handy feature to move the PC close to world origin on import. Hereā€™s what it can look like if you choose not to :

And in PCV if you import the same PC and click on ā€œCenter View at Pointsā€

You can displace the PC close to world origin and apply transforms but it doesnā€™t solve the banding problem since afaict itā€™s baked in the point locations :

Hereā€™s how it should look like for reference :

It could be interesting to have the same feature on import if PCV detects that a PC location is very far from origin, to displace it. Hereā€™s how the popup looks like in CC :

If this is still of interest, I recently fixed Blenderā€™s PLY Importer to work specifically with MB3D. Details at New PLY Importer v2.0

hmm, should be possible, but i guess only when ply has doubles for locations instead of floats, ply with floats will be already wrong in file. i see threshold in cc is for locations 10 000 and diagonal (for scaling i guess) 1 000 000: https://github.com/CloudCompare/CloudCompare/blob/258a89c64dbe658499664650ef4699b7bbd66562/libs/qCC_io/src/ccGlobalShiftManager.cpp#L33

but i might not be able to preserve transformations and reapply on export, at least not automatically. maybe on user request to transform (translate and scale) points and use doubles in ply (binary only) for locations.

would you so kind and provide some test file? so i have some real world data to test on? some small crop would be enough

ps. and thanks for info! much appreciated

Yeah that seems about right ! I think destructively changing coordinates is not a problem so long as the values are readable / changeable by the user, they can always re-apply it later on export using other means.
Hereā€™s a sample file :

https://drive.google.com/file/d/1iPJxgYUJ5x0tFetcyv6xs2OMgsaSCv8g/view?usp=sharing

If you canā€™t access it Iā€™ll upload it to another file hosting service.

image

thanks!
alright, shift and scale upon loading (and i added it for both single/double float coordinates), now integrate it with the rest. some ui, some options for exportingā€¦ and las/laz, e57, etcā€¦ a lot of work :frowning:

1 Like

beautiful! that worked. Thank you so much!

1 Like

new version availableā€¦

1.999.8

All new Tools panel

Place 3D Cursor - places 3d cursor on point under mouse click, cpu and gpu variants, cpu can also align cursor along point normal, gpu place is faster with large datasets (but you still need some extra free gpu memory), cpu is faster on smaller (approx. million and less, but depends on your processing power)

cursor

Box Select - select points with box selection, add and subtract, (de)select all, invert selection, remove selected points

box

Lasso Select - select points with lasso selection, add and subtract, (de)select all, invert selection, remove selected points

lasso

Circle Select - select points with circle selection, add and subtract, (de)select all, invert selection, remove selected points

circle

X-Ray Shader

xray

New option in Load panel: Prevent Floating Point Precision Errors - Attempt to prevent floating point precision errors by scaling and moving points to fit <1.0e6 diagonal and <1.0e4 center coordinate. Original scale and location could be optionally restored when points are exported back to PLY using Apply Inverse Shift And Scale option in Export panel. This works for loading PLY, importing ASCII (it have effect if there are enough decimal places), LAS/LAZ, PCD and E57 (when using pye57, pymeshlab seems to do its own correction that canā€™t be restored back). If correction took place, Shift and Scale values in Load panel are not 0.0, 0.0, 0.0 and 1.0, 1.0, 1.0.

aaand fixed render error when Depth Sort is used together with render passes

2 Likes

quick note, blender 3.1 have bundled python 3.10, so while PCV works, 3rd party libraries might not. i am sure it will be case of Open3D (no py3.10 wheel, and no signs it will be available soon), maybe others as well. will test everything. on side note, why the rush with bumping python versions in blender lately? no ideaā€¦

another thing is, stable blender 3.1 build have again disabled new native pointcloud object type, so conversion to it will fail. but blender 3.2 alpha have it enabled, so if you want render in cycles, use that.

i will check all in blender 3.1 and update installation notes

1 Like

I have to say I am impressed by the possibilities the geometry nodes workflow opens up.
Having true ambient occlusion in the shader editor is awesome. Weā€™re getting really close to a seamless experience in bringing other models in the PC.




Also, Geometry Nodes !


For reference this point cloud has 10M points. I think thatā€™s the limit for working comfortably on my mid range computer. The only thing I have trouble with is working with more data. I often have 100M+ datasets and I just donā€™t see it loading in Blender. The conversion time is I think exponentially longer the more points there is to load.

@carbon2 do you reckon this is a hard limit and it canā€™t be pushed with more optimization or maybe we can dream of working with 100M+ native PCs at one point ? I have hope because the native PC is at its infancy and already pretty impressive.

Also I agree on the python version jumps, I donā€™t like having to manage several versions of Blender and addons because some modules have not and may not ever be updated to the latest python versionā€¦ But there are a lot of people still using 2.79 for a variety of reasons so I guess thatā€™s a drawback of pushing new features.

there is one catch in conversion to geometry nodes. to colorize mesh instances they need to be merged into one big mesh then vertex colors are created by vertex index manipulation. i donā€™t know any other way to colorize instances directly. so i guess that is huge performance bottleneck.

on the other hand, there is native point cloud object type. but it is enabled only in alpha blender builds (from my experience, donā€™t know specific reason for it), geometry nodes works on it too, i use it to set point radius. and it can be rendered in cycles (from blender 3.1) as spheres. i suggest you to give a try. download blender 3.2 alpha, load points to PCV and in Convert panel choose Native Point Cloud type

Yeah sorry I noticed that wasnā€™t very clear in my post, but it is actually a native point cloud displayed in the latest 3.2 alpha build using the latest version of PCV too. I did notice magnitudes improvements in loading times between regular mesh and native point cloud. This conversion took about 1-2 minutes. Iā€™m impressed by the responsiveness and the seamless integration with the shader system and geometry nodes workflow !

I just dream of being able to load 100M+ PCs instead of 10M like I did in my previous post on a regular desktop computer. But I guess itā€™s just about solving one bottleneck after another :slight_smile:

The reason they didnā€™t ship it with 3.1 is because if a feature is not complete when a release candidate is chosen, itā€™s removed from the build and postponed to the next version. They did the same thing with the extended asset browser types. And the native point cloud type is not yet feature complete so itā€™s not officially released.

ah ok, i consider native point cloud best option for conversion to blender data and rendering, soo, thatā€™s that.

yeah i know, even then it is still hidden under experimental in preferences. geonodes can generate points if you want to, so part of it is already thereā€¦

small update this timeā€¦

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
2 Likes