Exemplo n.º 1
0
		/**
	 * ReadPoly
	 *
	 * @param infile
	 * @param ObjID
	 * @return int
	 */
		private int ReadPoly (int ObjID)
		{
			String temp;
			double[] input = new double[3];
			int i, j, k;
			int numpolys = 0;
			int numverts;
			bool trimesh, vertnormal;
			Point max = new Point (MaxX, MaxY, MaxZ);
			Point min = new Point (MinX, MinY, MinZ);

			temp = readString ();
			temp = readString ();
			Material theMaterial = ReadMaterial ();
			temp = readString ();
			if (temp.Substring (7).Equals ("POLYSET_TRI_MESH")) {
				trimesh = true;
			} else {
				trimesh = false;
			}
			temp = readString ();
			if (temp.Substring (11).Equals ("PER_VERTEX_NORMAL")) {
				vertnormal = true;
			} else {
				vertnormal = false;
			}
			for (i = 0; i < 4; i++) {
				temp = readString ();
			}
			temp = temp.Substring (11);
			numpolys = Int32.Parse (temp);
			ObjID++;
			for (i = 0; i < numpolys; i++) {
				temp = readString ();
				temp = readString ();
				temp = temp.Substring (16);
				numverts = Int32.Parse (temp);
				Point[] vertices = new Point[numverts];
				for (j = 0; j < numverts; j++) {
					temp = readString ();
					temp = temp.Substring (8);
					for (k = 0; k < 2; k++) {
						input [k] = (double)Double.Parse (temp.Substring (0, temp.IndexOf (' ')));
						temp = temp.Substring (temp.IndexOf (' ') + 1);
					}
					input [2] = (double)Double.Parse (temp);
					vertices [j] = new Point (input [0], input [1], input [2]);
					if (vertnormal) {
						temp = readString ();
					}
				}
				temp = readString ();
				TriangleObj newtriangle;
				PolygonObj newpoly;
				ObjNode newnode;
				if (trimesh) {
					newtriangle = new TriangleObj (theMaterial, ObjID, numverts, vertices, max, min);
					newnode = new ObjNode (newtriangle, objects);
				} else {
					newpoly = new PolygonObj (theMaterial, ObjID, numverts, vertices, max, min);
					newnode = new ObjNode (newpoly, objects);
				}
				objects = newnode;
			}
			temp = readString ();
			MaxX = max.GetX ();
			MaxY = max.GetY ();
			MaxZ = max.GetZ ();
			MinX = min.GetX ();
			MinY = min.GetY ();
			MinZ = min.GetZ ();

			return (numpolys);
		}
Exemplo n.º 2
0
    /**
     * ReadPoly
     *
     * @param infile
     * @param ObjID
     * @return int
     */
    private int ReadPoly(int ObjID)
    {
        String temp;

        double[] input = new double[3];
        int      i, j, k;
        int      numpolys = 0;
        int      numverts;
        bool     trimesh, vertnormal;
        Point    max = new Point(MaxX, MaxY, MaxZ);
        Point    min = new Point(MinX, MinY, MinZ);

        temp = readString();
        temp = readString();
        Material theMaterial = ReadMaterial();

        temp = readString();
        if (temp.Substring(7).Equals("POLYSET_TRI_MESH"))
        {
            trimesh = true;
        }
        else
        {
            trimesh = false;
        }
        temp = readString();
        if (temp.Substring(11).Equals("PER_VERTEX_NORMAL"))
        {
            vertnormal = true;
        }
        else
        {
            vertnormal = false;
        }
        for (i = 0; i < 4; i++)
        {
            temp = readString();
        }
        temp     = temp.Substring(11);
        numpolys = Int32.Parse(temp);
        ObjID++;
        for (i = 0; i < numpolys; i++)
        {
            temp     = readString();
            temp     = readString();
            temp     = temp.Substring(16);
            numverts = Int32.Parse(temp);
            Point[] vertices = new Point[numverts];
            for (j = 0; j < numverts; j++)
            {
                temp = readString();
                temp = temp.Substring(8);
                for (k = 0; k < 2; k++)
                {
                    input[k] = (double)Double.Parse(temp.Substring(0, temp.IndexOf(' ')));
                    temp     = temp.Substring(temp.IndexOf(' ') + 1);
                }
                input[2]    = (double)Double.Parse(temp);
                vertices[j] = new Point(input[0], input[1], input[2]);
                if (vertnormal)
                {
                    temp = readString();
                }
            }
            temp = readString();
            TriangleObj newtriangle;
            PolygonObj  newpoly;
            ObjNode     newnode;
            if (trimesh)
            {
                newtriangle = new TriangleObj(theMaterial, ObjID, numverts, vertices, max, min);
                newnode     = new ObjNode(newtriangle, objects);
            }
            else
            {
                newpoly = new PolygonObj(theMaterial, ObjID, numverts, vertices, max, min);
                newnode = new ObjNode(newpoly, objects);
            }
            objects = newnode;
        }
        temp = readString();
        MaxX = max.GetX();
        MaxY = max.GetY();
        MaxZ = max.GetZ();
        MinX = min.GetX();
        MinY = min.GetY();
        MinZ = min.GetZ();

        return(numpolys);
    }