Jump to content

asuter

Members
  • Content count

    3
  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Community Reputation

0 Neutral

About asuter

  • Rank
    Peon

Personal Information

  • Name
    Alex
  • Location
    SF, CA
  1. Hi everyone, Sorry for the remedial questions. Still new to the Houdini coding world. I have a long vector of ordered positions in space (Houdini calls these Vertices? Is that true?), I also have per-face index information (What I think Houdini calls Points), as well as some normals and UVs. All of these collectively defining a single polygonal surface. From this: http://www.sidefx.com/docs/hdk13.0/hdk_geometry_intro.html It seems that I need to populate the Point Index Map, the Vertex Index Map, the Primitive Index Map, and the Primitive List. Where my primitives represent the faces of the polygon. Does anyone have an example of code that does this? I'm then going to shove that GU_Detail in as a member of a packed prim, but that's a story for another day... Thanks for any tips, Alex
  2. Beautiful! Works great. Thanks for enlightening me.
  3. Hi everybody, Apologies if this has been asked a thousand times, but my searching hasn't found anything conclusive yet. I'm attempting to take a packed primitive and extract the polygon geometry data from the packed prims in my C++ ROP. Here's a rough sketch of how the code looks right now. I've omitted a lot of error checking code, but this is the gist: // the packed prim gdp = _sopNode->getCookedGeo(context, 1); for (GA_Iterator it(gdp->getPrimitiveRange()); !it.atEnd(); ++it) { // the GEO_Primitive of the sub-primitive const GEO_Primitive* p = gdp->getGEOPrimitive(*it); const GU_PrimPacked* pack = UTverify_cast<const GU_PrimPacked*>(p); const GU_PackedGeometry* pImpl = UTverify_cast<const GU_PackedGeometry*>(pack->implementation()); // dest has the mesh GU_Detail dest; pImpl->unpackUsingPolygons(dest); for (GA_Iterator jt(dest.getPrimitiveRange()); !jt.atEnd(); ++jt) { // now looking at the individual faces on the poly const GEO_Primitive* face = dest.getGEOPrimitive(*jt); GA_ROHandleV3 ptREF(&dest, GA_ATTRIB_POINT, "P"); for (GA_Iterator pt(face->getPointRange()); !pt.atEnd(); ++pt) { GA_Offset ptoff = pt.getOffset(); UT_Vector3 pos = ptRef.get(ptoff); // have the position of the points for this face } } } So, I have the points. Yay for that. Now I'm looking to figure out the vertex indices for these points. Some of these points being printed out are exactly the same, which makes me think the faces are sharing a vertex. How do I get those vertex indices from the face? I've been playing with a VertexMap, but the numbers coming out are all exactly the same as the offset, which makes me think I'm doing something wrong. If I have a polygon like: 1--------2--------3 | | | 4--------5--------6 I'd expect vertices 2 and 5 to be shared between the two faces, so my position information would look like: 1 (0, 0, 0) 2 (1, 0, 0) 3 (2, 0, 0) 4 (0, 1, 0) 5 (1, 1, 0) 6 (2, 1, 0) And my face index lists would be something like: Face A : 1 2 5 4 Face B : 2 3 6 5 How do I get that face index list information out of my GEO_Primitive for the face? Many thanks for any tips.
×