PDA

Voir la version complète : Version courante du COFFEE SDK



phanault
24/04/2008, 20h54
Bonjour les gourous du COFFEE.

Je viens tout juste de télécharger la documentation du SDK de COFFEE à partir du site de Maxon. La documentation indique que c'est la version R9.5.

Existe-t'il une version de COFFEE pour la R10 et R10.5 ou est-ce que la version 9.5 est la plus récente disponible ?

Merci d'éclairer ma lanterne.

xs_yann
24/04/2008, 21h01
Ce doit être qu'il n'y a pas eu de changement dans le COFFEE entre la R9.5 et la R10.5.
Personnellement, il n'y a pas longtemps j'utilisait celui de la R9, ce qui ne m'as jamais dérangé, le seul problème que j'ai rencontré entre R10 et R9 c'est des SetBit() qui ne fonctionnaient plus.

phanault
24/04/2008, 21h10
Merci beaucoup xs_yann pour ces informations. :odile:

Je vais commencer à étudier comment fonctionne le COFFEE et voir si je peux en tirer quelque chose. :coup:

Sir Gong
24/04/2008, 22h14
Si t'as besoin de rien, tu me demandes.

phanault
24/04/2008, 22h16
Si t'as besoin de rien, tu me demandes.


Tiens, quel adon, j'ai justement besoin de rien ! :wink:

Sir Gong
24/04/2008, 22h22
tiens, suffit de demander ; rien ...que du bonheur

oli_d
24/04/2008, 22h57
Il n'y a en effet pas eu de mise à jour de la doc pour le COFFEE, ce qu'il y a eu pour le SDK en C++. C'est un peu dommage, car il doit y avoir des changements (calques, hair etc....). Mais bon si tu veux débuter, il y a déjà largement de quoi te donner bien mal à la tête avec ce qu'il y a dans la 9.5 :mrgreen:.

Pour commencer tu as toujours l'excellente doc de Maître Tengaal, http://www.tengaal.com/(qui avait été faite pour la r.6, il y a eu quelques améliorations depuis mais les grands principes sont très bien expliqués). Et puis le sujet "Invitation pour un COFFEE" de Maître Majoul sur Bubbles http://www.bubbles4d.com/index.php?topic=280.0.

N'hésites pas à poser des questions, je n'aurai probablement pas la réponse, mais cela me rassurera de voir que je ne suis pas le seul à pas tout piger :mrgreen:

xs_yann
25/04/2008, 09h19
Tu peux également regarder ici : : http://www.3dvalley.com/phplinks/index.php?PID=52 quelques tutos intéressants
Ensuite je te conseille de regarder ce qui a été déjà posté dans la section programmation du forum (ce n'est pas très long, mais il y a de bonnes infos).
Lorsque tu butes sur quelque chose fait une recherche sur le forum plugincafe, il y a la solution à de nombreux problèmes.



N'hésites pas à poser des questions

:wink:

phanault
25/04/2008, 14h19
Merci à vous Oli_D et xs_yann.

Étant programmeur, je pense que ça ne sera pas long à comprendre la base du langage en elle même. Ce qui est le plus long à apprendre et à comprendre, c'est la hiérarchie des classes et des objets de C4D et leurs interactions et comment on se sert de ces classes et objets pour créer et manipuler des points, des arrêtes et des polys.

Pour le moment, je n'ai pas vraiment de projet en tête et donc, de motivation pour développer une petit plug en COFFEE mais je vais continuer à observer ce qui se fait par vous, les pros et tenter de comprendre comment vous vous y prenez.

Merci pour ces liens et conseils. L'entre-aide est légendaire sur ce forum et vous le prouvez encore. :prie: :efface: :odile:

xs_yann
25/04/2008, 14h44
Étant programmeur, je pense que ça ne sera pas long à comprendre la base du langage en elle même.


Ca depend des langages que tu programmes, si c'est du Java oui, si c'est du TI Basic, ça va être plus compliqué. :mrgreen:

Personnellement, j'avais déjà fait un peu d'ActionScript avant le coffee, c'est vrai que ça m'a aidé, ne serait-ce que pour savoir ce qu'est une fonction, une boucle ou une variable. :roll:
Après pour le C++ de toute façon il vaut mieux tout revoir depuis le début, mais le coffee m'as pas mal aidé. Par la suite c'est le C++ qui m'a aidé pour programmer en coffee (par exemple éviter les variables globales, être plus orienté objet, comprendre ce que sont les classes que j'utilisait sans savoir leur fonction...).

