Synthetic Topiary

Download Report

Transcript Synthetic Topiary

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 ?