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

Discussion: Accès dans un tag Python à la source d'instances utilisées dans un cloneur au rendu.

  1. #1
    Gourou Avatar de bru
    Date d'inscription
    août 2009
    C4D version
    R21 Perpétuelle
    OS
    Windows 11
    Messages
    4 102

    Accès dans un tag Python à la source d'instances utilisées dans un cloneur au rendu.

    Je rencontre un autre problème avec un tag Python.

    Je multiplie avec un cloneur des objets qui sont eux-même des "instances" d'autres objets.

    J'essaye dans un tag Python d'avoir accès à ces objets pour obtenir leur propriétés.

    Pour faire cela, je recherche les enfants de l'objet cloneur, puis s'il s'agit d'instances, je tente de faire accès à l'objet source de l'instance à l'aide de la fonction de la classe instance "GetReferenceObject", qui prend comme paramètre l'objet représentant le document actif courant.

    Tant que je travaille dans le viewport, cela fonctionne parfaitement et cette fonction retourne bien l'objet source.

    Par contre, lors du rendu, cette fonction retourne "None".

    Est-ce parce que le "document" n'est plus valide (il n'y a plus de vue) ? ou simplement parce que je n'utilise pas la bonne méthode ?

    Merci également pour votre aide.


  2. #2
    Pilier Avatar de gr4ph0s
    Date d'inscription
    mai 2013
    C4D version
    R16 Studio
    OS
    win 7 X64
    Messages
    964
    Salut, lorsque tu fais un rendu la scène est copié et optimisé, du coup ça ne m’étonnerais pas que tes instances sois déjà convertit directement en objets (mais je ne suis pas sur pour le dernier point de ce qui est exactement optimisé ou pas).
    Cependant tu ne dois jamais avoir de call de c4d.documents.GetActiveDocument() dans un generateur, privilégie toujours op.GetDocument() (qui te permettra a coup sur de retourner le document dans le quel l’objet actuel est. Cependant fait attention car un object peux ne pas être dans un document.

    obj = c4d.BaseObject(c4d.Ocube)

    va créer un objet qui n'est pas dans un document.

    Que veux tu faire avec ces instances? Tu veux juste récup leur position ou vraiment l'objet? Si oui pour faire quoi avec?
    Si tu veux recup juste la position tu as l’exemple read_modata_color qui te montre comment faire pour lire la couleur de chaque clone.


    Si tu n'y arrive pas avec ça pourrais tu partager ton code?
    Bonne journée
    Dernière modification par gr4ph0s ; 11/12/2021 à 11h39.
    SDK Specialist
    MAXON Computer GmbH

  3. #3
    Gourou Avatar de bru
    Date d'inscription
    août 2009
    C4D version
    R21 Perpétuelle
    OS
    Windows 11
    Messages
    4 102
    Bonjour gr4ph0s,

    Merci pour ta suggestion. Je vais l'essayer pour voir si cela change quelque-chose et je te tiens au courant.

    Dans ce cas bien précis, j'essaye de retrouver le maillage des objets d'origine des instances pour en déterminer le contour dans les images rendues, ces contours étant utilisés pour créer des annotations.

    J'arrive à créer ces annotations séparément en jouant mon animation dans le viewport, mais j'aurais trouvé plus commode de le faire directement lors de la génération des images.


  4. #4
    Gourou Avatar de bru
    Date d'inscription
    août 2009
    C4D version
    R21 Perpétuelle
    OS
    Windows 11
    Messages
    4 102
    Ce petit message juste pour confirmer que c'était bien cela mon problème.

    Je vois que l'on peut aussi utiliser la variable globale "doc", et dans ce cas là je ne rencontre plus le problème.

    Maintenant encore une petite question:

    Je me suis rendu compte (voir dans ce fil) que si je veux faire des calculs qui tiennent compte correctement de l'ensemble de la scène et les présenter dans l'interface viewport, il faut que j'utilise un tag "interaction" et que je définisse mon code en tant que fonction "Draw".

    L'inconvénient est que cette fonction n'est pas appelée durant le rendu.

    Voici donc la question: y a t'il moyen de créer un code qui s'exécute à la fois au moment du dessin du viewport et au moment du rendu, et dans les deux cas, une fois que tous les éléments de la scène sont calculés ?

    Notez que je n'ai pas regardé l'implémentation de code sous forme de plugin jusqu'à présent (J'en suis à l'utilisation des tags, des générateurs et des scripts embarqués). Y a t'il une solution dans cette direction *?

    *Vous pouvez me répondre par oui ou par non sans plus, ce qui me permettrait de gagner du temps. Sinon, c'est à moi d'aller lire la doc !
    Dernière modification par bru ; 17/12/2021 à 16h26.


Discussions similaires

  1. [Résolu] Importer script python dans un plugin python
    Par Pandoxyd dans le forum Nouveaux membres
    Réponses: 8
    Dernier message: 28/09/2016, 11h48
  2. creer des instances décalées dans le temps
    Par guiguip dans le forum Nouveaux membres
    Réponses: 2
    Dernier message: 04/09/2009, 08h47
  3. map de counter strike source dans c4d
    Par 2dman dans le forum Nouveaux membres
    Réponses: 4
    Dernier message: 20/07/2008, 18h11
  4. style d'esquisse dans des instances
    Par ethylen dans le forum Sketch and Toon
    Réponses: 6
    Dernier message: 03/04/2007, 08h21
  5. Réponses: 2
    Dernier message: 10/09/2005, 22h21

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