NExT Lab
Maker SpacesFabLabNExT LabRobotics LabPrint Room and Loans
  • NExT Lab
  • Contact Details
  • NExT Lab Access
  • Sustainability
    • 3D Printing
  • Case Studies & Projects
    • |3DS|VR| Voices of Country
    • |3DS| Our Quiet Neighbour
    • |3DS| OFF FORM | OFF MODERN
    • |3DP|AR| Prosthetic Habitats
    • |AR| Studio 40: The Field
    • |VR|3DP| Gravity Sketch: Door Handles
    • |3DS| 3D Scanning Examples
    • |AR|3DP| GRANULAR
  • 3D Printing |3DP|
    • 3D Printing at the NExT Lab
      • Other 3D Printing Options
    • Get Started
    • Design Approaches
    • Modelling Guidelines
    • 3D Print Farm
      • Quick-Start Guide
        • File Naming Conventions
      • Detailed Overview
        • 3D Printing Mesh Preparation
        • Submitting a Print Request
        • Post-Submission: Updating, Paying & Collecting
        • Slicing & Settings
    • Open Access Printers
      • PRUSA Open-Access
        • Workflows
          • Materials Experimentation
          • Experimental Techniques
        • Prusa i3 MK3S Fundamentals
        • Hardware Glossary
          • Extruder
          • Hotend & Nozzle
          • Print Surface, Bed & Y Axis
          • PINDA Inductive Probe
          • X-Axis Gantry
          • Z-Axis Stage
        • Software/Slicer Glossary
          • Plater/Virtual Print Bed
          • Print Settings
          • Filament Settings
          • Printer Settings
        • Troubleshooting
          • Filament Jam/Clog
          • Worn Nozzle
          • Broken/Loose Heatbreak
          • First Layer Issues/Prints Not Sticking to Bed
          • Stringing & Oozing Hotend
    • Use Own Filament
    • Key Techniques
      • Hollowing Models
      • Combating Warping
      • Split Models & Joints
      • Joints and Connections
      • Fillets & Chamfers
      • Accuracy, Precision & Tolerancing
      • Post-Processing & Finishing
        • No Sanding Method
        • Sanding Method
        • Epoxy Method
        • Fillers Method
      • Printing for Transparency
      • Mesh Techniques
        • Meshes 101
        • Working with Meshes
        • Repairing Meshes
        • Other Techniques
          • Thicken a Mesh with Grasshopper
          • Mesh Manipulation with Blender
          • Custom Supports in Meshmixer
      • Topography Models
      • Using the Makerbot Experimental Extruder
      • Troubleshooting
      • Adjusting Print Settings
    • Resources
      • Downloadable Software & Accounts
      • Software Primers
        • Autodesk Meshmixer
        • Blender
    • Mold Making and Casting
  • 3D Scanning |3DS|
    • 3D Scanning at the NExT Lab
    • 3D Scanning Use Cases
    • Guides
      • Principles of 3D Scanning / Digital Reconstruction
      • Photogrammetry
        • Photogrammetry Theory
        • Photogrammetry Benchmark
        • Technical Guides
          • From Photos to 3D Spatial Data
          • Advanced Techniques
          • Taking Measurements + Visualisation
          • From Photogrammetry to 3D Printing
      • BLK360 Terrestrial LiDAR Scanner
        • BLK360 Benchmark
        • Scan
        • Register
          • Export from iPad
        • Process
      • Artec Handheld SLT Scanners
        • Using the Scanners
        • Manual Alignment
        • Fill Holes
        • Smoothing
        • Frame Selection
      • VLX LiDAR SLAM Scanner
        • VLX setup
        • Preparing to Scan
        • Using the Scanner
        • Processing the Scans
      • Working with 3D Scan Data
        • Point Clouds and Rhino
        • Point Clouds and Cloud Compare
        • Point Clouds and Blender
        • Point Clouds to Meshes
    • Troubleshooting
      • General
      • Artec EVA
      • Leica BLK360
      • VLX
  • Augmented Reality |AR|
    • Augmented/Mixed Reality at the NExT Lab
      • Use Case of AR
    • Guides
      • Hololens 2
      • Fologram
        • Fologram Applications
          • Fologram for Hololens
          • Fologram for Mobile
        • Fologram for Rhino
        • Fologram for Grasshopper
        • Shared Experiences / Tracked Models
        • Extended Functionality
          • Preparing Models for AR
          • Interactivity
          • Fabrication
      • Unity and Vuforia
        • Unity Primer
        • 2D Targets (Image Targets)
        • 3D Targets (Object Targets)
        • Vuforia Primer
        • Creating a Simple AR App
          • Unity Next Steps: Interaction
          • Model Recognition
    • Troubleshooting
      • Hololens & Fologram
      • FAQ: Augmented Reality
    • Resources
      • Platforms (Hardware)
        • Microsoft Hololens
        • Mobile
      • Software Packages
      • Student Contact
        • AR: Intro Sessions
        • AR: Workshops and Resources
          • UntYoung Leaders Program Workshopitled
          • Young Leaders Program Workshop
          • Construction as Alchemy
  • Virtual Reality |VR|
    • Virtual Reality at the NExT Lab
    • Guides
      • Virtual Reality Hardware Set Up
        • Meta Quest 3
          • Troubleshooting
        • HTC Vive Headsets
          • HTC Vive
            • Troubleshooting
          • HTC Vive Pro
          • HTC Vive Cosmos
            • Troubleshooting
      • Twinmotion VR
        • Twinmotion VR: Features
        • Twinmotion VR: Troubleshooting
      • Virtual Reality Experiences
        • Unreal Engine
          • Unreal Engine Primer
            • Process: Level Building, Playing & Packaging
            • Actors: Components, Content and Editors
            • Materials & Textures
            • Lighting & Mobility
            • Player: VR and non-VR
            • Interactivity & Blueprints
          • Unreal Engine: Guides
            • Setting up a VR-ready File & Templates
            • Creating a Basic VR Experience
            • Custom Collision and Navigation
            • UV and Lightmaps
            • Outputting Content
            • Unreal Troubleshooting
            • Point Cloud Visualisation
          • VR: Video Tutorial Series
            • Exporting from Rhino
            • Model Preparation in 3DS Max
            • Unreal Engine
      • Designing in Virtual Reality
        • Gravity Sketch
          • Quick Start
        • Masterpiece Creator
    • Student Contact
      • VR: Intro Sessions
  • Sensing
    • Body Tracking
      • Usage
        • Technical Specifications
      • Data Analysis in Grasshopper
        • Analysis Examples
      • Animated Point Clouds(UE)
  • ROBOTICS
    • Robotic Dog
      • Operational Health & Safety
      • Robot Dog Setup
      • Operation Setup
        • Operation Basics
        • Arm Mode
        • Programming Mode
        • Mapping Mode
      • Advanced Operations
      • Expansion Equipment / Attachments
      • Basic Simulation
      • Troubleshooting
