Inspiration
As my canopy structure was to mirror a glass station entrance, I wanted to explore stained glass patterns on the overall structure. I looked at the below stained glass murals and selected one to move forward with:
Modeling the Surface
I used the surface from Assignment 3.
Mapping Image of Stained Glass Pattern onto Panels
I used the File Path node to open the image of stianed glass, and I used the File From Path note to extract the image into the Image.ReadFromFile Node. I plugged the image into the Image.Pixels node and used my u/v sliders to determine the xsamples and ysamples.
I then mapped the image to colours by using the Element.OverrideColorInView node.
Next, I created three lists of image pixels: the first new one was for a vertically flipped list, using the List.Reverse node. The next one was for a horizontally flipped list, using the Transpose node. The third was for a list that’s both vertically and horizontally flipped, using the List.transpose then List.Reverse nodes in that order. I collected each new list into a combination of lists, and used a code block to call the relevant list by number: 0 was for original
1 for vertically flipped
2 for horizontally flipped
3 for both
Creating an Embossed Effect
Taking the output from the previous group as the input to the Color.Brightness node, I gathered the brightness of each panel according to the color it had been mapped onto. I than remapped the list from 10 to 50 to make the variation of each color brightness number clearer. To create an emboissed effect, I took the negative of each value in the remapped list. To create a deboissed effect, I took the remapped list. I combined both lists. To call the correct list, I created an integer slider; 0 created a debossed effect, and 1 created an embossed effect. To create said effects, I added the values in the relevant list to a base offset factor. For the embossed effect, I used a base offset of 60, and for the debossed effect, I used an offset factor of 1.
The output list of values was then set as the height of the panels using the Element.SetParameterbyName node.