jme3 - 从Blender导出的模型上错误放置了UV贴图

时间:2014-02-04 23:33:03

标签: java 3d blender jmonkeyengine uv-mapping

我在Blender 2.69中创建了simple model of a barrel (.zip)。然后我在Blender中创建了一个UV贴图,并从中创建了一个UV贴图纹理(也在归档中)。然后我在Blender中导入了我的纹理,现在映射匹配:

The mapping

在Blender中,模型到目前为止看起来很好:

Model in Blender

通过使用我通过jmonkeyengine SDK安装的Ogre导出器插件,我导出了模型。结果是我的桶的OgreXML格式文件(我没有导出材料)。

现在,我试图将桶添加到我的世界:

this.barrel = this.assetManager.loadModel("models/barrel/Barrel.mesh.xml");

Material barrelMat = new Material(this.assetManager,
        "Common/MatDefs/Light/Lighting.j3md");
barrelMat.setTexture("DiffuseMap",
        this.assetManager.loadTexture("models/barrel/Barrel.jpg"));
barrelMat.setBoolean("UseMaterialColors", true);
barrelMat.setColor("Diffuse", ColorRGBA.White);
barrelMat.setColor("Specular", new ColorRGBA(0.3f, 0.1f, 0, 1));
barrelMat.setFloat("Shininess", 4f);
this.barrel.setMaterial(barrelMat);

this.rootNode.attachChild(this.barrel);

结果如下:

The failed barrel image

在设置UV贴图模型的纹理时,我还需要考虑其他事项吗?

1 个答案:

答案 0 :(得分:2)

通常在将模型从Blender转移到像JME这样的东西时,纹理会颠倒过来。加载纹理的位置:

barrelMat.setTexture(“DiffuseMap”, 
                     assetManager.loadTexture(“models/barrel/Barrel.jpg”));

而是使用loadTexture()方法的TextureKey形式并传递yFlip false,因为true是默认值。

assetManager.loadTexture(new TextureKey(“models/barrel/Barrel.jpg”, false));

这应该可以解决你的问题。

参考文献:

loadTexture():http://hub.jmonkeyengine.org/javadoc/com/jme3/asset/AssetManager.html#loadTexture(com.jme3.asset.TextureKey)

TextureKey:http://hub.jmonkeyengine.org/javadoc/com/jme3/asset/TextureKey.html#TextureKey(java.lang.String,%20boolean)