Separate, multi-bone arm layer, parented...

Wondering how to accomplish a certain animation task? Ask here.

Moderators: Víctor Paredes, Belgarath, slowtiger

ladlon
Posts: 37
Joined: Thu May 26, 2016 4:32 am

Separate, multi-bone arm layer, parented...

Post by ladlon »

Hi. I ran into something during my latest animation project, and I'm not sure how something can be done (if it even can)...

I have a multi-layer BITMAP character (head, torso, legs, etc), and built an animation skeleton for it.

I have the near/FG arm, as a single layer, positioned above the rest of the body layers in the layer stack.

Now, I would like to control that FG arm with THREE bones (upper/lower arm and hand), yet have the upper arm bone also parented to the chest bone of the character (so the arm moves with the chest).

The problem is (unless I'm missing something here), is that it seems the only way I can control the arm, without also controlling the torso and other layers behind it, is to bind the arm layer to the arm bone... but, unless I'm mistaken, you can only bind ONE bone to a layer. So, I could do this, but I would seeminly be restricted to one bone for the arm (if I were using the Bind To Layer feature, so that the bone didn't affect any layers that were nearby or beneath the arm layer).

I tried putting the FG arm layer into a separate bone folder/group, and then putting that into the main (rest of body) bone group (hoping it would be affected by the main skeleton, but the arm bone would be isolated to just the arm layer), but that didn't seem to work.

Maybe I'm doing something wrong, but I was wondering if there IS a way to have a single FG arm layer, controlled by multiple bones (upper/lower arm, hand), parented to the chest of a main body skeleton (but the arm bones do not affect anything except the FG arm), so that the FG arm travels with the rest of the body when any of the main skeleton bones are manipulated.

Any videos I've looked at usually have the arm done as separate layers (upper, lower, hand)... which obviously would allow you to bind each arm bone to the corresponding arm layer... I'm trying to do a 3 bone arm with a SINGLE arm layer (...yet, have that parented to the main skeleton somehow).

Image

Added note: Another tricky thing, is that even though the arm layer/graphic itself is to be bent/distorted by the three arm bones, the shoulder is not 'attached' to the torso/chest. Instead, the shoulder pivots/rotates overtop the chest. So, the arm has to be kept separate from the torso (as it would in traditional cutout animation), yet the upper arm bone has to be parented somehow to the chest bone.

The only thing I could think of is to move my character's artwork arm layer out so that it is not on top of the chest artwork (...I can't do a traditional T-pose, as my characters are sort of pre-posed).... and then have the arm bones part of the main skeleton, rather than separate. The only thing there is, there will probably be some really serious pinching/distortion of the bitmapped artwork when I rotate the (now) extended arm back over the torso.

Hope someone can clear this up. I have the feeling I just screwed something up in my rig. Thanks!
Last edited by ladlon on Fri Mar 10, 2017 4:23 pm, edited 2 times in total.
User avatar
dueyftw
Posts: 2174
Joined: Thu Sep 14, 2006 10:32 am
Location: kingston NY
Contact:

Re: Separate, multi-bone arm layer, parented...

Post by dueyftw »



Dale
ladlon
Posts: 37
Joined: Thu May 26, 2016 4:32 am

Re: Separate, multi-bone arm layer, parented...

Post by ladlon »

Hi, Dale. Ya, that's with a multi-layer arm, which is easy. My question is with a SINGLE layer arm being driven by multiple bones (See my diagram... each colour is a separate layer).

It's also easy enough to do a single layer with multiple bones... but the problem is then when you want to attach that to a skeleton for the rest of the body.

You can either have a separate skeleton for the arm and body (arm and body being in their own separate bone folder).... or have a single skeleton that controls both the arm and body (arm and body being in the same bone folder)... but I am after having the latter, but with the arm bones only controlling the arm (and not affecting the body)... this too is easy enough (do a layer bind), but that seems to only work for a SINGLE bone. As soon as you want multiple bones affecting the same layer (ex. upper/lower arm and hand), then you seem to need to put the arm layer into its own separate bone folder, since (seemingly) you can only bind a single bone to a single layer.

That's the rub... Not sure how to remedy that, aside from building the artwork so that the arm's resting position is one that is not overlapping the body, and do a single skeleton for the entire body/arm combo... The only issue with THAT is that the arm is to be overlapping the body, and (being a bitmap based character, rather than vector), that will probably result in some pretty ugly distortion of the arm when put into the proper 'unextrended' position).

