I started the process by making a grid of points that can be controlled by U and V points sliders and making adaptive components by using a four-point panel. I also added a number slider that can control the original thickness of the panels.
My next step was importing image data into Dynamo and mapping it. I used a Boolean node to allow an easy switch between mapping an original and transposed image.
Then I made three groups of commands that would allow flipping an image vertically, horizontally (mirror effect), and both. I also created an easy switch between having an original image or flipping in any of the described variations. A user can enter a number from 0 to 3 to choose a desired image mapping. I tested these commands by using a simple three-color palette so that I could easily see any mapping changes.
A chosen mapping option described above was then used to display tubes and panels' colors.
The next step was adjusting the panels' height based on the brightness of the colors. The formula I used to create embossed and debossed effects was panel thickness+/-height*scale factor, where height was calculated from the brightness and scale factor could be adjusted using a code block.
Finally, I gave a user an option to choose between debossed and embossed effects by using a boolean node (I also made an option to have a switch by using a code block), and the heights of the panels were changed accordingly.
At some point, I realized that no matter which effect (embossed or debossed) I choose, the panels keep growing in both directions. I managed to fix this issue by checking the positive and negative directions of the surface and switching them. Overall, it was really fun working on this assignment, and I am happy with the results I got. Below is a picture that I chose to display on the surface.