Проблема с Android Mesh Render - PullRequest
       18

Проблема с Android Mesh Render

0 голосов
/ 26 января 2012

На этот раз у меня возникла проблема с рендерингом моей модели.Я могу загрузить все это с помощью функции libObj () Libgdx и визуализировать ее с помощью GL10_Triangles, однако я продолжаю получать пропущенные треугольники в моей модели (кажется, что отображается только половина моделей).Я попробовал старую функцию ObjLoad (закомментированную), а также различные стили рендеринга, но, похоже, ничего не работает.

И да, я проверил модель в Blender, и модель укомплектована без пропущенных граней.

См. Экран печати ниже и код ниже.Любая помощь была бы фантастической, очень расстраивающей, потому что я так близок к тому, чтобы заставить это работать.

Print Screen И вот код.

public class LifeCycle implements ApplicationListener {

Mesh model;
private PerspectiveCamera camera;

public void create() {

    InputStream stream = null;
    camera = new PerspectiveCamera(45, 4, 4);
    try 
    {
        stream = Gdx.files.internal("Hammer/test_hammer.obj").read();
        //model = ModelLoaderOld.loadObj(stream);
        model = ObjLoader.loadObj(stream,true);
        stream.close();
    } 
    catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    Gdx.gl.glEnable(GL10.GL_DEPTH_TEST);
    Gdx.gl10.glTranslatef(0.0f, 0.0f, -3.0f);
}

protected float rotateZ = 0.1f;
protected float increment = 0.1f;

public void render()
{
    Gdx.app.log("LifeCycle", "render()");
    Gdx.gl.glClearColor(0.0f, 0.0f, 0.5f, 1.0f);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    camera.update();
    camera.apply(Gdx.gl10);
    Gdx.gl10.glTranslatef(0.0f, 0.0f, -3.0f);
    Gdx.gl10.glRotatef(rotateZ, rotateZ, 5.0f, rotateZ);
    model.render(GL10.GL_TRIANGLES);

    rotateZ += increment;
    System.out.println(""+rotateZ);
}
}

1 Ответ

2 голосов
/ 26 января 2012

На самом деле это выглядит так, как будто в файле OBJ хранятся квадраты, а не треугольники, но ваша процедура загрузки просто читает их как треугольники (просто читает первые 3 индексные группы лица).В то время как Blender может (и должен) быть достаточно умным, чтобы справляться с квадраторами, ваша подпрограмма загрузчика - нет.Поэтому либо напишите лучший загрузчик OBJ (но я полагаю, что это не ваш класс), настройте загрузчик OBJ так, чтобы он правильно обрабатывал четырехугольники (если возможно), или экспортируйте модель в виде треугольников вместо четырехугольников (если возможно).

...