The below table captures the scope of each preset type for Person atoms. Please let me know if you spot any inaccuracies or missing differences.
A similar summary for non-person atoms can be found here: https://hub.virtamate.com/resources/preset-definitions-non-person-atoms.3578/
Look (Legacy) | Pose (Legacy) | Preset (Legacy) | General Preset | App Preset | Clothing Preset | Pose Preset | Hair Preset | Morph Preset | Skin Preset | Breast Preset | Glute Preset | Plugin Preset | Animation Preset | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Atom name | | | ||||||||||||
Root Node Position | | | Pose | Option | ||||||||||
Node Positions | | | Pose | | ||||||||||
Node State & Physics | | | Pose & Physical | | ||||||||||
Bone Positions | | | Option | |||||||||||
Scale | | | App | | ||||||||||
Clothing | | | App | | | |||||||||
Hair | | | App | | | |||||||||
Morphs (Appearance) | | | App | | Option | |||||||||
Morphs (Pose) | | | Physical | Option | Option | |||||||||
Skin (Textures and Materials for Skin 1&2, Tongue, Teeth & Mouth) | | | App | | | |||||||||
Skin (Eyelashes, Lacrimals, Sclera, Iris) | | | App | | ||||||||||
F Breast Physics | | | App | | | |||||||||
F Glute Physics | | | App | | | |||||||||
M Pectoral Physics | | | App | | ||||||||||
Misc Physics | | | App | | ||||||||||
Collision Triggers | | | Pose | |||||||||||
Plugins | | Saving: App Loading: App & Physical | | | ||||||||||
Plugin Parameters | See note 3 | See note 3 | | See note 3 | | | ||||||||
Head Audio | | | ||||||||||||
Hand Control | | | ||||||||||||
Auto Behaviours (Lip Sync) | | | Physical | | ||||||||||
Auto Behaviours (Other) | | | App | | ||||||||||
Eye Target | | | ||||||||||||
Scene Animation (Mocap) | | | ||||||||||||
Built in Animations | |
Notes:
- Legacy Presets
Prior to VAM v1.17 there were only three types of presets (Look, Pose and Preset) and these remain as the 'legacy' preset functions:
In v1.17 a more refined set of 9 Presets was introduced to allow more granular control. For the most part it is recommended these be used instead of the 'legacy' presets:
v1.20 introduced PluginPresets and v1.20.77 included Animation Presets (which are presets for the canned person Animator animations). - General Preset options
The General Preset has three toggle options for Appearance, Pose and Physical. For the most part these can be independently selected to determine which data items are included in the presets. However, in order to include Node State & Physics data items in a General Preset - both the Pose and Physical toggles must be selected. - Plugin parameters & Legacy presets
Plugin authors can determine which data items are stored in each of the 3 legacy preset types. Most commonly this is done by setting the storeType attribute of a JSONStorable object as follows:
C#:
_offsetZ = new JSONStorableFloat("Offset Z", 0f, -maxoffset, +maxoffset);
RegisterFloat(_offsetZ);
_offsetZ.storeType = JSONStorableParam.StoreType.Full;
The storeType can be set to Appearance, Physical, Full or Any which will result in the attribute being stored as follows:
JSONStorableParam.StoreType | Look (Legacy) | Pose (Legacy) | Preset (Legacy) |
---|---|---|---|
Appearance | | | |
Physical | | | |
Full | | ||
Any | | | |
The default storeType (should the plugin author not specify) is Appearance. Therefore a common problem is that plugin settings are saved and restored with Save/Load Look - which is often not intended. If the plugin author does not want registered JSONStorables to be included in legacy Looks or Poses, then the storeType should be set to Full. With the increased prevalence of non-legacy presets this is less of a problematic issue, but many of the problems people experience with legacy presets and plugins are due to the plugin author (jncluding myself!) not correctly setting the storeType attribute.
The alternative method for plugin authors to store data is by overriding the GetJSON() and RestoreFromJSON() methods. These methods have Appearance and Physical boolean parameters to allow the plugin author to support similar functionality for legacy preset saving/restoring of plugin data (or not).