By Dreadrith and JustSleightly
Carbon Copy is a feature-rich constraint-based clone system built for VRChat users and designed with performers in mind. Its features are entirely customizable and modular while optimizing parameter memory, and can be installed with one-click without any VRChat 3.0 or advanced Unity experience whatsoever.
With the earliest prototypes/teasers of the system dating back to 2020, we've spent many years polishing these features for you...
Available now on gumroad
Specifications | Stats |
---|---|
Memory |
9 - 22 |
Icons |
38 |
FX Layers |
30 |
Animation Clips |
106 |
- Drag and drop setup - works with any humanoid avatar
- Supports 2 clone suites - Mimic and Mirror
- Dynamically lock and unlock the offset (without reset) of your Mimic clone with real body movement using the Confirm feature
- Supports 3 different Mirror clone modes - Standard, Radial, and Vertical
- Independently control the visibility of yourself or your clone with Invis and Hide
- Instantaneously swap visibility from yourself to your clone with Swap
- Freeze your clone or drop a frozen clone in place
- Control where your clone appears before it's visible with Anchor
- Pick up, grab, or bind your clone to different parts of your body
- Pass your clone like a spring-joint ball between your hands or orbiting around your body
- Supports custom bind targets, such as other bones, props, or even full compatibility with other systems like this one
- Intentionally lag your clone by dropping its simulated FPS as a bonus effect
- Scale your clone up or down to whatever % you configure
- Control whether your clone follows your movement proportionally or not on the Y axis or XZ plane
- Quick toggle between scaled and unscaled clones
- On-screen toggleable HUD icons indicating what features are active without looking down or opening your menu
- Toggleable Gesture Control for Gesture-Hold based activation of the core clone features
- Toggleable Jutsu Control for Gesture-Combo-Toggle based activation of the core clone features
- Toggle whether PhysBones Invert while in Mirror Vertical mode
- Automatically shrinks the clone's head when near your own during swap locally
- Supports running the script multiple times for multiple clones on the same avatar automatically
- Can replicate your lip-sync visemes to your clone
- Can automatically copy all animations to your clone without using more layers (supports blendtrees and sub-state-machines)
- Can automatically remove certain component types from the clone
- Automatic Write Defaults detection and compatibility with both on/off
- Automatically disable facial expressions while using gesture/jutsu control
- Automatically adds descriptor colliders and senders to the clone and includes them in PhysBones with Allow Collision
- Automatically optimizes your parameter memory saving up to 20 memory other systems would use. Up to 28/29 (96%) of the menu options fit within 8 memory!
- System can be removed with one-click removal
- Basic Unity experience + VRChat SDK3 uploading experience.
- A validated license key for first time activation.
- License keys can be purchased from the store.
- An active internet connection while in Unity in order to use the tool - cannot be used offline.
- Only compatible with Unity for Windows - not compatible with Unity for Mac/Linux at this time. Windows 11 is now compatible.
- Pre-requisite import - VRChat Creator Companion SDK version
3.1.13
or newer.
Carbon Copy can be accessed from the top toolbar by clicking DreadTools > Carbon Copy.
If you have never used this on this PC before, you will see a field labeled Enter your license key. Input your license key from your purchase and click activate. This is a one-time-use key that will authorize the current PC for future use of Carbon Copy.
If your license key is not working due to it already being in use, click the Transfer License option.
After first time successful validation, you will have the opportunity to choose between Guided Mode or Advanced Mode.
Follow the instructions on the installer window to proceed with installing Carbon Copy with its default configuration. If you'd like to further customize the Carbon Copy installation, you will need to use Advanced Mode.
Main
Avatar
The Avatar that you want to apply Carbon Copy to. Must have a VRC Avatar Descriptor.
Clone Name
The name of the clone in the hierarchy.
Clone Type
The clone mode(s) to include in the Carbon Copy generation.
Clone Modes Description Mimic Only
Includes only the Mimic clone feature suite. Enables the option for Optimize Clone to have a better performance clone Mimic + Mirror
Includes both the Mimic and Mirror clone feature suites. Uses significantly heavier performance HUD Position
Select the general position on your screen where the Carbon Copy HUD should be displayed.
HUD Color
Select the HDR color and opacity of the HUD that will be displayed.
Existing Clones
Lists any existing clones on the currently selected Avatar.
Clicking an existing clone's name will now highlight it.
Existing clones can be hidden and unhidden with the eye icon next to their names.
Scaling
Adds scaling functionality to your clone. Uses +8 Memory. Enabled by default.
Stabilize Scale
Helps keep the clone in place while scaling. Uses +1 Memory. Enabled by default.
Save Scale
Scale will persist across instances and avatar load. Disabled by default.
Min/Max %
The minimum or maximum scale percentage the clone can be scaled to.
Proxy
Allows using a different humanoid Avatar as the clone.
Proxy Type
Model Only
Merge avatar model only without any FX animations/menus FX Avatar Merge
Merge entire avatar as a clone including FX functionality and menus. Will increase required expression parameter memory by the Proxy's memory usage. Clone FX
FX layer Animations will affect the clone as well if the hierarchy matches. Allows your clone to do the same animations as you. Incompatible with Proxy FX Avatar Merge.
Proxy Avatar
The Avatar to be used as the clone in Carbon Copy. Requires a humanoid Avatar to use as a clone for CarbonCopy.
Force T-Pose
Forces the two avatars into a T-Pose, this will help making the constraints on the clone be more accurate.
Preferences
Select whether the below settings will be saved to persist across instances and avatar loads, and if they are enabled or disabled by default.
Scale Proportional Movement XZ
When enabled, clone will move proportionally to its own scale on the XZ plane.
Scale Proportional Movement Y
When enabled, clone will move proportionally to its own scale on the Y axis.
HUD Displays On Screen
When enabled, a HUD displays on the screen to show you your current active functions and settings.
Vertical Inverts PhysBones Gravity
When enabled, Vertical Mirror will invert the gravity/force on PhysBones.
Configuration
Lag Frame Rate
Define how many simulated frames the clone should have when you enable Lag in the Quick Menu
PhysBone Handling
How to deal with PhysBones that exist on the humanoid armature.
Option Description Regenerate
Recursively apply the same PhysBone to its children until it's not a humanoid bone Ignore
Don't apply the mimic or mirror constraint logic to these bones Apply Anyway
Pretend there's no PhysBone Extra Bind Type
What the last extra Binding button should bind to.
Option Description Spring Ball
A simple spring ball system will be generated and the clone binds to it Target
Choose a target transform that the Clone will bind itself to Anchor Direction
What direction the mirror clone's anchor should align to.
Option Description Head
Mirror starting from the direction your head is looking in (original behaviour) Hips
Mirror starting from the direction your hips are facing Root
Mirror starting from the direction your playspace is oriented in (thumbstick control) Clone FX Animations
FX layer Animations will affect the clone as well. Allows your clone to do the same animations as you. Incompatible with Proxy FX Avatar Merge.
Clone LipSync
Generates viseme parameter controlled Lipsync for the clone based off of your current viseme blendshapes.
No Gesture Expressions
Sets your facial expressions to the idle state when Gesture or Jutsu controls are enabled, or when using Spring Ball Bind gestures.
Optimize Mimic
Replaces PhysBones with Rotation Constraints on Mimic. Incompatible with Mirror, and is disabled if
Mimic + Mirror
is selected under Clone Type.Descriptor Colliders
Adds colliders to the Clone's hands and fingers based on the avatar descriptor's colliders.
Descriptor Senders
Adds contact senders to the clone based on the avatar descriptor's colliders.
Clean FX Controller
FX Controller will be optimized in size by removing any sub-asset that's not used in the controller. This feature is available for manual use in Controller Editor.
Proximity Head Shrink
If enabled, the clone's head will locally shrink while your head is inside it during Swap. This may cause PhysBones on your clone's head to exhibit weird behaviours in mirrors only to yourself due to PhysBones scaling to 0.
Write Defaults
Set the Write Defaults that Carbon Copy will generate its animator states with. This will attempt to be automatically detected based on your existing FX playable layer.
Generated Assets Path
Define where all the newly generated folders and assets will be generated.
By default, this is Assets/DreadScripts/Carbon Copy/GeneratedAssets/.
Clean Up
Optional mass-removal of components from the generated clone.
Remove Clone Cameras
Removes all Camera components on the clone.
Remove Fixed Joints
Removes all Fixed Joint components on the clone. This is particularly used to make world physics fixes like SleightlyBall compatible on clones.
Remove Clone Audio
Removes all Audio Source components on the clone.
Remove Clone Colliders
Removes all Collider components on the clone.
Remove Clone Lights
Removes all Light components on the clone.
Remove Clone PhysBones
Removes all PhysBone and PhysBone Collider components on the clone.
Multi-Clone
Allows generating multiple separate clones.
To setup multiple clones, enable Multi-Clone and enter a unique suffix, then apply. You set them up one by one like this, and each clone needs to use a different suffix.Multi-Clones are now automatic! Re-run the script on an avatar with Carbon Copy and it'll automatically handle creating a new separate clone.
Each clone has independent menus from one another, and can be configured with different settings. They each have their own parameters and memory cost.
Apply Carbon Copy!
Click to apply Carbon Copy according to all the inputs above.
After generation, the clone will appear as enabled, and a Hide Avatar button will appear in place of Apply Carbon Copy. Click Hide Avatar to disable the clone and finalize setup.
Utilities
Memory Calculations
Hovering over the Memory Cost will tell you what's using memory. You must have enough memory to install Carbon Copy. You may enable or disable certain features that contribute to the cost.
Feature Memory Cost Carbon Copy
8 HUD + Cull
1 Scale
8 Stabilize Scale
1 Saved Preferences
0 - 4 Warnings/Errors
Avatar not set
Please populate an avatar to generate Carbon Copy on.
Avatar Position/Rotation is not at (0,0,0)!
Press Fix to center your Avatar at the origin to prevent world constraint issues.
Avatar doesn't have an Animator Component
Make sure your Avatar Root with the Avatar Descriptor has an Animator on it. Most FBXs come with this by default, so this might indicate something happened to yours that needs to be fixed.
Avatar's Animator requires an Avatar asset in the Animator
The Animator component doesn't have an Avatar defined in it, which means it can't tell if the Avatar is humanoid or not. Please assign the Avatar to this Avatar Descriptor.
Your Avatar's Descriptor is set as Non-Humanoid
The avatar's rig is not set to humanoid in Unity. Please set it to humanoid and map the required bones before proceeding.
Proxy Avatar not set
Only displayed if the Proxy module is in use.
Please populate a proxy avatar to generate Carbon Copy on.
Proxy Avatar requires an Avatar Asset in the Animator
Only displayed if the Proxy module is in use.
The Animator component on the proxy doesn't have an Avatar defined in it, which means it can't tell if the Avatar is humanoid or not. Please assign the Avatar to this Avatar Descriptor.
Target Avatar is not Humanoid
Only displayed if the Proxy module is in use.
The proxy avatar's rig is not set to humanoid in Unity. Please set it to humanoid before proceeding.
Face Mesh not found on Avatar
Expression Disabling and LipSync will be ignored.
Mesh Renderer Toggles Detected
Rendering component toggling is used by CarbonCopy and may override your FX animations and cause unexpected issues. Try to convert these animations to use gameobject toggles instead, or remove them entirely.
Write Defaults on FX detected as Mixed
Write Defaults will be set to Off by default. You can change this under the Configuration module.
Avatar requires __ free memory to contain the new parameters
The current avatar is currently using too much expression parameter memory. Please remove some 3.0 from your existing model to make room for Carbon Copy.
Avatar does not have enough free control slots
The Expressions Menu on the Avatar Descriptor does not have enough menu space to add the control for Carbon Copy. Free up some menu space.
Your Avatar's Action playable layer is set as FX
This is an uncommon bug due to the changing of Avatars in your Animator component or the switching between Generic/Humanoid rigs while having an Avatar Descriptor. Click Fix to resolve this, and make sure to replace your custom Action layer if you had one.
TPose Controller with WD On on the topmost default state!
Having write defaults on in the default state of the first layer of your T-Pose controller may sometimes cause obscure issues. This has been observed with Carbon Copy where the Clone would not appear in mirrors nor cameras locally.
Press Fix to set the write defaults on this state off.
Delete
Clean Up: Removes Carbon Copy from affected assets
Revert: Reverts affected assets to the originals prior to applying Carbon Copy
Both Remove Carbon Copy:
- Deletes the CCopy World Space.
- Removes all Carbon Copy Parameters.
- Deletes all Carbon Copy layers from FX.
Note that the clean up doesn't delete assets in the Generated Assets folder as to avoid deleting any important files. It also does not remove any properties from animation clips or paths in masks that it previously added.
For a clean rollback, simply use your original assets again. Carbon Copy uses a copy of all assets so that no modification is permanent.
Check For Updates
Click the three lines next to the version number in the bottom left to check for any updates to Carbon Copy. Notifies you if there is one, and allows quick and easy download/import. Checks automatically once per day when opening the project.
Send Feedback
Click the three lines next to the version number in the bottom left to send feedback for Carbon Copy straight from Unity.
Verify
Click the three lines next to the version number in the bottom left to select when Carbon Copy verifies authentication.
On Display initiates authentication when the window is opened.
On Project Load initiates authentication when the project is opened.
Authorized User
If you have entered your Discord Username upon purchase, your name will appear on the tool. Otherwise, this label is hidden.
Mimic Menu
Mimic
Toggles a Mimic clone that follows your movements one-to-one. Spawns where you are standing or where you had placed the anchor. Stays in place until confirmed.
Confirm
Toggles Confirm. Unlocks or locks Mimic's root movement that makes it move with you. Used to control and maintain any desired offset from the Mimic.
Mirror Menu
Standard
Toggles a Standard mirror mode clone. Spawns where you're standing. Moves as if a mirror dropped on top of you straight forward.
Radial
Toggles a Radial mirror mode clone. Same as Standard but root moves to your opposite on the XZ plane.
Vertical
Toggles a Vertical mirror mode clone. Spawns where your feet are and is flipped upside down.
Quick Menu
Invis
Hides your own avatar by disabling all rendering components.
Swap
Hides your own avatar and shows the clone. Automatically uses mimic's behavior if no clone is active.
Overrides Hide.
Anchor/Reset
Resets Clone's position and rotation to where you currently are. Disables Confirm.
If clone is disabled, sets down an anchor which can be used to make the Mimic clone spawn at that location right away.
Bind (Mimic)
Left Hand
Makes the Mimic clone move with your left hand.
Left Foot
Makes the Mimic clone move with your left foot.
Head
Makes the Mimic clone move with your head.
Extra/Ball
If you had chosen "Generate Spring Ball" with the tool in "Extra Bind Type". The Mimic clone will act like a spring ball. Fingerpoint gesture to switch hands, Open Hand gesture to make the clone orbit.
Chest
Makes the Mimic clone move with your chest.
Hips
Makes the Mimic clone move with your hips.
Right Foot
Makes the Mimic clone move with your right foot.
Right Hand
Makes the Mimic clone move with your right hand.
Lag
Reduces the clone's simulated framerate for a fake laggy effect.
Replaces Freeze if active.
Hide
Hides the clone's renderers without disabling the clone. The clone still functions normally.
Overridden by Swap and Freeze.
Freeze
Freezes the clone completely so it stays still. Compatible with Bind.
Overrides Hide. Replaces Lag if active.
Settings Menu
Dyn Invert
Toggles whether Vertical mirror will cause PhysBones to invert gravity.
Inverted PhysBone gravity will only take effect once the clone is re-enabled.
This option is not available if Carbon Copy was generated as
Mimic Only
.HUD
Toggles a HUD displays on the screen to show you your current active functions and settings.
Jutsu Control
Toggle clone functions using a combination of hand gestures and trigger/reset gestures. See Gesture Mapping for a usage explanation.
Recommended for users who prefer the gestures to persist without being held.
Gesture Control
Activate clone functions by holding hand gestures. See Gesture Mapping for a usage explanation.
Recommended for users with good Gesture Locking control and want maximum responsiveness during performing.
Scale Menu
Scale Toggle
Toggles whether the Scale radial puppet should take effect or not.
Proportional Movement Menu
Y
Toggles the proportional movement of the clone on the world's Y axis.
Reset
Resets the proportional offset due to the scale of the clone. This is separate from the regular reset or anchor. Regular reset or anchor trigger this automatically.
XZ
Toggles the proportional movement of the clone on the world's XZ plane.
Scale Size
Modifies the Scale of the clone based on the percentages chosen during installation.
Gesture Mapping
The Gesture Control mapping is as follows:
Hand Gesture Layout LShift Left Hand
RShift Right Hand
F2 Gesture Fist
Invis Freeze F6 Gesture Rock n Roll
Mirror Radial Mirror Vertical F7 Gesture Handgun
Swap Mirror Standard F8 Gesture Thumbs Up
Mimic Confirm To use Jutsu Control, the mapping is the same as the Gesture Control mapping above, but with two additional combo gestures to remember:
Jutsu Function Gesture Combination Trigger Gesture
Both hands Victory Reset Gesture
Both hands Rock n Roll Gestures will be ignored until the
Trigger Gesture
is activated. Once theTrigger Gesture
is activated, the next corresponding gesture to the Gesture Control mapping will be toggled, and persist after letting go of the gesture. To clear all active Gesture Controls, useReset Gesture
Is Carbon Copy compatible with VRChat Quest Avatars?
No, as VRChat Quest Avatars do not support Constraints at this time. Other clone systems are often not compatible either.
Is Carbon Copy compatible with Optimized Avatars?
It is not compatible by default, but manual modifications can be made to reach optimization standards. It is possible to get down as far as Good rating, assuming you had a near Excellent rating model prior to clone generation. You would have to remove the HUD mesh, and modify the
Show Self
andHide Self
animation clips to matswap your body mesh to an invisible material instead of toggling the body mesh to prevent yourself from being permanently culled. Any other stat reductions are dependent on what avatar you choose to use with this system.
Why do my particle systems have pink/missing material references?
Carbon Copy functions by rendering itself using the renderer property on all potential meshes. This includes the Particle System Renderer module, so if you have any particle systems that dont have the Renderer module enabled, then they will end up enabled by default even if there is no material/mesh there.
To resolve this, go to any of these unused renderer modules on your particle systems and set their render mode to None.
Why does my clone jitter in mirrors/cameras?
This is a side effect of the performance optimization implemented in Carbon Copy starting from version 1.2.5 that significantly improves performance for the wearer with no change to others.
To remove this performance optimization and jitter, you can delete the
CarbonCopy Optimizer
layer in the FX controller.
Why does my clone head have frozen PhysBones in mirrors?
Due to the way mirrors work in VRChat, the local head hiding of your clone when it's near your head causes PhysBones in the mirror to freeze
How do I fix No Gesture Expressions to also disable non-blendshapes (Tongues/Eyes)?
Navigate through your project files to your Avatar's Generated Assets folder for Carbon Copy and locate the animation clips for
Gesture
andJutsu
in the UI folder. You can add extra properties to this clip to account for resetting your non-blendshape animations.
How do I export Carbon Copy with my commercial package?
Assuming you have a commercial license for Carbon Copy, you will want to export the respective Generated Assets folder for your avatar alongside the rest of your avatar package.
You can find these generated resources at Save File Path/GeneratedAssets/. By default, this is Assets/DreadScripts/Carbon Copy/GeneratedAssets/.
Why is my project crashing after importing Carbon Copy?
Remove Carbon Copy via Windows File Explorer and check your project to see if it currently contains Cinemachine. You can locate this by clicking on
Window > Package Manager
from the top toolbar, and browsing the packages currently in your project. If Cinemachine is added, remove it. It is sometimes added through the VRChat Worlds SDK, so you may need to remove any remnants of the Worlds SDK from your project and this package manager window before removing Cinemachine.
Can I change the computer my license is registered to?
Yes, in the event you change hardware, you can use the Transfer License option when trying to verify your license key in Unity on the new hardware. There is a cooldown period to prevent abuse, and these logs will be monitored for misuse. If you need to re-transfer sooner than this transfer period, open a support ticket on discord.
Can I upgrade my personal license?
Yes, open a support ticket on discord and we can get that process started for you.
My license key isn't working!
Open a ticket on discord.
Where do I report a bug?
You can add issues to this github repository, or post it in the #bug-report channel for Carbon Copy on discord.
Where can I request features/make suggestions?
Feel free to leave these in the #suggestions channel on discord and we can discuss them in more detail.
I need more help!
If you need help with using Carbon Copy, reach out in the designated #support channel on discord so we or a community member can help. If you have private issues involving purchase details, open up a ticket instead.
ksivl - For the knowledge regarding relational positioning world constraints that contributed to the development of the dynamic positioning of the clone via Confirm
Quantum - For developing the HUD shader over many months with JustSleightly just for this project to combat the loss of toggle indicators in the Expressions Menu due to memory optimization
Joshuarox100 - Whose logic in Inventory Inventor is directly used for the memory optimization in this system