la 3D sans peine (hum)
Le samedi 14 juillet 2007 à 15:09 :: Flash-AS3 :: #18 :: rss :: 2952 lectures
mon premier moteur 3D ... quel bordel !
décor | animation | perspectives
Je me suis enfin mis a la 3d en flash, il ne s'agit en aucun cas de concurrencer les moteurs existants mais plutot, humblement, d'essayer de comprendre les bases des bases de la representation d'objets 3d.
Dans le cadre de mon boulot il y a des chances que je sois amené à créer un système pour présenter des batiments en 3D. Ill y a des chances pour qu'ils me demandent de le faire en flash parce que flash, c'est adapté à nos besoins et flash prouve qu'on est modernes (même et surtout si on n'en a pas besoin).
vu la taille du bordel (120.000m²) je pense que ça va pas être simple.
Néanmoins le truc bien c'est que j'ai du temps pour faire des essais ratés et des recherches sur des solutions.
Quand on parle de 3D en flash, de sexy à SANDY il n'y a que trois lettres. J'avais l'espoir fou de simplifier sufisament les bâtiments pour pouvoir les afficher en temps réel grâce à Sandy. J'ai commencé un script d'export de modèles 3D en MaxScript (le langage de scripting de 3DSMAX) Maxscript c'est commme LINGO un peu sauf qu'on ne peut pas pointer la syntaxe et qu'il est très capricieux, j'ai bien passé 2 jours dessus avant qu'il me sorte ce que je voulais à savoir une liste de vertex et les polygones corresondants.
juste après ça je me suis dit c'est bon, je m'attaque à SANDY ça va être du gâteau j'ai les positions de tous mes points les coordonnées et tout.
C'est là que j'ai réalisé que je ne connaissais strictement rien à la 3D et que sorti de 3DS max, je ressemblais à une huître avec un nuchaku : ridicule.
la preuve ? j'avais commencé un système genre GTA 2 en AS rien du tout : le moteur de GTA le plus mauvais de la terre. ça m'a pris un temps fou (plusieurs jours!... quand j'y pense je te jure), je n'ai quasiment rien appris.
c'est codé comme un cochon, tout procédural, 4 sprites = 40% de ressources CPU. des movieClips de partout, des onEnterFrame en veux tu en voila, une vue statique, pas d'angle, pas de rotations.
et le mieux : pas de valeurs négatives pour le positionnement des blocs et oui vu que c'est du tile based, je ne peux pas attacher des objets sous 0 ! une catastrophe.
mais avec SANDY c'était pas mieux ! j'ai réussi à faire une boîte là où je pensais rendre des dinosaures photoréalistes (comme ça par exemple (shockwave)^^)
donc j'ai laissé pisser:
je rendrai chaque bâtiment en flv, avec un angle fixe et roule ma poule et puis je monterai mes plans avec un panning tout con startDrag, stopdrag zoom+ zoom- et c'est tout.
décor | animation | perspectives
mais tout de même la 3D... ça me grattait. Je me suis colle aux (excellents) tutoriaux de (Monsieur) Senocular sur kirupa et après une semaine rocambolesque voila le truc : C'est une boite (si si !) exportee depuis max avec ses polygones et a l'interieur une serie de 20 vertex generes aleatoirement.
la page toute seule
Impressionnant hein !
la caméra est assez complète je ne savais pas que ce serait l'objet le plus complexe à faire. Il manque une target et des méthodes pointAt, zoomTo, moveTo. mais déja on peut en avoir plusieurs (dans l'exemple ci dessus, il y en a 4) Il lui manque ausi le clipping: les objets qui passent derriere la camera sont rendus, le zsorting : tel quel les faces sont rendues n'importe comment, aucune idée comment on fait pour les assortir, le mapping de textures, la gestion des lumières. Je suis pas tres doué pour ces trucs...
En gros ça peut aller pour faire des saynètes en fil de fer ou pour positionner des elements en 2.5D (sprites précalculés par exemple) dans un espace 3D.
je vais quand même continuer à bosser dessus.
décor | animation | perspectives
Un des objectifs que je me sui fixes est d'arriver a implementer un L-system en 3d pour faire un generateur de plantes.
ca devrait bien m'occuper vu le nombre de problemes qu'il y aura a resoudre. Puis apres quand je serai riche et celebre j'aimerais m'attaquer a un generateur de visages en 3d (style Roxik mais pas mappe parce que je ne sais pas faire) avec des morphs target et aussi un parseur de biped (figure anthropomorphe parametrique animable dans 3DSMAX: une poupee super sophistiquee en gros), puis un generateur de bacteries ou d'insectes, puis modeliser une fourmiliere, puis porter World of Warcraft en flash et enfin creer mon propre MMORPG avec 198 races avec un gestionnaire d'armees qui gerera en temps reel jusqu'a 25 millions soldats modelises en haute def mappes avec 12 shaders chacun et des cheveux en nurbs et de l'illumination globale en temps reel et avec des collisions et de la physique avancee ( j'ai deja le scenario : "le heros se reveille dans a chambre.")
Dans un autre registre, un generateur de terrains a partir d'un displaceMentMap et d'une echelle de couleurs, ca pourrait etre bien brutal.
je voudrais faire un generateur de nuages aussi.
Enfin, c'est cool que je me sois mis a la 3D parce que d'une part c'est pas si terrible a comprendre meme si je n'arriverai jamais a tout saisir. D'autre part, malgre mes limites, ca ouvre pas mal de perspectives en termes d'applications meme et surtout couple avec une representation 2d.
A vrai dire je crois meme que c'est la qu'il va falloir bosser ; un mamouth comme PV3D est encore une usine a gaz et pour l'instant sont encore destines a de la demo. En l'occurence l'aquarium avec le requin et les petits poissons (assez halluciannt ceci dit) arrive a faire lagger mon ordi du boulot (dual core 64 a 2.2Ghz gave de ram avec la grosse carte graphique) qui ne recule devant rien d'habitude.
D'ici a ce que tous les menages s'equipent de matos assez solide pour supporter ca, il me semble que les interfaces en 3d immersive resteront exceptionnelles.
Comparativement le shockWave 3D a quand meme un petit temps d'avance et des outils assez pousses (import des bipeds) pour faire ca.
copains
Commentaires
1. Le lundi 16 juillet 2007 à 20:07, par Durss
2. Le lundi 16 juillet 2007 à 23:05, par nicoptere
3. Le lundi 16 juillet 2007 à 23:25, par Seraf
4. Le lundi 16 juillet 2007 à 23:52, par nicoptere
5. Le mardi 17 juillet 2007 à 00:54, par Seraf
6. Le vendredi 20 juillet 2007 à 11:42, par starmonkey
7. Le jeudi 6 septembre 2007 à 16:11, par lutaseb
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.