当前位置: 首页 > 知识库问答 >
问题:

LibGDX fbx导出不显示图像纹理-显示为黑色

燕野
2023-03-14

不太确定问题发生在哪里。我在Blender有一个模型看起来是这样的:

我有它所有的UV贴图和这样的 ,蓝色高亮的边缘是从一个透明的.png纹理。下面是节点编辑器:

现在,当我按照LibGDX建议导出到.fbx时,我使用以下设置:

但当我通过fbx-convert运行它并生成我的g3dj文件时,材料显示如下:

"materials": [
    {
        "id": "blue_wireframe_glow", 
        "ambient": [ 0.200000,  0.200000,  0.200000], 
        "diffuse": [ 0.800000,  0.800000,  0.800000], 
        "emissive": [ 0.000000,  0.000000,  0.000000], 
        "opacity":  0.000000,
        "specular": [ 0.200000,  0.200000,  0.200000], 
        "shininess":  20.000000
    }
], 

没有图像纹理在视线内(即使当不透明度更改为1.0)。是不是有什么其他的东西我应该做,将使它的图像纹理将出现在g3dj文件?是我装错了还是搅拌机出了什么问题?我用的是搅拌机循环,如果重要的话。我还将图像文件与我的项目中的g3dj文件放在同一个文件夹中。下面是我用来加载它的代码:

modelBatch = new ModelBatch();
modelLoader = new G3dModelLoader(new JsonReader());
heatExchangerModel = modelLoader.loadModel(Gdx.files.internal("models/heat_exchanger.g3dj"));
modelInstance = new ModelInstance(heatExchangerModel);

当我在我的桌面Java应用程序中查看它时,它只是出现一个黑色的模型,没有纹理,我在g3dj文件中手动设置不透明度为1.0。不知道我错在哪了- ,有什么想法吗?

编辑:我已经读了一些更多的,并发现搅拌器循环不能导出它的材料到FBX(不确定是否真的?或者只有非常基本的材料,至少)和尝试与搅拌器渲染,并能够得到纹理加载,但模型仍然不太像它应该与搅拌器。

有人能告诉我在libgdx中做素材的正确方法吗?我应该从头开始写我自己的吗?我想做这一切在搅拌机然后出口可能不是我应该做的方式。

共有1个答案

穆鸿波
2023-03-14

凉凉的看着色的山岭。

我会从这里尝试一些事情。首先,导出您的FBX作为ASCII从搅拌器。看看你能不能从那里找到你的文件路径。我敢打赌,在FBX->G3DJ进程之前,它已经丢失了。

其次,我认为用节点构建着色器可能会抛弃FBX导出器。Blender是令人敬畏的,但它仍然是开源的,并受到不完善的影响。(其他的包裹也是如此,但没有一家公司会承认这一点!)尝试在“着色器生成器”窗格中生成相同的着色器,看看这是否有帮助。

否则,您将不得不在libgdx中重建着色器。要么用Java编码。或者,我敢打赌,你可以修改你的g3dj,把文件路径包括为发射图。

例如:这是我的一个g3dj文件的一部分,在那里我添加了一个法线地图。把类型改成“emissive”或“emit”,我想。你应该在那之后继续做生意。

"materials": [
            {
                "id": "background", 
                "ambient": [ 0.000000,  0.000000,  0.000000], 
                "diffuse": [ 0.800000,  0.800000,  0.800000], 
                "emissive": [ 0.800000,  0.800000,  0.800000], 
                "opacity":  1.000000, 
                "reflection": [ 0.100000,  0.100000,  0.100000],
                "shininess":  65.098038, 
                "textures": [
                    {
                        "id": "Texture.005", 
                        "filename": "carbonClr.png", 
                        "type": "DIFFUSE"
                    },
                    {
                        "id": "Texture.006", 
                        "filename": "carbonNormal.png", 
                        "type": "NORMAL"
                    }
                ]
            }
        ]       

希望有帮助!

 类似资料:
  • 我不熟悉Java图形(一般来说是计算机图形)和堆栈溢出,所以请帮助我解决问题,帮助我更好地表达我的问题。 目前,我正在尝试在JavaGUI中的原始图像旁边显示BufferedImage。这是我的代码: “put”功能如下: 但是,生成的GUI如下所示 因此,图像可以工作,但BuffereImage不能。我假设它可以工作,因为BuffereImage是Image的一个子类……知道吗?如果需要其他代码

  • 我试图用opengl在Qt中显示纹理,但当我运行时它就是不显示纹理。 我做了一些研究,发现我需要将纹理的高度和宽度设为2的幂。我的纹理现在是(1024x1024)。 我还添加了很多glTexParameterf,可以解决我的问题,但仍然没有运气。 EDIT1:是不是我的质地太大了? EDIT2:glBindTexture(GL_TEXTURE_2D,m_textureID);放置在glBindTe

  • 有问题显示纹理在我的3D框在LWJGL使用光滑。早些时候我犯了一个错误: BasicShader类: BasicVertex.vs basicfragment.fs

  • 我在下面的帖子中提到了这个问题和我的答案:来自Apache FOP 1.1和Java的PDF图像。我试图在每页上显示背景图像(有点像水印): 我让它在我的机器上从Eclipse和导出的jar中工作,如上面提到的帖子所述,但它不适用于我以外的机器。它总是说不支持该格式。 我正在使用 FOP 网站上的 FOP 1.1 罐子,并将它们全部添加到我的锁片中。也将它们与罐子一起导出。我没有解决方案的想法了。

  • 我在Eclipse中有一个Java项目。这是文件夹结构: 代码包位于src中,所有图像都位于res文件夹中。 代码中的图像参照如下: 但是,在我将项目导出到JAR文件后(通过使用导出- 所有图像都在根文件夹中,无法正确引用。如何正确地引用这些图像,使它们在Eclipse和导出的JAR中都可见?

  • 我正在使用此代码显示图像 图片存在于storage\app\public\images上,但它没有显示在我的页面上,顺便说一句,我已经创建了php artisan storage:link