Si tu n'as pas d'idée de plug demande aux membres du forum, il en auront pour toi. :mrgreen:
Après si tu n'as jamais fait de COFFEE tu devrais commencer par écrire des expressions ou des noeud Xpresso.
Bon courage :odile:

phanault
25/04/2008, 14h59
Ne ce moment, j'utilise Delphi, XBase++ et PHP mais j'ai déjà programmé en C, C++, Clipper, TI Basic (Eh oui, j'ai eu un TI-99 4A) et bien d'autres langages. Je suis habitué à la programmation OO.

Là où je vais probablement butter, c'est dans les vecteurs et les maths avancées.

J'ai effectivement vu qu'il y a beaucoup de demandes et d'idées de la part des membres. C'est bien car ça fait évoluer le soft par une communauté engagée et généreuse. :poucehaut:

J'ai écrit quelques noeuds Xpresso pour m'amuser. Rien de bien compliqué, juste pour me faire la main.

Merci encore ! :odile:

xs_yann
25/04/2008, 15h07
TI Basic (Eh oui, j'ai eu un TI-99 4A)

T'inquiète pas je disais ça pour rire moi aussi j'ai déjà fait du TI Basic. :roll:
Plus ou moins, pierre feuille ciseaux, tirage flash pour le loto... le tout sur TI 80. :boss:

phanault
25/04/2008, 19h26
TI BASIC : Que voulais-tu faire de plus que de petits programmes sans intérêt ?

J'ai eu plus de plaisir à programmer mon Apple IIe et IIc, surtout mon IIc car j'y avait intégré un processeur Z80 en plus du 65c02 qu'il contenait. Je programmais alors en assembleur. C'est fou ce qu'on pouvait faire avec ces machines à l'époque (on parle ici de fin 70, début 1980). Eh oui... je suis vieux ! :wink:

Floby
26/04/2008, 21h51
De ce que j'en connais, il me semble que COFFEE a une 'cré gueule de C++, mis à part que les pointeurs n'existent pas en COFFEE, tous les passages se font par copie. Si tu connais le C++, aucun problème. Après c'est juste la doc des objets à se taper ne serait-ce que pour éviter de réinventer la roue à chaque ligne de code. :)

phanault
27/04/2008, 03h09
effectivement, ça ressemble beaucoup au c++. La structure du code est sensiblement la même. J'ai pas encore eu le temps d'étudier les classes, mais je vais me faire a temps perdu.

xs_yann
27/04/2008, 09h54
Le coffee est également beaucoup moins typé. Pas besoin de déclarer les types de variables, ni les valeurs de retour des fonctions.
Comme l'as dit Floby, en coffee pas de pointeurs, pas non plus de références.
Ce qui entraîne pas de surchage, pas de polymorphisme, de méthode virtuelles, de classe abstraites, de patron de classes (templates)...
Enfin dans une petite expression ça ne manque pas trop. :roll:

tarlack
27/04/2008, 12h07
euh, t'es sûr pour l'heritage ?
le fait que tu n'aies pas de mecanisme apparent du type des pointeurs et des references, rien ne dit que tu passes reellement des objets en parametre. Pour la majorité des langages de ce genre (python, ...), tu passes des references en parametre (notamment parce qu'une variable non typée, on ne peut pas savoir sa taille physique, alors qu'une reference, c'est fixe), et donc l'heritage tout ca c'est possible. Attention à ne pas trop extrapoler depuis le C++ pour voir comment marche et ce que permet COFFEE, ca reste 2 langages très différents dans leurs fondement. À la limite, leur seul point commun, c'est d'etre orienté objet.

Jean-Laurent
27/04/2008, 16h35
Pour aller dans le sens de tarlack on ne déclare pas le type des variables mais ...

Quand on déclare une variable en Coffee elle est automatiquement de type "int".

Ainsi:

var a=12;
var b=10;
var c=a/b va donner le résultat c=1. Ce qui peut être surprenant.

C'est pourquoi il existe la fonction float().

var c=float(a)/float(b) donnera bien c=1.2

Du coup il faut quand même faire attention à ce qu'on déclare.

