There is a point cloud vidualizer for Blender - uhlik/bpy. You can follow along with this short youtube tutorial.

However, I received errors when tring to render the pointcloud in Blender-2.91. Apparently, only paid version from blendermarket is supported.

Dirty way to render a pointcloud - use a Python script to place spheres. Simply run a script (Shift-F11), then the spheres can be rendered as usual.

Warning: it is slow. Let me know what goes wrong here and how to improve it.

### Code

import bpy
import bmesh
import mathutils
import numpy as np
import sys

mymesh = bpy.data.meshes.new('PointCloud')
myobj  = bpy.data.objects.new('PointCloud', mymesh)
bpy.context.view_layer.objects.active = myobj

filepath = "/folder/bunny_pointcloud.txt" # path to your data file.
scale = 25 # scaling the point cloud

with open(filepath, "r") as f:

print(data.shape)

bm = bmesh.new()

# this cycle will take time, progress is reported in the console
for i in range(data.shape[0]):
point = data[i,:3]
mat = mathutils.Matrix.Translation(point*scale) # setting the translation matrix
# creating a sphere in the origin, moving it by translation matrix
mesh = bmesh.ops.create_uvsphere(bm, u_segments=12, v_segments=12,
diameter=0.04, matrix=mat )
# progress console output
msg = f"point {i} of {data.shape[0]-1}"
sys.stdout.write(msg + chr(8) * len(msg))
sys.stdout.flush()

bm.to_mesh(mymesh)
bm.free()

sys.stdout.write("DONE" + " "*len(msg)+"\n")
sys.stdout.flush()


### Input

Input is similar to the usual ply or obj format, except that we only leave vertices locations. For example:

-0.0369122 0.127512 0.00276757 0.850855 0.5
-0.0457707 0.130327 0.00306785 0.900159 0.5
-0.0708847 0.149834 0.0388672 0.398443 0.5
-0.00331557 0.130403 0.0212208 0.85268 0.5
...