Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3225 connectés 

  FORUM HardWare.fr
  Programmation

  [C++ / DirectX8.0] questions diverses

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[C++ / DirectX8.0] questions diverses

n°73517
El_gringo
Posté le 19-11-2001 à 16:00:42  profilanswer
 

là, je débute sur DirectX, comme tout débutant, g donc 2 ou 3 questions... surement balourdes, évidement, je suis débutant !
 
- Quand on fait un SetTransform sur le device, c quoi les 3 matrices sur lesquelle c applicable, qqn peut m'expliquer ce qu'est View, World, et Projection ?
 
- G lu un tutoriel dans lequel on m'explique que pour faire une transformation, il faut que j'applique une nouvelle matrice pour la matrice world... mais, dans ce cas, ma transformation va s'appliquer à tout ce que j'ai dessiné. Comment je fais alors pour faire tourner seulement un triangle autour d'un cube par exemple ?

mood
Publicité
Posté le 19-11-2001 à 16:00:42  profilanswer
 

n°73520
godbout
Génial.
Posté le 19-11-2001 à 16:09:48  profilanswer
 

Ah merde et moi je m'y suis toujours pas mis :D

n°73523
El_gringo
Posté le 19-11-2001 à 16:11:44  profilanswer
 

ha... attention, je prend de l'avance...
G planifié là; logiquement, dans 1 an ou 2, je bosse chez infogramme, histoire de me faire une réputation, et hop, la Silicon Valley ! :D

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

n°73524
youdontcar​e
Posté le 19-11-2001 à 16:14:52  profilanswer
 

dans l'espace, chaque objet à sa propre matrice qui permet d'exprimer ses coordonnées dans le repère world. dans une scène typique, tu as une matrice world par objet, une matrice view + une matrice proj par caméra.
 
world transforme l'objet de son repère local vers le repère world, view transforme le repère world vers le repère caméra, proj transforme le repère caméra en coordonnées écran.
 
pour faire tourner un triangle autour d'un cube, tu leurs mets une matrice world chacun, tu hiérarchises le triangle au cube, et tu lui assigne une matrice de rotation autour de, par ex, n'importe quel axe. il faut également excentrer ton triangle, comme un pivot sous 3dsmax.
 
puis il faut calculer la hiérarchie, à savoir que chaque matrice world de chaque objet est le résultat de la multiplication de ses parents par elle-même.
 
ha, et lis la doc de dx. regarde comment ça marche sous max. cherche '3d transformations' sous google. etc.

n°73679
El_gringo
Posté le 20-11-2001 à 09:04:23  profilanswer
 

Mais, justement, comment je fais pour attribuer une matrice world à un "objet" (style, à un triangle) ? Dans ce tutoriel que g lu, on me dis: pour faire une rotation, dessines ce que tu veux, et puis fait ça:
D3DXMatrixIdentity(&mTransfo);  
D3DXMatrixIdentity(&mTemporaire);  
 
D3DXMatrixTranslation(&mTemporaire,5,0,0);  
D3DXMatrixMultiply(&mTransfo,&mTransfo,&mTemporaire);  
 
Device->SetTransform(D3DTS_WORLD, (D3DMATRIX *)&mTransfo);  
 
Ok, mais selon ça, y a qu'une seule matrice D3DTS_WORLD pour toute ma fenêtre D3D....  
Comment j'fais pour bosse sur une plus petite D3DTS_WORLD, et pour en associer une à un "objet" ?

n°73680
chrisbk
-
Posté le 20-11-2001 à 09:05:39  profilanswer
 

ben tu change en cours de route
 
 
pour chaque objet
 
->setTransform(....)
->drawPrimitive(...)
 
fin pour

n°73682
BENB
100% Lux.
Posté le 20-11-2001 à 09:34:52  profilanswer
 

El_Gringo a écrit a écrit :

Mais, justement, comment je fais pour attribuer une matrice world à un "objet" (style, à un triangle) ? Dans ce tutoriel que g lu, on me dis: pour faire une rotation, dessines ce que tu veux, et puis fait ça:
D3DXMatrixIdentity(&mTransfo);  
D3DXMatrixIdentity(&mTemporaire);  
 
