Установка диффузной карты материала в 3ds max с помощью C++

Я разрабатываю служебный плагин для 3dsMax 2013 и 2014 на C++. В этом мне нужно установить растровое изображение на диффузную карту материала текущего выбранного объекта. Я попробовал следующий код, имя файла отображается рядом с диффузной картой в редакторе материалов, но изображение не применяется к материалу, а также при нажатии кнопки "Просмотр изображения" в свитке "Параметры растрового изображения" также не отображается изображение.

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);
}

Нужно ли устанавливать некоторые другие параметры, чтобы установить карту?

0 ответов

Другие вопросы по тегам