PhysBones is a set of components that lets you add secondary motion to avatars, permitting you to add motion to things like hair, tails, ears, clothing, and more! Using these well will make your avatar seem more dynamic and real.
Defines a chain of bones to be animated with PhysBones. These can be used to simulate soft-body and secondary motion like hair, tails, floppy ears, and more! It has many configuration options, and can be set up in many ways.
vrchat dynamic bones download
Download Zip
https://t.co/MMxhrIXI5E
Root Transform - The transform where this component begins. If left blank, we assume we start at this game object.
Ignore Transforms - List of ignored transforms that shouldn't be affected by this component. Ignored transforms automatically include any of that transform's children.
Endpoint Position - Vector used to create additional bones at each endpoint of the chain. Only used if the value is non-zero. Usually you'll want to increase this along +Y, which points "up" the bone.
Multi-Child Type - Behavior of the root bone when multiple bone chains exist. This has three modes:
If set to Ignore, the root bone will not move, and will ignore physics. Useful for things like hair, since you can use one Physbone component on the root to affect all of the hair bones!
Pull - Amount of force used to return bones to their rest position.
Spring - Amount bones will wobble when trying to reach their rest position. Only available in Simplified Integration Type.
Momentum - The amount bones will wobble when trying to reach their rest position. Only available in Advanced Integration Type. Despite the description being the same, the effect is slightly different than Spring.
Stiffness - The amount bones will try to stay at their resting position. Only available in Advanced Integration Type.
Gravity - Amount of gravity applied to bones. Positive value pulls bones down, negative pulls upwards.
Gravity Falloff - Only available if Gravity is non-zero. It controls how much Gravity is removed while in the rest position. A value of 1.0 means that Gravity will not affect the bone while in rest position at all. This allows you to have the effects of gravity when the bone is rotated off the initial position without affecting the bone's rest state.
If set to World (Experimental), Immobile negates only positional movement from the reference of the scene root transform. Motion via animation or IK still affects the bones normally. This mode may change in the future!
Radius - Collision radius around each bone in meters. Used for both collision and grabbing.
Allow Collision - Allows collision with colliders other than the ones specified on this component. Currently the only other colliders are each player's hands and fingers as defined by their avatar.
Colliders - List of colliders that specifically collide with these bones.
Stretch Motion - The amount motion will affect the stretch/squish of the bones. A value of zero means bones will only stretch/squish as a result of grabbing or collisions.
Max Stretch - Maximum amount the bones can stretch. This value is a multiple of the original bone length. Note: Maximum Bounds
Max Squish - Maximum amount the bones can shrink. This value is a multiple of the original bone length.
Allow Grabbing - Allows players to grab the bones.
Allow Posing - Allows players to pose the bones after grabbing.
Grab Movement - Controls how grabbed bones move. A value of zero results in bones using pull & spring to reach the grabbed position. A value of one results in bones immediately moving to the grabbed position.
Snap To Hand - When a bone is grabbed it will snap to the bone grabbing it.
However, you should aim not to have that many transforms to animate in the first place. Try merging bones in the chain upward to their immediate parents. Community-created tools like Cat's Blender Plugin can do this for you.
Do not set Humanoid bones as PhysBone Root bones. In other words, do not set Hip, Spine, Chest, Upper Chest, Neck, Head, or any of the limb bones as Roots. This will cause major issues.
Instead, duplicate the bone you want to use as root and re-parent all the children bones you want to animate to that new duplicate root. This should be done in Blender. Community-created tools like Cat's Blender Plugin can do this for you.
Because of the multi-threaded nature of PhysBones, it isn't always the most efficient to put all bones into a single chain. Multiple components allows us to break up the work across threads. However, you should still strive to have fewer components... but it's not as bad to have a few on your avatar as it was with Dynamic Bones.
If you really need a number, you should consider splitting sets of chains when you're getting over 128 transforms affected by a single component. If you have a dress with 256 bones and it splits at a root, splitting it into two or three components will work.
However, if you're just dealing with something on the order of 32 bones... don't worry about it. As you can probably tell, these aren't strict rules! We'll likely introduce some soft warnings later on when something looks like it should be set up a different way.
Each VRCPhysBone component has a bounding box that grows and shrinks as bones move around. These bounding boxes aid the collision detection for players touching and grabbing PhysBones. For efficiency, bounding boxes are forced to a maximum of 101010 meters. PhysBones can go outside of this range and continue to work as expected. However, players may be unable to touch or grab those bones depending on their location.
The bounding box only accounts for bones with collision and a radius greater than zero. In situations where you want to provide extremely long stretching, as long as bones with collision exist past the stretching point, you can avoid hitting this maximum bounds limit.
Root Transform - Transform where this collider is placed. If empty, we use this game object's transform.
Shape Type - Type of collision shape used by this collider. You can choose between a Sphere, Capsule, or Plane collider.
Radius - Size of the collider extending from its origin.
Height - Height of the capsule along the Y axis.
Position - Position offset from the root transform.
Rotation - Rotation offset from the root transform.
Inside Bounds - When enabled, this collider will contain bones within its bounds instead of keeping them out.
Bones As Sphere - When enabled, this collider will treat PhysBone collision radii as spheres centered on the bone's position rather than capsules running the length of the bone.
Over 6K Downloads! Thank you all so much for the support!
Converts your Dynamic Bones better to an from Physics Bones. Still requires manually adjustments!
The script fixes most issues why normally dynamic bones can't be converted to physics bones.
Regarding the root bone issues, no end bones on avatars or even that any physics bones on a ik-bones requires isAnimated to be on.
It fixes automatically the isAnimated on any ik-bones! (Even if you turn isAnimated off in the converter, it will automatically only add the isAnimated on those ik-bones so you don't have issues).
Avatar seen in the pictures/videos is Edited version Amelia from Wetcat, can be found on there patreon!
If the following error shows up in your console
The type or namespace name 'Dynamics' does not exist in the namespace 'VRC.SDK3'
Redownload the VRChat SDK of the website and error will be gone You can't scale any physics bones they start to break. (so no hair scaler etc)
> Every physics bones need to exist of atleast 2 bones (adding a end bone fixes it, probably a fix for the small bone issue.)
> Try to avoid physics bones on your ik-bones (hip/chest etc) (Use rootbone fix)
The dynamic bones package can be bought and downloaded via the Asset Store in Unity. If the window is not open you can press CTRL+9 to open it or go to Window -> Asset Store. There you just search for Dynamic Bones and get it.
In order to be able to use the script you should add bones to the elements that you want to move unless you already have a model with armature with these bones. Open or import the model into Blender and add the bones and then weight paint the respective parts of the model. (Note that the number of dynamic bones shouldn't be too big since it will use your CPU to make them move and it's very demanding on it. VRChat limits the number of Dynamic Bones to 32 and Colliders to 8. So keep it simple.)
In my model's case I want hair, breast and skirt bones. A good thing to do is parent the bones so you can then apply one Dynamic Bones script to each parent bone to move all the children. This is not necessary in theory but you would have to exclude the bones in Unity and you can end up with unexpected results as well.
To parent the bones click on the armature and choose Edit mode. Select all the parent bones of the bones you want to use with the dynamic bone script. Select the root bone last and then right-click it again. Choose Parent -> Make and then choose Keep Offset. This will move all the selected bones and their children under the root bone you chose while keeping them placed where they were. Do this for all the other group of bones (skirt, breasts etc.).
Now drag the root bone to the component's Root field. This alone will make the dynamic bones move but in order to get a good results you will have to play a bit with the values below. Update Rate should stay 60 since more will be cut down to 60 and lower rate will make the animations look trash. Damping, Elasticity, Stiffness, Inert, Radius are the values you can fiddle with. I suggest clicking on Play and try what the values actually do. Hair will have different values than clothes or ears for example. You want hair to move around quite fast and quite a lot while clothes won't move that much and ears are usually pretty stiff. For each value you can use a distribution curve which adds even more realistic feel to the avatar. Just click on the gray field next to Distrib and choose or draw the curve you want. When you are satisfied with the values you can click on the cogged wheel and choose 'Copy Component'. Then click on Play again to stop the mode and then navigate to the Dynamic Bone component. There you can click on the cogged wheel again and click on Paste Component Values.
35fe9a5643