So far, I've addressed it simply by having the entire arm as a single bone (...not ideal, but it works), so that the arm bone can be part of the main skeleton (with the arm layer being 'layer bound' to the (single) arm bone.
User avatar
dueyftw
Posts: 2174
Joined: Thu Sep 14, 2006 10:32 am
Location: kingston NY
Contact:

Re: Separate, multi-bone arm layer, parented...

Post by dueyftw »

The there is only two ways that a bone can reach into a child bone layer is to use a smart bone dial (not going to work for a rig) or a script.

Mike Green wrote one called mg_bone_parent_master

It should be on A.S.S.

Dale
ladlon
Posts: 37
Joined: Thu May 26, 2016 4:32 am

Re: Separate, multi-bone arm layer, parented...

Post by ladlon »

Hi, DueyFTW. Ya, I just wanted to be sure that there wasn't some way to do it, that I wasn't aware of.

It's a shame you can't parent a bone folder to another skeleton (...put the bone folder (arm) into the bone folder of the rest of the body, along with all the other 'body' layers).

That would do the trick. I guess that's one for the suggestion box.

It this were a vector based character, I could easily do a single skeleton (including arm), having the rest pose of the FG arm away from the body, and then bend it overtop of the body (fixing any pinching with bone actions).

Ah, well... Single arm bone it is! Works fine for this project, as the arm is just sort of swaying.

Thanks guys...
User avatar
dueyftw
Posts: 2174
Joined: Thu Sep 14, 2006 10:32 am
Location: kingston NY
Contact:

Re: Separate, multi-bone arm layer, parented...

Post by dueyftw »

I asked Mike to have bone names in a child bone layer that match would be slaves of the upper bone layer.

It's not going to happen now.

That is how the Mike Green script works. But it's very unreliable because it was for version 7 or 8???

Dale
Last edited by dueyftw on Sun Mar 12, 2017 12:00 am, edited 1 time in total.
User avatar
Greenlaw
Posts: 9263
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: Separate, multi-bone arm layer, parented...

Post by Greenlaw »

It's easy. Just select the arm drawing layer, then select the bones you want to use and apply Use Selected Bones for Flexibinding. This allows you to use multiple bones on a single layer, regardless of it being a vector or bitmap layer. The number of bones doesn't matter...for example, I may use this technique with dozen's of bones to deform a single tail image layer.

Ideally, you'll want to use this command for different bones for all the layers in your rig. This will keep some bones from affecting the layers you don't want them to affect. Note that you can use different bone selections for different layers, and using a given bones selection for one layer doesn't mean you can't reuse the selection for other layers or a different combination of bones for some layers. It's a very, um, flexible system. Naturally, you can still combine this method with other bone binding methods.

Typically, I use Use Selected Bones For Flexi-Binding for most of the rig, and layer binding to bind rigid items and some switch layers to a bone. I might also combine point binding with Flexi-Binding and Smart Bones, especially around the ankles or for certain animated 'hair' setups.

For bitmap arms, you might consider using Smooth Joint. This method applies a special joint effect in a single drawing that gives a nice bend with minimal texture deformation. It doesn't always work well but when it does work it works really well, so it's always worth a try. You can see an example of Smooth Joint in arms in some of the King Julien stuff on my demo reel, notably in Thighsander Plunderhorse's arms.

Normally, Smooth Joint only works on two bones, but Victor came up with a neat workaround for using more than two bones. If you do a search in these forums, you can track it down. In a nutshell, he duplicates the art and then splits it using the Crop tool. This allows you to apply different bone pairs to different parts of the artwork. It's super clever!

Also, if you're using Moho Pro, you may want to create a custom mesh for bitmaps. This allows you to create smoother edges than what Moho does by default for bitmaps. (Moho's internal meshing tends to look very faceted for some images.) By using a custom mesh, you also gain the option to use Smart Bone adjustments like you can with regular Vector layers, to correct any errors in the deformations. We tend to use a lot of bitmaps for characters at my work, and this technique raised Moho Pro to a whole new level for us.

Hope this helps.
Last edited by Greenlaw on Sun Mar 12, 2017 4:33 am, edited 1 time in total.
ladlon
Posts: 37
Joined: Thu May 26, 2016 4:32 am

Re: Separate, multi-bone arm layer, parented...

Post by ladlon »

Hello, Greenlaw. Interesting... I'll have to look into that, and see if that works for me next time I have a moment to test that out. That would be really great, if it did. I forgot about some of the newer features introduced in the latest update. Moho definitely puts some useful stuff in the updates so far.

Some great points about Smooth Joints, etc.

Yep, I'm on Pro... Forgot about the mesh thing, too! And I was playing around with it just previous to doing this project, too! DOH!

