Fri, Jan 3, 8:35 AM CST

Renderosity Forums / Poser - OFFICIAL



Welcome to the Poser - OFFICIAL Forum

Forum Coordinators: RedPhantom

Poser - OFFICIAL F.A.Q (Last Updated: 2025 Jan 03 8:14 am)



Subject: 2d-JCMs again


colorcurvature ( ) posted Fri, 04 January 2013 at 4:28 AM · edited Tue, 26 November 2024 at 1:55 PM

I am just hacking the script for multi-jcms again. Before posting it, testing help welcome. You can email me. I cannot do a UI at the moment, I'll have to be run through python shell so its a bit hack-ish but I hope its still ok.


colorcurvature ( ) posted Fri, 04 January 2013 at 5:54 AM · edited Fri, 04 January 2013 at 6:03 AM

file_490141.jpeg

Usage: A set of parameters is created that reach the 1.0 value when the two actors are dialed to the corresponding position. E.g. front back = 45 and downup = 60 will maximize the fb45_du60 parameter. You should use the teaching tool to slave your fix jcms to these parameters. To execute: Scripts->Python Shell and paste the call to the script. An example here for left shoulder front back and down-up with three positions each result in 3*3 = 9 parameters to fine tune the JCM. The script cannot change an existing JCM grid, so one has to think about the key positions upfront.


colorcurvature ( ) posted Fri, 04 January 2013 at 6:14 AM · edited Fri, 04 January 2013 at 6:17 AM

Further information: The dials do not stack. For example, if you create a grid for [-90,-45,0,45,90]x[-30,0,30], the [45x30] dial will be zero if the actors are bent to [90x30]. But of course you could start by creating a JCM for [45x30], and slave this to both the [45x30] and [90x30] parameters. If [90x30] needs an additional correction, you can develop a further JCM and also slave this to [90x30]. The JCMs that you create, should ideally have their own naming schema and individual master parameter. That makes the reuse and the decoupling easier. I have not really tested these JCMs grids, its hard to predict if they work in other applications, lower versions of poser, if poser saves the setup properly in scene files or libraries, ... bla bla bla....


PhilC ( ) posted Fri, 04 January 2013 at 7:45 AM

Interesting, can you give an example of where this might be used?


colorcurvature ( ) posted Fri, 04 January 2013 at 8:23 AM

Its intended to help for correcting joints, when it gets difficult because corrections for single parameters (e.g. fix-bend, fix-updown) start to interfere. then you can correct (bend+updown).


JoePublic ( ) posted Fri, 04 January 2013 at 10:35 AM

YAY !  :-)


Paloth ( ) posted Fri, 04 January 2013 at 1:40 PM · edited Fri, 04 January 2013 at 1:46 PM

This is great. I hope I'm smart enough to learn to run it.

edit: Not so difficult, actually. I can get started experimenting with this tomorrow. Thanks for this new tool.

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


colorcurvature ( ) posted Fri, 04 January 2013 at 4:34 PM · edited Fri, 04 January 2013 at 4:35 PM

I assume its a bit difficult to get started. My brain works very low level. And communicating the main points is sometimes more difficult than one assumes. I am not as gifted as Cage when it comes to break down technicals. But lets try and discuss all issues by mail or in the thread ;) To clarify it a bit. You have to think of positions of the parameters that you want to optimize. If you have a SideSide that you want to optimize for [-50,0,50] and you have a bend you want to optimize for [-75,0,75], then you have to specify these values and create JCMs for -75/-50, -75/0, -75/50 0/-50, 0/0, 0/50 75/-50 75/0, 75/50 If the parameters a dialed to an intermediate value (e.g. -35/60) then multiple Fx diales will become active, but none of them at 1.0, rather each one a bit. Then you CANNOT teach it. You have to specify the key values at the positions you are going to make a JCM for. Only if you have a Fx dial that maxes out to 1.0 at the desired position you can create a JCM for this.


colorcurvature ( ) posted Sat, 05 January 2013 at 7:03 AM

