Sunshades is the first dynamic space experiment that we have integrated into the Piattaforma Zero. Our initial goal was to select some movable surfaces that are both easy to realize and to bring into the VR environment. This would allow us to explore two of our topics of interest: the relationship between light and shadow and the relationship between interior and exterior. All of these occur in the various set-ups that these surfaces can assume in relation to the user. The article shows the generative process of these first surfaces.
In the tutorial that follows, we propose tools and suggestions on how to redesign your dynamic space and have it work correctly with the GH-Rhino-VR workflow.
Sunshades is a set of vertical panels distributed along a basic polygon that is placed on the Piattaforma Zero. Each panel is subjected to axial rotation, ranging from 0 to 90 degrees. When the angle is set to 0°, the panel configuration composes a closed geometry; when the angle is set to 90°, the configuration has its maximum opening. Within the virtual environment, we can move the geometries with a simple slider, dwelling on specific layouts, or speeding up the opening and closing of the panels.
The Piattaforma Zero, a perfect circle, and the selected elementary surfaces, the Sunshades, form a minimum space system – let’s call it Minimum Viable Space – that we use as a virtual testing laboratory for a better understanding of the relationship between a moving architecture and the user who experiences it.
A fundamental aspect of the exercise is the “toolbox” used. The geometries in fact come from a Grasshopper definition converted into a sequence of Rhino Commands through Rhino Compute.
This first experiment is therefore composed of very simple geometries, but it helped us to understand the best way to create dynamic Grasshopper definitions for the virtual reality environment and to give us a first approach to the interaction and dynamism in VR.
Let’s build it!
The geometry of the sunshades is developed within Grasshopper as follows:
- Construction of the base polygon with a variable number of segments (n) and circumscribed to a circle having a variable radius called r. Depending on the combination of r and n, each segment of the polygon has a certain length l (Fig.1).
- Detection of the midpoint M on one segment of the polygon. From M a horizontal plane is constructed having one axis parallel to the segment of the polygon and the other axis parallel to the vector between M and the origin of the polygon (Fig.2).
- Construction of a rectangle on the previous plane, having its length equal to l and its width equal to the variable w. The rectangle represents the base of one of the modular panels composing the geometry (Fig.3).
- Detection of the centroid C of the rectangle. C is used as a pivot in order to rotate the rectangle around its vertical axis by the angular variable α. This variable is the only one changeable dynamic parameter inside the VR experience, while all the other variables are set in Grasshopper and fixed in Unity. α determines all the available configurations of the geometry (Fig.4).
- Generation of a polar array having the origin of the polygon as center, the number of elements equal to the number of segments n of the polygon and the sweep angle equal to β. This operation generates the bases of the full set of panels (Fig.5).
- Translation of the oriented rectangles along the z axis by the variable h which defines the height of the panels. The translation vector is defined by the components (0, 0, h) (Fig.6).
- Mesh generation through each couple of rectangles in order to generate the solid panels, using a C# script downloaded from the ShapeDiver website. Notice that this operation directly generates a mesh through the rectangles, avoiding N.U.R.B.S. surfaces that would need to be converted to make them readable in Unity (Fig.7).
- Varying the value α, the panels rotate around their axes, changing from a closed configuration of the geometry to an open one (Fig.8-9).
- The output meshes are then refined using the Combine&Clean component of the plugin Kangaroo Physics, which removes unused and duplicate vertices of the meshes.
The sunshades are done. Now take your time to play with it so you can make yourself comfortable with this kind of modeling and interactive approach. You can download the commented .gh file from the link below.
Below you can see the recap flowchart pertaining to the generation of the geometry. This can be a useful tool to make the script of the Grasshopper definition easier and to understand the logic behind the generative procedure of this first geometric sample.
Pio Lorenzo Cocco, November 13, 2020