A powerful Unity editor tool that streamlines the creation of Advanced Avatar Settings for ChilloutVR avatars by automating animation clip generation, animator merging, and avatar parameter setup.
β¨ Animator Merging
- Automatically merge multiple animator controllers into your CVR base controller
- Creates timestamped backups before merging
- Handles duplicate layer names intelligently
- Preserves all parameters and layers
π¨ Property Animation Generation
- Generate animation clips and avatar entries from GameObject properties
- Support for material properties across multiple objects
- Animate colors, floats, integers, and booleans
- Choose between Toggle, Slider, Dropdown, or Color picker settings
- Custom value ranges for precise control
π§ Material Property Support
- Find all objects using a specific material automatically
- Select/deselect which objects to animate
- Animate shader properties like emission, colors, metallic, etc.
- Support for color gradients and value ranges
π Multi-Clip Merging
- Combine multiple animation clips into a single avatar entry
- Perfect for organizing complex animation sequences
- Download the latest release from the Releases page
- Extract the files to your Unity project
- Place
CCKEnhancementComponent.csin yourAssetsfolder - Place
CCKEnhancementEditor.csin yourAssets/Editorfolder
Requirements:
- Unity 2021.3 or higher (ChilloutVR supported version)
- ChilloutVR CCK installed
- Open CVR Tools > CCK Enhancement from the Unity menu
- Drag your avatar root into the "Avatar Root" field
- Use the three main sections to enhance your avatar
- Select your avatar root GameObject
- Add Component > CVR Tools > CCK Enhancement Component
- Configure settings directly in the Inspector
Purpose: Merge multiple animator controllers into your CVR Advanced Avatar base controller without manual copying.
Steps:
- Ensure your avatar has Advanced Avatar Settings initialized
- Click "Add Animator Controller" to add controllers to merge
- Drag animator controllers into the slots
- Click "Merge Animators"
Result:
- All animators are merged into the base controller
- Automatic backup created in
Assets/AdvancedSettings.Generated/Backups/ - Duplicate layers are renamed automatically (e.g.,
Layer_1,Layer_2)
Purpose: Automatically generate animation clips and avatar parameters from GameObject or Material properties.
Steps:
- Leave "Use Material Property" unchecked
- Select your target GameObject
- Choose the property to animate from the dropdown
- Set the "Advanced Avatar Property Name"
- Choose a "Settings Type" (Toggle, Slider, Dropdown, or Color)
- Set value ranges (e.g., Float Value 0: 0, Float Value 1: 1)
- Click "Generate Animations + Avatar Entries"
Example - Toggle Light:
- Target Object:
Light - Property:
Light/m_Intensity - Property Type:
Float - Settings Type:
Toggle - Float Value 0:
0(off) - Float Value 1:
1(on)
Steps:
- Check "Use Material Property"
- Select your material
- Click "Find Objects with Material"
- Select/deselect which objects to animate
- Choose the material property (e.g.,
material._EmissionColor) - Choose Settings Type
- Set color or value ranges
- Click "Generate Animations + Avatar Entries"
Example - Emission Color Toggle:
- Material:
MyEmissiveMaterial - Property:
material._EmissionColor (Color) - Settings Type:
Toggle - Color Value 0:
Black(off) - Color Value 1:
White(on) - Found Objects: 15 meshes selected
Example - Emission Strength Slider:
- Material:
MyEmissiveMaterial - Property:
material._EmissionStrength - Settings Type:
Slider - Float Value 0:
0 - Float Value 1:
5
Example - Color Gradient Dropdown:
- Material:
MyMaterial - Property:
material._Color (Color) - Settings Type:
Dropdown - Number of Options:
5 - Creates color gradient from Color 0 to Color 1 across 5 options
Purpose: Combine existing animation clips into a single avatar parameter entry.
Steps:
- Click "Add Multi Clip Merge Entry"
- Set the "Advanced Avatar Property Name"
- Choose Property Type
- Click "Add Animation Clip" and add your clips
- Click "Merge Clips to Avatar Entries"
Example - Gesture Animations:
- Combine 8 hand gesture animation clips
- Create one dropdown with all gestures
- Easier to manage than individual entries
Before CCK Enhancement:
- Create 2 animation clips manually (lights on/off)
- Set up advanced avatar toggle entry
- Configure animation clip references
- Test and debug
- Time: ~10 minutes per light
With CCK Enhancement:
- Select light GameObject
- Choose
Light/m_Intensityproperty - Set Toggle with values 0 to 1
- Generate
- Time: ~30 seconds per light
Improvement: 95% faster β‘
Before CCK Enhancement:
- Manually find all 50 objects with the material
- Create 2 animation clips
- Add all 50 objects to each clip
- Set emission curves for each
- Set up avatar entry
- Time: ~2 hours
With CCK Enhancement:
- Select material
- Click "Find Objects with Material" β finds all 50
- Choose
_EmissionColorproperty - Set color range
- Generate
- Time: ~2 minutes
Improvement: 98% faster, 100% less error-prone π―
Before CCK Enhancement:
- Create material color parameter
- Set up advanced avatar color entry
- Configure shader property binding
- Time: ~5 minutes
With CCK Enhancement:
- Select material
- Choose color property
- Set Settings Type to "Color"
- Generate
- Time: ~30 seconds
Improvement: 90% faster π
Before CCK Enhancement:
- Create 2 animation clips (min/max metallic)
- Set up slider entry
- Configure float range
- Time: ~8 minutes
With CCK Enhancement:
- Select material
- Choose
_Metallicproperty - Set Slider from 0 to 1
- Generate
- Time: ~45 seconds
Improvement: 91% faster β¨
- Animation Creation: Automatically generates clips with proper curves
- Bulk Operations: Animate properties across dozens of objects simultaneously
- No Manual Entry: Avatar settings created with proper configuration
- No Missing References: Clips automatically linked to avatar entries
- Correct Paths: Animation paths generated accurately
- Type Safety: Property types validated before generation
- Iterative Development: Quickly test different value ranges
- Material Variants: Easily create multiple color/property variants
- Prototyping: Rapid creation of avatar parameters for testing
- Automatic Backups: Never lose your animator setup
- Naming Conventions: Consistent file and parameter naming
- Folder Structure: Generated assets organized in dedicated folder
Assets/
βββ AdvancedSettings.Generated/
β βββ Backups/
β β βββ BaseController_Backup_20251113_001500.controller
β βββ AvatarName_PropertyName_Off.anim
β βββ AvatarName_PropertyName_On.anim
β βββ AvatarName_MergedClip.anim
- Bool: True/false toggles
- Float: Numeric sliders or inputs
- Int: Integer values for dropdowns
- Color: RGBA color values
- Toggle: On/off switch (2 animation clips)
- Slider: Continuous range (2 animation clips: min/max)
- Dropdown: Multiple options (n animation clips)
- Color: In-game color picker (no animation clips)
- Float (e.g.,
_Metallic,_Smoothness) - Range (e.g.,
_Glossiness) - Color (e.g.,
_Color,_EmissionColor) - Vector (e.g.,
_MainTex_ST)
For boolean toggles, you can swap the on/off states:
- Useful when you want "enabled" to mean "off"
- Example: Inverting a light intensity toggle
When creating dropdowns with numeric properties:
- Values are automatically interpolated between min and max
- 5 options from 0 to 10 β [0, 2.5, 5, 7.5, 10]
For material properties:
- Found objects can be individually enabled/disabled
- Useful for excluding specific meshes from animation
- Timestamped backups:
Controller_Backup_YYYYMMDD_HHMMSS.controller - Prevents data loss during merging operations
- Easy rollback if something goes wrong
- Test in Play Mode: Always test generated animations in play mode before uploading
- Use Descriptive Names: Name your properties clearly for easier management
- Check Material Slots: Ensure materials are in the correct slot when animating
- Backup Manually: Keep manual backups of important animators before major changes
- Start Simple: Begin with toggle properties before moving to complex sliders/dropdowns
Animation clips not working:
- Verify GameObject paths are correct
- Check that component/property names match exactly
- Ensure avatar root is set correctly
Material properties not found:
- Verify the shader exposes the property
- Check if property is marked as animatable in the shader
- Some shader properties may not be accessible
Merge failed:
- Ensure Advanced Avatar Settings are initialized first
- Check that base controller exists and is valid
- Verify you have write permissions to the folder
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.