our studio makes our models in max but we do rigging/animating in maya. well, we found a sweet bug with that pipeline today. If modelers do any edge turning on invisible edges in max, that all gets blown when coming into maya.
so…I’m trying to see if any other studios use this pipeline and if you’ve noticed it, and have any fixes.
The first thing I tried, was to do the weights in maya, load the model into max, save out weights, and load them back onto the original model. But i think that the built-in max weight saving tool uses vert order, and not world pos. I tend to break up the model in maya, so even though I replicated that in max, it’s not the same vert order.
Are there better skinning tools for max? something like paint weights in maya?( i know max has them, but they are balls) or a better weight saving/loading scripts?
I stay as far away from max as possible, when it comes to rigging/weighting. I know I could weight in max, but I have tools in maya that drastically cut down our weighting time, and I havent seen anything close to that in max.
so it isn’t really justifiable.
I’m browsing scriptspot now for some copy/paste weight tools, but if any of you max users have some names/scripts/urls handy, it would be appreciated.
[QUOTE=jeremy.ernst;2533]our studio makes our models in max but we do rigging/animating in maya. well, we found a sweet bug with that pipeline today. If modelers do any edge turning on invisible edges in max, that all gets blown when coming into maya. [/quote]
What gets blown? Just the edge turning (isn’t it calculated automatically in Maya for quads?), or the entire model?
As for your questions: If you skin in Maya, keep skinning in Maya. My suggestion is to find a solution to the problem- that is, an imperfect transfer of data between programs- rather than jump to create a workaround (which undoubtedly will cause more work in the long run). If you are just transferring models from Max to Maya, it would be really trivial to write out the data however you need, and re-assemble it in Maya. But with all the options available- namely obj and fbx/collada- I’m not sure why this pipeline is breaking. But I haven’t gone between programs in a couple years so I don’t remember all the problems.
If your vert ID’s are being changed between programs, the most thorough thing to do would be to write your own model importer/exporter (this will fix any issues that come up that may not be addressed with a less thorough solution). Next to that is write out skinning data based on vertex position, which can be saved/loaded from both Max and Maya.
Also, the Bungie guys (Seth and Jason here) use a multi-app pipeline, they may have more information for you, maybe concerning this problem in particular.
Objects exported from Max may not retain the same triangulation. Any edge turns unfortunately are not retained on export from Max. We are currently working on correcting that and from my perspective, there is no workaround.
we’ve had this pipeline for many many projects and just found this. the modelers are very particular about the edge flow/edge turns and this issue is causing texture “warbles” once the model gets into maya/in-engine.
I was thinking of writing something that would save and load skin data based on vertex position in max and maya. I already have one for maya but am not fluent in maxscript at all, so that may be tricky. maybe there is a way to port it…
Are you keeping the model as an Editable_Poly or and Editable_Mesh when you go to export? I could see the problems with retriangulation if it is still an Editable_Poly but depending on what you export the mesh as be it *.obj, *.x or something similar I don’t think ive seen retriangulation occur in all methods when the object is EMesh with all edges visible.
To confirm this I did a test with a sphere primitive. I converted it to Epoly and turned a group of edges. When I was finished I converted it to and Emesh and then exported as a Wavefront *.Obj. I imported it back into max and it came in as an Emesh. I converted it to Epoly and activated the “Turn” function. All the edges I turned were still maintained. I’m not sure if this method is applicable in all cases and I dont know if it would behave the same way in Maya but its worth trying.
Is there any reason u can’t manually triangulate the edge directions by splitting instead of turning?
save a UV state with a duplicate. manually triangulate quads fer yer edge flow preference. Transfer ( by world space ) yer UV’s back from the duplicate.
Anyone up for a edge turn for Maya petition thread?
that is the work flow we are proposing to the modelers now. Where if they were going to turn an edge, instead cut that edge in, and then turn it so it “saves” upon exporting.
I believe this is the normal work flow for modelers that work in maya since there are no invisible edges.
We wanted to steer clear of having the whole mesh triangulated, as we are dealing with meshes that are quite hi poly.
I suppose I’m just baffled by the whole problem. I’m sure many studios have this pipeline, so I’m curious how others dealt with it. Also, baffled by the fact autodesk acknowledges it (back in '07 from that link I posted earlier) and still nothing has been done. Well, I guess I’m not too surprised by that but still.
also, to Randall:
we tried both. But, emesh was just too triangulated to work with. Our cine models get very high poly, and what an ass ache that would be but, when we did do emesh, it did keep all the turned edge work they did. but that is a win-lose solution, and we are shooting for a win-win-win solution!(to quote Michael Scott) :):
[QUOTE=jeremy.ernst;2538]
also, to Randall:
we tried both. But, emesh was just too triangulated to work with. Our cine models get very high poly, and what an ass ache that would be but, when we did do emesh, it did keep all the turned edge work they did. but that is a win-lose solution, and we are shooting for a win-win-win solution!(to quote Michael Scott) :):[/QUOTE]
I get what you are saying but in the pictured example the edges are only visible because I have EPoly “turn” mode on, you can see that represented in the modifier panel. I didnt actually make all the edges visible I left them as is. The mesh is still by default comprised of Quads. I exported it as an *.obj with Faces as “Quads” checked and another time with Faces as “Polygons”. I was able to import them right back in with all the turned edges preserved and the mesh was still represented as quads. I don’t have Maya at my disposal right now to check this but it preserves everything in 3dsmax after importing, without having to turn on all the edges.
[QUOTE=jeremy.ernst;2535]I was thinking of writing something that would save and load skin data based on vertex position in max and maya. I already have one for maya but am not fluent in maxscript at all, so that may be tricky. maybe there is a way to port it…[/QUOTE]
I have not used Max for several years (and work on a Mac now so I don’t even have access to Max), but such a tool already existed and was built-in at the time I did. In the utilities panel, there should be an item called skinUtils or skinUtilities or something similar. The way it works is you select your skinned mesh, click a button in the utilities panel, and it creates a color-shaded copy of your mesh. This copy has skin information stored in its vertices. There is a separate operation on the plugin whereby you select the duplicated mesh and a skinned mesh and then it brings up a menu to ask how you would like to match the skin data. If your names were the same on both it can auto-match so it’s pretty fast.
[QUOTE=jeremy.ernst;2535]I’m sure many studios have this pipeline, so I’m curious how others dealt with it.[/quote]
I’m not sure how the Unreal Engine works but I use Unity, in which models and animations are separate assets. Therefore only my exported model (with skinning information on it) needs to have proper triangulation. When I apply an animation to the model (from any other file) all it is looking for is animated bone data, so I can have any mesh configuration in the animated file I jolly well feel like. Does Unreal not have a similar paradigm? If I care about my triangulation then, and the model with the desired triangulation were already in Max, then I would do the following:
[ol]
[li]Skin the quad version of the model in Maya (I prefer this because if I can still do ring and loop select then skinning goes much faster)
[/li][li]Export a triangulated version of the model from Max (obj or just “bake” the hidden triangle edges into the mesh and use fbx).
[/li][li]Bind the triangulated version to my skeleton in Maya and use Copy Skin Weights from the quad version to the triangle version.
[/li][li]Export the skinned triangle version as my model asset.
[/li][/ol]
As has been mentioned it’s because Maya dynamically triangulates models. This isn’t really fixable as it’s deliberate and probably desirable for rendered characters.
The way I’ve dealt with it before is as others have said and triangulated the bits I’m concerned about. Connect with a pair of verts selected in Max is my favourite approach. I wouldn’t use Cut as that can add extra verts and create tiny polys by mistake sometimes. I’d leave the areas that I don’t care about and forget about the fact Maya might retriangulate them.
Although it’s not relevant to the question, I’m interested in how you think Max’s skin weighting is weak. I’ve found the built in tools to be fine for the last few versions at least and haven’t found the need to look into any scripts. Most of my work is done with the Weight Tools toolbox and finished off with paint weights for things that need careful blending. Skin Wrap deals with transfering weights from one model to another.
Paint weights seems to do what I remember Maya doing (except with blue to red colouring and grey for unweighted). It was several years ago that I used Maya though. Have there been lots of exciting improvements since then that I missed out on?
thanks for the feedback. As RobinB pointed out, it’s maya that is re-triangulating(so the obj. example will work in max, but not in maya).
as for the max weighting question, its not the tools that aren’t ok, it’s the workflow I have in maya is far faster. I have a geometry matching tool that matches geometry of different topologies and projects the weights down. hard to explain, but an incredible time saver. (it works on meshes that are completely different sizes/topos)
it seems that either having modelers connect verts and flip tangible edges is the best bet. or the workflow adam suggested might work well too. I’ll run both by the art leads/modelers and see what they think.
Ahh I see, its been a while since I’ve had to deal with working through both packages. That’s too bad really. As unfortunate as it seems some of the most common workflows with these packages is determining the proper “workarounds”. Good luck.
This is good to know, we dabbled with a max/maya pipeline for our characters, and we had a few modelling issues. If its not fixed in max 2010 then its something ill raise before our next project.
[QUOTE=jeremy.ernst;2544]as for the max weighting question, its not the tools that aren’t ok, it’s the workflow I have in maya is far faster. I have a geometry matching tool that matches geometry of different topologies and projects the weights down. hard to explain, but an incredible time saver. (it works on meshes that are completely different sizes/topos)[/quote]
To stem off the people who are going to point out that you can also do this in Max, ‘power skinning’ is all about building custom TA tools and workflows, and it’d be foolish to try to share this across multiple packages- skin and write your tools in the package you are more comfortable in (Maya, in this case).
it seems that either having modelers connect verts and flip tangible edges is the best bet. or the workflow adam suggested might work well too. I’ll run both by the art leads/modelers and see what they think.
I am pretty sure grabbing all verts and hitting ‘connect’ also works to triangulate an entire mesh according to its invisible edges.
As for your problem, as I think you’ve already surmised, there’s no real solution (it is ‘determining the proper workarounds’ indeed). It probably wouldn’t be too hard to write a script that will save out hidden edges from Max, and you can take that data and cut/remove those edges in Maya. This will give you a temporary triangulation you can toggle on and off (as long as the vert ID’s don’t change). So you’d toggle it on for export or playblast but could leave it off otherwise, for example.
Sorry to bump an old thread, my studio recently switched to a Max/Maya pipeline and the artists are having the same issue. I was hoping that some fixes or a better workaround have been discovered since this 2009 posting. :):
So to reiterate the issue. Artists model, UV, and bake normal maps in MAX. Model is sent to Maya via .FBX for rigging and export. In Maya, and in game, you can see all the errors and artifacts that Maya caused by not retaining the invisible edge flow from max. This problem is even more apparent with normal maps, since normal maps take invisible edge direction into consideration when baked.
My understanding is that max has static invisible edges upon creation, and artists can further tune their model by turning desired edges before baking normal maps. On the other hand, Maya dynamically recreates all invisible edges on quads at all times.
It is not ideal for us to send fully triangulated models off to rigging, quads are preferred. The only work around I can think of is to take the final quad model with UVs to Maya, then triangulate the model to bake down Maya’s dynamic triangulation. Bring it back into MAX only for normal map baking, then when the quaded model textures, and normal maps get sent to Maya later for rigging, Maya should dynamically re triangulate the model to match the bake mesh from earlier.