我正在用 C++ 为 3dsMax 2013 和 2014 开发一个实用插件。在此,我需要为当前选定对象的材质的漫反射贴图设置一个位图。我尝试了以下代码,文件名显示在材质编辑器中的漫反射贴图附近,但图像未应用于材质以及单击位图参数卷展栏中的查看图像按钮时也未显示任何图像。
Bitmap* bmap;
BitmapInfo bmap_info(L"D:\\misc\\licenseplates.jpg");
// Load the selected image
BMMRES status;
bmap = TheManager->Load(&bmap_info, &status);
for( int i = 0; i < GetCOREInterface()->GetSelNodeCount(); ++i )
{
INode *node = GetCOREInterface()->GetSelNode(i);
// Get the material from the node
Mtl *m = node->GetMtl();
if (!m) return; // No material assigned
StdMat* std = (StdMat *)m;
// Access the Diffuse map
BitmapTex *tmap = (BitmapTex *)std->GetSubTexmap(ID_DI);
// No map assigned
if (!tmap)
{
tmap = (BitmapTex*)NewDefaultBitmapTex();
}
tmap->SetBitmap(bmap);
tmap->SetBitmapInfo(bmap_info);
tmap->ReloadBitmapAndUpdate();
tmap->fnReload();
std->SetSubTexmap(ID_DI,tmap);
std->SetTexmapAmt(ID_DI,1.0f,0);
std->EnableMap(ID_DI, TRUE);
}
我是否还需要设置一些其他参数来设置地图?