Immersive Visualization / IQ-Station Wiki

This site hosts information on virtual reality systems that are geared toward scientific visualization, and as such often toward VR on Linux-based systems. Thus, pages here cover various software (and sometimes hardware) technologies that enable virtual reality operation on Linux.

The original IQ-station effort was to create low-cost (for the time) VR systems making use of 3DTV displays to produce CAVE/Fishtank-style VR displays. That effort pre-dated the rise of the consumer HMD VR systems, however, the realm of midrange-cost large-fishtank systems is still important, and has transitioned from 3DTV-based systems to short-throw projectors.

LidarViewer

From IQ-Station Wiki
Revision as of 16:34, 30 January 2025 by WSherman (talk | contribs) (Initial page describing the LidarViewer (and LidarPreprocessor) Vrui point-cloud rendering tool)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

LidarViewer is a virtual reality point-cloud rendering tool written using the Vrui VR integration library. Oliver Kreylos wrote this as part of his visualization suite for the UC-Davis Geology Department, where it was first deployed in the UC-Davis KECK-Cave (a 4-sided CAVE installation).

While it is called "LidarViewer", it can handle point-clouds generated by any means, including photogrammetry.

Software

The LidarViewer tool is available at ...

Rendering a point-cloud

As the "LidarViewer" tools makes use of an Oct-tree (octree) structure to determine how best to render a point-cloud, this structure must be pre-generated by the "LidarPreprocessor" tool. The "LidarPreprocessor" takes point-cloud data from a number of different comment formats, creates the Oct-tree, and writes the results into a directory with specific files, including an Oct-tree index file. When using "LidarViewer", point-cloud datasets (can be more than one) are specified by providing the name of the directory(s) created by "LidarPreprocessor".

For example, if one has point cloud data in space-separated ASCII columns (SSV), and this data has color (R,G,B) values for each point, one might do:

% LidarPreprocessor -np 4096 -o myRoom.LiDAR -xyzrgb myRoomPoints.txt
% LidarViewer myRoom.LiDAR

LidarPreprocessor

Before running "LidarViewer" one must process existing data into the oct-tree format that enables "LidarViewer" to efficiently render the scene. The "LidarPreprocessor" tool is how point-cloud data is processed into the efficient oct-tree format required by "LidarViewer"

LidarPreprocessor Command-Line Arguments

There are a handful of command line options that are used to load data into the pre-processor:

LidarViewer command line options
Option Affect
-np <integer> Maximum number of points per node.
-header <integer> Number of header-lines in the input file — i.e. the number of lines to skip before reading actual data.
-o <directory-name> The name of a directory into which to write the Oct-tree formatted data.
-c <red> <green> <blue> Color-scaling values to apply to the data.
input file data See below for separate chart of the available input types and their parameters.

Datafile formats

Several types of datafiles are accepted for the LidarPreprocessor <filename> arguments:

LidarPreprocessor input file types
Extension Type
-bin binary x,y,z,i tuple format
-binrgb binary x,y,z,r,g,b tuple format
-las 16-bit data per voxel
-ascii <X> <Y> <Z> <I> Give the column numbers in which to find the x,y,z,i values
-csv <X> <Y> <Z> <I> Give the column numbers in which to find the x,y,z,i — where columns are separated by commas
-asciirgb Give the column numbers in which to find the x,y,z,r,g,b values
-csvrgb Give the column numbers in which to find the x,y,z,r,g,b values — where columns are separated by commas
-xyzi shorthand for "-ascii 0 1 2 3"
-xyzrgb shorthand for "-ascii 0 1 2 3 4 5"

LidarViewer

LidarView Command-Line Arguments

LidarViewer has a handful of command line options that are used to load data into the application:

LidarViewer command line options
Option Affect
-loadView <filename> Jump to a specific viewpoint (and scale-size) as stored in the given file.
-memoryCacheSize <megabytes> Set the amount of memory for caching data
-graphicsCacheSize <megabytes> Set the amount of memory on the GPU for caching data (best if larger than "memoryCacheSize"
-renderQuality <float-scalar> Set the render quality value (1.0 is "normal"). Can also be adjusted in-app.
-focusAndContextWeight <float-scalar> (not sure)
-pointSize <float-scalar> Set the initial size at which points will be rendered. (Not sure of the units). Can also be adjusted in-app.
-enableLighting Sets the initial state of in-scene lighting to "true". Can also be adjusted in-app.
-usePointColors Sets the initial state of point rendering to use the value of the point. Can also be adjusted in-app.
-sceneGraph <filename> Load the given scene-graph file into the application
-rootSection <config-section> The Vrui option used to select a particular configuration

LidarViewer run-time controls

(To be added)

See Also

Here are some other resources for the LidarViewer tool: (To be added)