begin process at 2010 02 10 15:27:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

3D

 > GET_RELATIVE_MATRIX3D: LE CONCEPT...

GET_RELATIVE_MATRIX3D: LE CONCEPT...


 Information sur la source

Note :
6 / 10 - par 2 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :3D Classé sous :getRelativeMatrix3D, flashCS4, matrix3D, zSorting, 3D Niveau :Initié Date de création :21/01/2009 Date de mise à jour :21/01/2009 20:36:39 Vu / téléchargé :4 986 / 499

Auteur : top30

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Voici une source qui vous ESSAIERA de vous expliquer comment
fonctionne la fonction "getRelativeMatrix3D()" de l'objet "Transform".

Je dis la source, je n'expliquerais à personne le pourquoi du comment si le code et les commentaires n'était pas suffisant... Désolé. J'aide ! Je ne forme pas !

Créér un nouveau doc flash CS4 de 800x600 en 50FPS
Lui attribué la classe la classe "Matrix3DExample"
(Fla et AS étant dans le même dossier, il va de soit)
Publier et voilà !

Source

  • /*
  • * hope®2009-HopeMultimedias.com[Top30]
  • * http://www.hopeMultimedias.com
  • */
  • package
  • {
  • import flash.display.* ;
  • import flash.events.* ;
  • import flash.geom.* ;
  • import flash.filters.* ;
  • /**
  • * @author Top30
  • */
  • public class Matrix3DExample
  • extends Sprite
  • {
  • public var world :Sprite ;
  • //
  • /**
  • * Constructeur
  • **/
  • public function Matrix3DExample()
  • :void{
  • // Décoration
  • this.addChild( this.getBackground(0x000000,0x444444) ) ;
  • // Container du monde 3D
  • this.world= new Sprite() ;
  • this.addChild( this.world ) ;
  • // Si "z" n'est pas défini, "getRelativeMatrix3D(this.stage)" retournera null
  • this.world.x= this.stage.stageWidth/2 ;
  • this.world.y= this.stage.stageHeight/2 ;
  • this.world.z= 0 ;
  • //////////////////////////////////////////////////////////////////////////////////
  • // Ajout de 8 cubes au sein du monde 3D
  • var i :int= -1 ;
  • var n :Number= Math.PI/4 ;
  • while( ++i< 8 ) this.world.addChild( this.getCube( 75, Math.cos(i*n)*150, Math.sin(i*n)*150,0) );
  • // Ecoutes
  • this.stage.addEventListener( Event.ENTER_FRAME, _enterFrameHandler ) ;
  • this.stage.addEventListener( MouseEvent.MOUSE_MOVE, _mouseHandler ) ;
  • }
  • //
  • /**
  • * Retourne un sprite "cube"
  • **/
  • public function getCube( size:Number, pX:Number, pY:Number, pZ :Number )
  • :Sprite{
  • // Le cube et sa position
  • var cube :Sprite= new Sprite() ;
  • cube.x= pX ; cube.y= pY ; cube.z= pZ ;
  • // Les faces
  • cube.addChild( this.getCubeFace( 0xFF0000, size, 0,-1, 0, -1, 0, 0 ) ) ;
  • cube.addChild( this.getCubeFace( 0x00FF00, size, 0, 2, 0, 0, 0, 1 ) ) ;
  • cube.addChild( this.getCubeFace( 0xFFFF00, size, 0, 1, 0, 1, 0, 0 ) ) ;
  • cube.addChild( this.getCubeFace( 0x0000FF, size, 0, 0, 0, 0, 0,-1 ) ) ;
  • cube.addChild( this.getCubeFace( 0x00FFFF, size, 1, 0, 0, 0,-1, 0 ) ) ;
  • cube.addChild( this.getCubeFace( 0xFF00FF, size, 1, 0, 0, 0, 1, 0 ) ) ;
  • cube.filters= [new GlowFilter(0x000000,1,25,25,1.25)] ;
  • return cube ;
  • }
  • //
  • /**
  • * Retourne un sprite "face de cube"
  • **/
  • public function getCubeFace( color:Number, size:Number=50, rX:Number=0, rY:Number=0, rZ:Number=0, pX:Number=0, pY:Number=0, pZ:Number=0 )
  • :Sprite{
  • // La face
  • var face :Sprite= new Sprite() ;
  • face.graphics.beginFill( color, .85 ) ;
  • face.graphics.drawRect( -size/2,-size/2, size,size) ;
  • // Sa rotation
  • face.rotationX= rX*90 ;
  • face.rotationY= rY*90 ;
  • face.rotationZ= rZ*90 ;
  • // Sa position
  • face.x= pX*(size/2) ;
  • face.y= pY*(size/2) ;
  • face.z= pZ*(size/2) ;
  • return face ;
  • }
  • /**
  • * Fait tourner le monde 3D
  • **/
  • private function _mouseHandler( e:MouseEvent )
  • :void{
  • var w :Number= this.world.x ; var h :Number= this.world.y ;
  • this.world.rotationY= ((e.stageX-w)/-w)*360 ;
  • this.world.rotationX= ((e.stageY-h)/-h)*360 ;
  • }
  • //
  • /**
  • * Calcul le Z sorting du monde 3D et ses enfants
  • **/
  • private function _enterFrameHandler( e:Event )
  • :void{
  • this.sortChild( this.world ) ;
  • }
  • //
  • /**
  • * Efface les enfants et les reindex selon leur "Z relatif"
  • * Est autorécursive sur les enfants "DisplayObjectContainer" contenant eux aussi des enfants
  • **/
  • public function sortChild( parent:DisplayObjectContainer )
  • :void{
  • var z :Number ;
  • var data :Object ;
  • var list :Array= [] ;
  • var matrix :Matrix3D ;
  • var child :DisplayObject ;
  • //
  • // Pour tous les enfants de parent...
  • var i :int= -1 ;
  • var j :int= -1 ;
  • while( ++i< parent.numChildren ){
  • child= parent.getChildAt(i) ;
  • //
  • // On récupère la matrice global par rapport au stage...
  • matrix= child.transform.getRelativeMatrix3D(this.stage) ;
  • // Au cas où le "z" de l'enfant ne serait pas définit.
  • // Evitant ainsi l'erreur du null en cas de "z" non définit...
  • if( matrix!=null ) list.push( {z:matrix.position.z, child:child} ) ;
  • // Si a des enfants "DisplayObjectContainer", on récursie
  • if( child is DisplayObjectContainer ) this.sortChild( child as DisplayObjectContainer ) ;
  • }
  • // On vide le parent des enfants
  • while( parent.numChildren>0 ) parent.removeChildAt(0) ;
  • // On trie les enfants par rapport à leur "z" relatif...
  • list.sortOn( "z", Array.NUMERIC|Array.DESCENDING ) ;
  • // On remplie le parent par rapport au tri "z" précédent
  • for each( data in list ) parent.addChild( data.child ) ;
  • }
  • //
  • /**
  • * Décoration
  • **/
  • public function getBackground( colUp:uint, colDown:uint )
  • :Shape {
  • var matrix :Matrix = new Matrix()
  • matrix.createGradientBox(400, 400, Math.PI/2, 0, 0);
  • var shape :Shape = new Shape() ;
  • shape.graphics.beginGradientFill("linear", [colUp, colDown], [1, 1], [1, 255], matrix, "pad", "rgb", 0) ;
  • shape.graphics.drawRect( 0, 0, 400, 400) ;
  • shape.width = this.stage.stageWidth ;
  • shape.height = this.stage.stageHeight ;
  • return shape ;
  • }
  • }
  • }
