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