How to use material colours as inputs

A how-to guide for changing material colours in the solution.

Introduction

Would you like to change material colours in the solution to display different colour options? Then use material colours as inputs in your solution by following these steps.

Prerequisites

  • You configured the frames and routes for your solution.
  • You configured the relevant contents such as the model(s), control panel(s), viewer(s) and datastore.

1. Define & assign default materials

2. Transfer information from the control panel to the viewer

  • Subscribe the viewer to the control panel.
  • Define the selection control which changes the colour of the material.
  • Define the material which is affected by the colour change.
  • Use assignMaterialPropertiesByKey to set the material colours for visualisation.

The configuration should look similar to the example below:

  viewer:
    kind: Viewer
    materials:
      outer: #material
        kind: StandardMaterial
        color: [0, 0, 255]
    subscribe:
      - kind: Model
        frame: home-frame
        source: model
        assignMaterials:
          my-geometry: my-material #gh output:material
      - kind: ControlPanel
        frame: home-frame
        source: params
        control: my-color-control
        material: my-material
        assignMaterialPropertiesByKey:
          blue: #should match the values used for the control
            color: [0, 0, 255]
          dark: #should match the values used for the control
            color: [0, 0, 50]
          red: #should match the values used for the control
            color: [200, 0, 0]

3. Add a control for the material colour

  • Configure a selection control with kind: SelectColor in the control panel.
  • Add a label for the control, which will be visible in the solution.
  • Set the default value to one of the options.
  • Define the choices with kind:Color, their labels, values and color.

❗ The values should match the options configured with the assignMaterialPropertiesByKey entity.

The configuration should look similar to the example below:

  params:
    kind: Controlpanel
    controls:
      my-color-control:
        kind: SelectColor
        label: Outer color
        value: blue
        choices:
          - label: Blue
            value: blue #should match the values set with assignMaterialPropertiesByKey
            kind: Color
            color: [0, 0, 255]
          - label: Dark
            value: dark #should match the values set with assignMaterialPropertiesByKey
            kind: Color
            color: [0, 0, 50]
          - label: Red
            value: red #should match the values set with assignMaterialPropertiesByKey
            kind: Color
            color: [200, 0, 0]

See the image below as an example.

Configuration

See the viewerControlPanelSubscribe configuration docs and SelectColorControlConfig configuration docs for more information.