/*
* hope®2009-HopeMultimedias.com[Top30]
* http://www.hopeMultimedias.com
*/

package 
{
	import flash.display.* ;
	import flash.events.* ;
	import flash.geom.* ;
	import flash.filters.* ;
	
	/**
	 * @author Top30
	 */
	public class Matrix3DExample 
	extends Sprite
	{
		public var world :Sprite ;
		//
		
		/**
		 * Constructeur
		 **/
		public function Matrix3DExample() 
		:void{
			// Décoration
			this.addChild( this.getBackground(0x000000,0x444444) ) ;
						
			// Container du monde 3D
			this.world= new Sprite() ;
			this.addChild( this.world ) ;
			
			// Si "z" n'est pas défini, "getRelativeMatrix3D(this.stage)" retournera null
			this.world.x= this.stage.stageWidth/2 ;
			this.world.y= this.stage.stageHeight/2 ;
			this.world.z= 0 ;
			//////////////////////////////////////////////////////////////////////////////////
			
			// Ajout de 8 cubes au sein du monde 3D			
			var i :int= -1 ;
			var n :Number= Math.PI/4 ;
			while( ++i< 8 ) this.world.addChild( this.getCube( 75, Math.cos(i*n)*150, Math.sin(i*n)*150,0) );
			
			// Ecoutes
			this.stage.addEventListener( Event.ENTER_FRAME, _enterFrameHandler ) ;
			this.stage.addEventListener( MouseEvent.MOUSE_MOVE, _mouseHandler ) ;
		}
		//
		
		/**
		 * Retourne un sprite "cube"
		 **/
		public function getCube( size:Number, pX:Number, pY:Number, pZ :Number )
		:Sprite{
			// Le cube et sa position
			var cube :Sprite= new Sprite() ;
			cube.x= pX ; cube.y= pY ; cube.z= pZ ;
			
			// Les faces
			cube.addChild( this.getCubeFace( 0xFF0000, size,  0,-1, 0,  -1, 0, 0 ) ) ;
			cube.addChild( this.getCubeFace( 0x00FF00, size,  0, 2, 0,   0, 0, 1 ) ) ;
			cube.addChild( this.getCubeFace( 0xFFFF00, size,  0, 1, 0,   1, 0, 0 ) ) ;
			cube.addChild( this.getCubeFace( 0x0000FF, size,  0, 0, 0,   0, 0,-1 ) ) ;
			cube.addChild( this.getCubeFace( 0x00FFFF, size,  1, 0, 0,   0,-1, 0 ) ) ;
			cube.addChild( this.getCubeFace( 0xFF00FF, size,  1, 0, 0,   0, 1, 0 ) ) ;
			cube.filters= [new GlowFilter(0x000000,1,25,25,1.25)] ;
			
			return cube ;
		}
		//

		/**
		 * Retourne un sprite "face de cube"
		 **/
		public function getCubeFace( color:Number, size:Number=50, rX:Number=0, rY:Number=0, rZ:Number=0, pX:Number=0, pY:Number=0, pZ:Number=0 )
		:Sprite{
			// La face
			var face :Sprite= new Sprite() ;
			face.graphics.beginFill( color, .85 ) ;
			face.graphics.drawRect( -size/2,-size/2, size,size) ;
			
			// Sa rotation
			face.rotationX= rX*90 ;
			face.rotationY= rY*90 ;
			face.rotationZ= rZ*90 ;
			
			// Sa position
			face.x= pX*(size/2) ;
			face.y= pY*(size/2) ;
			face.z= pZ*(size/2) ;
			
			return face ;
		}
		
		/** 
		 * Fait tourner le monde 3D
		 **/
		private function _mouseHandler( e:MouseEvent )
		:void{
			var w :Number= this.world.x ; var h :Number= this.world.y ;
			
			this.world.rotationY= ((e.stageX-w)/-w)*360 ;
			this.world.rotationX= ((e.stageY-h)/-h)*360 ;
		}
		//
		
		/** 
		 * Calcul le Z sorting du monde 3D et ses enfants
		 **/
		private function _enterFrameHandler( e:Event )
		:void{
			this.sortChild( this.world ) ;
		}
		//
		
		/**
		 * Efface les enfants et les reindex selon leur "Z relatif"
		 * Est autorécursive sur les enfants "DisplayObjectContainer" contenant eux aussi des enfants
		 **/
		public function sortChild( parent:DisplayObjectContainer )
		:void{
			var z :Number ;
			var data :Object ;
			var list :Array= [] ;
			var matrix :Matrix3D ;
			var child :DisplayObject ;
			//
			// Pour tous les enfants de parent...
			var i :int= -1 ; 
			var j :int= -1 ; 
			while( ++i< parent.numChildren ){	
				child= parent.getChildAt(i) ;
				//
				// On récupère la matrice global par rapport au stage...
				matrix= child.transform.getRelativeMatrix3D(this.stage) ;
				
				// Au cas où le "z" de l'enfant ne serait pas définit.
				// Evitant ainsi l'erreur du null en cas de "z" non définit... 
				if( matrix!=null ) list.push( {z:matrix.position.z, child:child} ) ;
				
				// Si a des enfants "DisplayObjectContainer", on récursie
				if( child is DisplayObjectContainer ) this.sortChild( child as DisplayObjectContainer ) ;
			}
			
			// On vide le parent des enfants
			while( parent.numChildren>0 ) parent.removeChildAt(0) ;

			// On trie les enfants par rapport à leur "z" relatif...
			list.sortOn( "z", Array.NUMERIC|Array.DESCENDING ) ;
			
			// On remplie le parent par rapport au tri "z" précédent
			for each( data in list ) parent.addChild( data.child ) ;
		}
		//
		
		/**
		 * Décoration
		 **/
		public function getBackground( colUp:uint, colDown:uint )
		:Shape {
			var matrix :Matrix = new Matrix()
			matrix.createGradientBox(400, 400, Math.PI/2, 0, 0);
			
			var shape :Shape = new Shape() ;
			shape.graphics.beginGradientFill("linear", [colUp, colDown], [1, 1], [1, 255], matrix, "pad", "rgb", 0) ;
			shape.graphics.drawRect( 0, 0, 400, 400) ;
			shape.width = this.stage.stageWidth ;
			shape.height = this.stage.stageHeight ;
			
			return shape ;
		}
	}	
}

 Conclusion

