(+4) 0374 900 200
contact@avangarde-software.com
Unity

Ultrasound Application

THE CUSTOMER

The customer is a surgeon and college professor.

THE REQUIREMENTS

The customer requested an application that helped medical students by allowing them to practice taking Ultrasound images and recognize diseases.

THE CHALLENGE

Replicating the visuals of an ultrasound image was the core aspect of the application, as it needed to replicate real-world imagery as close as possible.

Case details

Client name:
Confidential
Completed:
360 hours
Category:
Unity development

We started by researching how an ultrasound machine behaves and the resulting image.
In order to replicate the same effect, we started off with a 3D texture of the human body, an MRI scan.
Moving the camera will result in seeing a slice of the texture. We’ve generated a reflection texture, as the outlines of the tissues are more visible then other parts of the image. In order to keep the fidelity, a full resolution texture was necessary. We then applied noise to the image to replicate the movement of the ultrasound device.

We’ve then combined our main texture, which already shows diffuse scattering and speckle with our reflection texture. These are simply added together.

Next, we’ve added shadows. In order to do this, we’ve multiplied our main texture with the intensity texture, showing us how intense the sound should be at each pixel.

To finish up the look we’ve applied a radial blur to the resulting image.

Because sound traveling through organ tissues creates a shadow like effect in real life, we generated an intensity/shadow texture. Same as we’ve done with the reflections texture, we create a new one. First, we generated a difference texture which we used for the final intensity texture. We downscale and apply a blur shader to it to avoid harsh lines. Instead of multiplying the resulting image we use it to generate the intensity value by adding the values of the pixels from the current pixel to the sound source. This will result in a texture where bright pixels will show the areas with stronger shadows. Because this will later be multiplied to the main texture, we invert the pixel values. Since the shadows will be applied to the image after we’ve applied the noise, the intensity goes down the farther away we get from the sound source. This also simulates attenuation without the need of additional shader pass.