Forum: Poser - OFFICIAL


Subject: JCM dead end!

pitklad opened this issue on Dec 12, 2012 · 27 posts


pitklad posted Wed, 12 December 2012 at 2:26 AM

I want to make a morph that will work correct the Twist shoulder dial

while the shoulder is bend

So is it possible via ERC to slave a morph in two master dials?

This correction morph will be at '0' when bend is at 80 and '1' when Twist becomes -90


My FreeStuff


lesbentley posted Wed, 12 December 2012 at 10:32 AM

Quote - So is it possible via ERC to slave a morph in two master dials?

You can slave a channel to as many other channels as you want. A separate block of slaving code is needed for each different master channel that you are slaving to, eg:

        rotateX xrot
            {
            name GetStringRes(1028,9)
            initValue 0
            hidden 0
            forceLimits 0
            min -100000
            max 100000
            trackingScale 1
            keys
                {
                static  0
                k  0  0
                }
            interpStyleLocked 0

            valueOpDeltaAdd
                Figure 1
                Bodypart_A:1
                Master_1
            deltaAddDelta 1.000000

            valueOpDeltaAdd
                Figure 1
                Bodypart_A:1
                Master_2
            deltaAddDelta 1.000000

            valueOpDeltaAdd
                Figure 1
                Bodypart_B:1
                Master_3
            deltaAddDelta 1.000000
            }

This is not meant to be a complete solution to what you want to do. I'm just pointing out that you can slave to as many master channels as you want.

You only give a very partial specification, so it's hard to know what you are trying to achieve, but using the new operator 'valueOpKey', may be more appropriate than 'valueOpDeltaAdd', providing it does not need to work in versions earlier than P7.


pitklad posted Wed, 12 December 2012 at 11:07 AM

I'm sure this can be solved in another way, maybee with an empty dial just for limiting but I can't find the equation...


My FreeStuff


shvrdavid posted Wed, 12 December 2012 at 11:20 AM

Quote - I'm sure this can be solved in another way, maybee with an empty dial just for limiting but I can't find the equation...

Slaving multiple joint rotations to a single jcm can present more issues than it fixes in many cases. What Les posted does work, but only as well as what you link it too.

Not sure what version of Poser you are setting it up for, but shoulder joints can easily be weight mapped for 9 up.

Don't forget that you can also add helper bones with standard or weight mapped rigging. They can work wonders when used with joints that use all 3 rotations.

Keep in mind that you can have more than one zone if you are doing standard rigging. Mixing weight maps can be done as well, but is not so easily. Weight mapping can also have animated bulge maps.

Another option is a magnet that is part of the rigging.



Some things are easy to explain, other things are not........ <- Store ->   <-Freebies->


Paloth posted Wed, 12 December 2012 at 11:58 AM

I want to make a morph that will work correct the Twist shoulder dial

while the shoulder is bend

 

A multiplied JCM can do this. I would export the posed figure and sculpt the corrections in Zbrush, then load the JCM in Poser. I use Colorcurvature's scripts for this. The next step is to take  the shoulder bend and multiply it by the shoulder twist and divide 1 with the result to find the deltaAddDelta value. For example, if you had a twist of 20 and a bend of 40, that would give you 800/1=0.00125.

The cr2 would look something like this:-

targetGeom lShldrDn40twst20

