Need help using PolygonTag



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 14/12/2004 at 08:12, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   8.100 
    Platform:   Windows  ;   
    Language(s) :   C.O.F.F.E.E  ;

    ---------
    Hello, I'm writing an export plugin for a game and I need to know how to save each polygons vertex indexes of an object. I managed to export points xyz values but don't know how to retrieve polygons indexes. I found that PolygonTag gives the index array of a polygon but I don't know how to implement it in code.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 14/12/2004 at 21:05, xxxxxxxx wrote:

    For a Polygon Object, vertices and polygons are stored in arrays. obj->GetPoints() and obj->GetPolygons() get the arrays while obj->GetPointCount() and obj->GetPolygonCount() get the number of elements in each array.

    After you get the polygon array, you can get the vertex indices directly:

      
    var polys = obj->GetPolygons(); // object Polygon array  
    var pcnt = obj->GetPolygonCount(); // object Polygon count  
    var vindex[4]; // a Polygon's vertex indices for storage  
      
    for (var j = 0; j < pcnt; j++)  
    {  
    // polygon.a,.b,.c,.d contain indices into the vertex array  
         vindex[0] = polys[j].a;  
         vindex[1] = polys[j].b;  
         vindex[2] = polys[j].c;  
         if (polys[j].d != vindex[2]) vindex[3] = polys[j].d;  
         else vindex[3] = -1; // For triangles, index c = d  
    }  
    

    This is off the top of my head (and it's easier for me to think in C++ at the moment), but just to give you a general idea.

    Robert



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 15/12/2004 at 09:26, xxxxxxxx wrote:

    I managed to access polys[j]; itself but I get errors accessing polys[j].a, polys[j].b etc. I'm not sure COFFEE is supporting this unless if its a vector type. Well I'm not sure correct me if I'm wrong.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 15/12/2004 at 10:01, xxxxxxxx wrote:

    If you are still getting your array from a PolygonTag and not the object Polygon array, then, yes, that would be incorrect.

    The PolygonTag returns an array with each member containing a 4-array with real Points in it, not vertex indices.

    This information is in the COFFEE docs.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 15/12/2004 at 15:07, xxxxxxxx wrote:

    Thanks a lot but I had a different approach. This is what I did to retrieve it:

    for (cnt = 0; cnt < model->GetPolygonCount(); j++)
    {
    b3dWriteInt(polys[cnt*4]);
    b3dWriteInt(polys[cnt*4+1]);
    b3dWriteInt(polys[cnt*4+2]);
    b3dWriteInt(polys[cnt*4+3]);
    }

    I managed to get its index this way and it works! No need for PolygonTags.


Log in to reply