PDA

Voir la version complète : mettre en mémoire des valeurs d'un tag coffee ?



clemz
21/12/2009, 20h38
salup !

j'ai un tag coffee dans lequel , j'ai des container dans lesquels je mets des valeurs venant de user datas diverses . Maintenant je voudrais que ces valeurs restent en mémoire quand je sauve le fichier et le ferme . Car quand je le ré-ouvre il a perdu ces valeurs dans les containers .

( mon tag doit en fait juste stocker des 'poses' faites par une 20aines de userdatas ( les controles des doigts en fait .. chaque doigt à plusieurs DU de control ( bend , curl etc .. ) et donc sur le tag coffee j'ai un bouton userdats type 'cycle' dans lequel j'ai crée 6 poses . J'ai un booléen 'set' et un autre ' inject' ..voila c'est assez simple pour le fonctionnement . et donc dans le code , je liste toutes les DU de l'objet portant le tag ( la main donc ) et quand on clique sur 'SET' je fais des ->SetData(id, .. ) , des valeurs des DU dans chacun des containers ( j'ai 6 containers différents ..1 par pose ) .. etc ..et quand on clique sur 'INJECT' je lis les containers ( -> GetData(id) ) .. en fonction de la pose choisie biensur ( et donc du container correspondant ) ..
maintenant ce que j'arrive pas à faire c'est de stocker dans le 'tag' ces différentes poses :?

dans le SDK coffee /memory ..je comprends pas grand chose à leurs explications "iee2mem() " ..etc

(voili voilou .. en fait je veux me mettre au python , mais je voudrais d'abord faire fonctionner ce petit tag en coffee pour etre sur de le convertir proprement en python après.)

merci :odile:

oli_d
21/12/2009, 21h25
Salut,

normalement ça marche, j'ai déjà utilisé les containers pour stocker des valeurs et elles sont sauvegardées.Il faut peut être juste faire attention que tu aies un identifiant unique. Cela donne un code du type pour affecter une valeur :



var bc = objet->GetContainer();
bc->SetData(no_data,valeur);
objet->SetContainer(bc);


mais apparemment c'est à peu près ce que tu fais

Sinon si tu as beaucoup de trucs à stocker, il y a la classe HyperFile, mais ça je n'ai jamais utilisé...

Tu nous prépares un prof ou un joueur de guitare virtuel avec ton code ?

valkaari
21/12/2009, 21h37
j'ai lu que tu pouvais avoir plusieurs container dans un objet (ou j'ai mal vu je lis beaucoup de truc en ce moment)

tu peux surement avoir un container par pose et les stocker sur un objet null ou le tag coffee lui même.

ou pire avoir plusieurs objet neutre mais spa propre :S


et pour le python tu as plus que raison de t'y mettre puisque maxon vient officiellement d'annoncer qu'il vont "inclure/supporter" python to c4d (actuellement en béta)

enfin à voir ce qu'ils vont faire ^^

edit :
http://www.maxon.net/en/news/singleview-default/article/maxon-announces-strategic-partnership-with-developer-of-py4d.html

clemz
21/12/2009, 21h51
merci les gars :)

ha j'ai pas fais de " objet->SetContainer(bc); " Oli_D ... crotte ça vient peut-être de ça ^^ .. je vais retester et vous dire :art:

merki :odile:

clemz
22/12/2009, 11h20
ok , j'ai utilisé le container de l'objet portant les DU ( la main donc ) et ça marche :) . maintenant j'ai un autre soucisse : comment peut-on mettre automatiquement des clés sur les user datas ? :mrgreen: .. j'ai essayé les 3 commandes différentes que j'ai trouvées dans le command manager ( CallCommand(465001203) CallCommand(465001001); etc ) mais rien ne marche .
même en me mettant en auto key , il ignore les changement de valeurs des DU quand j'injecte une pose ... :?

oli_d
22/12/2009, 14h18
D'après ce que je sais CallCommand() ne fonctionne malheureusement pas dans un tag COFFEE, ni dans un Xpresso. Il faut soit le faire dans un vrai plug en COFFEE, soit via le ScriptManager.

Je n'ai jamais testé des clés en COFFEE, mais je regarderais du côté de la classe "BaseKey", je teste dès que j'ai un moment si tu veux.

valkaari
22/12/2009, 14h31
A priori, les clefs sont en lecture seule avec le coffee/xpresso. Donc impossible d'ajouter des clefs.

A chaque fois que j'ai regardé le coffee, je me suis retrouvé bloqué par un "impossible en coffee" c'est pour cette raison que je suis passé au c++, à peine plus chiant à coder et pas limiter.

clemz
22/12/2009, 15h09
ha ok :) . merci pour vos retours :odile:

ouep Oli_D , si tu veux tester je veux bien . mais j'ai peur comme le dit Val que ça ne soit impossible . bon c'est pas grave , j'ai la base qui fonctionne :) . je vais pouvoir essayer le python et je vous redemanderai comment on fait ci et ça en python ^^ .

ou alors si vous voulez qu'on fasse un wip commun sur cet outil de pose , en python ? :)

je poste mon pov code coffee et on regarde comment le convertir/l'améliorer en python ?

:odile:

oli_d
22/12/2009, 15h26
C'est vrai qu'il me semblait avoir lu un truc à ce sujet, donc je vais pas me casser les dents à essayer.

Pour le wip en python c'est une bonne idée, mais il faudrait que je me remette au python et ça fait un petit moment que j'ai pas touché... et jamais dans C4D. Mais j'adore ce langage, bien plus simple et court que le c++, donc idéal pour débuter