Share your new tool in a way that allows others to download and easily use it.
Your complete submission should include:
- The Dynamo or Grasshopper scripts and all the supporting nodes needed to run your tool.
- Documentation for how to use your tool. It should include:
- A brief overview of what your tools does (to help users decide whether to download it and give it a try). Think of a “ReadMe” file for software.
- A catchy name (or acronym) for your tool
- A teaser image that shows typical results, i.e. what users should expect to get as an output
- A link to a recorded video demo (2 minutes max) in which you demonstrate how a user would interact with and benefit from using your parametric design tool.
- If you use Zoom to record your video, download the recording to an MP4 file or Copy the shareable link from the Canvas interface.
- If you save an MP4 file to Google Drive or One Drive, be sure to set the permission to Allow Anyone with Link to View.
- If you use YouTube to host your video, set the Visibility to Unlisted, then paste the link into your Notion posting using the “/Video” command.
- Ladybug package for Dynamo was not functional in the current Revit setup
- Forma integration wasn’t accessible
- Hence, we opted for a custom vector-based approximation to evaluate how “directly” each façade panel faces a manually placed “sun point”
- Input façade geometry (likely a flat surface or bounding wall): need to manually select the proposed wall surface
- Define panel segmentation using dimensions like
Solar panel width
,Solar panel height
andSolar panel mid distance
- Use
Math.Floor(Wallheight / Panelheight)
to determine vertical divisions - Use
Math.Floor(Walllength / Panelwidth)
to determine horizontal divisions - Create grids of rectangles (panels) via code blocks and
Point.ByCoordinates
- Start with a base wall surface — either imported from Revit or created in Dynamo. This surface acts as the canvas for placing façade panels.
- Use sliders to set
Panel Width
andPanel Height
. Then compute how many panels fit along the wall usingMath.Floor()
: - Using
Point.ByCoordinates
, generate a 2D grid of corner points by looping through the X and Z indices: - From each base point, create four corners and draw edges using
Line.ByStartPointEndPoint
, then build a rectangle surface withSurface.ByPatch
. This creates uniform rectangular panels across the wall. - Use
Surface.PointAtParameter(panel, 0.5, 0.5)
to find each panel’s center point. - A manually placed
Sun Point
acts as a virtual solar source - For each panel:
- Compute the vector from the panel's centroid to the sun
- Compare this vector with the panel normal vector using:
Vector.ByTwoPoints
Vector.AngleBetween
- If a panel is facing toward the sun (lower angle between normal and sun vector), it's treated as high exposure
- A threshold angle or scalar projection might be used to evaluate this condition
- If “sun exposure” is high:
- Narrow the panel (e.g., reduce its width by a factor)
- This is a stand-in for shading behavior
- This logic is implemented via:
CodeBlocks
: e.g.,Panelwidth / 2
,1;
,0.5;
List.GetItemAtIndex
andList.Map
for processing each panel's responseGeometry.Translate
to re-place or reshape adjusted panels- Transformed geometry is previewed with
Watch
nodes - Possible color variations for different exposure levels (if implemented)
- 🧪 While not a full environmental simulation, this tool mimics solar responsiveness with vector math
- 🔄 The structure is modular and easily expandable to incorporate Ladybug later
- 🛠️ It serves as a prototype for early-stage façade testing, giving architects a feel for directional adaptation
Please be certain to share your video with a PUBLIC link that will allow anyone with the link to view it:
Be sure to test your video link to confirm that the visibility / permission settings will allow others to view it.
🌞 AdaSUN — Adaptive Façade Tool Based on Simulated Solar Response
🧠 Concept Clarification
While the original concept envisioned integration with Ladybug or Forma for sun hour analysis, this current version simulates solar directionality using a single reference point that acts as a proxy for the sun.
💡 Why?
At the time of development:
🔄 Workflow Logic
Below is how my Dynamo graph is structured into a coherent pipeline:
1. 🧱 Geometry Setup
2.🔹Create Facade
🎯 Goal: Establish the domain for adaptive design
🎯 Goal: Quantify how many horizontal and vertical panels to generate
Each point represents the lower-left corner of a future panel.
🎯 Goal: Set up anchor points to build panels
🎯 Goal: Visually build the façade from parametric geometry
These points are used later to simulate how each panel is exposed to sunlight.
🎯 Goal: Prepare for sunlight evaluation using each panel’s location
3. 🌞 Sun Simulation
4. 🔍 Solar Directness Evaluation
5. 🧱 Adaptive Panel Logic
6. 👀 Result Visualization
🔧 Inputs
Input | Description |
Wall Surface | A rectangular wall or façade surface to be analyzed. This is the base geometry where panels will be generated. |
Solar panel width , Solar panel height and Solar panel mid distance | Define how the wall is divided into smaller rectangular façade panels. |
Sun Point (Optional) | A manually placed point in space to simulate the direction of sunlight. |
📤 Outputs
Output | Description |
Directness | Evaluating the sun directness based on the facade and the position of virtual sun |
Cost | Defining the rough calculation of the panel cost, using $100 per panel |
Area | Calculating the area with out sun shading, larger area generally means better view for the space inside the building |
✅ Key Takeaways
🧬 Generative Design Exploration
In addition to manually adjusting panel properties, I implemented a Generative Design workflow to explore optimized façade configurations based on specific design goals. This allows the tool to automatically test multiple input combinations and visualize a range of design tradeoffs.
🧩 Design Intent
The goal of the generative design study is to explore façade options that:
- 🔻 Minimize solar directness (i.e., how directly each panel faces the simulated sun point)
- 💰 Minimize material cost (approximated via total panel count or transformed area)
- 📐 Maximize panel area (for daylight and openness)
This allows for multi-objective optimization, where tradeoffs between shading performance, cost, and openness can be visualized and compared.
🧮 Computed Metrics (Outputs)
For each design configuration, the script calculates:
- ☀️ Average directness to the sun (based on vector angles)
- 🧱 Total number of panels (proxy for material/cost)
- 🟩 Total panel area (after adaptations)
These become the objective functions in the generative design.
🔍 Result Interpretation
The generative design output is a visual map of tradeoffs:
- Designs in the lower-cost / high-shading quadrant perform well thermally but may block daylight.
- Designs with larger panel areas may allow more light but are less shaded.
- Designers can pick a balanced option based on visual performance, aesthetics, or practical constraints.
🧠 Why This Matters
This step transforms the tool from interactive to exploratory — giving designers not only a single outcome but a landscape of possibilities to choose from.
🎯 It empowers data-informed early decisions in façade design.
🎥 Video recording
https://stanford.zoom.us/rec/share/HnJshy95LuP5MvoKnOfC7E_2fhm1Iy12X0wvHrtRX2qXHG50zSffdGQzr3LvCEAL.e8umJ3wqS0U3MK5s?startTime=1749191534000 Password: cG0m!aYk