chilly winter forest

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

Post Reply
megaduck0
Posts: 13
Joined: Wed Jul 06, 2005 3:36 pm

chilly winter forest

Post by megaduck0 »

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 :D

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{} }

User avatar
LaT3x
Posts: 68
Joined: Wed Jul 06, 2005 3:11 pm
Location: Madrid, Spain

Post by LaT3x »

Fantastic view :)
I worked on similar thing, but I forget the idea. I was better... this is really cool 8)

User avatar
aaronstj
Posts: 66
Joined: Wed Jul 06, 2005 11:34 am
Location: Seattle

Post by aaronstj »

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 »

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{}

User avatar
lagroue
Posts: 114
Joined: Wed Jul 06, 2005 11:33 pm
Location: Paris, France
Contact:

Post by lagroue »

megaduck0 wrote:Watch out - they're really heavy on the shape count.
Indeed. But it's really beautiful !

User avatar
aaronstj
Posts: 66
Joined: Wed Jul 06, 2005 11:34 am
Location: Seattle

Post by aaronstj »

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 {}
}

User avatar
aaronstj
Posts: 66
Joined: Wed Jul 06, 2005 11:34 am
Location: Seattle

Post by aaronstj »

Not to be Ted Turner, but I colorized the forest using the color patch that Stephen Deken posted.

Image

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{} 

Post Reply