synthetic topiary. premislaw prunsinkiewicz (prof. p) mark james radomír měch
TRANSCRIPT
Synthetic Topiary
Synthetic Topiary
• Premislaw Prunsinkiewicz (Prof. P)
• Mark James
• Radomír Měch
Synthetic Topiary
• Development in two directions:– structure-oriented models– space-oriented models
Synthetic Topiary
• Development in two directions:– structure-oriented models
• Endogenous : module inherits lineage at creation.
• Interactive : information flow.
Context-sensitive L-systems
– space-oriented models
Synthetic Topiary
• Development in two directions:– structure-oriented models– space-oriented models
• exogenous : information transmitted from environment.
Synthetic Topiary
• Development in two directions:– structure-oriented models– space-oriented models
Environmentally-sensitive L-systems address the dichotomy.
Lindenmayer systems
• Stochastic context-sensitive grammars.
• id : lc < pred > rc : cond succ : prob– replace pred by succ with probability prob if
• pred has lc on the left and rc on the right and
• cond is true
Modules
• Each module controls a LOGO-style turtle.– F moves forward.– +-, &^, / \ are rotations around H, U, L.– @o draws a sphere at current position.– % terminates a branch (e.g. pruning )
• magnitude parameters are optional
Lindenmayer Systems
• Example: L-System 2ω : A(1) B(3) A(5)
p1: A(x) A(x+1) : 0.4
p2: A(x) B(x-1) : 0.6
p3: A(x) < B(y) > A(z) : y<4 B(x+z)[A(y)]
A(1) B(3) A(5)
Lindenmayer Systems
• Example: L-System 2 ω : A(1) B(3) A(5)
p1: A(x) A(x+1) : 0.4
p2: A(x) B(x-1) : 0.6
p3: A(x) < B(y) > A(z) : y<4 B(x+z)[A(y)]
A(2) B(3) A(5)
Lindenmayer Systems
• Example: L-System 2ω : A(1) B(3) A(5)
p1: A(x) A(x+1) : 0.4
p2: A(x) B(x-1) : 0.6
p3: A(x) < B(y) > A(z) : y<4 B(x+z)[A(y)]
B(7)[A(3)]
Lindenmayer Systems
• Example: L-System 2ω : A(1) B(3) A(5)
p1: A(x) A(x+1) : 0.4
p2: A(x) B(x-1) : 0.6
p3: A(x) < B(y) > A(z) : y<4 B(x+z)[A(y)]
B(7)[B(2)]
Environmental Sensitivity
• Add a ‘query’ module to read the position.– ?P(x,y) will assign the current position to x,y.– ?H(h) will assign the H orientation to h.
• Allows parameter variation depending on external parameter.
A?P(x,y) : (x²+y²)<10² F(x²+y²)
• Example: L-System 3
Pruning
• Use ?P to find when to prune, % to do it.
• Example: L-system 4– Dormant buds grow on the tree.– New branches grow if the ‘leading bud’ is cut.– Pruning function cut bud leaving a L*L cube.
A model of tree development
• Early works: A tree is a self-similar branching structure.– Led to unnatural exponential growth.
• Botanical model:A shoot is viable only if it receives enough light.– Leads to a more constrained branching ratio.
A model of tree development
• Hypotheses:– Start with a single non-branching shoot.– New shoots grow from buds near end of
previous year’s segments.– There is a maximum branching ratio.– All branch segments have the same length.– Current year’s shoots grow leaves.– Leaves need light.
A model of tree development
• Consequences– Crown radius is Θ(age).– Available leaf area is Θ(age²).– Number of potential shoots is Θ(exp(age))
• will get, in time, limited by available leaf area.
• Branching factor bage is thus
bage = (2.age+1)/age²
• This produces L-system 5.
Putting all together : LS 6
ω: Axiom - start with a single apex, aged 1.
P1: Growth - !pruned, branching.
P2: Growth - !pruned, !branching, creates a bud.
P3: Growth - pruned.
P4: Creates growth signal S where P3 occured.
P5,6: Propagate S to earlier buds.
P7: S activate a new apex, with the right age.
P8: Housekeeping - Age of the buds.
Conclusion
• Issues :– Defining the pruning volume equation.
• Use constructive geometry.
• Use ellipsoid skeletons.
– Large number of primitives.• Reuse via instantiation.
– Characterizing plants and their reaction to pruning is non-trivial.
Conclusion
• It’s cool.
• Enough data to code the algorithm.– It’s all theory, maybe a fancy CS660 project ?