All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
topologyDescriptor.h
Go to the documentation of this file.
1 //
2 // Copyright 2014 DreamWorks Animation LLC.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "Apache License")
5 // with the following modification; you may not use this file except in
6 // compliance with the Apache License and the following modification to it:
7 // Section 6. Trademarks. is deleted and replaced with:
8 //
9 // 6. Trademarks. This License does not grant permission to use the trade
10 // names, trademarks, service marks, or product names of the Licensor
11 // and its affiliates, except as required to comply with Section 4(c) of
12 // the License and to reproduce the content of the NOTICE file.
13 //
14 // You may obtain a copy of the Apache License at
15 //
16 // http://www.apache.org/licenses/LICENSE-2.0
17 //
18 // Unless required by applicable law or agreed to in writing, software
19 // distributed under the Apache License with the above modification is
20 // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21 // KIND, either express or implied. See the Apache License for the specific
22 // language governing permissions and limitations under the Apache License.
23 //
24 #ifndef OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H
25 #define OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H
26 
27 #include "../version.h"
28 
29 #include "../far/topologyRefiner.h"
30 #include "../far/topologyRefinerFactory.h"
31 #include "../far/error.h"
32 
33 #include <cassert>
34 
35 namespace OpenSubdiv {
36 namespace OPENSUBDIV_VERSION {
37 
38 namespace Far {
39 
50 
52  numFaces;
53 
54  int const * numVertsPerFace;
56 
59  float const * creaseWeights;
60 
63  float const * cornerWeights;
64 
65  int numHoles;
66  Index const * holeIndices;
67 
69 
70  // Face-varying data channel -- value indices correspond to vertex indices,
71  // i.e. one for every vertex of every face:
72  //
73  struct FVarChannel {
74 
75  int numValues;
77 
79  };
80 
83 
85 };
86 
87 
88 //
89 // Forward declarations of required TopologyRefinerFactory<TopologyDescriptor>
90 // specializations (defined internally):
91 //
92 // @cond EXCLUDE_DOXYGEN
93 
94 template <>
95 bool
97  TopologyRefiner & refiner, TopologyDescriptor const & desc);
98 
99 template <>
100 bool
102  TopologyRefiner & refiner, TopologyDescriptor const & desc);
103 
104 template <>
105 bool
107  TopologyRefiner & refiner, TopologyDescriptor const & desc);
108 
109 template <>
110 bool
112  TopologyRefiner & refiner, TopologyDescriptor const & desc);
113 
114 template <>
115 void
117  TopologyError errCode, char const * msg, TopologyDescriptor const & desc);
118 
119 // @endcond
120 
121 } // end namespace Far
122 
123 } // end namespace OPENSUBDIV_VERSION
124 using namespace OPENSUBDIV_VERSION;
125 } // end namespace OpenSubdiv
126 
127 #endif /* OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H */
static bool assignComponentTopology(TopologyRefiner &newRefiner, MESH const &mesh)
Specify the relationships between vertices, faces, etc. ie the face-vertices, vertex-faces, edge-vertices, etc.
static bool assignComponentTags(TopologyRefiner &newRefiner, MESH const &mesh)
(Optional) Specify edge or vertex sharpness or face holes
Stores topology data for a specified set of refinement options.
static bool resizeComponentTopology(TopologyRefiner &newRefiner, MESH const &mesh)
Specify the number of vertices, faces, face-vertices, etc.
static bool assignFaceVaryingTopology(TopologyRefiner &newRefiner, MESH const &mesh)
(Optional) Specify face-varying data per face
A simple reference to raw topology data for use with TopologyRefinerFactory.
static void reportInvalidTopology(TopologyError errCode, char const *msg, MESH const &mesh)
(Optional) Control run-time topology validation and error reporting