NL3D::CTessFace Class Reference

A Landscape Triangle. More...

#include <tessellation.h>

Inherits NL3D::CTessNodeList, and NL3D::CTessFacePListNode.

List of all members.

Public Member Functions

 CTessFace ()
 ~CTessFace ()
bool isLeaf () const
bool isRectangular () const
bool hasVertex (CTessVertex *v) const
bool hasEdge (CTessVertex *v0, CTessVertex *v1) const
void changeNeighbor (CTessFace *from, CTessFace *to)
void computeTileMaterial ()
void releaseTileMaterial ()
float computeNearLimit ()
void updateErrorMetric ()
void split (bool propagateSplit=true)
bool merge ()
void refineAll ()
 refine the node, and his sons. Refine all nodes.
void updateRefineSplit ()
void updateRefineMerge ()
void computeSplitPoint ()
 compute the SplitPoint.
void unbind ()
void forceMerge ()
CTessFacelinkTessFaceWithEdge (const NLMISC::CVector2f &uv0, const NLMISC::CVector2f &uv1, CTessFace *linkTo)
bool updateBindEdge (CTessFace *&edgeFace, bool &splitWanted)
void updateBind ()
void updateBindAndSplit ()
void forceMergeAtTileLevel ()
void averageTesselationVertices ()
void refreshTesselationGeometry ()
void deleteTileUvs ()
void recreateTileUvs ()
void getTesselatedPos (const CUV &uv, bool verifInclusion, CVector &ret)
void appendTessellationLeaves (std::vector< const CTessFace * > &leaves) const

Public Attributes

CTessFarVertexFVBase
CTessFarVertexFVLeft
CTessFarVertexFVRight
sint ShadowMapTriId
geometric tesselation.



CPatchPatch
CTessVertexVBase
CTessVertexVLeft
CTessVertexVRight
CTessFaceFBase
CTessFaceFLeft
CTessFaceFRight
CTessFaceFather
CTessFaceSonLeft
CTessFaceSonRight
CParamCoord PVBase
CParamCoord PVLeft
CParamCoord PVRight
uint8 Level
bool RecursMarkCanMerge
bool RecursMarkForceMerge
Error metric.



sint ErrorMetricDate
float Size
CVector SplitPoint
float ErrorMetric
float MaxDistToSplitPoint

Static Public Attributes

static CTessFace MultipleBindFace

Private Member Functions

void computeTileErrorMetric ()
float computeTileEMForUpdateRefine (float distSplitPoint, float distMinFace, float nearLimit)
bool canMerge (bool testEm)
void splitRectangular (bool propagateSplit)
void doMerge ()
void heritTileMaterial ()
void initTileUvRGBA (sint pass, bool alpha, CParamCoord pointCoord, CParamCoord middleCoord, CUV &uv)
void initTileUvLightmap (CParamCoord pointCoord, CParamCoord middleCoord, CUV &uv)
void initTileUvDLM (CParamCoord pointCoord, CUV &uv)
void updateNearFarVertices ()
void computeTesselatedPos (const CUV &uv, CVector &ret)
UV mgt.



void allocTileUv (TTileUvId id)
void deleteTileUv (TTileUvId id)
void copyTileUv (TTileUvId id, CTessFace *srcFace, TTileUvId srcId)
void heritTileUv (CTessFace *baseFace)
void checkCreateFillTileVB (TTileUvId id)
void checkFillTileVB (TTileUvId id)
void buildTileFaces ()
void deleteTileFaces ()
bool emptyTileFaces ()

Static Private Member Functions

static bool sameTile (const CTessFace *a, const CTessFace *b)

Static Private Attributes

static CTessFace CantMergeFace

Tile Material Infos (uvs...).



enum  TTileUvId { IdUvBase = 0, IdUvLeft, IdUvRight }
uint8 TileId
CTileMaterialTileMaterial
CTileFaceTileFaces [NL3D_MAX_TILE_FACE]

Detailed Description

A Landscape Triangle.

MemSize: 28*4 octets. => for 100K faces, it takes 11.2 Mo.

Author:
Lionel Berenguier
Nevrax France
Date:
2000

Definition at line 231 of file tessellation.h.


Member Enumeration Documentation

Enumerator:
IdUvBase 
IdUvLeft 
IdUvRight 

Definition at line 262 of file tessellation.h.


Constructor & Destructor Documentation

NL3D::CTessFace::CTessFace (  ) 
NL3D::CTessFace::~CTessFace (  ) 

Definition at line 187 of file tessellation.cpp.

References NL3D_PROFILE_LAND_ADD, nlassert, NL3D::ProfNTessFace, and ShadowMapTriId.


Member Function Documentation

void NL3D::CTessFace::allocTileUv ( TTileUvId  id  )  [private]
void NL3D::CTessFace::appendTessellationLeaves ( std::vector< const CTessFace * > &  leaves  )  const
void NL3D::CTessFace::averageTesselationVertices (  ) 
void NL3D::CTessFace::buildTileFaces (  )  [private]
bool NL3D::CTessFace::canMerge ( bool  testEm  )  [private]
void NL3D::CTessFace::changeNeighbor ( CTessFace from,
CTessFace to 
) [inline]

Definition at line 296 of file tessellation.h.

References FBase, FLeft, and FRight.

Referenced by doMerge(), split(), splitRectangular(), unbind(), and updateBindAndSplit().

void NL3D::CTessFace::checkCreateFillTileVB ( TTileUvId  id  )  [private]
void NL3D::CTessFace::checkFillTileVB ( TTileUvId  id  )  [private]
float NL3D::CTessFace::computeNearLimit (  ) 
void NL3D::CTessFace::computeSplitPoint (  ) 