Awesome. I'll test all that out later. Thanks!
User avatar
dueyftw
Posts: 2174
Joined: Thu Sep 14, 2006 10:32 am
Location: kingston NY
Contact:

Re: Separate, multi-bone arm layer, parented...

Post by dueyftw »

I have posted in Tips & Techniques on how to use Mike Green script and an old Heyvern's script.

viewtopic.php?f=9&t=30737

Dale
ladlon
Posts: 37
Joined: Thu May 26, 2016 4:32 am

Re: Separate, multi-bone arm layer, parented...

Post by ladlon »

Cool, thanks Dueyftw.

I tried out the Flexi-Bind feature. It worked, but there was a bit of pull on the torso. I tried combinations of having the arm bone strengths higher/lower, and the torso (behind the arm) bone strength higher/lower... but never got the torso pull fully off. I suspect that the issue is that the arm bone crosses over the torso bone (in the rest position). But, the Flexi-Bind technique is certainly what I was after, as far as controlling a single layer with several bones, which are connected to a main bone skeleton.

I'll check out the script thing. Thanks again!
User avatar
dueyftw
Posts: 2174
Joined: Thu Sep 14, 2006 10:32 am
Location: kingston NY
Contact:

Re: Separate, multi-bone arm layer, parented...

Post by dueyftw »

Somehow I uploaded the video and not the Moho file. It's fixed and the file is there.

Dale
ladlon
Posts: 37
Joined: Thu May 26, 2016 4:32 am

Re: Separate, multi-bone arm layer, parented...

Post by ladlon »

Hello again, guys.

Well, I'm still struggling a bit with this... I keep having partial success, using various techniques, but each one has a partial issue.

To recap, I have a bitmap-based character with a one-layer arm (bicep/forearm/hand combined) with three bones controlling it, attached to the main skeleton rig.

The issue was in having three bones controlling one layer (full arm). I could do it as a separate skeleton, but then it wouldn't parent to the main skeleton. Or, I could have it as ONE arm bone, attached to the main skeleton... but then have a stiff arm.

I tried flexi-binding... which 'worked', but would pull at the torso and other nearby body layers... and I'm not sure why, since I assumed the flexi-bind would target ONLY the arm layer.

I tried a bunch of things (adjusting bone strength, etc)... but, alway some little issue preventing it from being a proper solution.

The latest thing I tried (which, as with the other methods, 'worked', but still had issues) is creating a warp mesh layer for the arm bitmap, and POINT binding the three arm bones to their respective areas on the warp mesh... That seemed to be the solution... except for one thing. The arm bones and warp mesh worked fine, but the arm bitmap (being distorted by the warp mesh) would drift out of alignment... moving further than the warp mesh and bones.

After a bit of tinkering, it SEEMS the issue may be because the animation of the spine/torso bone of the character (which the arm skeleton is parented to) is adding to the movement of the arm (as it should)... but that is somehow messing up the functioning of the bones/meshwarp. Actually, it's more like it's acting as a multiplier to the bitmap movement, as the warp mesh and bones ARE moving properly (in sync/result of the spine/torso bone)... it's just that the bitmap is moving MORE.

I've included two pics, to help you understand what I'm working with... The one shows the full character and rig (Arm bones in red). Note that the FG arm is ONE layer (and is currently driven by a warp mesh (seen faintly over it) which is driven by the three arm bones, which has the upper arm bone parented to the torso/spine bone of the main skeleton.

In the other pic, I've isolated the arm (for an uncluttered view), showing how the arm bitmap and the bone/warp mesh get misaligned (...again, I suppose it's because the movement of the torso/spine which they are parented to is adding to the overall movement of the bitmap, but (for some reason) not the bones/mesh).... or something.

I'm not sure how to solve this... Anyone know what might be causing this, and what I could try? This method (point binding the three bones to the single bitmap, using a warp mesh) DOES seem to solve the issue of torso pulling that all the other methods seemed to have.

Image

Image
ladlon
Posts: 37
Joined: Thu May 26, 2016 4:32 am

Re: Separate, multi-bone arm layer, parented...

Post by ladlon »

Update: Okay, I tinkered/battled with it some more... I tried putting the warp mesh and bitmap into a separate (arm) bone folder, just to see if the other (non-arm) bones were interfering. I wasn't sure if I would be able to still parent the bicep to the spine/torso bone (since they were now 'separate'). As I feared, you can't parent them (...at least without scripts and stuff).

I even considered having the arm (and its related layers) completely outside/separate of the rest of the body bone folder... meaning it wouldn't move with the body, and I'd have to manually animate it to follow the body, as if it were parented. That (theoretically) would work... and since this is just 6 seconds or so, and the guy is just sort of sitting and swaying a bit, it wouldn't be the worst thing in the world (...I'm still CURIOUS how to get it to work, though!).

In the end, I actually managed to solve it.... sort of.

The issue, it seems, wasn't from the spine/torso bone 'multiplying' (or adding to) the movement of the arm... (as the same thing happened when the arm was detatched).

Instead, it seems it was solved by releasing the bitmap layer, as it was linked/attached to... something (arm bones?) without me really knowing (...odd, as I rebuilt it, different ways, several times... I guess it just happened every time, regardless).

It now 'works'... but, as usual, there's some grabbing of the other bitmap layers by the arm rig. Pretty minimal, and not really noticable (...just adds to the squash/stretch of the torso, anyway). So, this is a solution, at least for this scene.

I'm still not really sure why the arm bones are affecting (pulling) the torso bitmap (underneath/behind the arm)... since the bones are point binded to the mesh for the separate arm bitmap. I would assume the warp mesh would ONLY affect the bitmap assigned to it... that being the arm bitmap... Yet, it is pulling at the torso bitmap, which is a totally separate bitmap/layer. I thought maybe the bone strenth itself was grabbing at any nearby layers (since the mesh itself SHOULDN'T affect anything but the arm bitmap)... but changing the arm bone strength doesn't seem to help. I'll have to tinker with that some more.

Anyway, that's how it (sort of) got fixed, in case anyone was interested.

I'm still very curious what I may be doing wrong, and how I WOULD properly rig this sort of thing.

Thanks to all those who commented. Feel free to make further suggestions or ask me any questions.

Cheers
User avatar
Greenlaw
Posts: 9263
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: Separate, multi-bone arm layer, parented...

Post by Greenlaw »

ladlon wrote:I tried flexi-binding... which 'worked', but would pull at the torso and other nearby body layers... and I'm not sure why, since I assumed the flexi-bind would target ONLY the arm layer.
I'm assuming you mean you used Use Selected Bones For Flexi-Binding. This does assign only those bones to those selected layers (i.e., the arm,) but this does not mean other layers can't also be affected by those bones. You need to use the same command for those other layers and assign them to only the bones you want affecting them.

For example, if you selected the arm art layers and assigned them to the arm bones, they will only be affected by the arm bones. However, those bones will still affect anything else that hasn't been assigned to specific bones. So you need to finish the assignments: You also need to assign the body layers to the body bones, the head layers to the head bones, etc. From there, it can get as complex as you like but that's pretty much the procedure for a basic flexi-bone rig setup.

In a nutshell: Select related layers (i.e., arm layers), select the bones for those layers (armUpR, armLoR,) choose Use Selected Bones For Flexi-Binding, repeat for other related layers. Just remember, anything not assigned to specific bones is still affected by all bones (that have a strength value.)

Re: custom meshes. Most of the time I don't bother with it unless the default mesh created internally by Moho isn't high-res enough to render without faceting (this usually happens with long thin images like tails, locks of hair, or skinny limbs,) or when I need to use a Smart Bone Action in the bitmap. It's pretty awesome when you need it, but be mindful of how much geometry you may generating, You don't want to create more than you really need because every extra bit gradually reduces performance.

Hope this helps.
ladlon
Posts: 37
Joined: Thu May 26, 2016 4:32 am

Re: Separate, multi-bone arm layer, parented...

Post by ladlon »

Hi, Greenlaw.

Ya, that's the weird thing... All those layers SHOULD be assigned to a specific bones, so I'm really not sure why the arm bones are still grabbing a bit of the torso (just the lower back and a part of the waist, in this case). It's minimal, so you just get a little bit of 'smear/push' when the arm passes across those areas. Not noticable in this case, but I'm curious why it's happening (for future work).

I'll have to go through and check each bone/layer again.... although, again, they should all be assigned specific bones. The animation of the various parts IS happening, afterall. It's happening in a second character in the scene, although that is because he's pretty much a single layer, and his one arm (in the artwork) is pretty close to his torso... so it's most likely just a bone strength thing (...I've set it to the sweet spot, where the arm bones control the arm, but has the minimum effect on the body). That one, too, is minimal... I just have to stay within a certain amount of movement to keep it from being too obvious.

I used warp meshes in this case so that I could do point binding, and define specific areas for each bone to affect on that single layer (since they are bitmap, and don't inherantly have any points on their own). I figured, too, that it would allow me to fix any pinching/stretching that may occur with the artwork being distorted.
Post Reply