Tag Archives: render

POINT CLOUD RENDERING: Blender 3.1

Point clouds may be opened easily enough in Blender but they will not render out unless particular attributes have been assigned to the point cloud using Blender’s Geometry Nodes capability – essentially a real, renderable 3d primitive is located at each point.To import a point cloud the format must be PLY; either export from the point cloud software as PLY or use CloudCompare to open the point cloud and resave as PLY. This may also be a good opportunity to optimise the point cloud file with the CloudCompare Subsample tool – make it smaller; point clouds, particularly from laser scanners, can be very large and will cause performance issues even on high spec machines.

1. In Blender [3.1 or higher] in a new empty file select :

    FILE - IMPORT - Standford (.PLY)

and browse / select the point cloud file

In this example a relatively small file has been imported – this export is from the iPhone Lidar App EveryPoint (Pressing CTL-ALT-Q swaps it to 4 viewports of the point cloud).

If you do not want / do not have colours in your point cloud then you can skip step 2 and go straight to step 3

2. Change to the SHADING tab along the top and click NEW for a new material. Give this a name like PCMaterial.

Now some particular attributes need to be added: from the middle bar click

    ADD - INPUT - ATTRIBUTE

Drop this node to the left and in the name field call it Col – note, must be capital “C”

To the right of this add another node for the colour value:

    ADD - COLOR - HUE SATURATION 

And set the Saturation field to 2.

These nodes can now be linked by dragging from the input / output points. Drag Color to Color and Color to Base Color so the node arrangement looks like this:

3. Switch to the GEOMETRY NODES tab from the top of the screen and click NEW in the middle bar to create a base Group Input and Group Output.

Create 2 new instance nodes (if you drop these on the line they will automatically link up properly)

    ADD - INSTANCE - INSTANCE ON POINTS

and to the right

    ADD - INSTANCE - REALIZE INSTANCES

to end up with this layout:

Next will be another node that will define the real, renderable object that will be at the location of each point in the point cloud – for this example a cube.

    ADD - MESH PRIMITIVE - CUBE

Start with giving the cube the dimensions of 0.01 – these figures will likely need to be altered to fit whatever scale the point cloud is suited for.

Link the Mesh OUT to the Instance IN – but first note the following point:

This is where the point cloud will display as a proper renderable form – BUT it can take a long time depending on size of point cloud. Save first, close other applications, etc.

The rendererable point cloud will now show in the viewport (to speed up this view, or to eliminate viewing errors due to location of the light you can choose to view it as a simple solid form by clicking the solid circle icon, top right hand corner).

The X Y Z dimension of the cube in the cube node can be changed – and the model will update accordingly.

4. Finally the colour (if any) of the point cloud can be brought in by adding another node and linking to the material made in step 2:

    ADD - MATERIAL - SET MATERIAL

Drop this on the Mesh-to-Instance link line and in the bottom field type the name the material was given in the first step “PCMaterial”

Even if there was no colour info in the point cloud this node can be useful for assigning a material to it for colour / shininess / transparency etc.

NOTE: Material operations will only render properly with the Cycles renderer. Eevee render will render much more quickly – but it will be flat colours (which may be fine for mono point clouds).

Credits and thanks to Michael Prostka for YouTube guide and development of PLY import