Home Technical Talk

Blender to 3Ds Max Smoothing Groups Problem

polycounter lvl 2
Offline / Send Message
Pinned
Rivfader polycounter lvl 2
Hello! 
In Blender, I have a mesh with properly hard edges set up and ready to export. My client asked me about the availability of smoothing groups in 3D Max. I export with Geometry>Smoothing>Edges. It works fine in most cases and after importing to Max there are correct smoothing groups, but in this case, it is incorrect and I suppose it is because of complex hard edges set up. After importing this model, 3D Max creating custom smoothing groups with a minimum amount of that groups, and in some places shading is incorrect because of the same smoothing groups. Down below there are some screenshots. 
I think the solution of it might be to set up Blender Export settings to 
Geometry>Smoothing>Faces but it doesn't work and in Max, there is only one smoothing group after it.  
Please give me a hint on how can I set up Blender Export Settings or other tweaks (like a special modifier setup) to solve this problem. 

Replies

  • Rivfader
    Options
    Offline / Send Message
    Rivfader polycounter lvl 2
    Here is the screenshot when I imported the model from Blender without the 'smoothing groups' checkbox in Max. The shading is great but there are no smoothing groups. Maybe there is a way to generate smoothing groups from normals splitting in Max? 

  • gnoop
    Options
    Offline / Send Message
    gnoop polycounter
    Why smoothing groups are so necessary?   Anyway  the geo is usually coming into a game engine as  simply triangles and vertex normals with split hard edges and uv seams .     

    That smoothing group approach is rather Max weird  limitation because it doesn't have proper  normal /attribute transfer  and requires redundant extra edge loops, extra vertexes, special  tessellation  and other silly tricks  you never have to care about in a right modeling soft  like Blender  where you can just set/ transfer  vertex normals to their right directions.

    ps.    I think it's only possible to export "Normals only" from Blender. Then in Max  apply "Edit normals" modifier.  Go down  to edit poly  base and  make auto smooth groups  by angle.   In last versions of MAx  "edit normals" should keep proper  normals  marking them all as green custom ones.  After collapsing  the stack they still should stay right  altogether with smooth groups you  have just created on edit poly beneath edit normals.    Bet it could be scripted. 

    Can't quarantine it will always work although.   I never had to do it  even  with our in house engine that could import from Max only.       "Normals only"  been always working just fine




  • PolyHertz
    Options
    Offline / Send Message
    PolyHertz polycount lvl 666
    Depending on how your UVs are layed out, after import to Max you could set smoothing groups from UV seams using this tool by monster.

    There's also this post from Blenderartist forums that may help.
  • pior
    Options
    Offline / Send Message
    pior grand marshal polycounter
    To the OP : if you don't have access to it already, just ask your client to provide you with a short term licence for Max so that you can finely tweak the SGs yourself after export/import.

    It is likely very possible to find good export and import settings on both sides taking care of everything, but since things may get lost in translation regardless (as shown by your screenshots) you are better off verifying things manually. I'd personally recommend against any exotic roundabout method (like introducing split edges, and so on) as that may just confuse your client.

    TLDR : just work these SG natively, and provide your client with a .max file.
  • gnoop
    Options
    Offline / Send Message
    gnoop polycounter
    pior said:
     just ask your client to provide you with a short term licence for Max
    Isn't it possible only  for employer/employee relation  and not  client /customer/contractor ?    Just wonder .  Does Autodesk allow this?

  • Rivfader
    Options
    Offline / Send Message
    Rivfader polycounter lvl 2
    Thanks to all of you, appreciated. 
    @gnoop client said that with shading are no problems, but in the final version of the product he will reset all of the transforms and the normals may crash, and that why he needs smoothing groups set up. What do you think about that, is it possible? 
    unfortunately, your solution doesn't work and as the result, I have a model with the wrong 45deg angle smoothing groups. 
    @PolyHertz smoothing groups from UVs is a 50% solution because after this wheel I have a complex car model with seams without hard edges. Maybe I will try it if will not find any other better and faster solution. 

  • pior
    Options
    Offline / Send Message
    pior grand marshal polycounter
    Well, if your client is knowledgable enough to get their hands dirty with resetting transforms and normals, then you could very well agree with them to store the "groups" information as material IDs. These will be very straightforward to export/import, and then porting them over to SGs would just be a matter of selecting faces per material and setting the groups from there - and then delete all the unneeded matIDs once done. The process could even be partially or fully automated.

    There are some limitations of course as this won't support the SG trickery consisting of assigning faces to multiple groups to blend from hard to soft, but that's probably not something your client needs anyways.
  • gnoop
    Options
    Offline / Send Message
    gnoop polycounter
    Rivfader said:
    he will reset all of the transforms and the normals may crash, and that why he needs smoothing groups set up. What do you think about that, is it possible?
    Max had been long known before for crashing custom/explisit normals after even a slightest tweak.   But  recently Autodesk fixed  lots of that as far as I know.   Maybe it's just people still think it's safer   not to rely on explisit normals .     From  my quick test  reset transforms and scale doesn't  spoil explisit normals at all.

    Anyway  I always found  smoothing groups  a weird  clunky way to deal with shading .  Read so many time how  it's  so wrong to do such kind of  geo: 

    with tiny long triangles  and  how many crazy support loops and special tricks people do to cope with that using smoothing groups only.

    While with proper vertex normal projection/editing  it's never an issue  in a game engine on static geometry.   Most of a time you don't even have to do triangulation if your engine read  explicit normals properly.  

    But if your client wish smoothing goups I am affraif you have to switch to Max
  • Rivfader
    Options
    Offline / Send Message
    Rivfader polycounter lvl 2
    @gnoop thank you for the informative reply
    currently have a discussion with the client about that issue and hopefully we will get to the point without using 3D Max.
  • PolyHertz
    Options
    Offline / Send Message
    PolyHertz polycount lvl 666
    Just fyi; Because max's smoothing splits are done per-face instead of per-edge (or per triangle) some splits are actually impossible to transfer at a conceptual level. For instance, if two faces shared a series of edges but only some of those shared edges had a smoothing split you could not transfer them. This can be solved by triangulating the mesh since then only bad/broken geometry would share more then one edge per face.

    So the problem your facing may be solved by triangulating the whole mesh before export, or there may simply be a double edge or some bad geometry in there that's messing things up. If even after triangulation and any cleanup procedures it still doesn't work, it likely wouldn't be too difficult to write a script to convert split normals on a triangles-only mesh to smoothing groups.

    TLDR; Triangulate your mesh in Blender before export should fix this problem.
  • Ghogiel
    Options
    Offline / Send Message
    Ghogiel greentooth
    Someone mentioned it above, but there has been some changes to normals in Max recentlyish. I thought there might be a script that would be able to compare vertex normals and convert them to a smoothing group, but all I saw real quick is this sort of stuff



  • FourtyNights
    Options
    Offline / Send Message
    FourtyNights polycounter
    @Rivfader You could try to export as an .obj with "Bitflag Smooth Groups" enabled, and see if Max understands them (apparently Max uses exactly 32 smoothing groups as a maximum amount):


    P.S. Probably wise to uncheck the regular "Smooth Groups", if using the Bitflag one.

  • Rivfader
    Options
    Offline / Send Message
    Rivfader polycounter lvl 2
    @FourtyNights
    Unfortunately, it doesn't work well and there is the same kind of problem. 
  • poopipe
    Options
    Offline / Send Message
    poopipe grand marshal polycounter
    A max indie license is £320/year and presumably covers this sort of freelance work.  I'd just buy it and charge the client extra tbh
  • Pberezin
    Options
    Offline / Send Message

    Hi! Seems i met the same problem, and seems find a strange solution. In 3ds Max modofier stack I aded the tySmooth modifier before TurboSmooth. TySmooth is a modifier that comes with free and grate BTW plugin package named tyflow.


  • gnoop
    Options
    Offline / Send Message
    gnoop polycounter

    I think a solution could be also just to split hard edges with split modifier in Blender and export to Max that way. Then whatever you do in Max if edges are really split they would stay same .

    For a game it's no difference since evry hard edge or UV seam would be split in game engine anyway . As I recall tri-stripping doesn't work across hard edges or uv splits either so performance wise it would be identical.

  • kanga
    Options
    Offline / Send Message
    kanga quad damage

    Im with poopipe. Im a Blender user but I find smoothing groups in max more robust. Just snag an indie version and DIY it.

  • Senorpablo
    Options
    Offline / Send Message
    Senorpablo polycounter lvl 11

    I can't tell from your post if the smoothing groups are importing from Blender into Max correctly, but aren't rendering correctly? If that's the case, the model may have explicit or custom normals set which will override the smoothing groups. In that case, you need to reset the models normals so the dynamic normals which respect smoothing groups will be visible and active. You can do this by adding and edit normals modifier, selecting all normals and press reset, then collapse. Alternatively, you can apply a turn to poly modifier and collapse the stack. This issue is common with FBX files exported from Maya also.

  • gnoop
    Options
    Offline / Send Message
    gnoop polycounter

    If I understand it right it works really for random sells of random items . Not a sustainable business model even for sole person really . If you work for a game project of those that usually take more then just a year you will have to buy full license after first 100k you gross earned . If not that 'per project ' limitation it would be a nice offer from Autodesk indeed.

    In language they put into it it also seems as depending on your client's project too. I am struggling to find a customer whose game project is beneath 100k ceiling either . Nor they would be eager to disclose you their inside info.

    At the same time I see absolutely no reason why would Blender be not enough for any kind of game project. For static meshes at least . Those smooth groups are just an extra layer over vertex normals . It comes as vertexes and their normals in game engines anyway.

  • Manro
    Options
    Offline / Send Message
    Manro polycounter lvl 3

    SOLVED: Its because your model was export from blender, with old modifications. What do you need to do? In 3ds max firstly, you need convert your mesh with (editable mesh) to Edit Poly? then your model will be a correct smoothing groups. Cheers :)

Sign In or Register to comment.