Powered by GitBook
On this page
  • Material Overview
  • Creation & Naming
  • Material Process
  • Material Application
  • The Material Editor
  • Creating Nodes and Wires
  • The Material Node
  • Material Properties
  • Material Inputs
  • Textures
  • Troubleshooting Texture Types
  • Basic Material Setups
  • Basic Metal
  • Basic Plastic
  • Basic from Texture
  • Resizing/Rotating Textures
  • Applying Materials
  • 7.0 Video Tutorials
  • 7.1 Materials Primer
  • 7.2 Advanced Primer

Was this helpful?

  1. Virtual Reality |VR|
  2. Guides
  3. Virtual Reality Experiences
  4. Unreal Engine
  5. Unreal Engine Primer

Materials & Textures

This article covers Materials in the Unreal Engine

PreviousActors: Components, Content and EditorsNextLighting & Mobility

Last updated 2 years ago

Was this helpful?

You are reading an old article for Unreal Engine 4 - it should still work for Unreal Engine 5 though!

Material Overview

Materials are an asset that can control the look of a scene and how light interacts with that look. The most common type of material is one that you apply to the surface of an object.

Creation & Naming

Materials are created through the content browser, by [RMB] > Create Basic Asset: Material.

Like other content in Unreal, the name cannot include spaces. The common naming convention for materials is M_(Material Type/Purpose). For example, you may have one material for all wooden frame elements in your Level, it may be called M_Frame_Oak.

Material Process

Materials are formed formed by various inputs that are given data through textures, numbers or mathematical calculations. These are layered together to create a final material. All these layers will interact with each other to produce different results.

Material Application

When using materials as a visual for a surface object, how it 'maps' itself to the geometry is dependent on the UV Mapping of the object. UV Mapping is the unwrapping of a piece of geometry into a 2D plane, which determines how a Material sits on it.

Refer to this page for further details on application as this article will only cover materials

The Material Editor

The Material Editor is based on the Blueprint Scripting system, refer to the Blueprint Scripting and Editor sections in this article of the Unreal Engine Primer to get an idea of the how to navigate the Material Editor:

Reference

Panel

Description

1

Top Menu

Save, Apply and other previewing utilities are found here.

2

Preview

This preview of the material will continuously update as you edit your material. This can be navigated as you would any other 3D viewport, with options for the view type, whether lighting is calculated or not and the preview geometry.

3

Details

Details of the currently selected node can be found here.

4

Graph Editor

This is where you create your material through connecting nodes that define the inputs of your material

5

Palette

This is a list of all functions that you may find through RMB as you usually would to create nodes.

6

Material Node

This comes unique to the Material Editor, material properties are defined through this node, and all inputs will eventually go into this node to compute the overall material.

Creating Nodes and Wires

As with the Blueprint Editor, nodes can be created in the following ways:

  • [RMB] in the graph editor and searching.

  • [LMB] on a pin and dragging out a wire.

  • Nodes can also be created through the Palette panel.

To work with pins and wires:

  • [LMB] and drag from a pin, to a pin, to create a wire

  • [RMB] over a pin to select from the context menu, or [Alt+LMB] on a pin to break a connection.

The Material Node

Material Properties

Reference [1] in the above image. With the Material Node selected or with nothing selected, the details pane will show the properties of the material. The first step to creating a material is knowing what material you want to create as these define what kind of material you wish to create as this will change the kind of inputs are allowed by the material. Here is a brief rundown of the more important elements:

Property

Description

Phys Material

Defines how the material behaves with physics, for example, how energy is distributed and hence how the applied object will bounce. This has no effect on the visual qualities.

Material Domain

Defines what the material is used for, for example: the most common setting is Surface, which is commonly used as materials defines how an object's surface looks. Other options include Deferred Decal; for decal surfaces and Post Process; for custom view-based aesthetic styles.

Blend Mode

Defines how the material interacts with the materials behind it when viewed, these are like your Photoshop Layer Modes. The most common setting is Opaque, for solid materials and Translucent for materials with transparency.

Shading Model

Defines how the material inputs interacts with Lighting in the Level. The most commonly used setting is Default Lit for solid materials that will receive Level Lighting, other settings include Unlit for emissive materials, Clear Coat for translucent coatings and a trio of Subsurface settings for materials similar to human skin.

For a description of the more obscure and niche settings, refer to the following Unreal Engine documentation:

Material Inputs

Reference [2] in the above image, these will change based on the Material type that you have defined through the Material Property.

Property

Usage

Base Colour

Used as the base colour of the material, takes an input of Vector3

Metal

How metal like a material is. Values are between 0 and 1 representing non-metallic and metallic.

Specular

Only relevant for non-metallic surfaces, specular is how much light is reflected. Values are between 0 and 1 representing fully non-reflective and fully reflective. Defaults to 0.5.

Roughness

Roughness is how the light is reflected, rough materials scatter light differently to smooth materials, manifesting in how sharp or blurry the reflection is. Values are between 0 and 1 representing smooth and rough.

Emissive Colour

Controls what parts of the material can glow, it can either be the entire material itself or a masking texture (mostly black except for areas that need to glow,) that gives a numerical value (black = 0 ascending) to determine what emits light.

Opacity

Used for translucent materials, and is only supported when using the Translucent Blend Mode. Takes a value between 0 and 1 representing completely transparent and opaque.

Opacity Mask

Only available when using the Masked Blend Mode. Usually used for complex surfaces that have both 100% solid and see-through qualities, like with chain link fences. Sections of the material will either be visible or not visible as determined by a black and white texture.

Normal

Simulates depth in a material as visual representation by using something called a normal map, avoiding the need to model intricate details such as grout between tiles.

Subsurface Colour

Only available when using a SubSurface shading model. This allows for the material to simulate changes in colour as light passes through the material, most commonly used for human skin to simulate the underlying blood.

Ambient Occlusion

Simulates self-shadowing through the use of a texture map.

For a description of the more obscure and niche inputs, refer to the following Unreal Engine documentation:

Textures

Textures are a way to provide for the Material Node Input, usually referred to as Maps, and can take the following forms. When naming texture files, the usual convention is as below, but as long as you are consistent then it will make your projects more legible and easier to navigate:T_(texture description)_(data_type)

When grabbing material packs off the Unreal Engine Marketplace or other corners of the web, they will often come with textures that follow the naming conventions indicated.

Some Example Textures:

Texture Type

Input

Usage

Diffuse

Base Colour

Example Name: T_Rock_Granite_DIFF

Used as the base colour of the material

Normal

Normal

Example Name: T_Rock_Granite_NORM

Usually referred to as Normal Maps, these textures are used to simulate surface details in a material. These are commonly RGB images where the colour corresponds to how that mesh should be displaced in the XYZ respectively.

Bump

Normal

Example Name: T_Rock_Granite_BUMP

An alternative to Normal Maps, these are grayscale images that affect only the height parameter of the surface. This can be converted into a Normal map using a [NormalFromHeightMap] node.

Gloss

Roughness

Example Name: T_Brick_GLOSS

Grayscale images that affect which parts of the image are reflective.

Troubleshooting Texture Types

Where do I plug in this texture?

Take note of the input values for the input, i.e, RGB value, value between 0-1.

With textures that come in grayscale, blacks have a value of 0 and whites have a value of 1 and everything in between is grey. If the grayscale needs to be inverted, use a [OneMinus] node to invert it.

Basic Material Setups

Now that you have an understanding of the Material Editor, Material Inputs and Textures, here are some examples of common basic materials. The interaction of layers is as important as the individual layers themselves.

Basic Metal

Material Creation

  1. In your designated Materials folder, create your Material through the content browser via [RMB]. If you do not have a Materials folder already, create one for better organisation.

  2. Follow the naming conventions for the Material. e.g. M_BlueMetal

Material Properties

  1. The Material Domain is a Surface, as it will be used on some geometry object.

  2. The Blend Mode is Opaque as it will be a solid object that light will not pass through

  3. Shading Model is set to Default Lit as it will interact with the Level Lighting to properly capture reflections.

Material Inputs : Base Colour

  1. Create a [Constant3Vector] node by [RMB] and searching for it in the Graph Editor. A [Constant3Vector]is an array of 3 values, that can also be used as the 3 values for RGB.

  2. [Double Click] the node to bring up the colour picker. Alternatively, with the node selected, use the Details panel.

  3. Connect the node to the Material Node.

Material Inputs: Metallic & Roughness

  1. Because it is a Metal material, the Metallic and Roughness inputs will be used.

  2. Both Metallic and Roughness inputs accept a numerical value between 0 and 1. Create separate [Constant] node by[RMB] and searching for it. A [Constant]holds a single value.

  3. This value can be accessed by selecting the node and using the Details panel.

  4. Connect the nodes to the Material Node.

The relationship between Metallic and Roughness will determine the end look of the material. Tweak these in parallel.

The Metallic input determines the glossiness of the material. The material becomes more reflective as the value increases.

The Roughness input determines how sharp the reflections are, as defined by how smooth the material is. The material increases from smooth to rough as the value increases.

Basic Plastic

Material Creation

  1. In your designated Materials folder, create your Material through the content browser via [RMB]. If you do not have a Materials folder already, create one for better organisation.

  2. Follow the naming conventions for the Material. e.g. M_BluePolymer

Material Properties

  1. The Material Domain is a Surface, as it will be used on some geometry object.

  2. The Blend Mode is Opaque as it will be a solid object that light will not pass through

  3. Shading Model is set to Default Lit as it will interact with the Level Lighting to properly capture reflections.

Material Inputs : Base Colour

  1. Create a [Constant3Vector] node by [RMB] and searching for it in the Graph Editor. A [Constant3Vector]is an array of 3 values, that can also be used as the 3 values for RGB.

  2. [Double Click] the node to bring up the colour picker. Alternatively, with the node selected, use the Details panel.

  3. Connect the node to the Material Node.

Material Inputs: Metallic & Roughness

  1. Because it is a Plastic material, the Specular and Roughness inputs will be used.

  2. Both Specular and Roughness inputs accept a numerical value between 0 and 1. Create separate [Constant] node by[RMB] and searching for it. A [Constant]holds a single value.

  3. This value can be accessed by selecting the node and using the Details panel.

  4. Connect the nodes to the Material Node.

Basic from Texture

