Converting G3 Poses to G2! IT WORKS!
So maybe you are like me, still using Genesis 2 figures most of the time, and would like to use some of those fancy new Genesis 3 poses on your Genesis 2 characters. People have been asking for this ever since Genesis 3 launched. The response was basically, "Hey, its too hard." "The bones are too different, its impossible." "Who actually uses G2 nowadays, its time upgrade, grandpa!" (Ok, that's a bit dramatic.) "It would never sell, so it would not be worth doing."
But it is not impossible. A user mcphylyss_dc4b55d7ad has wrote a little bit of code that will have a G2 character mimic the pose of a G3 character. With mcphylyss_dc4b55d7ad's blessing, I have made this post. This is my brief testing of that with Vogue Poses for Eva 7, which obviously have no Genesis 2 counterpart. G3 is red, G2 is blue.
Not perfect, but it doesn't need to be. This does the difficult part of getting you 95% there, and you all need to do is adjust the feet and hands. I'm certainly fine with, because we pretty much have to do that anyway with most pose packages. This works for both male and female figures.
Ok, so how? Copy this text into any text editor you have (like Notepad or Notepad++), and save it as a .dsa file (or rename it as a .dsa, whichever.)
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");} }}
Name it whatever you want, "G3 to G2 Pose Converter" sounds like a winner to me. Once you are done with your dsa file, you can place this file anywhere you want in Daz, but a simple place would be in with your other scripts. Additionally, in Daz, you can right click the script and "Create a Custom Action" to make a shortcut on your toolbar.
How to use it.
Load both a Genesis 2 figure and a Genesis 3 figure to the scene.
Have you G3 figure do the pose you want to convert.
Highlight both figure (CTRL+mouse.)
Now click the G3 to G2 converter script.
CELEBRATE!
Now you can make adjustments and save your pose as a preset for future use.
Currently, this script works on one pose at a time, there is no batch conversion. However, mcphylyss_dc4b55d7ad is working on a Python script to do this. It is something they need for their workflow. It can also be improved upon, this is just the beginning!
This script is free, and if you have some of your own ideas for improving it, pass them on. We can crowd source this baby!
Comments
Thank you for posting this.
I know that I, at least, will find it handy (provided I remember I have it. :) )
No problem. This is pretty epic for us G2 users. Stay tuned, because mcphylyss_dc4b55d7ad may have the batch script up soon, they are already testing it.
With this, I might start buying some G3 pose packs. Daz has mcphylyss_dc4b55d7ad to thank for that!
Oooh, that's a *very* ingenious way to do it.
Hey HEY! Not bad at all! :D. Took just a little tweak ;). Thanks!
Laurie
It works great! Thank you so much! :D
Here's the file I did (attached). For anyone who has trouble saving it or are just too lazy. lol Drop it into your scripts folder.
Let me know if it works. :)
Thank you for posting this!
Isn't there also a script that corrects any post-preset mesh distortions somewhere?
Thanks, this is very useful.
Thank you very much!!
Oh jeez. This is a pretty big game changer, ngl. If I could buy the creator of this script a round of drinks, I certainly would!
And wow, oh wow, this baby WORKS. There's just a little bit of distortion here and there, but that's negligible for me at this point. Hokey smokes, this is amazing!
P.S. Mac users (like me) should use a free program like Brackets instead of the default TextEdit app. I had a heck of a time trying to save a .DSA, only for it not to work when I tried loading it in Daz. D:
Hi EleganceLiberty, if you would send me beers, i could give you my adress^^
Hi,
I coded a python standalone script wich converts all pose files in a specified folder, same way as the script (still not perfect, nothing changed on that).
To use it :
- Install python. for windows users : (https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi)
- download my script (attached) and rename it into ".py" (daz forums apparently doesn't allow python files^^)
- Double click on it.
The script will prompt an explorer Window, just select the folder containing poses you want to convert. pose files in that folder and ALL SUB-FOLDERS will be converted in a new folder.
Please let me know if there's any problem. I didn't tested it on Linux and Mac. It should work but don't know.
It works! It really works! I just copied my entire Genesis 3 pose library in SECONDS to a new folder, complete with all the icons and everything! Granted, I don't have a huge G3 pose library, but this was way, way faster than any other pose converter I have. You do not need to even have Daz open, its probably best if you don't, because you are adding new files to it.
JUST WOW! This is really happening people! The entire Genesis 3 pose library just became available to Genesis 2. Again, as said before, you will likely need to adjust the feet and hands, but that is no big deal at all.
Thank you so much for this MCphylyss! Regardless of you reasons, you shared this with the world, and for free.
Whoa! This works SOOOO well! :D Thank you!
Do you have one that goes the other way too? From G2F poses to G3F poses?
No, but It's possible to do... I'll see that in one or two days, but that will be the same thing, not perfect at all... I think to convert from G2 to G3 there should be much better converters (although I didn't test anyone)
Zev0s works pretty good from the store.
Thank you so much for the script MCphylyss :)
Laurie
For Mac users, you can download Python here: https://www.python.org/downloads/mac-osx/
I can't wait to give this a go. You are a godsend, MCphylyss. Seriously.
Yep, and between this and Zev's G2 to G3 converter, now your Genesis 2 and 3 figures can totally play nice together in the same scene! Like couples poses between figures, you can now very easily use the same poses for a G2M and a G3F happy couple. I bet Kenji 7 has eyes for Victoria 6! (Aiko 7 looks too much like his mom and it creeps him out...)
BOOYA!!!
I know G3 face structure is totally new but is there any hope of converting expressions? Script is cool, by the way! I spent more time trying to decide what pose to test than running the script.
ok - i've got another question... why Python 2.7? Python 3 was released in 2008. Surely it's stable by now.
Well expressions and poses are totally different... Poses works on skeleton, whereas expressions mainly use morphs... I don't even know how to convert a morph from G3 to G2 or G2 to G3. Plus it seems that part of extra G3 bones are used for expressions... The only thing I can tell is that I'll need to convert G3 morphs to G2 for my 3d engine, So one day I'll code a converter wich will work on both morphs and expressions, but that's not for today. I can only suggest you to try to find a working morph converter and test if it's possible to convert an expression thanks to it, but It's really not sure.
That's simple, I don't know if the script is python 3 compatible. It should be, but not sure. And since it's very hard to have two different python versions on the same machine, I cant test it. If I upgrade to python 3, most of my projects won't work anymore until I fix them.
You might want to post this as a freebie on another site like ShareCG... having it in a forum thread here is not the best for longevitiy since threads sometimes get deleted or hidden for various reasons.
Thanks, I'll do it. But before to do that, I have to know if it's linux/mac/python 3 compatible, so I'll wait a lil bit for users feedback. Plus G2 to G3 scripts asked by divamakeup.
If it helps, it worked for me just perfectly with Python 3.6.0 on MacOS.
Thanks for that, so it should work on linux too
Oh this will be so helpful thank you!
Hi everybody. Thank you for all those positive feedbacks.
I coded scripts for G2 to G3, they work exactly the same as G3 to G2 ones, although forearms are pretty wrong. Once again, I think zev's one is much better. (.txt file must to be renamed as a .py)
I think I could improve all scripts by adding a fix var, especially for forearms and hands, but i have not the time to do this right know.
The batch converter is excellent! This solves an issue I was hoping would eventually be rectified, although I had presumed that someone (Zev0?) would actually sell it!
Even better, this works flawlessly with partial poses in my test. I tested with Aeon Soul's Power Stance specifically for that reason. Since it works with partial poses, this provides much more flexibility for posing my G2F charactes.
Thanks again for posting these, and especially for making them free