PDA

Voir la version complète : collision



scoulpi
26/01/2007, 15h39
j'aimerai poser un objet sur une table sans que cet objet ne traverse cette table.
Je pense à de la collision, j'ai effectué une recherche et ai trouvé de l'expresso sur le site

N'y t a t'il pas plus simple ?
(un tag ca serai bien :wink:)

ca devient complexe si j'ai 40 objets sur ma table.

Merci

xs_yann
26/01/2007, 15h43
Ben il y a dynamics, mais sinon a part Xpresso ou coffee je ne vois pas.

moebius
26/01/2007, 15h46
je crois qu'il y a des plugs : il me semble que j'en avais vu un qui s'appelait ground. pour poser automatiquement un objet sur le sol, ou sur l'objet inférieur le plus proche. je regarde si je retrouve ça.

xs_yann
26/01/2007, 15h48
En fait il suffirait de placer tes objets à leur hauteur diviser par deux mais il faut que leurs axes soient centrés.
(Ca me parrait un peu trop simple :?)

moebius
26/01/2007, 15h50
euh... t'as fumé? :mrgreen:

xs_yann
26/01/2007, 15h55
oups j'édite :oops:
En fait je vois comment faire mais seulement avec des primitives car je ne sais pas comment récuperer la hauteur d'un objet.
Sinon je crois que le lien pour ground est mort.

edit : a non voilà le lien : http://www.heyne-multimedia.de/c4dplugin/indexx.php?l=en

Jean-Laurent
26/01/2007, 16h08
Si l'objet est une primitive la méthode de yann est la plus simple.
Sinon, on peut récupérer la position du point le plus bas de l'objet et poser celui-ci sur la table.
Un tag coffee ou Xpresso devrait faire l'affaire.

Si tu ne trouves pas d'autres méthodes je veux bien essayer de te faire ça.

scoulpi
26/01/2007, 16h11
c'est sympa !
Merci de votre aide !

je vais essayer le petit plug gratuit"ground expression" il semble très bien !

Sinon, tous les jours.... vous faites comment ? xpresso, rien du tout ? (à la main)

Jean-Laurent
26/01/2007, 16h17
A la main.
Une table avec 50 objets, elle est déjà très chargée mais on s'en sort.
Sinon, si tu as vraiment des milliers d'objets, genre particules, tu joues sur les déflecteurs et les amortissements.

scoulpi
26/01/2007, 16h36
mon premier plug :D
ca semble marcher pas encore vraiment ca (les balles entrent de moitié ds la table) mais en cherchant ca devrait le faire

MERCI !!

xs_yann
26/01/2007, 16h36
Jean-Laurent : Si tu sais faire comme pour ground, que le tag appliqué à l'objet neutre agisse sur tous ses objets enfants, ça m'interesse. :nono:

les balles entrent de moitié ds la table
C'est normal, le plug affecte juste la postion du sol à celle de la sphère il faut donc mettre les axes au niveau du point le plus bas de la sphère.

scoulpi
26/01/2007, 16h58
exacte !
l'xpresso devient donc indispensable dès que l'on souhaite appliquer une rotation aux objets par exemple.

base80
26/01/2007, 17h41
50 objets c'est max 10 minutes a la main

dupneu
26/01/2007, 17h52
Bonjour,

Il y a un petit plugin qui fonctionne parfaitement. Il se nomme drop-it
Il est gratuit (sauf la version pro) et trés pratique.

Trés simple à utiliser, on a 2 champs ou l'on glisse en haut l'objet à poser et en bas l'objet qui va servir de support (je crois même me souvenir qu'il est possible de se servir d'une sélection). Si on ne glisse que l'objet à poser dans la boite de dialogue du plugin il sera posé sur le sol, en fait en y=0.

voici l'adresse du site pour le charger

http://www.kuroyumes-developmentzone.com/c4d_plugins.html

Bruno

Jean-Laurent
26/01/2007, 19h19
Jean-Laurent : Si tu sais faire comme pour ground, que le tag appliqué à l'objet neutre agisse sur tous ses objets enfants, ça m'interesse. :nono:


Je jette d'abord un oeil aux plugs existants et que je ne connaissais pas et je m'en occupe. :odile:

scoulpi
26/01/2007, 22h01
dupneu

j'ai pas trop compris (du tout d'ailleurs) comment l'utiliser.
Un rapport avec COFFEE ... j'essaie de charger "droptofloor.cof" ca semble .... rien faire :calim: :calim:

help me Mr dupneu :prie:
:odile: (vs l'ai dit, ce sont mes premiers)

xs_yann
28/01/2007, 16h54
Ca y est, j'en suis au même niveau que ground, je vais essayer de faire l'interface le tag et peut-être l'améliorer. :D
edit : droptofloor est carrément plus puissant :shock:

Jean-Laurent
28/01/2007, 18h58
droptofloor est carrément plus puissant :shock:


Et c'est un fichier .cof. :poucehaut:
Que du plaisir.

xs_yann
30/01/2007, 13h39
Et c'est un fichier .cof.* *:poucehaut:
Que du plaisir.
Le problème c'est que quand je recopie le code dans c4d il y a un bug avec une variable "minY" qui n'est pas déclarée. :? :arg:

Jean-Laurent
30/01/2007, 15h10
Le problème c'est que quand je recopie le code dans c4d il y a un bug avec une variable "minY" qui n'est pas déclarée. :? :arg:


Qu'entends-tu par "recopier le code dans C4D"?

C'est un plug à la base, tu en fais une expression?
Sinon, de mémoire il me semble que minY correspond justement à la valeur du sol (0).
Il suffit peut-être de la déclarer?

xs_yann
31/01/2007, 15h31
Qu'entends-tu par "recopier le code dans C4D"?

Et bien je copie le code, je le colle dans le main d'une expression coffee, puis je copie toutes les fonctions.
Mais là j'ai une erreur, si je déclare minY, cela fonctionne pour les primitives mais pas pour les objets édités.
:coup:

edit : en fait cela ne fonctionne pas pour les primitives, c4d plante, je soupçonne la fonction MakeEditable de faire comme ici :coup::
http://www.frenchcinema4d.com/forum/index.php?topic=18012.0;all

xs_yann
31/01/2007, 17h44
J'en profite pendant que ce topic est ouvert, j'espère que je ne pollue pas trop. :oops:
Je crois que j'ai à peu près compris le fonctionnement du plug, cependant quand je fait des test pour mieux comprendre la fonction undo (StartUndo(), EndUndo(), DoUndo()...) c4d plante (oui je n'ai vraiment pas de chance :calim:)
J'ai cherché dans le SDK, mais je ne comprend toujours pas très bien, si quelqu'un pouvait m'expliquer ce serait sympa. :D
Merci. :wink:

en gros je ne comprend pas la différence entre :


doc->StartUndo();

doc->AddUndo(UNDO_OBJECT_BASEDATA, op);
op->SetName("Change");

doc->AddUndo(UNDO_OBJECT_BASEDATA, op);
op->SetPosition(vector(100,0,0));

doc->EndUndo();

et


op->SetName("Change");
op->SetPosition(vector(100,0,0));

j'ai changé le

doc->AddUndo(OBJECT_BASEDATA, op);
en

doc->AddUndo(UNDO_OBJECT_BASEDATA, op);

et le SDK dit* "Saves only the base data of an object."
:?: