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.