Avatar Attachment Package
Avatar attachments are items that can be held, equipped, or worn by avatars. The package is flexible, supporting a wide variety of assets.
Note
This package type is currently still under development. Please let us know on Slack or Discord if you have any feedback as we develop this feature.
What can I make?
- Auras: Particle effects around the avatar
- Weapons: Swords, Pistols, Shields
- Accessories: Jetpacks, Wings, Hats, Gloves, Boots
- Rideables: Skateboards, Hoverboards
- Pets: For
World
scope, you can create attachments that come with scripting components. This allows you to write your own logic for how the attachment follows your avatar.
Check out the Space Gun Template for an example of an Avatar Attachment package. The video below demonstrates an Avatar Aura attachment.
Core Concepts
The simplest attachment is a 3D model that is attached to an avatar in a given slot. However, it can have additional functionality.
- Attachment Slot: Each attachment defines a primary slot and additional slots. Players can only equip a single attachment for a given slot.
- Category: Each attachment needs to assign a category, this will be used to group similar items in the player’s backpack
Feature Overview
Feature | Explanation | Status |
---|---|---|
Skinning | Skinned attachments are basic models that are skinned to the Avatar’s bone skeleton. When the avatar animates, the attachment mesh deforms with it. | Ready |
Bone Attachment | When this option is enabled you can select a bone to parent the attachment to. For example, a “Can of Coke” can be parented to the avatar’s Right Hand. | Ready |
IK Settings | Attachments can force one of four Avatar IK points (2 hands, 2 feet) to a specified target transform. For example, for a “Bicycle” attachment, you’ll want to IK the hands to the handle bar. | Ready |
Custom Actions | Attachments can give avatars additional abilities. For example, a sword attachment could define two custom actions: Attack and Block. With custom actions you will be able to specify additional avatar animations to play. | In Progress |
Avatar Animation Settings | Attachments can optionally override the avatar animations for its default clips. For example, if the avatar is running with a heavy sword, you may want a slightly different walk/jog/run animation. Or as a different example, for a hoverboard attachment, the avatar animations can be overridden to match the pose for standing on a hoverboard. These settings also allow you to set if an attachment is visible or not while a specific avatar animation clip is playing. Same for IK settings | Ready |
Attachment Animation Settings | Allows you to set animation clips to play in sync with the avatar. For example, when the avatar “jump” animation is playing, you can set what the “jump” animation should be on the attachment. These animations are synchronized between the avatar and the attachment. This is the key feature that allows you to create a hoverboard where the jump animation looks like the avatar is jumping with the board. | Ready |
Limitations
We enforce level-of-detail limitations to ensure all supported devices can load and render these attachments. While the universal scope may look very limiting, remember that users can have multiple attachments equipped, so this can quickly blow through memory and rendering performance budgets.
For example, if you are in an experience with 50 users, and each user has 4 attachments equipped, that’s 50 avatars and 200 potentially unique attachments that need to be in memory and rendered (which is a lot to load and render).
The limits are much higher for World
scope in order to give creators the flexibility to control budgets and quality. Participant counts can be limited to lower player counts, such as 5, which allows more room in memory for larger higher quality attachments.
Type | Universal Scope | World Scope |
---|---|---|
Vertex Count Limit | 2500 | 25000 |
Triangle Count Limit | 1000 | 15000 |
Sub Mesh Count Limit | 1 | 5 |
Minimum Bounds Size | 0.01 meters | 0.01m |
Maximum Bounds Size | 3m | 25m |
Texture Memory Budget | 2MB | 10MB |