[3DS MAX 5] syst de particule + deflecteurs

syst de particule + deflecteurs [3DS MAX 5] - C++ - Programmation

Marsh Posté le 24-03-2003 à 12:22:15    

(bon, je pense pas que ca soit le meilleur forum pour ca, mais bon, sait-on jamais... Bjone, t la ? :D)
 
Mes déboires ont commencé quand j'ai refait un système de particule pour 3ds max 5. En m'appuyant sur les samples fournis avec le maxsdk, j'ai pas eu de pb a faire mon systeme (dérivant de SimpleParticle). Les emmerdes ont commencés avec les déflecteurs. Les déflecteurs de max, appelé par le truchement de CollisionObject::CheckCollision se comportent d'une manière rendant mon systeme instable. Partant de la j'avais deux solutions : soit je refais des deflecteurs spéciaux, avec une méthodeCollisionObject::CheckCollision correspondant exactement a mes besoins. Soit je continue a utiliser ceux de max, sauf que les calculs de collision seront fait par le système. Les avantages sont moultes : pas besoin de se trimbaler force plug-in, pas besoin de réecrire lesdits plug in (ca c un sacré avantage). Bref, je me décida pour cette stratégie. Le drame survint lors de la surcharge de SimpleParticle::ApplyCollisionObject.
 
Tout d'abord quelque soit ce que je retourne (TRUE,FALSE) max me fait la liaison entre le déflecteur et mon systeme. Ce qui est crétin. (en suivant le code asm on s'apercoit que max ne teste meme pas le retour de fonction il ecrase EAX dans la joie et la bonne humeur a peine la fonction finie, ca vaut le coup de se prendre la tête...). Par ailleurs, il semble que max appelle cette fonction un peu n'importe comment (si on ajoute un Deflecteur, il renvoie toute la liste au lieu d'envoyer seulement le dernier. Et je n'ai pas l'impression qu'il appelle une fonction avant pour prevenir de ses magouilles...). Mais le pb n'est pas la, le pb est que CollisionObject permet seulement de recuperer un pointeur vers un Object. C'est pas mal, ca permet de recuperer  les paramBlock, mais pas la matrice de transformation. Et visiblement, y'a pas moyen de passer de Object a INode (etant donné qu'un Object peut etre reference par plusieurs INode, meme la méthode gorine "cherche dans tous les nodes celui qui reference l'objet" ne marche pas. Bref, je suis face a un mur. Une idée ou vais-je devoir me rabattre sur la solution 1 ?

Reply

Marsh Posté le 24-03-2003 à 12:22:15   

Reply

Marsh Posté le 25-03-2003 à 13:12:25    

oulà malheureux je suis pas à ce niveau là moa !!!! (je débutes comparé à toé)
si je regardes la doc du sdk sur ces fonctions comme ça je me coucherai moins bête :D

Reply

Marsh Posté le 25-03-2003 à 13:21:48    

BJOne a écrit :

oulà malheureux je suis pas à ce niveau là moa !!!! (je débutes comparé à toé)
si je regardes la doc du sdk sur ces fonctions comme ça je me coucherai moins bête :D


 
N'ayez crainte mon cher, mon precedent post est principalement de la poudre aux yeux, personneleemt j'asperge toujours mon pc d'eau benite avant de faire un plug in max :D

Reply

Marsh Posté le 25-03-2003 à 14:32:09    

pour le ApplyCollisionObject, j'ai ça dans le SDK:
 

Code :
  1. Prototype:
  2. virtual BOOL ApplyCollisionObject(CollisionObject *co)=0;
  3. Remarks:
  4. Implemented by the Plug-In.
  5. This method is called to add the collision object passed to the list of collision objects operating on this particle system.
  6. Parameters:
  7. CollisionObject *co
  8. Points to an instance of a collision object.
  9. Return Value:
  10. If a particle does not support this method it should return FALSE; otherwise return TRUE.
  11. Sample Code:
  12. BOOL SimpleParticle::ApplyCollisionObject(CollisionObject *co) {
  13. cobjs.Append(1,&co);
  14. return TRUE;
  15. }


 
donc bizarrement fo faire FALSE quand la méthode n'est pas applicable ?

Reply

Marsh Posté le 25-03-2003 à 14:33:41    

vi c ce que je fais, mais Max a l'air de s'en foutre :heink:
 
Et si tu continues tes recherches tu verras qu'il ne semble pas possible de retomber sur le node ayant emis le CollisionObject (surtout ca mon gros pb)

Reply

Marsh Posté le 31-03-2003 à 09:04:09    

je suis un gros blaireau [:dawa]
 
En fait, lors du rendu de mon systeme de particules, max me refile un ptr vers la node de mon systeme. Ensuite il suffit d'utiliser la doc http://www.alrj.org/docs/3D/docmax.html ecrite y'a plus d'un an par un mec super cool mega delire, mais franchement un peu con sur les bords [:dawa] :pfff:
 

Reply

Marsh Posté le 31-03-2003 à 12:02:37    

:lol:

Reply

Marsh Posté le 31-03-2003 à 12:05:02    

tsé moi j'en suis toujours qu'a l'export et ça va faire des mois que j'y ai pas touché... :(

Reply

Marsh Posté le 31-03-2003 à 12:08:19    

BJOne a écrit :

tsé moi j'en suis toujours qu'a l'export et ça va faire des mois que j'y ai pas touché... :(


 
oué ben perso je serais pas supris que Max soit responsable de 43% des cas d'alcoolisme chez les codeux [:dawa]
 
genre g passe une heure (!!) a comprendre pourquoi mon systeme de particule etait tout moche au rendu. (lumiere calculee n'importe comment)
 
conclusion : J'avais tout mis dans le smoothing group de 0, alors qu'il fallait mettre dans le 1 [:kunks]
 
 
(et pour mon truc je crois qu'il va quand meme falloir que je reecrive les plugs, et pour les modifiers je t'explique pas l'odieux bordel que c'est)
 

Reply

Marsh Posté le 31-03-2003 à 13:21:26    

:lol:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed