Bone morph dials script

Moho allows users to write new tools and plugins. Discuss scripting ideas and problems here.

Moderators: Fahim, Distinct Sun, Víctor Paredes, erey, Belgarath, slowtiger

User avatar
jaakay
Posts: 78
Joined: Wed May 04, 2011 1:30 pm

Post by jaakay » Tue Jan 10, 2012 12:29 pm

I have tried absolutely everything, but for some reason every time I try to bake my animation my character completely falls apart.

Image

Rudiger, if you are here, I would be really grateful for any advise. I will even send you my file if it will help to work out what is going on here.

I rendered out this animation without baking. I was not aware of it at the time when I created this.

http://www.youtube.com/watch?v=o_FEJaLU_G0

I am using a PC with XP pro 32 bit. I am using ASP v8.1.
User avatar
jaakay
Posts: 78
Joined: Wed May 04, 2011 1:30 pm

Post by jaakay » Wed Jan 11, 2012 8:14 pm

I have it working now.
funksmaname
Posts: 3107
Joined: Tue May 29, 2007 11:31 am
Location: Nelson, New Zealand

Post by funksmaname » Wed Jan 11, 2012 8:37 pm

what was the issue?
kpanime
Posts: 4
Joined: Fri Jan 27, 2012 12:23 pm

How to embed the script to the layers?

Post by kpanime » Fri Jan 27, 2012 12:39 pm

:?: Ok I installed MorphDials on AS 6. Now I put rt apply morph weight on the layers. What to embed on the MorphDials layer?
jonbo
Posts: 896
Joined: Thu Apr 08, 2010 2:53 am

Post by jonbo » Fri Jan 27, 2012 1:54 pm

If you're version 0.2 or 0.3 of the script, you won't need to embed anything on the morph dial bone layer.
Autex
Posts: 23
Joined: Mon Jan 09, 2012 12:44 pm
Location: Germany

Post by Autex » Fri Feb 03, 2012 4:43 pm

Hey ya'll, I've been doing some facial rigging with the script and have come across a problem. When you want to control another bone with the BoneDials through an action, you always have to scrub one frame in the timeline in order to see the animation update. For example, (very basic) I draw a ball within a bone layer. A bone controls a point on the ball. In an action, I've told the bone to rotate to the side, bringing this point with it and distorting the ball. In MorphDials I have another bone that controls this action. I animate it on the timeline, but do not see the change right away -I have to scrub forward or backward a frame. This isn't a terrible problem for this example, but if I want to create a facial rig controlled by bones thru actions, animation will not be any fun if I have to click to the next frame to see what I've just done. "Enable layer scripts for realtime morph blending" is on in my bake morph dials box.

Maybe someone has already posted this question; my perusal thru the forum hasn't found it yet.

Thanks in advance guys.
Hammer down on an empty chamber
jonbo
Posts: 896
Joined: Thu Apr 08, 2010 2:53 am

Post by jonbo » Fri Feb 03, 2012 4:58 pm

You could try using the bake button. It takes a couple of seconds to update the workspace but would allow you to stay on that frame. I personally use point motion instead with morphdials.
Autex
Posts: 23
Joined: Mon Jan 09, 2012 12:44 pm
Location: Germany

Post by Autex » Fri Feb 03, 2012 5:23 pm

True that would work, thanks. Not sure if I want to force the animator to bake every time they morph in an expression though.

Point motion is def. a lot faster in the timeline...bones are pretty slow.

The cool thing about bones is that the animator can make small tweaks with the bones if he wants to push a part of the expression, without having to go into the points.
Hammer down on an empty chamber
Rudiger
Posts: 786
Joined: Sun Dec 18, 2005 2:25 am

Post by Rudiger » Sat Feb 04, 2012 5:52 am

Autex wrote:Hey ya'll, I've been doing some facial rigging with the script and have come across a problem. When you want to control another bone with the BoneDials through an action, you always have to scrub one frame in the timeline in order to see the animation update. For example, (very basic) I draw a ball within a bone layer. A bone controls a point on the ball. In an action, I've told the bone to rotate to the side, bringing this point with it and distorting the ball. In MorphDials I have another bone that controls this action. I animate it on the timeline, but do not see the change right away -I have to scrub forward or backward a frame. This isn't a terrible problem for this example, but if I want to create a facial rig controlled by bones thru actions, animation will not be any fun if I have to click to the next frame to see what I've just done. "Enable layer scripts for realtime morph blending" is on in my bake morph dials box.

Maybe someone has already posted this question; my perusal thru the forum hasn't found it yet.

Thanks in advance guys.
That's interesting. I always heard from people that bones didn't work with this version of MorphDials.

Anyway, this is a tricky problem and I haven't been able to come up with a good solution for it yet. I don't yet have a complete understanding of how AS refreshes the current view, but one thing that I've noticed is that the view update functions actually call a layer's embedded script, so if you call an update function from an embedded script you set up an infinite loop!

However, there is a way around this problem and that is to modify the bone manipulation tools, so they update the bone layers being controlled instead of just the MorphDials layer. I plan to include modified versions of the rotate and translate bone tools in the next version of the tool that will be available for free through my Content Paradise store.
Rudiger
Posts: 786
Joined: Sun Dec 18, 2005 2:25 am

Post by Rudiger » Sat Feb 04, 2012 5:52 am

Autex wrote:Hey ya'll, I've been doing some facial rigging with the script and have come across a problem. When you want to control another bone with the BoneDials through an action, you always have to scrub one frame in the timeline in order to see the animation update. For example, (very basic) I draw a ball within a bone layer. A bone controls a point on the ball. In an action, I've told the bone to rotate to the side, bringing this point with it and distorting the ball. In MorphDials I have another bone that controls this action. I animate it on the timeline, but do not see the change right away -I have to scrub forward or backward a frame. This isn't a terrible problem for this example, but if I want to create a facial rig controlled by bones thru actions, animation will not be any fun if I have to click to the next frame to see what I've just done. "Enable layer scripts for realtime morph blending" is on in my bake morph dials box.

Maybe someone has already posted this question; my perusal thru the forum hasn't found it yet.

Thanks in advance guys.
That's interesting. I always heard from people that bones didn't work with this version of MorphDials .

Anyway, this is a tricky problem and I haven't been able to come up with a good solution for it yet. I don't yet have a complete understanding of how AS refreshes the current view, but one thing that I've noticed is that the view update functions actually call a layer's embedded script, so if you call an update function from an embedded script you set up an infinite loop!

However, there is a way around this problem and that is to modify the bone manipulation tools, so they update the bone layers being controlled instead of just the MorphDials layer. I plan to include modified versions of the rotate and translate bone tools in the next version of the tool that will be available for free through my Content Paradise store.
Autex
Posts: 23
Joined: Mon Jan 09, 2012 12:44 pm
Location: Germany

Post by Autex » Sat Feb 04, 2012 5:18 pm

I am looking forward to that. I'll have to test if a bone from one MorphDials layer can be controlled with a bone from another MorphDials layer. (Maybe you already know if this works)

If that works, and the viewport update would play nice, one could split a basic facial rig into parts, for example eyes and mouth. Mouth and eye expressions each have their own MorphDials layer within the head layer, and then over everything outside of that is another MorphDials layer that controls actions within those two, allowing you to create complete expressions at once. For example, BoneDials mouth creates Sad mouth. Bone Dials eyes creates Sad eyes. Bone Dials main takes those two bones to create complete Sad expression. This would allow the animator to create complete expressions at will, or mix them up (Sad eyes with different mouth for ex.) by going back into the hierarchy. Or maybe I'm over complicating this. I know that when bones are all on one MD layer you can move them within the vicinity of another that controls them (Sad_mouth;Sad_eyes;) and achieve this as well... but if you have a lot of different expressions, that may be a lot of bones to organize on one layer.
Hammer down on an empty chamber
Rudiger
Posts: 786
Joined: Sun Dec 18, 2005 2:25 am

Post by Rudiger » Mon Feb 06, 2012 1:28 am

Autex wrote:I am looking forward to that. I'll have to test if a bone from one MorphDials layer can be controlled with a bone from another MorphDials layer. (Maybe you already know if this works)

If that works, and the viewport update would play nice, one could split a basic facial rig into parts, for example eyes and mouth. Mouth and eye expressions each have their own MorphDials layer within the head layer, and then over everything outside of that is another MorphDials layer that controls actions within those two, allowing you to create complete expressions at once. For example, BoneDials mouth creates Sad mouth. Bone Dials eyes creates Sad eyes. Bone Dials main takes those two bones to create complete Sad expression. This would allow the animator to create complete expressions at will, or mix them up (Sad eyes with different mouth for ex.) by going back into the hierarchy. Or maybe I'm over complicating this. I know that when bones are all on one MD layer you can move them within the vicinity of another that controls them (Sad_mouth;Sad_eyes;) and achieve this as well... but if you have a lot of different expressions, that may be a lot of bones to organize on one layer.
Hehe, hierarchical MorphDials, eh? It is definitely theoretically possible, and I seem to remember referring to the possibility when I first introduced my MorphDials scripts at the start of this thread. I also remember saying that it hurt my brain to think about, and that certainly hasn't changed, lol.

It will definitely not work with the scripts as they are, though. For one thing, morph blending is automatically disabled on layers named "MorphDials". This is of course to stop a MorphDials layer from influencing itself.

The other issue is with scope. At the moment, a MoprhDials layer affects all of its siblings and all of their children. If another MorphDials layer was encountered, you would want the top MorphDials layer to affect it and then stop there without affecting not any of the new MorphDials layer's siblings. This new MorphDials layer would then sort of take over as the controlling MorphDials layer for the remaining layers in the hierarchy.

I can't see this going into the free standard version of MorphDials, but perhaps in the advanced version that I also intend to make available in my CP store, this time for $.
Autex
Posts: 23
Joined: Mon Jan 09, 2012 12:44 pm
Location: Germany

Post by Autex » Thu Feb 09, 2012 12:01 pm

I look forward to that as well! This script though definitely broadens the scope of the program enormously. Too bad Anime only allows you to create a "blend-able" morph action on 1 keyframe. If one could do it on multiple frames and it still remain blend-able, you could create "inbetween" morph targets...so say for example you have eye open to close and you dislike the way the program interpolates it. At 50% it could also morph to your inbetween shape, giving you more control over the interpolation.

I've come across a weird glitch ..not sure if its because of the script or how the program handles actions (which is strange in itself), but every now and then my actions are completely messed up. Happens seemingly out of nowhere. I make a new bone, rename something, or delete an action or something, then I click on another action(s) and realize its all warped and the points are everywhere. Strange, no idea how that happens, but the only way I've found to fight is is just by incremental saving often and going back to the older file where it wasn't broken yet.
Hammer down on an empty chamber
funksmaname
Posts: 3107
Joined: Tue May 29, 2007 11:31 am
Location: Nelson, New Zealand

Post by funksmaname » Thu Feb 09, 2012 7:34 pm

Hey Autex,
You CAN use multi frame actions with morph dials, but the timelines remain synced. It means you have can set up a cycling action but have to be carefull where you turn it on and off... one possible use case is described in my tutorial: http://www.youtube.com/watch?v=U0jVn4n3 ... plpp_video
Rudiger
Posts: 786
Joined: Sun Dec 18, 2005 2:25 am

Post by Rudiger » Thu Feb 09, 2012 9:54 pm

Yep, Funk is right. MorphDials already supports multi-frame morphs, but multi-frame morphs that actually get synced to the frame where their weight was last zero is an intended feature of, you guessed it, the advanced version of MorphDials ;).

However, I think this would have to be a bake-only feature, since it depends on the frame history. With the realtime blending, you can jump to any frame you like and it would be very hard to work out which frame to sync to without going through each previous frame in sequence. I guess you could use Funk's trick of making the multi-frame morphs cycle to get a good idea of what the animation will look like in realtime, before you bake it to get the more accurate synced up animation.
Post Reply