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

  FORUM HardWare.fr
  Programmation

  Skinning (ou presque) avec DirectX 7.0

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Skinning (ou presque) avec DirectX 7.0

n°74246
leander
Posté le 21-11-2001 à 20:49:27  profilanswer
 

Bon voila le problème.
Je dois optimiser un moteur 3D qui a était fait avec DirectX 7. Comme je n'ai que 1 semaine pour le faire, je ne peux pas passer à la version 8 car je la connais très peu.
 
Parmis les optimisations que je suis en train de faire, je mets tous mes tableaux de vertex dans des vertex buffers (eh oui, c'était pas fait avant) afin de profiter du T&L des cartes récentes.
Le problème c'est que j'ai des objets animés avec plusieurs bones. Et d'après ce que j'ai compris à DirectX 7, il n'est possible d'animé que 4 bones au maximum par vertex buffers en utilisant les matrices stockés à l'aide de :
- D3DTRANSFORMSTATE_WORLD
- D3DTRANSFORMSTATE_WORLD1
- D3DTRANSFORMSTATE_WORLD2 et
- D3DTRANSFORMSTATE_WORLD3
 
Hors mes objets possèdent bien plus de bones (matrices) ! Donc la question est là :
Comment je fais pour gérer plus de 4 bones avec DirectX 7 tout en stockant mes vertex dans la carte (à l'aide des vertex buffers) afin d'utiliser le T&L de ma carte.
 
Etant donnée que j'ai jamais fais bcp de directX 7 (je me suis arreter au 6), peut-être que je dis des betises, mais en regardant dans la doc du 8, j'ai vu quand pouvait utiliser jusqu'a 256 matrice en utilisant la macro D3DTS_WORLDMATRIX(i).
 
Voila, merci d'avoir lu ce message jusqu'au bout et j'espère que je trouverais quelqu'un pour m'aider.
Leander

mood
Publicité
Posté le 21-11-2001 à 20:49:27  profilanswer
 

n°74250
youdontcar​e
Posté le 21-11-2001 à 20:59:24  profilanswer
 

le problème est le hardware. toutes les cartes ne supportent pas le t&l, seules les geforces+ & radeons+ le supportent. ensuite pour le skinning, une geforce ne supporte que deux matrices.
 
solution : skinner en soft.

n°74254
leander
Posté le 21-11-2001 à 21:05:55  profilanswer
 

pour le skinning, c'est pas un problème puisque le moteur que je reprends n'utilise pas de skinning avec plus de 2 matrices.
 
Et même en général y a pas de skinning.
Et pour l'histoire des cartes qui ne supportes pas, c'est pas grave, puisque je veux que mon moteur soit accelerer pour les cartes qui le supporte !

n°74255
youdontcar​e
Posté le 21-11-2001 à 21:09:49  profilanswer
 

tu te contredis en deux messages ... :D tu veux savoir quoi exactement ?

n°74275
leander
Posté le 21-11-2001 à 21:49:34  profilanswer
 

bon, j'ai un personnage animé avec plein de bones. Pour simplifier on va dire que chaque vertex n'appartient qu'a un seul bone.
 
Je voudrais donc pouvoir stocker dans un vertex buffer, l'ensemble de mes vertex et de pouvoir dire que chacun des vertex et assosié à une matrice.
Ainsi à chaque rendu, je n'ai qu'a changer de matrices.
 
Et je suis obligé de mettre tous mes vertex dans un seul vertexbuffer parce que les vertex qui se trouvent aux articulations se trouve dans des listes de faces de bones différentes. Et donc je ne peux pas faire un vertex buffer par bone pour cette raison.
 
C'est pour cela, que j'ai mis skinning dans mon titre. Même si chaque vertex n'est associé à un seul bone, le problème reste le même que s'il était associé à plusieurs. Enfin il me semble.
 
Leander

n°74304
leander
Posté le 21-11-2001 à 23:48:27  profilanswer
 

je viens de relire la doc DirectX 7 et regarder les exemples et je crois que je viens de comprendre.
 
En effet il n'est possible de faire du blending qu'avec 4 matrices (ça je savais), mais en fait on est aussi limité à 4 matrices par vertexbuffers !!!
C'est à dire que si on a un objet avec 5 bones et un maillage avec juste des vertex ayant que 2 poids, ce n'est pas possible de gérer ce cas !
C'est vrai bizarre. Je vois pas l'interet d'avoir mis cette limite. Du coup c'est impossible de faire de skinning en hardware comme on peut le faire avec la version 8.
 
Es-ce que j'ai bien compris cette fois ?
 
Leander

n°74317
youdontcar​e
Posté le 22-11-2001 à 05:44:56  profilanswer
 

vi tu as bien compris. "l'intéret de cette limite" ? c'est juste la première version de dx qui propose le skinning en hard, c'est limité certes mais ça permet de faire deux-trois trucs genre le tweening.
 
tout ne peut pas venir d'un coup :)

n°74842
leander
Posté le 23-11-2001 à 15:25:26  profilanswer
 

Bon finalement ce que je voudrais c'est que mes Vertex soient transformés en Hard.
 
Pour le moment, la seule solution que je vois, c'est de trier mes vertex par bones, de faire un vertex buffer par bones et de faire transformer ces vertex par la carte et ensuite de récupérer la valeur des vertex transformés et de tous les recopier dans un gros vertex buffer où il y aura tous les vertex et la liste de face à afficher.
 
Je récapitule : dans premier les vertebuffer par bones servent juste à transformer les vertex et ensuite je fais un gros vertex buffer pour afficher les faces.
 
C'est un peu tordu, mais j'ai pas trouvé mieux...
Es-ce que tu penses que ça peut marcher ?
je devrais tester ça lundi.
 
Leander.

n°74896
youdontcar​e
Posté le 23-11-2001 à 17:01:23  profilanswer
 

ça ne marchera pas car tu ne peux pas récupérer le résultat d'une transformation.
 
je ne crois pas que quiconque skinne en hard en ce moment, sauf peut-être ceux qui ont des geforce3 ou des protos geforce4 :D

n°75717
leander
Posté le 26-11-2001 à 19:02:28  profilanswer
 

bah, avec DirectX 8, tu peux faire du skin en hard sans problème.
ça serait dommage de s'en priver, non ?
 
Et sinon, pour revenir à DirectX 7, il me semblait que l'on pouvait récupérer le résultat d'une transformation et même d'une projection.

mood
Publicité
Posté le 26-11-2001 à 19:02:28  profilanswer
 

n°75718
LeGreg
Posté le 26-11-2001 à 19:03:52  profilanswer
 

leander a écrit a écrit :

bah, avec DirectX 8, tu peux faire du skin en hard sans problème.
ça serait dommage de s'en priver, non ?




Ah oui???
Ma G200 peut faire du skinning en hard alleluia !
elle est ressuscitee !!
 
:D
 
LEGREG

n°75730
youdontcar​e
Posté le 26-11-2001 à 19:43:24  profilanswer
 

leander a écrit a écrit :

bah, avec DirectX 8, tu peux faire du skin en hard sans problème.
ça serait dommage de s'en priver, non ?
 
Et sinon, pour revenir à DirectX 7, il me semblait que l'on pouvait récupérer le résultat d'une transformation et même d'une projection.


je n'ai pas maté le skinning sous dx8 ... enfin comme le dit legreg il faut que la carte le supporte :D
 
tu ne peux PAS récupérer le résultat de transformations, je suis formel. tu peux par contre faire faire les transformations en soft par dx avec ProcessVertices().

n°76539
leander
Posté le 29-11-2001 à 01:15:44  profilanswer
 

legreg a écrit a écrit :

 
Ah oui???
Ma G200 peut faire du skinning en hard alleluia !
elle est ressuscitee !!
 
:D
 
LEGREG  




 
 
J'avais précisé que le moteur 3D tournerait QUE sur des cartes récentes... Style Geforce 3.
 
Sinon, youdontcare tu as raison : On peut pas récupérer le résultat des vertex buffer. Un moment j'avais cru.

n°76604
LeGreg
Posté le 29-11-2001 à 14:31:08  profilanswer
 

leander a écrit a écrit :

 
J'avais précisé que le moteur 3D tournerait QUE sur des cartes récentes... Style Geforce 3.




euh "carte recente"
c'est un peu plus large que GeForce 3, non?..
enfin j'espere..  
 
LEGREG

n°76605
youdontcar​e
Posté le 29-11-2001 à 14:33:22  profilanswer
 

haaa, la subjectivité ... :D
 
ma geforce ddr a deux ans maintenant. et je ne la considère pas comme carte 'récente'.

n°76607
LeGreg
Posté le 29-11-2001 à 14:37:37  profilanswer
 

Ouaaaaiiiiiin :cry:
 
faut vraiment que je change de matos
vu que maintenant meme une pauvre
GeForce2 est obsolete :cry:
 
LEGREG

n°76615
Armitage I​II
Posté le 29-11-2001 à 15:30:13  profilanswer
 

g froid


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

  Skinning (ou presque) avec DirectX 7.0

 

Sujets relatifs
opengl/directxp'tit ancien d'OpenGl, un nouveau de DirectX :D
prog en directX[DirectX & 3d en général], question sur une matrice d'échelle
le C et DirectX[DirectX] Hier soir je me suis mis à Direct3D...
Borland C++ & DirectXPeut-on faire du DirectX en C?
[DirectX][C/C++] Je pete un cable[DirectX] Problème avec la fonction DrawText
Plus de sujets relatifs à : Skinning (ou presque) avec DirectX 7.0


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR