libGDX奇怪的对象渲染g3d

时间:2015-06-28 21:12:35

标签: java 3d libgdx rendering

我正在学习这些touturials g3d:https://xoppa.github.io/blog/loading-a-scene-with-libgdx/

我确实重新创建了他的代码并且一切运行良好。

现在我尝试自己创建invaderscene.g3db的场景

我的代码:

public class ScreenLearn3D implements Screen {

private final Game game;
public ScreenLearn3D(Game game) {
    this.game = game;
}

private PerspectiveCamera camera;
private CameraInputController cameraController;

private Manager manager;

private ModelBatch modelBatch;
private Array<ModelInstance> instances;
private Environment environment;

@Override
public void show() {
    camera = new PerspectiveCamera();
    cameraController = new CameraInputController(camera);

    manager = new Manager();

    modelBatch = new ModelBatch();
    instances = new Array<ModelInstance>();
    environment = new Environment();


    camera.position.set(0f, 20f, 20f);
    camera.lookAt(0f, 0f, 0f);
    camera.near = 0f;
    camera.far = 300f;
    camera.update();

    Gdx.input.setInputProcessor(cameraController);

    environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
    environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, 1f, -0.8f, -0.2f));
}

private void setup() {
    for (int i = 0; i < manager.model.nodes.size; i++) {
        String id = manager.model.nodes.get(i).id;
        ModelInstance instance = new ModelInstance(manager.model, id);

        instances.add(instance);
    }
}

@Override
public void render(float delta) {
    if(manager.update()) {
        setup();
    }

    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);


    modelBatch.begin(camera);
    modelBatch.render(instances, environment);
    modelBatch.end();
}

@Override
public void resize(int width, int height) {
    camera.fieldOfView = 67f;
    camera.viewportWidth = width;
    camera.viewportHeight = height;
    camera.update();
}

@Override
public void dispose() {
    Gdx.app.log("Dispose", "ScreenLearn3D");

    modelBatch.dispose();
    instances.clear();
}

}

public final class Manager implements Disposable {
private final AssetManager manager;
private boolean isLoaded;




protected Model model;

public Manager() {
    manager = new AssetManager();
    isLoaded = false;
    load();
}

private void load() {
    manager.load("invaderscene.g3db", Model.class);

}

public boolean update() {
    if (manager.update() && !isLoaded) {
        model = manager.get("invaderscene.g3db");
        // Reference loaded assets

        isLoaded = true;
        return true;
    } else {
        return false;
    }
}

@Override
public void dispose() {
    manager.dispose();
    model.dispose();
}

}

现在我得到了奇怪的物体展示......

在卡马拉面前,物体消失了 但是如果我旋转相机它们会很好。 (当我远远或接近异常时)

1#编辑:Link

2#编辑:问题解决了。 camera.near应该超过0。

0 个答案:

没有答案
相关问题