D3DXMatrixTranslation(&mTemporaire,5,0,0);  
D3DXMatrixMultiply(&mTransfo,&mTransfo,&mTemporaire);
Device->SetTransform(D3DTS_WORLD, (D3DMATRIX *)&mTransfo);  
 
Ok, mais selon ça, y a qu'une seule matrice D3DTS_WORLD pour toute ma fenêtre D3D....  
Comment j'fais pour bosse sur une plus petite D3DTS_WORLD, et pour en associer une à un "objet" ?  




vous pourriez me donner des infos sur ces methodes...
la multiplication des matrices est faite par le chip Video ?
c'est rapide ? Y a-t-il moyen de faire d'autres operations ?
quelle est la taille des matrices ?

n°73683
El_gringo
Posté le 20-11-2001 à 09:37:25  profilanswer
 

ouais, mais y faut que je fasse un setTransform de la matrice World... qui est pas associée à un objet, mais à l'ensemble de mes objets, du coup, si je fais un settransform dessus, c tous mes objets qui vont subir la transfomation...

n°73684
El_gringo
Posté le 20-11-2001 à 09:39:06  profilanswer
 

BENB a écrit a écrit :

 
vous pourriez me donner des infos sur ces methodes...
la multiplication des matrices est faite par le chip Video ?
c'est rapide ? Y a-t-il moyen de faire d'autres operations ?
quelle est la taille des matrices ?  




 
j'crois que les mtrices sont en 4*4, mais Chrisbk est plus apte que moi à répondre ! et pour l'instant, il s'occupe de moi !:D
J'en ai trop besoin en ce qui concerne DirectX...

n°73685
chrisbk
-
Posté le 20-11-2001 à 09:39:36  profilanswer
 

heuh non, ca modifiera que les tri que tu affichera avec les drawprimitive ulterieure

mood
Publicité
Posté le 20-11-2001 à 09:39:36  profilanswer
 

n°73686
El_gringo
Posté le 20-11-2001 à 09:39:49  profilanswer
 

comment je fais, si g un triangle, et un carré, pour faire une translation du triangle uniquement ?
et après être sorti de ma boucle de traitement de mes objets, je remet ma matrice world à la valeur ... de départ. ok !
donc en fait, j'ai intéret à créer une classe Figure avec un membre m_d3dMatrixWorld qui est la matrice world de ma figure, non !?

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

n°73688
chrisbk
-
Posté le 20-11-2001 à 09:42:49  profilanswer
 

BENB a écrit a écrit :

 
vous pourriez me donner des infos sur ces methodes...
la multiplication des matrices est faite par le chip Video ?
c'est rapide ? Y a-t-il moyen de faire d'autres operations ?
quelle est la taille des matrices ?  




 
voui avec les TnL on peut esperer que c elle qui se charge de la multiplication de matrice ( qui est 4x4 )
niveau vitesse, la transformation des vtx se fait vite, mais tu n'as pas acces au resultat de l'operation (de toute maniere, il faut eviter au maximum de lire ce qui se trouve dans le mem video )
 
Qu'entends tu par autre operations ? Depuis la gf3 il y a les vertex shader qui te laisse une marge de manoeuvre assez appreciable

n°73689
BENB
100% Lux.
Posté le 20-11-2001 à 09:44:18  profilanswer
 

El_Gringo a écrit a écrit :

 
 
j'crois que les mtrices sont en 4*4, mais Chrisbk est plus apte que moi à répondre ! et pour l'instant, il s'occupe de moi !:D
J'en ai trop besoin en ce qui concerne DirectX...  




Je cherche surtout a savoir si le peux esperer faire des maths avec ca... 4x4 c'est un peu court... mais a voir quand meme...
 
OK, Je te laisse Chrisbk, je n'utiliserais pas mes attrais naturels :D

n°73691
chrisbk
-
Posté le 20-11-2001 à 09:46:57  profilanswer
 

El_Gringo a écrit a écrit :

 
donc en fait, j'ai intéret à créer une classe Figure avec un membre m_d3dMatrixWorld qui est la matrice world de ma figure, non !?  




 
ouais c pas mal ca . en fait t'occupe pas de remettre la matrice world a la fin du traitement, si chacune des tes figures ont leur matrice t'as juste a faire genre :
 
