Tarsier
(by camnewnham)
A point cloud and 3D scanning library for Grasshopper.
Support Email

This library's primary purpose is to add the point cloud functionality already apparent in Rhinoceros 5 to Grasshopper, with the ambition of treating point clouds as another useful data type, rather than an exotic type.

It's secondary purpose is to provide tools for creation and streaming of point clouds with common scanning techniques (Kinect V1, V2 and OpenNI2). This is made possible due to the speed increases afforded by the use of the point cloud class. For example, a full point cloud from a Kinect V2 is released in approximately 10-20ms on standard machines, which is more than enough for most purposes. A multi-threaded KD-Tree is also implemented to allow very fast spatial searching.

The source code, licensing information and full package for this project is available at https://bitbucket.org/camnewnham/tarsier. Contributions and suggestions are welcome.

Alternatives

  • Firefly offers an extensive suite of tools dealing with vision and image processing, including Kinect streaming. However, in some cases interpreting the stream as a point cloud is more useful (and often faster!).
  • Volvox offers an extensive suite of tools dealing with Point Clouds, and if conventional use is your ambition it is very fully featured and highly recommended. I am open to suggestions on how these might better work together.

There are some notes about interoprability on the Wiki: https://bitbucket.org/camnewnham/tarsier/wiki/Interoperability

The currently included components are:

Creation

  • Construct Point Cloud: Points, Colours and Normals to Point Cloud.
  • Deconstruct Point Cloud: Point Cloud to Points, Colours and Normals.
  • Fill Box: Crudely but quickly generates a point cloud in a box.
  • Fill Mesh: Brute force to fill a mesh with a point cloud.
  • Populate Mesh: Crudely but quickly populates the surface of a mesh with a point cloud.
  • Random Vectors: Generates vectors in random directions.

Display

  • Preview Point Cloud: Previews a point cloud with an arbitrary point size.

Modify

  • Clip Point Cloud: Uses a box to clip (contain) the point cloud.
  • Filter Point Cloud: Removes part of the point cloud based on colour value.
  • Merge Point Cloud: Joins multiple point clouds into one.
  • Point Cloud Subset: Extracts a subset of the point cloud by indices.
  • Voxelize Point Cloud: A persistent decay grid for rationalizing and reducing point clouds. Each component update is one tick.

Searching

  • Construct KDTree: Constructs a KD-Tree.
  • Sample KDTree: Uses Multi-threading to sample a KD-Tree (nearest-neighbours search).
  • Field of Vision: Reduces a list of points to only contain those within a specified angle of a normal vector.

Tarsier Vision

  • Kinect 1 Depth Reader: Streams (colour) point cloud data from a Kinect V1.
  • Kinect 2 Depth Reader: Streams (colour) point cloud data from a Kinect V2.
  • OpenNI2 Depth Reader: Streams point cloud data from an OpenNI device.