The MaterialTool node lets you define material and uv mapping preferences for nodes that it is fed into. It can also add data for the physical behavior of objects generated if they have Rigidbodies added.

The MaterialTool serves a double purpose. It carries object references to an AXMaterial object and to an AXTexCoords object. The AXMaterial object is necessary for adding rendering and physics components for the GameObjects the connected node generates, and the AXTexCoords parameters for texture shifting and scaling data used for the generation of UV coordinates in the connected node’s mesh.

When a MaterialTool is fed into a node, it can override either that node’s material or texture coordinates references, which would otherwise be pointing to downstream nodes or the model itself. Whatever has been selected for override, material or texture coordinate choices, the reference to that material or texture coordinates object will ripple through any upstream nodes that do not have a MaterialTool node of their own.

The diagram below illustrates the common case where the MaterialTool is overriding the ParametricObject’s AXTexCoords while the AXMaterial for the ParametricObject is still referencing the Model’s default AXMaterial.






It is not uncommon to have all the nodes in a model refer  to the model’s AXMaterial. For example, in a model that creates a castle made of stone, the AXMaterial for this stone may make sense for all the meshes the model generates.

An AXMaterial may be thought of as having an aesthetic (the Unity Material it references) and a behavior (the density and Unity PhysicMaterial referenced). So, for example, you may have an AXMaterial of limestone which would use a limestone texture, have a certain PhysicMaterial and a density set that determines the Rigidbody mass depending on the size of the meshes generated.