Chapter 18 | Point Cloud Integration


Point Cloud Data

Importing Point Cloud Files

Virtual Tutor: Go to help > point cloud > import to learn more about importing point clouds. 

In order to import your point cloud data into Virtual CRASH, you will need to export it to .pts, .xyz, or .txt file format (dxf point cloud importing is also possible). Virtual CRASH will accept point clouds generated from laser scanners, UAVs, and photogrammetry. To import your point cloud file, simply drag and drop your point cloud file icon into the Virtual CRASH workspace (see below). Note, the workflows illustrated below were conducted in a prior version of Virtual CRASH, but they also apply to Virtual CRASH 6.

One can also import your point cloud file by going to Project > Import (see below). Be sure to select your file type (for example, .pts) from the file type drop down menu.

Once your file is selected, an import dialogue box will appear (see below). Left-click on the input options buttons to access the various pulldown menus. To start, left-click on the “output” button and select “point cloud” as the file type (red box below) from the dropdown menu. You will need to specify the file format of your point cloud file, either (x y z), (x y z red blue green), (x y z a red green blue), or (x y z nx ny nz), where “a” is the intensity or scalar field value depending on what device is used to create the point cloud. Note, comma separated formats are not yet supported.

Below, we see an example point cloud from a scanner.

Below are a few lines of the corresponding (x y z a red blue green) file defining the above displayed point cloud.

Here we see an example point cloud based on drone data.

Below are a few lines of the corresponding (x y z red blue green) file defining the above displayed point cloud.

Once you import or drag-and-drop your point cloud file into your scene, simply left-click on the “file format” button and select the appropriate format from the dropdown menu. Colors may be either in 8 bit format (integers from 0 to 255), or normalized color (real numbers from 0 to 1). By default the (x  y  z  red  blue  green) with 8 bit colors option is assumed by Virtual CRASH (“file format: x y z r g b – color(0-255)”). You can select the units used for your file as well by left-clicking on “source unit” and selecting the needed units from the dropdown menu. You can flip the x, y, and z axes by left-clicking on the appropriate checkboxes. Note, by default, the maximum memory allocation used to display your point cloud dataset will be 256 MB per point cloud. This default setting may result in your point cloud sample appearing sparse due to the limited amount of memory being used for your point cloud data. To increase the memory allocation for your dataset, and therefore density of points, simply left-click on the “select max. memory” button and increase the memory allocation to a larger value using the dropdown menu. A maximum of 768 MB is allowed for Virtual CRASH and “unlimited” is allowed for Virtual CRSH 5. When you’re finished making your selections, press “OK.” You will then see your point cloud data load. You can import multiple point cloud files in the same manner with Virtual CRASH.

Once your data is imported, left-click on the point cloud object in the left side control panel to reveal its property menus in the left-side control panel. In the display menu, you can set the point size, point spacing, and point density (“max. points”) (see below). By default, the points are imported at the size of 5.  

As with most objects in Virtual CRASH, the point cloud objects can be translated and rotated interactively with the mouse cursor, or by modifying the position-local and rotation-local properties in the left-side control panel.

Virtual CRASH gives one the ability to control the point display size when rendering still frames or animations specifically in Direct Light or Skylight mode. This is controlled in the “render” menu in the left-side control panel (see below).

 

Selecting volume of point cloud data

Virtual Tutor: Go to help > point cloud > section to learn more about using the point selection tool on point clouds.

To select a specific volume of points, use the selection tool (see below).

Adjust the bounding box (light blue box above) until you enclose the desired points. The bounding box can be resized, translated, and rotated. Next, press “reload.” Virtual CRASH will reload your point cloud data, only displaying the points within the specified volume. Note, Virtual CRASH will not discard the unselected points. You can readjust the selection volume at any time and reload your data again if needed.

If the “Section” tool is used when the original point cloud file has moved or no longer exists at same location on hard drive, Virtual CRASH will now open the file menu for the user to select the original point cloud file from its new location. Note, when using the “Section” tool, the user should go to the misc menu to re-select the preferred maximum memory allocation. When sharing a project file, users may also want to share the original point cloud file as well, as only displayed points at the time of saving are stored in the project file.

 

The Easy Surface Builder tool

Virtual Tutor: Go to help > point cloud > surface to learn more about using the Easy Surface Builder tool.

You can quickly and easily fit a surface mesh to your point cloud data by using the Easy Surface Builder tool. With the point cloud object selected, select “Plane” in the select type pull down menu (see below).

Next, translate and rotate the Easy Surface Builder plane object to the desired location. Adjust the bounding box dimensions using the translation grips to fine tune the volume of points to be used by the Easy Surface Builder (see below). In this example, there were points created because of the power lines which are filtered out by reducing the height of the bounding box.

Right-click on the surface mesh to reveal the Easy Surface Builder tool options. The surface builder partitions up the point cloud data into a grid and samples the local z positions of the points within each grid cell (see below).

The “function” option allows one to choose between the minimum local z, maximum local z, or average z position within each grid cell. A surface mesh vertex is then created at this z position for the given cell location. All such vertices are then connected via the polygon mesh. Using the average option is a great way to deal with fluctuations in point cloud z position along known flat surfaces such as road surfaces. These fluctuations are commonly observed in UAV-based point clouds. The z variation about the road’s flat surface is shown below. Here the average z position is indicated by the surface mesh visualized edge-on.

One can further accommodate fluctuations by using the “smooth” feature.  The “length segs” and “width segs” options allow one to specify the granularity of the sampling space. You can limit the maximum polygon edge size using the “max. edge length” parameter. Holes due to missing data can be filled using the “cap radius” parameter, which controls the search radius for a nearest neighboring point from which to sample height. Colors from the point cloud are sampled to provide a texture map for the mesh surface. The texture map’s level of detail can be tuned using the “texture size” and “texture-cap radius” options. Like “cap radius”, the “texture-cap” radius feature will sample from the nearest neighboring point within the search radius when no data is available for a given grid cell. 


Note, the local z-axis of the Easy Surface Builder can be rotated to any orientation by using the rotation grips (see below). This can be useful for creating meshes for roof structures, walls, and other surfaces. 

When you are satisfied with your settings, simply press the “create” button in the plane menu in the left-side control panel. This will then create a new mesh object.

Note, if the “remove points” option is enabled, all points used to create the surface mesh will be removed from the point cloud. This is useful in cases where you may not want the z variability of the point cloud visible in your final rendering.

As with any wireframe mesh object, simply go to Create > Physics > Make Unyielding / Terrain from Selection to convert your mesh into a terrain object (see below).

You can now simulate vehicles directly on top of the mesh.

 

Integration with Orthomosaic Imagery from Photogrammetry

See this blog post to learn how to import and automatically align point cloud data with orthomosaic imagery from photogrammetry.




© 2024 Virtual CRASH, LLC. All Rights Reserved