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
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:
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:
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:
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)