Blender V5.0
Freestyle::Grid Class Referenceabstract

#include <Grid.h>

Inherited by Freestyle::FastGrid, and Freestyle::HashGrid.

Public Member Functions

 Grid ()
virtual ~Grid ()
virtual void clear ()
virtual void configure (const Vec3r &orig, const Vec3r &size, uint nb)
void getCellCoordinates (const Vec3r &p, Vec3u &res)
virtual void fillCell (const Vec3u &coord, Cell &cell)=0
virtual CellgetCell (const Vec3u &coord)=0
CellgetCell (const Vec3r &p)
void getCellOrigin (const Vec3u &cell_coord, Vec3r &orig)
void getCellBox (const Vec3u &cell_coord, Vec3r &min_out, Vec3r &max_out)
void insertOccluder (Polygon3r *occluder)
void addOccluder (Polygon3r *occluder)
void castRay (const Vec3r &orig, const Vec3r &end, OccludersSet &occluders, uint timestamp)
void initAcceleratedRay (const Vec3r &orig, const Vec3r &end, uint timestamp)
void castInfiniteRay (const Vec3r &orig, const Vec3r &dir, OccludersSet &occluders, uint timestamp)
bool initAcceleratedInfiniteRay (const Vec3r &orig, const Vec3r &dir, uint timestamp)
Polygon3rcastRayToFindFirstIntersection (const Vec3r &orig, const Vec3r &dir, double &t, double &u, double &v, uint timestamp)
void initRay (const Vec3r &orig, const Vec3r &end, uint timestamp)
bool initInfiniteRay (const Vec3r &orig, const Vec3r &dir, uint timestamp)
const Vec3rgetOrigin () const
Vec3r gridSize () const
Vec3r getCellSize () const
OccludersSetgetOccluders ()
void displayDebug ()

Protected Member Functions

void castRayInternal (GridVisitor &visitor)
bool nextRayCell (Vec3u &current_cell, Vec3u &next_cell)

Protected Attributes

uint _timestamp
Vec3u _cells_nb
Vec3r _cell_size
Vec3r _size
Vec3r _orig
Vec3r _ray_dir
Vec3u _current_cell
Vec3r _pt
real _t_end
real _t
OccludersSet _occluders

Detailed Description

Definition at line 161 of file Grid.h.

Constructor & Destructor Documentation

◆ Grid()

Freestyle::Grid::Grid ( )
inline

Builds a Grid. Must be followed by a call to configure()

Definition at line 164 of file Grid.h.

Referenced by Freestyle::FastGrid::FastGrid(), and Freestyle::HashGrid::HashGrid().

◆ ~Grid()

virtual Freestyle::Grid::~Grid ( )
inlinevirtual

Definition at line 166 of file Grid.h.

References clear().

Member Function Documentation

◆ addOccluder()

void Freestyle::Grid::addOccluder ( Polygon3r * occluder)
inline

Adds an occluder to the list of occluders

Definition at line 261 of file Grid.h.

References _occluders.

Referenced by insertOccluder().

◆ castInfiniteRay()

void Freestyle::Grid::castInfiniteRay ( const Vec3r & orig,
const Vec3r & dir,
OccludersSet & occluders,
uint timestamp )

Casts an infinite ray (still finishing at the end of the grid) from a starting point and in a given direction. Returns the list of occluders contained in the cells intersected by this ray Starts with a call to InitRay.

Definition at line 295 of file Grid.cpp.

References castRayInternal(), FLT_MAX, initInfiniteRay(), and Freestyle::VecMat::Vec< T, N >::norm().

Referenced by Freestyle::ViewMapBuilder::FindOccludee().

◆ castRay()

void Freestyle::Grid::castRay ( const Vec3r & orig,
const Vec3r & end,
OccludersSet & occluders,
uint timestamp )

Casts a ray between a starting point and an ending point Returns the list of occluders contained in the cells intersected by this ray Starts with a call to InitRay.

Definition at line 288 of file Grid.cpp.

References castRayInternal(), and initRay().

Referenced by Freestyle::ViewMapBuilder::ComputeRayCastingVisibility().

◆ castRayInternal()

void Freestyle::Grid::castRayInternal ( GridVisitor & visitor)
inlineprotected

◆ castRayToFindFirstIntersection()

Polygon3r * Freestyle::Grid::castRayToFindFirstIntersection ( const Vec3r & orig,
const Vec3r & dir,
double & t,
double & u,
double & v,
uint timestamp )

Casts an infinite ray (still finishing at the end of the grid) from a starting point and in a given direction. Returns the first intersection (occluder,t,u,v) or null. Starts with a call to InitRay.

