Skip to content

CVR Avatar

The primary component for an avatar. Attach it to the root GameObject of your avatar and configure viewpoint, voice, visemes, blinking, advanced tagging, and advanced avatar settings here. Requires a CVRAssetInfo on the same GameObject.

Local-space position (Vector3) that the in-game viewport is rendered from. Shown in the editor as a green gizmo sphere. Used as the fallback for GetViewWorldPosition / GetViewRelativePosition when no player rig is available.

Local-space position (Vector3) your voice is transmitted from. Shown in the editor as a red gizmo sphere.

Enum: which bone the voice source follows.

  • Head (default)
  • LeftHand
  • RightHand
  • Hips

Serialized AnimatorOverrideController. Used to replace individual default animations. Auto-attached to the cleanup list on Awake.

Boolean. Enables automatic eye movement that focuses on nearby players. Defaults to true.

Vector2 min/max seconds between eye refocus events. Defaults to (5, 10). Clamped by EyeMovementMinIntervalLimit (1s) and EyeMovementMaxIntervalLimit (30s).

Serialized struct containing:

  • typeCVRAvatarEyeLookMode enum: Muscle, None, Transform, or Blendshape. Selects how eye movement is driven.
  • eyes — array of EyeMovementInfoEye entries. Each entry configures a single eye:
    • isLeft — left or right eye.
    • eyeTransform — transform rotated when type is Transform.
    • eyeSkinnedMeshRenderer — mesh used when type is Blendshape.
    • eyeAngleLimitDown / eyeAngleLimitUp / eyeAngleLimitIn / eyeAngleLimitOut — per-axis look limits in degrees (defaults: -10, 15, -20, 20; uniform default is 25).
    • eyeBlendShapeUp / eyeBlendShapeDown / eyeBlendShapeIn / eyeBlendShapeOut — blendshape names used when type is Blendshape.

Boolean. Enables blinking driven by blinkBlendshape.

string[4] of blendshape names used as blink targets.

Vector2 min/max seconds between blinks. Defaults to (3, 8). Limits: 0.1s to 30s.

Vector2 min/max blink hold duration. Defaults to (0.25, 0.35). Limits: 0.1s to 3s.

CVRAvatarEyeBlinkMode enum:

  • Combined (Legacy) — a single trigger drives all blink slots together.
  • Separate — each blendshape slot fires independently.

SkinnedMeshRenderer containing the viseme blendshapes.

Boolean. Enables blendshape-driven visemes during voice transmission.

CVRAvatarVisemeMode enum:

  • Visemes — 15 blendshape slots, one per phoneme.
  • SingleBlendshape — a single blendshape driven by voice loudness.
  • JawBone — animates the jaw bone instead of blendshapes.

int smoothing amount. Defaults to 50.

string[15] of blendshape names (one per viseme).

Advanced tagging lets you apply content tags to specific GameObjects so they can be filtered independently of the avatar-level tag.

Boolean. Turns on filtering from the advancedTaggingList.

List<CVRAvatarAdvancedTaggingEntry>. Each entry has:

  • tagsTags flag enum. One entry can carry multiple tags at once: LoudAudio, LongRangeAudio, ScreenFx, FlashingEffects, FlashingEffects2, Violence, Gore, Suggestive, Explicit, Horror.
  • gameObject — the GameObject to tag.
  • fallbackGameObject — optional object activated when gameObject is filtered out by a rule.

Boolean. Enables the AAS system on this avatar.

Reference to a CVRAdvancedAvatarSettings asset with the defined inputs.

The AAS system supports these input kinds (see CVRAdvancedAvatarSettings / CVRAdvancesAvatarSetting*):

Creates a check/toggle box in the advanced avatar window. Animates one or more GameObjects on/off.

Dropdown that switches between the listed GameObjects.

Three sliders to drive a Vector3 material property (used as a color).

Single slider writing to an animator parameter and/or a material property.

2D plane for position picking. Range Min / Range Max set the scale.

2D plane with a vertical slider for a 3D coordinate.

Input Single / Input Vector 2 / Input Vector 3

Section titled “Input Single / Input Vector 2 / Input Vector 3”

Numeric input fields for 1, 2, or 3 floats.

GameObject anchor for the hand grab pointer.

GameObject anchor for the index-finger pointer.

GameObject anchor for the mouth pointer.

List<CVRAvatarCollider>. Each entry has a collider reference and an isTrigger flag; LateUpdate forces collider.isTrigger to match the flag each frame.

The following fields are set at runtime and not meant for editor configuration:

  • WornByMe / WornByFriend — populated in Start from the player setup / friend list.
  • PuppetMaster — the remote player’s PuppetMaster, if applicable.
  • AssetInfo — the required CVRAssetInfo component.
  • DataStore — optional CVRDataStore lookup.
  • faceTrackingComponents — list of CVRFaceTracking components discovered on the avatar.
  • materials / renderTextures — collected for shader replacement and cleanup.
  • boneIndex / boneIndexRev — human body bone dictionaries.
  • loadedObject — internal loader entry.

CVR-GameFiles/ABI.CCK.Components/CVRAvatar.cs, CVR-GameFiles/ABI.CCK.Components/CVRAvatarAdvancedTaggingEntry.cs