libgdx 的调试网格

问题描述 投票:0回答:1

我可以以某种方式在我的 libgdx 应用程序中绘制 3D 网格,以便我可以放大和缩小该网格以查看我的应用程序发生了什么吗? 例如,我正在尝试创建一个简单的球体,它应该位于屏幕中间,但事实并非如此,而且它被压扁了或类似的东西。

我想知道我的相机在哪里以及相机的视角是多少,所有这些都在场景内。这是代码,因为 stackoverflow 要求提供代码。

@Override
    public void create() {
        modelBatch = new ModelBatch();
        environment = new Environment();
        environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
        environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, 10f, 10f, 20f));

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


        ModelBuilder modelBuilder = new ModelBuilder();
        model = modelBuilder.createSphere(120f, 120f, 120, 32, 32,
                new Material(ColorAttribute.createDiffuse(Color.GREEN)),
                VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal);
        instance = new ModelInstance(model);
        instance.transform.set(new Vector3(100, 100, 0), new Quaternion());
    }

我可以这样做吗?

java android libgdx
1个回答
0
投票

您可以在

ModelBuilder
上使用“createLineGrid”来创建一个在 X-Z 平面上延伸的网格(除非旋转它)。

例如:

grid = modelBuilder.createLineGrid(
   32, 32, 10.0f, 10.0f, 
    new Material(ColorAttribute.createDiffuse(Color.RED)), 
    VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal);

gridInstance = new ModelInstance(grid);

其中

grid
Model
gridInstance
ModelInstance
。 然后您只需将
render
调用包含到您的
ModelBatch
:

modelBatch.render(gridInstance);

在您的代码上执行此操作会产生此渲染:

您可以自定义网格线的数量及其间距以满足您的需要。

© www.soinside.com 2019 - 2024. All rights reserved.