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

时间:2015-11-20 02:06:54

标签: libgdx blender fbx

不太确定这里出现问题的地方。我在Blender中有一个看起来像这样的模型:

render view of model

我将它全部用于UV映射等 - 蓝色突出显示的边缘来自透明的.png纹理。这是节点编辑器:

node editor of material

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

fbx export settings

但是当我通过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文件中吗?我是否附加错误或Blender中的某些内容?我正在使用Blender Cycles,如果这很重要的话。我还将图像文件放在与项目中的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后,它只显示为没有纹理的黑色模型。不知道我在哪里出错了 - 有什么想法吗?

编辑:我一直在阅读更多内容并发现Blender Cycles无法将其材料导出到FBX(不确定是否为真?或至少只有非常基本的材料)并尝试使用Blender渲染并且能够加载纹理,但模型仍然不像Blender那样。

有人可以指出我在libGDX中执行材料的正确方法吗?我应该从头开始写自己的吗?我想在Blender中做这一切,然后导出可能不是我应该这样做的方式。

1 个答案:

答案 0 :(得分:1)

酷炫的着色器shanling。

我会从这里尝试一些事情。首先,将您的FBX作为ASCII从Blender导出。看看你是否可以从那里发现你的文件路径。我敢打赌它在fbx-> g3dj进程之前迷路了。

其次,我认为用节点构建着色器可能会抛弃FBX导出器。搅拌机很棒,但它仍然是开源的,并且不完美。 (所有其他包也是如此,但没有公司会承认这一点!)尝试在着色器构建器窗格中构建相同的着色器,看看是否有帮助。

否则,您只需要在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"
                    }
                ]
            }
        ]       

希望有所帮助!