Computer graphics plays an important role in biomedical engineering by providing a visual representation of problems and solutions. It helps in many ways by providing a graphics instrument to share information with other fields such as science and medicine using one of our most developed senses.
When designing medical devices, computer graphics enable engineers to create 3D models and prototypes or to simulate devices and environments. It allows engineers to test the performance and check every aspect before going to the phase of development by saving time and money.
Also in clinical diagnosis computer graphics play an important role with a strong integration with radiological techniques. Clinical-based imaging approaches provide a detailed image of the patient that can be post-processed with several algorithms to emphasize specific pathologies. It also leads to the integration of such images in pre-operative computer images to plan and simulates surgeries and reduce the risk of complication as well as to speed up recovery.
In research, it is very important to use computer graphics to represent the outcomes for several reasons. Graphics helps to visually present complex data in an easy-to-understand format. In addition to clarity, it allows us to have great efficiency reducing the time to interpret data. Furthermore, easily understandable graphics increase the audience’s engagement, and high-quality graphics accentuate professionalism.
In this article, I want to share my experience with computer graphics to render several computational models. The following examples originated from a specific need. To present my Master’s Thesis I needed some graphics of the atherosclerotic plaque but nothing on the internet was able to fit with my speech and design so I decided to make my own graphics.
Blender
To create a good 3D render you need three elements: the model, a good render engine, and a lot of experience. As for the model, it wasn’t difficult to use CAD software to design a geometry representing the atherosclerotic plaque development in four different steps:
- Healthy vessel
- Plaque formation
- Plaque enlargement
- Plaque rupture

For the experience of using rendering engines, things are a little more complex but I deiced to start learning Blender. It is a powerful 3D computer graphics software that can be used for animation, modeling, sculpting, rendering, and video editing. It is open source and free, which is already enough to use such great software. More to that, it has a very user-friendly interface with a wide range of features including also physics simulation with vast community support.
Blender is one of the best software for computer graphics and you can make your own render. So I started making my own graphics of atherosclerotic plaque.
Atherosclerotic plaque
To represent an ideal atherosclerotic plaque I design a triple-layered cylinder a little bent. Then, I added the plaque with a clean enlargement made with SubD that allow me to manually sculpt the boundaries. In the end, I made the central cut showing the plaque’s internal structure. Hoverewer, the model is only a single-material 3D geometry without any visual identity. I need color to represent different materials.
Atherosclerotic plaques are constituted by two main components: the lipid-rich core and the covering cap, with a great simplification, made by the inner layer of the vessel, the tunica intima. In addition, vascular vessels are layered structures constituted in general by three layers, named tunica intima, media and adventitia.
Tunica media and tunica intima
In this idealistic representation, I needed to color the different layers to highlight their differences. The tunica media is made mostly of muscle cells, rich in oxygen and blood with a proper red color. I started with a texture of the smooth muscle cells transforming it into a pattern that highlights the red color like a large marbled steak.


The ColorRamp block creates a black and white map representing the contrast between the boundary and internal parts of the cells. The upper mixer adds a wine red to the background images while the bottom one adds a light red to the cell boundaries. Clearly, the mapping block allows to shift and rotate the pattern to accommodate the geometry and the camera orientation, as well as to direct the cells in the physiological circumferential direction. Furthermore, by increasing the “Metallic” properties of the surface it allows to increase in the specular reflection of the material and to reduce the light diffusion.

Texture
There is a completely different approach for the tunica intima. I used a Voronoi Texture to create a map representing the cell nuclei with a darker color with respect to the general endothelium. By scaling it correctly it gives a good aesthetic random pattern.


It requires also a color mix to represent a characteristic pink in order to distinguish the tunica intima from the tunica media.

Light diffusion and reflection
The lipid-rich core is obviously represented in yellow but with some special effects. There are two different paths. The first one adds a special pattern through a mix of white noise and Voronoi distance data creating a texture to simulate fluidity and motion in a static image.


The second one adds fictitious shadows to enforce such dynamism based on a Musgrave texture block. Of course, both are based on yellow tonalities.

Environmental lights
In the end, we can adjust the lights to enforce colors and shadows.

Patient-specific plaque render
Now, I created several material representations for the atherosclerotic plaque and I can try to apply such skins to real patient-specific cases obtained from medical Computed Tomography with contrast and segmentation software. The following animation shows real carotid stenosis due to atherosclerotic plaque. Beyond the appearance, which you may like or not, it allows me to highlight two aspects:
- Graphical representation allows a better interpretation for both patient and clinician
- We can see the resolution limits of the CT scanner and the voxel’s size by increasing the zoom
This short animation required several steps. Although I already had the 3D model I had to incorporate the description of the different materials. A smart approach was to export materials data from the FE solver environment as a special text file like:
{x; y; z; flag}
Where the flag
value describes the presence of a specific material. By using ParaView it is easy to read such data, filter the values and export it as a STL mesh that can be read with Blender. It requires eventually filtering with a threshold and then extracting the surface that has to be triangulated. In the end, it is possible to save data as an STL file.
For the internal or external layer, representing the tunica adventitia and tunica intima, the process is a little more complex. After the surface extraction, it is possible to add thickness to the layer by creating a surface offset from the lumen and then adding the thickness inside the Blender environment with the Solidify modifier

To conclude about Blender I suggest you watch the following video:
Wolfram Mathematica
Another great software is Wolfram Mathematica, it is not free however a lot of universities give a license to students. Besides the computational aspect, it has also a giant database with biomedical information such as 3D models.
You can easily recall every anatomical entities such as body parts, bones, organs, ecc
EntityClass["AnatomicalStructure", "BodyParts"] // EntityList

And extract more detailed data:
Entity["AnatomicalStructure", "Heart"]["Dataset"]

As well as plot the three-dimensional geometry of specific anatomical entities:
Show[
Quiet[AnatomyPlot3D[{Red,
AnatomyData[Entity["AnatomicalStructure", "Heart"],
"ArterialSupply"]}]],
AnatomyPlot3D[{
Entity["AnatomicalStructure", "Heart"],
Black, {Arrowheads[Medium]}
}, Axes -> False, ViewPoint -> Front, ViewVertical -> {0, 0, 1},
ViewAngle -> Automatic, PlotTheme -> "Monochrome"]]
Or for instance, about human carotid arteries:
GraphicsRow[{Show[
AnatomyPlot3D[{Opacity[0.1],
Entity["AnatomicalStructure", "Neck"]},
PlotTheme -> "Monochrome"],
AnatomyPlot3D[{Entity["AnatomicalStructure",
"LeftCommonCarotidArtery"],
Entity["AnatomicalStructure", "LeftExternalCarotidArtery"],
Entity["AnatomicalStructure", "LeftInternalCarotidArtery"],
Entity["AnatomicalStructure", "RightCommonCarotidArtery"],
Entity["AnatomicalStructure", "RightExternalCarotidArtery"],
Entity["AnatomicalStructure", "RightInternalCarotidArtery"]},
ViewPoint -> Front, AnatomySkinStyle -> Opacity[0.2]]],
Show[AnatomyPlot3D[{Entity["AnatomicalStructure",
"LeftCommonCarotidArtery"],
Entity["AnatomicalStructure", "LeftExternalCarotidArtery"],
Entity["AnatomicalStructure", "LeftInternalCarotidArtery"]},
ImageSize -> Medium]]}]

More information on the Wolfram reference.