MCPcopy Create free account
hub / github.com/ImageEngine/cortex / visitFace

Function visitFace

src/IECoreScene/MeshAlgoReorder.cpp:145–291  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

143}
144
145void visitFace(
146 const MeshPrimitive * mesh,
147 FaceId currentFace,
148 Edge currentEdge,
149 FaceToVerticesMap &faceToVerticesMap,
150 FaceToEdgesMap &faceToEdgesMap,
151 VertexList &faceVaryingOffsets,
152 EdgeToConnectedFacesMap &edgeToConnectedFacesMap,
153 std::vector<VertexId> &vertexMap,
154 std::vector<VertexId> &vertexRemap,
155 std::vector<int> &newVerticesPerFace,
156 std::vector<VertexId> &newVertexIds,
157 std::vector<int> &faceVaryingRemap,
158 std::vector<int> &faceRemap,
159 int &nextVertex,
160 const Canceller *canceller
161)
162{
163 assert( currentEdge.first != currentEdge.second );
164
165 if ( faceRemap[ currentFace ] != -1 )
166 {
167 return;
168 }
169
170 Canceller::check( canceller );
171
172 FaceToEdgesMap::const_iterator currentFaceIt = faceToEdgesMap.find( currentFace );
173 assert( currentFaceIt != faceToEdgesMap.end() );
174 const EdgeList &faceEdges = currentFaceIt->second;
175
176 assert( faceEdges.size() >= 3 );
177
178 FaceToVerticesMap::const_iterator vit = faceToVerticesMap.find( currentFace );
179 assert( vit != faceToVerticesMap.end() );
180 const VertexList &faceVertices = vit->second;
181
182 int numFaceVertices = faceVertices.size();
183
184 VertexList::const_iterator it = std::find( faceVertices.begin(), faceVertices.end(), currentEdge.first );
185 assert( it != faceVertices.end() );
186
187 int currentEdgeVertexOrigin = std::distance( faceVertices.begin(), it );
188
189 assert( faceVertices[ index( currentEdgeVertexOrigin, numFaceVertices )] == currentEdge.first );
190
191 int faceVerticesDirection = faceDirection( faceToVerticesMap, currentFace, currentEdge );
192
193 EdgeList faceEdgesSorted( numFaceVertices );
194 VertexList faceVerticesSorted( numFaceVertices );
195
196 int i;
197 for ( i = 0; i < numFaceVertices; i++ )
198 {
199 faceVerticesSorted[i] = faceVertices[index( currentEdgeVertexOrigin + i * faceVerticesDirection, numFaceVertices )];
200
201 if ( faceVerticesDirection == 1 )
202 {

Callers 1

reorderVerticesMethod · 0.85

Calls 8

findFunction · 0.85
faceDirectionFunction · 0.85
indexFunction · 0.70
findMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45
variableSizeMethod · 0.45

Tested by

no test coverage detected