【问题标题】:LibGDX fbx export not displaying image texture — shows up as blackLibGDX fbx 导出不显示图像纹理 - 显示为黑色
【发布时间】:2016-02-22 10:00:34
【问题描述】:

不太确定问题出在哪里。我在 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文件中吗?我是在 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 中完成,然后导出可能不是我应该这样做的方式。

【问题讨论】:

    标签: libgdx blender fbx


    【解决方案1】:

    酷炫的shader shanling。

    我会从这里尝试几件事。首先,将您的 FBX 以 ASCII 格式从 Blender 中导出。看看你是否可以从那里找到你的文件路径。我敢打赌它会在 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"
                        }
                    ]
                }
            ]       
    

    希望有帮助!

    【讨论】:

    • 感谢您的回复,肖恩。在摆弄了一下之后,使用旧的渲染引擎和菜单面板进行导出。我希望他们能尽快支持 Cycles 节点编辑器导出! :-( 感谢您的帮助!
    • 如何将 g3dj 文件转换为 g3db。 Libgdx 似乎加载了 onlu g3db 文件
    • @Lunatikul 我不知道如何进行这种转换。但如果你有原始文件(OBJ 或 FBX),你可以使用 fbx-conv 转换为 g3dj 或 gd3b。
    • FBX 和 OBJ 不包含纹理链接,它只有网格。我可以手动将纹理链接添加到 g3dj
    猜你喜欢
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2012-07-14
    • 2020-04-17
    • 1970-01-01
    相关资源
    最近更新 更多