如何独立缩放每个3d对象的大小

时间:2017-09-07 10:03:52

标签: android opengl-es libgdx

我想要以简单快捷的方式调整大小的3d对象数量。

我的代码与xoppa的纸牌游戏示例非常相似:

https://xoppa.github.io/blog/a-simple-card-game/

使用ModelBatchRenderableProvider

呈现对象
@Override
public void render() {
    ...
    modelBatch.begin(cam);
    modelBatch.render(items);
    modelBatch.end();
    ...
}

项目是ObjectSet实施RenderableProvider

使用item

添加每个MeshBuilder顶点和索引
meshBuilder.begin(mesh.getVertexAttributes());
meshBuilder.part("items", GL20.GL_TRIANGLES, renderable.meshPart);
for (Item item : this) {
    meshBuilder.setVertexTransform(item.transform);
    meshBuilder.addMesh(item.vertices, item.indices);
}
meshBuilder.end(mesh);

现在我要做的是调整项目大小以制作一些奇特的动画效果。我想我可以使用PerspectiveCamera并更改距离参数。但是如果我想独立调整每个项目的大小呢?

要尝试解决此问题,我将顶点(item.vertices)直接乘以每个render()调用中的调整大小(缩放)因子,但每个Item都有大约140个顶点,所以我需要每次循环它们并乘以缩放因子。

我在想可能有更有效的方法来调整每个项目的大小?

1 个答案:

答案 0 :(得分:1)

每帧修改item.transform矩阵以包含缩放操作;使用矩阵的整个要点是数学上可组合的。

请参阅:

https://en.wikipedia.org/wiki/Scaling_(geometry)