libgdx: рендеринг модели с текстурой, выглядит размытым - PullRequest
0 голосов
/ 28 января 2019

Я работаю с LibGDX и Blender над своего рода упражнением для начинающих по рендерингу 3d-модели.

Я создал шестигранный кубик, uvunwrapped и создал файл png uvmap.В Blender это выглядит нормально.Тем не менее, в окне игры оно выглядит серым.

Я пробовал несколько разных конфигураций освещения, но не повезло.Может ли это быть материальной проблемой?Есть предложения?

Скриншоты и код ниже.Спасибо!

blender 3d view enter image description here

public class ShipRenderer implements ApplicationListener {
public Environment environment;
public PerspectiveCamera cam;
public CameraInputController camController;
public ModelBatch modelBatch;
public Model model;
public ModelInstance instance;

Color lightColor;
PointLight light;

float DISTANCE = 40f;

@Override
public void create() {
    modelBatch = new ModelBatch();
    environment = new Environment();
    environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 1f, 1f, 1f, 1.0f));

    cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    cam.position.set(DISTANCE, DISTANCE, DISTANCE);
    cam.lookAt(0,0,0);
    cam.near = 1f;
    cam.far = 150f;
    cam.update();

    UBJsonReader jsonReader = new UBJsonReader();
    G3dModelLoader loader = new G3dModelLoader(jsonReader);
    model = loader.loadModel(Gdx.files.internal("dice/dice.g3db"));
    instance = new ModelInstance(model);

    camController = new CameraInputController(cam);
    Gdx.input.setInputProcessor(camController);
}

@Override
public void render() {
    camController.update();

    Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);

    modelBatch.begin(cam);
    modelBatch.render(instance, environment);
    modelBatch.end();
}

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Если у кого-то есть такая проблема, вот решение для удаления свойств излучающего материала после загрузки модели.У меня лично были проблемы с экспортом fbx в json, так что это единственный способ, который мне помог.

private void removeEmissiveAttributes(Model model){
    for(Material m : model.materials){
        m.remove(ColorAttribute.Emissive);
    }
}
0 голосов
/ 28 января 2019

Хорошо, оказалось, что моя модель Blender «светилась», другими словами, она излучала свет.Блендер 3dView не показывал этого.

Я экспортировал файл блендера как файл G3DJ, чтобы увидеть содержимое.Оттуда мы увидели, что свойство «эмиссия» было ненулевым.Вычеркнул это и теперь выглядит правильно.Вот он с белым фоном.

Большое спасибо каналу LibGDX Discord!

enter image description here

...