change this in addCurveto ( )

 

$shape = `curve -d 1 -p 0 0 0 -p 1 0 0`;

 

Lcontrol string

 

set rules(4) "44<y4>x4<y4<y44"

render [generate 1 "4<y4<x44<y4" rules] 90

 

change this in addCurveto ( )

 

$shape = `curve -d 1 -p 0 0 0 -p 1 0 0`;

 

Lcontrol string

 

set rules(4) "44<y4>x4<y4<y44"

render [generate 2 "4<y4<x44<y4" rules] 90

Lcontrol string

 

set rules(~4) "44<y4>x4<y4<y44"
set rules(~4) "44<x4>y4<x4<x44"

 

render [generate 1 "4<y4<x44<y4" rules] 90

 

 

set rules(~4) "44<y4>x4<y4<y44"
set rules(~4) "44<x4>y4<x4<x44"

 

render [generate 2 "4<y4<x44<y4" rules] 90

 

 

change this in addCurveto ( )

 

$shape = `curve -d 1 -p 0 0 0 -p 0.5 1 0.5`;

 

Lcontrol string

 

set rules(~4) "44<y4>x4<y4<y44"
set rules(~4) "44<x4>y4<x4<x44"

render [generate 2 "4<y4<x44<y4" rules] 90

 

change this in addCurveto ( )

 

$shape = `curve -d 1 -p 0 0 0 -p 1 1 0`;

 

 

Lcontrol string

 

set rules(~4) "44<y4>x4<y4<y44"
set rules(~4) "44<x4>y4<x4<x44"

render [generate 2 "4<y4<x44<y4" rules] 90

 

$shape = `curve -d 1 -p 0 0 0 -p 0.1 1 0.1`;

 

Lmel

puts $out "global string \$stack\[\];"
#puts $out "select -all;"
#puts $out "delete;"

puts $out "clear(\$stack);"

 

Lmelprocs.mel. Add in AddCurveTo

 

$shape = `instance pCube1`;

 

Thoughts:

rules like 4 = 124

could produce

121212124 after 3 generations.

 

4 can be interpolated as extrude

1 can be interpoloated as Poke face or chamfer (original) vertex.

2 can be interpolated as move vertex...

set rules(~4) "44<y4>x54<y4<y4"
set rules(~4) "44<x54>y4<x54<x544"

render [generate 0 "4<y4<x544<y4" rules] 90

 

Lmelproces.mel

 

global proc string addCurveTo(string $node)
{
$shape = `instance pCube1`;
//$shape = `curve -d 1 -p 0 0 0 -p 1 0 0`;
parent -r $shape $node;
$child = `group -em`;
parent -r $child $shape;
move -os 0 1 0 $child;
return $child;
}

 

set rules(~4) "44<y4>x54<y4<y4"
set rules(~4) "44<x54>y4<x54<x544"

render [generate 1 "4<y4<x544<y4" rules] 90

 

 

Lmelproces.mel

 

global proc string addCurveTo(string $node)
{
$shape = `instance pCube1`;
//$shape = `curve -d 1 -p 0 0 0 -p 1 0 0`;
parent -r $shape $node;
$child = `group -em`;
parent -r $child $shape;
move -os 0 1 0 $child;
return $child;
}

Lmelproces.mel

global proc string addCubeTo(string $node)
{
$shape = `instance pCube2`;
//$shape = `curve -d 1 -p 0 0 0 -p 1 0 0`;
parent -r $shape $node;
$child = `group -em`;
parent -r $child $shape;
//move -os 0 1 0 $child;
return $child;
}

Lmel.tcl

5 {puts $out "\$tnode = addCubeTo(\$tnode);"}

 

Lcontrol.tcl

set rules(~4) "44<y4>x54<y4<y4"
set rules(~4) "44<x54>y4<x54<x544"

render [generate 1 "4<y4<x544<y4" rules] 90

 

 

I created pCube1 and P Cube2

Kock snowflake - a shape proposed by Niels von Kock in 1905.

 

The shapes in this section are based on the following axiom,

4<z4<z4<z4

  The z rotational angle is 90 degrees.

rules

44<z4<z4<z4<z4<z4>z4

 

First generation

 

second generation

 

 

set rules(4) "44<z4<z<z4<z4"

 

 

generation 3

 

 

set rules(4) "4<z4>z4>z44<z4<z4>z4"

 

 

second generation

 

set rules(4) "44<z4>z4<z4<z44"

 

second generation

 

and the next generation

 

set rules(4) "4<z44<z<z4<z4"

 

 

set rules(4) "4<z4>z4<z4<z4"

 

 

Tree structure

 

set rules(4) "44"

set rules(G) "4{>zG}{<zG}4G"

render [generate 2 "G" rules] 90

 

 

The instance was scaled 0.8

 

 

Three generations

 

 

Tree structure

 

set rules(4) "445"

set rules(G) "4{>zG}{<zG}{>xG}{<xG}4G"

 

render [generate 3 "G" rules] 90

 

 

four generations

 

set rules(4) "44"

set rules(G) "4{>zG}{<zG}{>xG}{<xG}45G"

 

render [generate 3 "G" rules] 45

 

Next gen

Expressions in Lmel.tcl

// animation controlled by Expressions

 

proc render {lstr angle tran scal} {
set out [open H:/vsfx705/Lsystem//temp.mel w]

# MEL begin_________________________________________
puts $out "source \"H:/vsfx705/Lsystem/Lmelprocs.mel\";"
puts $out "global string \$stack\[\];"
puts $out "select -all;"
puts $out "delete;"
puts $out "clear(\$stack);"
puts $out "\$root = `group -em -n LSYS`;"
puts $out "\$tnode = `group -em`;"
puts $out "parent -r \$tnode \$root;"
set totalExp ""

for {set i 0} {$i < [string length $lstr]} {incr i} {
set char [string index $lstr $i]
switch $char {
> {set angle [expr abs($angle)] }
< {set angle [expr abs($angle) * -1] }
x {puts $out "rotate -r $angle 0 0 \$tnode;"}
y {puts $out "rotate -r 0 $angle 0 \$tnode;"}
z {puts $out "rotate -r 0 0 $angle \$tnode;"}

E {puts $out "\$str = \"setAttr \\\"\" + \$tnode + \".tx\\\" (sin(frame/25))\;\";"
puts $out "expression -s \$str -ae 1;"
}
F {puts $out "\$str = \"setAttr \\\"\" + \$tnode + \".tx\\\" (sin(frame/15)*5)\;\";"
puts $out "expression -s \$str -ae 1;"
}

S {puts $out "scale -r $scal $scal $scal \$tnode;"}
R {set tran [expr abs($tran)*-1]}
X {puts $out "move -r $tran 0 0 \$tnode;"}
Y {puts $out "move -r 0 $tran 0 \$tnode;"}
Z {puts $out "move -r 0 0 $tran \$tnode;"}
4 {puts $out "\$tnode = addSectionTo(\$tnode);"}
1 {puts $out "\$tnode = addConeTo(\$tnode);"}
8 {puts $out "\$tnode = addSectionTo(\$tnode);"}
d {puts $out "\$tnode = dupObject(\$tnode);"}
\{ { puts $out "push(\$tnode);"}
\} { puts $out "\$tnode = pop();"}
}
}
close $out
}

 

 

Lcontrol.TCL

//expression strings were added

 

source H:/vsfx705/Lsystem/Lgenerator.tcl
source H:/vsfx705/Lsystem/Lmel.tcl
source H:/vsfx705/Lsystem/Lmayaport.tcl

set rules(G) "4RX{>zFG}4{>