So rendern Sie das gleiche Modell mehrmalsJava

Java-Forum
Anonymous
 So rendern Sie das gleiche Modell mehrmals

Post by Anonymous »

Ich versuche, das gleiche 3D -Objekt dynamisch zu rendern. Wenn ich die dafür verantwortliche Methode ausführe, wird das 3D -Objekt nur einmal auf dem Bildschirm gerendert. Wenn ich die Methode wieder ausführe, gibt es mir einen Fehler. Ich benutze die Java3d -API. Ich beabsichtige, dasselbe Objekt mehrmals zu rendern. PrettyPrint-Override ">

Code: Select all

class graphics_engine //extends javax.swing.JComponent
{

public static com.sun.j3d.utils.geometry.NormalGenerator normal_generator = new com.sun.j3d.utils.geometry.NormalGenerator();

public static com.sun.j3d.utils.geometry.Stripifier strip_fire = new com.sun.j3d.utils.geometry.Stripifier();

public static java.util.ArrayList < javax.vecmath.Point3f[] > model_vertices = new java.util.ArrayList < javax.vecmath.Point3f[] >();

public static BranchGroup branch_group = new BranchGroup();

public static void geometry_info()
{

model_vertices.add( new javax.vecmath.Point3f[]
{

new javax.vecmath.Point3f(-10, 30, -60),
new javax.vecmath.Point3f(-13, 63, 0),
new javax.vecmath.Point3f(-3, 3, 0),
new javax.vecmath.Point3f(5, 3, 0),
new javax.vecmath.Point3f(5, 7, 0),
new javax.vecmath.Point3f(-165, 762, 450),
new javax.vecmath.Point3f(45, -654, 550),
new javax.vecmath.Point3f(-7657, -4440, -5550),
new javax.vecmath.Point3f(-765, 660, -430),
new javax.vecmath.Point3f(-4563, 561, -4560)

});

//int model_numbers = graphics_engine.model_vertices.size();

com.sun.j3d.utils.geometry.GeometryInfo geometry_info = new com.sun.j3d.utils.geometry.GeometryInfo( com.sun.j3d.utils.geometry.GeometryInfo.POLYGON_ARRAY );

com.sun.j3d.utils.geometry.Triangulator triangulator[] = new com.sun.j3d.utils.geometry.Triangulator[graphics_engine.model_vertices.size()];

TransformGroup transform_group[] = new TransformGroup[graphics_engine.model_vertices.size()];

Shape3D shapes_3D[] = new Shape3D[graphics_engine.model_vertices.size()];

try
{

for(int i = 0; i < graphics_engine.model_vertices.size(); i++)
{

triangulator[i] = new com.sun.j3d.utils.geometry.Triangulator();

transform_group[i] = new TransformGroup();

transform_group[i].setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
transform_group[i].setCapability(TransformGroup.ALLOW_CHILDREN_EXTEND);
transform_group[i].setCapability(Group.ALLOW_CHILDREN_EXTEND);

shapes_3D[i] = new Shape3D();
shapes_3D[i].setCapability(Shape3D.ALLOW_GEOMETRY_WRITE);
shapes_3D[i].setCapability(Group.ALLOW_CHILDREN_EXTEND);

transform_group[i].setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
branch_group.setCapability(Group.ALLOW_CHILDREN_EXTEND);

int[] StripCounts = {5,5};
int[] countourCountArray = {StripCounts.length};

geometry_info.setCoordinates(graphics_engine.model_vertices.get(i));

geometry_info.setStripCounts(StripCounts);

geometry_info.setContourCounts(countourCountArray);

triangulator[i].triangulate(geometry_info);

graphics_engine.normal_generator.generateNormals(geometry_info);

graphics_engine.strip_fire.stripify(geometry_info);

shapes_3D[i].setGeometry(geometry_info.getGeometryArray());

transform_group[i].addChild(shapes_3D[i]);

branch_group.addChild(transform_group[i]);

gui_components.objecto_branch_grupo.addChild(graphics_engine.branch_group);

}

}

catch(java.lang.NullPointerException execcao)
{

execcao.printStackTrace();
}

}

}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post