Usage of 3D models in simulation-based development and testing of automated driving requires compliance with certain quality criteria. Scalable integration of the models within the heterogeneous applications of distributed simulation frameworks further requires usage of a common exchange format and standardization of node structures, transforms and coordinate frames. Standardization thus allows the harmonization of 3D model usage in simulation, animation and rendering, but also enables the shared use of the same models (e.g. residing in central repositories) across different applications.
Within the following paragraphs, a specification for vehicle models is drafted. Proposals concerning further model categories (e.g. other traffic participants, buildings, road infrastructure, environment) will be added in the future. Examples are provided in the objects subdirectory.
Examples are provided in the objects subdirectory.
The structure of 3D models representing road networks should reflect coordinate frames, structure and naming of the ASAM OpenDRIVE specification. Comprehensive information on this standard can be found on the corresponding ASAM OpenDRIVE project website. As an example, for OpenDRIVE 1.7, the required information can be obtained from the ASAM OpenDRIVE 1.7 User Guide.
The following specification describes properties and a proposed model structure for 3D vehicle models in real-time simulation usage. Models incorporating specific equipment configurations may be extended by switchable nodes (not specified here) to represent these.
Models shall be provided in the Khronos glTF 2.0 file format. Their creation process shall comply with the requirements defined in chapter 3. While all models shall incorporate both interior and exterior, the engine compartment and other non-visible parts and cavities shall not be modeled. Joints and gaps (comprising grills, vents, ducts, etc.) shall be backfilled to prevent light bleeding. For the same reason, the models’ underbodies and wheel-arches shall be modeled closed.
Anticipating the quality requirements for model creation defined in chapter 3.1, here, some major requirements for the corresponding meshes are outlined:
- Manual optimization (if required)
- Consistent normals
- Clean, optimized UV layout
- Tile-able textures
- Homogeneous distribution of vertices
- No gaps or holes
Model node structure shall comply with the structure presented in chapter 3.2. For external animation, the following transforms shall be implemented (see chapter 3.3):
- Wheels: Kinematical animation of steering, rolling, camber and suspension deflection
- Doors: Kinematical animation of opening/closing
- Trunk lid: Kinematical animation of opening/closing
- Lights: Positioning of external light sources
- Indicators: Positioning of external light sources
- Number plates: Positioning of number plate geometries/textures
- Sensors: Positioning of external sensor models
- Steering wheel: Kinematical animation of the steering movement
- Driver’s view: Positioning of external camera models in the driver’s eyepoint
The following quality requirements were designed to meet the requirements of real-time simulation. This implies traffic simulation (of up to 100 vehicles) at interactive frame rates (60Hz) on COTS (commercial off-the-shelf) hardware. In a balance of power, the quality of the scene shall be granted in a way that, from a camera distance of half a meter, no visual artifacts shall be observable at the model surfaces for a FullHD (1920 x 1080 px) rendering. In addition, the following recommendations concerning model quality requirements exist:
Requirement | Recommendation |
---|---|
File Format 3D Model | glTF 2.0 |
File Size 3D Model | < 100 Mb (including textures) |
Polygon Count | < 500.000k |
PBR Support | Metallic-Roughness |
File Format Textures | PNG, JPG |
Texture Resolution | 2048 x 2048 px |
Scene | Right-handed coordinate frame: +X pointing rightwards +Y pointing upwards -Z pointing forward from the origin (asset “front” oriented in +Z direction) |
The model node hierarchy shall be consistent in structure and naming. Thus, within the model creation process, the following principles shall be obeyed:
Parametrization of manufacturer, type, and release:
- $Type: Manufacturer_Type
- $Release: Release
Consistent, hierarchical structure:
- 1st level (top Level): Floor, separation of interior and exterior
- 2nd level: Separation of static/dynamic content
- 3rd level: Static and dynamic assemblies
- 4th level: Component classification based on dynamic behavior (e.g. brake caliper/wheel)
Uniform nomenclature:
- Snake_Case with capital letters at the beginning of each word
- Group prefix (Grp)
- Localization suffix
- Front-Left (FL)
- Front-Right (FR)
- Side-Left (SL)
- Side-Right (SR)
- Back-Left (BL)
- Back-Right (BR)
- Back-Center (BC)
- Front (F)
- Back (B)
Based on the given requirements, the following model structure shall be used (transforms are indicated by T):
$Type_$Release (T)
|-------Floor
|-------Grp_Exterior
| |-------Grp_Exterior_Static
| |-------Grp_Exterior_Dynamic
| |-------Grp_Wheel_FL (T)
| | |-------Grp_Wheel_FL_Steering
| | |-------Grp_Wheel_FL_Steering_Rotating (T)
| |-------Grp_Wheel_FR (T)
| | |-------Grp_Wheel_FR_Steering
| | |-------Grp_Wheel_FR_Steering_Rotating (T)
| |-------Grp_Wheel_BL (T)
| | |-------Grp_Wheel_BL_Steering
| | |-------Grp_Wheel_BL_Steering_Rotating (T)
| |-------Grp_Wheel_BR (T)
| | |-------Grp_Wheel_BR_Steering
| | |-------Grp_Wheel_BR_Steering_Rotating (T)
| |-------Grp_Door_FL (T)
| |-------Grp_Door_FR (T)
| |-------Grp_Door_BL (T)
| |-------Grp_Door_BR (T)
| |-------Grp_Trunk_Lid (T)
| |-------Grp_Light_Low_Beam_FL (T)
| |-------Grp_Light_Low_Beam_FR (T)
| |-------Grp_Light_High_Beam_FL (T)
| |-------Grp_Light_High_Beam_FR (T)
| |-------Grp_Light_Park_FL (T)
| |-------Grp_Light_Park_FR (T)
| |-------Grp_Light_Park_BL (T)
| |-------Grp_Light_Park_BR (T)
| |-------Grp_Light_Tail_BL (T)
| |-------Grp_Light_Tail_BR (T)
| |-------Grp_Light_Brake_BL (T)
| |-------Grp_Light_Brake_BC (T)
| |-------Grp_Light_Brake_BR (T)
| |-------Grp_Light_Reverse_BL (T)
| |-------Grp_Light_Reverse_BR (T)
| |-------Grp_Light_Fog_BL (T)
| |-------Grp_Light_Fog_BR (T)
| |-------Grp_Indicator_FL (T)
| |-------Grp_Indicator_FR (T)
| |-------Grp_Indicator_SL (T)
| |-------Grp_Indicator_SR (T)
| |-------Grp_Indicator_BL (T)
| |-------Grp_Indicator_BR (T)
| |-------Grp_Number_Plate_F (T)
| |-------Grp_Number_Plate_B (T)
| |-------Grp_Convertible_Top
| |-------Grp_Sensors (T)
|-------Grp_Interior
|-------Grp_Interior_Static
|-------Grp_Interior_Dynamic
|-------Grp_Steering_Wheel (T)
|-------Grp_Rear_Backrest
|-------Grp_Eyepoint_Female (T)
|-------Grp_Eyepoint_Male (T)
The model structure incorporates assembly-specific transforms which are used for kinematical animation of components (e.g. animation of wheels, doors, lids, steering wheel, etc.) and the positioning of external content (e.g. light sources, number plates, cameras etc.). Those transforms implement local coordinate frames.
All transforms are defined in the (global) reference coordinate frame of the model which acts as transform to the assembly $Type_$Release. The origin of this coordinate frame coincides with the origin of the vehicles’ construction coordinate frame:
Reference coordinate frame | |
---|---|
Origin (ORef) | Geometric center of the front axle |
x-axis (xRef) | Collinear with the vehicle longitudinal axis, pointing backwards |
y-axis (yRef) | Horizontally right-pointing (towards the passenger side) |
z-axis (zRef) | Perpendicular to the xy-plane, pointing upwards |
Figure 1: Reference coordinate frame
For wheel animation (assemblies Grp_Wheel_), transforms are provided by the model structure. Those implement the following coordinate frame each:
Wheel coordinate frame | |
---|---|
Origin (OWheel) | Geometric center of the wheel |
x-axis (xWheel) | Collinear with the vehicle longitudinal axis, pointing forwards |
y-axis (yWheel) | Completes the right-handed coordinate system |
z-axis (zWheel) | Perpendicular to the x-axis, pointing vertically upwards |
Figure 2: Wheel coordinate frame
As depicted, wheel rolling corresponds to a rotation around the y-axis (Ry) while steering is implemented by a rotation around the z-axis (Rz). Wheel camber is defined by a rotation around the x-axis (Rx). Finally, suspension deflection is represented by a translation along the z-axis (Tz). The corresponding neutral positions are defined as follows:
Wheel neutral position | |
---|---|
Rx=0 | Camber at neutral load conditions |
Ry=0 | Rim logos horizontal, readable |
Rz=0 | Straight running |
Tz=0 | Suspension deflection at neutral load conditions |
For door animation (assemblies Grp_Door_), transforms are provided by the model structure. Those implement the following coordinate frames:
Door coordinate frame | |
---|---|
Origin (ODoor) | Geometric center of the virtual hinge axis |
x-axis (xDoor) | Perpendicular to the z-axis, pointing forwards |
y-axis (yDoor) | Completes the right-handed coordinate system |
z-axis (zDoor) | Concentric and coaxial to the virtual hinge axis, pointing upwards |
Figure 3: Door coordinate frame
Here, the virtual hinge axis is the axis that allows the animation of the closing and opening of a door with a single rotation. It coincides with the z-axis (zDoor) of the door coordinate frame. For closing and opening the door in a rotation around the z-axis (Rz), the following neutral position is defined:
Wheel neutral position | |
---|---|
Rz=0 | Door closed |
For trunk lid animation (assembly Grp_Trunk_Lid), a transform is provided by the model structure. It implements the following coordinate frame:
Trunk lid coordinate frame | |
---|---|
Origin (OTrunk_Lid) | Geometric center of the virtual hinge axis |
x-axis (xTrunk_Lid) | Completes the right-handed coordinate system |
y-axis (yTrunk_Lid) | Concentric and coaxial to the virtual hinge axis, pointing rightwards (towards the passenger side) |
z-axis (zTrunk_Lid) | Perpendicular to the y-axis, pointing upwards |
Figure 4: Trunk lid coordinate frame
Here, the virtual hinge axis is the axis that allows the animation of the closing and opening of the trunk lid with a single rotation. It coincides with the y-axis (yTrunk_Lid) of the trunk lid coordinate frame. For closing and opening the trunk lid in a rotation around the y-axis (Ry), the following neutral position is defined:
Trunk lid neutral position | |
---|---|
Ry=0 | Trunk lid closed |
For light animation (assemblies Grp_Light_), i.e. positioning of corresponding light sources, transforms are provided by the model structure. Those implement the following coordinate frames:
Light coordinate frame | |
---|---|
Origin (OLight) | Geometric center of the last emitter/reflector along the optical path |
x-axis (xLight) | Concentric and coaxial to the primary light propagation direction |
y-axis (yLight) | Completes the right-handed coordinate system |
z-axis (zLight) | Perpendicular to the x-axis, pointing upwards |
Figure 5: Light coordinate frame
For indicator animation (assemblies Grp_Indicator_), i.e. positioning of corresponding light sources, transforms are provided by the model structure. Those implement the following coordinate frames:
Indicator coordinate frame | |
---|---|
Origin (OIndicator) | Geometric center of the last emitter/reflector along the optical path |
x-axis (xIndicator) | Concentric and coaxial to the primary light propagation direction |
y-axis (yIndicator) | Completes the right-handed coordinate system |
z-axis (zIndicator) | Perpendicular to the x-axis, pointing upwards |
Figure 6: Indicator coordinate frame
For number plate animation (assemblies Grp_Number_Plate_), i.e. positioning of corresponding textures, transforms are provided by the model structure. Those implement the following coordinate frames:
Number plate coordinate frame | |
---|---|
Origin (ONumber_Plate) | Geometric center of the number plate |
x-axis (xNumber_Plate) | Concentric and coaxial to the surface normal of the number plate |
y-axis (yNumber_Plate) | Completes the right-handed coordinate system |
z-axis (zNumber_Plate) | Perpendicular to the x-axis, pointing upwards |
Figure 7: Number plate coordinate frame
For convertible top animation (including soft-tops, assembly Grp_Convertible_Top), no specific transform is provided by the model structure. Instead, convertible tops are positioned in the reference coordinate frame. A convertible top assembly shall comprise 10 discrete states (animation frames) of the opening process. For soft-tops, these steps shall incorporate corresponding cloth representation. At the first, default state, the convertible top is closed. The last, tenth animation step always represents the fully opened convertible top. Eight uniformly distributed intermediate steps animate the opening or closing process.
For positioning and simulation of sensors (assemblies Grp_Sensors), a transform is provided by the model structure. Following ISO 8855:2011, it implements the following coordinate frame:
Sensor coordinate frame | |
---|---|
Origin (OSensor) | Geometric center of the rear axle, fixed in the sprung mass of the vehicle at neutral load condition |
x-axis (xSensor) | Collinear with the vehicle longitudinal axis, pointing forwards |
y-axis (ySensor) | Completes the right-handed coordinate system |
z-axis (zSensor) | Perpendicular to the x-axis, pointing upwards |
Figure 8: Sensor coordinate frame
For steering wheel animation (assembly Grp_Steering_Wheel), a transform is provided by the model structure. It implements the following coordinate frame:
Steering wheel coordinate frame | |
---|---|
Origin (OSteering_Wheel) | Intersection of steering axle and the plane defined by the steering wheel rim |
x-axis (xSteering_Wheel) | Concentric and coaxial to the steering axle, pointing away from the driver |
y-axis (ySteering_Wheel) | Completes the right-handed coordinate system |
z-axis (zSteering_Wheel) | Perpendicular to the x-axis, pointing upwards |
Figure 9: Steering wheel coordinate frame
As depicted, steering movement corresponds to a rotation around the x-axis (Rx). The following neutral position is defined:
Steering wheel neutral position | |
---|---|
Rx=0 | Straight running |
For animation of the foldable backrest of the backseat (assembly Grp_Rear_Backrest), no specific transform is provided by the model structure. Instead, the backrest is referenced in the reference coordinate frame. A backrest assembly shall comprise 2 discrete states (animation frames) of the folding process. At the first, default state, the backrest is in upright position. The second state always represents the fully folded backrest.
To represent the driver’s view (the so-called eyepoint) of a 95-percent female and a 95-percent male (assemblies Grp_Eyepoint_), transforms are provided by the model structure. They implement the following coordinate frames:
Eyepoint coordinate frame | |
---|---|
Origin (OEyepoint) | Geometric center of the driver’s head |
x-axis (xEyepoint) | Collinear with the vehicle longitudinal axis, pointing forwards |
y-axis (yEyepoint) | Completes the right-handed coordinate system |
z-axis (zEyepoint) | Perpendicular to the x-axis, pointing upwards |