tarlack
27/04/2008, 16h46
et si tu fais a = 12.0 ? je te parie que ca fait du float. en fait il devine le type, et pour les types predefinis il le fait en fonction de la "forme" de ce qui suit, et une valeur sans ".xx" est traditionnellement un entier. En coffee, il est possible de faire un truc du genre



var a = f1();
a = f2();


avec f1 et f2 retournant des objets completements différents ? si c'est le cas, c'est que tu ne manipules que des references :)

Jean-Laurent
27/04/2008, 17h49
C'est le cas.

On peut faire:

var a=3;
a=monObjet;

Où a sera d'abord un int, puis un objet.

tarlack
27/04/2008, 18h13
il me semblait bien que c'etait ca, quand j'avais regardé COFFEE vite fait j'avais fait de l'heritage il me semble :)

xs_yann
27/04/2008, 18h19
Attention je n'ai pas dit ça.
L'héritage est possible en COFFEE, un exemple : http://ykoeth.free.fr/blog/?p=57#more-57

Sans l'héritage ont ne pourrais pas écrire de plugin en COFFEE.

Floby
27/04/2008, 23h39
Oui, c'est pas parce qu'on ne déclare pas le type soi-même qu'elle ne sont pas typées, d'ailleurs ça me paraît bizarre qu'on ne puisse déclarer ses variables explicitement d'un certain type.



euh, t'es sûr pour l'heritage ?
tu passes des references en parametre (notamment parce qu'une variable non typée, on ne peut pas savoir sa taille physique, alors qu'une référence, c'est fixe)


Je ne sais pas comment ça se passe vraiment en dessous, mais on se sert des variables comme si on les passait par valeur. Cela dit c'est pas plus mal, ça évite de faire des bêtises parfois =) .
pour mes variables, en général comme elles sont initialisées directement à la déclaration en général j'ai pas de probleme de conversion de type.
du style
var a = op->GetPosition();
//a est un vector
var b=a.x;
//b est un float (il me semble)

tarlack
28/04/2008, 08h20
en fait tu les passes par le seul moyen existant, après ce que c'est en dessous ce n'est pas notre probleme, c'est le probleme de l'interpreteur :)
xs, quand je parle d'heritage, j'inclue les classes abstraites et le polymorphisme...Ce n'est pas géré par COFFEE ? parce que si c'est le cas, l'heritage en lui meme n'a quasiment pas d'interet, à part heriter des classes vides....ou alors tu différencies classe abstraite et interface, c'est possible aussi

xs_yann
28/04/2008, 09h23
xs, quand je parle d'heritage, j'inclue les classes abstraites et le polymorphisme...Ce n'est pas géré par COFFEE ? parce que si c'est le cas, l'heritage en lui meme n'a quasiment pas d'interet, à part heriter des classes vides....ou alors tu différencies classe abstraite et interface, c'est possible aussi


En COFFEE le mot clé virtual n'existe pas, or le polymorphisme et les classes abstraites nécessitent l'utilisation des méthodes virtuelles.
Même sans ça, l'héritage est indispensable.

Aurety
28/04/2008, 12h31
xs, quand je parle d'heritage, j'inclue les classes abstraites et le polymorphisme...Ce n'est pas géré par COFFEE ? parce que si c'est le cas, l'heritage en lui meme n'a quasiment pas d'interet, à part heriter des classes vides....ou alors tu différencies classe abstraite et interface, c'est possible aussi


En COFFEE le mot clé virtual n'existe pas, or le polymorphisme et les classes abstraites nécessitent l'utilisation des méthodes virtuelles.
Même sans ça, l'héritage est indispensable.


Rassurez-moi, vous ne parlez pas tous les jours comme ça, hein :arg:

tarlack
28/04/2008, 13h43
attention, tu fais encore le lien C++ <=> COFFEE, et plus tu t'avances plus j'ai l'impression que ce lien est très faible, voir limite inexistant. le mot clé virtual n'existe pas non plus en Java par exemple ;) L'heritage sans polymorphisme, ca ne sert à rien, vu que tu ne peux pas changer le comportement d'une classe héritante sans ca, tu pourrais juste rajouter des nouvelles fonctions. Nouvelles fonctions qu'on ne pourrait pas appeler depuis une sous-classe, vu qu'elles ne seraient pas declarées dans cette sous-classe.

C'est très bien de faire des liens entre les langages, c'est comme ca qu'on apprend vite, mais il faut aussi voir les différences, sinon on fait des erreurs ;)