{

            name lShldrDn40twst20

            initValue 0

            hidden 0

            enabled 1

            forceLimits 1

            min 0

            max 1

            trackingScale 0.02

            keys

            {

                        static  0

                        k  0  0

            }

            interpStyleLocked 0

            valueOpDeltaAdd

            Figure 1

            lShldr

            yrot

            deltaAddDelta 0.00125

            valueOpTimes

            Figure 1

            lShldr

            zrot

 

This method can work for you. It has saved me several times.

Download my free stuff here: http://www.renderosity.com/homepage.php?page=2&amp;userid=323368


pitklad posted Wed, 12 December 2012 at 12:12 PM

Paloth I souldn't have to add another "deltaAddDelta ...." line in this code at the end?


My FreeStuff


Paloth posted Wed, 12 December 2012 at 12:21 PM

I souldn't have to add another "deltaAddDelta ...." line in this code at the end?

Nope. The "valueOpTimes" takes care of it.

Download my free stuff here: http://www.renderosity.com/homepage.php?page=2&amp;userid=323368


pitklad posted Thu, 13 December 2012 at 2:56 AM

Does the valueOpTimes work only for Poser 7 and up versions?


My FreeStuff


Allstereo posted Thu, 13 December 2012 at 8:19 AM

Hello all,

Paloth: If you have time, can you explain a little more how valueOpTimes works. I checked the Atlantis tutorials but it is not clear enough.

Allstereo


Paloth posted Thu, 13 December 2012 at 10:25 AM

Does the valueOpTimes work only for Poser 7 and up versions?

*That's a good question. I don't know. I've only used it with Poser Pro 2012.

Download my free stuff here: http://www.renderosity.com/homepage.php?page=2&amp;userid=323368


Paloth posted Thu, 13 December 2012 at 10:47 AM

Attached Link: http://www.renderosity.com/mod/forumpro/showthread.php?message_id=3954492&ebot_calc_page#message_395

*Paloth: If you have time, can you explain a little more how valueOpTimes works.*

It's useful for joint controlled morphs relying on more than one rotation, and to switch on correction morphs that are dependent on a full body morph. There might be other uses as well. Here is the thread that taught me about it.

Download my free stuff here: http://www.renderosity.com/homepage.php?page=2&amp;userid=323368


Allstereo posted Thu, 13 December 2012 at 11:36 AM

Hello,

Paloth, thank for the link

Allstereo


lesbentley posted Thu, 13 December 2012 at 2:03 PM

Quote - Does the valueOpTimes work only for Poser 7 and up versions?

valueOpTimes is supported at least as far back as P4.


lesbentley posted Thu, 13 December 2012 at 2:31 PM

Quote - This correction morph will be at '0' when bend is at 80 and...

You can "drag" the the default zero point of a morph to a new value by slaving it to a (hidden) channel with a fixed value. In such cases it is traditional to to give the master channel a value of 1, and to name the channel "One" or "one", eg as a pose file:

{

version
    {
    number 6
    }

createFullBodyMorph One

actor BODY
    {
    channels
        {
        valueParm One
            {
            name One
            initValue 1
            hidden 1
            forceLimits 1
            min 1
            max 1
            trackingScale 1
            keys
                {
                static  1
                k  0  1
                }
            interpStyleLocked 0
            staticValue 1
            }
        }
    }

actor SomeBodyPart
    {
    channels
        {
        SomeChannType SomeName
            {
            valueOpDeltaAdd
                Figure
                BODY
                One
            deltaAddDelta -80.000000
            }
        }
    }
}


colorcurvature posted Thu, 13 December 2012 at 3:23 PM

Hi, I was about to explain my system for slaving to multiple parameters, I do remember, but I think then Snarly disappeared. Is there still demand for it?


Paloth posted Thu, 13 December 2012 at 4:16 PM

Hi, I was about to explain my system for slaving to multiple parameters, I do remember, but I think then Snarly disappeared. Is there still demand for it?

 

Please explain your system! I'd like to know how it works and what it looks like in the cr2.

Download my free stuff here: http://www.renderosity.com/homepage.php?page=2&amp;userid=323368


Allstereo posted Thu, 13 December 2012 at 4:33 PM

Hello all,

Pitklad:

Just to be sure, you want to apply the corrective morph during the shoulder twist notion from 0 to -90 but only when the shoulder bend is more than 80.

Allstereo

 


pitklad posted Fri, 14 December 2012 at 2:11 AM

Quote - Hello all,

Pitklad:

Just to be sure, you want to apply the corrective morph during the shoulder twist notion from 0 to -90 but only when the shoulder bend is more than 80.

Allstereo

 

 

I want to apply the corrective morph during shoulder twist from 0 to -90 and during bend from 0 to -90

this corrective morph will be at full influence (1) when twist reaches -90 and bend 80


My FreeStuff


pitklad posted Fri, 14 December 2012 at 4:04 AM

Quote - > Quote - This correction morph will be at '0' when bend is at 80 and...

You can "drag" the the default zero point of a morph to a new value by slaving it to a (hidden) channel with a fixed value. In such cases it is traditional to to give the master channel a value of 1, and to name the channel "One" or "one", eg as a pose file:

{

version
    {
    number 6
    }

createFullBodyMorph One

actor BODY
    {
    channels
        {
        valueParm One
            {
            name One
            initValue 1
            hidden 1
            forceLimits 1
            min 1
            max 1
            trackingScale 1
            keys
                {
                static  1
                k  0  1
                }
            interpStyleLocked 0
            staticValue 1
            }
        }
    }

actor SomeBodyPart
    {
    channels
        {
        SomeChannType SomeName
            {
            valueOpDeltaAdd
                Figure
                BODY
                One
            deltaAddDelta -80.000000
            }
        }
    }
}

 

This "One" morph will always be at 1 and will start to work when "SomeName" gets -80 ?


My FreeStuff


Allstereo posted Fri, 14 December 2012 at 7:00 AM

Attached Link: http://www.renderosity.com/mod/freestuff/details.php?item_id=69716

Hello,

Pitklad: So, the morph will be affected simultaneously by both motions. Now, do you want one motion (example: the twist)  to be more important than the other (example: the bend) in affecting the morph? For example, it is possible that the twist changes the morph by 60% and the bend by 40%.  Actually, I am working on biceps brachii of M4 and morphing of this muscle should be affected by both the bend angle and twist angle of forerarm, but in different proportions. All these effects can be done with the dependent Parameter editor of Poser, at least in my case. I use what I am calling an independant rotation dial such as "Bend with morph". The dial (In fact a master dial), drives both the regular rotation dial and the morphing. Normally, the morph is drive by the regular rotation dial. See my Free stuff package on M4 Ankle tendon morphs for coding (link above). You will see that some ankle tendons morphs (PL and TP) are affected by both the bend and side to side motion. There is a pdf tutorial that explains how to combine the effects of both rotations. Just see the section entitled PL and TP muscle tendon protrusion at the end of tutorial. Don't be afraid, there is in some irrelevant math at the beginning of tutorial. Simply skip the section. If you need more explanations, just ask. Hope that this information will be useful.

Allstereo 

 


pitklad posted Fri, 14 December 2012 at 7:50 AM

I want this morph to start working only if both master dials are active

I don't want it to work when just one of the masters applies

I'll check your examples although maths were never a big love for me :biggrin:

I tryed to read the Atlantis tutorials but I was lost somewhere

Those jcm problems need a very clear mind to be solved...

 


My FreeStuff


Allstereo posted Fri, 14 December 2012 at 7:56 AM

Hello Pitkad,

Perharps it is better that I put here the settings of the dependant editor. The full morph value is 1.

First column: Poser angle dial

Second column: Master dial number (obviously, the same as Poser dial number, the master are the rotation dial)

Thrid column: Morphing settings (the dependanc parameter) to have the same effect for both rotation.

Fourth: Morphing settings to have a 30% effect for bend and 70% effect for twist.

The cumulative effect at bend of 80 and twist of -90 is 1.

 

Poser bend angle     Master dial           Morph setting                Morph setting

                                                     (B=50%, T=50%)            (B=30%, T=70%)

         0                         0                           0                                    0

        80                       80                         0.5                                 0.3

 

Poser twist angle     Master dial           Morph setting                Morph setting

                                                     (B=50%, T=50%)            (B=30%, T=70%)

         0                         0                           0                                    0

       -90                      -90                         0.5                                 0.7

 

 

 


Allstereo posted Fri, 14 December 2012 at 8:11 AM

Hello,

OK, thing become more clear with discussion. I think it is impossible to have the effect you want using the regular dial. You need an intermediate master dial to activate the morph under some conditions as in reguar programming. Will think about that.

Allstereo

  


lesbentley posted Sat, 15 December 2012 at 2:49 PM

Quote - This "One" morph will always be at 1 and will start to work when "SomeName" gets -80 ?

Yes, except when "SomeName" gets to 80, not -80. You would need to force the 'min' limit of the morph to zero, so it can't go negative. Then the morph would stay at zero untill it's imputs added up to more than 80.0.


lesbentley posted Sat, 15 December 2012 at 5:19 PM

Attached is the text of an example cr2 to demonstrate what I am talking about. You will need to loose the ".TXT" part of the file extension before you can use it in Poser. The figure is a BODY actor, and two props, named rShldr and rForeArm.

Load it in Poser. First select the rForeArm and give it a negative xRotation. Nothing will happen until the rotation exceeds -80. At -81 the Morph-002 will be fully expressed, and it will be expressed at double strength when the rotation reaches -82. Obviously this expression is way too aggressive. There are a number of ways you can tone down the expression, one way is just to make a weaker version of the morph, but I want to show you another method.

Restore the figure. Select the rForeArm and give it some positive yRotation. This will express a different morph, Morph-001. Nothing will happen until the rotation exceeds 80 degrees, but this time the morph will express much more slowly.

Morph-001 contains some extra slaving code using 'valueOpTimes':

                  valueOpTimes
                        Figure 1
                        BODY:1
                        MorphMult-001

This  valueOpTimes should be the last block of slaving code in the channel. The code points to a valueParm channel in the BODY, "MorphMult-001". You can use the MorphMult-001 dial in the BODY to control the strength (or speed) at which the morph is expressed.

valueOpTimes multiplies the value of the channel it is in by the value of its master. So when the value of the  MorphMult-001 is zero, the slave channel will be completely disabled, and when the value is one, the slave channel will act as normal.

Try adding the same slaving code to the Morph-002 channel.  There is also a MorphMult-002 channel in the BODY, this is not used at present.


Allstereo posted Sun, 16 December 2012 at 6:27 AM

Hello all,

Lesbentley: Thank you, you suggestions are always relevant. Will study the code. I need this approach for my M4 biceps brachii morphs. The twist notion of forearm have to have an effect only if the forearm is bend, not on all the range of full bending.

Allstereo


pitklad posted Mon, 17 December 2012 at 2:23 AM

It seams that the valueOpTimes does the trick! Thanks everyone so much!

:thumbupboth:

Also you all gave me some ideas on how to solve other JCM problems,

I'll have to study the code more...


My FreeStuff