In brief
- Material Functions let you reuse parts of a material graph across different materials.
- Material Parameter Collections can provide shared scalar and vector values to multiple materials.
- A material can reference up to two different Material Parameter Collections.
- Pivot Painter can add real-time motion to foliage using a model’s pivot and rotation data.
This guide brings together the Material Function, Material Parameter Collection, and Pivot Painter workflows described in the official documentation for Unreal Engine 4.27. The aim is to organize material editing in architectural visualization and real-time scenes by managing shared values through reusable components rather than changing them on individual objects. The steps below are limited to the tools and values described in the documentation.
1. Move repeated graphs into a Material Function
In the Content Browser, right-click and select
New › Materials & Textures › Material Functionto create a Material Function. Give it a descriptive name to make it easier to find in the project.Open the function and add the required nodes to the graph. The documentation’s Fresnel example uses Constant 3 Vector, Vector Transform, Dot Product, Camera Vector WS, Clamp, OneMinus, Power, and Multiply nodes.
In the example function, the blue channel of the Constant 3 Vector node is set to
1.0, while Vector Transform converts from Tangent Space to World Space. The Dot Product result is clamped between0and1, then inverted with OneMinus.Use Function Input nodes to define values that can be changed externally. The documentation’s example connects the
Fresnel ExponentandFresnel Intensityinputs to the Power and Multiply nodes. Connect the result to Output Result, then compile with Apply.
The main benefit of a Material Function is that it reduces the need to rebuild a shared part of a graph for different materials. This can make it easier to update surfaces with the same visual behavior and maintain consistency across material production. However, take care when editing a function: the documentation warns that an error or the removal of functionality in a function can break the materials that depend on it.
2. Add the function to a material and verify the result
Create a new Material in the Content Browser and drag the Material Function into its graph.
Connect the function’s inputs to the relevant parameters in the material. In the Fresnel example, the function output is connected to Emissive Color, while Constant 3 Vector is connected to Base Color.
Starting with the example values can help confirm that the graph works as expected. The example settings from the official documentation are listed in the table below.
Compile the material and test it on a mesh in the scene. If a function is also used by other materials, an edit may affect multiple assets; review the dependent materials before applying changes to the project.
| Setting | Example value | Effect |
|---|---|---|
| Base Color in the Fresnel example | R: 1.0, G: 0, B: 0 | Sets the base color of the example material in the documentation. |
| Metallic | 1.0 | The metallic value for the example material. |
| Roughness | 0.5 | The roughness value for the example material. |
| Fresnel Intensity | 1.0 | An example input that controls the strength of the Fresnel effect. |
| Fresnel Exponent | 5.0 | An example input that controls how the effect is distributed near the edges. |
| Material Parameter Collection capacity | Up to 1024 scalar and 1024 vector parameters | The documented upper limit for each collection. |
These values should be treated as an example setup from the Unreal Engine 4.27 documentation, not as universal settings guaranteed to deliver the best results in every project.
3. Manage shared values with a Material Parameter Collection
In the Content Browser, right-click and select
Materials & Textures › Material Parameter Collectionto create a collection.Open the collection and add parameters under Scalar Parameters or Vector Parameters. Give each parameter a name and a default value.
Add a Material Collection Parameter node to the material graph to use a value from the collection. In the official example, a scalar parameter named
Global_Desaturationis connected to the Fraction input of a Desaturation node.Changing the value from 0 to 1 demonstrates the shared control that changes the color of objects using this material in the example. Values can also be changed through Blueprint; the documentation uses a
Set Scalar Parameter Valuenode and a Timeline. The Timeline’s Float Track has two keys: a value of 0 at time 0 and a value of 1 at time 1.
A material can reference up to two different Material Parameter Collections. The documentation notes that one collection can be used for global values and the other for level-specific values. Changing the number of parameters causes materials that reference the collection to recompile; if you need many parameters, adding them all at the start in an empty map may be faster. Renaming a parameter preserves material references, but can break a Blueprint connection that uses that name.
4. Consider Pivot Painter for foliage
Pivot Painter is a MAXScript that stores a model’s pivot and rotation information in vertex data in 3ds Max. Unreal materials can read this data to create real-time motion for branches, leaves, or grass. The official documentation states that the motion is calculated in vertex shaders and that the model’s memory footprint is 18 percent larger than that of a standard Static Mesh.
When preparing a model, check the position of its rotation pivot and the orientation of its axes. For example, the documentation explains that if a grass blade should rotate from its base, the pivot needs to be at the base and the X axis should run along the model’s length. Models that require a hierarchy, such as trees, should be processed with Hierarchy Painter, while independent grass pieces should use Per Object Painter; the two should not be used together on the same model. Choose the material function that matches the processed data: PivotPainter_HierarchyData for Hierarchy Painter and PivotPainter_PerObjectData for Per Object Painter.
The documentation says the script was tested in 3ds Max 2010 and 2012. It also requires 3ds Max world units to be set to centimeters and the scale to remain unchanged during export. The Pivot Painter page also notes that version 2.0 offers a streamlined workflow for interactive foliage.
Impact on architectural and visualization workflows
In interior and architectural scenes where many surfaces share parameters, Material Functions can help reuse common graph structures, while Material Parameter Collections can change global or level-specific values together. When the same visual control is needed across multiple materials, a shared parameter approach may be worth considering instead of editing each material individually. The documentation says this is more efficient than assigning values separately to different material instances.
For real-time presentations with foliage, Pivot Painter can be considered as an option that calculates motion at runtime rather than storing skeletal animations. Teams should still verify compatibility in advance: the documentation refers to Unreal Engine 4.27, while the script was tested in 3ds Max 2010 and 2012. Model scale, pivot placement, hierarchy selection, and Blueprint parameter names should also be checked before delivery.
Common mistakes
Using both Hierarchy Painter and Per Object Painter on the same model.
Changing the centimeter units in 3ds Max or the scale during export.
Renaming a Material Parameter Collection parameter without updating the Parameter Name connection in Blueprint.
Overlooking the potential impact on dependent materials when editing a Material Function in use.
Failing to account for the recompilation of dependent materials when adding many parameters.
Sources
3 sourcesSource texts are not republished; short quotes are marked, everything else is our own summary and commentary.
For architecture and visualization teams in Turkey, the practical value of these tools lies in managing shared material settings centrally and reusing repeated graphs. In real-time projects with many surfaces and recurring foliage, an organized setup can save time, but that benefit depends on careful parameter planning.
At the outset, the most important checks concern compatibility and asset preparation rather than hardware: the documentation specifies Unreal Engine 4.27 and, for Pivot Painter, testing in 3ds Max 2010 and 2012. Adding scale, pivot, Blueprint references, and shared function changes to an in-house checklist can help offices reduce broken materials and rework.
Frequently asked questions
What is an Unreal Engine Material Parameter Collection used for?
It holds scalar and vector parameters that multiple materials can reference. Values can be managed collectively rather than changed individually in material instances.
How many Material Parameter Collections can a material use?
According to the Unreal Engine 4.27 documentation, a material can reference up to two different collections. Each collection can contain up to 1024 scalar and 1024 vector parameters.
Which 3ds Max versions was Pivot Painter tested in?
The official Pivot Painter documentation states that the script was tested in 3ds Max 2010 and 2012. It also requires world units to be set to centimeters and the scale to be preserved during export.



