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é:
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:
Où pourrait être le problème?
modifier: mauvais lien vers l'image fixe – CptnRoughnight
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
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