La fonction "getRelativeMatrix3D()" peut être effectivement utile pour des concepts de 3D relativement basique.

Pour de la 3D plus précise, ou plus complexe, c'est vrai que des packages comm "PaperVision3D", "Always3D", "Sandy", etc... Sont bien plus perfomant.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

21 janvier 2009 20:36:39 :
Une simple faute !!!!! Que c'est chiant ce systeme de justifcation de mes c...s !!! Comme les notes et les commentaires. = )

 Sources du même auteur

Source avec Zip Source avec une capture BASE SCOLL SUPER SIMPLE
Source avec Zip AS3 PROTOTYPE
Source avec Zip Source avec une capture LIGHTFILTERFX: UNE CLASSE D'EFFET D'OMBRE ET DE RELIEF...
Source avec Zip Source avec une capture RENDERDELEGATION: UNE CLASSE SUR L'EVENT.RENDER DU STAGE...
Source avec une capture CLASS SOUNDSPECTRUM

 Sources de la même categorie

Source avec Zip Source avec une capture FORMULE 1 3D par gremlins7
Source avec Zip Source avec une capture MENU CARROUSEL FULL 3D CS4 par gremlins7
Source avec Zip Source avec une capture CARROUSEL EN VRAI 3D SOUS CS4 par pegase31
Source avec Zip Source avec une capture UNE TÊTE REGARDE LA SOURIS (ILLUSION DE 3D) par daddy11world
Source avec Zip Source avec une capture NUIT ETOILÉE EN 3D par daddy11world

 Sources en rapport avec celle ci

