3D ADAS Control Solution

Demand:
- ADAS visualization in the cockpit: Helps users intuitively receive information about their surroundings and ADAS decisions.
- Regulations: Lead to more ADAS components in future cars.
- Automated driving: Increases the need for ADAS visualization to inform drivers of car decisions and warnings.
- Growing demand: There is a rapid increase in demand for HMI visualization of ADAS systems.
The 3D ADAS Control Phase I consists of the following features:
- Adaptive Cruise Control (ACC)
- Lane Departure Detection (LDD)
- Blind Spot Detection
- Drowsiness Detection
- Collision Warning
- Traffic Sign Recognition

Start working with ADAS Control:
Open the solution “ADAS-3D-Control-Phase_I.sln” The ADAS control is used in the 3D ADAS Control scene.
ADAS Control Properties:
In the properties window of the 3D ADAS control, user can activate or deactivate ADAS features and adjust the properties of each feature separately. The following properties are available:
1. Main Car Position (Float type): Accepts values between 0 and 100. This property adjusts the Road texture u_OffsetU position to simulate the car moving along the X-axis. The main car remains static while the road texture moves left and right based on this value.
2. LDD (Boolean type): Activates Lane Departure Detection (LDD). This system uses cameras and sensors to detect when a vehicle is drifting out of its lane and alerts the driver with a visual warning. When LDD is activated in the ADAS control, the road mesh textures change based on the Car Main Position value.
3. Side Assist (Boolean type): Activates Blind Spot Detection (BSD). This system uses sensors to detect vehicles in the driver’s blind spot and alerts the driver with visual warnings. BSD is useful for changing lanes, merging, and overtaking. There are two attributes for Side Assist, one for the left side and one for the right side.
4. ACC (Boolean type): Activates Adaptive Cruise Control. This system uses radar and cameras to maintain a safe distance from the vehicle ahead and automatically adjusts the speed to keep a safe following distance. ACC is ideal for highway driving, reducing driver fatigue, and helping to prevent rear-end collisions caused by sudden braking.
5. Set ACC Distance (Float type): Allows the user to set a safe distance from the front vehicle, ranging from 1 to 4.
6. ACC Safe distance Indicator (Boolean type): Activates the rendering of a mesh with a dynamic texture to demonstrate the safe distance to the front vehicle.
7. Normal Lane Texture: Texture for normal road conditions.
8. Highlight Center Lane Texture: Optional texture for highlighting the center part of the road lane.
9. Left Red Lane Texture: Changes the left lane texture to red when LDD is on and the car crosses the left lane.
10. Right Red Lane Texture: Changes the right lane texture to red when LDD is on and the car crosses the right lane.
11. Left Yellow Lane Texture: Changes the left lane texture to yellow when LDD is on and the car is close to the left lane.
12. Right Yellow Lane Texture: Changes the right lane texture to yellow when LDD is on and the car is close to the right lane.
13. Motorcycle Default Model: Deactivates the rendering of the default motorcycle 3D model, allowing users to assign their own 3D models to the ADAS control anchors.
14. Minivan Default Model: Deactivates the rendering of the default minivan 3D model, allowing users to assign their own 3D models to the ADAS control anchors.
15. Car Default Model: Deactivates the rendering of the default car 3D model, allowing users to assign their own 3D models to the ADAS control anchors.
16. Car Speed (Float type): Sets the speed of the main car.
17. Car Minimum Speed (Float type): Sets the minimum speed of the main car.
18. Car Maximum Speed (Float type): Sets the maximum speed of the main car.
19. Forward Car Speed Value: Sets a target node in a 2D or 3D scene to receive the Car speed value.
20. Set ACC Speed Value (Float type): Changes the ACC speed.
21. ACC Minimum Speed (Float type): Sets the ACC minimum speed.
22. ACC Maximum Speed (Float type): Sets the ACC maximum speed.
23. Forward the ACC Speed value: Sets a target node in a 2D or 3D scene to receive the ACC speed value.
ADAS Control Anchors:
Users can import their 3D models as FBX or glTF files and attach them to the anchors to replace the default ADAS 3D models. For example, a user can import a new 3D mesh for the main car and make it a child of the MainCarAnchor, as shown in the screenshot below.

ADAS Control 3D models and textures:
Users can use the default vehicle 3D models (FBX files) as a bounding box and import them into DCC tools like 3Ds Max, Cinema 4D, Blender, etc., to create their 3D meshes at the same scale as the default models.
Textures can be exported from the solution explorer window or reimported with the same name and path to replace the existing ADAS control textures.
ADAS Control Data Source:
A simple data source is created for ADAS control based on the ADAS properties. Each property in the ADAS control is bound to the target data type. The data source is written in XML format and stored in a .xhcdl file. The file, PlayerDatabinding-ADAS.xhcdl, is included in the solution and can be extended by users based on their use cases.

ADAS Control details:
The ADAS control is created using behaviors and effects from the Toolbox window in the Scene Composer. Users can extend or remove parts of this control based on different use cases by double-clicking on the ADAS control in the solution explorer.

Additionally, there is a scene called 3D_ADAS_ExpandControlNode in the scenes folder, which provides an expanded version of the ADAS control.

2D_ADAS_TellTalesControl:
This 2D control includes telltales controls and text value. It triggers the rendering of 2D bitmap icons according to the ADAS control conditions, such as altering the Traffic Signs.
This control is optional and can be utilized alongside the 3D ADAS control in a 2D scene.
