In this post we explore combining HumanUI and Rhino3DMedical in Grasshopper to segment medical images.

Download & Install HumanUI

Before we begin we need to make sure HumanUI is installed. Head to the HumanUI page on food4rhino, login and follow the installation steps.

Set up the HumanUI Window

Create the Window

In order to create a window in HumanUI you only need four components:

  • Launch Window – to display a window
  • Add Elements – to add UI elements to the window
  • A Panel with the name of the window – this name will be shown at the top
  • Boolean Toggle – to show and hide the window

Connect the Boolean Toggle to the Show input and the Panel to the Name input of Launch Window. Then connect the output of that component to Add Elements through the Window input. We will fill in the other input later.

Set up a HumanUI window

Add the UI Elements

For our simple example we only need four unique elements.

File Picker

Use the Create File Picker component to allow for reading a file through the window directly. This component has a lot of inputs, but for our application the default value is correct, so we do not need any more inputs.

Set up file picker

Slider

Using the Create Slider component we can add sliders to the interface. These take standard Grasshopper Number Sliders as input, where we need to set a lot of information.

For this, create a slider, double click on the left part and fill in the Name, Accuracy, Numeric domain and Numeric value fields, as the slider in the HumanUI window will use all these values.

Note that the Numeric domain, Numeric value and Accuracy can be set directly when creating the slider with the following syntax :

\text{lower} \lt \text{default} \lt \text{upper}

where the lower and upper values set the Numeric domain and Accuracy, and default sets the Numeric value. For example, to create a slider from 0 to 2 with one digit and default value 0.5 would be created like this:

\text{0.0} \lt \text{0.5} \lt \text{2.0}

This way the only value you need to set manually is the Name.

Set up slider

Checkbox

Use the Create Checkbox component to do this, passing it the default value and the text that is displayed. We use a Boolean Toggle for the default value, and a Panel for the name.

Set up checkbox

Color Picker

Lastly, we use a Create Color Picker, which takes a color as input. In our case we use a Colour Swatch to do so.

Set up color picker

Add the Value Listeners

Every single UI Element needs a Value Listener so we can pass its output to other grasshopper components, or, in this case, Rhino3DMedical ones. These value listeners sinply take the UI elements as input, and return the value in the corresponding type.

Add value listeners

Add the Elements to the Window

In order to add the elements to the window, connect them all to the Elements input of the Add Elements component we added previously. Make sure you hold down SHIFT to connect more than one input.

Remember that the order in which the items are connected to the Add Elements component is the order in which they appear in the window, with the first connected element being on top.

Connect elements to window

Add Rhino3DMedical Components

For this demo we only need tow Rhino3DMedical Components:

Read File

This takes the path to the file as input, which comes from the File Picker.

Surface from Threshold

Which has four inputs, namely the medical image from the read file, a lower and an upper threshold, which are both sliders, and a boolean which comes from a checkbox.

Add the Rhino3DMedical grasshopper components

Add a Material

Create a Material

To add a custom material we first need a Create Material component.

We pass three colors which represent the Diffuse, Specular and Emission colors of the geometry. The diffuse color is the base color of the geometry, the specular color is the color of the shine, and the emission color allows for the geometry to emit light in a given color. Each one of these is given by a Color Picker.

Then we give the Transparency, which has to be a number between 0 and 1, where 0 means the geometry is fully opaque and 1 means it is fully invisible.

Lastly there is the Shine, which is a number between 0 and 100. 0 means no shine, 100 means the object looks like polished metal.

Create a material and add the HumanUI elements for it

Apply the Material

Using a Custom Preview component, connect the material we just created and the mesh returned from Surface from Threshold to the Geometry output.

Then right click the Surface From Threshold component and disable the preview so we only see the material.

Connect the output from the Rhino3DMedical component to the material to apply it

Putting it all Together

Screengrab of the entire grasshopper definition at this point

Double click the toggle we connected to the Launch Window component earlier and the HumanUI window should appear. Feel free to try and add your own functionality or add other elements.

Resulting window and preview

Clean up the Grasshopper Definition

Lastly we can clean up the definition by adding scribbles and setting the colors of the panels and groups.

Finished definition and output

Download Grasshopper File