2017-10-19 12 views
0

J'utilise libGdx 1.9.6 et j'ai un problème. J'ai cherché plusieurs forums, lu divers tutoriels mais rien ne convient. J'ai créé un simple cube dans Blender, je l'ai texturé et exporté vers FBX (en utilisant fbx-conv). J'ai également téléchargé le BDX-Blender-Exporter. J'ai testé Blender 2.69 et 2.76b sans aucun changement au résultat.Libgdx chargement modèle blender, la transparence incorrecte

Le modèle est chargé et montré:

blended cube

Si je change la couleur d'arrière-plan (0,0,0,0) ou (0,0,0,1) alors seulement un noir l'écran apparaît.

Voici le code (libGDX 1.9.6, Android-Studio 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(); 

} 

Le modèle est également affiché uniquement lorsque la ligne

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

existe.

Voici le fichier blender:

cube.blend

Où pourrait être le problème?

+0

modifier: mauvais lien vers l'image fixe – CptnRoughnight

+0

Sans model.materials.get (0) .set (nouveau BlendingAttribute (GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA));] il ressemble à ceci: https: //i.imgur .com/drNer46.png – CptnRoughnight

+0

En supposant que votre modèle est déroulé UV et que la texture est présente, avez-vous essayé ceci: https://stackoverflow.com/questions/19112349/libgdx-3d-texture-transparency Regardez aussi l'OP dans ce lien et Gdx.gl20 fonctions qu'il permet – kacpr

Répondre

0

Saint maquereau, c'était le fichier de texture ... c'était 1024x1024 png ... mais en quelque sorte corrompet ... une fois ouvert et réenregistré et tout fonctionne .... d'innombrables heures et c'est la seule chose que j'ai pas vérifié ... Merci pour l'aide les gars! -