diff options
Diffstat (limited to 'intern')
-rw-r--r-- | intern/opensubdiv/opensubdiv_converter.cc | 5 | ||||
-rw-r--r-- | intern/opensubdiv/opensubdiv_intern.h | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/intern/opensubdiv/opensubdiv_converter.cc b/intern/opensubdiv/opensubdiv_converter.cc index a84939f8d4d..fe12c840af5 100644 --- a/intern/opensubdiv/opensubdiv_converter.cc +++ b/intern/opensubdiv/opensubdiv_converter.cc @@ -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; diff --git a/intern/opensubdiv/opensubdiv_intern.h b/intern/opensubdiv/opensubdiv_intern.h index 034677f76fd..3e3925e74c4 100644 --- a/intern/opensubdiv/opensubdiv_intern.h +++ b/intern/opensubdiv/opensubdiv_intern.h @@ -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__ */ |