Blender  V3.3
WSFillGrid.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
8 #include "WSFillGrid.h"
9 #include "WEdge.h"
10 
11 namespace Freestyle {
12 
14 {
15  if (!_winged_edge || !_grid) {
16  return;
17  }
18 
19  vector<WShape *> wshapes = _winged_edge->getWShapes();
20  vector<WVertex *> fvertices;
21  vector<Vec3r> vectors;
22  vector<WFace *> faces;
23 
24  for (vector<WShape *>::const_iterator it = wshapes.begin(); it != wshapes.end(); ++it) {
25  faces = (*it)->GetFaceList();
26 
27  for (vector<WFace *>::const_iterator f = faces.begin(); f != faces.end(); ++f) {
28  (*f)->RetrieveVertexList(fvertices);
29 
30  for (vector<WVertex *>::const_iterator wv = fvertices.begin(); wv != fvertices.end(); ++wv) {
31  vectors.emplace_back((*wv)->GetVertex());
32  }
33 
34  // occluder will be deleted by the grid
35  Polygon3r *occluder = new Polygon3r(vectors, (*f)->GetNormal());
36  occluder->setId(_polygon_id++);
37  occluder->userdata = (void *)(*f);
38  _grid->insertOccluder(occluder);
39  vectors.clear();
40  fvertices.clear();
41  }
42  faces.clear();
43  }
44 }
45 
46 } /* namespace Freestyle */
Classes to define a Winged Edge data structure.
Class to fill in a grid from a SceneGraph (uses only the WingedEdge structures)
void setId(unsigned id)
Definition: Polygon.h:116
void insertOccluder(Polygon3r *occluder)
Definition: Grid.cpp:140
vector< WShape * > & getWShapes()
Definition: WEdge.h:1322
static char faces[256]
inherits from class Rep
Definition: AppCanvas.cpp:18