Source avec Zip PERSPECTIVE par quent191
Source avec Zip Source avec une capture FORMULE 1 3D par gremlins7
Source avec Zip Source avec une capture MENU CARROUSEL FULL 3D CS4 par gremlins7
Source avec Zip Source avec une capture CARROUSEL EN VRAI 3D SOUS CS4 par pegase31
Source avec Zip Source avec une capture UNE TÊTE REGARDE LA SOURIS (ILLUSION DE 3D) par daddy11world

Commentaires et avis

Commentaire de gremlins7 le 22/01/2009 01:00:18 3/10

Franchement, je sais pas ce que vous avez tous avec votre fierté. Top30, on sait que tu est un monstre en 3D...
En tout bien tout honneur, tu te méprends et je vais te le prouver :

Reprend ta source et enleve toutes les transparences. T'es pas obligé mais c'est pour mieux te rendre compte du bug.

Puis rajoute la ligne suivante dans le constructeur :
this.transform.perspectiveProjection.projectionCenter=new Point(300,300);
ça permet de te placer légèrement au dessus du carrousel

Oh mince alors !!! le bug est toujours la ??? Comment ce fait-il ?

A plus et profite bien de ce moment de solutide.

Commentaire de pegase31 le 22/01/2009 01:17:50 administrateur CS

