++++ culagovski.net » Blog Archive » “Fractalize” 3ds max plugin examples + code

“Fractalize” 3ds max plugin examples + code

Some example models created with the “Fractalize” maxscript plugin, that I wrote to allow students of the undergraduate course I teach to experiment with shapes generated by recursion.

The variables and dialog are in Spanish (as the course is taught in Chile), but should be fairly self-explanatory.

Some students have done interesting work with this, I’ll post some examples later.

sc1.jpg

sc3.jpg

 

sc2.jpg

Code after jump.

macroScript Fractal category:"fractal"(

fn fractal objeto profundidad angulos escala desplazamiento =

(

if profundidad > 0 then

(

objeto.wirecolor = (color (255-(profundidad*20))(255-profundidad*15) 255 )

for i = 1 to angulos.count do

(

maxops.clonenodes objeto newNodes:&nuevoObjeto clonetype:#instance

scale nuevoObjeto [escala,escala,escala]

in coordsys local rotate nuevoObjeto angulos[i]

in coordsys local move nuevoObjeto desplazamiento

fractal nuevoObjeto (profundidad-1) angulos escala (desplazamiento)

)

)		)

rollout fractalizar "Fractalizar"

(

group "Cantidad"

(

label spc "profundidad "

spinner profundidad  range:[1,10,3] scale:1 type:#integer

label numang "copias "

spinner numcop  range:[1,3,1] scale:1 type:#integer

)

group "Rotación"

(

label ang1 "Angulo 1" align:#left

spinner angulo1x "x1 " range:[-360,360,0] scale:1 type:#integer

spinner angulo1y "y1 " range:[-360,360,0] scale:1 type:#integer

spinner angulo1z "z1 " range:[-360,360,0] scale:1 type:#integer

label ang2 "Angulo 2" align:#left

spinner angulo2x "x2 " range:[-360,360,0] scale:1 type:#integer  enabled:false

spinner angulo2y "y2 " range:[-360,360,0] scale:1 type:#integer  enabled:false

spinner angulo2z "z2 " range:[-360,360,0] scale:1 type:#integer  enabled:false

label ang3 "Angulo 3" align:#left

spinner angulo3x "x3 " range:[-360,360,0] scale:1 type:#integer  enabled:false

spinner angulo3y "y3 " range:[-360,360,0] scale:1 type:#integer  enabled:false

spinner angulo3z "z3 " range:[-360,360,0] scale:1 type:#integer  enabled:false

)

group "Escala "

(

spinner escala  range:[0.1,2,1] scale:0.1 type:#float

)

group "desplazamiento"

(

spinner dx "x " range:[-1000,1000,0] scale:1 type:#integer

spinner dy "y " range:[-1000,1000,0] scale:1 type:#integer

spinner dz "z " range:[-1000,1000,0] scale:1 type:#integer

)

button create "Fractal"

on numcop changed num do

(if (num == 1) do

(

angulo2x.enabled = false

angulo2y.enabled = false

angulo2z.enabled = false

angulo3x.enabled = false

angulo3y.enabled = false

angulo3z.enabled = false

)

if (num == 2) do

(

angulo2x.enabled = true

angulo2y.enabled = true

angulo2z.enabled = true

angulo3x.enabled = false

angulo3y.enabled = false

angulo3z.enabled = false

)

if (num == 3) do

(

angulo2x.enabled = true

angulo2y.enabled = true

angulo2z.enabled = true

angulo3x.enabled = true

angulo3y.enabled = true

angulo3z.enabled = true

)

)

on create pressed do

(

undo on

(

angulo1 = eulerangles angulo1x.value angulo1y.value angulo1z.value

angulo2 = eulerangles angulo2x.value angulo2y.value angulo2z.value

angulo3 = eulerangles angulo3x.value angulo3y.value angulo3z.value

if (numcop.value == 1) do angulos = #(angulo1)

if (numcop.value == 2) do angulos = #(angulo1,angulo2)

if (numcop.value == 3) do angulos = #(angulo1,angulo2,angulo3)

desplazamiento = [dx.value,dy.value,dz.value]

if $ != undefined then fractal $ profundidad.value angulos escala.value desplazamiento

)

)

)

createDialog fractalizar)

One Response to ““Fractalize” 3ds max plugin examples + code”

  1. niels andersen Says:

    hola soy estudiante de arquitectura de dinamarca, y me a interezado mucho vuestro articulo, sobre “Fractalize” maxscript plugin.
    pro he buscado este plugins en la ret y no le e podido encontrar, seriais tan amables de mandarme un link para encontralo, me paresen muy interesantes vuestros experimentos
    en esperas de vuestra atencion

    niels andersen

Leave a Reply