Voir la version complète : particules sur c4d art
c'est à quelques jours seulement de l'arrivé de c4d 8 que je trouve ça, mais bon, ça peux toujours aider quelqu'un...
dans c4d art, qui je le rappelle ne possede pas la faculté de faire de l'animation, les particules ne sont pas accessibles, je pensait même qu'elle n'étaient pas gérés.
c'est en téléchargeant un fichier sur internet que je me suis retrouvé avec un éméteur de particules dans ma scène.
il est en effet tout à fait possible d'utiliser les particules dans c4d art.
il suffit pour cela de créer un null object et d'y mettre cette expression coffee :
var part;
main(doc,op)
{
part=new (ParticleObject);
part->SetName("particules");
doc->InsertObject(part,op,NULL);
}
pour avoir des particules dans la scène, il faut donner une valeur négative à "commencer emission".
j'espère pouvoir aider certains avec ça
(il faut supprimer l'expression assez vite si vous ne voulez pas avoir des dizaines d'emetteurs) :wink:
Je n'ai pas la version ART mais pour cette expression on peut la contrôler d'avantage, par exemple la déclencher en cliquant sur un objet pour qu'elle produise un nombre N d' emetteurs de particules.
Créer un objet NULL appelé "bouton"
Créer un objet NULL appelé "expression" avec l'expression suivante:
var nb_emitters=50; //on met ici le nombre d'emetteurs de particules souhaité
var part;
main(doc,op)
{
var clic=GetActiveObject(doc); //regarde quel est l'objet actif
if (!clic) return; //si il n'y en a pas on quitte
if ("bouton"!=clic->GetName()) return; //si l'objet actif n'est pas "bouton" on quitte
doc->SetActiveObject(op); //désélectionne aussitôt le bouton
var n;
for (n=0;n<nb_emitters;n++)
{
part=new (ParticleObject);
part->SetName("particules_"+tostring(n)); //tostring(valeur) convertie une valeur en texte
doc->InsertObject(part,op,NULL);
}
doc->Message(MSG_UPDATE); //actualise la scène.
}
Il suffit donc de cliquer sur l'objet "bouton" pour exécuter l'expression qui va produire nb_emitters emetteurs de particules, évitant ainsi que l'expression tourne en permanence et produise des objets indéfiniment !
L'astuce est sympa pour moi qui ai ART... mais comme la R8 devrait plus trop tarder (je croise les doigts), je risque de pas m'en servir tout de suite ;-)
Merci vachement beaucoup à tous les deux, c'est "meuh meuh" comme trouvaille ça :wink:
cette expression m'a pris deux minutes, juste pour tester. en general, un seul emetteur de particules suffit (personnellement 50 emetteurs, je ne sais pas ce que je vais en faire ! :D )
je me retrouve donc avec ce code :
var n=1;
var part;
main(doc,op)
{
var clic=GetActiveObject(doc); //regarde quel est l'objet actif
if (!clic) return; //si il n'y en a pas on quitte
if ("bouton"!=clic->GetName()) return; //si l'objet actif n'est pas "bouton" on quitte
doc->SetActiveObject(op); //désélectionne aussitôt le bouton
{
part=new (ParticleObject);
part->SetName("particules_"+tostring(n)); //tostring(valeur) convertie une valeur en texte
doc->InsertObject(part,op,NULL);
n++;
}
doc->Message(MSG_UPDATE); //actualise la scène.
}
L'astuce est sympa pour moi qui ai ART... mais comme la R8 devrait plus trop tarder (je croise les doigts), je risque de pas m'en servir tout de suite ;-)
moi aussi j'attend avec impatience. :roll:
mais bon, pour ce qui n'auront pas la mise à jour tout de suite, ça peut être utile.
Si tu veux produire seulement un emetteur à chaque fois tu peux enlever
"var n=1;"
egalement le "+tostring(n)" car c4d mettera lui-même un chiffre si besoin.
et enfin "n++;"
Il faut prendre l'habitude de faire du ménage dans les scripts pour ne conserver que le stricte nécessaire. Pour les petits programmes ce n'est pas gênant mais pour de grosses expressions avec beaucoup de code ça peut vite devenir le bordel ! :wink:
Powered by vBulletin® Version 4.2.1 Copyright © 2024 vBulletin Solutions, Inc. Tous droits réservés