Home Technical Talk

[3Ds Max] Scene management and/or exporting with MatID

ElleKitty
polycounter lvl 3
Offline / Send Message
ElleKitty polycounter lvl 3
Ick ick ick, I'm at my wits' end. I have no trouble making proper models which happily sit in their place; however, I dont know how to easily and properly manage groups of items in order to spread them out throughout my scenes. Here are the things that I have tried which havent worked for me, in Max 2016. I tried to copy around a house model with numerous pieces, into several different places.

These exist different Xref options, but they mostly insist that every imported object be handled separately. Means, if I had 60 different objects in a house, and I need that house copied 5 times, now I have 300 objects on my hands. Ick.

1. I tried Xref. Xref works kinda well, except it consists of many many objects in my layer, and those objects always go into the same folder they were created in. I tried to set the option off, so that they would be Xrefed into the currently active layer, but they wont. This setting only ever works for the parent, but all of the children stubbornly go into the same folder in which they were created. This goes for Xref Scene, this goes for Xref Object.

2. I tried containers. I always fumbled with them, tried to give them a fair chance now. I finally figured out how they work. However, they remain clunky, in various tiny ways. For example I can set containers to automatically update when the source is updated. This polls them fairly frequently though, and for every poll, your scene is considered as changed (if you save your scene, and go to close, you will be asked to save again; containers are the cause of this). If you uncheck this option, you have to manually update each of your child containers. Each, because they cannot be instanced, and if you select all of them, you cannot access their parameters in order to update them in one fell swoop.

3. I tried groups. Groups would kinda be awesome, except for the usual stuff that people dont like about them. I mean, there's the objects in it, they arent ghost-objects and I can click them to select the group, and if I instance a group, they will mostly all update if I edit them one. But they are hardly optimal either.

4. I have tried Alembic. And it has this very interesting Performance Mode! Alembic also brings in dozens of objects with it, BUT when you enable performance mode, the alembic container absorbs the items into itself and becomes a single object until you disengage this mode. However it's rather buggy so far. It doesnt seem to save the materials, so I tried to apply the material to the container in performance mode, hoping that the material will be propagated to all the contained children, and this has instead softlocked my Max. Furthermore when I enable the performance mode, some of my objects in the group fly off in different directions, for example my roof goes up by 5 metres for no apparent reason (probably xform issues, but i have way too many models to comfortably xform and collapse all of them, and their deliciously editable modifiers). This is a bug, because when I render, those objects render in correct places. Alembic got me the closest to my goal, but thats still not it.

Angered by all of these issues, I dropped the project for a few days in order for my nerves to calm down in regards to it. Now I've resigned to collapse my geometry if I have to, so that every house would be a single object, even if it means having to collapse and export every time. But here are my additional issues...

5. I tried to export as OBJ. This turned out like it's going to be very nice, because I can select my many objects and export them, then on import I would select "Import as single mesh" in order to painlessly get a collapsed object. This works wonderfully... except for one part, where it collapses every Material ID to 1. This is unacceptable, as I use MultiSubObject material on the house. That is, like, the only part that ruins everything for me. Can OBJ be made to keep matIDs? Can you try and see if you can retain matIDs somehow?

6. I've also tried to save as FBX and import it. It imports as numerous objects (though with proper IDs). If I import it, then collapse it, then reexport as FBX, it loses IDs again. I dont know what I've done wrong in my workflow, but after collapsing, IDs are not kept.

7. I've also tried to import FBX via the Link Manager menu. However such a FBX is susceptible to most issues as when importing it as an object, plus it can now only be operated from a menu, cannot truly be deleted from the scene, can only be deleted from the menu itself.

8. I've tried the 3DS format. It always reimports as Editable Mesh, and triangulates some of my polys without me wanting to. It has very little export options, so nothing that I can do about it in the end.

This is a lot of options, mind you. But I am puzzled that I cant make even a single one work for me. I cannot manage too many objects and I do my best to condense them in any way I can. The OBJ method would be best, if I could find a way to retain matIDs by the time I import as a single mesh. What I could do then is make an object (a box but can be anything) and then use Substitute modifier in order to pick the condensed object into the dummy (this would be awesome because i could repick the object as many times as i wanted, and substitute modifier is fully instancable so i would need to maintain just one-two objects for infinite copies).

I'm all out of guesses. What do?

