无对象libgdx中的环面
如何在无对象libgdx中的环面,libgdx,Libgdx,如何在libgdx中创建圆环体Modelbuilder不支持它。 我必须在代码中创建一个圆环体,并且不能加载任何对象。使用libGDX创建自定义模型s您可以使用MeshBuilder 通过MeshBuilder.vertex(…)方法,可以逐个添加包含必要信息的顶点。基本上,您需要两个嵌套循环,并查找环面的必要公式 您必须将其包装在MeshBuilder.begin(…)和MeshBuilder.end()中 MeshBuilder.end()将返回一个Mesh,然后您可以将其传递到ModelB
libgdx
中创建圆环体<代码>Modelbuilder不支持它。
我必须在代码中创建一个圆环体,并且不能加载任何对象。使用libGDX创建自定义
模型
s您可以使用MeshBuilder
通过MeshBuilder.vertex(…)
方法,可以逐个添加包含必要信息的顶点。基本上,您需要两个嵌套循环,并查找环面的必要公式
您必须将其包装在MeshBuilder.begin(…)
和MeshBuilder.end()
中
MeshBuilder.end()
将返回一个Mesh
,然后您可以将其传递到ModelBuilder.fromMesh(Mesh)
以获取所需的模型。在libgdx
中查找分辨率,如何创建圆环体。梅会很有帮助的
private void createTorus (int glMaterial, float X, float Y, float Z, float widthR,
float height, int divisionsU, int divisionsV, float r, float g, float b, float a) {
ModelBuilder modelBuilder = new ModelBuilder();
modelBuilder.begin();
MeshPartBuilder builder = modelBuilder.part("torus", glMaterial, Usage.Position |
Usage.Normal, new Material(ColorAttribute.createDiffuse(r, g, b, a)));
builder.setColor(Color.LIGHT_GRAY);
VertexInfo curr1 = vertTmp3.set(null, null, null, null);
curr1.hasUV = curr1.hasPosition = curr1.hasNormal = true;
VertexInfo curr2 = vertTmp4.set(null, null, null, null);
curr2.hasUV = curr2.hasPosition = curr2.hasNormal = true;
short i1, i2, i3 = 0, i4 = 0;
int i, j, k;
double s, t, twopi;
twopi = 2 * Math.PI;
for (i = 0; i < divisionsV; i++) {
for (j = 0; j <= divisionsU; j++) {
for (k = 1; k >= 0; k--) {
s = (i + k) % divisionsV + 0.5;
t = j % divisionsU;
curr1.position.set(
(float) ((widthR+height*Math.cos(s * twopi / divisionsV))*Math.cos(t * twopi / divisionsU)),
(float) ((widthR+height*Math.cos(s*twopi/divisionsV))*Math.sin(t * twopi / divisionsU)),
(float) (height * Math.sin(s * twopi / divisionsV)));
curr1.normal.set(curr1.position).nor();
k--;
s = (i + k) % divisionsV + 0.5;
curr2.position.set(
(float) ((widthR+height*Math.cos(s * twopi / divisionsV))*Math.cos(t * twopi / divisionsU)),
(float) ((widthR+height*Math.cos(s*twopi/divisionsV))*Math.sin(t * twopi / divisionsU)),
(float) (height * Math.sin(s * twopi / divisionsV)));
curr2.normal.set(curr1.normal);
//curr2.uv.set((float) s, 0);
i1 = builder.vertex(curr1);
i2 = builder.vertex(curr2);
builder.rect(i4, i2, i1, i3);
i4 = i2;
i3 = i1;
}
}
}
torus_Model = modelBuilder.end();
torus_Instances = new ModelInstance(torus_Model);
}
private void createTorus(int glMaterial、float X、float Y、float Z、float width r、,
浮子高度,内分区SU,内分区SV,浮子r,浮子g,浮子b,浮子a){
ModelBuilder ModelBuilder=新的ModelBuilder();
begin();
MeshPartBuilder=modelBuilder.part(“圆环”,glMaterial,Usage.Position|
用法.普通,新材质(ColorAttribute.createDiffuse(r,g,b,a));
builder.setColor(颜色为浅灰色);
VertexInfo curr1=vertTmp3.set(null,null,null,null);
curr1.hasUV=curr1.hasPosition=curr1.hasNormal=true;
VertexInfo curr2=vertTmp4.set(null,null,null,null);
curr2.hasUV=curr2.hasPosition=curr2.hasNormal=true;
短i1,i2,i3=0,i4=0;
int i,j,k;
双s,t,双PI;
twopi=2*Math.PI;
对于(i=0;i