This project demonstrates the use of Euclideon Vault developer Kit (Vault SDK) with the Unity Real Time Development Platform.
Language: C# Type: Integration Contributor: Euclideon Vault Development Team <firstname.lastname@example.org> Organization: Euclideon, https://euclideon.com/vault Date: 2020-02-03 Vault SDK Version: 0.6.0 Toolsets: Requires Unity >= 2019.3.4f1
The UnityVDK requires a valid license for Euclideon Vault SDK, trial licenses can be obtained here The VDK is tested with Unity 2019.3.4f1 - it may work in other versions of Unity, but we can’t guarentee that it does. Please sneure you have Unity 2019.3.4f1 installed.
Installation - New or Existing Project
The fastest way to install VDK for Unity is to go here and follow the onscreen instructions.
Installation - Github Samples
- Download and extract Vault SDK 0.5.0 package from here using your license credentials (if you do not have one, free trials are available from here )
- Clone or Download the Unity Vault SDK examples from here
- Copy the files from Euclideon_vdk0.6.0/lib/(your operating system here)/ to _vaultsdksamples/integrations/unity-csharp/Assets/VDK
- Open the Vault SDK Unity example project by navigating to _vaultsdksamples/integrations/unity-csharp/Assets/Scenes and opening SampleScene
- From the Toolbar, Navigate to VDK > Set User Info - and enter your VaultSDK username/password, then press Save User Info.
VaultSDK with Unity is now ready to go! Press play!
Changing UDS model
The UDS can be changed by modifying the path attribute of the Model object in the project hierarchy (by default on the left of the screen) using the inspector (by default on the right)
There is a UDS model included with this example for demonstration purposes, paths to your own model can be pasted into the path field of the US model object UDS file format developed by Euclideon allowing streamable, unlimited sized 3D datasets requiring only low spec hardware.
Models can be created from most common photogrammetry and LiDAR point clouds file formats using Euclideon Vault Client available Here your vault SDK trial license also gives you access to vault client during your trial period. You can read about the conversion process here if you have any questions check the support knowledge base or email email@example.com
Photogrammetry model of the Gold Coast courtesy of Aerometrex
This is an example demonstrating how to use Vault SDK with Unity, it includes a minimalist example of a flight camera and an attached collider. Unlimited detail rendering is implemented as a postprocessing effect that can be applied to cameras in order to display UDS objects.
Sample Scene Structure
The main view used in the example. It has a flight camera script attached to it to enable user interation. Of importance to this object is the implemented post process layer and volume properties which must be included for the camera to view UDS files.
Each of UDS to be loaded in unity is represented as a one of these models.
This file contains the login logic for the unity example, including login credentials. GlobalVDKContext contains a
vdkContext for managing licensing
and login information between objects, and a
vdkRenderContext, enabling the rendering of and caching the UDS model information
VDKPPES.cs contains the implemention of Vault SDK in Unity as a post processing effect. The associated shader is
This object demonstrates how to achieve physical collisions between Euclideon UDS models and native Unity colliders. Because of the potential scale of UDS objects it is not practical to construct mesh colliders of UDS objects (espeially if these objects are being streamed externally)
The approach taken is to construct a mesh of the UDS object local to a point of interest (for example a player or the potential colliding object using information available from an instance of
Because the information contained in UDS files (especially unfiltered point clouds) can be noisy, we have included functionality to smooth the generated surfaces.
VDKCollider.cs contains the majority of the logic associated with the example collider system.
Because Unity does not allow collisions between a parent and child object, the collider cannot be a direct decendent of an object it is intended to collide with. Instead use the follow target parameter to keep the collider within an objects reference frame
The VDK Colider Script takes the following parameters:
Follow Target: If not none will set the transformation of the collider to match that of the target, useful for meshing locally around particular objects.
Threshold Follow: Determines the rate at which the location of the collider is updated, if true the location of the collider is updated only when the object is Follow Threshold distance from the watcher position
Watcher Pos: The location of the virtual camera in the local frame used to generate the collision mesh. Currently this should be set to 0.5*(ZNear-Zfar) in the direction the cameara is intended to look, this is to prevent unwanted clipping
width, height: the dimensions of the polygon ‘sheet’ draped over the UDS model in metres, smaller colliders will have a higher polygon density and therefore better collision accuracy at lower computational cost
Z Near, Z far: the locations of the near and far plane along the local z axis for the ‘watcher’ camera used to generate the collision polygon.
Width Pix, Height Pix: The number of pixels used to find the position of the vertices in the sheet. Currently this is equal to the number of vertices in the collision mesh. Smoother results may be obtained in future versions by oversampling around the vertex locations and averaging to eliminate noise. These values have a large impact on frame rate and should be kept as low as possible. Increasing these improves the accuracy of the produced collision mesh.
Laplacian Smoothing: This determines if smoothing should be applied to the collider, this has the effect of removing noise from laser scans at the cost of potentially removing ‘sharp’ features from the collision mesh.
Smoothing off (note the rougher ground surface due to sensor noise):
Smoothing on (note that tree branches are no longer captured by the collision model):
As the attached mesh is modified often by this script, baking options for the mesh collider should be turned off for performance reasons
As of Vault SDK 0.5.0 the licensing system may malfunction intermittently with multiple views active. This includes the views generated by vdkCollider instances. As a consequence rendering of may be interrupted during play for a short period after 5 minutes with the following exception:
Exception: vdkRenderContext.Render failed: vE_InvalidLicense Vault.vdkRenderContext.Render (Vault.vdkRenderView renderView, Vault.vdkRenderInstance pModels, System.Int32 modelCount) (at Assets/VDK/VaultAPI.cs:348)
This is expected to be fixed in future releases of Vault SDK, it can currently be avoided by using a single render view (i.e. no vdkColliders)
Unity/Euclideon Vault Integration for lagre scale point cloud visualization Unity/Euclideon Vault Integration for lagre scale point cloud visualization