Sources du moteur 3D ActionScript 2 beta
Par -Alexandre LEGOUT aka LAlex- le vendredi, septembre 26 2003, 16:33 - Projets - Lien permanent
Voici la version beta téléchargeable sous forme d'API du moteur 3D AS2 que je vous ai montré récemment (qui était une version alpha). Pourquoi une version beta ? Petit rappel : une version alpha ne possède pas toutes les fonctionnalités, alors qu'une version beta possède toutes les fonctionnalités, mais elles peuvent être buguées (ce qui est le cas ici :P)...
L'API possède donc maintenant les fonctionnalités de remplissage des faces et leur éclairage. Dans l'interface graphique, vous pouvez maintenant déplacer la lumière ... ![]()
Le bug porte en fait sur sur le tri des facettes de la plus éloignée à la plus proche de la caméra, tri qui n'est pas foncièrement bon, mais pas forcément mauvais, c'est à dire qu'il fonctionne une fois sur deux, car si dans la même position je fais deux fois le rendu, une fois le tri est bon, une fois il ne l'est pas ... :(. Je n'arrive d'ailleurs pas à comprendre pourquoi ... alors si un cador de la programmation 3D pouvait se pencher sur ce code, ce serait super sympa ...
J'utilise l'algorithme du peintre, qui consiste simplement à trier les profondeurs moyennes de chaque face et de s'en servir pour le tri ...
Les packages nécessaires sont inclus dans l'archive. La classe "de base" est la classe Shape, qui est la classe représentant un objet 3D, avec ses vertex, arrêtes et faces.
Les fonctionnalités à venir :
- Gestion de la distance par rapport ) la lumière
- Gestion de l'intensité et de la distance des lumières
- Utilisation des BSP Trees
- Test de remplissage avec des dégradés (simulation du remplissage de Gouraud)
- Debugage ... :?
Commentaires
On s'approche d'un rendu en cellShading
Vraiment bien en tout cas, dès que je pourrais je regarderai ce que tu as fais, cela m'intéresse beaucoup.
Merci pour cette source
Le cellshading c'est juste un petit effet non voulu au depart :roll: J'ai mis des arrêtes avec un lineStyle(10,0), et comme les faces s'affichent au dessus des arrêtes, seules les arrêtes qui "dépassent" se voient ...
Un exemple tout simple de bug : déplacez la camera vers la droite, jusqu'à voir le coté gauche du cube ... On voit deux bouts des faces du dessus et du dessous qui clignotent, ce qui veut dire que parfois le tri est bon, et parfois il ne l'est pas ...
Très impressionnant! Je suis bien curieux de savoir où tu trouves tous tes encseignements pour faire de la 3d comme ça en flash. Des bouquins ? Des sites ?
Ca vient de plusieurs endroits :

- mes souvenirs de la géométrie 3D et des vecteurs datant du lycée
- des sites comme http://membres.lycos.fr/heulin/3D/Sommaire.html ou http://pages.infinit.net/jstlouis/3dbhole/ (EN) qui ont le problème de donner des exemples en C :? Mais il suffit de savoir adapter en POO ...
- un peu de réflexion aussi quand même sur l'optimisation, comme la : http://www.lalex.com/blog/detail.php?id=30 ...
D'ailleurs, ca me fait penser qu'un petit coup de flasm lui ferait sûrement du bien !
Salut,
)
!
juste un petit lien comme ça en passant pour te donner des infos sur la 3D. Je te conseille un excellent bouquin sur la 3D très complet, avec des schémas et des algos complets qu'a rédigé Rémy Malgouyres (page perso : http://llaic3.u-clermont1.fr/~mr/) : "Algorithmes pour la synthèse d'images et l'animation 3D" (Je n'ai aucunes actions ou rémunération pour cette pub, mais je devais faire un Lancer de Rayons, et je suis tombé sur cet excellent bouquin ...
Si tu es féru de 3D et à la recherche d'explications claires, ce livre est fait pour toi
Bonne continuation...
hi, belle prouesse technique, mais concrètement ça sert à quoi ? il est évident que tu vas pas faire un modeler autre que primitif , bientot un export 3DS ? :ppppp
al >> concretement, dans l'état actuel des choses, ca ne sert à rien ... une API n'est qu'un outil que les développeurs exploitent aprés ... aux utilisateurs de cet API d'en faire quelque chose d'utile !!!
La manipulation d'objets 3D en temps réel dans Flash est toujours difficile à mettre en oeuvre ... si je peux amener ma petite contribution, tant mieux !
SI j'arrive un jour au niveau de http://www.mx3d.com/ , je serai bien content ! 
J'avais fait un temps un importateur des fichiers ASCII, avec un script PHP qui parsait ce fichier et le transofrmait en XML pour le moteur, mais je sais plus ce que j'en ai fais ...
Et pour info, je ne prétends par faire ici des trucs utiles. Je me contente de publier ce qui m'interesse avec la prétention de croire que ca peut interesser d'autres gens... et je ne m'interesse pas qu'aux trucs utiles !
Ma remarque n'était pas méchante

