PDA

Voir la version complète : Akiadisa - Bonsoir à tous!



akiadisa
02/01/2007, 23h30
Tout d'abord, j'ai découvert ce site récemment par le biais d'un professeur. Je suis actuellement des cours de concepteur multimédia 2ème et mes spécialités sont plutôt le langage html et php. J'ai des bases un peu dans tout ce qui touche au média (dont cinema 4d), de quoi me lancer sans toutefois assouvir ma frustration de plus en plus présente.

Je complète donc les cours par des formations annexes, dont la fameuse suite de Formacd (www.formacd.com) que je recommande à toute personne voulant avoir de bonnes bases dans les logiciels comme photoshop, flash, cinema4d, etc. Je fais de la pub car cela m'a passablement aidé.

Actuellement sur cinema 4d :

Une animation avec 16 cubes. Après avoir suivi l'excellent tutoriel proposé (http://www.mediaworks.fr/dispatch.php?site=fc4d) par Blazouf, je me suis posé la question suivante :

J'ai simplifié le travail en prenant 3 cubes placés à 5 mètres sol. Je souhaiterai que, comme à l'image de pommes qui mûrissent, que ces 3 cubes tombent l'un après l'autre.

J'ai utilisé "dynamics". Un objet solveur, dans lequel j'ai placé un objet gravité, 3 cubes, un objet plan et les cubes possèdent une dynamique de corps rigide. J'arrive pour l'instant à une animation simple -> mes 3 cubes tombent en même temps.

J'aimerais à présent que mes 3 cubes ne tombent pas en même temps, mais une intervalle entre les trois. J'ai pensé à créer des instances clefs où la masse change.

Temps O -> masse 0
Temps 25 -> masse 0
Temps 26 -> masse 1

Mais le cube ne bouge pas, sauf quand je recule le pointeur temps manuellement vers l'arrière ^^O.

Mes questions :

1. Dynamics est-il approprié à mon souhait ? (j'ai lu dans d'autres posts que c'était peu utilisé)
2. Quel propriété me permettrait-elle de faire tomber mes 3 cubes avec un laps de temps entre eux ?

Je vous remercie des éventuelles réponses et je vais chercher de suite un café* :D.

Fichier joint :

J'ai séparé cette fois-ci les 4 parties qui doivent tombés ensemble, à chaque fois dans un solveur différent. J'imaginais que je pourrais utiliser :

1. activation/désactivation du solveur (ici nommé "anim1" etc.)
2. dans l'onglet "généralités", utiliser le début et fin de frames.

Mais rien à faire. Voici le fichier si quelqu'un souhaiterait me donner un coup de main : fichier c4d (http://savo-net.org/telechargements/CM_3D_cubes_anim3.c4d")

Edit1 : titre du post
Edit2 : le fichier joint

akiadisa
03/01/2007, 00h30
Je reprends les quelques réponses qui m'ont permis de continuer mes recherches (des autres posts).

- Phytools serait mieux pour les simulations de gravité, collision, etc. (http://www.mediaworks.fr/dispatch.php?site=fc4d)
- Voir la documentation de cinema 4d sur dynamics

Deux tutoriels :

1. Tutoriel proposé sur ce site par Blazouf
2. Tutoriel http://www.pixellum.com/html/Images/PDF/Tutorial_20.pdf

akiadisa
03/01/2007, 02h02
Deux edits pour mon post :

1. titre du post
2. fichier joint

Voilà je vais de ce pas me coucher, et demain essayer d'autres plugins. Si vous avez une suggestion je suis tout ouï.

base80
03/01/2007, 03h32
Ajoute un objet invisible qui retient la pomme

Jean-Laurent
03/01/2007, 11h29
Salut akiadisa. :odile:

Tu peux facilement faire ce que tu souhaites avec quelques lignes de COFFEE, ou un peu d'Xpresso.
Pas besoin de sortir l'artillerie lourde.

En quelques lignes de code, tu définies la gravité.
Les objets qui vont entrer en collision.
Les instants où il faut qu'ils tombent.

Si tu as du mal, je te montrerais un exemple. :odile:

Edit: Voilà l'exemple:


var g=40; // Définit l'accélération de la pesanteur. 9,8 sur Terre mais dans C4D?
var tombe =0; // Une variable qui définit si l'objet tombe ou pas. (0, il ne tombe pas)
var stop=0; // Variable qui détermine si l'objet a touché le sol.
var dt=0.1; // variation du temps entre chaque frame.
var vitesse=0; //Vitesse de chute de l'objet.

main(doc,op) // Tout ce qui se passera à chaque frame. doc est le document et op, l'objet.
{

var t= doc->GetTime()->GetSecond(); // Relève le temps.
var position = op->GetPosition(); // Relève la position de l'objet.
var positionsol= doc->FindObject("Floor")->GetPosition(); // Relève la position du sol.
var taille=op->GetContainer()->GetData(PRIM_CUBE_LEN); // Relève la taille de l'objet.

if (position.y<(positionsol.y+taille.y/2)) // Si l'objet touche le sol, il ne tombe plus.
{tombe=0;stop=1;}
if (t>2 &&!stop) {tombe=1;} // L'objet ne tombe qu'à partir d'un certain nombre de secondes, ici 2)

if (tombe) { // Définition de la chute de l'objet.

vitesse+= g*dt; // La vitesse augmente suivant l'accélération g
position.y-=vitesse*dt; // On change la position de l'objet en conséquence

op->SetPosition(position); }
}


Ca tient en quelques lignes et ça ne prend que quelques minutes.
On peut copier le tag sur n'importe quel objet et modifier l'instant auquel il chute, sa taille, ou d'autres choses.
Tu peux ajouter un rebond à l'objet etc... :wip:

Si tu as besoin du fichier, tu demandes. :odile: