如何在LibGDX中绘制连接两个点的直线,且为3D模式。

4
我正在尝试学习LibGDX的3D方面,但遇到了一个问题。我想从0, 0, -5画一条线到0, 0, 5。我尝试了几种方法来实现这个目标。
首先我看能否创建一个Model作为线。据我所知,我不能这样做。
然后我意识到理论上可以使用ShapeRenderer来绘制一条线。以下是我的代码尝试实现此目标。
public class Main implements ApplicationListener {
    ...
    public ShapeRenderer srend;
    ...
    @Override
    public void create() {
        ...
        srend = new ShapeRenderer();
        srend.setColor(Color.RED);
        ...
    }

    @Override
    public void render() {
        ...
        srend.begin(ShapeType.Line);
        srend.line(0, 0, -5, 0, 0, 5);
        srend.end();
        ...
    }
    ...
}

但是出于某种原因,它似乎不起作用。我经常使用ShapeRenderers,但我可能在初始化或使用它时犯了错误,尽管我不认为这是问题所在。
我刚开始使用LibGDX的3D部分,所以我认为问题出现在我绘制实际线条的位置。

2个回答

7

模型构建器对我来说很有效。

ModelBuilder modelBuilder = new ModelBuilder();
modelBuilder.begin();
MeshPartBuilder builder = modelBuilder.part("line", 1, 3, new Material());
builder.setColor(Color.RED);
builder.line(0.0f, 0.0f, -5.0f, 0.0f, 0.0f, 5.0f);
lineModel = modelBuilder.end();
lineInstance = new ModelInstance(lineModel);

0

在渲染之前,您需要设置相机矩阵:

@Override
    public void create() {
        ...
        srend = new ShapeRenderer();
        srend.setProjectionMatrix(new Matrix4())
        srend.setColor(Color.RED);
        ...
    }

我不知道为什么,但这很有帮助。Matrix4()只是一个身份矩阵。使用身份相机矩阵,屏幕右侧具有坐标1,左侧为-1。因此,如果坐标在立方体内-1..1,则应该看到它们。
在实际代码中(例如,在3D世界中绘制小工具),您可以从PerspectiveCamera设置矩阵:
shapeRenderer.setProjectionMatrix(camera.combined)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接