Forum: Poser - OFFICIAL


Subject: How do you hold back stacked JCMs in the cr2?

Paloth opened this issue on Apr 02, 2011 · 19 posts


Paloth posted Sat, 02 April 2011 at 12:31 AM

I had some luck stacking JCMs and building a cr2 with Daz Studio's Morph Loader Pro and the Property Editor but I ran into a problem with the backward rotation morphs for the shoulders. There are numerous JCMs, distributed at ten degree intervals (except for the first that is at -20 degrees.) As the shoulder rotates backwards on the y axis, all of the JCMs begin to activate with differing proportions. For example, when the shoulder swings back to -20 on the parameter dial, the -20 morph is at 100%, the -30 morph is at 66.7%, the -40 morph is at 50%. The more distant a JCM is from the default pose, the more incorrect the distortions will appear in between the default and the target pose. These incorrect distortions are stacking and distorting the geometry in a way that undermines the morphs intended to correct the original distortion caused by the rigging.

I think I need to hold back each JCM until its closest JCM has reached 100% for this to work properly, but I'm not sure how to do this. There was an excellent thread in the Poser Technical Forum describing how this can be achieved for Full Body Morphs, but when I attempted to apply this techinque to my cr2 it had no effect. There might be a different method required for this to work when the morphs are joint-controlled.

Here is an excerpt of my cr2. I would like to hold back targetGeom RshldrSwing-30 until targetGeom RshldrSwing-20 has reached 100%.

        targetGeom RshldrSwing-20
        {
            name RshldrSwing-20
            initValue 0
            hidden 0
            forceLimits 1
            min 0
            max 1
            trackingScale 0.01
            keys
            {
                static 0
                k 0  0
            }
            interpStyleLocked 0
            valueOpDeltaAdd
            Figure
            rShldr:1
            yrot
            deltaAddDelta -0.05
            indexes 3
            numbDeltas 1279
            deltas
         
      
        targetGeom RshldrSwing-30
        {
            name RshldrSwing-30
            initValue 0
            hidden 0
            forceLimits 1
            min 0
            max 1
            trackingScale 0.01
            keys
            {
                static 0
                k 0  0
            }
            interpStyleLocked 0
            valueOpDeltaAdd
            Figure
            rShldr:1
            yrot
            deltaAddDelta -0.0333333
            indexes 33
            numbDeltas 1279
            deltas
           
         
In another cr2 I attempted and failed to hold back the second JCM  with deltaAddDelta 0.05 included in the slaving code to hold the second morph back until the first morph had reached -0.05. Here's how it looked:-

targetGeom RshldrSwing-30

                        {

                                    name RshldrSwing-30

                                    initValue 0

                                    hidden 0

                                    forceLimits 1

                                    min 0

                                    max 1

                                    trackingScale 0.01

                                    keys

                                    {

                                                static 0

                                                k 0  0

                                    }

                                    valueOpDeltaAdd

                                    Figure

                                    rShldr:1

                                    yrot

                                    One

                                    deltaAddDelta 0.05

                                    indexes 33

                                    numbDeltas 1279

                                    interpStyleLocked 0

                                    valueOpDeltaAdd

                                    Figure

                                    rShldr:1

                                    yrot

                                    deltaAddDelta -0.0333333

                                    indexes 33

                                    numbDeltas 1279

                                    deltas

 

Is there anything wrong with this, aside from it not working? If the code is correct, then the problem might be elsewhere.

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