Source simple, fonctionnelle, efficace et qui a le mérite d'être claire.

Effectivement, la méthode getRelativeMatrix3D prend une importance plutôt capitale ici, c'est celle que j'ai cherché depuis un moment (le changement de plan 3D).
Même si je doute que beaucoup la comprenne, elle n'emploie pas trop de changements d'espaces et reste accessible aux initiés (limite experts). C'est une bonne base pour les petits jeux 3D tels que les échecs et autres jeux de plateaux (je pense aussi au magnifique "Shuffle Puck Café" qui pourrait être repris facilement).

Seul petit bémol sur le tri en Z qui devrait être revu avec un Vector (meilleure performance) et avec des swapIndex plutôt que des remove/addChild.

Aucun bug apparent, et un poids final à toute épreuve ! (enfin, quand on ne crée pas de bugs volontaires ..)

Peg'

Commentaire de pegase31 le 22/01/2009 01:20:25 administrateur CS 9/10

ah, merde, la note : je mettrais un 8/10 pour les raisons citées plus haut ;)

Peg'

ps: c'est vrai que c'est chiant ce principe de notation (je vais remonter l'info pour la future version)

Commentaire de gremlins7 le 22/01/2009 01:36:48

3/10 parceque tu poste une source pour soit-disant regler un probleme avec getRelativeMatrix3D et c'est pas le cas. Donc cette source est inutile.

Pour ceux qui veulent s'en convaincre voici un printscreen du résultat de la source de top30 avec le bug :

http://top30bug.skyrock.com/2262025467-Preuve-que-la-source-de-top30-presente-un-bug.html

Commentaire de top30 le 22/01/2009 02:12:45

T'est trop fort pour moi Gremlins.
Je m'incline !
T'as créer une page "blog" sur un server SkyRock..
T'es mon Maître.

Je cherches pas l'humilation, ni la sournoiserie et encore moins la compétence. Ce qui surement te surprendra.
Je cherche l'efficacité, le partage, le dépassement de soit. Que tous profitions de nos "avancements".

Sans ta source je ne me serais pas plus interesser à cette fonction. Mais elle m'a aidé a en comprendre certains principes qui jusqu'à ici m'avait laissé "idiot". En l'améliorant, et te démontrant le résultat notable : je ne fais que t'inviter à en faire de même.

L'agressivité, tu l'as ajouté TOI !
Tantan... C'est comme ca.

Mais blague à part le bug, je l'avait imaginé.
Puis vu...
Mais pour faire du "mouvement" ou de "l'illus".
Ca me parait bien correcte et relativement simple.

Commentaire de gremlins7 le 22/01/2009 02:36:44

Désolé je voulais pas être agressif avec toi top30, bien au contraire tu sais que j'aimerais bien qu'un fasse une source en commun.

Peux tu me dire en quoi tu as résolu ce bug, je t'ai montre que ce n'était pas le cas. De plus tu n'est pas sans savoir que la fonction getRelativeMatrix3D est bogée elle aussi (c'est dans la doc) ?

Commentaire de top30 le 22/01/2009 09:58:07

Tu obtiens des "bugs" aprés un changement de la projection...
J'ai essayé différents setting du "PerspectivePoint" avec à mon avis comme seul résultat :
- Une incrémentation du problème de Zsorting au sein d'une instance. Normal, il faudrait modifié le Mème point de fuite au sein de tous les éléments enfants du parent.
- Une déformation visuelle relativement "moche". Mais qui c'est vrai peu se reveler parfois utile pour d'autre type de travaux.

De plus, cette fonction ne resoudra pas un probleme simple: (vue de dessus)
       PARENTA   PARENTB
       enfantA
                 enfantB
       enfantC
                 enfantD

Le z du parent A en 0 et le B aussi
Z absolu de enfantA, 0 relative de 0
Z absolu de enfantB, 0 relative de 10
Z absolu de enfantC, 20 relative de 30
Z absolu de enfantD, 40 relative de 50

Il te sera IMPOSSIBLE de générer correctement de le Z sorting en utilisant des "Sprites". Car obligatoirement le clip parentA (ou B) si passe au dessus ou au dessous de parentB (ou A), toutes les instances enfants feront de même.. Même si le Z sorting pourrait laisse croire que non. Logique !

Et selon ta source ou la mienne, si nous partons sur un principe de "DisplayObject", nous ne pourrons jamais resoudre ce probleme.

Mais comme dis plus haut pour faire du "basic" ca me semble parfait.

Commentaire de gremlins7 le 22/01/2009 12:21:56

Oui effectivement,...
mais il y a une astuce, pas propre mais ça marche :
au lieu de faire un cube a 6 faces, j'ai fait un cube a 12 faces, du coup les deux faces aux extrémités qui rentre en conflit de z et qui provoque le bug n'existe plus. Ca marche que pour un cube et ca double la quantité de calcul.
Bon c'est bourrin, je te l'accorde...

Commentaire de smoochy le 22/01/2009 18:11:56

oulah ca chauffe sur flashkod ^^

je ne vais pas entrer dans le débat, trop de calcul pour ma pauvre petite tête...
je constaterai juste, suite à ces discussions, qu'à voir flash n'est pas encore un outil 3d, ça reste beaucoup trop compliqué et pleins de bugs... tout ça pour réaliser des simples cubes qui tournent c'est un peu pauvre... (je ne critique pas ces sources mais plutôt les capacités de flash dans le domaine... quand on voit les possibilités offertes par des programmes comme cinema4d... je sais que ces programmes ne sont pas comparable et que l'utilisation n'est pas la même, mais c'est juste pour dire que pour moi la 3d sous flash ressemble plus à un gadget qu'à un outil réellement utilisable qui donne un rendu correct...)

ahlala, je m'égare... je voulais juste à la base signaler que si les notes sont obligatoirement accompagné d'un commentaires, c'est pour éviter la personne qui met un 1/10 juste pour faire chier sans s'expliquer... Qui n'a pas eu une source dont la note chute de 9/10 à 5/10 parce qu'un ou deux couillons sont passé mettre une note de merde sans explications? (ce n'est pas une question d'orgueil où je veux absolument la meilleure note, mais perso je regarde souvent la note avant de charger une source pour savoir si elle est bien réalisée...)

voilà j'arrête mon monologue, désolé pour le post un poil hors sujet et bonne continuation

++

Commentaire de BananaTree le 22/01/2009 19:13:54

helo

bon j'y connais rien en 3D. j'ai pas lu la source et j'ai survolé vos posts en 1 mn...

pour répondre à smoochy, flash est un outil performant pour faire de la 3D.
en fait, il me semble que ce que top30 et gremlins7 viennent de démontrer, c'est que pour faire des cubes en flash dans un envirobement 3D, il faut utiliser une classe cube et une classe Scene3D, etc...

