The clone wars

L’accĂ©lĂ©ration GPU que propose l’API molehill, c’est la promesse d’une gestion faramineuse de polygones,
des dĂ©mos impressionnantes affichant des centaines d’objet ou personnages ont dĂ©jĂ  Ă©tĂ© montrĂ©, mais n’avez-vous pas remarquĂ© qu’elles ne prĂ©sentaient gĂ©nĂ©ralement qu’un seul et mĂŞme objet dupliquĂ©?
S’il est possible d’obtenir ce resultat c’est grâce au clonage d’objet, ou plus prĂ©cisĂ©ment de buffer, car le clonage affecte quasiment en rien la mĂ©moire, certes le nombre de polygones que doit dessiner le GPU augmentera mais en gĂ©nĂ©ral il peut en dessiner des millions sans problème.

donc clonez, en utilisant cette technique vous économiserez la mémoire car il y aura toujours le même buffer utilisé pour chaque clone affiché à l’écran.
le gain de performance sera impressionnant !

Dans Away4, un objet 3D est composĂ© de vertices, uvs et d’indices de face.
Lors du clonage ces données sont partagées.
L’objet clonĂ© obtient une nouvelle matrice de transformation qui permettra de positionner toutes ces donnĂ©es Ă  l’Ă©cran de façon autonome.

Dans away4 on procède ainsi:

var sheep:Sheep=new Sheep(new ColorMaterial(0xFFFFFF));
view.scene.addChild(sheep);

var dolly:Mesh=sheep.clone();
view.scene.addChild(dolly);

Ce qui est génial c’est que même les objets 3D animés peuvent être clonés tout en gardant une animation indépendante !
En voilĂ  la preuve avec ma collection de canards ( vivants )

Les sources de cette dĂ©mo sont accessible via le svn d’Away3D 4 « AS3SkinExporterStressTest.as » :)
Le modèle 3D ainsi que ses animations on été exportés depuis 3ds max directement en classes AS3 compatible Away4 via l’exporter AS3SkinExporter.

George Cloné