Resources¶
Resources are the building blocks of VR lessons. They include 3D models, images, audio files, videos, and avatars. Resources are uploaded through the Web App and used in the Editor to build training scenes.
Resource types¶
| Type | File formats | Description |
|---|---|---|
| 3D Model | .glb | 3D objects used in the scene - machines, tools, parts, furniture, environments. The primary resource type for building training scenes. |
| Image | .png, .jpg | 2D images displayed as flat planes in the scene. Used for labels, diagrams, instructions, or reference images. |
| Audio | .mp3 | Sound files used for step instructions, ambient audio, or sound effects triggered by actions. |
| Video | .mp4, .webm, .mov, .avi | Standard 2D video for the MediaPlayer substep. |
| Video 3D SBS | .mp4, .webm, .mov, .avi | Side-by-side stereoscopic 3D video. Each frame contains left and right eye views. |
| Video 3D 180 | .mp4, .webm, .mov, .avi | 180-degree stereoscopic video for immersive viewing. |
| Video 3D 360 | .mp4, .webm, .mov, .avi | 360-degree stereoscopic video for full surround viewing. |
| Avatar | .glb | Full-body rigged avatar for multiuser mode. Supports lip-sync visemes and body animations. |
| Body Animation | .bvh | Biovision Hierarchy animation files for avatar body movements. |
| Surface | .glb | 3D surfaces used as interaction areas (e.g., for sweep actions). |
| Tool | .glb | Tool objects that the trainee holds and uses (e.g., screwdriver, brush, scanner). |
| Icon | .png, .svg | Icon resources for UI elements. |
Adding a new resource¶
-
Go to the Resources tab in the Web App.
-
Select Add resource.
-
Fill in the resource details:
- Resource name - a descriptive name
- Training - assign the resource to a training
- File - upload the file (max 200 MB)
- Tags (optional) - for categorization and search
-
Select Save.
Resource properties¶
Each resource in the list has three action icons:
- Bin - delete the resource
- Pencil - edit: rename, re-upload, download, change file type, add tags
- Eye - view properties: name, assigned training, preview, file type, ID, tags, creation and modification dates
3D Model configuration¶
3D models (.glb) are the most configurable resource type. When a model is loaded in the Editor, the following properties can be set via the Resource Description Creator tool:
Basic properties¶
| Property | Description |
|---|---|
| Rotation Point | Center point for rotation actions |
| Rotation Axis | Axis around which the object rotates (for Rotate substeps) |
| Hand Squeeze | How much the hand clenches when grabbing (0-1, or -1 for auto) |
| Is Container | Whether the object can hold other objects inside it |
Grab Points and Poses¶
Objects can have multiple grab points - specific positions where the trainee should grab the object. Each grab point defines:
- Position and rotation offset for left and right hands
- Hand pose (finger positions for realistic grabbing)
Animations¶
3D models can contain animations that play during training:
- Default Animation - plays automatically when the scene loads (set in Inspector)
- Loop Animation - toggle whether the default animation loops
- Trigger Animation - plays when specific events occur
- Leaf Objects - child objects with their own animation endpoints (start/end positions)
Colliders¶
Custom collision shapes can be defined for precise interaction:
- Box Collider - rectangular collision area
- Sphere Collider - spherical collision area
- Capsule Collider - capsule-shaped collision area
Interactive elements¶
| Element | Description |
|---|---|
| Hitables | Zones where the object can be struck (for Hit substeps) |
| Sweepables | Areas where sweeping motions are detected (for Sweep substeps) |
| Raycastable | Points that respond to ray pointer interaction |
| Click Box | Clickable area with configurable size |
| Position Suggestions | Visual hints showing where objects should be placed |
| Default Child Positions | Default positions for child objects within the hierarchy |
Free Rotations¶
Objects can be configured with free rotation on specific axes. Available angle steps: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 18, 20, 24, 30, 36, 40, 45, 60, 72, 90, 120, 180, 360 degrees.
Image resources¶
Images uploaded as resources are displayed as flat planes (ImagePlane) in the 3D scene. In the Editor, you can configure:
- Image Scale - multiplier for the display size (default 1.0)
- Position and Rotation - where the image appears in the scene
- Canvas Order - rendering order when multiple images overlap
Audio resources¶
Audio files (.mp3) are used in several ways:
- Step instructions - played automatically when a step begins (with optional text-to-speech fallback)
- Sound effects - triggered by substep actions
- Avatar speech - played with lip-sync visemes for avatar animations
Video resources¶
Videos are played through the MediaPlayer substep type. Configuration options:
| Property | Description |
|---|---|
| Display Mode | Static (fixed position), Billboard (faces camera), or Follow Camera (follows player head) |
| Loop | Whether the video repeats |
| Canvas Size | Width and height of the video display (default 1920x1080) |
| Always On Top | Render video above all other objects |
| Position / Rotation | Placement in the scene |
Avatar resources¶
Avatar resources (.glb) are rigged 3D character models used in multiuser mode. Each avatar supports:
Voice configuration¶
Avatar voice is powered by Azure Neural Text-to-Speech and can be configured with:
| Property | Options | Description |
|---|---|---|
| Gender | female, male | Default voice gender |
| Voice Name | e.g., en-US-GuyNeural | Specific Azure TTS voice (overrides Gender) |
| Style | cheerful, sad, angry, calm, friendly, newscast, assistant | Speaking style |
| Rate | x-slow, slow, medium, fast, x-fast, or +/-XX% | Speech speed |
| Pitch | x-low, low, medium, high, x-high, or +/-XXHz | Voice pitch |
Lip-sync¶
Avatars support automatic lip-sync via visemes - blend shape animations synchronized with audio playback. The system uses 22 viseme IDs mapped to blend shapes on the avatar's SkinnedMeshRenderer.
Body animations¶
Avatar body animations (.bvh files) can be triggered via:
- The AvatarAnimation substep type
- Lua scripting with
PlayAvatarAnimation()function