Pages: 1 [2] 3   Bas de page
Imprimer
Auteur Fil de discussion: Gestion de fluide ou solide déformable…  (Lu 3522 fois)
0 Membres et 1 Invité sur ce fil de discussion.
morukutsu Hors ligne
Sr. Member
****
Messages: 499


Voir le profil
Noctambule

« Réponse #15 : 26 Février 2010, 00:26:21 »

Code: (c)
guMtxScaleApply(m1, m1, scaleX, scaleY, 1.0);
scaleX et scaleY sont des f32. Donc ils prennent une valeur flottante. En gros, un élément non redimensionné aura scaleX = 1.0f et scaleY = 1.0f. Si tu veut la moitié de la taille original et bien il faut mettre 0.5f, et si tu veux le double, 2.0f.

Code: (c)
guMtxTransApply(m, m, screenX+width, screenY+height, 0);
Les 3 derniers paramètres sont respectivement la position de l'objet en x, y, z dans ce contexte.

Sinon un vertex (des vertices) sont simplement des points définis par leurs coordonnées (x, y, z). Avec 3 vertices on peut faire un triangle, avec 4 un carré (un quad), etc...

Journalisée
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 924


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« Réponse #16 : 26 Février 2010, 00:34:54 »

Okay, mais donc pour les vertices, il s'agit donc de 3D vu qu'il y a la profondeur dans les coordonnées non ?

Donc en gros, ce dont j'aurais besoin, c'est de définir un ensemble de vertices que l'on peut déplacer et qui assemblés, donneraient une forme, c'est ça ?
Avec un système comme ça, la quantité serait conservée ? Parce que je voudrait que l'on ne puisse pas augmenter la quantité de substance quoi Smiley

Merci encore Azn
Journalisée


Pas si petit…
morukutsu Hors ligne
Sr. Member
****
Messages: 499


Voir le profil
Noctambule

« Réponse #17 : 26 Février 2010, 00:51:33 »

La 2D avec GX (donc ce que fait la MLlib) c'est simplement de la 3D en projection ortho avec une profondeur de 0.

Citation
Donc en gros, ce dont j'aurais besoin, c'est de définir un ensemble de vertices que l'on peut déplacer et qui assemblés, donneraient une forme, c'est ça ?
Ouais Smiley

Citation
Avec un système comme ça, la quantité serait conservée ? Parce que je voudrait que l'on ne puisse pas augmenter la quantité de substance quoi
Oui mais c'est à toi d'implémenter l'algo pour que la quantité soit conservée. Tu as deux techniques, une repose sur des contraintes pour conserver le volume du blob, une autre repose un assemblage de masses-ressorts (cf. les liens que je t'ai filé au dessus, notamment le 2ème).
Journalisée
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 924


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« Réponse #18 : 26 Février 2010, 12:34:09 »

D'accord, après pour les collisions, il faudra juste prendre en compte les contours de la forme…
Ça reste quand même compliqué Langue

Je me demande par contre, combien de points mettre au total, je suppose qu'il vaut mieux mettre tous les points dès le départ…
Je vais relire les liens que tu m'a passé plus en profondeur pour essayer de voir ce qu'il me faudrait réutiliser mais je pense qu'au départ, il faut déjà que j'arrive à construire une forme à partir de points, ça serait déjà un bon début x)
Journalisée


Pas si petit…
t4ils Hors ligne
Branleur
Elite Member
**
Messages: 961


Voir le profil WWW
« Réponse #19 : 27 Février 2010, 03:14:50 »

Bon bah ce topic m'a fait coder ceci :
http://t4ils.free.fr/Projets_NDS/corpsMou/corpsMou.nds

Gauche-droite : bouger
Haut : sauter

C'est fun Smiley

J'ai tenté de passé le tout en fixed point mais c'est un vrai casse tête :/
Journalisée

Le codage amateur ? Parce que je le veux bien.
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 924


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« Réponse #20 : 27 Février 2010, 10:11:24 »

Bravo ! J'aurai pas fait ça en si peu de temps x)
Journalisée


Pas si petit…
Copper En ligne
Mega Member
***
Messages: 1296


Voir le profil
« Réponse #21 : 27 Février 2010, 10:23:35 »

Très sympa en effet...
Journalisée
Cid2Mizard Hors ligne
Super Mega Member
****
Messages: 4064


Voir le profil WWW
Disciple Kukulcanien

« Réponse #22 : 27 Février 2010, 14:11:46 »

Joli  Smiley
Journalisée

Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 924


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« Réponse #23 : 27 Février 2010, 16:00:00 »

Enfin bref x)
Sur Wii, il est possible de créer un triangle à partir de 3 points dont on fourni nous même les coordonnées ?
(je dois avouer que j'ai pas super saisi l'énorme code pour en tracer un)
Journalisée


Pas si petit…
morukutsu Hors ligne
Sr. Member
****
Messages: 499


