Hi!
I created this Zbrush/Maya/Max script package which makes it faster importing-exporting files between the programs, the creating blendshapes, editing geometries, etc.
For more, visit my gumroad page:
https://gum.co/iDdFI guess the main question here is, what's the difference from GoZ?
Goz as far as I experienced, can be tricky. It did messed up my subtools sometimes, goes crazy if there is some accidental name-matching happening. So I started to work on my solution for the problem, and with times, it started to get many blendshape-helping functions.
So yeah, it's less then GoZ and a little bit more. And it isn't working between 2 softwares, but rather as many as you want (at least between Maya-Max-Zbrush).
My solution is waay simliper that GoZ, but this way a little bit more predictable. It basically saves out the active subtool's active subdiv level to the C:\temp folder.
The main function is this, and all the smaller functions supports this process.
And because every software overwrites the same obj file, communicates through the some "channel", the communication is not between two programs, rather whatever you want. You can open this obj with other softwares. (For example if you open this obj in unfold, it will remember it, so you just relead/save it.)
This way, you can work in maya/max/zbrush/uveditors etc the same time. I mean relatively speaking. You don't have to be sad about that "i could do this easier in *** software, ahh, never mind".
You just circle the same geometry through the softwares.
And because of GoZ is a closed process, you can't hook in other softwares.
I work at Digic Pictures, and on a daily basis we use maya,max,zbrush, headus,unfold, etc. So this script was the best solution yet.
And yeah, it's limited because of the obj format, but also it's a little bit safer because the OBJ don't let too much strange thing to happen.
I hope you will give it a try and have a good feeling about it.
Daniel
Replies
I'm a Max/ZB/Headus user and constantly jump between Max/ZB and Max/Headus(bridge script) so being able to jump between all 3 would be fantastic.
About bloody time somebody created this tool! And I love the name. Very appropriate.
Thanks. Yeah, at work we use multiple softwares. Even multiple modeling softwares simultaneously. One of my coworkers did the export-import for years by hand, and I was too lazy for that, so tried this solution. Worked so well, we would probably never go back. The great thing is, after a while you just doesn't think about softwares, rather problems and solutions. I just jump here and there, based on which software offers the better solution for that problem I'm working on.
Scaling issue: I'm not completely sure, but I guess you can change the maya OBJ import-export settings when you import/export something by hand.
I know that it is available for Max (you just hand export, import an OBJ and save the settings). So for Maya, I use the default settings, for Max, I import the models at 0.1 scale, and export them with 10.
I hope it helps.
Daniel
however one problem i never managed to solve is that the connection 3ds max->zbrush does not keep vertex order well. it was reliable for me in old versions but hit and miss in all my tests ever since max shipped with that upgraded (bought-in) OBJ exporter that i can see in your video, no matter what settings (optimize,etc) is chosen. how do you get around that issue?
So in maxscript, in import you can use the #nopromt flag (I guess that's the name of it), witouth any trouble, but if you use it while exporting, it will mess up the vertex order. So I simply didn't use the #nopromt at export. This will make the user make 2 more buttonclicks but I didn't went after the causes... Try it out! I hope it helps. (I can't even imagine what's causing it...)
Export code:
file -force -options "groups=1;ptgroups=1;materials=1;smoothing=1;normals=1" -typ "OBJexport" -pr -es "C:/temp/mesh.obj";
Import code:
file -import -type "OBJ" -ignoreVersion -ra true -mergeNamespacesOnClash false -namespace "ZB" -options "mo=0" -pr "C:/temp/mesh.obj";
The main disadvantage of my workflow is that I have to manually export each subtool one by one to obj, which is obviously slow. So I was expecting your toolset to help me I was wondering if you could find a way to preserve polygroups and hope my code can be somehow helpful.
UPD: I have replaced your export commands with my ones in StyxMayaImport and StyxMayaExport respectively. Also I've commented the lines 14-83 in export procedure and it looks like now all the polygroups are transferring correctly.
Using sets for the polygroups actually a great idea. I'll look into it.
The problem is here: I chose the type of communication between maya-zbrush-max-etc to be one single obj file is to make it more simple. So for example using obj files per geometry would be harder to implement in Zbrush. Zbrush now has some folder-checking zscript options, but not the best. (There is the layerimporter in my script which actually imports all the objs from the 'blend' folder and make them separete layers in zbrush).
So I'm thinking in the process of using only one file, exported.obj, and put every necessary stuff into it. Actually, the maya export script creates an additional file too to rewrite some stuff in the exported.obj.
But this way, only one file used, I can simply throw around multiple geos. UV edit in Headus, go to max, change it, check the end result in maya.
With exporting the polygroups, the process would be a layer deeper into complexity.
Actually one of the main problems is, how to keep vertex order while keeping the polygroups and keeping the "only one obj" process. One of my problems is actually in zbrush obj writing solution.
So the obj is a file format but there is no police to regulate it. Maya has one solution. (Maya uses groups in the obj format. As far as I know, no one else is. So when maya exports geos, actually writes before the name of the geo the name of the group in which the geo is. Great. The problem is, even maya doesn't uses this information on import. And could cause hell of a mess in other programs.)
Zbrush has a different problem, which comes in with polygorups. So the polygroup thing should be as simple as exporting multiple geos at once. The problem is the obj format has this sequence in the line writing/reading. Verticies, vertex coordinates, vertex normals, faces, group name (this will be usually the object name). Plain and simple. The problem is, Maya uses the standard as follows: vt, vtx, vn, faces, group name, and if you have more objects selected, repeat this. In zbrush it looks like this: ALL vt, ALL vtx, ALL vn, faces, groups and if you have more objects (or in our case polygroups) repeat the "face, groups" part, and list the relations between them.
This is not a problem if you are handeling single objects, or if you are exting subtools with only one polygroup. But this will as soon as you want to do multiple geos.
Sorry for the long answer, but wanted to share that I discovered this far into the problem. I can see some simple solutions to get around it. So thanks for mentioning your method, I will definitaley look into it.
Usually in work we doesn't bother that much with the lost polygroups. I usually use the autogroup by uv or the Groups by normals.
Other view on the problem, but if you want to keep the polygroups in zbrush after updatating a geometry from Maya, you can use the "Polypaint from polygroups", import, "Groups from Polypaint" buttons. This will save the polygorups into the vertex color, importing the geo (if the imported geo has the same vertex order Zbrush will assign it as a vertex offset, and will keep the vertex colors), and reassign te polygroups.
Actually, maybe this could be a solution for the Zbrush->Maya process too, just save out the polygroups into the vertex color slot... Hm. I will look into it. Thanks. (This would keep intact the vertex ordering too...)
I did have a strange occurance at one stage when the import scale had to be set at 100 for real-world to work, but haven't been able to reproduce it and everything's working as it should at import scale 10.
If anyone's interested in setting the scale up perfectly for real-world from Max to ZB I'll just post it here: (just to clarify what you've said above)
Adjust the settings in the .obj plugin for both export and import, and make sure to make it permanent by setting it in the dialogue box(to the right of the preset dropdown) within the floating dialogue. Set Import=10 - Export=0.1
That's it. Now 3dsMax and Zbrush are essentially the same application....:)
Also, to note: my ZB install path was the Startup folder directly within the program files>pixologic folder, rather than the deeper sub-folder layer shown in your install video.
Tiny request....would be great if the 'overwrite file' prompt could be bypassed with an auto-yes in the script upon Max export.
Thanks again, loving this.
Thanks in advance for your struggling to make this useful piece of software even better Looking forward to see and imporved version!
http://orig07.deviantart.net/bc38/f/2015/118/3/9/143024363470100_by_generalpleco2007-d8relbj.gif
@pasha_sevez I've just been emailing Daniel and he says he's planning on updating/expanding it soon. He also may have a substance Painter bridge script on the cards.
I hope he goes with sp also topogun would be nice.
source StyxInstallShelf; installShelf();
// Warning: string $parentPopupMenu = `popupMenu`;
//
// Warning: "C:/Users/Sunray/Documents/maya/2017/scripts/StyxInstallShelf.mel" line 8.38 : Redeclaration of variable "$parentPopupMenu" shadows previous declaration at line 4. Previous value will be overwritten by explicit initializer. //
// Warning: string $parentPopupMenu = `popupMenu`;
//
// Warning: "C:/Users/Sunray/Documents/maya/2017/scripts/StyxInstallShelf.mel" line 13.38 : Redeclaration of variable "$parentPopupMenu" shadows previous declaration at line 4. Previous value will be overwritten by explicit initializer. //
// Warning: string $parentPopupMenu = `popupMenu`;
//
// Warning: "C:/Users/Sunray/Documents/maya/2017/scripts/StyxInstallShelf.mel" line 17.38 : Redeclaration of variable "$parentPopupMenu" shadows previous declaration at line 4. Previous value will be overwritten by explicit initializer. //
// Warning: string $parentPopupMenu = `popupMenu`;
//
// Warning: "C:/Users/Sunray/Documents/maya/2017/scripts/StyxInstallShelf.mel" line 21.38 : Redeclaration of variable "$parentPopupMenu" shadows previous declaration at line 4. Previous value will be overwritten by explicit initializer. //
anyone know why please help I can't live without this plugin any more.
No word yet on an update.
Working with single objects is a pain.
Also Shogunato I guess that free script has the same limitation.
And in Maya I use the script rd_browser (by Rich Diamant) to manage my batch import/export OBJ, very usefull.
I never really used GOZ.
Hey man!
Yeah, I’m also thinking about going into Blender.
I can’t promise anything, but I think I will have some to the Blender version also.
Thnaks for the feedback.
Dan