I added a quick helper to slave the hand-made JCM to the Fx... dial. But indeed a nice UI would be better. Which UI technology was mac-friendly again? It wasnt Tk I think. Its WxWidgets or something?


colorcurvature ( ) posted Sat, 05 January 2013 at 7:10 AM

I also wonder if there is a trick to arrange parameters into groups with python. Did not find it yet ;(


Cage ( ) posted Sat, 05 January 2013 at 8:40 AM

Quote - I also wonder if there is a trick to arrange parameters into groups with python. Did not find it yet ;(

The only thing I can think of would involve using Python to edit a cr2 or pz3, or possibly creating a custom pose and loading it.  I know a pose which loads a pmd morph set can overwrite existing parameter dial groupings, but I'm not sure whether a pose alone can do that, minus the pmd-loading part of the process.  Either way, since loading groupings through a pose would fully overwrite all existing parameter groupings for an affected actor, the pose would need to be carefully tailored for each case by the Python script.

(Also, you explain this stuff better than I could!  :lol:  You're working with more complicated matters than I tend to tackle.  JCMs and their ERC settings have always confused and frustrated me terribly.  :scared:)

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


colorcurvature ( ) posted Sat, 05 January 2013 at 9:00 AM · edited Sat, 05 January 2013 at 9:01 AM

file_490172.jpeg

Preparing a simple UI. Not much experience with wxPython yet. But I hope you can ignore python console now.. Cage, your morph transfer script is above everything, I think. Glad to see you again in the forums.


Paloth ( ) posted Sat, 05 January 2013 at 11:20 PM

That looks good. Let us know when it's ready.

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


Paloth ( ) posted Sat, 05 January 2013 at 11:38 PM

I have a question. Do the JCMs of the grid need to be at consistent intervals? I mean, for example, lShldrSw -60,-30,0,30,60 or can you put the JCMs anywhere you like as in lShldrSw -60,-20,0,30,50?

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


colorcurvature ( ) posted Sun, 06 January 2013 at 1:41 AM

yes, anywhere. the distances between the key values do not need to be the same. you can set up any grid and link the morphs to the grid points.


colorcurvature ( ) posted Sun, 06 January 2013 at 2:04 AM · edited Sun, 06 January 2013 at 2:05 AM

file_490210.jpeg

Ok its somewhat working, just not showing any confirmation messages yet. The red part of the window is for creating the 2d JCM. The yellow is for linking morphs, its doing a simple valueAddDelta with 1.0 scale. You can use that to attach your self-made correction morph to one of the generated dials without having to use the teaching tool. UI is based on PhilC's helloworld example for wxpython. I hope thats ok with you Phil. Ah, and parameter quick selection buttons do not yet work, you have to specify the actorname, a dot, and the parametername to identify a parameter.


Paloth ( ) posted Thu, 10 January 2013 at 6:47 AM

Well, I’ve managed to set up a grid for the rShldr. It comprises Sw(swing) –90,-60,-30,0,30,50,70,90 x (up and down)Ud 0,30,50,70,82. So far, I’ve created only one FBM to be controlled by the Sw30Ud30 “fix” dial. Once I learned that the fix dial is already wired in and needs no teaching, I was able to link the FBM to it through the script UI. It's a mild correction morph, the true magic will be apparent further down the grid where the distortions are extreme. So far, so good, though. 

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


-Timberwolf- ( ) posted Thu, 10 January 2013 at 8:59 AM

@ colorcurvature: a big thank you to you. You know what Poser users need. PML has allways been so essential to me and this tool is going to be the next step. Those typical Poser joints have allways bothered me so much. Lots of times I was about to kick off all that Poser crap. To have a tool that can fix all those bending issues of Poser Characters keeps the fun alive. So go on, can't wait purchasing it.


colorcurvature ( ) posted Thu, 10 January 2013 at 1:38 PM

Yes, the dials that the script creates have their ERC already in place and do not need any further teaching. One has to link the self-made JCMs in a 1:1 relation to the generated fix dials, thats all. They will automatically dial once linked. The 1:1 link can be done with the script UI. You made an extensive grid. I hope it all works as expected. Thats 40! fix parameters. I am not sure if you want to create so many JCMs :) Furthermore, you can also link any kind of parameters to the generated dials. For example, if you notice that your JCM for 50x30 works just as good on 50x50, for example, you can link this JCM to both fix dials. Or, for example, if 50x50 looks nice by dialing your JCM for 50x30 just a bit more, maybe to 1.5, you can also teach it this way. This is however currently not possibly with my UI, but with the teaching tool it is.


Paloth ( ) posted Thu, 10 January 2013 at 2:30 PM · edited Thu, 10 January 2013 at 2:31 PM

Thats 40! fix parameters. I am not sure if you want to create so many JCMs :)

*I've completed 11 so far. It's just nice to finally be able to do this. It's like I've been training for the last year. JCM creation is quick and easy at this point. I could get away with less though. I'll be more strategic in the future.

There will be no fix morphs for any part of the grid with a 0 parameter since there are already JCMs to handle that.

Thanks so much for making this script! I'm not sure how many people realize what a breakthrough for Poser rigging this is.

I was meaning to ask, can this be used if you wanted to make a fix dial for a morph powered by the swing of both the left and the right arm or leg. Also, can you create fix morphs with more than two actors?

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


colorcurvature ( ) posted Fri, 11 January 2013 at 1:22 AM · edited Fri, 11 January 2013 at 1:24 AM

You can define a grid on any two parameters, I think the script should eat it. You could make a grid [head.bend]x[rFoot.twist], although that would not be very useful :) The implementation I had sent can only take 2 parameters for a grid, but I had made an implementation that can take 3 of em. The problem is that the number of dials is exploding. I thought it would work in general, though. E.g. a 3x3x3 Grid comes to 27 dials. 4x4x3 or so would be 48. I thought its a lot. And I wasnt sure if Poser can eat all the ERC without difficulties. You are pioneering :) The legs have the problems that they come very close together. There is a zone were the bends interfere. I guess its because of the smoothing zone. That makes it difficult to create really independent JCMs for each leg.


Paloth ( ) posted Fri, 11 January 2013 at 4:11 AM

The legs have the problems that they come very close together. There is a zone were the bends interfere. I guess its because of the smoothing zone. That makes it difficult to create really independent JCMs for each leg.

To deal with this sort of thing one must abandon strict symmetry and true independence. There will be morph overlap and the quality will need to hold up when both limb JCMs are at 1.

When I'm working on JCMS for limbs, I pose both sides of the Poser figure symmetrically, export with CO_Exporter_2012_UV and load this into Zbrush where the JCM is created. Then I open the morphed figure in Modo and load a default-posed export in another layer. I use the Zbrush sculpt as a background morph. Then I split the morph by selecting half of the figure and activating the background morph to the respective sides in turn. The end result is tested by activating the two new morphs at the same time. If the JCM is extreme, there may be unacceptible distortions near the center of the mesh. I use Modo's sculpt tools to smooth the problem areas when both morphs are active, and also in the seperate morphs. Eventually, something will be produced that works adequately both in the seperate and the combined states.

Perfect symmetry at this point is a distant memory, but it's close enough and looks adequate.

It will be interesting to test this cr2 on another system once the work is done. I’m using a poor man’s 64-bit "supercomputer" and things are working flawlessly but will there be lag on an older system? Time will tell.

 There may be a few drawbacks to this JCM-heavy approach. One, of course, is the large cr2 or PDM load. Another issue may be clothing creation since it will not strictly conform to the morphed surface, but I am of the opinion that a sparer grid of correction morphs may be used in this instance. Then there is the issue of IK. Using IK overrides JCMs. I’m not sure why this need be the case, but it’s the way it is. It could prove too laborious to create clothing that will perform adequately in both the IK and the JCM versions of the figure, (too laborious for others, and not for me, of course. “Laborious” is my middle name.)

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


colorcurvature ( ) posted Fri, 11 January 2013 at 8:17 AM

Yes, performance is a good question. How much time all the ERC will consume. I hope not too much. And the question whether Poser and other applications can handle it properly. I'm looking forward to your results.