figure:: draw()
{
->setTransform()
->drawPrimitive()
}
 
ceci faisant que ce qu'il y avait dans la matrice world de directx, ben tu t'en fous

 

[edtdd]--Message édité par chrisbk--[/edtdd]

n°73692
chrisbk
-
Posté le 20-11-2001 à 09:48:32  profilanswer
 

BENB a écrit a écrit :

 
 
OK, Je te laisse Chrisbk, je n'utiliserais pas mes attrais naturels :D  




 
nan comme c trop pas juste :(
 
 
:D
bref a priori si tu veux te servir de la carte comme CPU annexe pour les maths,laisse tomber, vu que tu n'as pas acces au resultat ca perd bpc de son interet....

 

[edtdd]--Message édité par chrisbk--[/edtdd]

n°73693
El_gringo
Posté le 20-11-2001 à 09:48:37  profilanswer
 

ok.
Mais en fait, cette fameuse matrice world, c l'équivalent du repère, non !? ça fait un peu bricolage tous des changement de repères...

n°73694
El_gringo
Posté le 20-11-2001 à 09:50:18  profilanswer
 

BENB a écrit a écrit :

 
Je cherche surtout a savoir si le peux esperer faire des maths avec ca... 4x4 c'est un peu court... mais a voir quand meme...
 
OK, Je te laisse Chrisbk, je n'utiliserais pas mes attrais naturels :D  




 
ça serai injuste...
 
attrais dont on ne connais rien d'ailleur, c'est quand que tu postes un topic de commentaires sur ta photo ?:D

n°73695
chrisbk
-
Posté le 20-11-2001 à 09:50:25  profilanswer
 

El_Gringo a écrit a écrit :

ok.
Mais en fait, cette fameuse matrice world, c l'équivalent du repère, non !? ça fait un peu bricolage tous des changement de repères...  




 
bah pas tant que ca
 
tu passe de object->world->camera->screen
 
chaque matrice te permet de passer d'un repere a l'autre
object->world : world
world->camera : view
camera->screen : projection

n°73697
El_gringo
Posté le 20-11-2001 à 09:53:11  profilanswer
 

mouais... j'crois que g encore du boulot pour saisir ça... ça m'apparait pas clairement, j'aime pas ça !

n°73698
El_gringo
Posté le 20-11-2001 à 09:56:08  profilanswer
 

chrisbk a écrit a écrit :

 
 
ouais c pas mal ca . en fait t'occupe pas de remettre la matrice world a la fin du traitement, si chacune des tes figures ont leur matrice t'as juste a faire genre :
 
figure:: draw()
{
->setTransform()
->drawPrimitive()
}
 
ceci faisant que ce qu'il y avait dans la matrice world de directx, ben tu t'en fous  
 
 




 
ouais, mais quand je fais un SetTransform, je l'applique pourtant forcément à D3DTS_WORLD, qui est en fait LA matrice world du tout. c pas le membre de mon objet ça...

n°73700
chrisbk
-
Posté le 20-11-2001 à 10:00:13  profilanswer
 

world, world c vite dit :)
 
bon disons que world malgre son nom, te servira de matrice de transformation "locale" tandis que view sera "globale" (appliquee pareil a tous les objets)
 
 
donc si ton objet est anime, il ira trifouiller dans world, view restant l'apanage de ta camera
 
N'oublie pas que tu set une transformation pour les futurs appels a drawP, pas les precedents (encore heureux, soit dit en passant)
 
donc ton processus de rendu sera :
 
set matrice de projection
set matrice de view
 
pour chaque objet
set matrice world
(set texture)
drawprimitive
finpour
 
(C ou que ca te chiffones ?)

n°73702
BENB
100% Lux.
Posté le 20-11-2001 à 10:11:35  profilanswer
 

chrisbk > dommage... parce que mes matrices elles prennent pas mal de CPU et tout est bon pour accelerer... ;)
 
El_Gringo > bon aller je vais chercher une photo... en cuir et tout et tout... avec les gants, le casque et la moto :D
 