Replies

  • Eric Chadwick
    Options
    Offline / Send Message
    What is the goal? Are you rendering large scenes completely in 3ds Max? Or are you trying to create game levels which are exported to a game engine?

    What is the main problem you are trying to overcome by using file references? Viewport performance? Or same content in multiple scenes?

    Also, do you have access to V-Ray? They have a proxy system which might be interesting for you.

    I share your pain, as do many other Max users. All the solutions have issues, as you've become aware. :(
  • ElleKitty
    Options
    Offline / Send Message
    ElleKitty polycounter lvl 3
    I just want to create stuff for myself, for the time being it can be just in Max, so that I can render it. I have sane numbers of polygons so I'm not currently optimising for that. Exporting to a game engine would be possible as I dabble in Unity a bit.

    The real reason why I'm trying to use references is management. After a certain treshold I am not able to precess the amount of objects any longer. I can make a few house models, for example, in the centre of the scene, each of them neatly having its own layer. But there comes a moment where I want to make a small neighbourhood out of those houses, and I am simply unable to. If I try to not collapse them, the references are just as complex as if I used Group on my original house model and copied it around. If I collapse them, well see the issues above (unwanted triangulation, IDs not preserved). If I tried to make a neighbourhood with what I have now, I would have hundreds and thousands of objects to deal with. My compy can somehow deal with too many vertices, but I cannot properly deal with too many objects. So to condense my thought, my end goal is to be able to click anywhere on the house, and have that house be selected as a single object, and so that I can manipulate it as a single object, and that it is a single object in the layer palette.

    I dont have access to Vray. I use Mental Ray which has mrProxy which I gather is MR equavilent. I tried that too, I just forgot to list it in the first post, I knew that I was forgetting something. It, too, is only able to store a single object per proxy. Meaning I'd still need a dozen of proxy objects to make up a single house model.

    P.S. Thank you Eric, you're awesome, whenever I come to Polycount I see you giving awesome answers to troubled Polycounters!
  • Eric Chadwick
    Options
    Offline / Send Message
    Aw shucks. Thanks.

    OK so it's really just managing scene complexity.

    I use Layers a lot for this, I've been rendering large architectural scenes with tons of complexity... 1200-seat dinners in hotel event rooms, in hotels with multiple floors. Each floor having multiple furniture layouts (dinner, theatre, classroom, etc.).

    I use a third-party layer tool called Nested Layer Manager by Tim Hawker, really much nicer to use than the sucky default Layer Manager. Well worth the low cost.
  • Eric Chadwick
    Options
    Offline / Send Message
    Also I've been using State Sets a lot, for managing the different renders I need to create. Very handy way to batch-render multiple setups within the same Max file.

    Edit... some examples of that kind of work here: http://ericchadwick.com/img/architectural.html
  • ElleKitty
    Options
    Offline / Send Message
    ElleKitty polycounter lvl 3
    I've been trying additional stuff while waiting. I have discovered a couple of interesting things.

    OBJ is interesting to me because it specifically has the option to import as a single mesh at will (in addition to giving an option of importing as poly rather than just as a mesh). However I was having issue getting MatIDs to stick, and this is what I discovered, for anyone who cares.

    OBJ apparently only seems to export MatIDs if you also export a MSO (multi sub object) material with it. You must choose to export a material, and possibly create a mat-library with it. However in MSO material I was using A&D materials (exclusive to mental ray) and it wouldnt work. Just for the sake of craziness, I tried using Standard materials instead, and behold, suddenly MatIDs export nicely. I dont understand why it's this way though. The exporter should ideally look at poly MatIDs, and not based on where all the materials currently are. Like many utilities, it probably hasnt been touched in years, and probably only works with Standard material which, at this age, I consider legacy.

    Another thing that I discovered is the Collapse Utility from the utilities panel. You select your objects, go to its utility panel, make sure that "Single Mesh" is selected, and then hit Collapse. They all become an Editable Mesh, however there are no artefacts caused by triangulation or such. If instances are used in the process, instances which are not a part of the process will be left alone instead of destroyed. The pivot is also centred.

    What I'm going to try doing is...
    1. Make a copy of my house model, just off to the side.
    2. Collapse it, it gets a centred pivot and is an editable mesh
    3. Move its pivot, which is likely (0,0,0) in my workflow
    4. Convert to Poly, use as needed.

    This answers one issue of mine. The rest seem like they're going to remain unanswered for the time being. maybe a good layer manager would go a long way helping me deal with things. The Xref options are going to have to wait a little more. Maybe v2017? Max 2016 certainly delivered more than anyone expected at that point, so power to the masses.
  • Eric Chadwick
    Options
    Offline / Send Message
    The problem with collapsing/attaching is you can't simplify the complexity of your scene very easily. Eventually the scene will become too unwieldy for your graphics card to keep up. Also you can't edit the insides very easily, if you ever need to swap stuff out or fix something.

    I find it helps to use a layer naming system to manage stuff, and folders also help. Nested Layer Manager allows multiple nested folders, with Layers inside those, very handy.

    From a recent project (blurred out the NDA bits)

    yCn7Bdj.png
Sign In or Register to comment.