Assignment 02: Mesh Relaxation + Reciprocal Frame

Goal: Create a MeshRelaxer class to perform iterative spring-based relaxation on a mesh, ensuring it stays within boundary constraints and snaps to a target surface. This relaxed mesh will serve as the refined geometry for your Reciprocal Frame system.

Your starting point is a02_mesh-relax.ghx. It includes a scaffold and in-place guidance comments. This line-by-line guidance can be ignored if desired to implement in a different way. Most of the coding work will be done in the Python files, but the Grasshopper file will be used to call the code in the Python files.

main task image 2

Learning Goals

By the end of this assignment, you should be able to:

Assignment Overview

Important Starting Note: For files that build upon the previous assignment (a02_mesher.py and a02_timber_model.py), you have two options:

  1. Continue with your own work: Copy your completed code from the corresponding A01 files into the new A02 files.
  2. Use our provided solutions: Rename the provided solution files (e.g., a02_mesher_solved.py) to replace the blank starter files (e.g., a02_mesher.py).

The assignment is split into five separate Python files:

  1. Meshing (a02_mesher.py)
    • Re-use or adapt your mesher from A01.
  2. Mesh Relax (a02_mesh_relax.py)
    • Main mesh relaxation logic.
  3. Modifiers (a02_modifiers.py)
    • Contains custom logic to influence the relaxation dynamically.
  4. RF logic (a02_rf_system.py)
    • Manages eccentricity, centerlines, and attractor logic for the Reciprocal Frame.
  5. Timber model (a02_timber_model.py)
    • Turns the relaxed RF centerlines into a 3D timber structure with proper joints.

Main Task

Challenge 01

eccentricity

Challenge 02

modifier

Deliverables

Submit the following files:

Submission

Upload the assignment via POLY.GRADE