Bon sinon tous ces chagment de reperes qui te semble complique te sinplifient la vie en fait. tu construit ton objet dans sont propre repere, puis tu le place dans le monde, imagine si tu devais le contruire dans le repere du monde... de plus quand tu le deplace les points qui le definissent sont calcules en fonction de sa position, il y a un arrondi donc il se deforme, on conservant la forme initiale, tu evite de cummuler les erreurs d'arrondis et donc de voir ta forme degenerer au cours du temps...
 
regarde le systeme solaire, tu essaye de decrire la rotation de la lune vue de jupiter comment ferais tu ?
le plus simple est bien de dire que la lune tourne autour de la terre que la terre tourne dans son repere et que ta camera tourne dans le meme repere que la terre, non ?

n°73703
El_gringo
Posté le 20-11-2001 à 10:11:40  profilanswer
 

non, dans ce que tu dis, y a rien que je comprenne réellement pas, c juste que je maitrise pas encore le truc... j'pense qui faut voir à l'essai pour saisir vraiement le truc. là je peux pas essayer, je verrai ce soir... Mais g toujours pensé que le meilleur moyen de comprendre, c le trifouillage, c tjs comme ça que je procède, jusqu'a maintenant, ça marche bien :D.
Même si c qd même important d'avoir des explications de tps en tps... merci chrisbk, et puis les autres aussi bien sur !

n°73704
chrisbk
-
Posté le 20-11-2001 à 10:14:54  profilanswer
 

BenB : bah t'as deja du le voir, mais au cas ou les sites d'intel / AMD propose des fonctions permettant la manipulation de matrice avec SSE/3dnow et tout le bataclan (par contre c'est des 4x4.....)
 
El : vi, la bidouille y'a rien de mieux et des fois tu tombes sur des resultats assez surprenant :)

n°73705
El_gringo
Posté le 20-11-2001 à 10:17:10  profilanswer
 

BENB a écrit a écrit :

chrisbk > dommage... parce que mes matrices elles prennent pas mal de CPU et tout est bon pour accelerer... ;)
 
El_Gringo > bon aller je vais chercher une photo... en cuir et tout et tout... avec les gants, le casque et la moto :D
 
Bon sinon tous ces chagment de reperes qui te semble complique te sinplifient la vie en fait. tu construit ton objet dans sont propre repere, puis tu le place dans le monde, imagine si tu devais le contruire dans le repere du monde... de plus quand tu le deplace les points qui le definissent sont calcules en fonction de sa position, il y a un arrondi donc il se deforme, on conservant la forme initiale, tu evite de cummuler les erreurs d'arrondis et donc de voir ta forme degenerer au cours du temps...
 
regarde le systeme solaire, tu essaye de decrire la rotation de la lune vue de jupiter comment ferais tu ?
le plus simple est bien de dire que la lune tourne autour de la terre que la terre tourne dans son repere et que ta camera tourne dans le meme repere que la terre, non ?  




 
ouais, c clair que c logique ce que tu dis... Mais qd même, ça me perturbe un peu.... manque d'habitude.  Mais ça viendra, avec un peu de soutien, ça ira encore mieux ! Et puis, avec la photo de toi en cuir, je serai capable de briser des montagnes, et d'abbatre des séquoia à coup de tête, alors, directX, pff, ça m'fait même pas peur !:D

n°73706
BENB
100% Lux.
Posté le 20-11-2001 à 10:19:07  profilanswer
 

chrisbk > je n'y avais pas pense...
ce qui me plaisait c'etait de passer par DX ou OpenGL, donc une couche normalisee qui permet de faire abstraction du materiel...
sinon a une epoque il existait des cartes specialisees, mais mon boss ne veut meme pas en entendre parler, alors si je trouve qqchose qui se trouve "naturellement" sur un PC ca peut etre pas mal...

n°73714
chrisbk
-
Posté le 20-11-2001 à 10:32:06  profilanswer
 

BENB a écrit a écrit :

 
ce qui me plaisait c'etait de passer par DX ou OpenGL, donc une couche normalisee qui permet de faire abstraction du materiel...




 
ouep c sur...
Tu sais y'a pas mal de fois je serais bien content d'avoir un acces rapide a ce qui se trouve dans la RAM video....mais non . Avec le bins actuel mieux vaut faire un trait dessus.

