en
Language subpage
This subpage is used on the VMDL (Source 2)/Attachments page to display content in English.
If you have edited the language subpage, do not forget to purge the base page by clicking on the button on the right. Otherwise, its contents will not be updated.
Attachments are parented to a joints, and are defined by an offset and a rotation. In game they can be used for particle emission, and item attachment points among other uses. Attachments are stored in an attachment list, and can have multiple parents (influences).
Contents
Display
- To toggle attachment display go Display > Attachments.
- To toggle attachment name display go to Display >Attachment Names.
Create
- Right click on a joint item in the outliner, and select Add Attachment.
- Use the Model > Attachments menu items.
Edit
- When an attachment is selected via the viewport or an outliner item the gizmo becomes available. Use the gizmo to translate and rotate the attachment.
- When selected the editable properties of an attachment are accessible via the property editor.
Data Structures
The vmdl attachment data looks like this:
CVattachmentListReference[] m_pAttachmentLists =
[
CVattachmentListReference
{
CVattachmentList* m_pObject = &CVattachmentList_0
string m_sFileName = ""
}
]
m_pAttachmentLists
A list of CVattachmentListReference elements
CVattachmentListReference
A reference to an internal or external CVattachmentList:
Attribute | Friendly Name | Description | Type | Default Value |
---|---|---|---|---|
m_pObject | pointer to the internal CVattachmentList | CVattachmentList* | ||
m_sFileName | content relative path to the external CVattachmentList | string |
A CVattachmentList set list looks like this:
CVattachmentList CVattachmentList_0
{
string m_name = ""
CVattachment[] m_attachments =
[
CVattachment
{
string m_name = "test"
CVattachmentInfluence[] m_influences =
[
CVattachmentInfluence
{
string m_influenceName = "spine1"
float(3) m_vTranslationOffset = ( 0.000000, 0.000000, 0.000000 )
float(3) m_vRotationOffset = ( 0.000000, 0.000000, 0.000000 )
float m_flWeight = 1.000000
bool m_bRoot = false
}
]
}
]
}
CVattachmentList
Attribute | Friendly Name | Description | Type | Default Value |
---|---|---|---|---|
m_name | Name | The name of the attachment list | string | |
m_attachments | Attachments | List of CVattachment elements | CVattachment[] |
Note:When it is made external, a CVattachmentList is saved as a ".attach" file.
CVattachment
The data description of the attachment
Attribute | Friendly Name | Description | Type | Default Value |
---|---|---|---|---|
m_name | Name | The name of the attachment list | string | |
m_influences | Influences | List of CVattachmentInfluence elements | CVattachmentInfluence[] |
CVattachmentInfluence
The data description of the influence
Attribute | Friendly Name | Description | Type | Default Value |
---|---|---|---|---|
m_influenceName | Influence Name | The name of the influence | string | |
m_vTranslationOffset | Translation | Translation offset from the influnce | float(3) | ( 0.000000, 0.000000, 0.000000 ) |
m_vRotationOffset | Rotation | Rotation offset from the influnce | float(3) | ( 0.000000, 0.000000, 0.000000 ) |
m_flWeight | Weight | Weight of the influence | float | 1.0 |
m_bRoot | Is Root | Is the root of the model | bool | true |
Note:Changing the influence weight only matters if there are more than one influence.
Tip:Use "Is Root" when adding an attachment to a model that has not joints.