Many typical source formats already do what you're asking for in data.  The format will contain a list of N materials and a list of M meshes with a mapping for each particular mesh to the material it uses.  Your converter can convert these directly to your in-engine format.

Other formats make use of external references, which is handy if you have multiple meshes that share materials.  The format is again usually the same: the format has a list of N material references and M meshes and maps each mesh to its material.

In engine, you would either use a reference/pointer/handle to each material for each mesh or use an ID system.  You load your optimized format which would likely use a reference system as in the previous paragraph.  When you load foo.model you'd get a hierarchy of M meshes each with an identiier of the material resource to load.  You load the material if not already loaded and attach the handle/id to the mesh.

For example, you might have the files:

/asset/material/stone.mat
/asset/material/steel.mat
/asset/model/gargoyle.model
/asset/model/gargoyle/face.mat
/asset/model/rock.model
/asset/model/sword.model


In such a setup, your gargoyle.mod might have 4 sub meshes using 3 materials, something like:

body =&gt; /asset/material/stone.mat
sword =&gt; /asset/material/steel.mat
armor =&gt; /asset/material/steel.mat
head =&gt; /asset/model/gargoyle/face.mat


This maps to a structure like:

materials: [0:stone, 1:steel, 2:face]
meshes: [0:(body, 0), 1:(sword, 1), 2:(armor, 1), 3:(head, 2)]


Your engine basically loads that data, loading any materials referenced that's it's missing.  Assuming you've already loaded a number of materials, the in-memory format would be similar to the above but with different IDs (mapping to in-memory structures and not the on-file structure):

materials: [..., 25:stone, ..., 57:steel, ..., 93:face, ...]
models: [..., gargoyle: [0:(body, 25), 1:(sword, 57), 2:(armor, 57), 3:(face, 93)], ...]


A library like Open Asset Importer makes writing your converters much easier given all the formats it supports.  You may need to modify it or branch out if your source format extensions (3d authoring plugins) get too advanced, though it does have a degree of flexibility.

Best way to organize models with multiple meshes and textures?
I have some Linux servers (RHEL 6.3 and 5.4) under one domain (MS Windows server 2008R2) and every thing was working fine, but we decided to change the domain from olddomain.com to newdomain.com, now the new domain under (Windows server 2012), I changed the domain from the old one to the new one in all Linux servers.

The result of $dnsdomainname command is newdomain.com on all Linux servers. when I ping any Linux server from it give me Lin_name.newdomain.com but the problem I am facing now the log inside log rotate and forward still recognize the old domain. it give me like the following:

Nov 19 10.00.09 Lin_name.olddomain.com Lin_name [message like someone logged in or out start proccess ..etc]

