If you have a design you're proud of, share the cfdg file here. It's also a good place to ask for feedback and collaborate.
Moderators: MtnViewJohn , chris , mtnviewmark
megaduck0
Posts: 13 Joined: Wed Jul 06, 2005 3:36 pm
Post
by megaduck0 » Thu Jul 07, 2005 10:09 pm
One more before I hit the sack for the night. I don't care what everyone else says about abstract art - I like the organic plant stuff better
So here's my blustery woodland winter scene. Yes - note that it is a chill wind blowing from the West. Of course, that may just be the influence of the fan I have blowing on me.
Code: Select all
startshape Forest
rule Forest 500 {Grass{} Forest{x 0.2} }
rule Forest 10 {Tree{y 0.4} Forest{x 0.4} }
rule Forest {}
rule Tree 10 { ShadedSquare{} Tree {y 0.7} }
rule Tree 20 { Tree {s 0.994} }
rule Tree 10 { Tree {r 1} }
rule Tree 10 { Tree {r -1.5} }
rule Tree 0.1 { Tree {r -5} Tree {r 20 s 0.4} }
rule Tree 0.3 { Tree {r -10} Tree {r 35 s 0.5} }
rule Tree 0.1 { Tree {r 5} Tree {r -20 s 0.4} }
rule Tree 0.3 { Tree {r 10} Tree {r -35 s 0.5} }
rule Grass 2 { Grass {b 0.1} }
rule Grass { Grass {s 1.1} }
rule Grass { Grass {s 0.9} }
rule Grass 2 { GrassL {s 0.3} }
rule Grass { GrassR {s 0.3} }
rule GrassL 15 {FilledSquare{} GrassL{y 0.5} }
rule GrassL 3 {GrassL{r -2} }
rule GrassL 3 {GrassL{r -1} }
rule GrassL 10 {GrassL{s 0.95} }
rule GrassL 2 {GrassR{} }
rule GrassR 15 {FilledSquare{} GrassR{y 0.5} }
rule GrassR 3 {GrassR{r 2} }
rule GrassR 3 {GrassR{r 1} }
rule GrassR 10 {GrassR{s 0.95} }
rule GrassR 10 {GrassL{} }
rule FilledSquare { SQUARE{} }
rule ShadedSquare { SQUARE{} StripeMe{y -0.2 b 1.0 s 0.4} StripeMe{y -0.4 b 1.0 s 0.4} StripeMe{y -0.6 b 1.0 s 0.4}}
rule StripeMe { StripeMe{b -0.1} }
rule StripeMe 2 { SQUARE{} }
LaT3x
Posts: 68 Joined: Wed Jul 06, 2005 3:11 pm
Location: Madrid, Spain
Post
by LaT3x » Thu Jul 07, 2005 10:15 pm
Fantastic view
I worked on similar thing, but I forget the idea. I was better... this is really cool
aaronstj
Posts: 66 Joined: Wed Jul 06, 2005 11:34 am
Location: Seattle
Post
by aaronstj » Thu Jul 07, 2005 10:47 pm
Cool. Clever code. And I like the birch-bark texture on the trees.
megaduck0
Posts: 13 Joined: Wed Jul 06, 2005 3:36 pm
Post
by megaduck0 » Fri Jul 08, 2005 12:34 am
dang allergies won't let me sleep, so back to brainstorming. I don't recall seeing any realistic evergreens, so I made them too. Watch out - they're really heavy on the shape count.
So who wants to make some clouds to go with it? Mine looked miserable
Code: Select all
startshape Forest
rule Forest 500 {Grass{} Forest{x 0.2} }
// be sure to adjust tree probability if one type of tree is commented out
rule Forest 7 {Tree{y 0.4} Forest{x 0.4} }
rule Forest 5 {Evergreen{s 1.5 y 0.4} Forest{x 0.4} }
rule Forest {}
rule Tree 10 { ShadedSquare{} Tree {y 0.7} }
rule Tree 20 { Tree {s 0.994} }
rule Tree 10 { Tree {r 1} }
rule Tree 10 { Tree {r -1.5} }
rule Tree 0.1 { Tree {r -5} Tree {r 20 s 0.4} }
rule Tree 0.3 { Tree {r -10} Tree {r 35 s 0.5} }
rule Tree 0.1 { Tree {r 5} Tree {r -20 s 0.4} }
rule Tree 0.3 { Tree {r 10} Tree {r -35 s 0.5} }
rule Grass 2 { Grass {b 0.1} }
rule Grass { Grass {s 1.1} }
rule Grass { Grass {s 0.9} }
rule Grass 2 { GrassL {s 0.3} }
rule Grass { GrassR {s 0.3} }
rule GrassL 15 {FilledSquare{} GrassL{y 0.5} }
rule GrassL 3 {GrassL{r -2} }
rule GrassL 3 {GrassL{r -1} }
rule GrassL 10 {GrassL{s 0.95} }
rule GrassL 2 {GrassR{} }
rule GrassR 15 {FilledSquare{} GrassR{y 0.5} }
rule GrassR 3 {GrassR{r 2} }
rule GrassR 3 {GrassR{r 1} }
rule GrassR 10 {GrassR{s 0.95} }
rule GrassR 10 {GrassL{} }
rule FilledSquare { SQUARE{} }
rule ShadedSquare { SQUARE{} StripeMe{y -0.2 b 1.0 s 0.4} StripeMe{y -0.4 b 1.0 s 0.4} StripeMe{y -0.6 b 1.0 s 0.4}}
rule StripeMe { StripeMe{b -0.1} }
rule StripeMe 2 { SQUARE{} }
// random shrinkage
rule Evergreen { Evergreen{s 0.95} }
rule Evergreen { EvergreenTrunk{} }
// attempt a base before starting branches
rule EvergreenTrunk 40 { SQUARE{} EvergreenTrunk{y 0.5} }
rule EvergreenTrunk { EvergreenL{} }
rule EvergreenTrunk { EvergreenR{} }
// biased to lean right
rule EvergreenL 3 { SQUARE{} EvergreenL{y 0.5 s 0.99}}
rule EvergreenL { EvergreenL{s 0.99}}
rule EvergreenL { EvergreenL{r 0.25} }
rule EvergreenL 2 { EvergreenL{r -0.125} }
rule EvergreenL 3 { BranchStart{} EvergreenL{} }
rule EvergreenL 0.1 { EvergreenR{} }
// biased to lean right
rule EvergreenR 3 { SQUARE{} EvergreenR{y 0.5 s 0.99}}
rule EvergreenR { EvergreenR{s 0.99}}
rule EvergreenR 2 { EvergreenR{r -0.25} }
rule EvergreenR { EvergreenR{r 0.125} }
rule EvergreenR 3 { BranchStart{} EvergreenR{} }
rule EvergreenR 0.1 { EvergreenL{} }
rule BranchStart{ BranchL{r 100 s 0.4} }
rule BranchStart{ BranchL{r 90 s 0.4} }
rule BranchStart{ BranchL{r 95 s 0.4} }
rule BranchStart{ BranchR{r 260 s 0.4} }
rule BranchStart{ BranchR{r 265 s 0.4} }
rule BranchStart{ BranchR{r 270 s 0.4} }
// biased to bend down
rule BranchL 8 { SQUARE{} BranchL{y 0.3}}
rule BranchL 4 {BranchL{s 0.98}}
rule BranchL 0.4 { BranchL{r 5} BranchL{r -20 s 0.6} }
rule BranchL 0.3 { BranchL{r -3 s 0.97} BranchL{r 5 s 0.6} }
rule BranchL 0.05{}
// biased to bend down
rule BranchR 8 { SQUARE{} BranchR{y 0.3}}
rule BranchR 4 {BranchR{s 0.98}}
rule BranchR 0.4{ BranchR{r -5} BranchR{r 20 s 0.6} }
rule BranchR 0.3{ BranchR{r 3 s 0.97} BranchR{r -5 s 0.6} }
rule BranchR 0.05{}
lagroue
Posts: 114 Joined: Wed Jul 06, 2005 11:33 pm
Location: Paris, France
Contact:
Post
by lagroue » Fri Jul 08, 2005 12:41 am
megaduck0 wrote: Watch out - they're really heavy on the shape count.
Indeed. But it's really beautiful !
aaronstj
Posts: 66 Joined: Wed Jul 06, 2005 11:34 am
Location: Seattle
Post
by aaronstj » Fri Jul 08, 2005 10:19 am
I made an evergreen a couple of days ago, but it doesn't loook as good as yours. More of a young tree/christmas tree than your stately fir. Nevertheless, I stuck it in your forest:
Code: Select all
startshape Forest
rule Forest 500 {Grass{} Forest{x 0.2} }
// be sure to adjust tree probability if one type of tree is commented out
rule Forest 7 {Tree{y 1} Forest{x 0.4} }
rule Forest 10 {AaronsTree {y 0.4} Forest{x 0.4} }
rule Forest 5 {Evergreen{s 1.5 y 0.4} Forest{x 0.4} }
rule Forest {}
rule Tree 10 { ShadedSquare{} Tree {y 0.7} }
rule Tree 20 { Tree {s 0.994} }
rule Tree 10 { Tree {r 1} }
rule Tree 10 { Tree {r -1.5} }
rule Tree 0.1 { Tree {r -5} Tree {r 20 s 0.4} }
rule Tree 0.3 { Tree {r -10} Tree {r 35 s 0.5} }
rule Tree 0.1 { Tree {r 5} Tree {r -20 s 0.4} }
rule Tree 0.3 { Tree {r 10} Tree {r -35 s 0.5} }
rule Grass 2 { Grass {b 0.1} }
rule Grass { Grass {s 1.1} }
rule Grass { Grass {s 0.9} }
rule Grass 2 { GrassL {s 0.3} }
rule Grass { GrassR {s 0.3} }
rule GrassL 15 {FilledSquare{} GrassL{y 0.5} }
rule GrassL 3 {GrassL{r -2} }
rule GrassL 3 {GrassL{r -1} }
rule GrassL 10 {GrassL{s 0.95} }
rule GrassL 2 {GrassR{} }
rule GrassR 15 {FilledSquare{} GrassR{y 0.5} }
rule GrassR 3 {GrassR{r 2} }
rule GrassR 3 {GrassR{r 1} }
rule GrassR 10 {GrassR{s 0.95} }
rule GrassR 10 {GrassL{} }
rule FilledSquare { SQUARE{} }
rule ShadedSquare { SQUARE{} StripeMe{y -0.2 b 1.0 s 0.4} StripeMe{y -0.4 b 1.0 s 0.4} StripeMe{y -0.6 b 1.0 s 0.4}}
rule StripeMe { StripeMe{b -0.1} }
rule StripeMe 2 { SQUARE{} }
// random shrinkage
rule Evergreen { Evergreen{s 0.95} }
rule Evergreen { EvergreenTrunk{} }
// attempt a base before starting branches
rule EvergreenTrunk 40 { SQUARE{} EvergreenTrunk{y 0.5} }
rule EvergreenTrunk { EvergreenL{} }
rule EvergreenTrunk { EvergreenR{} }
// biased to lean right
rule EvergreenL 3 { SQUARE{} EvergreenL{y 0.5 s 0.99}}
rule EvergreenL { EvergreenL{s 0.99}}
rule EvergreenL { EvergreenL{r 0.25} }
rule EvergreenL 2 { EvergreenL{r -0.125} }
rule EvergreenL 3 { BranchStart{} EvergreenL{} }
rule EvergreenL 0.1 { EvergreenR{} }
// biased to lean right
rule EvergreenR 3 { SQUARE{} EvergreenR{y 0.5 s 0.99}}
rule EvergreenR { EvergreenR{s 0.99}}
rule EvergreenR 2 { EvergreenR{r -0.25} }
rule EvergreenR { EvergreenR{r 0.125} }
rule EvergreenR 3 { BranchStart{} EvergreenR{} }
rule EvergreenR 0.1 { EvergreenL{} }
rule BranchStart{ BranchL{r 100 s 0.4} }
rule BranchStart{ BranchL{r 90 s 0.4} }
rule BranchStart{ BranchL{r 95 s 0.4} }
rule BranchStart{ BranchR{r 260 s 0.4} }
rule BranchStart{ BranchR{r 265 s 0.4} }
rule BranchStart{ BranchR{r 270 s 0.4} }
// biased to bend down
rule BranchL 8 { SQUARE{} BranchL{y 0.3}}
rule BranchL 4 {BranchL{s 0.98}}
rule BranchL 0.4 { BranchL{r 5} BranchL{r -20 s 0.6} }
rule BranchL 0.3 { BranchL{r -3 s 0.97} BranchL{r 5 s 0.6} }
rule BranchL 0.05{}
// biased to bend down
rule BranchR 8 { SQUARE{} BranchR{y 0.3}}
rule BranchR 4 {BranchR{s 0.98}}
rule BranchR 0.4{ BranchR{r -5} BranchR{r 20 s 0.6} }
rule BranchR 0.3{ BranchR{r 3 s 0.97} BranchR{r -5 s 0.6} }
rule BranchR 0.05{}
rule AaronsTree{
child {}
}
rule AaronsTree .35 {
child { }
branchl { }
branchr { }
}
rule branchl {
AaronsTree{ s .5 r -30 b .1}
}
rule branchr {
AaronsTree{ s .5 r 30 b .1}
}
rule branchl {
AaronsTree{ s .5 r -45 b .1}
}
rule branchr {
AaronsTree{ s .5 r 45 b .1}
}
rule branchl {
AaronsTree{ s .5 r -60 b .1}
}
rule branchr {
AaronsTree{ s .5 r 60 b .1}
}
rule child {
AaronsTree{ y .975 s .975 r -1}
shape {}
}
rule child {
AaronsTree{ y .975 s .975 r 1}
shape{}
}
rule shape {
SQUARE {}
}
aaronstj
Posts: 66 Joined: Wed Jul 06, 2005 11:34 am
Location: Seattle
Post
by aaronstj » Sat Jul 09, 2005 12:57 pm
Not to be Ted Turner, but I colorized the forest using the color patch that
Stephen Deken posted .
Code: Select all
startshape Forest
rule Forest 500 {GrassSeed{} Forest{x 0.2} }
// be sure to adjust tree probability if one type of tree is commented out
rule Forest 7 {Tree{y 0.4} Forest{x 0.4} }
rule Forest 5 {EvergreenSeed{s 1.5 y 0.4} Forest{x 0.4} }
rule Forest {}
rule Tree 10 { ShadedSquare{} Tree {y 0.7} }
rule Tree 20 { Tree {s 0.994} }
rule Tree 10 { Tree {r 1} }
rule Tree 10 { Tree {r -1.5} }
rule Tree 0.1 { Tree {r -5} Tree {r 20 s 0.4} }
rule Tree 0.3 { Tree {r -10} Tree {r 35 s 0.5} }
rule Tree 0.1 { Tree {r 5} Tree {r -20 s 0.4} }
rule Tree 0.3 { Tree {r 10} Tree {r -35 s 0.5} }
rule GrassSeed {
Grass { hue .35 b .35 sat .75 }
}
rule Grass 2 { Grass {b 0.1} }
rule Grass { Grass {s 1.1} }
rule Grass { Grass {s 0.9} }
rule Grass 2 { metaGrassL {s 0.3} }
rule Grass { GrassR {s 0.3} }
rule metaGrassL {
GrassL { b .01 }
}
rule GrassL 15 {FilledSquare{} metaGrassL{y 0.5} }
rule GrassL 3 {metaGrassL{r -2} }
rule GrassL 3 {metaGrassL{r -1} }
rule GrassL 10 {metaGrassL{s 0.95} }
rule GrassL 2 {GrassR{} }
rule GrassR 15 {FilledSquare{} GrassR{y 0.5} }
rule GrassR 3 {GrassR{r 2} }
rule GrassR 3 {GrassR{r 1} }
rule GrassR 10 {GrassR{s 0.95} }
rule GrassR 10 {GrassL{} }
rule FilledSquare { SQUARE{} }
rule ShadedSquare { SQUARE{} StripeMe{y -0.2 b 1.0 s 0.4} StripeMe{y -0.4 b 1.0 s 0.4} StripeMe{y -0.6 b 1.0 s 0.4}}
rule StripeMe { StripeMe2 { hue .57 sat .2 }}
rule StripeMe2 { StripeMe2{b -0.1} }
rule StripeMe2 { StripeMe2{sat -0.1} }
rule StripeMe2 2 { SQUARE{} }
rule EvergreenSeed {
Evergreen { hue .60 b .5 sat 1}
}
// random shrinkage
rule Evergreen { Evergreen{s 0.95} }
rule Evergreen { EvergreenTrunk{} }
// attempt a base before starting branches
rule EvergreenTrunk 40 { SQUARE{ s 1} EvergreenTrunk{y 0.5 b -.005} }
rule EvergreenTrunk { EvergreenL{} }
rule EvergreenTrunk { EvergreenR{} }
rule MetaEvergreenL { EvergreenL {hue -.20}}
// biased to lean right
rule EvergreenL 3 { SQUARE{} EvergreenL{y 0.5 s 0.99}}
rule EvergreenL { EvergreenL{s 0.99}}
rule EvergreenL { EvergreenL{r 0.25} }
rule EvergreenL 2 { EvergreenL{r -0.125} }
rule EvergreenL 3 { BranchStart{} EvergreenL{} }
rule EvergreenL 0.1 { EvergreenR{} }
// biased to lean right
rule EvergreenR 3 { SQUARE{} EvergreenR{y 0.5 s 0.99}}
rule EvergreenR { EvergreenR{s 0.99}}
rule EvergreenR 2 { EvergreenR{r -0.25} }
rule EvergreenR { EvergreenR{r 0.125} }
rule EvergreenR 3 { BranchStart{} EvergreenR{} }
rule EvergreenR 0.1 { EvergreenL{} }
rule BranchStart{ BranchL{r 100 s 0.4 hue -0.2 b -.2} }
rule BranchStart{ BranchL{r 90 s 0.4 hue -0.2 b -.2} }
rule BranchStart{ BranchL{r 95 s 0.4 hue -0.2 b -.2} }
rule BranchStart{ BranchR{r 260 s 0.4 hue -0.2 b -.2} }
rule BranchStart{ BranchR{r 265 s 0.4 hue -0.2 b -.2} }
rule BranchStart{ BranchR{r 270 s 0.4 hue -0.2 b -.2} }
// biased to bend down
rule BranchL 8 { SQUARE{} BranchL{y 0.3 b -.0025 sat -.005}}
rule BranchL 4 {BranchL{s 0.98}}
rule BranchL 0.4 { BranchL{r 5} BranchL{r -20 s 0.6} }
rule BranchL 0.3 { BranchL{r -3 s 0.97} BranchL{r 5 s 0.6} }
rule BranchL 0.05{}
// biased to bend down
rule BranchR 8 { SQUARE{} BranchR{y 0.3 b -.0025 sat -.005}}
rule BranchR 4 {BranchR{s 0.98}}
rule BranchR 0.4{ BranchR{r -5} BranchR{r 20 s 0.6} }
rule BranchR 0.3{ BranchR{r 3 s 0.97} BranchR{r -5 s 0.6} }
rule BranchR 0.05{}