Flash 10 – Rotation 3D d’une facette

admin février 7th, 2009

Suite à la sortie de Flash 10, j’ai voulu tester la propriété d’un MovieClip qui peut maintenant en plus des coordonnés X, Y avoir une position en Z et lui assigner un angle via rotationZ.

Je me suis fortement inspiré d’un article du blog de Mike Chambers. J’ai traduit son code source en français et fais quelques changements. Ce qui est très intéressant, c’est que le moteur de rendu calcul automatiquement les fuyantes en perspective.

A noter pour ceux qui ne la connaîtraient pas, l’astuce qui permet d’accéder à une propriété d’un objet via la chaîne de caractère de son nom.

// cette écriture
trace(logo.rotationZ);

// est identique à
property:String = "rotationZ";
trace(logo[property]);

Clic-droit sur le fichier Flash pour accéder aux fichiers sources et à son Zip ou lien.

2 Responses to “Flash 10 – Rotation 3D d’une facette”

  1. bastienon 06 mar 2009 at 2:50

    bonjour,
    Cette fonction .rotationZ ne marche que dans CS4 ? sa veut dire qu’il y a des fonction as3 contenue dans CS4 qui ne sont pas dans CS3 ?

  2. TiTion 17 avr 2009 at 9:40

    C’est une très bonne démo qui montre les dernières possibilités du SDK Flex en termes de 3D :)

    Cela dit cette démo se base sur une image (), donc les transformations 3D fonctionnent bien.
    Je dois faire face à un problème de mon côté, car je n’utilise pas une image comme source mais une Shape :
    -Je dessine une forme en ActionScript, en traçant des lignes à partir d’un fichier de points
    [-J'ajoute cette Shape au canevas, en l'incluant dans un UIComponent.]
    -J’applique une rotation (.rotationY = 10; par exemple)
    -Je modifie l’échelle (.scaleX et .scaleY)

    => et là c’est le drame, c’est tout pixelisé :-(
    Il semblerait que le flash player transforme ma Shape « vectorielle » en BitmapData… >.<
    (cf liens)
    Mouarf c’est nul !

    Donc je vais tenté de faire un merdier genre dérotationer, mettre à l’échelle, rerotationer pour éviter cette pixelisation, mais si quelqu’un à déjà trouvé une solution fonctionnelle ou d’autres idées je suis preneur !

    Liens :
    http://opensource.adobe.com/wiki/display/flexsdk/3D+Effects+Support
    « projection matrix: the matrix used to take a object in 3D and flatten it down into a bitmap that can be rendered on screen »
    http://board.flashkit.com/board/showthread.php?t=792782
    « Objects become bitmaps upon rotation in CS4. »

Trackback URI | Comments RSS

Leave a Reply