This example will be of a Brick material, but the process is the same.

In the Unreal Editor

  1. Create a new folder to hold textures for the same material.

  2. Import Textures into your Content Browser, and rename them to match their Input type.

Material Creation

  1. In your designated Materials folder, create your Material through the content browser via [RMB]. If you do not have a Materials folder already, create one for better organisation.

  2. Follow the naming conventions for the Material. e.g. M_Brick

Material Properties

  1. The Material Domain is a Surface, as it will be used on some geometry object.

  2. The Blend Mode is Opaque as it will be a solid object that light will not pass through

  3. Shading Model is set to Default Lit as it will interact with the Level Lighting to properly capture reflections.

Texture Sampler

  1. To use textures for a material, use a [TextureSample] node. Create it by [RMB] and searching for it in the Graph Editor.

  2. With the [TextureSample] node selected, the texture can be applied through the Details panel. The preview will update in the node.

  3. Connect the textures to their corresponding inputs.

Resizing/Rotating Textures

The application of a material is dependent on the UV mapping of the material. Read more:

Tweaks can be made through the Material Editor to change how the material is applied. This is most commonly used with textures.

Resizing Textures

Use a [TextureCoorodinate] node to affect how the Material's textures deal with UV mapping. This node consists of the following parameters that can be accessed through its Details panel:

Parameter

Description

U Tiling

How the texture tiles in the U (commonly horizontal) direction. This number refers to the number of texture tiles per unit of U. The default is 1 texture tile per unit.

A value of 0.5 means there will be half a texture tile per unit, effectively doubling the texture size in that direction. While a value of 2.0 means there will be 2 texture tiles per unit, dividing the texture size in half in that direction.

V Tiling

How the texture tiles in the V (commonly horizontal) direction. This number refers to the number of texture tiles per unit of V. The default is 1 texture tile per unit. Refer to above for changing this value.

Un Mirror U/V

Unmirrors the texture in the corresponding direction.

Connect this to all affected textures' UV pin to apply the changes.

Rotating Textures

Use a [CustomRotator] node to rotate the Materials' textures. This node has the following pins:

Pin

Description

UVs

The UV map to rotate. As a base, [TextureCoordinate] node can be used.

Rotation Centre

The rotation centre accepts a Constant2Vector corresponding to the UV space with values between 0 and 1. With 0 and 1 being the corner extremes, e.g. [0,0] is the one corner and [1,1] is the opposite. The default value is [0.5,0.5] for the centre.

Rotation Angle

The rotation angle accepts a Constant value between 0 and 1. With 0 being 0 degrees and 1 being 360 degrees.

Applying Materials

  1. Make sure Materials are saved via the top toolbar of the Material Editor.

  2. Live-edits can be made after adjusting your material by clicking Apply in the top toolbar of the Material Editor

Materials can be applied through the following ways:

Dragging and Dropping

In the Level Editor:

  1. Select your Material in the Content Browser.

  2. Drag it over to your Geometry in the scene.

Details Panel

In the Level Editor:

  1. Select the object that you wish to apply a material to.

  2. In the Details panel, navigate to the Materials section.

  3. Click the drop-down list and choose or search for the material to apply

7.0 Video Tutorials

This content was created for Master of Architecture Design Studio 40, led by Rochus Hinkel.

7.1 Materials Primer

Summary of this article's bascis material setup

7.2 Advanced Primer

UV and Lightmaps
Interactivity & Blueprints
UV and Lightmaps
Material Properties
Material Inputs
Logo
Logo
Figure 1.2 - Example of a lit-surface opaque material
Figure 2.0 - The Material Editor
Figure 3.0 - The Material Node
Figure 4.0 - Textures
Figure 5.1 - Basic Metal
Figure 5.1.1 - Metallic Input
Figure 5.1.2 - Roughness Input
Figure 5.3.1 - Basic from Texture
Figure 5.3.2 - Texture Sample Node with Details Panel
Figure 5.3.3 - Textures with Corresponding Inputs
Figure 5.4.1 - Texture Coordinate Parameters
Figure 5.4.2 - Resizing Textures
Figure 5.4.3 - Custom Rotator and Texture Coordinate Nodes setup
Figure 5.4.4 - Rotation Angles (0 = 0° and 1 = 360°)
Figure 6.0.1 - Dragging and Dropping Materials
Figure 6.0.2 - Details Panel