MasterProg2003
Messages postés4Date d'inscriptionjeudi 2 octobre 2003StatutMembreDernière intervention 2 octobre 2003 2 oct. 2003 à 20:12
Trés bien fait
9 / 10
tu sais m'aider pour faire des application 3D !!! ou m'expliqué !!!
Merci ;-)
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 29 sept. 2003 à 13:07
il y a une petite faute dans mon post de tt a lh, au lieu de mettre SRCAlphaSAT, mettez INVSRCAlpha
voilà s'il y a des questions nhesitez pas ;)
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 29 sept. 2003 à 11:25
Resalut tt le monde
bon alors j'ai fait quelques recherches sur l'alpha blending, et il en ressort que l'alpha blending travaille au niveau des pixels de cette maniere (ce ne sont que des supposition, je testerai ce soir chez moi sf si qqn peut tester avant et partager le resultat) :
Couleur du Pixel = FacteurSRCBlend*ARGBsrc + FacteurDSTBlend*ARGBdst
Il faut ici considérer que l'on travaille avec des vecteurs 4D, sauf que les composantes sont A, R, G et B. Ainsi FacteurSRCBlend est structuré ARGB, comme ARGBsrc, FacteurDSTBlend et ARGBdst.
Ensuite pour la transparence : on modifie dans les renderstates les facteurs, ainsi quant on met One à l'un des opérateurs de blending (par exemple SRC) on lui dit de faire :
(1, 1, 1, 1)*(A, R, G, B) A noter aussi qu'il y à là 4 opérations, on multiplie ABlend avec Asrc, et on fait de même avec toutes les composantes sans jamais les mélanger. Ainsi il y a un parametre Zero qui correspond au facteur (0, 0, 0, 0).
Mais revenons en a notre trasparence progressive. Pour la réaliser il nous faut appliquer les 2 opérateurs de blending suivants :
SRCAlpha ((Asrc, Arsc, Arsc, Arsc)*(Arsc, Rsrc, Gsrc, Bsrc)) et
SRCAlphaSAT ((1-Asrc, 1-Asrc, 1-Asrc, 1-Asrc)*(Adst, Rdst, Gdst, Bdst))
Ainsi il n'y a qu'à faire varier la valeur alpha des Vertexs pour faire varier la transparence.
Pour bien comprendre ceci je vous conseille vivement de garder à l'esprit comment est calculé chaque pixel et vous trouverez tres simple la suite de ce commentaire. Sinon vous pouvez toujours me demander de vous reexpliquer d'une autre manière
Amusez vous bien et au plaisir :)
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 26 sept. 2003 à 21:28
Bravo à toi Guidelor pour ta source et à vr3h pour ses commentaires ;)
8/10
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 26 sept. 2003 à 12:07
GuiDeLor : Je viens de voir un autre ptit pb dans ta source, les cartes graphiques récentes prennent en charge toutes les textures, mais pour les autres CG, il faut utiliser des textures dont les formats sont des puissances de 2 : 2, 4, 8, 16, 32, 64, 128, 256, 512
les textures sont de préférences carrées pour les CG les plus bas de gamme, sinon il faut au minimum 2 dimensions en puissance de 2 :
exemples : 16x32, 256x256, 512x256, 512x512...
voilà, c juste à changer les dimensions de tes Textures
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 26 sept. 2003 à 09:24
Guidelor : Pour ton pb de couleur de ciel je me t'ai dit qq ptites betises, en effet tu dois aussi jouer sur ta composante R dans la mesure ou elle ne dépasse pas V. voilà, maintenant, quant à savoir dans quelles proportions je ferais quelques teste chez moi ce soir (je suis pas svt chez moi pr d raisons de copine dc dsl)
CanardLeBarbare : Pour effectuer de la transparence, je mets le parametre D3DBLEND_ONE à la source et à la destination. Par contre, pour ce qui est de faire varier la transparence, il faut jouer sur le canal Alpha (dans ce cas la couleur s'exprime sous la forme ARGB). Le pb c'est que j'ignore à quel niveau il faut intervenir sur le canal Alpha, si c'est sur la texture (enregistrer alors au format PNG ou DXT) ou si c'est sur le matérial ou sur la couleur diffuse. Je pense plutot au matérial car, la couleur diffuse d'un vertex n'est traitée que si le RenderState LightEnable = False. donc voilà, maintenant faut tester tout ceci sur les différentes couleurs des matériaux pour savoir tout ca.
Quand je rentrerai ce soir chez moi je ferai quelques tests et je vous donnerai les résultats
CanardLeBarbare
Messages postés19Date d'inscriptionlundi 13 janvier 2003StatutMembreDernière intervention 7 mars 2004 25 sept. 2003 à 22:05
haa ok. excuse de te faire repeter :P .
Ben euh j'aurai bien quelques questions. alors ça a pas grand chose a voir, mais bon: g un probleme avec la transparence des textures. j'arrive a appliquer de la transparence mais c un petit peu de la bidouille...tu applique quoi à la source et à la destination de l'alpha blend, et surtout comment fais tu pour faire varier le degre de transparence?
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 25 sept. 2003 à 21:06
alors canard je vais eclairer ta lanterne,
le principe que tu expose ici à déjà été exposé il y a quelques années du temps de DirectX 7 sur le site : http://francis.dupont.free.fr/coindev mais le pb d'une telle technique vient quand la camera commence à ne plus pointer horizontalement et commence à etre vertical, dans ce cas précis ce n'est pas tres pratique à appliquer ton system, sinon il existe des jeux (tels que les jeux de voiture par ex) qui peuvent sen accomoder si la hauteur de ton sprite est suffisament grand.
Sinon pour la skybox, c'est le principe que j'ai évoqué plus haut
("-soit tu utilise une boite avec une couleur ou une texture de ciel"), en fait il s'agit de créer un objet cubique, auquel tu appliques une texture d'environnement pour chaque face(c'est ce qui est utilisé dans Half-Life et tous ses mods, vous le verrez si vous utilisez WorldCraft le log de mapping), la seule contrainte c'est que la boite doit être visible de l'intérieur à l'inverse de la majorité des objets que tu aurasà créer. Sinon, tu peux utiliser, comme je lai dit aussi plus haut, une sphere. Mais la sphere est plus complexe a construire, à adresser les textures et plus longue à dessiner.
voilà jespere que te voilà eclairé sinon n'hesite pas a me demander ;)
CanardLeBarbare
Messages postés19Date d'inscriptionlundi 13 janvier 2003StatutMembreDernière intervention 7 mars 2004 25 sept. 2003 à 20:51
en fait je crois que ce qui est souvent utilisé ce sont les skybox (mais ja sais pas comment ça marche...) Cependant il y a peut etre un principe qui pourrait fonctionner auxquel j'avais réfléchie et qui donne l'équivalent d'une skybox, à savoir un fond qui "change" lorsqu'on la caméra pivote sur elle meme. Le principe de dessiner un sprite 2D avant tes objets 3D de maniere à ce que le sprite apparaisse toujours derriere les objets 3D. ensuite le principe est simple, quand la camera pivote, on change les coordonnées de LA TEXTURE du sprite (puisque le sprite est "toujours" devant la camera) . Par exemple à chaque fois qu'on tourne de pi / 2, on ajoute 1/4 aux coordonnées de la camera.
bon apres y a le truc penible de faire que la fin commence aux debut (je me suis compris..) enfin le probleme de faire un cercle en fait...
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 25 sept. 2003 à 19:10
pdt ke gt en cours, jai pensé à ton problème et en fait tu peux simplifier la gestion de ton ciel :
tu nas à jouer que sur les composantes V et B de ta couleur RVB. on va partir d'un cas simple :
RVB(0, 128, 255) = bleu ciel par beau temps
Si tu diminues ta valeur V jusqu'à 0, tu passes à une couleur de bleu nuit relativement clair. Ce qui te donne :
RVB(0, 0 , 255) = bleu nuit par beau temps
Et si tu diminues ta valeur B jusqu'à minimum ta valeur V (sinon ca va devenir vert, alors qu'au pire ca doit devenir gris), ca te donne :
RVB (0, 128, 128) = temps pluvieux de jour
Et enfin tu peux combiner les 2 pour obtenir ta couleur de ciel pour la nuit par temps de pluie.
C'est de la théorie, jai pas encore testé dc si tu vx bien me donner le resultat stp ? merci davance
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 25 sept. 2003 à 16:21
en fait, si tu vx une gestion clavier/souris efficace, je te conseille de passer sous DirectInput (qui est tres facile à mettre en place).
sinon pour ta couleur de ciel, je peux te conseiller une couleur mais c pour un ciel bleu et pas un temps pluvieux (RGB(0, 128, 255)) sinon pour le temps pluvieux tu peux baisser la composante V mais je sais pas juska quel niveau (encore jamais simulé la pluie dsl)
Guidelor
Messages postés236Date d'inscriptionjeudi 31 octobre 2002StatutMembreDernière intervention18 août 2006 25 sept. 2003 à 14:31
J'ai pensé à DirectInput , mais franchement le code pour la souris et le clavier ne sont pas gros !!!
En fait , vr3h , je demandais juste kon me conseille les 2 couleurs des gouttes et du ciel ...merci comeme
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 25 sept. 2003 à 14:11
Pour ton ciel tu as plusieurs techniques :
-soit tu vx pas te prendre la tete ds un premier tps et tu mets un bleu ciel dans la couleur de rafraichissement,
-soit tu utilise une boite avec une couleur ou une texture de ciel,
-soit tu utilises une sphere, mais la sphere demande beaucoup en tps daffichage donc c pas top).
Après pour rendre réaliste, à toi de rajouter tes nuages, un soleil, eventuellement un lens flare... ;)
cs_Klimero
Messages postés73Date d'inscriptionlundi 2 avril 2001StatutMembreDernière intervention12 janvier 2010 25 sept. 2003 à 14:09
Sympa comme code, juste une petite suggestion : tu devrais utiliser DirectInput pour le clavier et la souris, comme ca plus de pb de temps de latence entre le premier déplacement et les suivants, pis DirectInput te renvoie pas les coordonnées de la souris mais directement son déplacement (qq calculs en moins !!). Bah pis tant qu'à faire du DirectX, passe sous Visual C++, c'est pas plus difficile et tu n'auras plus les limitations de VB.
Bravo, continue comme ca !
cs_Klimero
Messages postés73Date d'inscriptionlundi 2 avril 2001StatutMembreDernière intervention12 janvier 2010 25 sept. 2003 à 14:03
Serial, le tutoriel de la doc MSDN fourni avec le SDK de directx et pas mal foutu du tout, tu devrais y jeter un oeil.
cs_serial
Messages postés17Date d'inscriptiondimanche 15 avril 2001StatutMembreDernière intervention10 octobre 2003 25 sept. 2003 à 13:44
Bah moi ca marche pas
si qqun connait des liens pour apprendre le dirext mais je debute donc qq chose pour debutant
merci
Guidelor
Messages postés236Date d'inscriptionjeudi 31 octobre 2002StatutMembreDernière intervention18 août 2006 25 sept. 2003 à 13:07
C'est bon , j'ai résolu le prob, j'ai fait une nouvelle texture comme l'a dit vr3h
Mais pour les couleurs des gouttes et du ciel , je sais pas trop quoi mettre pour rendre réaliste au maximum
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 25 sept. 2003 à 12:53
En fait le specular n'est pas necessaire, car tu n'as que des traits et pas des triangles, en revanche le fait davoir un vecteur (pour la position du vertex) et une couleur pour le diffuse, c'est tout a fait normal dans la mesure où tu désactive l'illumination
(renderstate->lightenable= false) enfin bref voilà, mais sinon à part ca gg qd mm ;)
CanardLeBarbare
Messages postés19Date d'inscriptionlundi 13 janvier 2003StatutMembreDernière intervention 7 mars 2004 25 sept. 2003 à 11:28
c vrai que la texture et vraimment moche, et puis avec le fond noir on a du mal à voir les lignes de pluies...mais c vrai que mis à part ça, l'animation des gouttes de pluies est vraimment pas mal, quoique un peu mince les lignes...(voui ya plus de critiques, que de compliments :p). Ya des choses byzarres dans le code: tu declares 2 type de vertex mais tu n'as qu'une seule constante FVF (qui correspond aux vertex du plan), comment il fait directD3D pour savoir que tu utilise un autre type de vertex quand tu dessines tes traits de pluies? Et puis même, ton type de vertex pour la pluie est byzarre: un vecteur et une couleur (pour le diffuse), si tu regardes dans l'aide fournie avec le sdk dx8, microsoft rajoute la propriété specular alors bon (pour des litvertex sans textures). voilà g fini :O
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 25 sept. 2003 à 07:33
Salut,
jai look vite fait ta source, jaurai juste quelques petite choses a te dire : tout d'abord pour la texture, tu peux en trouver d geniales dans les ressources du site : prografix.free.fr
sinon pour ton bug de la pluie verte, c normal, tes vertexs servant à dessiner la pluie disposent de coordonnées de textures comme ton sol, et il y est appliqué la texture du sol (si tu supprime les coordonnées de textures pour les vertexs de pluie ca devrait pouvoir marcher en mettant à la place une couleur, sinon tu n'as qu'à faire une texture de 16x16 de la couleur que tu veux pour ta pluie que tu applique au moment du dessin de la pluie).
voilà je pense avoir ete relativement clair, sinon n'hesite pas a me contacter ;)
Noiretulipe
Messages postés164Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention13 juillet 2008 25 sept. 2003 à 00:59
Enfin sans les textures ( l'erreur vient dans l'application des textures à la création de la mape ), la pluie est blanche ( la prairie aussi du coup lol )
C'est sympa comme source pour un mec qui comme moi est absolument zero en DirectX
Noiretulipe
Messages postés164Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention13 juillet 2008 25 sept. 2003 à 00:56
G une Erreur : Run-Time error
automation error....
2 oct. 2003 à 20:12
9 / 10
tu sais m'aider pour faire des application 3D !!! ou m'expliqué !!!
Merci ;-)
29 sept. 2003 à 13:07
voilà s'il y a des questions nhesitez pas ;)
29 sept. 2003 à 11:25
bon alors j'ai fait quelques recherches sur l'alpha blending, et il en ressort que l'alpha blending travaille au niveau des pixels de cette maniere (ce ne sont que des supposition, je testerai ce soir chez moi sf si qqn peut tester avant et partager le resultat) :
Couleur du Pixel = FacteurSRCBlend*ARGBsrc + FacteurDSTBlend*ARGBdst
Il faut ici considérer que l'on travaille avec des vecteurs 4D, sauf que les composantes sont A, R, G et B. Ainsi FacteurSRCBlend est structuré ARGB, comme ARGBsrc, FacteurDSTBlend et ARGBdst.
Ensuite pour la transparence : on modifie dans les renderstates les facteurs, ainsi quant on met One à l'un des opérateurs de blending (par exemple SRC) on lui dit de faire :
(1, 1, 1, 1)*(A, R, G, B) A noter aussi qu'il y à là 4 opérations, on multiplie ABlend avec Asrc, et on fait de même avec toutes les composantes sans jamais les mélanger. Ainsi il y a un parametre Zero qui correspond au facteur (0, 0, 0, 0).
Mais revenons en a notre trasparence progressive. Pour la réaliser il nous faut appliquer les 2 opérateurs de blending suivants :
SRCAlpha ((Asrc, Arsc, Arsc, Arsc)*(Arsc, Rsrc, Gsrc, Bsrc)) et
SRCAlphaSAT ((1-Asrc, 1-Asrc, 1-Asrc, 1-Asrc)*(Adst, Rdst, Gdst, Bdst))
Ainsi il n'y a qu'à faire varier la valeur alpha des Vertexs pour faire varier la transparence.
Pour bien comprendre ceci je vous conseille vivement de garder à l'esprit comment est calculé chaque pixel et vous trouverez tres simple la suite de ce commentaire. Sinon vous pouvez toujours me demander de vous reexpliquer d'une autre manière
Amusez vous bien et au plaisir :)
26 sept. 2003 à 21:28
8/10
26 sept. 2003 à 12:07
les textures sont de préférences carrées pour les CG les plus bas de gamme, sinon il faut au minimum 2 dimensions en puissance de 2 :
exemples : 16x32, 256x256, 512x256, 512x512...
voilà, c juste à changer les dimensions de tes Textures
26 sept. 2003 à 09:24
CanardLeBarbare : Pour effectuer de la transparence, je mets le parametre D3DBLEND_ONE à la source et à la destination. Par contre, pour ce qui est de faire varier la transparence, il faut jouer sur le canal Alpha (dans ce cas la couleur s'exprime sous la forme ARGB). Le pb c'est que j'ignore à quel niveau il faut intervenir sur le canal Alpha, si c'est sur la texture (enregistrer alors au format PNG ou DXT) ou si c'est sur le matérial ou sur la couleur diffuse. Je pense plutot au matérial car, la couleur diffuse d'un vertex n'est traitée que si le RenderState LightEnable = False. donc voilà, maintenant faut tester tout ceci sur les différentes couleurs des matériaux pour savoir tout ca.
Quand je rentrerai ce soir chez moi je ferai quelques tests et je vous donnerai les résultats
25 sept. 2003 à 22:05
Ben euh j'aurai bien quelques questions. alors ça a pas grand chose a voir, mais bon: g un probleme avec la transparence des textures. j'arrive a appliquer de la transparence mais c un petit peu de la bidouille...tu applique quoi à la source et à la destination de l'alpha blend, et surtout comment fais tu pour faire varier le degre de transparence?
25 sept. 2003 à 21:06
le principe que tu expose ici à déjà été exposé il y a quelques années du temps de DirectX 7 sur le site : http://francis.dupont.free.fr/coindev mais le pb d'une telle technique vient quand la camera commence à ne plus pointer horizontalement et commence à etre vertical, dans ce cas précis ce n'est pas tres pratique à appliquer ton system, sinon il existe des jeux (tels que les jeux de voiture par ex) qui peuvent sen accomoder si la hauteur de ton sprite est suffisament grand.
Sinon pour la skybox, c'est le principe que j'ai évoqué plus haut
("-soit tu utilise une boite avec une couleur ou une texture de ciel"), en fait il s'agit de créer un objet cubique, auquel tu appliques une texture d'environnement pour chaque face(c'est ce qui est utilisé dans Half-Life et tous ses mods, vous le verrez si vous utilisez WorldCraft le log de mapping), la seule contrainte c'est que la boite doit être visible de l'intérieur à l'inverse de la majorité des objets que tu aurasà créer. Sinon, tu peux utiliser, comme je lai dit aussi plus haut, une sphere. Mais la sphere est plus complexe a construire, à adresser les textures et plus longue à dessiner.
voilà jespere que te voilà eclairé sinon n'hesite pas a me demander ;)
25 sept. 2003 à 20:51
bon apres y a le truc penible de faire que la fin commence aux debut (je me suis compris..) enfin le probleme de faire un cercle en fait...
25 sept. 2003 à 19:10
tu nas à jouer que sur les composantes V et B de ta couleur RVB. on va partir d'un cas simple :
RVB(0, 128, 255) = bleu ciel par beau temps
Si tu diminues ta valeur V jusqu'à 0, tu passes à une couleur de bleu nuit relativement clair. Ce qui te donne :
RVB(0, 0 , 255) = bleu nuit par beau temps
Et si tu diminues ta valeur B jusqu'à minimum ta valeur V (sinon ca va devenir vert, alors qu'au pire ca doit devenir gris), ca te donne :
RVB (0, 128, 128) = temps pluvieux de jour
Et enfin tu peux combiner les 2 pour obtenir ta couleur de ciel pour la nuit par temps de pluie.
C'est de la théorie, jai pas encore testé dc si tu vx bien me donner le resultat stp ? merci davance
25 sept. 2003 à 16:21
sinon pour ta couleur de ciel, je peux te conseiller une couleur mais c pour un ciel bleu et pas un temps pluvieux (RGB(0, 128, 255)) sinon pour le temps pluvieux tu peux baisser la composante V mais je sais pas juska quel niveau (encore jamais simulé la pluie dsl)
25 sept. 2003 à 14:31
En fait , vr3h , je demandais juste kon me conseille les 2 couleurs des gouttes et du ciel ...merci comeme
25 sept. 2003 à 14:11
-soit tu vx pas te prendre la tete ds un premier tps et tu mets un bleu ciel dans la couleur de rafraichissement,
-soit tu utilise une boite avec une couleur ou une texture de ciel,
-soit tu utilises une sphere, mais la sphere demande beaucoup en tps daffichage donc c pas top).
Après pour rendre réaliste, à toi de rajouter tes nuages, un soleil, eventuellement un lens flare... ;)
25 sept. 2003 à 14:09
Bravo, continue comme ca !
25 sept. 2003 à 14:03
25 sept. 2003 à 13:44
si qqun connait des liens pour apprendre le dirext mais je debute donc qq chose pour debutant
merci
25 sept. 2003 à 13:07
Mais pour les couleurs des gouttes et du ciel , je sais pas trop quoi mettre pour rendre réaliste au maximum
25 sept. 2003 à 12:53
(renderstate->lightenable= false) enfin bref voilà, mais sinon à part ca gg qd mm ;)
25 sept. 2003 à 11:28
25 sept. 2003 à 07:33
jai look vite fait ta source, jaurai juste quelques petite choses a te dire : tout d'abord pour la texture, tu peux en trouver d geniales dans les ressources du site : prografix.free.fr
sinon pour ton bug de la pluie verte, c normal, tes vertexs servant à dessiner la pluie disposent de coordonnées de textures comme ton sol, et il y est appliqué la texture du sol (si tu supprime les coordonnées de textures pour les vertexs de pluie ca devrait pouvoir marcher en mettant à la place une couleur, sinon tu n'as qu'à faire une texture de 16x16 de la couleur que tu veux pour ta pluie que tu applique au moment du dessin de la pluie).
voilà je pense avoir ete relativement clair, sinon n'hesite pas a me contacter ;)
25 sept. 2003 à 00:59
C'est sympa comme source pour un mec qui comme moi est absolument zero en DirectX
25 sept. 2003 à 00:56
automation error....
Doit me manker un dll surement ...