Mais en fait j'ai pas du tout approfondi le dev 3D sous flash du fait que je n'y voyait pas d'application concrète... Impressionant 3DMX mais je pense pas que t'en sois très loin.En tous les cas je connaissais pas ton blog et tes création, et bien c'est sympa, nice job
hello

Est-ce que tu pourrais juste ajouter une variable de transparence pour les clips? En principe, pour voir ce qui s'affiche et où... c plus simple :p
En tout cas, bô boulot
ton code m'interesse fortement je debut en ActionScript, et la posssibilité de faire un petit moteur en 3D m'interesse fortement. J'ai deja a mes acquis un moteur en C++ et du raytracing. J'aisseille de regarder ton code le pb j'ai seulement accés au .as et j'arrive po a lire le .fla (j'ai seulement MX). J'ai trouvé d'autre script qui permet des rendu3D, voir des imports de model 3D XML, mais bien souvant les .fla ne sont po compatible MX arrh ! (si quelqu'un avait la solution a mon pb merci !)
Sinon je boss ton code et flash et je te tiens o courant
themadmax > Le moteur est codé en ActionScript 2, donc tu es obligé d'avoir MX 2004 pour pouvoir exploiter le code !
++ ^^
Donc pour ceux qui n'ont pas Flash MX 2004 avec l'ActionScript 2.0 (qui a l'air plus simpa ms temp p)
Voila mon moteur 3D en AS 1.0. Il fonctionne avec des classes et differents fichiers. Il ne gere pas de matrice de projection, ni d'algo de profondeur, ni de clipping ... presque rien
Afin cela fonctionne, et programmer avec ce langage c pas simple du tout, vue qu'il ne leve aucune erreures, de plus avec un cube l'affichage n'est pas tres fluide mais faut po trop se pleindre.
Je suis biensur ouvert a tout commentaire.
@+
_______________
source :
http://themadmax.free.fr/3D.zip
J'aime pas trop ta nomenclature... par exemple une classe pour moi cela doit toujours commencer par un nom en majuscule puis le reste en minuscule
(je chipotte :))

Sinon merci pour ce lien, c'est toujours bon à prendre
bye
salut,
En fait c'est un pbm courant de tri des faces et de Z-buffer (lier au backface culling entre autre)
si je ne m'abuse...
AAAAAHHHH, Z-sorting quand tu nous tiens. ^^
(avec shockwave3d on a le meme pbm de z-sorting mais avec la transparence il faut quelque peu bidouiller pour passer au travers....)
un petit lien (pour réviser) >> [url:d096b37ec3]http://www.mandragor.org/tutoriels/tutoriel.php?id=5&chap=9[/url]
Chouet ton blog !!!
A+
Bien joué ton cube, j'avoue être impressionné par le rendu..
Il faudra que je me penche un peu plus sur ton code pour voir ce que je peux en apprendre =<^_^>=
Merci encore pour ton travail
Très intéressant comme exemple d'étude. Je reviendrai suivre l'évolution du sujet. Merci pour la source.
Fil des commentaires de ce billet