Physically Based Animation of Plants

Undergraduate Honors Thesis

Bruno Li

Advisor: Donald Fussell

Goals

A fully interactive tree simulation.

Prior Work: Tree Rendering

Boudon F., Prusinkewicz P., Federl P., Godin C., Karwowski R., "Interactive design of bonsai tree models". Comput. Graph. Forum 22, 3 (2003), 591--600. 2, 5

Prior Work: Tree Animation

Real-Time Rendering and Animation of Trees

Habel, "Physically Guided Animation of Trees", Computer Graphics Forum, Vol. 28, No. 2. (2009), pp. 523-532

First-Class Trees

All sorts of interaction:

First-Class Trees

Method Overview

L-Systems

L-System: Examples

P. Prusinkiewicz and A. Lindenmayer, "Graphical modeling using L-systems", in The Algorithmic Beauty of Plants, New York, NY: Springer-Verlag, 1996.

L-System: D-Tree

start : F 1.0 0.005 0 N zero
zero : F 0.9 0.33 0 [ T 30.0 N zero ] F 0.9 0.33 0 [ T -30.0 N zero ] T 30.0 N zero

L-System: Bamboo

start : F 1.0 0.005 0 N left
left : F 0.98 0.5 0 [ T  40 F 0.5 0.1 1 N one_a ] N right
right : F 0.98 0.5 0 [ T -40 F 0.5 0.1 1 N one_a ] N left
one_a : N one_b
one_b : F 0.95 0.5 1 N one_a

L-System: Willow

NOT YET IMPLEMENTED

Soft-Body Physics

ragdoll

T. Jakobsen, "Advanced Character Physics," in Game Developers Conf. Proc., San Jose, 2011.

Physics Structures: String

string

Physics Structures: Cloth

cloth

Physics Structures: Trees

Bamboo: initial attempt

Angular Constraint

Angular Constraint

Physics Structures: Rigid Bar

Physics Structures: Trees

Bamboo: initial attempt

Physics Structures: Trees

Bamboo: with angular constraints

Deletion 1

destroy-distance ( DC )
  1. remove DC from each edge list of its two endpoints
  2. delete DC from memory
destroy-particle ( VL )
  1. call destroy-distance on all distance constraints in the edge list of VL
  2. delete VL from memory

Deletion 2

destroy-angular ( AC )
  1. call destroy-distance on all eight "implementation" distance constraints
  2. call destroy-particle on all two "implementation" particles
  3. remove AC from each edge list of its two endpoints
  4. delete AC from memory
destroy-distance ( DC )
  1. call destroy-angular on all angular constraints in the edge list of DC
  2. remove DC from each edge list of its two endpoints
  3. delete DC from memory
destroy-particle ( VL )
  1. call destroy-distance on all distance constraints in the edge list of VL
  2. delete VL from memory

Tree Splitting

Tree Splitting

Tree Splitting

Tree Splitting

tree-split ( DC )
  1. A is the tail of the distance constraint arc DC
  2. B is the head of the distance constraint arc DC
  3. call destroy-distance on DC
  4. call bfs on B
  5. new_tree->particles := result of bfs
  6. old_tree->particles := old_tree->particles (set difference) new_tree->particles

Special Effects

vfx

Fire

Criteria for fire behavior:

Rain

Criteria for rain behavior:

Wind

NOT YET IMPLEMENTED

Conclusion: Results

Conclusion: Future Work

Everything is harder in 3D:

The End

Questions?

/

#