compute the SplitPoint.

VBase / VLeft and VRight must be valid. Also compute MaxDistToSplitPoint.

Definition at line 340 of file tessellation.cpp.

References NL3D::CTessVertex::EndPos, isRectangular(), MaxDistToSplitPoint, SplitPoint, VBase, VLeft, and VRight.

Referenced by NL3D::CPatch::bind(), NL3D::CPatch::makeRoots(), split(), splitRectangular(), and updateBindAndSplit().

void NL3D::CTessFace::computeTesselatedPos ( const CUV uv,
CVector ret 
) [private]
float NL3D::CTessFace::computeTileEMForUpdateRefine ( float  distSplitPoint,
float  distMinFace,
float  nearLimit 
) [inline, private]
void NL3D::CTessFace::computeTileErrorMetric (  )  [private]
void NL3D::CTessFace::computeTileMaterial (  ) 
void NL3D::CTessFace::copyTileUv ( TTileUvId  id,
CTessFace srcFace,
TTileUvId  srcId 
) [private]
void NL3D::CTessFace::deleteTileFaces (  )  [private]
void NL3D::CTessFace::deleteTileUv ( TTileUvId  id  )  [private]
void NL3D::CTessFace::deleteTileUvs (  ) 
void NL3D::CTessFace::doMerge (  )  [private]
bool NL3D::CTessFace::emptyTileFaces (  )  [private]

Definition at line 544 of file tessellation.cpp.

References NL3D_MAX_TILE_FACE, and TileFaces.

Referenced by deleteTileUvs().

void NL3D::CTessFace::forceMerge (  ) 
void NL3D::CTessFace::forceMergeAtTileLevel (  ) 
void NL3D::CTessFace::getTesselatedPos ( const CUV uv,
bool  verifInclusion,
CVector ret 
)
bool NL3D::CTessFace::hasEdge ( CTessVertex v0,
CTessVertex v1 
) const [inline]

Definition at line 295 of file tessellation.h.

References hasVertex().

bool NL3D::CTessFace::hasVertex ( CTessVertex v  )  const [inline]

Definition at line 294 of file tessellation.h.

References VBase, VLeft, and VRight.

Referenced by hasEdge().

void NL3D::CTessFace::heritTileMaterial (  )  [private]
void NL3D::CTessFace::heritTileUv ( CTessFace baseFace  )  [private]
void NL3D::CTessFace::initTileUvDLM ( CParamCoord  pointCoord,
CUV uv 
) [private]
void NL3D::CTessFace::initTileUvLightmap ( CParamCoord  pointCoord,
CParamCoord  middleCoord,
CUV uv 
) [private]
void NL3D::CTessFace::initTileUvRGBA ( sint  pass,
bool  alpha,
CParamCoord  pointCoord,
CParamCoord  middleCoord,
CUV uv 
) [private]
bool NL3D::CTessFace::isLeaf (  )  const [inline]
bool NL3D::CTessFace::isRectangular (  )  const
CTessFace * NL3D::CTessFace::linkTessFaceWithEdge ( const NLMISC::CVector2f uv0,
const NLMISC::CVector2f uv1,
CTessFace linkTo 
)
bool NL3D::CTessFace::merge (  ) 
void NL3D::CTessFace::recreateTileUvs (  ) 
void NL3D::CTessFace::refineAll (  ) 
void NL3D::CTessFace::refreshTesselationGeometry (  ) 
void NL3D::CTessFace::releaseTileMaterial (  ) 
static bool NL3D::CTessFace::sameTile ( const CTessFace a,
const CTessFace b 
) [inline, static, private]

Definition at line 366 of file tessellation.h.

References Patch, and TileId.

Referenced by deleteTileUvs(), doMerge(), and heritTileMaterial().

void NL3D::CTessFace::split ( bool  propagateSplit = true  ) 
void NL3D::CTessFace::splitRectangular ( bool  propagateSplit  )  [private]
void NL3D::CTessFace::unbind (  ) 
void NL3D::CTessFace::updateBind (  ) 
void NL3D::CTessFace::updateBindAndSplit (  ) 
bool NL3D::CTessFace::updateBindEdge ( CTessFace *&  edgeFace,
bool splitWanted 
)

Definition at line 2539 of file tessellation.cpp.

References FBase, FLeft, FRight, isLeaf(), isRectangular(), nlstop, Patch, SonLeft, and SonRight.

Referenced by updateBind(), and updateBindAndSplit().

void NL3D::CTessFace::updateErrorMetric (  ) 
void NL3D::CTessFace::updateNearFarVertices (  )  [private]
void NL3D::CTessFace::updateRefineMerge (  ) 
void NL3D::CTessFace::updateRefineSplit (  ) 

Member Data Documentation

Definition at line 271 of file tessellation.h.

Referenced by CTessFace(), and updateErrorMetric().

Definition at line 241 of file tessellation.h.

Referenced by CTessFace(), doMerge(), split(), and splitRectangular().

Definition at line 275 of file tessellation.h.

Referenced by computeSplitPoint(), and updateErrorMetric().

Definition at line 437 of file tessellation.h.

Referenced by NL3D::CPatch::bind(), and updateBindAndSplit().

Definition at line 247 of file tessellation.h.

Referenced by canMerge(), and CTessFace().

Definition at line 248 of file tessellation.h.

Referenced by CTessFace(), and forceMerge().

CTileFace* NL3D::CTessFace::TileFaces[NL3D_MAX_TILE_FACE]

Definition at line 255 of file tessellation.h.

Referenced by computeTileMaterial(), heritTileMaterial(), initTileUvRGBA(), and sameTile().


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

Generated on Thu Jan 7 08:30:11 2010 for NeL by  doxygen 1.6.1