PDA

Voir la version complète : Contraindre des modules cubiques



v.montel
18/06/2005, 00h24
Hello!

Voici mon problème du jour. Commençons par une image : http://ns2118.ovh.net/~deltazon/images/v.montel_outil_a.jpg

Ceci représente une caisse (rouge) contenant 5 modules parallélépipédiques (2 blanc, vert, jaune et bleu).

D'une part, j'aimerais pouvoir changer le volume de la caisse (ses dimensions sur les trois axes) tout en contraignant les modules internes aux dimensions ainsi changées.
D'autre part, il faudrait que les modules VERT-BLEU-BLANC soient eux aussi contraints par le changement de volume (dimensions sur les 3 axes) du module JAUNE, tout en restant dans les limites posées par la CAISSE ROUGE.

Ceci va être ma première expérience avec le maniement d'Expresso, et je n'ai aucune idée des outils à mettre en place. C'est un besoin réellement ponctuel que j'ai là, mais je pense que c'est la bonne occasion de découvrir les outils "primaires" de cette technologie de C4D, car le problème ne me semble pas insurmontable non plus...

base80
18/06/2005, 04h21
C'est assez simple comme exercice
Il y a en gros deux choses a faire, dimensionner et positionner.

Le dimentionnement
Prend le port dimension X du cube rouge et divise cette valeur par n pour la passer a la boite jaune. Ensuite tu soustrait la dimension du jaune a la dimension du rouge et divise la par deux et passe cette valeur a chaque blanc. Apres tu fait des calculs semblable pour les autres directions.

Le positionnement se passe de la même façon que les dimensions.

En fait ça revient a des maths de troisième primaire, pas grand chose de plus.

v.montel
18/06/2005, 07h56
Mmmmhhhh...
Je ne comprends pas pourquoi j'ai besoin de positionner.

J'ai remis à plat la fonction de cet Xpresso, et voici clairement les contraintes que je dois effectuer : les volumes intérieurs à la caisse ROUGE occuppent tout l'espace, et leurs dimensions s'établissent en fonction du volume occuppé par la boite JAUNE. Si celle-ci diminue en volume sur un axe, les autres boites viennent combler le vide créé (ou au contraire se poussent pour laisser de la place si le volume JAUNE augmente) tout en restant TOUJOURS à l'intérieur de la caisse ROUGE.

J'ai donc :
-CAISSE> Somme des autres volumes
-JAUNE toujours en limite de collision avec les autres

Je vais donc voir quels sont les noeuds à utiliser...

v.montel
18/06/2005, 10h45
Bon, après 2h d'essais, de relecture de la doc, j'en suis... à avoir une multiplication!
Bref, j'ai pas encore ma solution, en fait, je bloque sur un principe de base d'Xpresso je pense : je n'arrive pas à comprendre comment contraindre la somme des volumes intérieurs (la somme, je l'ai mise en place) au volume de la caisse.

Le fichier pour ceux qui avaient pas encore ri aujourd'hui : http://ns2118.ovh.net/~deltazon/c4d/v.montel_OUTIL_Caisse.c4d .
Je vais me coucher. :arrow:

Guedinouff
18/06/2005, 22h49
Salut V. Montel, au sujet de ton Xpresso, je n'ai regardé que rapidement mais j'ai juste deux petites remarques pour simplifier un peu la lecture de ton Xpression. Je sais que quand on crée son Xpression, on rajoute un petit Nœud par ici, un petit nœud par là,sur le coup on sait ce qu'on fait, mais ensuite pour se relire c'est plus compliqué.
Il est ainsi plus simple de déterminer exactement la relation existant entre les différents paramètres (du genre TailleObjetA = 1/2 Taille.XObjetB * Volume ObjetB) avant de commencer. Comme çà, tu crée ensuite un nœud formule avec en entrée les différentes valeurs dont tu as besoin, tu coches utiliser les noms des ports, et tu écris ainsi dans un seul nœud la relation entre deux paramètres et c'est vachement plus simple à modifier plus tard.

De plus, toujours dans le but de simplifier ton expression, le nœud Maths permet de définir une valeur pour une entrée non connectée. Tu n'as donc pas besoin d'un nœud constante pour cela.

