Results 1 to 12 of 12

Thread: 3D Fractal Model Generator - exist?

  1. #1
    Member seeminglee's Avatar
    Join Date
    Feb 2007
    Location
    Brooklyn, NY
    Posts
    4

    3D Fractal Model Generator - exist?

    Hi,

    While I was shopping for renderers (after accidentally came across with Gelato), I saw quite a few renderings on different sites showing 3D fractals in action. This leads me to suspect that there must be some generators out there that can generate 3D fractals models and export them as usable 3d formats such as OBJ, etc.

    I have googled around but the closest I have found is Chaoscope (http://www.chaoscope.org/) which is an awesome piece of software. Unfortunately, although it obviously contains 3d info, there doesn't appear to be an option to export it out.

    I have played with random attractors in code, but since I just recently picked up Python, I am not quite prepared to write my own plugin. Does anyone know if any of such scripts / plugin / non-blender software with export option exist (free or commercial)?

    Any help would be greatly appreciated.

    thanks,
    See-ming
    ...
    SML = See-ming Lee = Design + Technology + Marketing Strategy
    http://www.seeminglee.com
    http://blog.seeminglee.com



  2. #2
    Member PapaSmurf's Avatar
    Join Date
    Sep 2004
    Location
    Southeast USA
    Posts
    8,812
    terragen 2 for terrains



  3. #3
    Member Fligh's Avatar
    Join Date
    Dec 2002
    Location
    Here
    Posts
    10,428
    A Python script from Kekol:

    Code:
     import Blender
    from Blender import NMesh,Draw,BGL
    print "----------------------"
    print "Iniciando Copos Test"
    print "----------------------"
    current=2
    Nivel=Draw.Create(2)
    Radio=Draw.Create(1.0)
    Relacion=Draw.Create(0.5)
    TRAZO=Draw.Create(current+1)
    bts = [[Draw.Create(0.),Draw.Create(0.),Draw.Create(0.)],[Draw.Create(0.),Draw.Create(0.),Draw.Create(0.)],
     [Draw.Create(0.),Draw.Create(0.),Draw.Create(0.)],[Draw.Create(0.),Draw.Create(0.),Draw.Create(0.)],
     [Draw.Create(0.),Draw.Create(0.),Draw.Create(0.)],[Draw.Create(0.),Draw.Create(0.),Draw.Create(0.)]]
    tortuga=[0.,0.,0.]
    recorrido1=[[0.,1.,0.]]
    recorrido2=[[-1.,0.,0.],[1.,0.,0.]]
    recorrido3=[[0.,1.,0.],[1.,0.,0.],[-1.,0.,0.]]
    recorrido4=[[0.,1.,0.],[0.,-1.,0.],[1.,0.,0.],[-1.,0.,0.]]
    recorrido5=[[0.,1.,0.],[0.,-1.,0.],[1.,0.,0.],[-1.,0.,0.],[0.,0.,1.]]
    recorrido6=[[0.,1.,0.],[0.,-1.,0.],[1.,0.,0.],[-1.,0.,0.],[0.,0.,1.],[0.,0.,-1.]]
    recorridos=[recorrido1,recorrido2,recorrido3,recorrido4,recorrido5,recorrido6]
    obj=Blender.Object.GetSelected()[0]
    md=obj.getData()
    for i in range(len(recorridos[current])):
     bts[i][0].val=recorridos[current][i][0]
     bts[i][1].val=recorridos[current][i][1]
     bts[i][2].val=recorridos[current][i][2]
    def reset():
     tortuga=[0.,0.,0.]
    def avanzar(desp,rel):
     global tortuga
     tortuga[0]+=desp[0]*rel
     tortuga[1]+=desp[1]*rel
     tortuga[2]+=desp[2]*rel
    def retroceder(desp,rel):
     global tortuga
     tortuga[0]-=desp[0]*rel
     tortuga[1]-=desp[1]*rel
     tortuga[2]-=desp[2]*rel
    def generaCopo(nivel,radio,rel):
     if (nivel==0):
      drawCopo(radio)
     else:
       generaCopo(nivel-1,radio,rel)
      for i in range(len(recorridos[current])):
       avanzar(recorridos[current][i],radio*(1+rel))
       generaCopo(nivel-1,radio*rel,rel)
       retroceder(recorridos[current][i],radio*(1+rel))
     
    def drawCopo(r):
     no = Blender.NMesh.PutRaw(md)
     no.setLocation(tortuga[0],tortuga[1],tortuga[2])
     no.setSize(r,r,r)
    def check():
     global bts,recorridos,current
     for i in range(len(recorridos[current])):
      bts[i][0].val=recorridos[current][i][0]
      bts[i][1].val=recorridos[current][i][1]
      bts[i][2].val=recorridos[current][i][2]
    def draw():
     global Radio,Nivel,Relacion,TRAZO,bts
     BGL.glClearColor(0.5, 0.5, 0.6, 1)
     BGL.glColor3f(1.,1.,1.)
     BGL.glClear(BGL.GL_COLOR_BUFFER_BIT)
     Nivel=Draw.Number("Nivel=",2,10,79,100,18,Nivel.val,0,5,"Nivel de recurrencia")
     Radio=Draw.Number("Radio=",2,111,79,100,18,Radio.val,0.1,10.0,"Radio del Mesh")
     Relacion=Draw.Number("Relacion=",2,212,79,115,18,Relacion.val,0.01,1.0,"Relacion radial respecto del anterior")
      copos=["1 Vertice","2 Vertices","3 Vertices","4 Vertices","5 Vertices","6 Vertices"]
     menuText=''
     for i in range(len(copos)):
      menuText+="|"+copos[i]+"%x"+str(i+1)
     TRAZO=Draw.Menu("Copos%t"+menuText,3,10\
      ,50,85,20,TRAZO.val,"Distintos trazos de la tortuga")
     posy = 140
     for i in range(len(recorridos[current])):
      bts[i][0]=Draw.Number("x:",1,10,posy,75,20,bts[i][0].val,-5.,5.,"coordenada x")
      bts[i][1]=Draw.Number("y:",1,87,posy,75,20,bts[i][1].val,-5.,5.,"coordenada y")
      bts[i][2]=Draw.Number("z:",1,164,posy,75,20,bts[i][2].val,-5.,5.,"coordenada z")
      posy+=20
     BGL.glRasterPos2i(10,posy+20)
     Draw.Text("Las coordenadas indican donde ubicar la siguiente camada",'normal')
     Draw.Button("Generar Copo!",10,10,12,160,28)
     Draw.Button("Exit",99,180,15,30,22)
    def event(evt,val):
     if evt==Draw.ESCKEY: Draw.Exit()
    def bevent(evt):
     global current,bts,recorridos
     if evt==3:
      current=TRAZO.val-1
      if current>=len(recorridos):
       current=0
      check()
     if evt==10:
      reset()
      for i in range(len(recorridos[current])):
       recorridos[current][i][0]=bts[i][0].val
       recorridos[current][i][1]=bts[i][1].val
       recorridos[current][i][2]=bts[i][2].val
      generaCopo(Nivel.val,Radio.val,Relacion.val)
     if evt==99:
      print "-----------------------"
      print "Terminando Copos Test"
      print "-----------------------"
      Draw.Exit()
     Blender.Redraw()
    Draw.Register(draw,event,bevent)

    Run it from the Text Editor with Alt-P.

    %<
    BLENDER - You'll get it when you get it.



  4. #4
    Member pixelmass's Avatar
    Join Date
    Jan 2006
    Location
    The world that never was
    Posts
    3,628
    Chaospro
    Will export .obj and .pov files.
    (Windoz)
    Last edited by pixelmass; 10-Feb-07 at 00:18.
    Be who you are! And say what you feel, because those who mind don't matter, and those who matter, don't mind. -- Dr. Seuss



  5. #5
    Edit:
    Nevermind, you already mentioned chaoscope.



  6. #6
    Member 3D-Penguin's Avatar
    Join Date
    Nov 2004
    Location
    Germany
    Posts
    717
    If an OPENGL program doesn't have a obj export function:
    http://ogle.eyebeamresearch.org/

    Edit: I tried it with chaoscope. It doesn't work, as it's just a very huge point cloud and doesn't even contain faces.
    Last edited by 3D-Penguin; 17-Feb-07 at 02:29.



  7. #7
    Member Skottish's Avatar
    Join Date
    Oct 2004
    Location
    Here and Now
    Posts
    902
    The big mathematics packages like Mathematica, Matlab, and Octave (free), can export 3D formats. I think that they export primarily to DXF and VRML.



  8. #8
    Hi All
    Try K-3D or K-3D Surf

    One of these should help in someway I think,

    DT



  9. #9
    Member LarryPhillips's Avatar
    Join Date
    May 2006
    Location
    USA
    Posts
    1,137
    Take a look at TopMod, a manifold mesh modeling system that generates high genus manifold shapes. Reads and writes .obj files. Been seeing some great looking renders of objects generated by this app at the Indigo renderer site. Haven't made time to try it myself but it's definitely on my todo list.

    http://www-viz.tamu.edu/faculty/ergu...arch/topology/



  10. #10
    Originally Posted by seeminglee View Post
    Hi,

    While I was shopping for renderers (after accidentally came across with Gelato), I saw quite a few renderings on different sites showing 3D fractals in action. This leads me to suspect that there must be some generators out there that can generate 3D fractals models and export them as usable 3d formats such as OBJ, etc.

    I have googled around but the closest I have found is Chaoscope (http://www.chaoscope.org/) which is an awesome piece of software. Unfortunately, although it obviously contains 3d info, there doesn't appear to be an option to export it out.

    I have played with random attractors in code, but since I just recently picked up Python, I am not quite prepared to write my own plugin. Does anyone know if any of such scripts / plugin / non-blender software with export option exist (free or commercial)?

    Any help would be greatly appreciated.

    thanks,
    See-ming


    There is a Julia fractal generator script for blender and you could write it for other types with a little python work. Chaoscope looks as though if you did get its 3d data you would be stuck with a ton of vertices.



  11. #11
    It doesn't let you export, but UltraFractal can simulate the look of 3D. It lets you set the position of the light source to control which way the shadows fall. I did the pic below.

    A program similar to Chaoscope is Apophysis. It generates Flame Fractals.



    Steve S.



  12. #12
    Member 3D-Penguin's Avatar
    Join Date
    Nov 2004
    Location
    Germany
    Posts
    717
    Nice pic Steve, as 3d data it would be far too huge anyway. Downloading that proggy. Have you got some more pics like that?

    EDIT: Don't worry, i found some:
    http://www.fractaldaydreams.com/uf1.html
    Last edited by 3D-Penguin; 17-Feb-07 at 03:11.



Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •