Boutique Cinema 4D
Affichage des résultats 1 à 16 sur 16

Discussion: Dupliquer un objet

  1. #1
    Pilier Avatar de padawa
    Date d'inscription
    janvier 2003
    C4D version
    R9.5/9.6
    OS
    Windows Vista 32bits
    Messages
    1 403

    Dupliquer un objet

    Hello la compagnie,

    me voici lancé dans mes premiers tests. Dans les tuts de Tengaal, il explique comment créer un objet.
    Mais comment dupliquer un objet? :?

    PS: A tout hazard, je suis en train de mélanger de l'xpresso et du coffee, si c'est faisable dans xpresso je veux bien la solution aussi :wink:

    Ah, pour finir, les tuts coffee dans les 3dattack mag sont trés bien fait aussi, malgrés mon anglais un peu juste je comprend :poucehaut:
    Avis au débutant comme moi
    La vitesse de la lumière étant supérieure à celle du son, il est donc normal que beaucoup de gens paraissent brillants...
    jusqu'à ce qu'ils ouvrent leur gueule.
    -------------------------------------------------------------------------------------
    Cinema 4D 9.6 - Advanced Render 2.5 - Sketch & Toon - Maxwell Render
    Intel Core 2 Quad Q8300 | 8Go DDR2 | Nvidia 430GT

  2. #2
    Invité
    Date d'inscription
    juin 2002
    C4D version
    R16 Studio
    OS
    Win 7 Pro
    Messages
    4 252

    Dupliquer un objet

    Et bien déjà si tu jettes un oeil (voire 2) dans la doc SDK Coffee de maxon, qui est la chose essentielle à faire, tu trouveras ta réponse facilement, je te donne une piste: GetClone...

  3. #3
    Dépendant
    Date d'inscription
    janvier 2003
    C4D version
    R14 Prime
    Messages
    449

    Dupliquer un objet

    Une autre piste, regarde aussi la fonction " CopyTo " pour les flags.

  4. #4
    Pilier Avatar de padawa
    Date d'inscription
    janvier 2003
    C4D version
    R9.5/9.6
    OS
    Windows Vista 32bits
    Messages
    1 403

    Dupliquer un objet

    Ok je vais explorer ca :wink:
    tank iou e lotte
    (quand j'vous dit que j'ai un anglais pourri) :mrgreen:
    La vitesse de la lumière étant supérieure à celle du son, il est donc normal que beaucoup de gens paraissent brillants...
    jusqu'à ce qu'ils ouvrent leur gueule.
    -------------------------------------------------------------------------------------
    Cinema 4D 9.6 - Advanced Render 2.5 - Sketch & Toon - Maxwell Render
    Intel Core 2 Quad Q8300 | 8Go DDR2 | Nvidia 430GT

  5. #5
    Dépendant
    Date d'inscription
    janvier 2003
    C4D version
    R14 Prime
    Messages
    449

    Dupliquer un objet

    T’ai pas le seul si c’a te rassure.

  6. #6
    Pilier Avatar de padawa
    Date d'inscription
    janvier 2003
    C4D version
    R9.5/9.6
    OS
    Windows Vista 32bits
    Messages
    1 403

    Dupliquer un objet

    Bon, j'ai bien regardé et trouvé les fonctions dont vous parlé,
    mais aprés plusieur essai j'y arrive toujours pas :cry2:

    Mon probleme est que je trouve le sdk, comment dire, inbuvable et incompréhensible pour un débutant. Je sais que Tengaal va me contredire,
    mais par exemple pour Getclone voila la seule explication que l'on trouve.

    [BaseObject] GetClone([int] flags);
    Pour un débutant ca veut pas dire grand chose.
    Si je traduis a ma facon ca donne:
    [retourne l'objet voulu] Getclone([un chiffre???] un parametre);
    Je suis certain d'avoir tout faux. En plus BaseObject est une déclaration de classe. Est ce que ca veut dire qu'il faut faire une classe se rapportant a la fonction avant de pouvoir l'utiliser :?

    Si il y avait un petit exemple a chaque fois ca serait beaucoup plus clair pour moi

    De plus si je suis toujour ma logique le Getclone() doit retourner l'objet pour qu'en suite le Copyto() cré la copie. :o
    Donc j'ai commencé mon code comme ca:

    var double = op->GetClone(100001);

    J'ai mis le 100001 par rapport au tut de 3dattack car je pense que ce doit etre un ID.

    Et la je trouve la base du CopyTo():
    [bool] CopyTo([BaseObject] dest, [int] flags);
    J'analyse : [renvoi un booléen] CopyTo([l'objet choisi] la destination mais sous quel forme???, [un numéro d'ID] un parametre);
    je tape ca:
    var ok = CopyTo( double vector(100,100,100),100002);
    Et la bien sur je doit avoir encore plus faux car j'ai une erreur de variable exepted (pour le Getclone je n'avais pas d'erreur, mais je sais bien que ca n'est pas plus juste pour autant)

    Voila, je demande pas qu'on me fasse le code, ca ne m'avancerais pas plus et j'aime bien comprendre ce que je fais, mais si une ame charitable pouvais me donner les codes pour déchifrer clairement le SDK ca m'aiderai beaucoup :poucehaut:
    Je pense que celui ci est fait pour des gens qui ont déja une grande maitrise de ce type de langage.
    La vitesse de la lumière étant supérieure à celle du son, il est donc normal que beaucoup de gens paraissent brillants...
    jusqu'à ce qu'ils ouvrent leur gueule.
    -------------------------------------------------------------------------------------
    Cinema 4D 9.6 - Advanced Render 2.5 - Sketch & Toon - Maxwell Render
    Intel Core 2 Quad Q8300 | 8Go DDR2 | Nvidia 430GT

  7. #7
    Dépendant
    Date d'inscription
    janvier 2003
    C4D version
    R14 Prime
    Messages
    449

    Dupliquer un objet

    mon_objet c'est l'objet à copier

    les Flags : CL_NO_BITS , CL_ONLY_VISIBLETAGS , CL_NO_TRACKS , CL_NO_HIERARCHY


    Code:
    var doc = GetActiveDocument() ;
    
    // on fait la copie sans les enfants par exemple
    var copie = mon_objet->GetClone(CL_NO_HIERARCHY) ;
    
    // on insére par exemple l'objet dans le document en début de liste
    doc->InsertObject(copie, NULL, NULL) ;
    c'est un peut plus claire comme ça.

  8. #8
    Invité
    Date d'inscription
    juin 2002
    C4D version
    R16 Studio
    OS
    Win 7 Pro
    Messages
    4 252

    Dupliquer un objet

    Pour info, le terme entre crochets [...] désigne un type de valeur donc ton CopyTo( [object] dest, [int] flag) signifie en plus clair CopyTo (objet_a_créer , comment ).

    Donc l'erreur que tu as vient du fait qu'on te demande de fournir un objet (BaseObject) alors que tu fournis un vecteur (vector)...

    C'est à dire qu'il te demande en paramètre, un objet (BaseObject) suivi d'une valeur entière (int) qui représente la manière dont la copie se fait.

    Les flags, tu les connais, puisque tu connais CopyTo() car ils y sont listés...
    Ces valeurs (int) sont représentées sous formes de valeurs constantes définies en texte:
    CL_NO_BITS
    CL_ONLY_VISIBLETAGS
    CL_NO_TRACKS
    CL_NO_HIERARCHY

    En générale les valeurs constantes internes de C4D sont toutes exprimées en texte majuscule.

    Donc dans le second paramètre "flag" tu y copies cette valeur constante.

    par exemple :

    si "op" est l'objet à copier.
    var mon_objet;
    var reponse=CopyTo(mon_objet , 0 ) ; // 0: aucune condition de flag donc une copie intégrale
    EDIT: il faut corriger en "var reponse=op->CopyTo(mon_objet , 0 ) ;"

    ou bien

    var reponse=CopyTo(mon_objet , CL_NO_TRACKS ) ; // copie l'objet mais PAS ses pistes d'animation
    EDIT: il faut corriger en "var reponse=op->CopyTo(mon_objet , CL_NO_TRACKS ) ;"

    Ensuite il te suffit d'intégrer l'objet créé (mon_objet) dans le document actuel pour le voir.

    Citation Envoyé par padawa
    Mon probleme est que je trouve le sdk, comment dire, inbuvable et incompréhensible pour un débutant. Je sais que Tengaal va me contredire
    Saches, que j'ai été débutant comme tout le monde, et quand j'ai découvert C4D ainsi que le COFFEE et sa doc SDK j'étais aussi dérouté, sauf qu'à l'époque qu'il n' y avait pas de forum, et le peu de gens qui formaient le noyau de la communauté actuelle, ne connaissaient pas la programmation COFFEE.

    Donc en résumé, l'apprentissage c'est surtout un travail de découverte personnaelle en épluchant soigneusement tous les scripts COFFEE existant pour comprendre comment ils utilisent les fonctions de base... :wink:

    En ce qui concerne l'anglais, et bien si tu souhaites mettre le nez dans la programmation, pas de secret, il faut t'y mettre.

  9. #9
    Pilier Avatar de padawa
    Date d'inscription
    janvier 2003
    C4D version
    R9.5/9.6
    OS
    Windows Vista 32bits
    Messages
    1 403

    Dupliquer un objet

    Merci a vous 2 ca s'éclairci pas mal maintenant :poucehaut:
    Je comprend mieux la description, donc entre crochet c'est le type de valeur correspondant a la commande ou la variable. Ce qui m'a le plus perturbé c'est le INT qui pour moi veut dire integer et donc entier sous forme de nombre :o Je savais pas que ca pouvait etre du texte.
    Enfin, Tengaal dans ton exemple, il y a un truc que je comprend pas.
    Comment la fonction sait elle que l'on copie l'objet op (serait ce par deduction logique?) et en plus quand j'insere ton code j'ai toujours une erreur de "variable or function expected" juste au debut de la parenthése du copyto.
    Est ce voulu pour que je me creuse un peu la tete pour trouver ou y a t il réellement une erreur :mrgreen:
    La vitesse de la lumière étant supérieure à celle du son, il est donc normal que beaucoup de gens paraissent brillants...
    jusqu'à ce qu'ils ouvrent leur gueule.
    -------------------------------------------------------------------------------------
    Cinema 4D 9.6 - Advanced Render 2.5 - Sketch & Toon - Maxwell Render
    Intel Core 2 Quad Q8300 | 8Go DDR2 | Nvidia 430GT

  10. #10
    Invité
    Date d'inscription
    juin 2002
    C4D version
    R16 Studio
    OS
    Win 7 Pro
    Messages
    4 252

    Dupliquer un objet

    Oui, désolé je me suis trompé j'ai voulu répondre trop vite, heureusement que tu me fais la remarquer ! :oops:

    en fait CopyTo() est une fonction associée aux BaseObject, donc si tu veux que op soit copié dans mon_objet alors :

    var reponse=op->CopyTo(mon_objet, flag);

    Tu peux constater que je suis également une burne ! (surtout le matin pas réveillé) :roll: :wink:

  11. #11
    Pilier Avatar de padawa
    Date d'inscription
    janvier 2003
    C4D version
    R9.5/9.6
    OS
    Windows Vista 32bits
    Messages
    1 403

    Dupliquer un objet

    euh :oops: ca marche toujour pas

    J'avais deja essayé ta version et a la compilation il me dit pas d'erreur et a l'execution j'ai un "imcompatible value... NIL / OBJECT"
    Dans ma logique je pense qu'il ne comprend pas l'attribution d'un objet a un booléen mais en réalité
    qu'est ce que ca veut dire?
    La vitesse de la lumière étant supérieure à celle du son, il est donc normal que beaucoup de gens paraissent brillants...
    jusqu'à ce qu'ils ouvrent leur gueule.
    -------------------------------------------------------------------------------------
    Cinema 4D 9.6 - Advanced Render 2.5 - Sketch & Toon - Maxwell Render
    Intel Core 2 Quad Q8300 | 8Go DDR2 | Nvidia 430GT

  12. #12
    Invité
    Date d'inscription
    juin 2002
    C4D version
    R16 Studio
    OS
    Win 7 Pro
    Messages
    4 252

    Dupliquer un objet

    C'est pas grave, laisse tomber le CopyTo(...) pour l'instant, voici le code pour créer une copie d'un ojet dans le document :

    main(doc,op)
    {
    // créé une copie intégrale de l'objet "op"
    var mon_objet=op->GetClone(0);

    // on insère cette copie dans le document en cours.
    doc->InsertObject(mon_objet,NULL,NULL);
    }


    Pour créer plusieurs copies, il suffit d'utiliser une boucle "for (...)".

    Pour les instances c'est plus complexe, il faut d'abord créer l'objet "instance" puis dans ses paramètres (container) le lier à l'objet de référence.

  13. #13
    Pilier Avatar de padawa
    Date d'inscription
    janvier 2003
    C4D version
    R9.5/9.6
    OS
    Windows Vista 32bits
    Messages
    1 403

    Dupliquer un objet

    Ok merci :poucehaut:
    La vitesse de la lumière étant supérieure à celle du son, il est donc normal que beaucoup de gens paraissent brillants...
    jusqu'à ce qu'ils ouvrent leur gueule.
    -------------------------------------------------------------------------------------
    Cinema 4D 9.6 - Advanced Render 2.5 - Sketch & Toon - Maxwell Render
    Intel Core 2 Quad Q8300 | 8Go DDR2 | Nvidia 430GT

  14. #14
    Dépendant
    Date d'inscription
    janvier 2003
    C4D version
    R14 Prime
    Messages
    449

    Dupliquer un objet

    Tu peut utiliser directement des entiers pour les conditions (flag).

    CL_ONLY_VISIBLETAGS = 0
    CL_NO_HIERARCHY = 4
    CL_NO_TRACKS = 8
    CL_NO_BITS = 16


    Et quand on veut poser plusieurs conditions on les sépare par ( | ) = Ctrl + Alt + 6
    Ces deux lignes de code sont identique.

    var copie = act->GetClone(CL_NO_HIERARCHY | CL_NO_BITS ) ;

    var copie = act->GetClone( 4 | 16) ;



    Fait gaffe la fonction CopyTo() supprime l’objet dest.
    Par exemple :

    Mon_objet ->CopyTo(objet_dest, 0 ) ;

    ce qui veut dire : on fait une copie de Mon_objet et on remplace objet_dest par la copie.
    Si mon objet_dest a des enfants c’est la copie qui devient leur parent.
    [size=18px][/size]

    .

  15. #15
    Pilier Avatar de padawa
    Date d'inscription
    janvier 2003
    C4D version
    R9.5/9.6
    OS
    Windows Vista 32bits
    Messages
    1 403

    Dupliquer un objet

    D'ou le pourquoi du comment des integer :wink:
    je comprend mieux.

    Merci encore, c'est vraiment une aubaine pour la communauté des gens qui veulent bien transmettre leur savoir :prie: (en francais en plus :mrgreen: )
    La vitesse de la lumière étant supérieure à celle du son, il est donc normal que beaucoup de gens paraissent brillants...
    jusqu'à ce qu'ils ouvrent leur gueule.
    -------------------------------------------------------------------------------------
    Cinema 4D 9.6 - Advanced Render 2.5 - Sketch & Toon - Maxwell Render
    Intel Core 2 Quad Q8300 | 8Go DDR2 | Nvidia 430GT

  16. #16
    Dépendant
    Date d'inscription
    janvier 2003
    C4D version
    R14 Prime
    Messages
    449

    Dupliquer un objet

    Ce modeste savoir je l’ai trouvé tout simplement dans le SDK avec quelques exemples trouvés sur le net pour comprendre le fonctionnement, sans oublier les PDF de Tengaal.

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
Mediaworks - Logiciels 3D | Design Internet - Creation site internet