Libgdx 加载搅拌机模型,透明度不正确
Posted
技术标签:
【中文标题】Libgdx 加载搅拌机模型,透明度不正确【英文标题】:Libgdx loading blender model, transparency incorrect 【发布时间】:2018-03-31 07:10:00 【问题描述】:我正在使用 libGdx 1.9.6,但遇到了问题。我搜索了多个论坛,阅读了各种教程,但没有合适的。我在搅拌机中创建了一个简单的立方体,对其进行纹理化并将其导出到 FBX(使用 fbx-conv)。我还下载了 BDX-Blender-Exporter。我已经测试了 Blender 2.69 和 2.76b,结果没有任何变化。
模型已加载并显示:
blended cube
如果我将背景颜色更改为 (0,0,0,0) 或 (0,0,0,1),则只会出现黑屏。
这是代码(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();
模型也只在行时显示
model.materials.get(0).set(new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA));
存在。
这是搅拌机文件:
cube.blend
问题可能出在哪里?
【问题讨论】:
编辑:错误的图片链接已修复 没有 model.materials.get(0).set(new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA));] 它看起来像这样:i.imgur.com/drNer46.png 假设您的模型是 UV 展开的并且纹理存在,您是否尝试过这个:***.com/questions/19112349/… 另请查看此链接中的 OP 和他启用的 Gdx.gl20 函数 是的,我也读过这个帖子。有没有这些 Gdx.gl20 - 函数都没有关系。纹理与背景颜色混合。我已经尝试在搅拌机中修改我的模型,但没有成功。 听起来像这样:github.com/libgdx/libgdx/wiki/…:Also, it is quite common that the materials from Blender export with opacity set to Zero. If you notice your model is not being rendered. Go to the Material in Blender, and below "Transparency" set its Alpha to the desired one (usually 1, for full opacity).
【参考方案1】:
天哪,这是纹理文件...它是 1024x1024 png...但不知何故损坏...一旦打开并重新保存,一切正常...无数小时,这是我唯一没有检查...感谢您的帮助! ——
【讨论】:
以上是关于Libgdx 加载搅拌机模型,透明度不正确的主要内容,如果未能解决你的问题,请参考以下文章