Aurety : tu vois ce que ca donne quand tu parles de 3D ? :mrgreen:

Jean-Laurent
28/04/2008, 13h56
Je me pose du coup la même question que tarlack.
Je n'ai pas C4D sous la main mais le plus simple c'est d'essayer.

On ne peut pas utiliser le mot virtual (tout comme on ne peut pas déclarer de int) mais peut-être qu'il y a possibilité que des fonctions s'appliquent à plusieurs classes différentes.
Il me semble que c'est le cas pour les sous-classes, effectivement. :?:

tarlack
28/04/2008, 14h02
arretez de penser C++ equivalent à COFFEE, tous les malentendus croisés jusqu'à présent viennent de là. Ce n'est pas vrai, les 2 ont leur syntaxe propre, (avec leur mots clés propres et leur propre manière d'exprimer les choses), leur systeme de typage propre (l'un fortement typé, l'autre non), et leur semantique propre (grosso modo le comportement du langage; la signiofication des structures, mais bon ca c'est deja plus technique, on va pas rentrer dans les détails).

Donc regardez ce que permet COFFEE et comment ca s'exprime là dedans (pour cela, il faudrait les specifications du langage, qui donnent la syntaxe et la semantique), independamment de ce qu'on peut faire en C++, python, java, caml, assembleur, prolog, lambda-calcul ou tout autre langage et formalisme que vous voudrez. Ils ont tous des points communs avec COFFEE (quoique pour le prolog faudra que je cherche...ah si, ca permet de calculer des trucs aussi :mrgreen: ), mais pour autant ils ne sont pas identiques.

xs_yann
28/04/2008, 14h16
Personnellement, je n'ai pas dit que le C++ est équivalent au COFFEE, j'ai justement énoncé les grandes différences entre COFFEE/C++. Effectivement je me suis un peu avancé sur les méthode virtuelles, le COFFEE s'apparentant sur ce point au Java, les méthodes étant virtuelles par défaut (peut-être qu'il existe un mot clé équivalent à "final" en COFFEE).


C.O.F.F.E.E.is a platform independent and object-oriented programming language that can be used to develop plugins and extensions for C4D. The language is similar to C++ and Java but is more simplified, which makes it easy to learn and use. (See The C.O.F.F.E.E. Language.).


Le SDK le spécifie bien que COFFEE est un langage similaire au C++ et Java mais simplifié donc pour en revenir au début du débat, en connaissant le C++ ou le Java, ça t'aidera à programmer en COFFEE.

edit : Au passage, tu m'as l'air bien calé en programmation tarlack, tu as fais des études concernant ou tu as appris tout seul en "hobbie"?

tarlack
28/04/2008, 14h27
oui, mais comme tu le vois la similarité peut te guider, mais ne doit surtout pas te faire dire qu'une chose n'est pas possible parce que ca ne s'exprime pas pareil :) Il n'y a pas les specifications du COFFEE quelque part ? ca aiderait franchement...

sinon j'ai appris en hobbie, et j'ai fait des etudes d'info (et continue, mais c'est bientot fini), mais les etudes ne m'ont pas appris à programmer, elles m'ont appris à quoi pouvait servir ce que je connaissais en prog :) D'ailleurs si tu veux t'orienter là dessus, n'hesite pas à me contacter par MP, je pourrai te donner mon avis sur ce que j'ai fait ;)

xs_yann
28/04/2008, 14h29
Il n'y a pas les specifications du COFFEE quelque part ? ca aiderait franchement...


Dans le SDK, il y a quelques description mais sans plus...

tarlack
28/04/2008, 14h32
Seb-BBL, ca serait possible de demander des infos à Maxon là-dessus ? parce que tout faire à l'aveugle, c'est pas drole...

nikolas
28/04/2008, 18h18
ça suffit! on est sur un forum de 3D, pas sur mathspé.com.
non mais.
je comprends rien.
:calim:
:mrgreen:

Jean-Laurent
28/04/2008, 18h53
J'aurais au moins appris une chose.
Je pensais que le coffee était juste un langage simplifié de plus haut niveau que le C++ mais basé dessus.
Que le coffee était au C++ ce que l'Xpresso est au Coffee.
Une interface simplifiée et limitée en fonction mais permettant une interaction plus rapide avec le logiciel.