Seeking advice for making non-humanoid avatar

Does anybody have advice regarding how to make a non-humanoid avatar? To be more specific, I’m trying to make an HK-Tank avatar from the Terminator franchise

1 Like

If you want to control those arms in VR you should make it a humanoid but have invisible legs so he just drags across the floor. If not you can just have him as a generic rig.

I’m going guess that only head, side turrets, chest and treads are moving parts. In order to get any avatar to work with VRChat IK, it must be a humanoid rig. I would probably make something like this using constraints. Assuming the model already has a functioning generic rig, create a weightless humanoid shaped rig inside of the model. Then, use rotation constraints on the weighted generic bones to move as desired. Pic related is an example where I used the constraints to move a head along Unity’s y-axis only. The locked axes are those that will move with the assigned humanoid bone, while the unlocked axes will hold the original rotation of the bone.
2020-05-21 18_23_42-unity
You could constrain the rotation of the guns to the wrists and the chest, well, to the chest on their appropriate axes. Constraints can go a bit wonky when locking on one axis, so it’s just a matter of messing with them until they work. Also note that anything not weighted to the head or its children will still be visible and clip through your face, and that IK will override constraints placed on any of the IK driven bones (from my experience). For moving the treads, provided the treads are rigged, you could make a walking animation of the treads moving.

You could use a humanoid rig just to track yourself, weight bones onto the parts you want to move, then use rotation constraints on say, the hand for the turret gimbals, the head tracker to the sensors up top, the center mass to the chest, and then the hip bone for the legs.

The issue with going a generic avatar route is that it’s entirely powered by animations attached to the avatar controller, so you would need to make animations for moving in each direction, an idle animation, turret swiveling animations, etc. That’s for SDK2.0 tho, with 3.0 Generic Avatars are a lot more usable.

This isn’t an entire applicable to your tank, but with 3.0 you can set an object for looking around, then set specific rotations or positions for that direction and it’ll blend. So that could be useful for you, but we’d have to wait for SDK3.0 to come out for avatar usage to get ahold of that.

First method would be recommended, unless you’re desktop, then the harder generic avatar method would be recommended.

If you’re seeking advice on how to set one up, then check out the example in the SDK called SimpleAvatarController.

On the animator tab, select the “Animation Layer” layer and double-click into the blend tree there. That’s where you set your walk/idle motions. There’s also an airborne animation you can give it at the root of the animation layer.

Now if you’re asking for if you should use a generic avatar, you’re probably better off trying to find a way to make it humanoid. Generic rigs have a LOT LOT LOT of problems.

As of current time, you cannot use:

  • Visemes
  • Gesture Overrides
  • Emotes
  • Chairs (in-game - no sitting as default; can still be added to the avatar)
  • Detailed animations. (only walk, idle and falling are supported)

Also, since the Network IK change a while back, animations are broken. For a while it would only ever play the idle animation. They recently tried fixing it, but now it will play the falling animation when you are walking instead of the movement animation, so that’s something to keep in mind.

All in all, generic rigs can be fun for small, quick avatars that you have some simple animations for, but if you are planning something more advanced, you’d need a humanoid rig and the advice of the posts above. :stuck_out_tongue_winking_eye: