PDA

View Full Version : Expression-Driven Smartskin Morphs Problem!


Carbunkle
10-25-2004, 01:48 AM
Howdy, Lightwavers!

I have a problem - don't worry its not personal! - but regarding bone-driven compensation morphs using Expressions!

Basically, I've prepared two morphs in Modeller for a bent arm using RotateSkelegons: one compensation morph is for the arm bent at 45 degrees, the other for 90 degrees.

When I assign these morphs to forearm rotation in Layout using Expressions, I find that the 45 degree morph runs past 100% as the bone rotates beyond 45 degrees, resulting in a massively distorted arm! Basically the 45 degree morph goes to 200% at 90 degree bone rotation and adds on to the displacement caused by the 90 degree morph at its proper 100%!

Is there any Lightwave guru out there who can give me the low down on how to automatically get the 45 degree morph back to 0% as the bone rotates past 45 degrees?!

I'm starting to climb the walls in frustration!

Many thanx!

Carbunkle (on the brink of embolism!)

SplineGod
10-25-2004, 02:13 AM
I typically use cycler to do this since I can precisely determine which morph and how much of it happens at any particular bone angle. I can adjust this interactively in the GE. :)

jayezon
10-25-2004, 03:31 AM
I might be doing things the hard way myself, but I've been using Joint Morph Plus. You can type in the cut off point of the morph. Otherwords, if you set the morph to 45 degrees on the heading for the forearm bone and it rotates past that, the morph reverts back to its base. From there you can then set the 90 degrees morph to start kicking in.

I'm not sure if you're using Joint Morph Plus to drive the expressions, but it's what I've been doing and I think it can achieve what you're after.

Oh and get yourself a good whacking stick. It helps to vent your frustrations in times like this:).

SplineGod
10-25-2004, 06:26 PM
The biggest problem I had with jointmorph was it losing assignments. :)

mav3rick
10-25-2004, 09:06 PM
try SMARTMORPH easy to setup driven key morphs and it allow more control over that process... works after IK also

www.polas.net (http://www.polas.net/)

Carbunkle
10-25-2004, 10:21 PM
Greetings, again Lightwavers!

Thanx for all your inputs - greatly appreciated!

I've actually solved most of the problems - I had a brainwave as soon as I turned off my trusty old computer and went to bed!

I'm using standard expressions, along with 'fader' and 'conditional' expressions since I believe this gives more reliable results. My only remaining problem, is when the femur bone rotates from -ive to +ive sign, I can't seem to deactivate the 45 degre morph (that works correctly in the -ive sense of rotation)!

I've tried using faders and conditonals to switch it off past zero, and although this works, it tends to screw up the first lot of morphs that were working correctly!

Maybe I'm a masochist and doing things the hard way - maybe I need a whacking stick after all, Jayezon!

Any further help would be much appreciated!

Thanx and all the best!

Carbunkle!

Carbunkle
10-25-2004, 10:29 PM
Hello, yet again! - can't you tell I'm keen?!!

I don't suppose any of you know any good tutorials on Expressions, regarding this kind of specific problem?

Its soooooo frustrating, I'm so near yet so far!

Thanx again!

Carbunkle!

jayezon
10-25-2004, 10:56 PM
I have to admit I suck at expressions (probably cause I haven't played with them much). Carbunkle, have you seen the Smartskin Deformations tutorial by Joel Dryer? Here's the link. http://www.newtek.com/products/lightwave/tutorials/animation/smart-skin/ It might help out.Good luck with it all.

kretin
10-26-2004, 12:23 AM
I highly recommend using JointMorphPlus, as it not only makes the job easier, but has the added benefit of working after IK which expressions can't (on morphs).

As for the expression, there are a couple of ways of doing it... One way is an if/then expression, if bone is less than 45 then go up, else go down:

Bone.rot(Time).p < 45 ? mapRange( Bone.rot(Time).p, 0, 45, 0, 1 ) : mapRange( Bone.rot(Time).p, 45, 90, 1, 0 )

Here is an example: SmartMorph_Expression (http://www.zerogravity.com.au/lw/SmartMorph_Expression.zip)

If you wanted to keep the morph at 100% after the bone reaches 45 degrees then you could use the clamp function:

clamp( mapRange( Bone.rot(Time).p, 0, 45, 0, 1 ), 0, 1 )

Carbunkle
10-29-2004, 12:38 AM
Savoury greetings, Lightwavers!!

Many thanx yet again, Lightwavers! Since I've registered with this site, many of my problems have disappeared in a puff of digital smoke!

I'm using Lightwave 8, whose Expressions may be able to use morphs, but you might be right, Kretin, but even if not, I'll just do the animation as normal, bake it, and then apply morphs afterwards, which I think - hope! - is possible! I'm sure I read somewhere that expressions can access morphs - but I may be wrong!

Actually, Expressions aren't quite as difficult as they first seem, Jayezon. After a bit of practice, it becomes almost second nature. The only thing about using smartskins you have to be careful of is 'cross-talk' between morphs: I've noticed that the right leg, when bent, interferes with the left - the buttock mysteriously deforms: I plan on using CullMap at about 0.000001 rather than 0.0000001, that I've used so far on morphs!

Thanx again and all the best!

Carbunkle!

jayezon
10-29-2004, 01:28 AM
I'm sure you're right Carbunkle. I simply haven't played with expressions that much since I couldn't get my morphs to work after I.K.

If you (or anyone else) happen to know of any tutorials on the web that can help me wrap my head around expressions I'd appreciate that too.

Cheers

Carbunkle
10-30-2004, 10:09 PM
Greetings!

There's a few good ones, I think on Flay, but I'm not sure how to do links on this site, Jayezon!

One of the reasons I opted for Expressions, rather than JointMorph, is that I'm using faders, for say, for an arm rotation of 90 degrees. The first morph works normally from 0 - 45 degrees, then fades out from 45 - 90 degrees. I haven't spent much time looking at JointMorph, but I don't think you can use faders and the like with that. Unless someone else knows differently!

1) for 0 -45 morph: bone pitch: 0; 45; 0;1

2) fader for above morph: bone pitch: 45; 90; 1; 0

3) conditional: bone pitch: 45; subexpression fader (2); subexpression (1)

I'll show the next lot of expressions in the post below, since they tend to time out if you type for too long!

Carbunkle!

Carbunkle
10-30-2004, 10:18 PM
You probably know all this already, Jayezon, but for the record and others tuning in:


for 45 - 90 morph: bone pitch; 45; 90; 1; 0

bone pitch; 45; subexpression (above); value


The last expression acts as a switch and turns off the first for bone rotation below 45 degrees!

I think I've got an idea for doing expressions when arms are moving back and forth (in a walking motion, like a soldier's), by deactivation of other morphs when the arm bone rotates below a certain value. I'll include these on a future post - if they work!

Thanx and all the best!

Carbunkle!

kretin
10-31-2004, 12:03 AM
One of the reasons I opted for Expressions, rather than JointMorph, is that I'm using faders, for say, for an arm rotation of 90 degrees. The first morph works normally from 0 - 45 degrees, then fades out from 45 - 90 degrees. I haven't spent much time looking at JointMorph, but I don't think you can use faders and the like with that. Unless someone else knows differently!
You can do that very easily with Joint Morph Plus. If that's all you're doing, then I'd definitely go with JMP so you can use IK (without baking etc). You also have much more control in JMP than in simple expressions, enabling you to precisely set the morph percentage for multiple angles quickly and easily.

SplineGod
10-31-2004, 01:45 AM
One thing I do like about using cycler to control morphs is that I can see the control channels waveform in the graph editor. I can stack the other morph chennls directly above and blend morphs in and out at any point along the control channels animation to get precisely what I need. This also allows morphs to be blended in a non linear fashion. I prefer the hands on ability to tweak it rahter then rely on the expression to sort of control things. :)

Carbunkle
11-01-2004, 08:24 PM
Howdy!

Oh dear, I've gone up a blind alley yet again!!! Thanks for your advice, everyone!

Could anybody recommend a decent tutorial on JointMorphPlus?

Its a real pitty, since I was starting to get the hang of Expressions, which was an area that I've always felt intimidated by! Do you think it likely that a future version of Lightwave will allow Expression-driven morphs to be accessed by Inverse Kinematics?!

Thanx again, and all the best!

Carbunkle!

SplineGod
11-01-2004, 08:55 PM
You can always bake the IK controlled motions and turn off full time IK and the channels will be seen. IK can always be turned on again for tweaking animations and rebaked. :)

kretin
11-01-2004, 10:53 PM
Could anybody recommend a decent tutorial on JointMorphPlus?
There's really nothing to it.... what probs are you having?

Its a real pitty, since I was starting to get the hang of Expressions, which was an area that I've always felt intimidated by! Do you think it likely that a future version of Lightwave will allow Expression-driven morphs to be accessed by Inverse Kinematics?!
We're all hoping :rolleyes:

jayezon
11-02-2004, 01:57 AM
Hey Carbunkle,

Here's a really quick example. It's easy peasy mate. Let us know if you have trouble understanding it.

Cheers
Jay

Carbunkle
11-02-2004, 11:00 PM
Howdy!

Thanx for the attachment, Jayezon: I'll run an eyeball or two over it tomorrow - I've got a massive head cold at the moment which is impairing my cognitive functions!! I'll let you know how I get on!

The thing that bugs me is how many hurdles you have to clear to get anything done in computer graphics - especially if you're teaching yourself! I've almost rigged an entire character's smartskins using Expressions, and the thought of having to redo everything dosen't do much for my enthusiasm, although Splinegod appears to suggest that IK can still be used. So maybe all's not lost!

I've a vague memory of JointMorph (plus or otherwise) when I first installed Lightwave 8 some time ago, but it didn't seem to work, so I opted for Expressions instead, Kretin, I guess I'll have another go - but on a different character model!!

Thanx everyone, your help had been invaluable!

All the best!

Carbunkle!

kretin
11-02-2004, 11:16 PM
The original Joint Morph, the one in LW7 didn't work (and is still there although it still doesn't work). Joint Morph Plus in LW8 works really nicely, and is real quick to setup.

I'd say you'll have less hurdles using JMP than expressions. IK baking can be a real pain. But also remember most of the hurdles are during the learning phase or the first time you do something new. From there it's much easier the second time :)

Carbunkle
11-04-2004, 12:47 AM
Howdy, Lightwavers!

Thanx Jayezon for the demonstration scene, which was very informative. You, Kretin and the others are absolutely right about JointMorph Plus being easy to setup! I managed to set up a character's limb morphs in no time at all, something that took quite a bit longer using Expressions!

There's only one downer, though: JointMorph Plus does not allow multi-axis morphs to run simultaneously. For example, I had a femur bone that drove two morphs for forward pitch rotation, as well as drive another morph for sideways rotation in heading. Unfortuanately, with JointMorph Plus you have to switch between axes, so for example, you have to turn off pitch in order to turn on heading, and their respective morphs also are deactivated as a consequence!!!

I think I'm stuck with Expressions for the time being, and I'll just have to bake the IK animation and apply the Expression-driven morphs afterwards! In a way, I'm glad, since I've spent hours on Expressions! In any case, you often have to animate with a simplified proxy object, so it shouldn't be too inconvenient!

Does anyone know how to bake an IK animation and then apply the Expression-Driven morphs afterwards?

Thanx again and all the best!

Carbunkle!

jayezon
11-04-2004, 01:38 AM
Hi Carbunkle,

JointMorphPlus DOES allow multi-axis morphs to run simultaneously. Simply add another JointMorphPlus in object properties and set that up for the other axis. In other words, you can have multiple JointMorphPlus applied to the same object - eg. 1st to control Pitch morphs, & 2nd to control Heading morphs.

Give it go. It works for me.:)

Catch ya.
Jay.

Carbunkle
11-04-2004, 10:56 PM
Howdy, Jayezon!

That's a really great idea! I didn't think of that! I was reluctantly poised to do a 'hybrid rigging' style: one axis done using JointMorph, the other(s) done using Expressions! Along with all the agro of baking animations, etc!

Thanx for that tip, Jay - now that I know how to rig an entire character in a few hours, my enthusiasm for Lightwave has just broken into orbit!!!

All the best to you in sunny Australia!

Carbunkle!

kretin
11-04-2004, 11:15 PM
Glad you broke through Carbunkle :)

Carbunkle
11-05-2004, 10:17 PM
Howdy!

Yeah, I got there in the end, didn't I, Lightwavers?!

My problems with Expressions hasn't been a total loss, though. I've gained valuble experience using it, and can now think of practicle ways of applying it to other aspects of my CG work.

I think I played around with the first JointMorph in version 8 and found that it didn't work as advertised, so, decided in frustration that JointMorphPlus wasn't any good either! Lesson: never jump to conclusions in CG!

I tried another innovation to Lightwave 8. I forget the name of the tool, but it allows the manipulation of a point in Layout for morphs - and that's its problem: you can only manipulate one point at a time! And of course you don't have access to all the superb modelling tools available in Modeller!

Now, with JointMorphPlus, I can imagine accomplishing in hours what has previously taken days!

All the best!

Carbunkle!

CGTalk Moderation
01-19-2006, 04:00 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.