【问题标题】:(UE4 Assimp) Issues loading mtl texture at runtime(UE4 Assimp) 在运行时加载 mtl 纹理的问题
【发布时间】:2021-01-04 03:46:20
【问题描述】:

我正在使用 Assimp 在运行时通过虚幻引擎导入 3d Obj。 由于mtl文件,我尝试导入纹理,我可以获得名称纹理文件,但我的问题是,如何使用它在UTexture2D中导入纹理并将其放入MID?

if (scene->HasMaterials())
    {
        for (unsigned int m = 0; m < scene->mNumMaterials; ++m)
        {
            aiMaterial* material = scene->mMaterials[m];
            aiString materialName;
            aiReturn ret;

            ret = material->Get(AI_MATKEY_NAME, materialName);
            if (ret != AI_SUCCESS) materialName = "";

            //Diffuse maps
            int numTextures = material->GetTextureCount(aiTextureType_DIFFUSE);
            aiString textureName;

            if (numTextures > 0)
            {
               
                ret = material->Get(AI_MATKEY_TEXTURE(aiTextureType_DIFFUSE, 0), textureName);

                std::string textureType = "diffuse_";
                std::string textureFileName = textureType + textureName.data;//Name Texture file 
            }
        }
    }

谢谢。

【问题讨论】:

    标签: c++ runtime textures unreal-engine4 assimp


    【解决方案1】:

    希望我能根据您提供的内容在一定程度上回答您的问题。

    根据我对您的问题的理解,您可以访问保存纹理的文件名(这必须是完整路径),并希望将其作为 UTexture2D 导入。我以前没有在 C++ 中使用过导入,但我假设它和在蓝图中一样简单。在蓝图中,有一个现有的节点可以做到这一点。看一看:Import File as Texture 2D

    现在您必须记住,这样导入它实际上不会为您创建永久材料,即使在重置游戏后您也可以参考。这只会在您的游戏期间在运行时导入它,并在您退出游戏后删除对它的所有引用。

    至于将其放入 MID,我不确定 MID 是什么。你是说DMI(动态材质实例)吗?如果没有,请澄清,希望我能提供进一步的帮助。如果您的意思是 DMI,那么这也很简单,尽管不幸的是我也没有在 C++ 中使用过它。不过,我将向您介绍该蓝图,并希望您可以自己用 C++ 解释它。

    要创建 DMI,您需要已经创建了一个材质,该材质包含您想要在创建 DMI 时更改的参数。对于一个非常基本的示例,我将使用以下示例进行演示: 如您所见,我创建了一个带有 TextureObjectParameter 的材质。将此参数命名为您希望的名称,重要的是给它一个相关名称,因为这是您在修改 DMI 时将引用的名称(在本示例中,我将其命名为“颜色”)。

    接下来,当您要创建此材质的 DMI 时,这是在蓝图中完成的: 在这张图片中,仅作为示例,我首先导入我的纹理,然后创建一个 TestMaterial 类的 DMI ,然后我将在原始材质类中创建的任何参数修改为我想要的(在本例中,要更改的参数是“颜色”,我希望将其更改为我刚刚导入的纹理)。您可以根据需要修改任意数量的参数,但请记住,这些参数必须首先存在于您的原始材质类中。但请记住,DMI 也仅存在于运行时,所有对它们的引用都会在您退出游戏后被删除,因此请谨慎使用它们!

    我真的希望我能正确理解您的问题,并且很抱歉无法提供实际的 C++ 帮助。祝您游戏开发顺利!

    【讨论】:

      猜你喜欢
      • 2017-09-27
      • 2015-02-15
      • 2014-03-24
      • 2021-10-23
      • 2012-01-13
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 2018-07-23
      相关资源
      最近更新 更多