Fri, Nov 22, 1:05 PM CST

Renderosity Forums / Poser - OFFICIAL



Welcome to the Poser - OFFICIAL Forum

Forum Coordinators: RedPhantom

Poser - OFFICIAL F.A.Q (Last Updated: 2024 Nov 21 6:06 am)



Subject: Multi-JCM Question


Channing ( ) posted Fri, 06 November 2009 at 12:26 AM · edited Thu, 21 November 2024 at 10:07 PM

I'm working to smooth the polygons in a piece of conforming clothing as V4's thigh bends forward. I am having troubles getting the results I want with a single JCM.

I looked around in some other cr2s and noticed  a multi-JCM setup, but I wasn't quite sure how it was devised. As the joint rotates, there are three JCMs activated. The first reaches 100% at about 40 degrees and stays there. The second reaches 100% at about 70 degrees. The third and final JCM reaches 100% at 100 degrees.

My question is if I need to start over and create them in order. I had created my JCM to reach 100% at 100 degrees which would be the third in a series. I tried a test JCM for 40 degrees, but when I use them together, there are now distortions.


markschum ( ) posted Fri, 06 November 2009 at 1:44 AM

ERC Download Page
ARC beta

have a look at those documents, it might help you out


odf ( ) posted Fri, 06 November 2009 at 3:12 AM
Online Now!

Assuming that your ERC code is correct, you need to remember that your second and third JCM are added on top of the ones already in effect. So for things to work correctly, you'll have to subtract your first morph from the second and the original second from the third.

Alternatively, if you use DAZ Studio's MorphLoaderPro plugin, you just set up your first morph with limits in place, then load the second one on top of that, set the limits again and subtract the appropriate constant value, then do the same with the third morph.

I can give more detail if necessary, but it wouldn't make much sense without knowing your workflow.

-- I'm not mad at you, just Westphalian.


ockham ( ) posted Fri, 06 November 2009 at 6:04 AM

Also, in P8 you can use the Dependent Parameters feature to set up the
exact sequence of motion rather painlessly, without math.  The resulting CR2 will work
in both P7 and P8.

My python page
My ShareCG freebies


Channing ( ) posted Fri, 06 November 2009 at 10:04 AM

Thanks all. I do use Morph Loader Pro in DS, so it sounds like what I thought I had to do, will work. I'm just still trying to understand the additional ERC parameters ... they make my head spin. 


Channing ( ) posted Fri, 06 November 2009 at 9:57 PM

OK ... I've created 2 JCMS at this point. Something is wrong.

  1. JCM set for 100% at -40 degree bend.
  2. JCM2 set for 100% at -70 degree bend.

I'm using DS Figure Setup Tools: Morph Loader Pro. What happens is that there are some polys that now get distorted until the joint bends to negative 70 degrees. Not all of them.

I've tried adding the JCMs several times to make sure that I followed the most important steps:

  1. Reverse Deformation is checked yes on import.
  2. Set the JCM to 100%.
  3. Set up the ERC freeze.
  4. Set the limits to 0 to 1.
  5. Set limits on.

Any advice is much appreciated.


odf ( ) posted Fri, 06 November 2009 at 11:25 PM · edited Fri, 06 November 2009 at 11:30 PM
Online Now!

I don't know what the ERC freeze does. I don't use it. Reverse Deformation = Yes  is of course essential, though.

Here's how I'd set things up:

0) Create a channel "One" in the body actor which has the constant value 1 (d'oh!).
1) Load JCM1 and set to 100% at -40 degrees.
2) Set limits for JCM1 to 0 and 1 and enable limits.
3) Load JCM2 to reach 100% at -30 degrees (which is the difference between -40 and -70). That means "CustomValue" will be 1 / -30 = -0.033333.
4) Set limits for JCM2 to 0 and 1 and enable limits.
5) Now you need to slave JCM2 to the One channel with a deltaAddDelta value that makes it 0 at -40 degrees, or in other words -(-40 / -30) = -4/3 = -1.33333. Do that for all the actors that JCM2 is meant to affect.

