Invader Fractal in Mel version 1 Still some squares being left out, but all in all looking good.
version 2 Complete, but need to add more size variations
version 4 variation 1 Rewrote most of the space filling portion, and added frames etc.
variation 2
variation 3 Based on Jared Tarbells Invader Fractal. except done in maya melscript. Below is the space filling portion of the script, using a main grid of 100x50 squares, we go through each one($j), if $j is white, j++, if not, search a random sized area for white squares, if a white square exists, we search random sized area - 1 for white squares and so on until random size = 1 and it must be black due to the first condition. If the random sized area have no white squares, we call the invader_plane()(not shown), which makes the invader plane at that area, and color that particular area white on the main_grid and continue(j++). There are two for loops within the main loop, L loop for going horizontal, which are increments of 50, and the K loop going vertical, which are increments of 1.
------------------------------------------------------------------------------------------------
version 2 Complete, but need to add more size variations
version 4 variation 1 Rewrote most of the space filling portion, and added frames etc.
variation 2
variation 3 Based on Jared Tarbells Invader Fractal. except done in maya melscript. Below is the space filling portion of the script, using a main grid of 100x50 squares, we go through each one($j), if $j is white, j++, if not, search a random sized area for white squares, if a white square exists, we search random sized area - 1 for white squares and so on until random size = 1 and it must be black due to the first condition. If the random sized area have no white squares, we call the invader_plane()(not shown), which makes the invader plane at that area, and color that particular area white on the main_grid and continue(j++). There are two for loops within the main loop, L loop for going horizontal, which are increments of 50, and the K loop going vertical, which are increments of 1. ------------------------------------------------------------------------------------------------
global proc main_method() {
undoInfo -state off;
global int $i;
int $j, $k, $l, $ex;
float $vtxPos[];
string $xyz[];
for($j = 0; $j < 5000; $j++) {
print("START----------------------------------------\n");
$ex = 0;
select -cl;
//int $j = 6;
int $random_size = rand(1,11);
hilite main_grid;
for($l = ($random_size - 1) * 50; $l >= 0; $l = $l - 50){
string $bah[0] = `listSets -o main_grid.f[$j]`;
$xyz[0] = $bah[0];
if ($xyz[0] == "whiteShaderSG") {
// print("stopped immediately!!\n");
$ex = 1;
continue;
}
for ($k = $random_size - 1; $k >= 0; $k = $k - 1) {
select -add ("main_grid.f[" + ($j+$k+$l) + "]");
print("K LOOP ");
print("main_grid.f[" + ($j+$k+$l) + "]\n" + "$j=" + $j + " $k=" + $k + " $l=" + $l/50 + " size=" + $random_size + "\n");
string $bah[0] = `listSets -o main_grid.f[($j + $k + $l)]`;
if($bah[0] == "whiteShaderSG") {
// print("coord " + "random_size=" + $random_size + " k=" + $k + " l/50=" + ($l/50) + "\n"); //coordinate for white square
int $dif;
if($k > ($l/50)) {
print("k larger");
int $dif;
for($dif = 0;$dif <= ($random_size - $l/50); $dif++) {
// print("dif=" + $dif + " random_size=" + $random_size + " k=" + $k + "\n");
select -d ("main_grid.f[" + ($j+$k+$l+($dif*50)) + ":" + ($j+$k+$l+$random_size+($dif*50)) + "]");
}
for($dif = 0;$dif <= ($random_size - $k); $dif++) {
// print("dif=" + $dif + " random_size=" + $random_size + " k=" + $k + "\n");
select -d ("main_grid.f[" + ($j + ($random_size - $dif) * 50) + ":" + ($j + $random_size + ($random_size - $dif) * 50) + "]");
}
$random_size = $k;
}
else if($k < ($l/50)) {
print("l larger");
$k = 0;
select -cl;
$random_size = $l/50;
}
else {
select -cl;
print("K is equal to L\n\n");
$random_size = $k;
$k = 0;
break;
}
}
}
print(`ls -sl`);
print("L LOOP ");
print("main_grid.f[" + ($j+$k+$l) + "]\n" + "$j=" + $j + " $k=" + $k + " $l=" + $l/50 + " size=" + $random_size + "\n\n");
}
if ($ex == 1) {
continue;
}
hilite main_grid;
sets -e -forceElement whiteShaderSG;
print(`ls -sl`);
polyChipOff -ch 0 -kft 1 -dup 1 -off 0 `ls -sl`;
polySeparate -ch 0 -n temp main_gridShape;
CenterPivot;
move -r (($random_size/2)*(-1)) ($random_size/2) ($random_size/2) temp1.scalePivot temp1.rotatePivot;
select temp temp1;
parent -w;
select -r main_grid;
doDelete;
rename "temp" "main_grid";
float $vtxPos[3] = `xform -q -ws -t temp1.vtx[0]`;
select -r temp1;
doDelete;
invader_plane;
ls -sl;
move -r $vtxPos[0] ($vtxPos[1]+1) $vtxPos[2];
scale -r ($random_size) ($random_size) ($random_size);
$i++;
}
}
------------------------------------------------------------------------------------------------


















2. create 3 color slbox and add a color v1 to each of them and add the following code
color red = comp(v1,0);
result = red;
duplicate the code to green and blue substituting 0 with 1 and 2 respectively.
3. create a float spline, and rename the first knot to low, and last knot to high.
4. duplicate the spline and rename the spline to each color. ie red_spline
5. shift select the SLBOX nodes in order of R then G then B. and select the splines in order as well.
6. Right click and click on package.
7. open the package, select red_spline, publish basis, low, p0, high, p1. Do the same for GB.
8. close the package.
This package takes three inputs and has simple contrast controls, it would be great if someone can add the float spline GUI inside the package.