首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >( mtl )在运行时加载UE4纹理时出现问题

( mtl )在运行时加载UE4纹理时出现问题
EN

Stack Overflow用户
提问于 2020-09-17 17:09:58
回答 1查看 725关注 0票数 0

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

代码语言:javascript
复制
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 
            }
        }
    }

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-09-19 09:28:09

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

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

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

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

要创建DMI,您需要已经创建了一种材质,该材质包含您想要在创建DMI时更改的参数。下面是一个非常基本的示例,我将使用该示例进行演示:

如您所见,我已经创建了一个带有TextureObjectParameter的材质。将这个参数命名为您希望的名称,给它一个相关的名称是很重要的,因为这是您在修改DMI时要引用的名称(在本例中,我将其命名为"color")。

接下来,当您想要创建此材料的DMI时,在蓝图中是这样做的:

在这张图片中,我首先导入了我的纹理,然后创建了一个TestMaterial类的DMI,并修改了我在原始material类中创建的任何参数(在本例中,要更改的参数是"color“,我希望将其更改为我刚刚导入的纹理)。您可以根据需要修改任意多个参数,但请记住,这些参数必须首先存在于原始材质类中。但请记住,DMIs也只存在于运行时,所有对它们的引用都将在您退出游戏后删除,因此请谨慎使用它们!

我真的希望我正确地理解了你的问题,我很抱歉不能提供实际的C++帮助。祝你的游戏开发顺利!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63934818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档