Author Topic: Asset/Proxy Management in 3dsmax  (Read 7280 times)

2018-02-06, 10:44:32

StefanDeak

  • Users
  • *
  • Posts: 3
    • View Profile
So,
I am a bit confused about file and asset management in max. I hope someone could shed some light on my questions.

First let me explain: I replaced the max project folder structure with a simpler one that I created which I am using for each scene.
So I go on and create my scene and I copy all the textures and models from the AssetMotherFolder to the Project Folder as I need them for materials and modelling and so on, while having all the paths set to relative by default.

The GOOD:
- I can move the folder if I need to and it`s entirely independent from anything else;

The BAD:
- there are a lot of duplicate files and it doesn`t really make sense to have them, even though space is not an issue for me;
- I have to recreate my materials every time, but this is not a big problem because most of them are different anyway from project to project and it`s pretty easy to set them up in Corona;
- the 3dmodels; I copy them to the Project Folder then merge with the scene then look in the Asset Tracker for the missing bitmaps and find them in the AssetMotherFolder then copy them to the working Project Folder ( this is a pain since not all bitmaps are in the same place ) then I create a corona proxy and save it in the Project Folder;

One simple solution I found is to run the Resource Collector Utility every time I merge something. The other one would be to set as absolute paths the AssetMotherFolder as the project subfolders for bitmaps and so on, but if I do this then I won`t be able to move the folder at will.

So here`s my question related to this whole thing: I thought about presaving my 3dasset library as corona proxies so I can just import them when I need something. I prefer using cproxies rather than xrefs since I found they offer a bit more functionality. Using xrefs however, would be much more convenient since the whole thing would come all ready to go with materials applied. Corona proxies though, they don`t have the materials applied to them so I would have to have the material premade and saved in a library in order to apply it, which I DON`T and anyway this implies copying bitmaps/ running resource collector. So I don`t know how to best optimize this whole part of the process. What`s the best way to go about it?

How DO people manage their assets and material libraries? What`s the workflow you guys use?

Also, I stumbled upon something else: I have one of the trees collections from VP. When I open their model, in the asset tracker the bitmaps have NO paths, but they are Found and loaded. Even more so. I can move the model file anywhere on my hdd and the bitmaps would be automatically found within 2 seconds of opening the file without me doing anything and without showing any path in the tracker. If I click on  Reveal in Explorer, it takes me to the correct location of the bitmaps. BUT, if I merge the model with my scene then they are Missing and I have to manually find them/ resource collector them. Does anyone know what`s happening in the original model file? I didn`t manage to find anything so far.

Sorry for the lengthy post. I hope this will help other people who have the same questions as me since there`s not much on this on the internet.

Thanks,
Stefan.

2018-02-06, 18:51:01
Reply #1

iancamarillo

  • Active Users
  • **
  • Posts: 281
    • View Profile
I wish Max was smart enough to find the assets. One problem is leaf.jpg may be different for different models. So how would it differentiate between that? This is a problem I run into when archiving jobs, it fails many times. If max added "set path" to the drop down menu when dragging max files into scenes to merge, that would be better.

2018-02-06, 20:41:18
Reply #2

telemix

  • Active Users
  • **
  • Posts: 29
    • View Profile
Assets do not need paths, if they are inside the root folder!
The program does not see Asset (without paths), if they are outside the folder from which the Max file is open.
« Last Edit: 2018-02-07, 00:03:13 by telemix »

2018-02-06, 23:24:09
Reply #3

Njen

  • Active Users
  • **
  • Posts: 557
    • View Profile
    • Cyan Eyed
When reusing assets (textures, models, etc.), it is always safer to copy them (from your main library) to each of the projects that need them for two main reasons:

* You can edit them without fear of messing up unconnected and unrelated projects.
* You can just archive the entire project folder and know that if in the future if you need to rerender anything again, all you need to do is unarchive the project and in theory have it render like it was before without worrying about any dependencies.

I make cproxies out of everything in my scenes. It makes file sizes much smaller, and it makes scenes more manageable because all I need to do is change one file to have the asset update in all shots.

As for materials, I have a system where I store all of the materials on simple boxes in a max file that I use as a material library for each main asset. Then when I want to make updates to the shader, I just make the changes in the max file I use as the material library, then I run a script that merges in the boxes, overrides scene materials with merged materials, then delete the boxes with a single click.

I can go on in lot's more detail if you want...

2018-02-07, 00:36:07
Reply #4

mferster

  • Active Users
  • **
  • Posts: 523
    • View Profile
I've been using design connected's Connecter asset manager.

https://www.designconnected.com/connecter/

It's been working great. It's neatly layed out, uses click and drag to drop models into your scene, fast search;  It works great for finding and relinking maps if you have issues with that in your collection. The only downside was organizing my existing collection and going through and linking the correct preview images, and toggling file type visibilities for specific folders.

Apparently it also works for materials as well, but I have yet to jump into that boat yet.

2018-02-07, 03:01:51
Reply #5

StefanDeak

  • Users
  • *
  • Posts: 3
    • View Profile
Hey guys, thank you for your answers. Good stuff! Here`s my replies:

