OpenSubdiv: Make topology orientation optional

This commit is contained in:
Sergey Sharybin 2015-07-29 17:41:57 +02:00
parent 717a303a18
commit 51c1927ccb
2 changed files with 12 additions and 0 deletions

View File

@ -134,6 +134,7 @@ inline bool TopologyRefinerFactory<OpenSubdiv_Converter>::assignComponentTopolog
int num_vert_edges = conv.get_num_vert_edges(&conv, vert);
int *vert_edges = new int[num_vert_edges];
conv.get_vert_edges(&conv, vert, vert_edges);
#ifdef OPENSUBDIV_ORIENT_TOPOLOGY
/* Order vertex edges and faces in a CCW order. */
/* TODO(sergey): Look into possible optimizations here. */
bool *face_used = new bool[num_faces];
@ -253,6 +254,10 @@ inline bool TopologyRefinerFactory<OpenSubdiv_Converter>::assignComponentTopolog
}
}
#endif
#else /* OPENSUBDIV_ORIENT_TOPOLOGY */
memcpy(&dst_vert_edges[0], vert_edges, sizeof(int) * num_vert_edges);
memcpy(&dst_vert_faces[0], vert_faces, sizeof(int) * num_vert_faces);
#endif /* OPENSUBDIV_ORIENT_TOPOLOGY */
delete [] vert_edges;
delete [] vert_faces;

View File

@ -33,4 +33,11 @@
# define OPENSUBDIV_VALIDATE_TOPOLOGY
#endif
/* Currently OpenSubdiv expects topology to be oriented,
* but sometimes it's handy to disable orientation code
* to check whether it causes some weird issues by using
* pre-oriented model.
*/
#define OPENSUBDIV_ORIENT_TOPOLOGY
#endif /* __OPENSUBDIV_INTERN_H__ */