MapExtractor Class Reference

MapExtractor Class Reference

#include <MapExtractorInterface.h>

Class Description

This is the cental modul for map extraction, this node controls the map extraction process by communicating with the different modules.

The map extraction is done in the following steps:

  • The map extraction node calls the ProcessSurface function of the layout module, and passes the address of the current target mesh to it.
  • The layout module collects surface points on the target mesh, fills a TargetLocation structure for each of those points, and calls the map extractor modules ProcessSurfacePoint function for each of them separately.
  • The map extraction module then uses the locator module to find a point on the source meshes which belongs to the specified target point by calling the LocateSurfacePoint function. The locator module fills a SurfacePoint structure with the requested information.
  • The map extraction module uses all the enabled sampler modules to calculate data for the given target-source surface point pair. It passes both the target and the source point location as a parameter to the ProcessSurfacePoint function of the samplers. If there are any Gate modules attached to the given sampler, they are all called in the given order, and they can convert the data in any way they like. The returned data is then passed to the utilizer modules, which does something with the data. In most cases the utilizer modules need additional information about the current target-source surface point pair, which is specific to the type of the layout module. The TargetLocation structure has some generic data fields where the layout module can put additional information, which can be later used by the utilized module to know how to use the result (for example in case of traditional map extraction, the x and y coordinates of the current point is stored in that area).

Note that the map extractor does not process the locations immediately, it collects the target locations specified by the layout in a temporary array, and sometimes it flushes that array by processing all the locations. This processing is done in two steps, first the map extraction node uses the locator module to find the corresponting surface points on the source surfaces, and then it processes these target-source pairs by calling the correspontind functions in the samplers and utilizers. This way the samplers can do preprocession on the target-source location collection if that makes the work easier for them (for example the AO baking sampler uses the GPU to calculate the needed data, so it cannot process the target-source location pairs one by one). The layout node can ask the map extractor to flush these buffers by calling the function Flush.

A full map extraction process consist of the following modules:

  • Main map extractor node: it controls the whole extraction process. Any plugin can create a map extraction node, set different parameters for it, and then call the Execute function which will perform the operation.
  • Layout module: this module is used to collect points on the target surface. The map extraction will calculate data for each of these points on the target surface. For example in regular texture map extraction the layout node collects surface locations on the target meshes which are belongs to a texel on the texture.
  • Locator module: this module is used by the map extractor to find the surface point on the source mesh which belongs to a given surface point on the target mesh (see class Locator). For example in case of arbitrary meshes, the locator object usually fires rays at the target surface location, and calculates intersection between the ray and the source meshes.
  • Sampler modules: these modules are used to calculate different kind of data for target-source surface point pairs. The data is represented as a color. This data is then passed to the utilized modules. For example the displacement sampler simly calculates the distance between the target and source locations in the target normal vector direction.
  • Utilizer modules: each sampler has a correspoding utilizer module attached. The utilized module takes the data which comes from the sampler and does something with it, for example stores the data in a file. The utilizers are usually comunicating with the layout module to obtain information about the current target-source surface point pair. For this reason, the type of the layout module is controlled by the utilizers. All the samplers must use the same type of utilizer. For example in traditional texture map extraction the utilizers are writing the data which comes from the samplers into image files.
+ Examples:

Definition at line 64 of file MapExtractorInterface.h.

+ Inheritance diagram for MapExtractor:

Additional Inherited Members

- Public Types inherited from Node
enum  DiagnosticLevel { dgnLevel1, dgnLevel2, dgnLevel3 }
 Indicates the level of validity checking that is performed in CheckValidity() More...
 
- Public Member Functions inherited from TreeNode
 TreeNode (void)
 
 ~TreeNode (void)
 
virtual void Serialize (Stream &s)
 Serializes the node. More...
 
virtual void AddChild (TreeNode *pChild, bool bFirst=false) const
 Adds a node/subtree to the list of children. The added node will be removed from the current parent if it has one. More...
 
virtual void RemoveChild (TreeNode *pChild) const
 Removes a node/subtree from the list of children. More...
 
virtual TreeNodeFirstChild (void) const
 Returns the first node from the child list. More...
 
virtual TreeNodeParent (void) const
 Returns the parent node. More...
 
virtual TreeNodeNextSibling (void) const
 Returns the next linked node with the same parent. More...
 
virtual TreeNodePrevSibling (void) const
 Returns the previous linked node with the same parent. More...
 
virtual void MoveChild (TreeNode *pChild, TreeNode *pAfter)
 Moves the child after the given node in order. More...
 
virtual TreeNodeChildByClass (const ClassDesc *pClass, bool bAutoCreate=true) const
 Returns the first child with the specified type. When the bAutoCreate parameter is true and such a child does not exists, it creates it with the preferred descedant type. More...
 
template<typename type >
typeChildByClass (bool bAutoCreate=true) const
 Same as above, a most confortable version. More...
 
virtual TreeNodeChildByClass (const ClassDesc *pClass, unsigned int iIndex=0) const
 Returns the first child with the specified type, or returns zero if no child found. More...
 
template<typename type >
typeChildByClass (unsigned int iIndex=0) const
 Same as above, a most confortable version. More...
 
virtual void DeleteChildByClass (const ClassDesc *pClass)
 Deletes all child which is derived from a specific class. More...
 
virtual QString Info (void) const
 Returns descriptive information about the node. More...
 
virtual bool Visible (void) const
 Returns if the node is visible. Should be overridden in derived classes. More...
 
virtual void SetVisible (bool b)
 Sets the node visibility Should be overridden in derived classes. More...
 