Voir le profil
Noctambule

« Réponse #24 : 27 Février 2010, 20:11:04 »

Le code n'est pas si complexe que ça. En gros, il faut indiquer au GPU ce qu'on souhaite dessiner ainsi que le nombre de vertex auquel il doit s'attendre. Ensuite il faut envoyer les vertices et les infos qui vont avec (ex: couleur, normales, UVs...). Cela se traduit par :

Code: (c)
GX_Begin(GX_LINES, GX_VTXFMT0, 2);
        GX_Position3f32(x1, y1, 0);
        GX_Color1u32(color);
        GX_Position3f32(x2, y2, 0);
        GX_Color1u32(color);
    GX_End();

Sachant que GX_LINES est le type de primitives, tu en pas mal dans gx.h.

Code: (c)
#define GX_POINTS 0xB8
#define GX_LINES 0xA8
#define GX_LINESTRIP 0xB0
#define GX_TRIANGLES 0x90
#define GX_TRIANGLESTRIP 0x98
#define GX_TRIANGLEFAN 0xA0
#define GX_QUADS 0x80

Journalisée
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 924


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« Réponse #25 : 28 Février 2010, 01:13:09 »

Merci, donc si je veux créer une fonction pour dessiner un triangle à partir de coordonnées de 3 points, je peux faire comme ça ?
Code: (cpp)
void drawTriangle(int x0, int y0, int x1, int y1, int x2, int y2)
{
    GX_Begin(GX_TRIANGLE, GX_VTXFMT0, 2);
        GX_Position3f32(x0, y0, 0);
        GX_Color1u32(color);
        GX_Position3f32(x1, y1, 0);
        GX_Color1u32(color);
        GX_Position3f32(x2, y2, 0);
        GX_Color1u32(color);
    GX_End();
}

Ça marcherait ? (en précisant color bien sûr)
Journalisée


Pas si petit…
morukutsu Hors ligne
Sr. Member
****
Messages: 499


Voir le profil
Noctambule

« Réponse #26 : 28 Février 2010, 01:28:49 »

ça va planter car le GPU s'attend à deux vertices or tu lui en envoie 3.

Citation
GX_Begin(GX_TRIANGLE, GX_VTXFMT0, 2);

Normalement avec cette modif ça fonctionne
Citation
GX_Begin(GX_TRIANGLE, GX_VTXFMT0, 3);
« Dernière édition: 28 Février 2010, 01:30:27 par morukutsu » Journalisée
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 924


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« Réponse #27 : 28 Février 2010, 01:42:08 »

Ah d'accord, merci beaucoup alors Smiley
Mais je devrais quand même placer ce code aussi dans ma boucle ?
Code:
guMtxIdentity (m1);
guMtxScaleApply(m1, m1, scaleX, scaleY, 1.0);
guVector axis = (guVector) {0, 0, 1};
guMtxRotAxisDeg (m2, &axis, angle);
guMtxConcat(m2, m1, m);
guMtxTransApply(m, m, screenX+width, screenY+height, 0);
guMtxConcat (GXmodelView2D, m, mv);
GX_LoadPosMtxImm (mv, GX_PNMTX0);
Journalisée


Pas si petit…
morukutsu Hors ligne
Sr. Member
****
Messages: 499


Voir le profil
Noctambule

« Réponse #28 : 28 Février 2010, 01:52:17 »

Pas forcément. En fait ce code il fait plein de trucs.
En gros, sans, tu ne peux pas appliquer de transformations sur les vertex que tu as envoyé. Or, avec tu peux translater, redimensionner ou tourner ton modèle.

Tout cela se fait grâce à des opérations sur des matrices.
A la première ligne on charge la matrice identité (celle qui ne fait aucune modification sur ton objet) dans m1.
Ensuite on charge m1, on applique le redimensionnement sur x, y et z puis on retourne le résultat dans m1.
Ensuite de la même manière, on tourne le modèle selon un vecteur et on envoie le résultat dans m2.
Ensuite on additionne m2 et m1 et on envoie le résultat dans m.

Maintenant, on a dans une matrice le résultat du redimensionnement et de la rotation.
On continue avec la translation, on crée une nouvelle matrice comprenant le tout et on applique.

Désormais, tout objet dessiner après ça subira les modifications précédentes.
A toi de savoir si tu en as besoin ou pas smiley
Journalisée
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 924


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« Réponse #29 : 28 Février 2010, 02:20:49 »

Ah d'accord, il s'agit en gros des paramètres du plan non ? Enfin, merci, à vrai dire, c'est surtout cette partie qui me rebutait, mais c'est plus clair maintenant Smiley

Sinon, pour le u32 color, quelles valeurs peut-on donner ? C'était pas précisé dans la doc Undecided
Merci encore Cheesy
Journalisée


Pas si petit…
Pages: 1 [2] 3   Haut de page
Imprimer

Aller à: