AppleyAppley Docs
Docs/Learning Paths

Creating Materials

Create and configure materials for your 3D objects.

23 min read Beginner Updated 2026-07-01 v2.0 ~65 min to complete

Introduction

Materials define how surfaces look — color, texture, shininess, transparency. This tutorial covers the Material Library and PBR material creation.

Tutorial 15 of 18

This is part of the Beginner Learning Path. Estimated completion time: 65 minutes. Difficulty: Beginner.

Screenshot

Creating Materials
Creating Materials

Step-by-Step Guide

1

Open the Material Library

Go to Window > Material Library, or click the material slot in the Inspector.

2

Create a new material

Click "New Material" and give it a descriptive name like "WoodPlanks" or "MetalRed".

3

Set the base color

Click the Albedo/Color swatch and pick a color, or assign a texture map for detailed surfaces.

4

Adjust PBR properties

Set Roughness (0=shiny, 1=matte) and Metallic (0=non-metal, 1=metal). These control how light interacts with the surface.

5

Add normal maps

Assign a normal map texture for surface detail like bumps, scratches, and grooves without extra polygons.

6

Assign to objects

Drag the material from the library onto an object in the viewport, or assign via the Inspector material slot.

FluxScript Example

Here is the FluxScript (Appley Scripting) code for this tutorial:

Creating Materials — FluxScript
// Create materials programmatically
on start {
  // Create a metallic red material
  redMetal = materials.create("MetallicRed")
  redMetal.setColor(200, 30, 30)
  redMetal.setMetallic(0.9)
  redMetal.setRoughness(0.2)
  
  // Create a wood material with textures
  wood = materials.create("WoodPlanks")
  wood.setTexture("albedo", "assets/wood_diffuse.png")
  wood.setTexture("normal", "assets/wood_normal.png")
  wood.setRoughness(0.85)
  wood.setMetallic(0.0)
  wood.setTiling(2, 1)
  
  // Create glass material
  glass = materials.create("Glass")
  glass.setColor(200, 220, 255)
  glass.setOpacity(0.3)
  glass.setRoughness(0.05)
  glass.setMetallic(0.0)
  
  // Apply to objects
  car = scene.find("SportsCar")
  car.setMaterial(redMetal, "body")
  car.setMaterial(glass, "windows")
}

Node Script Equivalent

Prefer visual programming? Here is the same logic as a Node Script graph:

Creating Materials — Node Graph
[On Start] ──► [Create Material: "MetallicRed"]
         ──► [Set Color: (200,30,30)]
         ──► [Set Metallic: 0.9] ──► [Set Roughness: 0.2]
         ──► [Create Material: "WoodPlanks"]
         ──► [Set Texture: albedo] ──► [Set Texture: normal]
         ──► [Set Tiling: (2,1)]
         ──► [Create Material: "Glass"]
         ──► [Set Opacity: 0.3] ──► [Set Roughness: 0.05]
         ──► [Find: "SportsCar"]
         ──► [Set Material: redMetal, "body"]
         ──► [Set Material: glass, "windows"]

Pro Tip

Reuse materials across multiple objects. Ten objects sharing one material cost the same as one object — it's one draw call. Unique materials per object is the #1 performance killer.

Watch Out

Each unique material adds a draw call. If you have 100 objects with 100 different materials, that's 100 draw calls. Use texture atlases to combine materials and reduce draw calls.