I feel ngSkinTools is more of a painting weights toolset plugin than a full-fledged tool to handle import/export skin-weights at a production level. It's more of a user tool than a pipeline tool. Yes, it would be very convenient to have a function to select the joints in the exported file, that is true, but it still does a decent job the way it is by design. The next major version in future would be awesome I presume.
You can look at mGear Rigging Framework. It does have pretty stable skin-weights import/export tools built in. -H On Saturday, June 22, 2019 at 7:25:50 AM UTC+9, AK Eric wrote: > > Thanks for that Andrew! The ngSkinTools dev got back with me as well with > a similar solution, although it still crashes, sigh. > > I'm going to continue to investigate the ngSkinTools API, but am still > open to other solutions as well. > > On Friday, June 21, 2019 at 12:53:06 PM UTC-7, Andres Weber wrote: >> >> Funny enough I actually have written those helper scripts since it was >> pretty simple as their JSON files are quite well formatted. Honestly I >> never really looked further than ngSkinTools as they're the most complete >> and functional skinning toolset I've come across and used for many years. >> Apologies as this is quite old code and not very well structured: >> >> import json >> import maya.cmds as mc >> >> def copy_bind_from_ng_file(file): >> """ Copies skinCluster from ngSkinTools JSON file to make the same >> skinCluster before importing weights. >> Args: >> file (str): file... >> Returns [str]: list of influences that we used to build the >> skinCluster >> Usage: >> >> copy_bind_from_ng_file('path_to_your_ng_skin_tools_weights_file.json') >> """ >> influences = [] >> missing_influences = [] >> >> with open(file) as f: >> data = f.read() >> json_data = json.loads(data) >> f.close() >> >> for value in json_data['influences']: >> influence = json_data['influences'][value]['path'].split('|')[-1] >> if mc.objExists(influence): >> influences.append(influence) >> else: >> missing_influences.append(influence) >> >> if missing_influences: >> print 'Missing Influences from your file: >> \n{}'.format(missing_influences) >> >> result = cmds.confirmDialog(b=['OK','CANCEL'], m='You have %d missing >> influences...continue adding skin cluster from file with %d influences?' % >> (len(missing_influences), len(influences))) >> >> if result == 'OK': >> mc.skinCluster(influences, mc.ls(sl=True)[0], tsb=True) >> >> return influences >> >> >> >> >> On Thursday, June 20, 2019 at 6:34:29 PM UTC-4, AK Eric wrote: >>> >>> I've recently changed companies and starting something from scratch. >>> One of the tools I need (and we had before) is a bulletproof solution for >>> skin weight export/import. I'm a bit out of touch with what's out there in >>> the community since I've not had to look into this for years. Maya's >>> built-in solutions are sorely lacking when used on any sort of complex >>> asset. >>> >>> Are there any off-the-shelf tools available ($ is fine) that people >>> would recommend? >>> >>> I've been looking at ngSkinTools, but it's export\import step seems >>> pretty clunky as well. As in, you can't import weights unless the mesh is >>> already skinned, which sort of defeats the purpose. I could introspect the >>> json weight files and pre-skin the assets based on my own wrapper code, >>> but... if I paid for it why should I have to do it? I figured *someone* by >>> now has solved this problem and is trying to profit from it. >>> >>> Any other suggestions? Much appreciated. >>> >> -- You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group. To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/3fa7f28e-4814-42d7-b6c5-3062e0f4230e%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.