Definition at line 309 of file Grid.cpp.

References _cell_size, castRayInternal(), FLT_MAX, initInfiniteRay(), Freestyle::VecMat::Vec< T, N >::norm(), Freestyle::firstIntersectionGridVisitor::occluder(), Freestyle::firstIntersectionGridVisitor::t_, Freestyle::firstIntersectionGridVisitor::u_, v, and Freestyle::firstIntersectionGridVisitor::v_.

◆ clear()

void Freestyle::Grid::clear ( )
virtual

clears the grid Deletes all the cells, clears the hash-table, resets size, size of cell, number of cells.

Reimplemented in Freestyle::FastGrid, and Freestyle::HashGrid.

Definition at line 85 of file Grid.cpp.

References _cell_size, _cells_nb, _occluders, _orig, and _size.

Referenced by Freestyle::FastGrid::clear(), Freestyle::HashGrid::clear(), and ~Grid().

◆ configure()

void Freestyle::Grid::configure ( const Vec3r & orig,
const Vec3r & size,
uint nb )
virtual

Sets the different parameters of the grid orig The grid origin size The grid's dimensions nb The number of cells of the grid

Reimplemented in Freestyle::FastGrid, and Freestyle::HashGrid.

Definition at line 101 of file Grid.cpp.

References _cell_size, _cells_nb, _orig, _size, floor, i, min, pow, and size().

Referenced by Freestyle::FastGrid::configure(), and Freestyle::HashGrid::configure().

◆ displayDebug()

void Freestyle::Grid::displayDebug ( )
inline

Definition at line 324 of file Grid.h.

References _cell_size, _cells_nb, _occluders, and _orig.

◆ fillCell()

virtual void Freestyle::Grid::fillCell ( const Vec3u & coord,
Cell & cell )
pure virtual

Fills the case corresponding to coord with the cell

Implemented in Freestyle::FastGrid, and Freestyle::HashGrid.

Referenced by insertOccluder().

◆ getCell() [1/2]

Cell * Freestyle::Grid::getCell ( const Vec3r & p)
inline

returns the cell containing the point passed as argument. If the cell is empty (contains no occluder), nullptr is returned: p The point for which we're looking the cell

Definition at line 219 of file Grid.h.

References getCell(), and getCellCoordinates().

◆ getCell() [2/2]

virtual Cell * Freestyle::Grid::getCell ( const Vec3u & coord)
pure virtual

returns the cell whose coordinates are passed as argument

Implemented in Freestyle::FastGrid, and Freestyle::HashGrid.

Referenced by castRayInternal(), getCell(), and insertOccluder().

◆ getCellBox()

void Freestyle::Grid::getCellBox ( const Vec3u & cell_coord,
Vec3r & min_out,
Vec3r & max_out )
inline

Retrieves the box corresponding to the cell whose coordinates are passed as argument: cell_coord i,j,k integer coordinates for the cell min_out The min x,y,x vector of the box. Filled in by the method. max_out The max x,y,z coordinates of the box. Filled in by the method.

Definition at line 248 of file Grid.h.

References _cell_size, and getCellOrigin().

Referenced by insertOccluder().

◆ getCellCoordinates()

void Freestyle::Grid::getCellCoordinates ( const Vec3r & p,
Vec3u & res )
inline

returns a vector of integer containing the coordinates of the cell containing the point passed as argument p The point for which we're looking the cell

Definition at line 191 of file Grid.h.

References _cell_size, _cells_nb, _orig, and i.

Referenced by getCell(), and insertOccluder().

◆ getCellOrigin()

void Freestyle::Grid::getCellOrigin ( const Vec3u & cell_coord,
Vec3r & orig )
inline

Retrieves the x,y,z coordinates of the origin of the cell whose coordinates (i,j,k) is passed as argument: cell_coord i,j,k integer coordinates for the cell orig x,y,x vector to be filled in with the cell origin's coordinates

Definition at line 233 of file Grid.h.

References _cell_size, _orig, and i.

Referenced by getCellBox(), and insertOccluder().

◆ getCellSize()

Vec3r Freestyle::Grid::getCellSize ( ) const
inline

Definition at line 313 of file Grid.h.

References _cell_size.

◆ getOccluders()

OccludersSet * Freestyle::Grid::getOccluders ( )
inline

Definition at line 319 of file Grid.h.

References _occluders.

◆ getOrigin()

const Vec3r & Freestyle::Grid::getOrigin ( ) const
inline

Accessors

Definition at line 303 of file Grid.h.

References _orig.

