Environmentally Affected Tree Growth using LSystems and Voxels






























![Marsaglias Spherical Scatter � V 1 ~U([-1, 1]) � V 2 ~U([-1, 1]) �S= Marsaglias Spherical Scatter � V 1 ~U([-1, 1]) � V 2 ~U([-1, 1]) �S=](https://slidetodoc.com/presentation_image_h2/6754511c3009f8bcf8bdeec23ae85c4b/image-31.jpg)
![Marsaglias Spherical Scatter � V 1 ~U([-1, 1]) � V 2 ~U([ 0, 1]) Marsaglias Spherical Scatter � V 1 ~U([-1, 1]) � V 2 ~U([ 0, 1])](https://slidetodoc.com/presentation_image_h2/6754511c3009f8bcf8bdeec23ae85c4b/image-32.jpg)
![Marsaglias Spherical Scatter � V 1 ~U([-1, 1]) � V 2 ~U([ 0, 1]) Marsaglias Spherical Scatter � V 1 ~U([-1, 1]) � V 2 ~U([ 0, 1])](https://slidetodoc.com/presentation_image_h2/6754511c3009f8bcf8bdeec23ae85c4b/image-33.jpg)



















![Problem with L-String FF[+F[+X][-X]FX[-F[+X][-X]FX] FFF[+X][-X]FX Problem with L-String FF[+F[+X][-X]FX[-F[+X][-X]FX] FFF[+X][-X]FX](https://slidetodoc.com/presentation_image_h2/6754511c3009f8bcf8bdeec23ae85c4b/image-53.jpg)
![Sorting string Child 0 FF [+X][-X] FX][-F[+X][-X]FX] FFF[+X][-X] FX 1 2 Ω ψ Id Sorting string Child 0 FF [+X][-X] FX][-F[+X][-X]FX] FFF[+X][-X] FX 1 2 Ω ψ Id](https://slidetodoc.com/presentation_image_h2/6754511c3009f8bcf8bdeec23ae85c4b/image-54.jpg)




![New L-String Interpretation FF[+F[+X][-X]FX[-F[+X][-X]FX] FFF[+X][-X]FX New L-String Interpretation FF[+F[+X][-X]FX[-F[+X][-X]FX] FFF[+X][-X]FX](https://slidetodoc.com/presentation_image_h2/6754511c3009f8bcf8bdeec23ae85c4b/image-59.jpg)
















- Slides: 75
Environmentally Affected Tree Growth using L-Systems and Voxels Andrew Leeuwenberg
Contents � Voxelising Objects � Collision & Avoidance � Phototropism �Ambient �Direct � Sorting L-String � Growing multiple trees � Project management
Summary of Intent Dev-Test (proof of concept)
Collision avoidance
Phototropism
Competition
Voxelising Collision Object
Magmax: |5| |3| |4|
Magmax: |5| sub. Divmax: Magmax / voxel. Size + 1
Magmax: |5| sub. Divmax: 6
Getting Voxel Index Scatter. Point = Pxyz �Eg. 100, 60, 100 � Define voxel. Area: Va[3] � Voxel. Array[Va[0] * Va[1] * Va[2]] �Eg. -10, -4, -10 � Define a voxel. Corner: Vc[3] �Eg. 1. 0 f � Define voxel. Size: Vs � Voxel. Point (Vp[3]) = (Pxyz – Vcxyz) / Vs � Index = (Vp[1] * (Va[0] * Va[2])) + (Vp[2] * Va[0]) + Vp[0] � Voxel. Array[Index] �
4: 20
Path finding using voxels
[ [ [ [ When growing a branch [ 1 voxel unit
Collision avoidance
Collision avoidance
Collision avoidance
Phototropism
Phototropism � � Calculated : “F” call Affects : �Growth rate �Growth direction �Leaf growth �Leaf surface area
Luminosity
Ambient (Eamb )
N-Rooks
N-Rooks - Normalized
N-Rooks - Normalized Side Top
Marsaglias Spherical Scatter � V 1 ~U([-1, 1]) � V 2 ~U([-1, 1]) �S= �X V 12 + V 22 < 1 = 2 V 1 ( 1 -S )1/2 � Y = 2 V 2 ( 1 -S )1/2 � Z = 1 - 2 S
Marsaglias Spherical Scatter � V 1 ~U([-1, 1]) � V 2 ~U([ 0, 1]) �S= �X V 12 + V 22 < 1 = 2 V 1 ( 1 -S )1/2 � Y = 2 V 2 ( 1 -S )1/2 � Z = 1 - 2 S
Marsaglias Spherical Scatter � V 1 ~U([-1, 1]) � V 2 ~U([ 0, 1]) �S= �X V 12 + V 22 < 1 = 2 V 1 ( 1 -S )1/2 � Y = 2 V 2 ( 1 -S )1/2 � Z = 1 - 2 S
The effect of increased rays and voxel size on luminosity values 0, 6 Luminosity 0, 4 0, 2 Voxel Size 0 10 50 100 200 -0, 2 -0, 4 -0, 6 -0, 8 Number of Rays 10000 0. 25 0. 1
The effect of increased rays and voxel size on luminosity values 0, 8 0, 6 Luminosity 0, 4 Voxel Size 0, 2 0. 25 0 -0, 2 10 50 100 200 -0, 4 -0, 6 -0, 8 Number of Rays 10000 0. 1
The RSD value when comparing voxel size and number of rays to calculate lumination 70 60 RSD (%) 50 Voxel Size 0. 25 0. 1 0. 01 40 30 20 10 50 100 200 Number of Rays 10000
Ambient light � Eamb = Rterminated / Rtotal
Direct (Edir )
Sun Arch
Sun Arch � Edir = Rterminated / Rtotal
Luminosity � Sun Influence (Si) = 0 - 1 � Etotal = (Edir* Si) + (Eamb* (1 –Si)) � Si = 0. 5
Luminosity � Sun Influence (Si) = 0 - 1 � Etotal = (Edir* Si) + (E* (1 –Si)) � Si = 0. 1
Luminosity � Sun Influence (Si) = 0 - 1 � Etotal = (Edir* Si) + (Eamb* (1 –Si)) � Si = 0. 9
Growth rate
Leaf growth
E affecting growth direction
Rotation � Calculate average luminosity (Ē) �North - South N �East - West E E E ĒN E E W E S
Rotation � Calculate average luminosity (Ē) �North - South �East - West � Max angle rotation = θmax � For each axis: �Rotation θ = θmax * (Ēmax – Ēmin )
Rotation � Calculate average luminosity (Ē) �North > South �East - West � Max angle rotation = θmax � For each axis: �Rotation θ = θmax * (ĒN max – ĒS min )
Rotation
Rotation � Calculate average luminosity �North / South �East / West � Max angle rotation = θmax � For each axis: �Rotation θ = θmax * ( Emax – Emin )
Sorting L-String
Problem with L-String FF[+F[+X][-X]FX[-F[+X][-X]FX] FFF[+X][-X]FX
Sorting string Child 0 FF [+X][-X] FX][-F[+X][-X]FX] FFF[+X][-X] FX 1 2 Ω ψ Id String 0 -1 0 FFFFFFX 2 2 0 0 1 2 +FFX -FFX 5 0 3 +X 5 0 4 -X Ω Start time 4 1 5 +X ψ Parent branch 4 1 6 -X Id Identification num 4 2 7 +X 4 2 8 -X String Branch L-String
Sorting string Ω Ω ψ Id String -1 00 FFFFFFX 22 22 00 00 11 22 +FFX -FFX 55 55 00 00 33 44 +X -X 44 11 55 +X 44 11 66 -X 44 22 77 +X 44 22 88 -X
Sorting string Ω ψ Id String 0 -1 0 FFFFFFX 2 0 1 +FFX 2 0 2 -FFX 5 0 3 +X 5 0 4 4 1 4 0 0 0 1 2 -X 0 1 2 5 +X 0 1 2 5 6 7 8 1 6 -X 0 1 2 3 4 5 6 4 2 7 +X 4 2 8 -X 0 3 4 7 8
Sorting string Ω ψ Id String 0 -1 0 FFFFFFX 2 0 1 +FFX 2 0 2 -FFX 5 0 3 +X 5 0 4 4 1 4 0 0 0 1 2 -X 0 1 2 5 +X 0 1 2 5 6 7 8 1 6 -X 0 1 2 3 4 5 6 4 2 7 +X 4 2 8 -X 0 3 4 7 8
Sorting string 0 0 1 2 0 0 2 1 7 1 5 2 6 0 8 3 6 4 8 0 5 1 4 0 3 7 3
New L-String Interpretation FF[+F[+X][-X]FX[-F[+X][-X]FX] FFF[+X][-X]FX
New L-String Interpretation
Self collision
Geometry Occlusion & Collision
Geometry & Self-Occlusion & Collision
Growing Multiple Trees
Linked-Structures tree. List branch. Info *head branch. Info *temp draw. Index *head draw. Index *temp tree. List *next branch. Info MString L-string draw. Index MInt. Array index. List int id draw. Index *next float matrix[16] …growth variables branch. Info *next
*head *temp *next
Next Stage
Next stage � Improve features �Simultaneous / staggered growth �Add usability control � Proxy visualisation � Experiments �Determined successful if: ○ 3 behaviours achieved
Project management
Gant chart
Blog – aleeuwenberg. com
Summary � Voxelising Objects � Collision & Avoidance � Phototropism �Ambient �Direct � Sorting L-String � Growing multiple trees � Project management � Next stage
Questions please
References � Prusinkiewicz, P. , & Lindenmayer, A. (1990). The Algorithmic Beauty of Plants. New York: Springer-Verlag. � Greene, N. (1989). Voxel Space Automata: Modelling with Stochastic Growth Processes in Voxel Space. SIGGRAPH '89 Proceedings of the 16 th annual conference on Computer graphics and interactive techniques , 23 (3), 175 – 184. � Shirley, P. (1991). Discrepancy as a Quality Measure for Sample Distributions. Proceedings of Eurographics. 183 -193 � G, Marsaglia. (1972). Choosing a point from the surface of a sphere. The Annals of Mathematical Statistics. 43, 2. p 645 646