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.