3ds Max stores groups of materials in a library file with the .mat file extension. The API provides methods to access the materials stored in these libraries. You can use the methods Interface::LoadMaterialLib()
and Interface::SaveMaterialLib()
. This class also has a method GetMaterialLibrary()
which returns a reference to the currently loaded library. You may then use class MtlBaseLib
to access the materials themselves. The sample code below shows how this is done. It loads a materials library, removes a single material, and saves it again.
void TestMaterialLib()
{
// TODO: Change the path
TCHAR *n1 = _T("D:\\3DSMAX\\MAPS\\3DSMAX.MAT");
int okay = ip->LoadMaterialLib(n1);
if (! okay) return;
// Declare this as references since we want to manipulate the
// original material library and not a copy.
MtlBaseLib &mlib1 = ip->GetMaterialLibrary();
intindex = mlib1.FindMtlByName(TSTR(_T("Aqua Glaze")));
if (index != -1)
mlib1.Remove(mlib1[index]);
ip->SaveMaterialLib(n1);
}