我可以以某种方式在我的 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());
}
我可以这样做吗?
您可以在
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);
在您的代码上执行此操作会产生此渲染:
您可以自定义网格线的数量及其间距以满足您的需要。