2017-10-19 102 views
0

我正在使用libGdx 1.9.6,我遇到了问题。我搜索了多个论坛,阅读各种教程,但没有任何适合的。我在搅拌机中创建了一个简单的多维数据集,对其进行纹理化并将其导出到FBX(使用fbx-conv)。我也下载了BDX-Blender-Exporter。我已经测试了Blender 2.69和2.76b,结果没有任何改变。Libgdx加载搅拌器模型,透明度不正确

该模型被加载并显示:

blended cube

如果我改变背景颜色,以(0,0,0,0)或(0,0,0,1),则只有黑色出现屏幕。

下面的代码(libGDX 1.9.6,Android的工作室2.3.3)

public class modelloader implements ApplicationListener { 
private PerspectiveCamera camera; 
private ModelBatch modelBatch; 
private Model model; 
private ModelInstance modelInstance; 
private Environment environment; 
private CameraInputController camController; 

private AssetManager as; 

@Override 
public void create() { 

    camera = new PerspectiveCamera(
      75, 
      Gdx.graphics.getWidth(), 
      Gdx.graphics.getHeight()); 

    camera.position.set(0f,0f,7f); 
    camera.lookAt(0f,0f,0f); 

    camera.near = 0.1f; 
    camera.far = 300.0f; 

    modelBatch = new ModelBatch(); 

    as = new AssetManager(); 
    as.load("moon.g3db",Model.class); 
    as.finishLoading(); 
    model = as.get("moon.g3db",Model.class); 


    model.materials.get(0).set(new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA)); 

    modelInstance = new ModelInstance(model); 

    modelInstance.transform.rotate(1, 0, 0, 0); 
    modelInstance.transform.translate(0, 0, -2); 
    environment = new Environment(); 
    environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.8f, 0.8f, 0.8f, 1.0f)); 
    environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -0.8f, 0.3f, 1f)); 
    camController = new CameraInputController(camera); 
    camController.forwardTarget = true; 
    Gdx.input.setInputProcessor(camController); 
} 

@Override 
public void dispose() { 
    modelBatch.dispose(); 
    model.dispose(); 
} 

@Override 
public void render() { 
    camController.update(); 
    Gdx.gl20.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
    Gdx.gl20.glClearColor(1,1,1,0); 
    Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); 

    camera.update(true); 

    modelBatch.begin(camera); 
    modelBatch.render(modelInstance, environment); 
    modelBatch.end(); 

} 

当线

model.materials.get(0).set(new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA)); 

存在该模型也仅示出了。

这里的搅拌机文件:

cube.blend

哪里可能是问题?

+0

编辑:修正图片的错误链接 – CptnRoughnight

+0

没有model.materials.get(0).set(新的BlendingAttribute(GL20.GL_SRC_ALPHA,GL20.GL_ONE_MINUS_SRC_ALPHA));]它看起来像这样:https://i.imgur .com/drNer46.png – CptnRoughnight

+0

假设你的模型是UV解开和纹理是存在的,你有没有试过这个:https://stackoverflow.com/questions/19112349/libgdx-3d-texture-transparency 也看看OP在这个链接和Gdx.gl20功能,他启用 – kacpr

回答

0

神圣的鲭鱼,它是纹理文件...它是1024x1024的png ...但不知何故corruptet ...一旦打开,resaved和所有的作品....无数小时,这是我唯一的东西没有检查...感谢帮助家伙! -