Backward conversion of G3F and G3M poses to Genesis and Genesis 2

Hello! Just a little suggestion about pose converters. There was a lot of fascinating pose packs for Genesis 3 Female produced and most of the poses for G3M look cool too. And there is Pose Converter Genesis 2 Female(s) to Genesis 3 Female(s), which allows to convert poses from G3F to G2F. But what if one wants backward conversion to apply some beautiful poses of G3F to old favourite Genesis 2 Female? It would be nice to have a similar script convertor to apply G3F's poses to G2F - I feel there is a way to do it with the same Pose Converter Genesis 2 Female(s) to Genesis 3 Female(s), but I know almost nothing about DAZ scripting, so it's over my own abilities. And after coming of G3M it would be much nicer to have male converters too - both for straight conversion from older to newer generations, and backwards too. I hope someone of professionals will give us such tools on day.

Comments

  • nicsttnicstt Posts: 11,715

    Tough to do because of the extra bones in genesis 3.

     

  • wargiswargis Posts: 142

    Yes, I feel it's not so simple, but if straight conversion from G2 to G3 is possible and seemingly touches only common bones for both generations, there must be a way to apply rotation values of G3F's bones to corseponding G2F's bones with some corrections. So poses may match though not perfectly. Is ther any info or explanations how it can be done, evene manually?

  • nicsttnicstt Posts: 11,715
    wargis said:

    Yes, I feel it's not so simple, but if straight conversion from G2 to G3 is possible and seemingly touches only common bones for both generations, there must be a way to apply rotation values of G3F's bones to corseponding G2F's bones with some corrections. So poses may match though not perfectly. Is ther any info or explanations how it can be done, evene manually?

    Not seen anything.

  • outrider42outrider42 Posts: 3,679

    I'd really like to see a product that could do this. It may be hard with the different bones, but if it is possible to convert from 2 to 3, it seems logical that it could be posssible to convert from 3 to 2. They don't have to be 100% accurate as long as they can get the essence of the pose. There are several reasons why someone would want such a product:

    1) Poser users

    2) People who have much invested in G2, and would like to buy new content for G2.

    3) It would make it much easier to have figures from G2 and G3 in a single scene, rather than process of converting the figure, they just convert the pose.

    I would be willing to spend a bit more than normal on such a product if it works. It would be a pretty big deal to me.

  • Necroing this because I would really love to see a product that dose this. And I wouldn’t mind paying more for it as well. Mostly because most of my Runtime is devoted to V4 and G2 products. And frankly the current G3 is just not as versatile when it comes to fantasy or creature morphs so I don't want to invest in it.

    Currently my solution is to copy a G3 pose is to load a basic G3 and my G2. Scale the G3 down slightly and apply pose. Than pose my G2 over the G3 and delete the G3 figure. Time and memory consuming especially is you have multiple figures in a scene.

    I would love this plus it would give me a reason to buy all those sweet G3 pose sets that otherwise I'm taking a pass on

  • I too would love to have a script that could convert G3 poses to G2.

    It would make me more willing to buy G3 pose sets as they would be more useful to me, so everybody would win.

  • MCphylyssMCphylyss Posts: 34
    edited December 2016

    Hi guys,

    I was looking for a simple Genesis 3 to Genesis 2 pose converter, but didn't find one. (for those who can't understand why to look at this, that's pretty simple. I'm using Daz for the real time 3D engine I'm developping, and a 172 bones skeletton is pretty hard for the GPU to display)

    So I've made a little conversion script.

    The idea is pretty simple : you have to load a genesis 3 and a genesis 2 (male or female) model in your scene and apply a position on your Genesis 3. once done, just select the two models and run my script : the Genesis 2 model will take the same pose as the Genesis 3.

    As mentionned upper, skeletton are really different between genesis 2 and 3, so result is'nt perfect, you could have to manually fix some bones after running the script, but the result is pretty efficient and I think It could save you a LOT of time.

    Just try it, and tell me what you think about it.

     

    var G2bones = ["hip","pelvis","lThigh","lShin","lFoot","lToe","lSmallToe4","lSmallToe3","lSmallToe2","lSmallToe1","lBigToe","rThigh","rShin","rFoot","rToe","rSmallToe4","rSmallToe3","rSmallToe2","rSmallToe1","rBigToe","abdomen","abdomen2","chest","lCollar","lShldr","lForeArm","lHand","lThumb1","lThumb2","lThumb3","lCarpal1","lIndex1","lIndex2","lIndex3","lMid1","lMid2","lMid3","lCarpal2","lRing1","lRing2","lRing3","lPinky1","lPinky2","lPinky3","rCollar","rShldr","rForeArm","rHand","rThumb1","rThumb2","rThumb3","rCarpal1","rIndex1","rIndex2","rIndex3","rMid1","rMid2","rMid3","rCarpal2","rRing1","rRing2","rRing3","rPinky1","rPinky2","rPinky3","neck","head","lowerJaw","tongue01","tongue02","tongue03","tongue04","lEye","rEye","lPectoral","rPectoral"];var G3bones = [["hip"],["pelvis"],["lThighBend","lThighTwist"],["lShin"],["lFoot"],["lToe"],["lSmallToe4","lSmallToe4_2"],["lSmallToe3","lSmallToe3_2"],["lSmallToe2","lSmallToe2_2"],["lSmallToe1","lSmallToe1_2"],["lBigToe","lBigToe_2"],["rThighBend","rThighTwist"],["rShin"],["rFoot"],["rToe"],["rSmallToe4","rSmallToe4_2"],["rSmallToe3","rSmallToe3_2"],["rSmallToe2","rSmallToe2_2"],["rSmallToe1","rSmallToe1_2"],["rBigToe","rBigToe_2"],["abdomenLower"],["abdomenUpper"],["chestLower","chestUpper"],["lCollar"],["lShldrBend","lShldrTwist"],["lForearmBend","lForearmTwist"],["lHand"],["lThumb1"],["lThumb2"],["lThumb3"],["lCarpal1","lCarpal2"],["lIndex1"],["lIndex2"],["lIndex3"],["lMid1"],["lMid2"],["DlMid3"],["lCarpal3","lCarpal4"],["lRing1"],["lRing2"],["lRing3"],["lPinky1"],["lPinky2"],["lPinky3"],["rCollar"],["rShldrBend","rShldrTwist"],["rForearmBend","rForearmTwist"],["rHand"],["rThumb1"],["rThumb2"],["rThumb3"],["rCarpal1","rCarpal2"],["rIndex1"],["rIndex2"],["rIndex3"],["rMid1"],["rMid2"],["rMid3"],["rCarpal3","rCarpal4"],["rRing1"],["rRing2"],["rRing3"],["rPinky1"],["rPinky2"],["rPinky3"],["neckLower","neckUpper"],["head"],["lowerJaw"],["tongue01"],["tongue02"],["tongue03"],["tongue04"],["lEye"],["rEye"],["lPectoral"],["rPectoral"]];var selection = Scene.getSelectedNodeList();var G2; var G3;for (i=0; i<selection.length; i++){	var name = selection[i].name;	if (name=="Genesis3Female" || name=="Genesis3Male"){G3=i;}	if (name=="Genesis2Female" || name=="Genesis2Male"){G2=i;}}if (G2==null || G3==null){print("Please select a Genesis 2 and a Genesis 3 model.");}else {	for(i=0; i<G3bones.length; i++){		var x=0; var y=0; var z=0;		for(j=0; j<G3bones[i].length; j++){			var G3bone = selection[G3].findNodeChildByNameOrAlias(G3bones[i][j], true, true);			if (G3bone!=null){				x+= G3bone.getXRotControl().getValue();				y+= G3bone.getYRotControl().getValue();				z+= G3bone.getZRotControl().getValue();			}			else {print(G3bones[i][j]+" not found in Genesis 3");}		}		var G2bone = selection[G2].findNodeChildByNameOrAlias(G2bones[i], true, true);		if (G2bone!=null){			if (x < G2bone.getXRotControl().getMin()){G2bone.getXRotControl().setMin(x)};			if (x > G2bone.getXRotControl().getMax()){G2bone.getXRotControl().setMax(x)};			G2bone.getXRotControl().setValue(x);			if (y < G2bone.getYRotControl().getMin()){G2bone.getYRotControl().setMin(y)};			if (y > G2bone.getYRotControl().getMax()){G2bone.getYRotControl().setMax(y)};			G2bone.getYRotControl().setValue(y);			if (z < G2bone.getZRotControl().getMin()){G2bone.getZRotControl().setMin(z)};			if (z > G2bone.getZRotControl().getMax()){G2bone.getZRotControl().setMax(z)};			G2bone.getZRotControl().setValue(z);}		else {print(G2bones[i]+" not found in Genesis 2");}	}}

     

    For the momment, tongue gestion isn't really good, althought I didn't test it.

    You can adapt the script by modifying G2bones and G3bones vars. G2bones is a list of all Genesis 2 bones that must be modified, and G3bones is a list where each element is a sub-list, containing Genesis 3 bones that have to be "applyed" on the corresponding Genesis 2 bones.

    Note that translations are not managed.

    Hope that will help

    Post edited by MCphylyss on
  • How would I run a script like this?

  • Hi Medron Pryde.

    To use this :

        - Create a ".dsa" file wherever you want in your daz libraries folder, and copy/paste the code into it

        - Open daz, load a G2 and a G3 character in your scene

        - Apply the pose you want on G3

        - Select both G2 and G3

        - locate the script in the content tab, and run it. That's all. G2 will take the same pose as G3.

  • outrider42outrider42 Posts: 3,679
    edited December 2016

    Hey people, THIS ACTUALLY WORKS!!!!

    An additional note to mcphylyss_dc4b55d7ad's instructions; don't forget you can right click on the script in Daz and "Create Custom Action". This will add a script shortcut in the top bar.

    Genesis 3 Female is red, Genesis 2 Female is blue. I used "Vogue Poses for Eva 7" that I just picked up with the free starter bundle deal.

    Now, as you can see, it is not perfect. The hands and feet will likely need adjustments. But it works! And that is more than good enough. It does not save a pose preset, and it does not work in batches.

    I think this is wonderful, thank you mcphylyss_dc4b55d7ad!

    Perhaps somebody could lend us a hand in helping to add a batch script???

    Post edited by Chohole on
  • MCphylyssMCphylyss Posts: 34
    edited December 2016

    Nice,

    I see that toes are really bugged, I'll see if I can limit that. If you wanna try yourself, I think you just have to remove "lSmallToe4_2", "lSmallToe3_2", "lSmallToe2_2", "lSmallToe1_2" and "lBigToe_2" from the G3bones var, on line 2. (don't really know about G3 bones rigging, but that could do the trick). same thing for "rSmallToe4_2" etc...

    For the other bones like shoulders, forearms and Tigh, that will be much more complicated.

    Thanks for the post.

    Post edited by MCphylyss on
  • kaotkblisskaotkbliss Posts: 2,914

    Sweet! Thank you so much.

    And to think, you could have kept this to yourself until you perfected the converter, then sold it instead of giving it away!

  • Thanks, but it took me less than two hours to do it (and I don't know much about daz scripting) and I think selling a 35 code lines script is just... ridiculous. Plus It can't be perfected so much. For those who are interested, I'm coding a standalone python script which converts directly all poses files from a specified folder, and save results in a new folder. I one-shot converted 2744 poses in less than a minute, and it seems to work. The only problem I have so far is that it requires winrar to be installed on your PC. I'll share it here (http://www.daz3d.com/forums/discussion/137491/converting-g3-poses-to-g2) but for know, I would like to make it work without using winrar. If someone knows what's the compression format used by daz on duf files, it could help me...

  • kaotkblisskaotkbliss Posts: 2,914

    I have 7zip dll files that I used at work for an extraction program I wrote in AutoIt. doesn't require 7zip installed, just need the dlls (winrar and winzip probably can do the same thing, just need to know how to make the calls to the dlls)

  • Thanks for your reply,

    I just found the daz compression format is gzip, so there's a python built in lib to do it. I allready changed my code, and that's works. I just have to check if everything works with python 3 (I usually use 2.6), and I'll share that. However thanks for the info, didn't know 7zip could be used in cmd, I'll remember that for the next time I'll have that kind of problem.

  • Hi again, just to say this is an old toppic wich has been renew by outrider42 right here (http://www.daz3d.com/forums/discussion/137491/converting-g3-poses-to-g2)

Sign In or Register to comment.