CatenaryCAD: An Architectural Design Tool
Team SixteenDan ChakMegan GalbraithAxel Kilian
6.837 Computer Graphics
Antonio Gaudi designed complex structures using catenary systems
Beautiful forms were created by
suspending pieces of string from hooks,
deforming them with weights and strings,
then inverting the structural elements.
We created design software for architects interested in using catenary systems.
CADenary
CADenary is implemented using
C++ (physics modeling)
OpenGL (graphics rendering)
Tcl/Tk (user interface)
Goals We Met
Interactive that runs in real-time
Realistic-looking models of objects under gravity
Hooks and strings placed in 3D world
Hooks accurately placed both in space and on strings
Computed reasonable physics for the strings
Can flip designs 180 degrees to view as buildings
Good software design
Good design software
Goals We Did Not Meet
Visualize external and internal forces on string particles
Skins that render over the “wire frame” string structures
Ability to save models for 3D printing
Implementing OpenNURBs
How We Approached the Project
cdObject
cdForce
Vect
LineSegment
a, b
cdHook
cdStringHook cdSkyHook cdStringcdWeight
cdModel
pos cdSpring
cdForceEntry
cdParticle
cdParticleEntry
a,b
cdParticleSystem cdParticleBucket
Data Model Physics SimulationGeometry
Program Data Model
Tcl/Tk User Interface
Create a new SkyHook
Create a new StringHook
Create a new String
Select an object
View the parameters of an object
Spin the simulation 180 degrees
Real-time graphics window
Interactivity
Physics Simulation
Spring-Particle System
Chose Runge-Kutta solver (explicit)
Produces reasonably robust solutions
Susceptible to breaking with scale changes or excessive stress
Lack of conservation of length means a string stretches 1.5 times the “at rest” length
System unstable if stiffness parameter is set beyond 1
What We Learned
How to code in unfamiliar languages
Challenges of rendering 3D spaces and maintaining believable interactions with objects in the space
Important to choose appropriate solvers based on speed requirements, robustness, and required precision of the calculations
Physics simulations can be tricky in 3D
Team (and code) management skills
What We Wish We Could Change
C++ may not have been the right choice... Java?
Use one unified language for all aspects of the program
Create the ability to develop the code on a variety of platforms rather than only Linux
Individual Contributions
DanSetting up the development environmentWriting the code that binds the C++ classes with the UI
MeganBuilding the user interface in Tcl/TkPutting together the written report and presentation
AxelBuilding the physics simulation/string models in C++
Deliverables
CADenary program with basic features
Java versions of the particle system
Collection of short movies
Source code
Final Project Paper (.pdf)
Final Presentation (.pdf)
CADenary
Short Movies
1 2
3 4
The End!