float vertices[] = {-1, -1, 0, // bottom left corner
-1, 1, 0, // top left corner
1, 1, 0, // top right corner
1, -1, 0}; // bottom right corner
short indices[] = {0,1,2, // first triangle (bottom left - top left - top right)
0,2,3}; // second triangle (bottom left - top right - bottom right)
创建网格后,您需要将其提供给modelBuilder,如下所示
ModelBuilder modelBuilder = new ModelBuilder(); // creates model build
modelBuilder.begin();// begin it
modelBuilder.part("plane", mesh,
GL20.GL_TRIANGLES,
0,
mesh.getNumIndices(),
new Material()); // creates your mesh
model = modelBuilder.end(); // makes the model
instance = new ModelInstance(model);
//...
//render it in render loop
modelBatch.begin(camera);
modelBatch.render(instance, environment);
modelBatch.end();
1条答案
按热度按时间y1aodyip1#
要像你说的那样在
modelBatch
中使用mesh
,你必须将它传递到model
中。为此,你必须创建一个具有所需顶点和索引的mesh
。顶点:是组成3D/2D形状的点(这里是由两个三角形组成的平面)。
指数:必须被三角测量的顶点的顺序、索引必须是“冗余的”以闭合和三角测量路径。
例如,这里有一个图像,以更好地解释:
然后你必须指定位置,UV和法线的属性。属性用来给着色器给予信息(
mesh
必须用着色器渲染)。对于每个顶点,着色器都有这些属性提供的信息。职位:是空间中顶点的三维点。
UV:用于纹理Map,是修正的(更多信息here)。
法线:是归一化向量,面或顶点的法线(在你的例子中,我假设它只指向每个顶点的北极)。
要创建
mesh
:如果网格是动态的,网格需要布尔值,顶点长度,索引长度和一些顶点属性,这些属性为着色器给予属性。
model
的默认着色器使用ShaderProgram.POSITION_ATTRIBUTE
,ShaderProgram.TEXCOORD_ATTRIBUTE
和ShaderProgram.NORMAL_ATTRIBUTE
,您可以使用自己的着色器进行调整。然后你添加顶点和索引。对于你的例子
vertices
和indices
是:创建网格后,您需要将其提供给
modelBuilder
,如下所示主要包括:
希望它能帮助你和其他正在寻找同样的过程。