|
|
|
|
Documentation |
|
Main Page Namespace List Class Hierarchy Alphabetical List Compound List File List Namespace Members Compound Members File Members Related Pages Search
NL3D::CTessFace Class ReferenceA Landscape Triangle.
More...
#include <tessellation.h>
Inheritance diagram for NL3D::CTessFace:
List of all members.
Tile Material Infos (uvs...). |
enum | TTileUvId { IdUvBase = 0,
IdUvLeft,
IdUvRight
} |
uint8 | TileId |
CTileMaterial * | TileMaterial |
CTileFace * | TileFaces [NL3D_MAX_TILE_FACE] |
Public Types |
Public Methods |
| 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. More...
|
void | updateRefineSplit () |
void | updateRefineMerge () |
void | computeSplitPoint () |
| compute the SplitPoint. More...
|
void | unbind () |
void | forceMerge () |
CTessFace * | linkTessFaceWithEdge (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 |
CTessFarVertex * | FVBase |
CTessFarVertex * | FVLeft |
CTessFarVertex * | FVRight |
|
CPatch * | Patch |
CTessVertex * | VBase |
CTessVertex * | VLeft |
CTessVertex * | VRight |
CTessFace * | FBase |
CTessFace * | FLeft |
CTessFace * | FRight |
CTessFace * | Father |
CTessFace * | SonLeft |
CTessFace * | SonRight |
CParamCoord | PVBase |
CParamCoord | PVLeft |
CParamCoord | PVRight |
uint8 | Level |
bool | RecursMarkCanMerge |
bool | RecursMarkForceMerge |
|
sint | ErrorMetricDate |
float | Size |
CVector | SplitPoint |
float | ErrorMetric |
float | MaxDistToSplitPoint |
Static Public Attributes |
CTessFace | MultipleBindFace |
Private Methods |
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) |
|
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 Methods |
bool | sameTile (const CTessFace *a, const CTessFace *b) |
Static Private Attributes |
CTessFace | CantMergeFace |
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 214 of file tessellation.h.
Member Enumeration Documentation
enum NL3D::CTessFace::TTileUvId
|
|
|
-
Enumeration values:
-
IdUvBase |
|
IdUvLeft |
|
IdUvRight |
|
Definition at line 245 of file tessellation.h. |
Constructor & Destructor Documentation
NL3D::CTessFace::CTessFace |
( |
|
) |
|
|
|
Definition at line 161 of file tessellation.cpp.
References ErrorMetricDate, Father, FBase, FLeft, FRight, Level, NL3D_MAX_TILE_FACE, NL3D_PROFILE_LAND_ADD, Patch, NL3D::ProfNTessFace, RecursMarkCanMerge, RecursMarkForceMerge, SonLeft, SonRight, TileFaces, TileMaterial, VBase, VLeft, and VRight.
Referenced by averageTesselationVertices, changeNeighbor, linkTessFaceWithEdge, sameTile, split, splitRectangular, unbind, updateBindAndSplit, and updateBindEdge. |
NL3D::CTessFace::~CTessFace |
( |
|
) |
|
|
Member Function Documentation
void NL3D::CTessFace::allocTileUv |
( |
TTileUvId |
id |
) |
[private] |
|
|
Definition at line 367 of file tessellation.cpp.
References id, IdUvBase, IdUvLeft, IdUvRight, NL3D_MAX_TILE_FACE, NL3D_TILE_PASS_RGB0, nlassert, nlstop, Patch, TileFaces, TileMaterial, VBase, VLeft, and VRight.
Referenced by computeTileMaterial. |
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] |
|
|
Definition at line 1544 of file tessellation.cpp.
References CantMergeFace, ErrorMetric, FBase, FLeft, isLeaf, isRectangular, nlassert, RecursMarkCanMerge, SonLeft, SonRight, and updateErrorMetric.
Referenced by merge, refineAll, and updateRefineMerge. |
void NL3D::CTessFace::changeNeighbor |
( |
CTessFace * |
from, |
|
|
CTessFace * |
to |
|
) |
[inline] |
|
void NL3D::CTessFace::checkCreateFillTileVB |
( |
TTileUvId |
id |
) |
[private] |
|
void NL3D::CTessFace::checkFillTileVB |
( |
TTileUvId |
id |
) |
[private] |
|
float NL3D::CTessFace::computeNearLimit |
( |
|
) |
|
|
void NL3D::CTessFace::computeSplitPoint |
( |
|
) |
|
|
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 |
( |
|
) |
|
|
|
Definition at line 670 of file tessellation.cpp.
References allocTileUv, buildTileFaces, checkCreateFillTileVB, copyTileUv, FBase, IdUvBase, IdUvLeft, IdUvRight, initTileUvDLM, initTileUvLightmap, initTileUvRGBA, NL3D_MAX_TILE_FACE, NL3D_MAX_TILE_PASS, NL3D_TILE_PASS_ADD, NL3D_TILE_PASS_LIGHTMAP, NL3D_TILE_PASS_RGB0, NL3D_TILE_PASS_RGB1, NL3D_TILE_PASS_RGB2, nlassert, Patch, PVBase, PVLeft, PVRight, TileFaces, TileId, and TileMaterial. |
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] |
|
|
Definition at line 1599 of file tessellation.cpp.
References Father, FBase, FLeft, FRight, IdUvBase, isLeaf, isRectangular, nlassert, Patch, sameTile, SonLeft, and SonRight.
Referenced by merge. |
bool NL3D::CTessFace::emptyTileFaces |
( |
|
) |
[private] |
|
void NL3D::CTessFace::forceMerge |
( |
|
) |
|
|
void NL3D::CTessFace::forceMergeAtTileLevel |
( |
|
) |
|
|
void NL3D::CTessFace::getTesselatedPos |
( |
const CUV & |
uv, |
|
|
bool |
verifInclusion, |
|
|
CVector & |
ret |
|
) |
|
|
bool NL3D::CTessFace::hasVertex |
( |
CTessVertex * |
v |
) |
const [inline] |
|
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] |
|
|
Definition at line 273 of file tessellation.h.
Referenced by appendTessellationLeaves, averageTesselationVertices, canMerge, deleteTileUvs, doMerge, forceMerge, forceMergeAtTileLevel, getTesselatedPos, linkTessFaceWithEdge, merge, recreateTileUvs, refineAll, refreshTesselationGeometry, split, unbind, updateBind, updateBindAndSplit, updateRefineMerge, and updateRefineSplit. |
bool NL3D::CTessFace::isRectangular |
( |
|
) |
const |
|
|
Definition at line 2899 of file tessellation.cpp.
References CTessFace, FBase, FLeft, FRight, isLeaf, NL3D::matchEdge, nlassert, PVBase, PVLeft, PVRight, SonLeft, and SonRight. |
bool NL3D::CTessFace::merge |
( |
|
) |
|
|
void NL3D::CTessFace::recreateTileUvs |
( |
|
) |
|
|
void NL3D::CTessFace::refineAll |
( |
|
) |
|
|
|
refine the node, and his sons. Refine all nodes.
Definition at line 1778 of file tessellation.cpp.
References canMerge, ErrorMetric, isLeaf, Level, merge, NL3D_PROFILE_LAND_ADD, Patch, NL3D::ProfNRefineComputeFaces, NL3D::ProfNRefineFaces, NL3D::ProfNRefineLeaves, SonLeft, SonRight, split, and updateErrorMetric. |
void NL3D::CTessFace::refreshTesselationGeometry |
( |
|
) |
|
|
void NL3D::CTessFace::releaseTileMaterial |
( |
|
) |
|
|
bool NL3D::CTessFace::sameTile |
( |
const CTessFace * |
a, |
|
|
const CTessFace * |
b |
|
) |
[inline, static, private] |
|
void NL3D::CTessFace::split |
( |
bool |
propagateSplit = true |
) |
|
|
|
Definition at line 1278 of file tessellation.cpp.
References computeNearLimit, CTessFace, Father, FBase, FLeft, FRight, FVBase, FVLeft, FVRight, heritTileMaterial, IdUvBase, isLeaf, isRectangular, Level, NL3D_PROFILE_LAND_ADD, nlassert, Patch, NL3D::ProfNSplits, PVBase, PVLeft, PVRight, Size, SonLeft, SonRight, splitRectangular, VBase, VLeft, and VRight.
Referenced by refineAll, updateBindAndSplit, and updateRefineSplit. |
void NL3D::CTessFace::splitRectangular |
( |
bool |
propagateSplit |
) |
[private] |
|
void NL3D::CTessFace::unbind |
( |
|
) |
|
|
|
Definition at line 2269 of file tessellation.cpp.
References computeNearLimit, CTessFace, FBase, FLeft, FRight, isLeaf, isRectangular, nlassert, Patch, Size, SonLeft, SonRight, VBase, VLeft, and VRight. |
void NL3D::CTessFace::updateBind |
( |
|
) |
|
|
void NL3D::CTessFace::updateBindAndSplit |
( |
|
) |
|
|
|
Definition at line 2638 of file tessellation.cpp.
References CantMergeFace, CTessFace, FBase, FLeft, FRight, isLeaf, isRectangular, nlassert, Patch, SonLeft, SonRight, split, and updateBindEdge.
Referenced by updateBind. |
bool NL3D::CTessFace::updateBindEdge |
( |
CTessFace *& |
edgeFace, |
|
|
bool & |
splitWanted |
|
) |
|
|
void NL3D::CTessFace::updateErrorMetric |
( |
|
) |
|
|
|
Definition at line 273 of file tessellation.cpp.
References computeTileErrorMetric, ErrorMetric, ErrorMetricDate, Level, MaxDistToSplitPoint, Patch, Size, SplitPoint, and NLMISC::sqr.
Referenced by canMerge, refineAll, updateRefineMerge, and updateRefineSplit. |
void NL3D::CTessFace::updateNearFarVertices |
( |
|
) |
[private] |
|
|
Definition at line 868 of file tessellation.cpp.
References FVBase, FVLeft, FVRight, IdUvBase, IdUvLeft, IdUvRight, NL3D_MAX_TILE_FACE, nlassert, Patch, PVBase, PVLeft, PVRight, TileFaces, VBase, VLeft, and VRight. |
void NL3D::CTessFace::updateRefineMerge |
( |
|
) |
|
|
|
Definition at line 2103 of file tessellation.cpp.
References canMerge, computeNearLimit, computeTileEMForUpdateRefine, ErrorMetric, isLeaf, Level, merge, min, NL3D_PROFILE_LAND_ADD, NL3D_REFINE_MERGE_THRESHOLD, nlassert, Patch, NL3D::ProfNRefineFaces, NL3D::ProfNRefineInTileTransition, Size, SplitPoint, updateErrorMetric, VBase, VLeft, and VRight. |
void NL3D::CTessFace::updateRefineSplit |
( |
|
) |
|
|
|
Definition at line 1895 of file tessellation.cpp.
References computeNearLimit, computeTileEMForUpdateRefine, ErrorMetric, isLeaf, Level, min, NL3D_PROFILE_LAND_ADD, NL3D_TESS_USE_QUADRANT_THRESHOLD, nlassert, Patch, NL3D::ProfNRefineFaces, NL3D::ProfNRefineInTileTransition, NL3D::ProfNRefineWithLowDistance, Size, split, SplitPoint, NL3D::CTessFacePListNode::unlinkInPList, updateErrorMetric, VBase, VLeft, and VRight. |
Member Data Documentation
CTessFace NL3D::CTessFace::CantMergeFace [static, private]
|
|
float NL3D::CTessFace::ErrorMetric
|
|
sint NL3D::CTessFace::ErrorMetricDate
|
|
CTessFace* NL3D::CTessFace::Father
|
|
CTessFace* NL3D::CTessFace::FBase
|
|
|
Definition at line 223 of file tessellation.h.
Referenced by averageTesselationVertices, canMerge, computeTileMaterial, CTessFace, deleteTileUvs, doMerge, forceMerge, heritTileMaterial, linkTessFaceWithEdge, releaseTileMaterial, split, splitRectangular, unbind, updateBind, and updateBindAndSplit. |
CTessFace * NL3D::CTessFace::FLeft
|
|
CTessFace * NL3D::CTessFace::FRight
|
|
uint8 NL3D::CTessFace::Level
|
|
float NL3D::CTessFace::MaxDistToSplitPoint
|
|
CTessFace NL3D::CTessFace::MultipleBindFace [static]
|
|
CPatch* NL3D::CTessFace::Patch
|
|
|
Definition at line 221 of file tessellation.h.
Referenced by allocTileUv, averageTesselationVertices, buildTileFaces, checkCreateFillTileVB, checkFillTileVB, computeNearLimit, computeTileMaterial, CTessFace, deleteTileFaces, deleteTileUv, deleteTileUvs, doMerge, forceMergeAtTileLevel, initTileUvDLM, initTileUvLightmap, initTileUvRGBA, isRectangular, recreateTileUvs, refineAll, refreshTesselationGeometry, releaseTileMaterial, split, splitRectangular, unbind, updateBindAndSplit, updateErrorMetric, updateNearFarVertices, updateRefineMerge, and updateRefineSplit. |
bool NL3D::CTessFace::RecursMarkCanMerge
|
|
bool NL3D::CTessFace::RecursMarkForceMerge
|
|
float NL3D::CTessFace::Size
|
|
CTessFace * NL3D::CTessFace::SonLeft
|
|
|
Definition at line 224 of file tessellation.h.
Referenced by appendTessellationLeaves, averageTesselationVertices, canMerge, CTessFace, deleteTileUvs, doMerge, forceMerge, forceMergeAtTileLevel, getTesselatedPos, heritTileMaterial, linkTessFaceWithEdge, recreateTileUvs, refineAll, refreshTesselationGeometry, split, unbind, updateBind, and updateBindAndSplit. |
CTessFace * NL3D::CTessFace::SonRight
|
|
|
Definition at line 224 of file tessellation.h.
Referenced by appendTessellationLeaves, averageTesselationVertices, canMerge, CTessFace, deleteTileUvs, doMerge, forceMerge, forceMergeAtTileLevel, getTesselatedPos, heritTileMaterial, linkTessFaceWithEdge, recreateTileUvs, refineAll, refreshTesselationGeometry, split, unbind, updateBind, and updateBindAndSplit. |
CVector NL3D::CTessFace::SplitPoint
|
|
CTileFace* NL3D::CTessFace::TileFaces[NL3D_MAX_TILE_FACE]
|
|
|
Definition at line 242 of file tessellation.h.
Referenced by allocTileUv, buildTileFaces, checkCreateFillTileVB, checkFillTileVB, computeTileMaterial, copyTileUv, CTessFace, deleteTileFaces, deleteTileUv, emptyTileFaces, heritTileUv, and updateNearFarVertices. |
uint8 NL3D::CTessFace::TileId
|
|
The documentation for this class was generated from the following files:
|
|