virtual bool Locked (void) const
 Returns if the node is locked. Should be overridden in derived classes. More...
 
virtual void SetLocked (bool b)
 Sets the locking of the node. Should be overridden in derived classes. More...
 
virtual bool HiddenFromUI (void) const
 Returns true if the node cannot be seen from UI. More...
 
virtual void SetHiddenFromUI (bool b)
 Sets visibility in UI. More...
 
virtual void OnLinked (const TreeNode *pOldParent)
 This function is called then the node is linked to a new parent. More...
 
virtual void CheckValidity (Node::DiagnosticLevel iLevel=dgnLevel2) const
 See the documentation for Node::CheckValidity. More...
 
QString UniqueChildName (const TreeNode *pChild, const QString &sPrefix="") const
 Finds a node name that is unique among the children of this node. More...
 
virtual void SetStringID (const QString &sName)
 This method does the same thing as Node::SetStringID, except it ensures the name is unique among this node's siblings. More...
 
virtual void CopyTo (Node *pNode) const
 
- Public Member Functions inherited from Node
 Node (const QString &sStringID="", const QString &sDisplayName="")
 Standard constructor. More...
 
virtual ~Node (void)
 
virtual void Initialize (void)
 
void LoadTemplate (const QString &sFileName="", bool bStartEvent=false)
 Use an external XML file to initialize the attributes. More...
 
void SaveTemplate (const QString &sFileName="", bool bSaveOnlyVisible=false)
 Save current attributes as an XML template. More...
 
unsigned int Version (void) const
 Returns the current version of the node. This number increases when the content of the node changed (when ContentChanged() called). More...
 
void SetVersion (unsigned int iVersion)
 Sets the current version number for the node. More...
 
unsigned int ReferenceCount (void) const
 Returns the number of pointers referencing this node. More...
 
AttributeReferencePointer (unsigned int iIndex) const
 Returns the address of an attribute which refers to this node. The type of the attribute is always aptr. More...
 
NodeReferenceNode (unsigned int iIndex) const
 Returns the address of a node referencing this node. More...
 
virtual QString Name (const ClassDesc *pClass=0) const
 Deprecated. More...
 
virtual void SetName (const QString &sName)
 Deprecated. More...
 
virtual QString StringID (const ClassDesc *pClass=0) const
 Returns the string id of the node. More...
 
virtual QString DisplayName (void) const
 Returns the display name of the node. More...
 
virtual void SetDisplayName (const QString &sDisplayName)
 Sets the display name of the node. More...
 
virtual QString HelpID (void) const
 Returns the help entry id of the node. Can be overwritten in derived classes. More...
 
virtual void SetHelpID (const QString &sHelpID)
 Sets the help entry id of the node. More...
 
void Annex (Node *pSource, const QString &sCategory="")
 Relink all the attributes of the source node to this one. More...
 
bool IsKindOf (const ClassDesc *pClass) const
 Returns true if this node is derived from the pClass class. More...
 
void ContentChanged (void) const
 This function must be called if the content of the node is changed. More...
 
virtual NodeDuplicate (void) const
 
virtual void OnNodeEvent (const Attribute &cAttribute, NodeEventType cType)
 This function is called if an event occurs with any of the attributes of the node. More...
 
virtual void OnEvent (const EventGate &cEvent)
 This function is called when a generic event occurs. See EventGate class. More...
 
void RequestDeferredEvent (Attribute &cAttribute)
 Request for a deferred event, which will occur only in the main loop. More...
 
unsigned int AttributeCount (void) const
 Returns the number of attributes owned by the node. More...
 
AttributeAttributeByIndex (int iIndex) const
 Returns a specified attribute (or 0 if iIndex is greater than the number of attributes). More...
 
AttributeAttributeByName (const QString &sName) const
 Returns a specified attribute by its name. Returns 0 if the attribute not found. More...
 
AttributeAttributeByID (const QString &sID) const
 Returns a specified attribute by its ID. Returns 0 if the attribute not found. More...
 
void SetAttributeValue (const QString &sAttributeID, const QString &sNewValue)
 Set the value of an attribute from a string. More...
 
QString AttributeValue (const QString &sAttributeID) const
 Returns the current value of an attribute as a string. More...
 
void LogAttributes (void) const
 Write all attributes into the log file. More...
 
virtual QWidgetCreatePropertiesWindow (QWidget *pParent)
 Create a window which displays the attributes of the node. Can be overriden to provide a custom interface. More...
 
AttributeAddAttribute (Attribute::AttributeType type, const QString &id)
 Allows SDK users to add attributes at runtime. More...
 
NodeNext (void) const
 Returns the next node in the chain. Used to enumerate the current nodes. See also First(). More...
 
int ID (void) const
 Returns an ID for the node. The ID is unique in the whole application life. More...
 
bool SetID (int iID)
 Set ID for the node. More...
 
- Static Public Member Functions inherited from Node
static void StartHashing ()
 This is called once in main once static ctors are done. More...
 
static NodeFirst (void)
 This function will return the first node in the memory. Used to enumerate all the current nodes. See also Next(). More...
 
static NodeByID (int iID)
 Returns the node with the specified ID, or zero if such a node does not exists. More...
 
static NodeByName (const QString &sClass, const QString &sName)
 Search for a node with the name sName. More...
 
- Public Attributes inherited from TreeNode
 DECLARE_CLASS
 
- Public Attributes inherited from Node
AttributeThisPointer m_pThis
 
 DECLARE_CLASS
 

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