I develop simple tool that should create and slide edge segments while user
perform Tool_Drag() callback.
So far i know two approaches for this:
1st:
    Through CustomTool_Draw() callback mimic new edge_segments slide via
OGL LINE\STRIPE primitive movements.
    This way i didn't perform any geometry changes and can easily slide
edge-segments on a high-poly objects.
    But if i want draw edge segments via OGL for subdivide lvl > 0, i need
somehow calculate Catmull-Clark coordinates for OGL primitives.
    And since i didn't add any real edges to the object geometry, i can't
perform this calculations.
    And i also can't get Neighbor components of OGL drawn components, can't
get Border status or Crease status and so on.

2nd:
    Add real edge segments and connect CustomOperator to geometry.
    Perform edge_verticies transposition through
XSI::Primitive.GetGeometry().GetPoints().PutPositionArray() algorythm.
    This way we didn't need any additional subdivide calculations for
subdivide lvl > 0 since we deal with real geometry,
    but on other hand we have performance problem on high-poly objects.
    *   I use XSI::Primitive.GetGeometry().GetPoints().PutPositionArray()
and not XSI::PolygonMesh.Set() algorythm,
        because this way we didn't change indices of components that
already exist.

So maybe there is another aproach to this performance problem ?
Maybe i should try to use Fabric Multithreaded calculations and write
transposition block for real components via Fabric Engine ?
Or maybe there is other way to calculate Catmull-Clark coordinates for OGL
drawn components.

Reply via email to