Velodyne Puck
The main purpose of this Prefab is to let the user work with a predefined lidar that exists on the market. This lidar is a mechanical 3D lidar. The term mechanical here means that it's a laser rotated by a dc motor. A 3D lidar is a lidar that scans on several planes with multiple beams.
Implementation details
Warning
This sensor has a node that uses DXR and will not function without a compatible graphics card. See requirements for more details.
This lidar samples the scene using path tracing. The initial position (0 degree) of the lidar is toward the negative Z axis. The rays orientation is interpolated using the previous rotation and the current rotation. This interpolation is driven by the sampling rate. The heuristic in the shader assumes the photosensor will rotate on itself.
When the scene is sampled, the photosensor rotates on itself but everything else is static (including the photosensor position). To avoid having too many samples sampling a static scene, it's important to keep the simulation update time (dt) as small as possible.
Inputs
The specifications of the device are defined with hardcoded parameters. If one wants to change this, it is recommended to parametrize Generic 3D Lidar instead.
Outputs
Output | Description |
---|---|
PointCloud | A render texture with the (x, y, z) position for each pixel. The lidar frame is spread from left to right in the texture. To know the point count, one can look at the count value in this structure. |
Intensity | A corresponding render texture with the perceived intensity for each pixel. |
OutTranscode | Provides a context for executing sampling custom passes, which then passes through the GPU processing pipeline. |
Note
The VelodynePhotosensorToPointCloud node outputs two point clouds: one that follows Unity's convention, and one that follows Velodyne's suggested convention (right-handed system with Y axis pointing forward and Z axis pointing up). The Prefab provides outputs using Unity's convention.