n°73716
youdontcar​e
Posté le 20-11-2001 à 10:34:55  profilanswer
 

ça peut aider de 'renommer' les noms de matrice de dx. au lieu d'appeler tes variables matrice  
 
  world, view, proj
 
tu les appelles
 
  localToWorld, worldToView, viewToProj
 
c'est tout con et ça m'a bien fait comprendre l'idée du changement de repère.

n°73719
El_gringo
Posté le 20-11-2001 à 10:41:16  profilanswer
 

youdontcare a écrit a écrit :

ça peut aider de 'renommer' les noms de matrice de dx. au lieu d'appeler tes variables matrice  
 
  world, view, proj
 
tu les appelles
 
  localToWorld, worldToView, viewToProj
 
c'est tout con et ça m'a bien fait comprendre l'idée du changement de repère.  




 
ha ouais, ça m'plait ça !
et donc, t'as une matrice localToWorld par "objet graphique" c ça !?

n°73723
chrisbk
-
Posté le 20-11-2001 à 10:49:15  profilanswer
 

El_Gringo a écrit a écrit :

 
 
ha ouais, ça m'plait ça !
et donc, t'as une matrice localToWorld par "objet graphique" c ça !?  




 
precisement

n°73724
youdontcar​e
Posté le 20-11-2001 à 10:49:55  profilanswer
 

El_Gringo a écrit a écrit :

 
 
ha ouais, ça m'plait ça !
et donc, t'as une matrice localToWorld par "objet graphique" c ça !?  



voilà :) bon ça me frustre cette histoire car je ne sais pas comment répondre simplement ... tu as fait quoi en 3d jusqu'à présent ? le bon vieux programme sous dos en mode 13h qui affiche un objet 3d, ou un starfield, ou ... ? détaille un peu où tu en es voir ...

n°73728
LeGreg
Posté le 20-11-2001 à 10:54:49  profilanswer
 

El_Gringo a écrit a écrit :

 
 
ha ouais, ça m'plait ça !
et donc, t'as une matrice localToWorld par "objet graphique" c ça !?  




 
eh je veux pas foutre la merde
mais tu peux meme avoir une matrice differente par
sous-partie de ton objet
(structure hierarchique..)
 
En fait tu peux diviser ton monde en autant de sous-partie dependantes les unes des autres (la lune dependante de la terre qui depend du soleil qui depend du systeme solaire qui depend du cluster d'etoiles qui depend de la galaxie)
Pour rendre chaque sous partie, tu appliques les transformations. Ce qui permet de decrire d'abord chaque objet intrinsequement dans un repere qui lui est propre, sachant qu'il fait partie d'un groupe d'objet que tu decris lui-meme dans son repere propre.. etc.
 
A+
LEGREG

n°73730
El_gringo
Posté le 20-11-2001 à 10:55:49  profilanswer
 

...jusqu'a maintenant, en 3d... j'avais commencé openGl; j'ai affiché un cube ! :sol:  
Bah ouais, c tout !:D
autant dire que je suis débutant total... la, je suis en train de découvrir DirectX et la 3d en même temps en fait !
...je vais en chier !?

n°73733
chrisbk
-
Posté le 20-11-2001 à 10:59:28  profilanswer
 

en fait.....boaf je sais pas trop
 
le plus dur quand g commecner DX c t deja avoir une init qui marchait (init d3d7 c t quelque chose), mais avec le 8 c ok
 
maintenant si tu affiches deja qqchose (meme un pov triangle) c deja un bout de fait.... une fois que tu aura bien capter transformation / texture tu pourra rapidement avoir un truc qui ressemble a quelque chose
 
ce sera pas le fin du fin, mais suffisament motivant pour que tu persevere ;)

n°73738
youdontcar​e
Posté le 20-11-2001 à 11:04:08  profilanswer
 

El_Gringo a écrit a écrit :

...jusqu'a maintenant, en 3d... j'avais commencé openGl; j'ai affiché un cube ! :sol:  
Bah ouais, c tout !:D
autant dire que je suis débutant total... la, je suis en train de découvrir DirectX et la 3d en même temps en fait !
...je vais en chier !?



bien sûr, comme tout le monde :D
 
en plus je pense que gl est un mauvais point de départ car il n'y a que deux matrices, l'une identique à celle de dx pour la projection, l'autre étant le résultat de word * view. c'est chiant.
 
essaye de chopper un éditeur 3d comme 3d studio max, où tu peux vraiment voir ce qu'il se passe, créer des hiérarchies d'objet, voir les repères locaux, etc ... ensuite tu peux trifouiller avec la sdk de max.

n°73744
El_gringo
Posté le 20-11-2001 à 11:11:28  profilanswer
 

chrisbk a écrit a écrit :

en fait.....boaf je sais pas trop
 
le plus dur quand g commecner DX c t deja avoir une init qui marchait (init d3d7 c t quelque chose), mais avec le 8 c ok
 
maintenant si tu affiches deja qqchose (meme un pov triangle) c deja un bout de fait.... une fois que tu aura bien capter transformation / texture tu pourra rapidement avoir un truc qui ressemble a quelque chose
 
ce sera pas le fin du fin, mais suffisament motivant pour que tu persevere ;)  




 
Ouais, mon init, elle marche...
g pris un petit moment pour mettre en place DX avec Derrière, les MFC... ça ralenti beaucoup le truc d'ailleurs l'objet !? j'pense pas...

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

n°73789
El_gringo
Posté le 20-11-2001 à 12:32:19  profilanswer
 

Mais, ça y est, je vais arriver à expliquer ce que je n'comprend pas:
 
quand je fait ça:
 
pour chaque objet  
set matrice world  
drawprimitive  
finpour  
 
Set matrice world correspond à cette fonction:
 
Device->SetTransform(D3DTS_WORLD, (D3DMATRIX *)&mTransfo);  
mTransfo étant par exemple, le résultat d'une rotation d'un radiant, par rapport à la matrice identité...
Mais, ça, c'est dans le repère local de mon "objet graphique". comment on indique à DirectX sur quel objet on bosse !?

n°73791
El_gringo
Posté le 20-11-2001 à 12:33:05  profilanswer
 

faites ce que vs pouvez s'y vous plais... c clair que ma question est pas claire, c juste parce que c pas non plus très claire dans ma tête là :D

n°73810
chrisbk
-
Posté le 20-11-2001 à 13:32:46  profilanswer
 

Si je vois ce que tu veux dire mais je trouve pas les mots simple....
 
C'est juste un truc a chopper une fois que t'auras capter ca te semblera tout con....Attends, je me creuse :)
 
 
>Mais, ça, c'est dans le repère local de mon "objet graphique". comment on indique à DirectX sur quel objet on bosse !?
 
Y s'en fout direct3d . Il prends les matrice que tu lui file d'un cote, les vertex de l'autre et multiplie ceux ci par tes matrices.
point final :)
 
bordel j'arrive pas a expliquer mieux :)

n°73836
El_gringo
Posté le 20-11-2001 à 14:46:26  profilanswer
 

j'crois que g compris... en fait, la matrice world, c vraiement un truc temporaire, ce qui compte, c sa valeur au moment ou on fait le drawprimitive. En gros, elle sert juste à être le multiplicateur des matrices (qui décrivent les vertices) passées dans le drawprimitive...
g bon ou g rien compris !?

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++ / DirectX8.0] questions diverses

 

Sujets relatifs
[WIN32] GroupBox recalcitrant et infos diversesProgrammation : questions divers et générales
[DirectInput] remarque sur le SDK DirectX8.1 vs DirectX8Gros nioubi en PHP ki pose des questions ...(Qu'est ce qu'il fout là?)
PowerBuilder 6.51, MySQL, AMC Données : questions d'ordre général2 ptites questions php / mysql - phpmyadmin
Néophyte en C pose quelques bêtes questions :)[PHP] deux questions débiles pour un débutant
[DHTML] questions sur les calques.diverses questions ... c assez importans :/
Plus de sujets relatifs à : [C++ / DirectX8.0] questions diverses


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)