That's all. Rinse and repeat.

PS: You can see a setup like that in action in Antonia's knees. Just follow the link in my signature. 😉

-- I'm not mad at you, just Westphalian.


Channing ( ) posted Sat, 07 November 2009 at 3:39 PM

OK, it's still not quite working for me. Here is what I have set up:

hip

targetGeom JCMlThbendFwd
{
name JCMlThbendFwd
initValue 0
hidden 0
forceLimits 1
min 0
max 1
trackingScale 0.01
keys
{
static 0
k 0 0
}
interpStyleLocked 0
valueOpDeltaAdd
Figure
lThigh:1
xrot
deltaAddDelta -0.025
indexes 140
numbDeltas 10862
deltas ...
targetGeom JCMlThbendFwd2
{
name JCMlThbendFwd2
initValue 0
hidden 0
forceLimits 1
min 0
max 1
trackingScale 0.01
keys
{
static 0
k 0 0
}
interpStyleLocked 0
valueOpMinus
Figure
lThigh:1
JCMlThbendFwd
valueOpDeltaAdd
Figure
lThigh:1
xrot
deltaAddDelta -0.033333
indexes 246
numbDeltas 10862
deltas ...
targetGeom JCMlThbendFwd3
{
name JCMlThbendFwd3
initValue 0
hidden 0
forceLimits 1
min 0
max 1
trackingScale 0.01
keys
{
static 0
k 0 0
}
interpStyleLocked 0
valueOpMinus
Figure
lThigh:1
JCMlThbendFwd
valueOpMinus
Figure
lThigh:1
JCMlThbendFwd2
valueOpDeltaAdd
Figure
lThigh:1
xrot
deltaAddDelta -0.0333333
indexes 237
numbDeltas 10862
deltas ...

lThigh
targetGeom JCMlThbendFwd
{
name JCMlThbendFwd
initValue 0
hidden 0
forceLimits 1
min 0
max 1
trackingScale 0.01
keys
{
static 0
k 0 0
}
interpStyleLocked 0
valueOpDeltaAdd
Figure
lThigh:1
xrot
deltaAddDelta -0.025
indexes 345
numbDeltas 4518
deltas ...
targetGeom JCMlThbendFwd2
{
name JCMlThbendFwd2
initValue 0
hidden 0
forceLimits 1
min 0
max 1
trackingScale 0.01
keys
{
static 0
k 0 0
}
interpStyleLocked 0
valueOpMinus
Figure
lThigh:1
JCMlThbendFwd
valueOpDeltaAdd
Figure
lThigh:1
xrot
deltaAddDelta -0.03333
indexes 1195
numbDeltas 4518
deltas ...
targetGeom JCMlThbendFwd3
{
name JCMlThbendFwd3
initValue 0
hidden 0
forceLimits 1
min 0
max 1
trackingScale 0.01
keys
{
static 0
k 0 0
}
interpStyleLocked 0
valueOpMinus
Figure
lThigh:1
JCMlThbendFwd
valueOpMinus
Figure
lThigh:1
JCMlThbendFwd2
valueOpDeltaAdd
Figure
lThigh:1
xrot
deltaAddDelta -0.03333
indexes 1349
numbDeltas 4518
deltas ...

JCMlThBendFwd goes from 0 to -40
JCMlThBendFwd2 goes from -40 to -70
JCMlThBendFwd3 goes from -70 to -100

However,
When I bend the joint to -40 degrees, the JCMs read:
lThigh
JCMlThBendFwd 100%
JCMlThBendFwd2 33.33%

hip
JCMlThBendFwd 100%
JCMlThBendFwd2 33.33%
JCMlThBendFwd3 0.013%
 


odf ( ) posted Sat, 07 November 2009 at 5:31 PM · edited Sat, 07 November 2009 at 5:33 PM
Online Now!

Channing3D: Yes, that's what I'd expect to happen. At -40 degrees, the value of JCMlThBendFwd is 1, so the effective value of JCMlThBendFwd2 given your setup is -40 * -0.03333 - 1 = 1.3333 - 1 = 0.3333. Since JCMlThBendFwd2 reacts faster to the bending of the thigh - one third faster, to be precise - subtracting the value of JCMlThBendFwd from it is not enough. You have to subtract it with the factor 1.3333.

Otherwise, doing arithmetic with the existing channels instead of the extra channel in the body actor that I suggested is not a bad idea. It becomes tedious though as soon as you use more than two or three JCM stages.

-- I'm not mad at you, just Westphalian.


Channing ( ) posted Sat, 07 November 2009 at 5:33 PM

Great. But, I'm sorry but what code change would you suggest to do that? Remember I'm still quite ERC-challenged. This was huge for me to get this far!  :biggrin:


Channing ( ) posted Sat, 07 November 2009 at 6:01 PM

Hmm.

OK, I am going to go up to your previous post and try to implement that first for the interaction of JCM and JCM2.


Channing ( ) posted Sat, 07 November 2009 at 6:14 PM · edited Sat, 07 November 2009 at 6:15 PM

OK, so

body

valueParm One
{
 name One
 initValue 1
 hidden 0
 forceLimits 1
 min 1
 max 1
 trackingScale 0.01
 keys
 {
  static 0
  k 0 1
 }
 interpStyleLocked 0
}

hip
}
name JCMlThbendFwd2
initValue -0.03333
hidden 0
forceLimits 1
min 0
max 1
trackingScale 0.01
keys
{
 static 0
 k 0 0
}
interpStyleLocked 0
valueOpDeltaAdd
Figure
BODY
One
deltaAddDelta -1.033333
indexes 246
numbDeltas 10862
deltas ...

I don't think that is right. What is the "CustomValue" and where is it located in the cr2 code?


odf ( ) posted Sat, 07 November 2009 at 6:35 PM
Online Now!

The "CustomValue" is what Poser calls "deltaAddDelta". But that last version you posted is confused. Where did the dependence on xrot go?

I'll go back to the code you posted before and tell you how you can fix it, because that's closer to working.

Wherever you have this:

valueOpMinus<br></br>
Figure<br></br>
lThigh:1<br></br>
JCMlThbendFwd<br></br><br></br>

instead use this:

valueOpDeltaAdd<br></br>
Figure<br></br>
lThigh:1<br></br>
JCMlThbendFwd<br></br>
deltaAddDelta -1.33333<br></br>

That should do the trick.

-- I'm not mad at you, just Westphalian.


Channing ( ) posted Sat, 07 November 2009 at 6:42 PM

name JCMlThbendFwd2 
initValue 0 
hidden 0 
forceLimits 1 
min 0 
max 1 
trackingScale 0.01 
keys 

static 0 
k 0 0 

interpStyleLocked 0 
valueOpDeltaAdd
Figure 
lThigh:1 
JCMlThbendFwd
deltaAddDelta -1.33333
valueOpDeltaAdd 
Figure 
lThigh:1 
xrot 
deltaAddDelta -0.03333 
indexes 1195 
numbDeltas 4518 
deltas ... 

but where do I use the valueParm One?


odf ( ) posted Sat, 07 November 2009 at 6:48 PM
Online Now!

Forget about that for now. That looks like it should work.

-- I'm not mad at you, just Westphalian.


Channing ( ) posted Sat, 07 November 2009 at 6:49 PM

You can have two valueOpDeltaAdd parameters? I thought that was illegal!

Boy, I'm learning a lot. 


odf ( ) posted Sat, 07 November 2009 at 6:59 PM
Online Now!

You can have as many as you want.

-- I'm not mad at you, just Westphalian.


Channing ( ) posted Sat, 07 November 2009 at 7:05 PM

OK, I'm still doing something wrong ... here's the code now.

 hip:1
  targetGeom JCMlThbendFwd2
  {
  name JCMlThbendFwd2
  initValue 0
  hidden 0
  forceLimits 1
  min 0
  max 1
  trackingScale 0.01
  keys
  {
  k 0 0
  }
  interpStyleLocked 0
  valueOpDeltaAdd
  Figure
  lThigh:1
  JCMlThBendFwd
  deltaAddDelta -1.33333
  valueOpDeltaAdd
  Figure
  lThigh:1
  xrot
  deltaAddDelta -0.03333
  indexes 246
  numbDeltas 10862
deltas ...

lThigh:1
  targetGeom JCMlThbendFwd2
  {
  name JCMlThbendFwd2
  initValue 0
  hidden 0
  forceLimits 1
  min 0
  max 1
  trackingScale 0.01
  keys
  {
  static 0
  k 0 0
  }
  interpStyleLocked 0
  valueOpDeltaAdd
  Figure
  lThigh:1
  JCMlThbendFwd
  deltaAddDelta -1.33333
  valueOpDeltaAdd
  Figure
  lThigh:1
  xrot
  deltaAddDelta -0.03333
  indexes 1195
  numbDeltas 4518
deltas ...

At -40 degrees:

lThigh
JCMThBendFwd: 100%
JCMThBendFwd3: 33.3%

hip
JCMthBendFwd:100%
JCMThBendFwd2: 100%
JCMThBendFwd3: 33.3%


Channing ( ) posted Sat, 07 November 2009 at 7:18 PM

OK, I think I've almost got it... I'm correcting the code from ValueOpMinus to deltaAddDelta inside of DS Property Editor and now it's going smoothly! I post the final code here in a minute. 


Channing ( ) posted Sat, 07 November 2009 at 7:37 PM

OK. Got it. Here's the code that works:

  targetGeom JCMrThbendFwd
  {
  name JCMrThbendFwd
  initValue 0
  hidden 0
  forceLimits 1
  min 0
  max 1
  trackingScale 0.01
  keys
  {
  static 0
  k 0 0
  }
  interpStyleLocked 0
  valueOpDeltaAdd
  Figure 
  rThigh:1
  xrot
  deltaAddDelta -0.025
  indexes 471
  numbDeltas 4462
deltas ...
}
  targetGeom JCMrThbendFwd2
  {
  name JCMrThbendFwd2
  initValue 0
  hidden 0
  forceLimits 1
  min 0
  max 1
  trackingScale 0.01
  keys
  {
  static 0
  k 0 0
  }
  interpStyleLocked 0
  valueOpDeltaAdd
  Figure 
  rThigh:1
  JCMrThbendFwd
  deltaAddDelta -1.33
  valueOpDeltaAdd
  Figure 
  rThigh:1
  xrot
  deltaAddDelta -0.033333
  indexes 946
  numbDeltas 4462
deltas ...
}
  targetGeom JCMrThbendFwd3
  {
  name JCMrThbendFwd3
  initValue 0
  hidden 0
  forceLimits 1
  min 0
  max 1
  trackingScale 0.01
  keys
  {
  static 0
  k 0 0
  }
  interpStyleLocked 0
  valueOpDeltaAdd
  Figure 
  rThigh:1
  JCMrThbendFwd
  deltaAddDelta -1.33
  valueOpDeltaAdd
  Figure 
  rThigh:1
  JCMrThbendFwd2
  deltaAddDelta -1
  valueOpDeltaAdd
  Figure 
  rThigh:1
  xrot
  deltaAddDelta -0.033333
  indexes 1542
  numbDeltas 4462
deltas ...
}

THANK YOU!!!!

 


odf ( ) posted Sat, 07 November 2009 at 7:45 PM
Online Now!

Yep, looks good! I'm glad I could be of assistance.

-- I'm not mad at you, just Westphalian.


Channing ( ) posted Sat, 07 November 2009 at 7:48 PM

Thank you!

OOh.

Ok, now I'm doublechecking my V4 General Poses. Everything looks EXCEPT when I use zrot to -15 and xrot to -100 at the same time. Is there a way I could make a JCM that is only active as both joints rotate?


odf ( ) posted Sat, 07 November 2009 at 8:34 PM · edited Sat, 07 November 2009 at 8:35 PM
Online Now!

Yes, I'm pretty sure there are ways. But it's complicated, and so far I've been avoiding that kind of thing. One other thing you could try, although it's tedious as well and might not always work, is to make an additional JCM for that pose and apply it at half strength to both channels on top of the existing JCMs.

-- I'm not mad at you, just Westphalian.


Channing ( ) posted Sat, 07 November 2009 at 8:56 PM

I wonder if I could use some kind of ValueOpTimes. Hmm. I'll have to think about it. I've still got FBMs to run through anyway.  :biggrin:


thinkcooper ( ) posted Sat, 07 November 2009 at 9:06 PM

This tool might be a little easier:


Channing ( ) posted Sat, 07 November 2009 at 9:09 PM

Is that the dependent parameters from Poser 8? I've got it, but I'm sorry to say I haven't installed it. Would it be able to deal with a JCM that only activates as there is both xrot and zrot positive values?

In other words, if zrot is at -15 degrees and xrot is at -100 degrees, then JCM_X is at 100%. 


odf ( ) posted Sat, 07 November 2009 at 9:23 PM · edited Sat, 07 November 2009 at 9:26 PM
Online Now!

Quote - This tool might be a little easier:

Add something that works like MorphLoaderPro, only without all the bugs and other annoyances, and you have a winner.

Also, it would be very neat to be able to back-port ERC setups for P7/P8 so that they work with older versions of Poser and also with other software that can load Poser files but doesn't yet support its latest extensions.

-- I'm not mad at you, just Westphalian.


Channing ( ) posted Sat, 07 November 2009 at 9:26 PM

Ouch. OK.

Well, I have Poser 7, I just haven't loaded up Poser 8. That window only sort of shows me what it does though. I assume the manual will explain it? I think I have the general gist of what I need to do. 


Channing ( ) posted Sat, 07 November 2009 at 10:34 PM

 OK. Installed Poser 8. WOW. I really love the new interface. I'm looking over the manual, and I think I have a vague idea of how this could work.

So, I did create the JCMs for both thighs to deal with the pokethrough. Is it possible to set up a dependency where both zrot and xrot have to be active to cause the JCM to activate? In my mind, I would think of that as 2 masters with one slave. Which I know is impossible, so there has to be some other way of making it work.


odf ( ) posted Sat, 07 November 2009 at 10:45 PM
Online Now!

Quote -  OK. Installed Poser 8. WOW. I really love the new interface. I'm looking over the manual, and I think I have a vague idea of how this could work.

So, I did create the JCMs for both thighs to deal with the pokethrough. Is it possible to set up a dependency where both zrot and xrot have to be active to cause the JCM to activate? In my mind, I would think of that as 2 masters with one slave. Which I know is impossible, so there has to be some other way of making it work.

I think your idea of using ValueOpTimes should work.

-- I'm not mad at you, just Westphalian.


Channing ( ) posted Sat, 07 November 2009 at 11:09 PM

Alright, I just don't know how to use Dependent Parameters to set that up. LOL.

A new problem has come up. This doesn't occur in DS. In Poser, a single point refuses to move on the left thigh whether I move the thigh forwards or backwards. However, if I break all the links to the JCMs, the problem goes away. This only happens on the left thigh, not the right. ???? 


Channing ( ) posted Sun, 08 November 2009 at 11:54 AM

Bumpty-bump.

Advice on this new problem much needed.

I also will post here on my attempts this week to create a set up to have both the xrot and zrot in the left thigh control the JCM to eliminate my pokethrough issue there. 


Channing ( ) posted Mon, 09 November 2009 at 9:47 PM

BUMP.

Alright, the issue with the single point that wouldn't move is solved. In the most odd way I could imagine. With some invaluable help, I checked the innermatsphere on the lthigh. By adjusting its yscale value upwards by .3%, the point problem disappeared. I'm just glad it worked, and I learned something new.

As far as dealing with my new issue, I've gotten this far. I've created a JCM for the pokethrough that occurs when rotating inwards on the z axis and upwards on the x axis in the thigh. Now, to control the JCM, I figure on making a channel that is controlled by both the xrot and zrot values in the thigh, such that the value of the xrot and zrot are converted to a number between zero and 1, then multipled together to give a master value of zero to 1. Multiplying that against the value of the JCM should control the value from 0 to 1.

Now, to see if my ideas work! 


Channing ( ) posted Mon, 09 November 2009 at 11:00 PM

OK, now I've gotten the JCM to work partially. However, I need to know some method to prevent "negative" values from affecting the JCM.

  targetGeom JCMlThBdSdSdIn
  {
  name JCMlThBdSdSdIn
  initValue 1
  hidden 0
  forceLimits 4
  min 0
  max 1
  trackingScale 0.01
  keys
  {
  static 0
  k 0 1
  }
  interpStyleLocked 0
  valueOpTimes
  Figure
  lThigh
  LeftSideIn
  valueOpTimes
  Figure
  lThigh
  LeftBendFwd
  indexes 595
  numbDeltas 4518
deltas ...
blendType 0
}
  targetGeom LeftSideIn
  {
  name LeftSideIn
  initValue 0
  hidden 0
  forcelimits 4
  min 0
  max 1
  trackingScale 0.01
  keys
  {
  static 0
  k 0 0
  }
  interpStyleLocked 0
  valueOpDeltaAdd
  Figure
  lThigh
  zrot
  deltaAddDelta -0.06667
  }
  targetGeom LeftBendFwd
  {
  name LeftBendFwd
  initValue 0
  hidden 0
  forcelimits 4
  min 0
  max 1
  trackingScale 0.01
  keys
  {
  static 0
  k 0 0
  }
  interpStyleLocked 0
  valueOpDeltaAdd
  Figure
  lThigh
  xrot
  deltaAddDelta -0.01
  }

Does anyone have a suggestion for altering these existing channels to only return values for 0 to -15 degrees on the zrotation and 0 to -100 degrees on the xrotation? 


odf ( ) posted Mon, 09 November 2009 at 11:07 PM
Online Now!

Just set the limits for the LeftSideIn and LeftBendFwd channels to the appropriate values. From what I understand about ERC, the limits are applied after the 'raw' value for a channel is calculated, and then the value after applying the limits is used in all further dependent channels.

-- I'm not mad at you, just Westphalian.


Channing ( ) posted Mon, 09 November 2009 at 11:17 PM

So,

If I understand right,

since zrot on the thigh is from -15 to 75 degrees, or 90 degrees total, then the minimum of 0 for LeftSideIn equal -15 degrees, and 1 equals 90 degrees? So, since I want the channel to only report from -15 degrees to 0 degrees, then I can set the limits for LeftSideIn to 0 to .16667?


odf ( ) posted Mon, 09 November 2009 at 11:31 PM
Online Now!

Actually, I've looked at your setup again, and now I'm not quite sure anymore what you're trying to do. With the deltaAddDelta set to -0.06667 as you have it, LeftSideIn channel should be 0 for xrot  = 0 and at 1 for zrot = -15. You are setting the limits to 0 and 1, which should give you what I thought you wanted: the channel stays at 0 for any zrot values larger than 0 and at 1 for any zrot values smaller than -15. So what is not working?

-- I'm not mad at you, just Westphalian.


Channing ( ) posted Mon, 09 November 2009 at 11:36 PM

I'm working on it more ... and what I'm finding is that for some reason those limits of 0 to 1 were not being respected in DS. So, once I changed forcelimits from 4 to 1, it worked like you are describing. 


odf ( ) posted Mon, 09 November 2009 at 11:46 PM · edited Mon, 09 November 2009 at 11:46 PM
Online Now!

Quote - I'm working on it more ... and what I'm finding is that for some reason those limits of 0 to 1 were not being respected in DS. So, once I changed forcelimits from 4 to 1, it worked like you are describing. 

Good to know! I can never quite remember what that 4 is supposed to do.

-- I'm not mad at you, just Westphalian.


Channing ( ) posted Mon, 09 November 2009 at 11:50 PM

 I still need to test that in Poser though ... I thought the 4 was to absolutely protect against the user removing limits ...

So, it does work now with that change from forcelimits 4 to forcelimits 1. Working on this though I've discovered pokethrough at the other extremes of xrot/zrot combinations, so since I figured this out, might as well do the same for those! :lol:


Channing ( ) posted Thu, 12 November 2009 at 2:30 PM

OK, now I have all JCMs, including the multi-joint controlled JCMs. New problem. Because this is clothing, once it's conformed, the multi-joint controlled JCMS no longer activated because they depend on joint rotation IN THE CLOTHING. Does anyone have suggestions for having these JCMS activate based on the joint rotation of V4, rather than the clothing itself? 


odf ( ) posted Thu, 12 November 2009 at 3:32 PM
Online Now!

Oh,  I sure hope someone answers that, because I've wondered about that myself.

-- I'm not mad at you, just Westphalian.


Channing ( ) posted Thu, 12 November 2009 at 3:36 PM

 I think that I may need to revise the channel setup, but I'm not sure ...  I wonder if the problem is that the control goes xrot-->Intermediate channel (returns a value of 0 to 1) and zrot--> intermediate channel (returns a value of 0 to 1). Then the JCM is at a value 1 multiplied against  both of the intermediate channel values. Works perfectly when I just rotate the clothing itself.

I'm working on the FBMs now, so I can set aside this issue for the moment.


Channing ( ) posted Thu, 12 November 2009 at 4:12 PM · edited Thu, 12 November 2009 at 4:13 PM

Figured it out. The k 0 1 line had been altered to k 0 0, which inactivated the JCM. 

So the final code is:
targetGeom RightSideIn
{
 name RightSideIn
 initValue 0
 hidden 0
 forceLimits 1
 min 0
 max 1
 trackingScale 0.01
 keys
 {
  static 0
  k 0 0
 }
 interpStyleLocked 0
 valueOpDeltaAdd
   Figure
   rThigh
   zrot
 deltaAddDelta 0.06667
 indexes 0
 numbDeltas 0
 deltas
 {
 }
}
targetGeom RightBendFwd
{
 name RightBendFwd
 initValue 0
 hidden 0
 forceLimits 1
 min 0
 max 1
 trackingScale 0.01
 keys
 {
  static 0
  k 0 0
 }
 interpStyleLocked 0
 valueOpDeltaAdd
   Figure
   rThigh
   xrot
 deltaAddDelta -0.01
 indexes 0
 numbDeltas 0
 deltas
 {
 }
}
targetGeom JCMrThBdSdSdIn
{
 name JCMrThBdSdSdIn
 initValue 1
 hidden 0
 forceLimits 1
 min 0
 max 1
 trackingScale 0.01
 keys
 {
  static 0
  k 0 1
 }
 interpStyleLocked 0
 valueOpTimes
   Figure
   rThigh
   RightSideIn
 valueOpTimes
   Figure
   rThigh
   RightBendFwd
 indexes 501
 numbDeltas 4462
 deltas
 {
 }
}

So, what this does is:

  1. RightBendFwd and RightSideIn channels evaluate the x and z rotations in the right thigh.
  2. If either one is positive, they will report a value between 0 and 1 to the JCM.
  3. The JCM is set initially to 1. It is multiplied by the values of RightBendFwd and RightSideIn, so if either reports a value less than 0, the value of the JCM is zero.<br></br><br></br><br></br>


Privacy Notice

This site uses cookies to deliver the best experience. Our own cookies make user accounts and other features possible. Third-party cookies are used to display relevant ads and to analyze how Renderosity is used. By using our site, you acknowledge that you have read and understood our Terms of Service, including our Cookie Policy and our Privacy Policy.