Referenced by Freestyle::ViewMapBuilder::ComputeRayCastingVisibility().

◆ gridSize()

Vec3r Freestyle::Grid::gridSize ( ) const
inline

Definition at line 308 of file Grid.h.

References _size.

Referenced by Freestyle::ViewMapBuilder::ComputeRayCastingVisibility().

◆ initAcceleratedInfiniteRay()

bool Freestyle::Grid::initAcceleratedInfiniteRay ( const Vec3r & orig,
const Vec3r & dir,
uint timestamp )

References v.

◆ initAcceleratedRay()

void Freestyle::Grid::initAcceleratedRay ( const Vec3r & orig,
const Vec3r & end,
uint timestamp )

◆ initInfiniteRay()

bool Freestyle::Grid::initInfiniteRay ( const Vec3r & orig,
const Vec3r & dir,
uint timestamp )

Init all structures and values for computing the cells intersected by this infinite ray. Returns false if the ray doesn't intersect the grid.

Definition at line 346 of file Grid.cpp.

References _cell_size, _cells_nb, _current_cell, _orig, _pt, _ray_dir, _size, _t, _t_end, _timestamp, BLI_assert, floor, FLT_MAX, i, Freestyle::BBox< Point >::inside(), and Freestyle::GeomUtils::intersectRayBBox().

Referenced by castInfiniteRay(), and castRayToFindFirstIntersection().

◆ initRay()

void Freestyle::Grid::initRay ( const Vec3r & orig,
const Vec3r & end,
uint timestamp )

Init all structures and values for computing the cells intersected by this new ray

Definition at line 330 of file Grid.cpp.

References _cell_size, _current_cell, _orig, _pt, _ray_dir, _t, _t_end, _timestamp, floor, and i.

Referenced by castRay().

◆ insertOccluder()

void Freestyle::Grid::insertOccluder ( Polygon3r * occluder)

inserts a convex polygon occluder This method is quite coarse insofar as it adds all cells intersecting the polygon bounding box convex_poly The list of 3D points constituting a convex polygon

Definition at line 145 of file Grid.cpp.

References _cell_size, Freestyle::Cell::addOccluder(), addOccluder(), fillCell(), Freestyle::Geometry::Polygon< Point >::getBBox(), getCell(), getCellBox(), getCellCoordinates(), getCellOrigin(), Freestyle::Geometry::Polygon< Point >::getVertices(), i, max, min, Freestyle::GeomUtils::overlapTriangleBox(), Freestyle::x, y, and z().

◆ nextRayCell()

bool Freestyle::Grid::nextRayCell ( Vec3u & current_cell,
Vec3u & next_cell )
protected

Returns the cell next to the cell passed as argument.

Definition at line 229 of file Grid.cpp.

References _cell_size, _cells_nb, _pt, _ray_dir, _t, _t_end, FLT_MAX, and i.

Referenced by castRayInternal().

Member Data Documentation

◆ _cell_size

◆ _cells_nb

◆ _current_cell

Vec3u Freestyle::Grid::_current_cell
protected

Definition at line 365 of file Grid.h.

Referenced by castRayInternal(), initInfiniteRay(), and initRay().

◆ _occluders

OccludersSet Freestyle::Grid::_occluders
protected

Definition at line 373 of file Grid.h.

Referenced by addOccluder(), clear(), displayDebug(), and getOccluders().

◆ _orig

Vec3r Freestyle::Grid::_orig
protected

◆ _pt

Vec3r Freestyle::Grid::_pt
protected

Definition at line 366 of file Grid.h.

Referenced by initInfiniteRay(), initRay(), and nextRayCell().

◆ _ray_dir

Vec3r Freestyle::Grid::_ray_dir
protected

Definition at line 364 of file Grid.h.

Referenced by initInfiniteRay(), initRay(), and nextRayCell().

◆ _size

Vec3r Freestyle::Grid::_size
protected

Definition at line 361 of file Grid.h.

Referenced by clear(), configure(), gridSize(), and initInfiniteRay().

◆ _t

real Freestyle::Grid::_t
protected

Definition at line 369 of file Grid.h.

Referenced by initInfiniteRay(), initRay(), and nextRayCell().

◆ _t_end

real Freestyle::Grid::_t_end
protected

Definition at line 368 of file Grid.h.

Referenced by initInfiniteRay(), initRay(), and nextRayCell().

◆ _timestamp

uint Freestyle::Grid::_timestamp
protected

Definition at line 357 of file Grid.h.

Referenced by castRayInternal(), initInfiniteRay(), and initRay().


The documentation for this class was generated from the following files: