Greenlaw wrote: ↑Fri Mar 11, 2022 12:58 pm
Sorry, it's been awhile since I last had to this and my previous instructions that I wrote from memory had information missing.
The following is what I started writing last weekend, and I included a starter project that you can use to follow along with. Note: Step 29 has a problem. The problem is fixable as explained near the end of this post but I still need to figure out why it's happening.
(Edit: I figured it out. See the next post for the explanation.)
So I walked through the entire process and documented the steps to make sure I didn't miss anything important this time. Below are the steps for creating a mirrored duplicate version of an existing arm including a Smart Bone Dial for the hand. These steps can be modified for creating modular limb parts to reuse with other rigs.
The files used in this walkthrough can be downloaded from here:
modularDemo.zip
1. Create a body rig with a left arm.
2. Add a Smart Bone Dial (SBD) that closes the left hand.
3. Save the project.
For this example, the project is named body. Here's what the project looks like so far...
Now we'll create a mirror copy of the arm including the SBD. If you'd like to follow along starting with the next step, use the file called
Body.moho inside the folder called
Practice.
4. Save a copy of the project and name it
armL. This will be your backup in case you mess up the next step.
5. Save a copy of the project and name it
armR. This is where we will modify the arm and actions.
6. Rename the
Hand Close L Smart Bone Action (SBA) to
Hand Close R for each layer that has this Action. This Action exists in the following two layers.
- The
handL layer, (this SBA contains the point animation.)
- The
bonesA layer, (this SBA contains the keyframes for the SBD.)
7. Rename the
Hand Close L SBD to
Hand Close R. Note: It's critical that you have renamed the associated Smart Bone Actions
before you rename this bone.
8.Also rename the following bones named
armUpL, armLoL, elbowL, handL to
armUpR, armLoR, elbowR, handR
9. Let's check that the Smart Bone Actions still work. Step into an animation frame on the Mainline and try the
Hand Close R SBD. If it doesn't work, make sure all the name changes for the bones and actions are correct.
10. Just a couple more renames: Rename the
armL group to
armR, and rename the
handL group to
handR.
11. Now let's mirror the arm. Select the
armUpL bone and flip it horizontally. Note that the bone will flip in place, not across the body.
12. Select the
armL group layer and flip it horizontally. This will flip the artwork across the body because the origin is set in the center.
13. Hold Shift to constrain-drag the
armUpR bone into position on the R side of the rig. All the other arm bones will move with it.
14. Rename the
bonesA layer to
bonesB. This will help us later to distinguish the two layers in the Layers window.
15. Save this project file. The mirrored arm is now ready to import or paste into the original project file.
16. For this example, let's copy and paste the layers (as opposed to importing.) Keep the
armR project file open, and open the original
body project file.
17. Select the
bonesB layer in the
armR project file and choose
Copy Layer from the Edit menu. Note: Be sure to use Copy Layer, and not Copy.
18. Switch to the body project.
19. Click on the
bonesA layer and choose
Paste Layer from the Edit menu. (Note: Be sure to use Paste Layer, and not Paste.) The
bonesB layer will appear above the
bonesA layer.
20. In
bonesB, drag select the following bones:
armUpR, armLoR, elbowR, handR, Hand Close R and
SBD Mover, and then choose Copy. (Note: we're using Copy this time, not Copy Layer.)
21. Hide the
bonesB layer by clicking in its Visibilty icon. This will allow us to see
bonesA clearly.
22. Select the
bonesA layer and Paste. (Do not use Paste Layer.) This pastes the new bones into the original Bones layer.
23. Select the
armUpR bone and with the Reparent Bone tool, reparent it to
bodyUp bone.
24.
This next part is a little tricky; if this is not done correctly, the SBD may break. The SBD Mover bone we just pasted has been automatically renamed SBD Mover 1. Select this bone and move it off of the original SBD Mover bone. The Hand Close SBD will move along with it and reveal the original bones from underneath.
25. Deselect the bones
26. Choose the Reparent Bone tool, Alt-click the
Hand Close R bone, and then click the original
SBD Mover bone.
The Hand Close R SBD is now parented to the original
SBD Mover bone.
27. Delete
SBD Mover 1. The reason we needed to bring this bone along with the
Hand Close R SBD was to preserve the SBD's rotation values. Otherwise, the action would break when we reparented it. Now that we've successfully reparented the SBD, this second mover bone is no longer needed.
28. Almost done! In the
bonesB group, select the
armR group and drag it into the
bonesA group between the
Head layer and
armsR group.
27. The Actions should have come along with the
armR layers and the
Hand Close R SBD should recognize it. Go ahead and test the two Hand SBDs. They should each work independently.
If the right hand does not work, don't panic. This means you probably mis-parented the bone and broke the action, and fortunately this is easy to fix. Just select the
Hand Close R SBD, open its
Hand Close R action, delete the keys and recreate them. To create the first key, step into frame 1 and then click on the middle of
Hand Close R bone. This creates a rotation keyframe. R-click on the key and set its Interpolation to Linear. Next move to frame 24 and rotate the bone clockwise until it stops. This creates the second keyframe for the SBD's 'max' value. Switch back to the Mainline and it's all good!
29. Now test the arms. if the right arm is not bound correctly to the right arm bones, they probably hadn't been renamed in step 8. To preserve the binding for the right arm, the right-side bone names need to be different from the existing left-side bones
before you copy the bones and artwork to the
body project.
(Note: Shoot! When I reached this testing point, the binding of the right arm reverted to the original left arm bones but it's not because the bones hadn't been renamed earlier. I still need to figure out why this is happening, and I'll update this section when I do. In the meantime, see the note at the end of this post for info about how to fix this problem.)
30. Now we can select the
bonesB group and delete it.
Here's what the project looks like before we deleted the
bonesB group. Notice the right arm is now in place in the workspace and in the Layers Windows.
31. Save the project and test it.
Hope this helps.
As mentioned at the top, these steps can be modified for saving body parts as modular files and transferring them to other rigs. The key is to isolate the limb or part in its own project file, and
then rename the actions and bones so they don't conflict with the original bones and actions. You also need to preserve the rotation values of the SBDs by keeping the parent bone from the original rig until you're ready to reparent the SBDs.
I should also point out that the ONLY reason you would want to do this is if your part has a very complex set of actions associated with it. For example, in Boss Baby: Back In Business, the hands in some of the characters had controls for every finger and for full rotation of the hand (palm, sides, back, etc.) This was way too much data to recreate from scratch for every new character, so following the above procedure (or something close to it) was a great timesaver on that show.
Otherwise, if you only have a simple action like the single Hand Close SBD in the above example, you may be better off just copying the keyframes to a new action for the flipped limb.
Hmm...I guess this really is kind a complicated and probably not an exercise for beginners. FWIW, it really didn't take me long to do this, but I hope a future version of Moho can streamline this procedure.
Update: Shoot...the steps I described before Step 29 for preserving the binding for the right arm isn't working, and right now I'm too tired to figure out why. Rebinding the limb in this case is easy: the
handR group is using Layer Bind to the hand bone, and the
armR layer is using Point binding. Still, the binding really should have come over because right arm was working fine with the renamed bones in the previous stage.
I'll update this info when I figure out what went wrong in Step 29. Actually, I'm sure I'll return to this post a lot to improve it. Also, once I clear up this issue, I'll think about recording a video...that might be easier to follow.