1 of 20

FastPoints: A State-of-the-Art Point Cloud Renderer for Unity

Elias Neuman-Donihue, Yuhao Zhu, Michael Jarvis

2 of 20

The Current State of Point Cloud Rendering

Used in a variety of contexts

Tools required to build point clouds more accessible than ever

Point clouds are becoming more and more popular

3 of 20

The Current State of Point Cloud Rendering

Point cloud rendering has received a lot of attention in the past few years

Large point clouds still pose a number of challenges

  • Have to be loaded dynamically from disk depending on viewpoint
  • Generating LOD takes a significant amount of time and/or requires external tools

Many modern renderers suffer from usability issues

4 of 20

A Usability Standard for Point Cloud Renderers

We define four criteria:

  1. Fully non-programmatic interface
  2. Integrable with standard mesh rendering pipelines
  3. Immediately interactive on unordered clouds
  4. Support for popular file formats (PLY, LAS, LAZ)

5 of 20

Existing Solutions

We apply our usability standard to three existing solutions for point cloud rendering:

  • Potree
  • BA_Pointcloud
  • CloudCompare

6 of 20

Existing Solutions - Potree

  • Fully non-programmatic interface
  • Integrable with standard mesh rendering pipelines
  • Immediately interactive on unordered clouds
  • Support for popular file formats

7 of 20

Existing Solutions - BA_PointCloud

  • Fully non-programmatic interface
  • Integrable with standard mesh rendering pipelines
  • Immediately interactive on unordered clouds
  • Support for popular file formats

8 of 20

Existing Solutions - CloudCompare

  • Fully non-programmatic interface
  • Integrable with standard mesh rendering pipelines
  • Immediately interactive on unordered clouds
  • Support for popular file formats

9 of 20

FastPoints

We introduce FastPoints, a new renderer, to meet our usability standard

An external plugin for the Unity game engine

Integrates preprocessing through PotreeConverter v2.0

Introduces novel program architecture to allow interactivity during preprocessing

10 of 20

FastPoints

  • Fully non-programmatic interface
  • Integrable with standard mesh rendering pipelines
  • Immediately interactive on unordered clouds
  • Support for popular file formats

11 of 20

FastPoints - Program Architecture

Asynchronous program architecture

Immediately downsample unordered cloud

Preprocessing performed online while downsampled point cloud is rendered

All preprocessing done on separate thread, allowing user to interact with Unity environment during this time

12 of 20

FastPoints - Program Architecture

13 of 20

FastPoints - Program Architecture

14 of 20

FastPoints - Implementation Details

Implemented with C# plugin and linked native C++ plugin

C++ side handles actual file processing, including decimation and interfacing with LAStools for file reading and conversion and PotreeConverter for octree construction

C# side handles Unity logic and rendering, takes over completely once preprocessing has completed and octree is ready for rendering

15 of 20

FastPoints - Results

Our architecture cuts down on waiting time significantly for even massive point clouds

16 of 20

FastPoints - Decimated Cloud

Exterior of decimated cloud

Interior of decimated cloud

17 of 20

FastPoints - Results

Decimated cloud of 1 million points

Full octree with point budget of 5 million points

18 of 20

FastPoints - Extensibility

Choosing Unity opens up a vast range of possibilities for extending FastPoints

Unity’s compute shader pipeline could be used to implement GPGPU optimizations

The modular nature of the architecture could allow either the octree construction step or rendering algorithm to be swapped out

19 of 20

Questions?

20 of 20

Thank you!