Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无对象libgdx中的环面_Libgdx - Fatal编程技术网

无对象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