# Point Clouds and Blender

Points are treated as the vertices of a mesh, this allows them to be manipulated point clouds as if they were any other object inside Blender - conversely, this means that they cannot be rendered properly without some physicality first.&#x20;

This page is not a guide for Blender, instead it introduces a base workflow for working with Point Clouds in Blender.

***

## Importing

It is recommended to process all of your point clouds in a dedicated point cloud processing software like CloudCompare first.

**Point clouds are to be in a .ply format.**\
The .ply file format is a standard static 3d data - i.e. static textured objects.\
Point clouds are represented as geometric vertex data, with vertex attributes that represents the scalar field attributes.

Drag and drop or import via the File menu.

***

## Editing

Use Edit Mode to edit point cloud objects as mesh vertices.\
Note that you have to be in vertex/point selection mode to interact with the data.

By default, selection in Blender only works for non-occluded objects, so to select-through, x-ray view must be toggled on.

<figure><img src="/files/ZmNcu2K95tUgGMfGCjZd" alt=""><figcaption></figcaption></figure>

***

## Physicality

As point clouds are the same as mesh vertices in Blender, they can be given physicality via geometry instancing using particle systems or Geometry Nodes.

This is an example of a Geometry Nodes setup to draw basic spheres at each vertex location using the [Mesh to Points ](https://docs.blender.org/manual/en/latest/modeling/geometry_nodes/mesh/operations/mesh_to_points.html)node. For all intents and purposes, these are mesh spheres, but technically this is an optimised point renderer.

<figure><img src="/files/NbPyMy75EwcmejIKs3rb" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Note that this setup only works for Blender's Cycles render engine; for EEVEE, you can instance geometry on the points using a [Instance on Points](https://docs.blender.org/manual/en/latest/modeling/geometry_nodes/instances/instance_on_points.html) workflow.
{% endhint %}

***

## Materiality

When instancing on vertices, these objects need a material to be re-applied.

Below is an example of the Shader setup and updated basic Geometry Nodes setup for rendering basic point colour.&#x20;

#### Shader

As the scalar field attributes of the point cloud are stored as vertex attributes, the shader uses an attribute node to pull out these properties. Note that the names are case sensitive.

<figure><img src="/files/cKU0qGCsBODHkpVcmzqC" alt=""><figcaption></figcaption></figure>

#### Geometry Nodes

Re-assign with Set Material, use the drop-down list to find your material.

<figure><img src="/files/1GW4S752iyEWuuGGpE60" alt=""><figcaption><p>Simple shaded shader with one sun.</p></figcaption></figure>

***

## Scalar Field Attributes

Use the spreadsheet view to view these attributes numerically:

<figure><img src="/files/O9f4AyAzZ0LTyjrmoLbm" alt=""><figcaption></figcaption></figure>

#### Shader

In the Shader, access other attributes the same way as colour, by specifying the corresponding attribute name.

<figure><img src="/files/2PyBI4Rvv49aeOpYskbU" alt=""><figcaption><p>You can use the colour in emission with a value over 1 to render the points with 'flat' shading, where the points will be mostly unaffected by other lights.</p></figcaption></figure>

**Geometry Nodes**

In Geometry Nodes, attributes can be accessed via the [Named Attribute](https://docs.blender.org/manual/en/latest/modeling/geometry_nodes/geometry/read/named_attribute.html) node; pick from the drop-down or enter the field manually (case-sensitive).

<figure><img src="/files/vVm5Ij4LKTCjeoKnrreJ" alt=""><figcaption><p>Viewer nodes can be used to preview data at any stage of the graph.</p></figcaption></figure>

***

## Rendering

Change the rendering engine to Cycles, and enable GPU if possible.

The scene can be set up as in a standard scene; camera, lights, other VFX; and render.

<figure><img src="/files/tBEmsiSRZVw7ISAjPQ6Q" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ms-kb.msd.unimelb.edu.au/next-lab/3d-scanning/guides/working-with-3d-scan-data/point-clouds-and-blender.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