;)

++ et bon code

Commentaire de pegase31 le 22/01/2009 19:14:57 administrateur CS

Même si le système est gourmand en ressources, cela permet pleins d'applications impossibles à faire jusque maintenant : pencher un clip en trapèze de façon rapide et simple !

Effectivement, flash cs4 n'est qu'un début de 3d, et adobe l'a bien expliqué (il fallait venir à Milan, vous l'auriez su, na ! :)), mais s'est un bon début.

Certe, c'est pas demain qu'on fera un doom directement sous flash, mais imaginez les applications qui en découleraient rien qu'avec ça ... (jeux isos, Donjons type "Dungeon Master", paperMario, Mariokart, etc ..)

Peg'

Commentaire de top30 le 22/01/2009 21:30:56

Simple:
La 3D c'est comme les "images" et Photoshop.

Pour ceux qui aurais connu Photoshop 2.5 il y a 15 ans, une image de plus 100 Mº était un MONSTRE !
Fallait des minutes, voir des heures de calculs pour les filtres...

Puis les capacités des ordis ont été crescendo.
Aujourd'hui une image 100 Mº sous Photoshop se traite relativement rapidement...

Hors la 3D c'est pareil...
Sauf qu'on est à la version 2.5 et non CS3 !
La 3D sous Flash c'est jouable. Mais "penoso" comme disent les españols. Ca veut dire que pour une 50 de formes c'est jouables... Mais rien de plus.

Avez vous essayé de déformer un TexteField en mode input en 3D ? Vous devriez essayer. Et vous comprendriez que la 3D est un "patch" au player. Et non la base même du player.

Ca viendra surement avec l'AS4 réecrit.
Ou quand nos anims SWF auront la puissance d'une PSone. C'est inévitable.

La 3D n'est que notre vision ancestral du monde qu'il nous entoure. Ce qui est plat, ce sont nos écrans !
Leurs contenu ira vers la 3D, et toujours plus...
Car leur concept n'est que de retransmettre ce que nous percevons chaque jour...

Bref tout ca pour dire quoi ?
Ben même moi je sais pas, mais en tout ca c'est sympa d'avoir lu jusq'au bout !

= )  

Commentaire de smoochy le 23/01/2009 08:42:52

si si, j'ai lu jusqu'au bout et finalement je suis assez d'accord, c'est les débuts de la 3d réelle sur flash et il faut laisser du temps pour que ça devienne un outil sympa et puissant (j'aime bien a comparaison avec photoshop, ça me rappelle mes débuts où à chaque fois que l'on appliquait un filtre sur une image on avait le temps d'aller se chercher un café et discuter un quart d'heure avec le collègue... avant de voir que le filtre n'avait pas donné l'effet escompté ^^)

++

Commentaire de xenogears le 27/01/2009 18:21:10

bonjour a tous,

je suis pas vraiment d'accord avec toi smoochy ni top30 d'ailleurs. flash n'a jamais gérer de la 3D, et c'est pas demain la veille qu'on pourra faire un jeu shockwave en ActionScript. comme l'as dit top 30, le player flash ne gère pas la 3D de base (mais alors pas un brin) il s'agit en effet d'un gros patch qui bouffe même pas tellement de puissance mais qui n'a aucun intérêt dans l'état actuel des choses.

