Terra 1.0
|
The blending node in the ArchesTree model. More...
#include <archestree.h>
Public Member Functions | |
TerraBlend (QVector< TerraNode * >) | |
Create a blending node. | |
TerraBlend (TerraNode *, TerraNode *, TerraNode *=nullptr, TerraNode *=nullptr) | |
Create a blending node. | |
~TerraBlend () | |
Empty. | |
virtual ScalarAlpha | ElevationAlpha (const Vector2 &) const |
Compute the weight and the height of a given point in the plane. | |
virtual void | Draw (QGraphicsScene &) const |
Draw the sub-tree. | |
virtual int | Traversal (const Vector2 &) const |
Compute the number of nodes that are traversed when evaluating the tree. | |
virtual void | writeJson (QJsonObject &) |
Compute the Json Document of the subtree. | |
![]() | |
TerraOperator (const QVector< TerraNode * > &) | |
Create a generic operator. | |
TerraOperator (TerraNode *, TerraNode *=nullptr, TerraNode *=nullptr, TerraNode *=nullptr) | |
Create a node with several children nodes. | |
~TerraOperator () | |
Recursively destroys the complete sub-tree. | |
virtual int | Memory () const |
Compute the size of a node. | |
![]() | |
TerraNode (const Box2 &=Box2::Infinity) | |
Create a node. | |
virtual Box2 | GetBox () const |
Returns the bouding box of a node. | |
virtual double | Elevation (const Vector2 &) const |
Compute the elevation at a given position. | |
virtual double | Alpha (const Vector2 &) const |
Compute the alpha mask at a given position. | |
virtual Vector2 | Gradient (const Vector2 &) const |
Compute the gradient at a given position. | |
virtual Vector | Normal (const Vector2 &) const |
Compute the normal at a given position. | |
ScalarField2 | Sample (const Array2 &) const |
Create a discrete scalar field by sampling the elevation over a given domain. | |
ScalarField2 | Alpha (const Array2 &) const |
Create a discrete scalar field by sampling the elevation over a given domain. | |
void | Blend (HeightField &) const |
Blend a given node with an existing terrain over an input heightfield. | |
void | Add (HeightField &) const |
Add a given node with an existing heightfield. | |
Additional Inherited Members | |
![]() | |
QVector< TerraNode * > | nodes |
Array of nodes that will be combined. | |
![]() | |
Box2 | box = Box2::Infinity |
Bounding box. | |
![]() | |
static const double | epsilon = 1e-2 |
Epsilon value for gradient computations. | |
The blending node in the ArchesTree model.
The blending node computes the weighted average of the children nodes.
Whenever many primitives need to be blended together, it may be more efficient to use the ArchesBlendGrid node that uses a loose grid to speed up computations.
|
explicit |
Create a blending node.
v | Argument children. |
References TerraOperator::TerraOperator().
Referenced by TerraBlendGrid::TerraBlendGrid().
TerraBlend::TerraBlend | ( | TerraNode * | a, |
TerraNode * | b, | ||
TerraNode * | c = nullptr, | ||
TerraNode * | d = nullptr ) |
Create a blending node.
a,b,c,d | Argument children. |
References TerraOperator::TerraOperator().
|
virtual |
Compute the weight and the height of a given point in the plane.
p | Point. |
Reimplemented from TerraNode.
Reimplemented in TerraBlendGrid.
References ScalarAlpha::Alpha(), TerraNode::box, TerraOperator::nodes, and ScalarAlpha::Value().
|
virtual |
Compute the number of nodes that are traversed when evaluating the tree.
p | Point. |
Reimplemented from TerraNode.
References TerraNode::box, and TerraOperator::nodes.