Difference between revisions of "Avatar"

From Neos Wiki
Jump to navigation Jump to search
(Table-izes component listings with standard component table, corrects misspelled component names)
Line 2: Line 2:
  
 
== Structure ==
 
== Structure ==
An avatar is a hierarchy of slots, with an [[#Avatar Root]] containing [[#Avatar Nodes]]
+
An avatar is a hierarchy of slots, with an [[#Avatar Root|Avatar Root]] containing [[#Avatar Nodes|Avatar Nodes]]
  
 
In general, some components may (and do) appear in multiple places over the hierarchy of an avatar:
 
In general, some components may (and do) appear in multiple places over the hierarchy of an avatar:
* [[AvatarUserReferenceAssigner (Component)]] - [[#on avatar equip]] these assign the reference of the user that equipped the avatar to the slot assigned to the assigner's target.
+
 
* [[SimpleAwayIndicator (Component)]] - This applies the away [[material]] to a mesh target [[MeshRenderer (Component)]] or [[SkinnedMeshRenderer (Component)]] when the [[user]] equipping the avatar goes to [[away]] state.
+
{{Table ComponentCategoryComponents
 +
|AvatarUserReferenceAssigner|| [[#on avatar equip]], this assigns the reference of the user that equipped the avatar to the slot assigned to the assigner's target.
 +
|SimpleAwayIndicator|| This applies the away [[material]] to a mesh target [[MeshRenderer (Component)|MeshRenderer]] or [[SkinnedMeshRenderer (Component)|SkinnedMeshRenderer]] when the [[user]] equipping the avatar goes to [[away]] state.
 +
}}
  
 
=== Avatar Root ===
 
=== Avatar Root ===
 
Any [[slot]] with an active [[AvatarRoot (Component)]] defines the root of an avatar.
 
Any [[slot]] with an active [[AvatarRoot (Component)]] defines the root of an avatar.
  
Commonly the avatar root also contains:
+
Commonly the avatar root will contain the following [[components]]:
* [[Grabbable (Component)]] - It can be picked up.
+
 
* [[ObjectRoot (Component)]] - It can be identified as a self contained object.
+
{{Table ComponentCategoryComponents
 +
|AvatarRoot|| Indicates that this slot is the root of an avatar.
 +
|Grabbable|| Indicates the avatar can be grabbed.
 +
|ObjectRoot|| Indicates that this slot is the root of an object.
 +
}}
 +
 
 +
Avatar roots of avatars created with the [[Avatar Creator]] have these additional [[components]]:
  
Avatar roots of avatars created with the [[Avatar Creator]] have these additional [[components]]
+
{{Table ComponentCategoryComponents
* [[AvatarGroup (Component)]] - Unknown purpose
+
|AvatarGroup||
* [[PBS_RimMetalic (Component)]] - The [[#away material]] of the avatar.
+
|PBS_RimMetallic|| The [[#away material]] of the avatar.
* [[SimpleAvatarProtection (Component)]] - Only the one bound to the avatar can equip and save it.
+
|SimpleAvatarProtection|| Sets permissions such that only the user bound to the avatar may equip and save it.
* [[MeshRendererMaterialRely (Component]] - Unknown purpose
+
|MeshRendererMaterialRelay||
 +
}}
  
 
Humanoid avatars also contain:
 
Humanoid avatars also contain:
* [[Rig (Component)]] - Unknown purpose
 
* [[BipedRig (Component)]] - Unknown Purpose
 
* [[VRIK (Component)]] - Computes the logic to map the input [[#IK Targets]] to [[#IK Proxies]].
 
* [[VRIKAvatar (Component)]] - Chooses when and how to bind the [[User's]] controls to the [[#IK Proxies]].
 
  
Most often, an Avatar Root contains the [[#Avatar Node]] proxies, [[#Centered Root]], and user defined [[Logix]] modules (modules do not need to be defined here, but they often are for ease of access).
+
{{Table ComponentCategoryComponents
 +
|Rig||
 +
|BipedRig||
 +
|VRIK|| Computes the logic to map the input [[#IK Targets]] to [[#IK Proxies]].
 +
|VRIKAvatar|| Chooses when and how to bind the [[User]]'s controls to the [[#IK Proxies]].
 +
}}
 +
 
 +
Most often, an Avatar Root contains the [[#Avatar Node|Avatar Nodes]] proxies, [[#Centered Root]], and user defined [[Logix]] modules (modules do not need to be defined here, but they often are for ease of access).
  
 
=== Avatar Nodes ===
 
=== Avatar Nodes ===
Any [[slot]] under an [[#avatar root]] that contains a [[AvatarPoseNode (Component)]] is considered an avatar node.
+
Any [[slot]] under an [[#avatar root]] that contains an [[AvatarPoseNode (Component)]] is considered an avatar node.
Most often, avatar nodes are direct children of the [[#avatar root]].
+
Most often, avatar nodes are direct children of the [[#Avatar Root|Avatar Root]].
  
 
Avatar nodes represent a strongly identifiable piece of the avatar, such as LeftHand or Head.  
 
Avatar nodes represent a strongly identifiable piece of the avatar, such as LeftHand or Head.  
  
With [[VRIK (Component)]] based avatars an Avatar Node is named ''<pose node name> Proxy'' by convention, and contains:
+
With [[VRIK (Component)|VRIK]]-based avatars an Avatar Node is named ''<pose node name> Proxy'' by convention, and contains:
 
* [[AvatarObjectComponentProxy (Component)]] - This copies the global transform of the avatar node, onto a target node (at least it appears to). Scans for the node kind identified by the [[AvatarPoseNode (Component)]] will find the target of the proxy as well.
 
* [[AvatarObjectComponentProxy (Component)]] - This copies the global transform of the avatar node, onto a target node (at least it appears to). Scans for the node kind identified by the [[AvatarPoseNode (Component)]] will find the target of the proxy as well.
 
* A child [[slot]] named Target - This is where the part of the avatar model will actually try to go to. - Ex: A proxy moves to exactly where a VR tracker is in space, the Target offsets that tracker back to where that body part should be. - Avatar calibration is done by moving the Target [[slot]] under the proxies being calibrated.
 
* A child [[slot]] named Target - This is where the part of the avatar model will actually try to go to. - Ex: A proxy moves to exactly where a VR tracker is in space, the Target offsets that tracker back to where that body part should be. - Avatar calibration is done by moving the Target [[slot]] under the proxies being calibrated.
  
The [[Head]] of the avatar often contains these additional nodes:
+
The [[Head]] of the avatar often contains these additional components:
* [[AvatarVoiceSourceAssigner (Component)]] - This assigns the audio stream of the user [[#on avatar equip]]. There may be multiple of these.
+
 
* [[AvatarAudioOutputManager (Component)]] - This configures the avatar's [[AudioOutput (Component)]] with the configured settings based on the [[user voice setting]].
+
{{Table ComponentCategoryComponents
* [[AudioOutput (Component)]] - This is what emits the [[user]]'s voice, many [[fields]] on this [[component]] are [[driven]] by the [[AvatarAudioOutputManager (Component)]].
+
|AvatarVoiceSourceAssigner || Assigns the audio stream of the user [[#on avatar equip]]. There may be multiple of these.
* [[AvatarVoiceRangeVisualizer (Component)]] - This configures the whisper bubble for the user based off [[AvatarAudioOutputManager (Component)]] provided settings.
+
|AvatarAudioOutputManager || Configures the avatar's [[AudioOutput (Component)|AudioOutput]] with the configured settings based on the [[user voice setting]].
* [[VisemeAnalyzer (Component)]] - This computes the values to be routed to [[DirectVisemeDriver (Component)]] elsewhere in the avatar, this [[drives]] [[blendshape]] movements.
+
|AudioOutput || Emits the [[user]]'s voice. Many [[fields]] on this [[component]] are [[driven]] by the [[AvatarAudioOutputManager (Component)|AvatarAudioOutputManager]].
* A child [[slot]] named Voice Range Visual - This is the whisper bubble, the slot is inactive unless the equipped user is in the [[whisper]] [[voice mode]]. This slot commonly contains:
+
|AvatarVoiceRangeVisualizer || Configures the whisper bubble for the user based off [[AvatarAudioOutputManager (Component)|AvatarAudioOutputManager]] provided settings.
** [[MeshRenderer (Component)]] - The visual part of the whisper bubble.
+
|VisemeAnalyzer || Computes the values to be routed to [[DirectVisemeDriver (Component)|DirectVisemeDriver]] elsewhere in the avatar, which [[Drive|drives]] [[blendshape]] movements.
** [[PBS_IntersectMetalic (Component)]] - The material applied to the bubble, this is on the whisper bubble itself as this changes based on the user's audio volume.
+
}}
 +
 
 +
In addition, the Head slot contains a child [[slot]] named Voice Range Visual. This is the whisper bubble, the slot is inactive unless the equipped user is in the [[whisper]] [[voice mode]]. This slot commonly contains:
 +
 
 +
{{Table ComponentCategoryComponents
 +
|MeshRenderer || The visual part of the whisper bubble.
 +
|PBS_IntersectMetallic || The material applied to the whisper bubble. Changes based on the user's audio volume.
 +
}}
  
 
==== Centered Root - VRIK specific ====
 
==== Centered Root - VRIK specific ====

Revision as of 18:30, 21 September 2021

An avatar is the form of a user in a given world.

Structure

An avatar is a hierarchy of slots, with an Avatar Root containing Avatar Nodes

In general, some components may (and do) appear in multiple places over the hierarchy of an avatar:

Components
Component Summary
AvatarUserReferenceAssigner #on avatar equip, this assigns the reference of the user that equipped the avatar to the slot assigned to the assigner's target.
SimpleAwayIndicator This applies the away material to a mesh target MeshRenderer or SkinnedMeshRenderer when the user equipping the avatar goes to away state.

Avatar Root

Any slot with an active AvatarRoot (Component) defines the root of an avatar.

Commonly the avatar root will contain the following components:

Components
Component Summary
AvatarRoot Indicates that this slot is the root of an avatar.
Grabbable Indicates the avatar can be grabbed.
ObjectRoot Indicates that this slot is the root of an object.

Avatar roots of avatars created with the Avatar Creator have these additional components:

Components
Component Summary
AvatarGroup
PBS_RimMetallic The #away material of the avatar.
SimpleAvatarProtection Sets permissions such that only the user bound to the avatar may equip and save it.
MeshRendererMaterialRelay

Humanoid avatars also contain:

Components
Component Summary
Rig
BipedRig
VRIK Computes the logic to map the input #IK Targets to #IK Proxies.
VRIKAvatar Chooses when and how to bind the User's controls to the #IK Proxies.

Most often, an Avatar Root contains the Avatar Nodes proxies, #Centered Root, and user defined Logix modules (modules do not need to be defined here, but they often are for ease of access).

Avatar Nodes

Any slot under an #avatar root that contains an AvatarPoseNode (Component) is considered an avatar node. Most often, avatar nodes are direct children of the Avatar Root.

Avatar nodes represent a strongly identifiable piece of the avatar, such as LeftHand or Head.

With VRIK-based avatars an Avatar Node is named <pose node name> Proxy by convention, and contains:

  • AvatarObjectComponentProxy (Component) - This copies the global transform of the avatar node, onto a target node (at least it appears to). Scans for the node kind identified by the AvatarPoseNode (Component) will find the target of the proxy as well.
  • A child slot named Target - This is where the part of the avatar model will actually try to go to. - Ex: A proxy moves to exactly where a VR tracker is in space, the Target offsets that tracker back to where that body part should be. - Avatar calibration is done by moving the Target slot under the proxies being calibrated.

The Head of the avatar often contains these additional components:

Components
Component Summary
AvatarVoiceSourceAssigner Assigns the audio stream of the user #on avatar equip. There may be multiple of these.
AvatarAudioOutputManager Configures the avatar's AudioOutput with the configured settings based on the user voice setting.
AudioOutput Emits the user's voice. Many fields on this component are driven by the AvatarAudioOutputManager.
AvatarVoiceRangeVisualizer Configures the whisper bubble for the user based off AvatarAudioOutputManager provided settings.
VisemeAnalyzer Computes the values to be routed to DirectVisemeDriver elsewhere in the avatar, which drives blendshape movements.

In addition, the Head slot contains a child slot named Voice Range Visual. This is the whisper bubble, the slot is inactive unless the equipped user is in the whisper voice mode. This slot commonly contains:

Components
Component Summary
MeshRenderer The visual part of the whisper bubble.
PBS_IntersectMetallic The material applied to the whisper bubble. Changes based on the user's audio volume.

Centered Root - VRIK specific

This slot represents where Neos thinks the center of the avatar is.


In World Lifecycle