Show / Hide Table of Contents

Textures and Materials

Modifying a texture can radically change the appearance of a geometry used in RobotStudio or in any 3D environment. RobotStudio provides the tools necessary to interact with the Textures that its objects use. This topic shows how to create or import a Texture , assign it to a certain Material and ultimately use than material in one of the desired geometry's face.

The steps contained in this topic are:

  1. Declare a Texture object.

  2. Map a bitmap to the texture.

  3. Define a Material .

  4. Create a Material using a Color argument.

  5. Modify the parameters of a Material .

  6. Create a box to map the created textures.

  7. Map the Material objects to the different Face objects of the box.

Note

You can easily try out this example using the RobotStudio Empty Add-in template from Visual Studio.

Solution

  1. Textures are declared as objects of the class Texture . For example, a texture containing the built-in texture for environments can be created in the following manner:

    Texture environmentTexture = Texture.DefaultEnvironmentMap;
    
  2. It is very common to map a Bitmap into a texture object. To do so, load the Bitmap file and then map it into the texture object. This snippet creates a 120x120 bitmap, paints half of it red and maps it to a texture object:

    Bitmap redWhite = new Bitmap(120, 120); // Make a bitmap
    for (int x = 0; x < 120; x++) // Paint the bitmap half red
    for (int y = 0; y < 60; y++)
    redWhite.SetPixel(x, y, Color.Red);
    // Apply that bitmap as a texture
    Texture rwTexture = new Texture(redWhite);
    
  3. A Material possess a texture, among other parameters. A very common way for creating a material is by passing a texture object as an argument to the Material constructor.

    Material rwMaterial = new Material(rwTexture);
    Material evMaterial = new Material(environmentTexture);
    
  4. Materials can also be created from a Color argument, as shown in the following snippet.

    Material salmonite  = new Material(Color.DarkSalmon);
    
  5. A Material contains more parameters that can be modified to give a more detailed and complex appearance to the object that the Material belongs to. The Material constructor can receive several colors that interact with the lightning capabilities of RobotStudio. Here we create a shinny green Material to illustrate this point.

    Material shinyLightGreen = new Material(Color.LightGreen,   // ambient
    Color.LightGreen,   // diffuse
    Color.LightGreen,   // specular
    Color.LightGreen,   // emissive
    128); // shine
    
  6. We create a sample Box part to map our materials into it and witness the appearance they give to the object.

    Part part = new Part();
    Body box = Body.CreateSolidBox(new Matrix4(new Vector3(0, 0, 0)), new Vector3(0.5, 0.5, 0.5));
    part.Bodies.Add(box);
    
    Station station = Project.ActiveProject as Station;
    station.GraphicComponents.Add(part);
    
  7. A Face object can be created and assigned to a face of a body as shown in the following snippet:

    Face topFace = box.Faces[0]; // [0] is the upper face of the box
    topFace.SetMaterial(salmonite); //Set the material to DarthSalmon
    

    Faces of a body can also be directly addressed through their index, therefore, we can also change the material of the faces in the following way:

    box.Faces[2].SetMaterial(rwMaterial);
    box.Faces[3].SetMaterial(evMaterial);
    box.Faces[4].SetMaterial(shinyLightGreen);
    

The produced outcome is the following geometry:

Example

The complete code example can be copied from here:

private static void TexturesAndMaterials()
{
    // Built-In texture
    Texture environmentTexture = Texture.DefaultEnvironmentMap;


    Bitmap redWhite = new Bitmap(120, 120); // Make a bitmap
    for (int x = 0; x < 120; x++) // Paint the bitmap half red
    for (int y = 0; y < 60; y++)
    redWhite.SetPixel(x, y, Color.Red);
    // Apply that bitmap as a texture
    Texture rwTexture = new Texture(redWhite);

    // Create materials
    Material rwMaterial = new Material(rwTexture);
    Material evMaterial = new Material(environmentTexture);
    Material salmonite  = new Material(Color.DarkSalmon);
    Material shinyLightGreen = new Material(Color.LightGreen,   // ambient
    Color.LightGreen,   // diffuse
    Color.LightGreen,   // specular
    Color.LightGreen,   // emissive
    128); // shine

    Part part = new Part();
    Body box = Body.CreateSolidBox(new Matrix4(new Vector3(0, 0, 0)), new Vector3(0.5, 0.5, 0.5));
    part.Bodies.Add(box);

    Station station = Project.ActiveProject as Station;
    station.GraphicComponents.Add(part);

    Face topFace = box.Faces[0]; // [0] is the upper face of the box
    topFace.SetMaterial(salmonite); //Set the material to DarthSalmon

    // Assign with index
    box.Faces[2].SetMaterial(rwMaterial);
    box.Faces[3].SetMaterial(evMaterial);
    box.Faces[4].SetMaterial(shinyLightGreen);
}

Required Namespaces

System.Drawing

ABB.Robotics.Math

ABB.Robotics.RobotStudio.Stations

See Also

  • RobotStudio Add-Ins
  • RobotStudio SmartComponents
  • Part Information
  • Body Operations
  • Getting Geometry Details
In this article
Back to top Copyright © 2025 ABB