Another solution for bow animations

wuyan

Member
There are different types of characters in my game. And their body size and arm length can be customized. So I had trouble with bow animation. If the characters have different(or changeable) sizes or arm lengths. The bow animations cannot match the archer animations of all characters. I have to make separate animations for each bow, each character. This will increase a lot of work and not flexible. I used a method before, I adjust the scale of the characters skeleton, and the bow in hand will inherit this change. But there are some limitations.
1610297069683.png

Now, I found a better way. The test result are good at present. Simple and flexible. The draw point bone of the bowstring keeps position dynamic matching with the right hand bone. Targeted rigging for bow is required. There are three advantages to this approach.
1610297220877.png 1610297394373.png
1. Whether your character's size or arm length is the same or not, it can match very well.

2. Just need to adjust the bow position in your left hand roughly,don't need very accurately.

3. Can change the bow, bow animations, Characters, Archer animations at will. And all can match very well.

The tests are good at the moment, but I'm not sure will there be any other drawbacks.
 

Justin

Administrator
Staff member
Thanks for posting your solution. So are you using IK to position the right hand then?
 

wuyan

Member
Thanks for posting your solution. So are you using IK to position the right hand then?
Hi Justin,
I didn't. I let the right hand sub object rHandDrawPoint control the lBowDrawPoint bone position of the bowstring. Targeted rigging is needed, can refer to this bow. link :Rigged bow

And the IK you mean is using lBowDrawPoint to control the position of the right hand ?

The non dominate hand seem to can't work for bow? right? Later, when I used IK to adjust the position of the right hand, the trajectory of the right elbow seemed a little strange. So this time when I start to deal with this problem, I never thought about using IK.

You remind me that I should compare the two methods. If you have any good suggestions, please tell me keep freely. Thanks.
 

Justin

Administrator
Staff member
rHandDrawPoint and lBowDrawPoint sound specific to your model?
And the IK you mean is using lBowDrawPoint to control the position of the right hand ?
Yes, in this case the non-dominant hand is the right hand so you could use IK to position it. However, since you have a working solution I wouldn't mess with it.
 

wuyan

Member
rHandDrawPoint and lBowDrawPoint sound specific to your model?

1610327597748.png

I added a script component to the bow prefab. As shown in the screenshot. rHandDrawPointID


The rHandDrawPointID is used to find the rHandDrawPoint(ObjectIdentifier.ID = 21.) of the right hand .

When releasing the bow, let the bow animations or a spring replace rHandDrawPoint to control lBowDrawPoint. These are done through animation events. I haven't finished all the code yet. If you have better methods or suggestions. Please let me know. Thank you!

Yes, in this case the non-dominant hand is the right hand so you could use IK to position it. However, since you have a working solution I wouldn't mess with it.
Maybe my method is wrong, I didn't succeed in the test before. If it works, it seems more convenient. If using the non dominant hand. Do I still need my own code to let lbowdrawpoint no longer control the position of the right hand when the bow is released? Or does UCC already have this function.
 

Justin

Administrator
Staff member
Do I still need my own code to let lbowdrawpoint no longer control the position of the right hand when the bow is released? Or does UCC already have this function.
You will need to use the state system, this page gives more details:


If you have a working solution then I would not change it.
 

wuyan

Member
You will need to use the state system, this page gives more details:
Hi Justin, I hope to use UCC's functions as much as possible, so as to avoid my project becoming messy later. So I just tried IK solution again, but there are still some problems. So I will still use my solution.

1. If there is relative shaking between the left hand and the torso in the animations, the bow will pull the IK of the right hand to shake together, which makes the right arm look very strange.

2. I want to keep the IK weight of the arm and hand at 0 when the bow is aiming. It looks more real. But this is contradictory to the IK solution.

In addition, I have two problems. Please help me analyze them.

1. When the rifle has different Foregrips, the left hand fingers animations is different. What's a good way to match different fingers animations?
1610387159825.png

2. When I tried the IK solution just now, I didn't succeed. Please take a look the screenshot. In the three animation states of idle, aim, pullback, I adjust the position of the right hand in one state, and this position will be offset in other states. The IK target of bow is always controlling the right hand,and the IK weight of the arm and hand is always 1. This problem is not important because I'm not using this solution. But I didn't find the cause of the problem. If you have a direction, please give me a guide.
1610387622065.png 1610387980175.png

Thank you so much!
 
Last edited:

Justin

Administrator
Staff member
1. When the rifle has different Foregrips, the left hand fingers animations is different. What's a good way to match different fingers animations?
Unity's IK solution can't handle fingers so your only real option is FinalIK. Note that the FinalIK integration does not place fingers so you'll need to come up with something on your own for that.

1. This problem is not important because I'm not using this solution. But I didn't find the cause of the problem. If you have a direction, please give me a guide.
I would stick to your original solution. It doesn't look like it works as well with the different pullback states.
 
Top