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++;
}
}
------------------------------------------------------------------------------------------------

0 comments:
Post a Comment