to iancamarillo:
I know! god bless leaf.jpg and bark.jpg. I`m not sure but I think what you want is scriptable. My textures are pretty organized so that there`s no duplicate names. Here`s the naming system I`ve been using for the last 6 months and it`s been working fine so far. Basically every file is named <main_type>_<nnn>_<description>_<n1>_<t>_<n2> where
   <main_type> is the general category: concrete, metal, marble etc.;
   <nnn> is the order number: 001, 002, 054 etc.;
   <description> is a description so that I can do a search in the search bar and find what I need;
   <n1> is another number which differentiates different jpg sizes/ resolutions;
   <t> is the type of map: b for bump, d for diffuse etc.;
   <n2> is the number of any edited version of the original, that I created myself;
So an example would be: concrete_064_rough_1_b_2.png. This is just personal preference but I use only lowercase for filenames and uppercase for folders. Also, no spaces, all underscores. I`m also considering dropping the <n1> since I don`t really use it anymore, I just go with the biggest resolution that I have.
My 3dModels Library however, is in complete chaos. Me wanting to sort it out is how this all started. It`s just a jumble of bitmaps, proxies and models.

to telemix:
Well, no. I also kinda knew what you said to be true but it seems it`s not, and that was my question. The 3dmodel comes with the bitmaps in the root folder, so that when I open the max file they load up just fine without any paths. All good so far. BUT, if I cut the max file (only) from my external hdd and paste it somewhere else, onto my desktop for example, then open it, the bitmaps are loaded without any paths. How is this possible?

to Njen:
Thanks! I got everything you said. Your system for dealing with materials seems pretty simple and straightforward. Probably better than using 3dsmax`s material libraries filetypes. I have one more question though.
Do you make the cproxies every time for every project and keep them in the project folder? Or do you have them in your main library and import them when you need them? How do you reuse them?

to mferster:
Thanks for the suggestion. I checked it out and I`ll give it a try for sure. I was hoping to figure out how to use max`s native tools for management first and see how far that takes me before trying anything else.

Stefan.

2018-02-07, 11:30:03
Reply #6

SHORT CUTS

  • Active Users
  • **
  • Posts: 83
    • View Profile
    • SHORT CUTS
+1 for Connector + its free to use. Took me 1-2 days to set it up the way i can work with it but once you are used to it its a great time saver. Another plus for us that i can create a pdf catalog of my models and materials with one click and send them to my clients or other departments in our agency and they can pick the furniture/objects they want to use.

2018-02-07, 20:43:29
Reply #7

Njen

  • Active Users
  • **
  • Posts: 557
    • View Profile
    • Cyan Eyed
Storing materials as max files instead of libraries also maintains any Slate node layouts that you have made. I have a particular way I like to layout my slate nodes, and I would hate to constantly waste time re-laying out shaders again and again when I want to make changes.

Plus, I am a big fan of making sure that I am reusing connections on shaders as much as possible. For example, if I have three trees, and they are all using 'leaf_baseColour_v001.1001.exr' in the diffuse slot, then in the material library max file I can make sure there is only one instance of the bitmap that is hooked up to each of the materials. Then when I merge in my shader boxes, all connections between materials are always maintained, so that instances of all three types of trees will not only be reading the same texture, but the same slate node. This guarantees that any updates will go to all of the appropriate assets.

As for management of proxies, yes they are only local to the project, because the proxy is still a dependency of the original asset (max file copied from the main library) it came from, and that asset needs to be editable without having unrelated projects accidentally update if it was reading from a main library directly.

2018-02-08, 08:05:24
Reply #8

StefanDeak

  • Users
  • *
  • Posts: 3
    • View Profile
Thanks again for the replies guys!

to Njen:

   I tried out what you said. Other than the dependencies of the nodes, which do carry over nicely indeed, how do you maintain the layouts? I always end up resizing and adjusting the nodes so that I can read the names since they`re always too long to fit. I`ll try optimizing the shader connections too, where I can. That seems like a good thing to do.
   Regarding the proxies, I can see now that`s it`s easier to have them for your local project only, instead of in your main library - this way you don`t have to have the material presaved in order to apply it. But you say that the proxy is dependent on the original .max file, which is not. It`s linked to the .cgeo file. If you want to edit it then you can Duplicate as mesh then overwrite the proxy, and this will affect only that specific project. No?


   Also, I tried out Connecter and it`s really nice since now I can preview properly all the assets and it cuts down on the steps. In case anyone else who hasn`t tried this yet and is interested, here`s how it goes.
up-until-now steps:
   1. navigate to the preview folder ( if you have one ) and choose what you want to import;
   2. navigate to the main library folder of the thing you want to import;
   3. in a separate window, navigate to the local project folder;
   4. copy said asset and maps to the respective folders in your local project folder;
   5. merge;
   6. update missing file paths and make them relative;
   7. make proxy;
   8. rename your object and proxy; ( if your OCD is extreme like mine and you use the latin names of the damn plants, this is quite a pain )
using-connecter steps:
   1. choose what you want in the UI;
   2. drag and drop and choose merge as proxy; ( if you choose normal merge, then you end up doing all the steps above )
   3. change paths of the missing external files ( you can set it so that it copies them automatically )
   4. make paths relative;
   - there`s an option you can change and it automatically creates the proxy ( with the proper name ) in your local project folder;

   Is there a way to automatically set the paths to relative to the opened file? I haven`t found anything on this yet.

Stefan.

2018-02-08, 11:15:26
Reply #9

romullus

  • Global Moderator
  • Active Users
  • ****
  • Posts: 8887
  • Let's move this topic, shall we?
    • View Profile
    • My Models
As for proxies, i tend to save them in an empty max scene with absolute paths. When i need them in some project, i simply merge proxies from that max file and they come with materials already assigned and every paths are working. Then i can launch collect assets script and it will copy everything to project folder and will change paths accordingly. Although i rarely do that, it's fine for my needs if assets are being read from original files.
I'm not Corona Team member. Everything i say, is my personal opinion only.
My Models | My Videos | My Pictures