“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.
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)
May 17th, 2008 at 3:40 pm
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