Sinon pour ce qui est du contenu même, je n'ai pas encore saisi exactement ce que tu voulais faire, je m'y penche plus attentivement demain. :)

v.montel
18/06/2005, 23h12
Hello Macaïdam!

Meci pour ton explication, c'est vraiment bienvenu! De ce que je comprends, j'ai un raisonnement presque à l'inverse de celui qu'il faudrait avoir. Je commence à mieux comprendre, je me replongerai donc dans la soirée sur le fichier. :poucehaut:

v.montel
19/06/2005, 23h29
Hello!

Je recommence depuis le départ, avec une explication complète :
je travaille sur une caisse qui a deux panneaux qui se déplient par charnières. Sur un de ces panneaux se trouve un élément (le JAUNE sur l'image du dessus) solidaire dudit panneau, dont le volume influe sur les autres volumes internes à la caisse (si il prend moins de place, les autres sont plus gros, et inversement).

PREMIERE ETAPE : DEPLIER LE CUBE

Je veux ces trois étapes :
http://ns2118.ovh.net/~deltazon/images/v.montel_A1.jpg

http://ns2118.ovh.net/~deltazon/images/v.montel_A2.jpg

http://ns2118.ovh.net/~deltazon/images/v.montel_A3.jpg

Premier problème, en cours de route, ça donne ça :
http://ns2118.ovh.net/~deltazon/images/v.montel_A4.jpg

Le problème était pire auparavant, j'ai depuis utilisé un mode de coordonnées relatives, mais ça ne passe comme prévu. Que dois-je faire pour déjà avoir le dépliage correct?

v.montel
19/06/2005, 23h33
Détail important : la hiérarchie

http://ns2118.ovh.net/~deltazon/images/v.montel_A5.jpg

Plane est le panneau relié à la charnière du bas du cube, Plane.1 est le panneau du dessus du cube.

Il y a aussi 2 DU slider sur le null, une pour la première rotation, et une autre pour la seconde rotation.

v.montel
20/06/2005, 03h22
Bonsoir à tous. Eureka, je viens de comprendre mon erreur. Comme une buse, j'avais mis les mauvais types de rotations dans mon Xpresso (les Globals), et du coup, ça tourne comme je le souhaite dorénavant.

http://ns2118.ovh.net/~deltazon/images/v.montel_A6.jpg

C'est une erreur vraiment débile, mais que voulez-vous, c'est mon tout premier essai avec Xpresso, et je suis loin de comprendre la manière dont cela fonctionne, et encore plus loin de connaître tous les types de noeuds. Donc je tâtonne... Il ne me reste qu'à poser mes blocs de couleur dans ma caisse (ce cube-ci était juste pour trouver ma solution).


DEUXIEME ETAPE : POUVOIR GERER EN DU LES DIMENSIONS DE LA CAISSE ET DU BLOC ROUGE (avec influence sur tous les autres blocs...)

Là, je me retrouve au point d'hier, avec l'image que vous voyez en tête de topic. Clairement, j'ai 2 contraintes :

1-La caisse ROUGE a une influence sur la taille de TOUS les pavés qu'elle contient, les 2 BLANC devant toujours avoir le même volume.
2-Le pavé JAUNE a une influence sur tous les volumes INTERIEURS à la caisse ROUGE, les 2 BLANC ayant toujours le même volume.


J'ai bien vu ton aide Base, je comprends le principe, mais il faut maintenant que je comprenne comment le faire comprendre à Xpresso... :arrow: :arg:

Kaldera Lake
20/06/2005, 09h48
Proposition de piste de solution à venir :p

Kaldera Lake
20/06/2005, 10h02
Je pense avoir bien compris ton probleme, mais il me rest un doute: tes deux boite sont-elles rapport constant, ou peuvent elle etre modifiées independamment sur chacun de leurs axes? si non, il te suffira de 2 DU pour regler ton probleme, si non il en faudra 6, trois par boite. Une fois que tu auras defini ce paramettre...

Ensuite je te propose de decomposer le probleme. Essaye de faire un Xpresso qui va modifier la taille et la position de la boite jaune pour qu'elle reste toujours centré dans le coin de la boite rouge lorsque tu en mofifiera la taille via un DU qui ira de 0% à 100%. 0% etant le cas ou la boite jaune est inexistante, et 100 % le cas ou elle occupe tous l'espace de la boite rouge. Dans cette premiere partie tu vas travailler avec une boite rouge de taille constante mais tu va utiliser des pourcentage pour tes volumes internes. Je te confirme que ce n'est pas obligé, tu pourrais tout a fait utuiliser leur taille effective, mais ce devrait etre plus simple de tarvailler en pourcantage. Premiererement parce que le resonement est plus juste, deuxiemement parce que cela simplifiera beaucoup le code en particulier lorsque viendra le temps de reduire la taille de la boite rouge *:roll:

Une fois que tu auras faut cela fait le meme exercice avec les boite bleu puis verte. Enfin termine avec les blanches.

Il n ete restera alors qu'a remplacer dasn ton Xpresso les proportion de la boite rouge que tu auras utilisé par leur DU associer, et a associer ces DU à leur port respectif sur le bloc "Caisse".

J'espere etre suffisament clair pour que tu puisses y arriver. Le probleme en prog est toujours le meme: si je ne sais pas faire quelque chose, comment puis-je decomposer le probleme en petit problemes que je sais faire.

Bon courage *:wink:

Daubermman
20/06/2005, 18h39
Tant qu'on y est c'est quoi la différence entre Global et non Global ? :oops:

base80
20/06/2005, 18h42
prenons un objet posé dans un null, la position/rotation globale est par rapport au 0.0.0 global du fichier tandi que la position/rotation (normale) est par rapport au null (parent).

v.montel
20/06/2005, 19h46
Hello fellows!
Je n'aurais pas su expliquer comme Base l'a fait la différence entre Rotation Globale et Rotation, mais pour exemple, si tu regardes les images du dessus, tu notes que j'ai mis le détail Xpresso à chaque fois : eh bien dans les images où mes paramètres étaient en Global Rotation, on voit le problème du second panneau qui reste à l'horizontale qauand on commence à ouvrir le premier, au lieu de garder un angle constant de 90° avec lui. C'est vrai que sans video on ne s'en rend pas compte, mais le but était de pouvoir, en partant d'un angle droit, ouvrir les deux panneaux.

Kaerel : merci pour ces détails, c'est fort à propos :poucehaut: Là, je dois aller bosser, mais je me remets dans ton explication dès ce soir. Je crois que ça complète bien celle de Base et de Macadaïm, je devrais pouvoir m'en sortir. Je crois même voir quels types de noeuds utiliser :efface:

Pilou
10/08/2005, 12h27
- Remontage de topic -
Alors V.Montel, tu t'en es sorti :bounce: ?

v.montel
12/08/2005, 02h38
Hello people!

Désolé d'avoir lâchement abandonné ce thread, je pensais d'ailleurs passer au travers des mailles du filet de ceux qui suivent :mrgreen:

Pour la première étape donc, c'était réussi comme je l'avais dit plus haut, mais je me suis rendu compte dans la foulée que je n'avais nullement besoin d'Expresso ici, il suffisait simplement de placer les poignées de rotation de chaque face au niveau de la charnière attenante... :oops:

Du coup, ça m'a regonflé pour voir quand même la suite, mais c'était avant tout pour construire un outil "basique" d'aide à la prise de décisions quant aus dimensions de modules dans une caisse donnée, et là j'ai été ratrappé par le calendrier, donc on a du prendre nos décisions sur du croquis, sans s'aider de cet outil virtuel. Tant pis pour cette fois...

J'essaierai quand même de vous montrer ce qu'il en était exactement, une ou deux images du projet plus finalisé, mais là encore, il se trouve avec deux autres avant-projets, et apparemment, ce n'est pas celui qui sera gardé...

Brtef, c'est du temps passé à commencer à se frotter à une technologie que je ne connaissais pas, et qui n'est pas utile en finb de comptes pour ce projet donné, too bad for me!