pour l'instant, le seul moyen de faire de la 3D, c'est de la faire en matricielle effectivement (CAD pas de 3DS MAX, pas de poly, pas de mech ...) le seul truc qu'on puisse faire, c'est de faire tourner des cubes ou des boules. bon courage pour votre jeu d'échec ^^ (parce que dessiner un cavalier en matriciel... faut en vouloir quand même XD). Et puis les outils du CS4 pour la 3D, sont vraiment ridicule il s'agit juste d'une déformation 2D pour faire "comme si" c'était de la 3D (on peux très bien le faire sous photoshop et l'importer après).

j'ai fait des recherche sur l'AS4 (qui va pas arriver de suite hein) et beh on parle pas franchement d'arrangement sur la 3D et puis, adobe n'a aucune raison de développer la 3D dans flash (ceci nécessiterai une complète réécriture de programme flash) puisque director gère déjà la 3D nativement depuis sa version 8.5 (bon par contre, faut connaitre vachement bien le lingo) mais le gros avantage, c'est que c'est natif (et sans bug MDR)

bref, je suis contre l'idée de faire de la 3D sous flash tout simplement parce que flash n'est pas du tout étudié pour et que si jamais quelqu'un veux faire de la 3D, eh ben il a qu'a apprendre le lingo ^^.

peut être que adobe permettra à flash de gérer la 3D nativement un jour, mais ce n'es pas pour tout de suite...

vala, sur ce, bonne journée à vous et bonne continuation à tous.

Commentaire de BananaTree le 27/01/2009 18:50:02

on parle bien du logiciel qui à généré ça (pris au hasard):
http://www.cleoag.ru/labs/flex/parkseasons/
et qui gère l'accélération matérièlle depui FP10 ?

Commentaire de gremlins7 le 27/01/2009 20:10:58

"L'accélération matérielle n'est encore que partielle, seules quelques parties du  moteur de rendu du flash player font appels à la carte graphique, mais rien qui va booster les applis de manière fulgurante."

"Seules les utilisations de la vidéo trouveront une utilité [...] et bénéficieront d'un gain intéressant."

"Alors oui, moi aussi j'ai cru à un moment à un moteur 3D intégré dans Flash, ..."

Commentaire de top30 le 28/01/2009 12:38:46

J'ai juste dit que la 3D c'est jouable.

Mais pas que la 3D était native, mais si, qu'elle le deviendra.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Matrix 3d et Rotation 3d [ par Orange73 ] Hello, Je voulais connaitre la difference entre modifier un clip avec matrix3d ou modifier ce clip via les propriete x/y/z et rotationX/Y/Z : 1/ Mat effet calque 3D [ par hidalg007 ] Bonjour tout le monde... j'aimerai savoir comment peut on faire un effet flash 3D avec une photo de telle sorte qu'elle paraissent comme un calque qui incorporer des objets 3d dans flash? [ par hemodeporc ] Bonjour je cherche a incorporer des objets 3d venant de 3ds Max dans flash afin d en-faire des objet interactif . Est ce possible? Si oui est que quel 3D Polygonale et JPGs externes [ par BlackEagle ] Salut,- J'ai fait une petite anim grâce à la source de Dean de 3D Polygonale, mais j'aimerais savoir s'il est possible de changer la couleur des arrêt sur quel site pourrai-je trouver des boutons 3d flash ? [ par martinkk ] je viens de decouvrir flash et je voudrais utiliser des boutons 3d flash pour embellir mes formulaires.sur quels sites se trouvent les meilleurs bouto swift 3d [ par flashman007 ] hugo the best now and foreverkelkun sait ou on peut telecharger des logiciels permettant l'importation d'objets 3d dans flash?? video et scene 3d ?? [ par flashx ] flashxvoila jaimerais mettre une scene video en numerique ds une scene 3d pur et dur je sais pas si vous comprenne !donc je voudrais insere un couple effet 3D > un clip qui tourne sur lui-même [ par inconnue ] Salut, j'aimerai connaître l'action script pour faire tourner un clip sur lui-même à 360°.1 - sur son axe vertical (&gt;1°clip) 2 - sur son axe ho KKun peut il me dire ou trouver des tutoriaux sur swift 3D ? [ par tipie ] Salut a tous kkun peut me dire si il y a des tutos sur swift 3d ou alors livre ou magazine ? merci d'avance. Swift 3d ? [ par tipie ] Bonjour,j'ai un probleme avec swift 3D, je vois que l'on peut importer du AI ou du EPS mais je n'arrive pas a importer un fichier vectorielle que j'ai


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,264 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales