Point Cloud object - Suggestions/Questions

Hi,

In light of the amazing point cloud efforts, I have a couple of questions / suggestions in regards to this.

1.Will we be able to load animated point clouds via Alembic like we currently do ? And then render them with a sphere/disk primitive directly in Cycles ?

2.Would it be possible to support a uniform scale attribute to control the overall scale of the points (spheres/disks at render time). In houdini we use the float attribute “pscale” to control the size at render time.

3.Will it be possible to support additional attributes stored on the points like velocity for motionblur and Cd for color ?

We’re sort of halfway between Mantra and Cycles at this stage, and point rendering, volume motion blur and motion blur from velocity attributes are our last missing pieces.

Have there been any discussion about these topics ?

Thanks! :slight_smile:

2 Likes

Hello, I take the liberty to answer on this topic, not having found the devtalk corresponding to what is currently in development here : https://developer.blender.org/T75717

I also have some questions about the new type of point cloud object.

The main advantage of the point cloud is that it remains light enough, that it allows parallel processing of large volumes of data, and that it is often used following photogrammetric captures, and allow to realize the accuracy of the model, and the disparities in accuracy that there are.

Currently here is a small inventory of what exists on blender or elsewhere to make videos using point cloud rendering:

  • There is this addon that allows you to load a point cloud https://github.com/uhlik/bpy#point-cloud-visualizer-for-blender-280 to convert it into an object, apply simple boolean editions, and simple editions, and give a hdri type light but without dynamic light or shadow control.
    The current limits will mainly be the number of points (lag a lot on my machine past 25M points) as well as the possibility of modifying the cloud and lack of integration with the rest of blender pipeline.

  • Still in open source, the other method of cloud point rendering, which this time supports clouds with billions of points, is cloudcompare. This software is very powerful and allows as meshlab a lot of mathematical operations to process point clouds. It also has a plugin to output image sequences. Its main flaw is the lack of updates and the rudimentary and non-user-friendliness. Animating a point cloud remains quite complex.

  • Another very well known open source rendering engine that runs on the web is potree, it allows to fluidly load clouds of several billion points without flinching, it allows the client to stream data procedurally, it has several cutbox tools and it is even VR compatible. Its disadvantage is that it is a visualization tool and not a rendering tool, it does not allow to transform clouds or to animate them.
    I could quote sketchfab which also has a point cloud rendering, but it remains for very small models and only allows visualization.

  • Finally the last rendering engine I have to my knowledge but which is unfortunately not 100% open source and free, is the Lidar point cloud of unreal engine (originally a plugin, but now supported by epic games) It is still under development and does not have all the features of ready, but still allows you to make videos (via ue4 animation tools) on a cloud of several billion points (fast imported) and the best thing about it is that it is compatible with all dynamic lighting from ue4 (drop shadows, volumetric, emission) all materials are compatible. Despite its young age, it remains the most complete tool.

So here are the few tools that seem to me the most used in static point cloud rendering, for 4D clouds rendering (captured with kinect for example) I don’t know any universal modular pipelines (some create their own software, their own houdini or blender code, but nothing that would apply to everyone)
There is the blender plugin Stop motion obj https://github.com/neverhood311/Stop-motion-OBJ which allows to convert a ply or obj sequence into an animated mesh afterwards. This addon is good but has some limitations. I used it for example for this kinect rendering visible here : https://youtu.be/ZuzjzkTnv9s?t=141 it is however not well supported in blender and makes it difficult to integrate colors for example (here I used the skin modifier and I changed the scale on each object of the sequence via a script)

If I wanted to summarize what is currently being done is to clarify my expectations regarding the development of the blender point cloud object.

Ideally, an octree system that loads only what is within view and close to the camera or viewport would be the best way to optimize (e.g. limit the number of points to 10M for 60fps viewport, and switch to 200M or 500M for pre-calculated rendering with shadows that pass by cycles or eevee, as UE4 currently does.

I would like to be able to make such videos (moving points) https://www.youtube.com/watch?v=gfyuuo1LwCE&feature=youtu.be or a sequence of alembic or sequence of ply to render things like here : https://www.youtube.com/watch?v=8nTFjVm9sTQ

But with a real photogrammetry of many bilions of point (let’s say a 100m² object with a precision to 1mm) it is not possible in blender right now.

I hope the point cloud type in blender will allow things like :slight_smile:

  • Color from vertex color
  • Octree simplification
  • EEVEE or Cycles shadows and light interactions
  • EEVEE (and cycles compatible eevee) materials with world position (for color animation).
  • A way to move points (like particle simulation, or vector displace)
  • A way to have a sequence of point cloud (for 4D LiDAR recording for example)
  • Cutboxes or boolean, that can be animated.
  • Point size option (that can be changed using new geometry node or in shader) and point form (square or circle)
1 Like