mayation_

Lorenz attractor

Posted in MEL script by A. Benjasem on September 3, 2009

Parametric forms are created using mathematical formulas. Those formulas could be as simple as x + y = 22, or they could be generated from complex mathematical systems that have already been set by scientists and mathematicians. In this post, we’re exploring a system initiated by Edward Lorenz who was studying the movement and behavior of gaseous systems. He came up with the following formula that can be used to draw and trace the path of the gas molecules.

dx = delta * (y – x)

dy = r * x – y – x * z

dz = x * y - beta * z

For more information about Lorenz Attractor we recommend this website.

Mayation_lorenz


global proc Lorenz() {
$iterations = 2000;
float $x = 1.0;
float $y = 1.0;
float $z = 1.0;
float $newdx;
float $newdy;
float $newdz;
int $i = 0;
curve -n Lorenz -d 3 -p $x $y $z;
do {
$newdx = dx($x, $y, $z);
$newdy = dy($x, $y, $z);
$newdz = dz($x, $y, $z);
$x = $x + (0.01 * $newdx);
$y = $y + (0.01 * $newdy);
$z = $z + (0.01 * $newdz);
curve -a -p $x $y $z Lorenz;
$i++;
} while ($i < $iterations);
}
global proc float dx(float $x, float $y, float $z) {
float $delta = 11.0;
return $delta * ($y – $x);
}
global proc float dy(float $x, float $y, float $z){
float $r = 50.0;
return -1 * $x * $z + $r * $x – $y;
}

global proc float dz(float $x, float $y, float $z){
float $beta = 4.0;
return $x * $y – $beta * $z;
}

Wireframe render

Posted in tools by A. Benjasem on September 1, 2009

Many times while designing, I find it more interesting to look at a solid object in wireframe mode. In any 3D software the modeling is done through wireframe. When rendering the model however, it becomes solid. This tool allows you to convert any object made with Nurbs or surfaces in Maya to wireframe. You can change the number of sections or frames in every column and row. You can also change the radius of each frame.

mayation_wireframeCombo

     

global proc wireframe(int $u, float $v) {
  $obj = `ls -sl`;
  rebuildSurface -ch 1 -rpo 1 -rt 0 -end 1 -kr 0 -kcp 0 -kc 0 -su $u -du 3
                                          -sv $v -dv 3 -tol 0.01 -fr 0  -dir 2 $obj;
  int $i;
  string $curIso;
  float $inc_v;
  float $inc_u;
  float $curIsoValue;
  float $j = 0;
  $inc_v = (1.0 / $v);
  $inc_u = (1.0 / $u);
  $profile_radius = 0.05;  //change this value to change the size of the wireframe.
  $profile = `circle -ch on -o on -nr 0 1 0 -r $profile_radius ` ;
  for ($i = 0; $i <= $v; $i++) {
    $curIsoValue = ($inc_v * $j);
    $curIso = $obj[0] + ".v[" + $curIsoValue + "]";
    select -r  $curIso;
    $curve = `duplicateCurve -ch 1 -rn 0 -local 0  $curIso` ;
    extrude -ch true -rn false -po 0 -et 1 -fpt 1 -upn 0
                                  -rotation 0 -scale 1 $profile[0] $curve[0] ;
     $j = $j + 1;
   }
  $j = 0;
 for ($i = 0; $i <= $u; $i++) {
   $curIsoValue = ($inc_u * $j);
   $curIso = $obj[0] + ".u[" + $curIsoValue + "]";
   select -r  $curIso;
   $curve = `duplicateCurve -ch 1 -rn 0 -local 0  $curIso` ;
   extrude -ch true -rn false -po 0 -et 1
                            -fpt 1 -upn 0 -rotation 0 -scale 1 $profile[0] $curve[0] ;
    $j = $j + 1;
 } print "\n written by mayation.wordpress.org\n"  }
 

SolidForm solid to wireframe wireframeForm