Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

3D TEMPS REEL EN AS2


Information sur la source

Catégorie :3D Niveau : Initié Date de création : 08/01/2005 Vu / téléchargé: 13 087 / 4 092

Note :
9,64 / 10 - par 11 personnes
9,64 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note


Description

Voici un exemple de 3D temps reel tres simple, qui utilise ma class matrix3d.
Vous pouvez creer tres simplement des lignes, des polygones et des courbes en 3D.

 

Source

  • // definition du centre de la scene
  • var pos:Object = new Object();
  • pos.x = 500;
  • pos.y = 300;
  • //
  • // definition de la class matricielle
  • var m3d:matrix3d = new matrix3d();
  • //
  • // On dessine notre figure via l'API de la class matrix3d
  • // -> on dessine un polygone
  • // la fonction registerPolygon() prend en parametre un array de point pouvant contenir autant de points que vous voulez.
  • m3d.registerPolygon(
  • new Array(
  • m3d.registerPoint(200,200,-200),
  • m3d.registerPoint(200,-200,-200),
  • m3d.registerPoint(-200,-200,-200),
  • m3d.registerPoint(-200,200,-200)
  • )
  • );
  • // un autre...
  • m3d.registerPolygon(
  • new Array(
  • m3d.registerPoint(200,200,200),
  • m3d.registerPoint(200,-200,200),
  • m3d.registerPoint(-200,-200,200),
  • m3d.registerPoint(-200,200,200)
  • )
  • );
  • // on dessine 4 courbes:
  • m3d.registerCurve(
  • m3d.registerPoint(200,200,200),
  • m3d.registerPoint(200,-200,200),
  • m3d.registerPoint(200,-200,-200)
  • );
  • m3d.registerCurve(
  • m3d.registerPoint(200,200,200),
  • m3d.registerPoint(200,200,-200),
  • m3d.registerPoint(200,-200,-200)
  • );
  • m3d.registerCurve(
  • m3d.registerPoint(200,200,-200),
  • m3d.registerPoint(200,-200,-200),
  • m3d.registerPoint(200,-200,200)
  • );
  • m3d.registerCurve(
  • m3d.registerPoint(200,200,-200),
  • m3d.registerPoint(200,200,200),
  • m3d.registerPoint(200,-200,200)
  • );
  • // on dessines qques lignes pour terminer la figurer:
  • m3d.registerLine(
  • m3d.registerPoint(-200,200,-150),
  • m3d.registerPoint(-200,200,-200)
  • );
  • m3d.registerLine(
  • m3d.registerPoint(-200,-200,-150),
  • m3d.registerPoint(-200,-200,-200)
  • );
  • m3d.registerLine(
  • m3d.registerPoint(-200,-200,-150),
  • m3d.registerPoint(-200,200,-150)
  • );
  • m3d.registerLine(
  • m3d.registerPoint(-200,-200,-150),
  • m3d.registerPoint(200,-200,200)
  • );
  • m3d.registerLine(
  • m3d.registerPoint(-200,200,-150),
  • m3d.registerPoint(200,200,200)
  • );
  • //
  • // on update la scene, via la fonction créée en bas de cette page de script.
  • m3d.rotate_y(-0.5);
  • m3d.rotate_x(-0.5);
  • update();
  • //
  • // Cette partie du code sert à effectuer des rotation
  • // de scene via le pavé directionnel du clavier.
  • var itv = setInterval(function () {
  • if (Key.isDown(Key.LEFT)) {
  • m3d.rotate_y(-0.1);
  • update();
  • }
  • if (Key.isDown(Key.RIGHT)) {
  • m3d.rotate_y(0.1);
  • update();
  • }
  • if (Key.isDown(Key.UP)) {
  • m3d.rotate_x(0.1);
  • update();
  • }
  • if (Key.isDown(Key.DOWN)) {
  • m3d.rotate_x(-0.1);
  • update();
  • }
  • }, 50);
  • //
  • // Cette fonction efface la scene et la redessine dans sa nouvelle configuration.
  • function update() {
  • _root.clear();
  • m3d.drawMatrix(_root, pos, {lineStyle:{thickness:1, color:0x000000, alpha:100}});
  • }
  • //
// definition du centre de la scene
var pos:Object = new Object();
pos.x = 500;
pos.y = 300;
//
// definition de la class matricielle
var m3d:matrix3d = new matrix3d();
//
// On dessine notre figure via l'API de la class matrix3d
// -> on dessine un polygone
// la fonction registerPolygon() prend en parametre un array de point pouvant contenir autant de points que vous voulez.
m3d.registerPolygon(
						new Array(
							m3d.registerPoint(200,200,-200),
							m3d.registerPoint(200,-200,-200),
							m3d.registerPoint(-200,-200,-200),
							m3d.registerPoint(-200,200,-200)
						)
					);
// un autre...
m3d.registerPolygon(
						new Array(
							m3d.registerPoint(200,200,200),
							m3d.registerPoint(200,-200,200),
							m3d.registerPoint(-200,-200,200),
							m3d.registerPoint(-200,200,200)
						)
					);
// on dessine 4 courbes:
m3d.registerCurve(
					m3d.registerPoint(200,200,200),
					m3d.registerPoint(200,-200,200),
					m3d.registerPoint(200,-200,-200)
				 );
m3d.registerCurve(
					m3d.registerPoint(200,200,200),
					m3d.registerPoint(200,200,-200),
					m3d.registerPoint(200,-200,-200)
				 );
