Jinzhao Wang - Module 9 - Part 2

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.
    • Please be certain to share your video with a PUBLIC link that will allow anyone with the link to view it:

    • 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.
    • Be sure to test your video link to confirm that the visibility / permission settings will allow others to view it.

      image

      🌞 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:

    • 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”
    • 🔄 Workflow Logic

      Below is how my Dynamo graph is structured into a coherent pipeline:

      1. 🧱 Geometry Setup

    • 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 and Solar 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
    • image

      2.🔹Create Facade

    • 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.
    • 🎯 Goal: Establish the domain for adaptive design
    • Use sliders to set Panel Width and Panel Height. Then compute how many panels fit along the wall using Math.Floor():
    • 🎯 Goal: Quantify how many horizontal and vertical panels to generate
    • Using Point.ByCoordinates, generate a 2D grid of corner points by looping through the X and Z indices:
    • Each point represents the lower-left corner of a future panel.

      🎯 Goal: Set up anchor points to build panels
    • From each base point, create four corners and draw edges using Line.ByStartPointEndPoint, then build a rectangle surface with Surface.ByPatch. This creates uniform rectangular panels across the wall.
    • 🎯 Goal: Visually build the façade from parametric geometry
    • Use Surface.PointAtParameter(panel, 0.5, 0.5) to find each panel’s center point.
    • 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

    • 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

      4. 🔍 Solar Directness Evaluation

    • 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
    • 5. 🧱 Adaptive Panel Logic

    • 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 and List.Map for processing each panel's response
      • Geometry.Translate to re-place or reshape adjusted panels

      6. 👀 Result Visualization

    • Transformed geometry is previewed with Watch nodes
    • Possible color variations for different exposure levels (if implemented)
    • 🔧 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

    • 🧪 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

🧬 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.
image

🧠 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