52 _occluders.push_back(o);
70 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:Cell")
88 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:GridVisitor")
122 Vec3r ray_org_, ray_dir_, cell_size_;
134 cell_size_(cell_size),
143 current_cell_ = cell;
174 virtual void clear();
194 for (
int i = 0;
i < 3;
i++) {
292 const Vec3r &orig,
const Vec3r &dir,
double &t,
double &u,
double &
v,
uint timestamp);
326 cerr <<
"Cells nb : " <<
_cells_nb << endl;
328 cerr <<
"Origin : " <<
_orig << endl;
329 cerr <<
"Occluders nb : " <<
_occluders.size() << endl;
336 Cell *current_cell =
nullptr;
343 for (OccludersSet::iterator it = occluders.begin(); it != occluders.end(); it++) {
375 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:Grid")
393 OccludersSet::iterator it, end;
395 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:VirtualOccludersSet")
#define POINTER_AS_UINT(i)
#define POINTER_FROM_UINT(i)
Configuration definitions.
Various tools for geometry.
Vectors and Matrices (useful type definitions).
Read Guarded memory(de)allocation.
Class to define a polygon.
ATTR_WARN_UNUSED_RESULT const BMVert * v
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void addOccluder(Polygon3r *o)
const Vec3r & getOrigin()
OccludersSet & getOccluders()
virtual void discoverCell(Cell *)
virtual void examineOccluder(Polygon3r *)
virtual void finishCell(Cell *)
OccludersSet * getOccluders()
void initAcceleratedRay(const Vec3r &orig, const Vec3r &end, uint timestamp)
void getCellCoordinates(const Vec3r &p, Vec3u &res)
const Vec3r & getOrigin() const
bool initAcceleratedInfiniteRay(const Vec3r &orig, const Vec3r &dir, uint timestamp)
void castInfiniteRay(const Vec3r &orig, const Vec3r &dir, OccludersSet &occluders, uint timestamp)
void getCellBox(const Vec3u &cell_coord, Vec3r &min_out, Vec3r &max_out)
void addOccluder(Polygon3r *occluder)
bool nextRayCell(Vec3u ¤t_cell, Vec3u &next_cell)
Vec3r getCellSize() const
virtual void configure(const Vec3r &orig, const Vec3r &size, uint nb)
void getCellOrigin(const Vec3u &cell_coord, Vec3r &orig)
bool initInfiniteRay(const Vec3r &orig, const Vec3r &dir, uint timestamp)
virtual void fillCell(const Vec3u &coord, Cell &cell)=0
Polygon3r * castRayToFindFirstIntersection(const Vec3r &orig, const Vec3r &dir, double &t, double &u, double &v, uint timestamp)
void insertOccluder(Polygon3r *occluder)
void castRayInternal(GridVisitor &visitor)
void castRay(const Vec3r &orig, const Vec3r &end, OccludersSet &occluders, uint timestamp)
virtual Cell * getCell(const Vec3u &coord)=0
void initRay(const Vec3r &orig, const Vec3r &end, uint timestamp)
Cell * getCell(const Vec3r &p)
OccludersSet & occluders()
allOccludersGridVisitor(OccludersSet &occluders)
virtual void examineOccluder(Polygon3r *occ)
virtual void discoverCell(Cell *cell)
firstIntersectionGridVisitor(const Vec3r &ray_org, const Vec3r &ray_dir, const Vec3r &cell_size)
virtual ~firstIntersectionGridVisitor()
virtual void examineOccluder(Polygon3r *occ)
VecMat::Vec3< uint > Vec3u
VecMat::Vec3< real > Vec3r
vector< Polygon3r * > OccludersSet