diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-07-29 18:41:57 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-07-29 18:41:57 +0300 |
commit | 51c1927ccb546cffe30ebcd9e4ecf6aa07b96ce1 (patch) | |
tree | 33cd21ff83fc13b772201d2a9118f3b6706868b7 /intern/opensubdiv | |
parent | 717a303a18de232ab740ee969108044a4ff7ee6e (diff) |
OpenSubdiv: Make topology orientation optional
Diffstat (limited to 'intern/opensubdiv')
-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__ */ |