Ceci est une ancienne révision du document !


A PCRE internal error occured. This might be caused by a faulty plugin

~~META:date created=2010-04-18~~ {{tag>3d programmation python maya 3dsmax vray maths}} ======Éponge de Menger====== Fractale 3D dite [[wp>Éponge de Menger]]. **Principe grossier:** à chaque itération on coupe chaque cube en trois en long, en large et en travers, puis on retire les cubes centraux. Génération des modèles : Maya, Mel-Python. \\ Images : 3ds max, VRay. {{gallery>..:galerie?500x500&mengersponge_*&showtitle}} ^ Itération| 0 | 1 | 2 | 3 | 4 | 5 | ^ Éléments| 1 | 20 | 400 | 8.000 | 160.000 | 3.200.000 | ^ Polygones| 6 | 120 | 2.400 | 48.000 | 960.000 | 19.200.000 | ^ Fichier .obj| 1.5 Ko | 30.5 Ko | 640 Ko | 13 Mo | 62 Mo | ~500 Mo | ^ Génération ((Ces temps correspondent à la génération du modèle sous Maya, pas au rendu des images. Temps enregistrés sur un i7 860 à 2.8 GHz.))| < 1 sec | < 1 sec | 1 sec | 5 sec | 640 sec | ? | ^ Rendu ((Ces temps correspondent au rendu des images avec VRay sous 3ds max. Temps enregistrés sur un i7 860 à 2.8 GHz.))| 20 sec | 25 sec | 40 sec | 75 sec | 286 sec | ? | <file python mengerSponge.py> ## # Menger Sponge # Nicolas Liautaud 2010 # Maya python script ## from maya.cmds import * from math import * def mengerSponge(x, y, z, sz, it, lvl=0): if lvl==it: polyCube(w=sz, h=sz, d=sz) move(x, y, z) else: s = sz / 3.0; for i in range(-1, 2): for j in range(-1, 2): for k in range(-1 ,2): sum = abs(i) + abs(j) + abs(k) if(sum and sum!=1): mengerSponge(x+i*s,y+j*s,z+k*s,s,it,lvl+1) def run(it=0, sz=50.0): if objExists('pCube1'): select(all=True) delete() mengerSponge(0, 0, 0, sz, it) select(cl=True) viewFit() def win(): window(t='Menger Sponge') columnLayout(rs=20) intSliderGrp(l='Iteration', field=1, min=0, max=3, v=0, cc=lambda x:run(int(x))) run() win() </file> -> La pyramide de Sierpinski a été rendue selon la même méthode : [[pyramide_sierpinski]]