Cube3D

Généralités sur la programmation 3D
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Cpl.Bator a écrit :Tu n'es pas le seul :D
y'en aura pas plus dans la version finale que ce que tu peux déjà voir dans la version beta :)
Triss a écrit :ah, merci, cool, bon ptêtre je vais aprofondir la chose alors. Je suis curieux de voir si la partie 3D de la version 4 vaudra le coup.
Qu'est-ce que tu attends exactement de la 3D de PureBasic ? par rapport à Blitz3D , tu espères quoi de mieux ou en plus ?

Il faut t'attendre à trouver moins de fonctions que Blitz3D. Par contre pour le rendu 3D , je ne sais pas dire lequel l'emporte, Ogre a énormément de possibilités, avec PureBasic on a pas accès à tout , mais depuis la v4 on a les scripts materials et ça c'est un grand changement, ça facilite grandement la tâche pour améliorer le rendu d'une scène 3D:)

tu peux déjà tester la version démo 3.94 pour te faire la main , et attends la version démo de la v4 pour mieux te rendre compte si ça te convient ou pas. Si tu veux faire autre chose que de la 3D, alors tu peux prendre PureBasic les yeux fermés.

Faire de la 3D avec PureBasic ça demande plus de travail , mais c'est aussi plus gratifiant de faire les choses par soi même :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Anonyme

Message par Anonyme »

comtois a écrit :y'en aura pas plus dans la version finale que ce que tu peux déjà voir dans la version beta
C'est bien dommage alors, va falloir aprofondir mes conaissance en C++ :D (et en orthographe)
Triss
Messages : 3
Inscription : mer. 22/mars/2006 15:09

Message par Triss »

bah, je teste déja la v3,94, et je trouve que purebasic ne peut pas prétendre à grand chose au niveau de la facilité d'accés a la 3D, mais, le rendu a l'air d'être plus performant que blitz3D. j'espère qu'elle sera mieux foutu a la version 4 , ne pouvant pas encore comparer vu que je n'ai pas accés aux bêtas.
Mais, attention, les purebasiens ! Il y a ogre sur bmax qui est en gestation :
http://www.blitz3dfr.com/phpfrench/e107 ... p?tid=2052
TersaKen
Messages : 58
Inscription : dim. 05/févr./2006 16:15

Message par TersaKen »

Yeeah, J'ai fini ma fonction pour texturer des triangles :)
C'est encore perfectible, mais j'en suis pour le moment content, je corrigerais les bugs apres ^^ J'ai trouvé tout seul comment la réaliser, j'avais plusieurs solutions, mais les autres étaient trop lente - utilisation de racine carré - celle-ci est presque parfaite :)

Image

Vous pouvez telecharger la démo ici :D
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

C'est génial ^^
20 de FPS sur mon PC, sachant que le debugger est activé c'est plutôt réussi ^^
Par contre les faces ne sont pas toujours "jointes", des fois y'a un vide entre deux faces.

Dri
TersaKen
Messages : 58
Inscription : dim. 05/févr./2006 16:15

Message par TersaKen »

Merci Beaucoup :D Je corrigerais les Bugs des que Possible :) Hehe ^^
Anonyme

Message par Anonyme »

la notification déconne un peu...

@TersaKen, c'est super, mais dis moi :

-Gere tu les matrices de Translation,rotation,echelle ?

Car je galère un peu pour implémenté un système de caméra. je gère sans problème la matrice de rotation , mais lorsque qu'il faut faire une translation puis une rotation je suis pommé, car je ne sais pas comment je fais pour avoir une matrice3x3 finale comprenant la rotation & la translation. je crois qu'il faut faire une multiplication matricielle , mais je ne suis pas sur.
Polo
Messages : 612
Inscription : sam. 03/juil./2004 20:14

Message par Polo »

Vous devriez jeter un coup d'oeil sur ce super site :
http://skal.planet-d.net/demo/matrixfaq.htm
:)
Anonyme

Message par Anonyme »

@Polo, j'ai cru comprendre que tu as fait ou que tu fait un moteur3D
est ce que je me trompe?
si oui, comment gère tu la caméra ? :D
Polo
Messages : 612
Inscription : sam. 03/juil./2004 20:14

Message par Polo »

Je suis en train, même si la je bosse pas dessus en ce moment (études... :))
Pour la caméra, c'est assez simple en fait, je stocke les rotations/translation, et quand on effectue le rendu je met tout ça dans une matrice et j'envoie le tout à Direct3D :)
Anonyme

Message par Anonyme »

Polo a écrit :Je suis en train, même si la je bosse pas dessus en ce moment (études... :))
Pour la caméra, c'est assez simple en fait, je stocke les rotations/translation, et quand on effectue le rendu je met tout ça dans une matrice et j'envoie le tout à Direct3D :)
donc, tu as une matrice de translation / rotation, et une matrice finale

Ma question est : comment fait tu pour obtenir la matrice finale?
Polo
Messages : 612
Inscription : sam. 03/juil./2004 20:14

Message par Polo »

C'est "tout con", mais faut le savoir :)
En fait il faut multiplier les deux matrices :)
Je te file le code que j'utilise :

Code : Tout sélectionner

Procedure D3DXMatrixMultiply(*out.D3DXMATRIX, *m1.D3DXMATRIX, *m2.D3DXMATRIX) 
  *out\_11 = *m1\_11 * *m2\_11 + *m1\_12 * *m2\_21 + *m1\_13 * *m2\_31 + *m1\_14 * *m2\_41 
  *out\_12 = *m1\_11 * *m2\_12 + *m1\_12 * *m2\_22 + *m1\_13 * *m2\_32 + *m1\_14 * *m2\_42 
  *out\_13 = *m1\_11 * *m2\_13 + *m1\_12 * *m2\_23 + *m1\_13 * *m2\_33 + *m1\_14 * *m2\_43 
  *out\_14 = *m1\_11 * *m2\_14 + *m1\_12 * *m2\_24 + *m1\_13 * *m2\_34 + *m1\_14 * *m2\_44 
  
  *out\_21 = *m1\_21 * *m2\_11 + *m1\_22 * *m2\_21 + *m1\_23 * *m2\_31 + *m1\_24 * *m2\_41 
  *out\_22 = *m1\_21 * *m2\_12 + *m1\_22 * *m2\_22 + *m1\_23 * *m2\_32 + *m1\_24 * *m2\_42 
  *out\_23 = *m1\_21 * *m2\_13 + *m1\_22 * *m2\_23 + *m1\_23 * *m2\_33 + *m1\_24 * *m2\_43 
  *out\_24 = *m1\_21 * *m2\_14 + *m1\_22 * *m2\_24 + *m1\_23 * *m2\_34 + *m1\_24 * *m2\_44 
  
  *out\_31 = *m1\_31 * *m2\_11 + *m1\_32 * *m2\_21 + *m1\_33 * *m2\_31 + *m1\_34 * *m2\_41 
  *out\_32 = *m1\_31 * *m2\_12 + *m1\_32 * *m2\_22 + *m1\_33 * *m2\_32 + *m1\_34 * *m2\_42 
  *out\_33 = *m1\_31 * *m2\_13 + *m1\_32 * *m2\_23 + *m1\_33 * *m2\_33 + *m1\_34 * *m2\_43 
  *out\_34 = *m1\_31 * *m2\_14 + *m1\_32 * *m2\_24 + *m1\_33 * *m2\_34 + *m1\_34 * *m2\_44 
  
  *out\_41 = *m1\_41 * *m2\_11 + *m1\_42 * *m2\_21 + *m1\_43 * *m2\_31 + *m1\_44 * *m2\_41 
  *out\_42 = *m1\_41 * *m2\_12 + *m1\_42 * *m2\_22 + *m1\_43 * *m2\_32 + *m1\_44 * *m2\_42 
  *out\_43 = *m1\_41 * *m2\_13 + *m1\_42 * *m2\_23 + *m1\_43 * *m2\_33 + *m1\_44 * *m2\_43 
  *out\_44 = *m1\_41 * *m2\_14 + *m1\_42 * *m2\_24 + *m1\_43 * *m2\_34 + *m1\_44 * *m2\_44 
EndProcedure 
Bon il faut que tu aies défini une structure pour stocker les matrices, ici c'est D3DXMATRIX.
En gros tu l'utilises comme ça :

Code : Tout sélectionner

translation.D3DXMATRIX ; ici ta matrice de translation, tu fais ce que tu veux avec
rotation.D3DXMATRIX ; rotation, idem ^_^

; et enfin :
D3DXMatrixMultiply(@finale.D3DXMATRIX,translation, rotation)
Voila :)
Anonyme

Message par Anonyme »

En fait il faut multiplier les deux matrices
C'est bien ce qui me semblait, mais j'obtiend des déformation étrange sur mes meshs...
Merci en tout cas pour ton bon de code. si j'ai des questions je sais chez qui allez frappé :D
Anonyme

Message par Anonyme »

Je galère pour une caméra :cry:

J'ai mes structure comme ceci :

Code : Tout sélectionner

Structure SOFTWARE_MATRIX4x4
_11.f : _21.f : _31.f : _41.f 
_12.f : _22.f : _32.f : _42.f  
_13.f : _23.f : _33.f : _43.f  
_14.f : _24.f : _34.f : _44.f  
EndStructure            


Structure Objects
  ID.l
  Nombre_Face.l
  Nombre_Vertex.l
  Matrice_Rotation.SOFTWARE_MATRIX4x4
  Matrice_Translation.SOFTWARE_MATRIX4x4
  Matrice_Finale.SOFTWARE_MATRIX4x4
EndStructure
Ma matrice de rotation est sur les 3 axes XYZ
je peut charger plusieurs objets au format <.ase> de 3dsmax6
je peut les bouger & les tourner, mais je n'arrive pas à implémenté une caméra.

Image

j'ai essayer de faire un truc du genre :

Code : Tout sélectionner

Camera_Rotation.SOFTWARE_MATRIX4x4
Camera_Translation.SOFTWARE_MATRIX4x4
Camera_Finale.SOFTWARE_MATRIX4x4

et de multiplier les matrices de rotations/Translation de chaque objets avec celle de la caméra, mais j'ai des résultat étranges...

Si une âme charitable peut m'indiquer la bonne voie :P
Répondre