m3d.registerCurve(
					m3d.registerPoint(200,200,-200),
					m3d.registerPoint(200,-200,-200),
					m3d.registerPoint(200,-200,200)
				 );
m3d.registerCurve(
					m3d.registerPoint(200,200,-200),
					m3d.registerPoint(200,200,200),
					m3d.registerPoint(200,-200,200)
				 );
// on dessines qques lignes pour terminer la figurer:
m3d.registerLine(
					m3d.registerPoint(-200,200,-150),
					m3d.registerPoint(-200,200,-200)
				 );
m3d.registerLine(
					m3d.registerPoint(-200,-200,-150),
					m3d.registerPoint(-200,-200,-200)
				 );
m3d.registerLine(
					m3d.registerPoint(-200,-200,-150),
					m3d.registerPoint(-200,200,-150)
				 );
m3d.registerLine(
					m3d.registerPoint(-200,-200,-150),
					m3d.registerPoint(200,-200,200)
				 );
m3d.registerLine(
					m3d.registerPoint(-200,200,-150),
					m3d.registerPoint(200,200,200)
				 );
//
// on update la scene, via la fonction créée en bas de cette page de script.
m3d.rotate_y(-0.5);
m3d.rotate_x(-0.5);
update();
//
// Cette partie du code sert à effectuer des rotation 
// de scene via le pavé directionnel du clavier.
var itv = setInterval(function () {
	if (Key.isDown(Key.LEFT)) {
		m3d.rotate_y(-0.1);
		update();
	}
	if (Key.isDown(Key.RIGHT)) {
		m3d.rotate_y(0.1);
		update();
	}
	if (Key.isDown(Key.UP)) {
		m3d.rotate_x(0.1);
		update();
	}
	if (Key.isDown(Key.DOWN)) {
		m3d.rotate_x(-0.1);
		update();
	}
}, 50);
//
// Cette fonction efface la scene et la redessine dans sa nouvelle configuration.
function update() {
	_root.clear();
	m3d.drawMatrix(_root, pos, {lineStyle:{thickness:1, color:0x000000, alpha:100}});
}
//

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de tom le 08/01/2005 10:28:33 administrateur CS

miam miam,
mais comme j'avais deja remarqué, l'as2 ne rajoute pas beaucoup de vitesse à la génération d'objets. Mais sinon cool pour les courbes, dommage qu'on puisse pas generer des polygones avec des courbes (apparement).
Je vais en tout cas regarder le code de ce pas...

signaler à un administrateur
Commentaire de WhiteMagus le 08/01/2005 11:30:58

Bon. OK. Là, ça calme. :D
Le code est super, l'effet visuel rend vachement bien, le code est clair et l'anim ne prend pas beaucoup de ressource CPU.
C'est super, encore une fois.
Ben merci bien. Grâce à cette source je vais pouvoir arranger ma syntaxe du 3D sous Flash.
@+ !

signaler à un administrateur
Commentaire de WhiteMagus le 08/01/2005 11:33:04

PS. : 10/10 ;)

signaler à un administrateur
Commentaire de Blacknight91titi le 08/01/2005 11:59:20

la source en MX 2004 :'(
domage

signaler à un administrateur
Commentaire de BlackWizzard le 08/01/2005 14:26:17 administrateur CS

oui, MX2004 car il sagit d'une class as2.

signaler à un administrateur
Commentaire de pegase31 le 08/01/2005 14:30:33 administrateur CS

même remarque que Blacknight .. mais encore une fois chapeau !

Il manquerait juste un peu de perspective et ce serait parfait ! ;)

signaler à un administrateur
Commentaire de John_Doe_88 le 08/01/2005 15:32:34

Bravo et merci bien (aussitôt dit aussitôt fait c cool...)
En tout cas nickel un code super clair, efficace, ... Enfin comme d'habitude quand ça vient de BlackWizzard, une source de référence ! 10

signaler à un administrateur
Commentaire de BlackWizzard le 08/01/2005 16:53:43 administrateur CS

John_Doe_88 > ce n'est pas le cours ça..
Le cours n'est pas fini d'ecrire, mais il apprendra a creer une class de ce type, avec les maths, la logique, etc...
Mais etant donné que les concours des ecoles de commerce ça commence bientot, je n'ai pas trop le temps de finir de l'ecrire, donc il ne sera publié que dans qques semaines.

signaler à un administrateur
Commentaire de John_Doe_88 le 08/01/2005 18:30:40

ah ok.  En tout cas pour moi ça suffit largement.
Bon courage pour tes concours !

signaler à un administrateur
Commentaire de bilaloch le 16/01/2005 17:55:21

Slt BlackWizard,

Merci pour cette source (claire, rapide et sans bugs).
10/10

++

BILALoch

signaler à un administrateur
Commentaire de cjerome le 10/08/2007 02:10:50

bonjour je suis debutant en 3d, et je ne sais pas comment faire pour que ta classe matrix3d soit prise en compte?

signaler à un administrateur
Commentaire de BlackWizzard le 10/08/2007 13:42:18 administrateur CS

CJEROME > telecharge le fichier, et ouvre le flp (fichier projet flash) tu verra un exemple.
Avant d'etre utilisée, la class est incluse.

Pour les autres qui suivent la conversation >
Dans mon dernier commentaire j'indiquai que je passait les concours d'ecole de commerce.
Update: J'ai été pris aux deux concours, je passe en 3eme année, que je fait aux USA ;)

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.