Paloth ( ) posted Mon, 14 January 2013 at 1:04 AM

I’ve been working with this script extensively, to good effect, but at last, it seems, I’ve stumbled upon an anomaly. To allow for good arm movement, I needed JCMs to cover Shldr Swing Collar Twist rotations. I set up a grid for this, consisting of rShldr.swing -90,-45,0,45,90 rCollar.Twist -90,-45,0,45,90. The first JCM was for rShldr swing 45, rCollar Twist -45. Strangely, when I linked this to the Fix dial for rShldrSw45CollarTwst-45, things didn’t work. A closer review of the Fix dials revealed that the dial being activated to 1 when the shoulder swing is at 45 and the collar twist is at -45 is the Fix for rShldrSw45CollarTwst0. When I linked the morph to this dial, things worked properly. I’m not sure why this is happening. It can make things a little confusing and I don’t know what the results will be as I advance through the grid. In any case, I thought I should bring this to your attention.

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


colorcurvature ( ) posted Mon, 14 January 2013 at 2:23 AM

Thanks, I'll have a look at it later. Can you say, which ones of the Ax dials are dialed to 1.0 in this position?


Paloth ( ) posted Mon, 14 January 2013 at 11:34 AM

FixAXSw_45 and FixAXTwist 0 are at 1.

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


colorcurvature ( ) posted Mon, 14 January 2013 at 1:11 PM

I didnt manage to reproduce it yet. Seemed to work for me, I tried with Andy. Can you try this setup on Andy ? Maybe the wrong Actor was chosen for the Twist? Does Collar-Twist actually change the values for the grid Parameters?


Paloth ( ) posted Mon, 14 January 2013 at 10:57 PM

I used the setup on Andy and it works.

Neither Collar-Twist or Shldr Swing change the dial values beyond the rShldrSw45CollarTwst0 parameter on my figure. 

I'm going to revert to an earier save and try again.

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


Paloth ( ) posted Mon, 14 January 2013 at 11:49 PM

Ok, this is strange. For some reason my figure’s Collar twist is not being acknowledged by the script, regardless of whether the second value is in the shoulder or in the collar. There is no obvious reason for why. The spelling and case in the script entries match the figure’s parameters and there should be a linkage.

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


Paloth ( ) posted Tue, 15 January 2013 at 12:25 AM

I found the problem in the cr2. For some reason, the AX channels refer to the Collar's twist as "twistx." When I manually changed this to "xrot", in keeping with my figure's format, the Collar twists in Poser showed proper response in the AX dials.

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


colorcurvature ( ) posted Tue, 15 January 2013 at 1:26 AM

Ah. Maybe it has to do with internal or external names of the rotation dial. Poser parameters have two names, unfortunately, and if you ask poser for a parameter by name it can give you this or that one, in case there is a name collision. At least I think that might be problem. I have to clarify. Is this a selfmade figure or something from the DAZ? Would make it easier to check things out.


Paloth ( ) posted Tue, 15 January 2013 at 1:42 AM · edited Tue, 15 January 2013 at 1:43 AM

This is a selfmade figure. However, in theory, the results might be tested in any figure with internal rotation names xrot, yrot, zrot, and with the Collar x rotation UI parameter name as Twist.

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


Paloth ( ) posted Fri, 01 February 2013 at 6:44 AM

I finally got around to testing the 2d JCM system in Poser 8, 7 and 5. The test wasn’t ideal in that the test figure was weight mapped. Since weight maps were added in version 9/Pro, older version of Poser do not show the correct mesh deformations; However, it is still possible to check dials to see if they are activating the morphs in the proper manner. Your script seems to work in Poser 8. In Poser 7, I can see the dials, but the mesh explodes upon loading. At first I thought there was a display issue because the screen went white, but I was able to back out the camera until it became clear that the white was the result of the exploded mesh. In Poser 5, there was a similar issue, except that Poser froze and eventually crashed to desktop.

I didn’t have the patience to track down the cause of the explosion, but I suspect it has something to do with JCMs not being constrained to low increments. I don’t know if this is because the script isn’t supported or because of the other multiplied JCM data that I had coded manually with valueOpTimes controlling things. It could be something else entirely.

As for the script in Poser Pro 2012, it is working really well. I think the results in setting up this figure are better than anything I’ve managed to do without the script. My efforts have only been hampered by the limits of my mesh. Thanks for bringing this script into the world. I hope that others will get a chance to work with it.

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


colorcurvature ( ) posted Fri, 01 February 2013 at 10:19 AM

Thanks for your feedback. I guess one would have to inspect the parameter values in the older poser versions. I am not sure, maybe key-value parameters were not supported earlier, do not apply limits, or it has to do with the ERC operators themselves. I would guess that the parameters get seriously over-dialed and the JCMs applied in excess, causing the mesh to explode.


Allstereo ( ) posted Fri, 01 February 2013 at 8:36 PM

Hello,

Just to inform you that many of my freestuff items with Dependent Parameters settings also "Explode" when running in Poser 7 but not in Poser 8 or PoserPro2012. Even if Poser 7 is supposed to support the new ValueOpKey operator, there is something different between Poser versions in the processing of codes.

Colorcurvature: Hope to have time to test the script soon. I am just finishing my V4 Hip motion that appears in the freestuff section. 

Allstereo


colorcurvature ( ) posted Sun, 03 February 2013 at 1:38 PM

Very likely some things are different. Without key values I think it cannot work, or if it can, it needs a lot lot lot more helper dials to do the same. The good thing about this key value pair thing is that you can basically approximate any kind of curve and model that by a list of corresponding keys and values.


Allstereo ( ) posted Mon, 04 February 2013 at 6:11 AM

Hello colorcurvature,

Yes, we can approximately fit any function. It is what I have done in my ERC trajectory prop here in the Freestuff. I have coded the sin, cos and tan function to orientate the prop and calculate tangential velocity.  The thing that I would like to know is the best number of keys and placement to approximate the function. There is surely some rules (ex: the peak and valley should be coded and the sampling frequency of point should be function of the degree of the funtion) but my search on the net did not result in clear responses. Perharps I should also look at the animation forum. 

Allstereo 


Paloth ( ) posted Mon, 18 March 2013 at 4:15 AM

Another issue I encountered is that sometimes you need to go into a conforming clothing cr2 and change the AX dials to superconforming to get the morphs to work properly. It's a mystery to me why this just happens sometimes.

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


colorcurvature ( ) posted Mon, 18 March 2013 at 6:33 AM

Ah. Well I never tried it in a cloth before. The AX are slaved to rotations. For a conforming cloth, the rotations are inheriteded from the conform target. The price question is whether further ERC-slaved parameters do react on this inherited values or not. You might find out in the dependency editor. Inspect if the AX have proper master parameters


Allstereo ( ) posted Mon, 18 March 2013 at 7:46 AM

Hello Paloth and Colorcurvature,

I am not familiar with all abreviations and acronyms used in Poser threads. So, AX stands for what?

Allstereo

Colorcurvature: Now, I am testing your script (The last time, I stalled on setting up  scripts to insert ERC operator in Poser file). Hope to see issues and help you for your script, but I am not the best person to evaluate that because I never did so complex morphing application.


colorcurvature ( ) posted Mon, 18 March 2013 at 8:13 AM

One has to carefully decide whether or not to get engaged in complex things :)


Allstereo ( ) posted Mon, 18 March 2013 at 9:50 AM

Hello Colorcurvature,

As a retired professor, I faced this decision many times in my career. Not too much afraid of complex matter.  It is only the way to learn at the limit. I think that you understand very well my point.

Have a good day

Allstereo


Allstereo ( ) posted Mon, 18 March 2013 at 2:42 PM

Hello,

Forget about my question on AX, after studying the code, I saw the function. It is an arbitrary name but it reflect the task done.

Allstereo


colorcurvature ( ) posted Mon, 18 March 2013 at 2:59 PM

Yes, it means "Axis".


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.