IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Py4D: Portée d'un objet


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Py4D: Portée d'un objet
    Bonjour Bojour,
    Je suis actuellement en train de coder quelques petits scripts pour Cinema 4D grâce au plugin py4D. N'ayant plus touché à python depuis un certain bout de temps, je me permet de vous poser une petite question.
    Je précise qu' un topic similaire est déja ouvert sur frenchCinema4D, mais étant donné le peu de programmeurs actifs sur le forum, je me permet d'ouvrir un topic dédié ici^^
    Voici le problème:
    Le but du script est de créer un matériau avec une texture chargée à partir d'un fichier. J'ai réussi à instancier les objets nécessaires pour te ce bazar, mais le problème est le suivant. Je crains que la portée d'un certain objet (BaseList2D) ne soit limitée à la seule exécution du script. C'est elle qui contient les données relatives à la localisation de la texture.
    Or, l'objet matériau possède une variable de type BaseList2D qui correspond à l'objet que j'ai. Malheuresement, je ne peux instancier un objet directement en tant que variable du matériau, je suis donc obligé de créer un objet shd et de l'affecter à l'attribut de mon matériau.
    Or à la fin du script, le matériau se retrouve crée, mais sans les infos sur la texture (le fameux shd).
    Je précise que pour charger des objets dans le document C4D en cours, Py4D posède des fonctions propres, mais pas pour la BaseList2D.
    Je voulais donc savoir s'il existait un moyen de "graver" cet objet dans l'attribut de mon matériau, et non en faire une simple référence sur ma variable temporaire. J'ai déja essayé l'utilisation de copy.copy(), mais malheuresement sans succès.
    Si quelqu'un à une idée, je suis preneur^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       mat = c4d.BaseMaterial(c4d.Mmaterial)
       shd = c4d.BaseList2D(c4d.Xbitmap)
       shd[sy.BITMAPSHADER_FILENAME] = "test.jpg"
       mat[sy.MATERIAL_COLOR_SHADER] = shd
       #mat.InsertShader(shd)
       mat.Message(sy.MSG_UPDATE)
       mat.Update(True, True)
       doc.InsertMaterial(mat)
    De plus, je me trouve actuellement sur la version R11.5 qui n'implémente pas encore la fonction InsertShader() commentée dans le code. Or cette fonction fait précisément ce que je cherche à trouver ici^^.
    D'ici que ma boîte passe à la R12, je vais continuer de chercher une solution "avec les mains"

    Bon après-midi,

    Mirox

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Points : 240
    Points
    240
    Par défaut
    Ah là là, tu viens de m'apprendre que mon logiciel de 3D préféré pouvait se marier avec mon langage de programmation préféré... Génial

    Mais ça sert à quoi au fait ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Mhh la bonne nouvelle
    Apparemment, ça sert à pleins de choses, je suis encore en train de le découvrir petit à petit.
    En tout cas, ça te met à disposition une très grande partie de la bibliothèque d'objets de C4d, que tu peux manipuler en tant qu'objets ptyhon.
    Personnellement, je m'en sers pour charger des objets à partir de fichiers tableaux. Ceci me permet d'automatiser des tâches que d'habitude prennent pas mal de temps par-ce qu'elles sont très répétitives.
    Exemple: Lire les dimensions, position et orientation d'un plan dans une table, l'introduire, créer des splines qui s'y superposent, et normalement texturiser le tout (c'est sur cette dernière partie que je sèche pour l'instant).
    Ça peut sembler bête, mais quand on a 200 plans à introduire...
    Une simple boucle en python et le tour est joué
    Je précise néanmoins que pour l'instant, la doc est relativement complète, mais très austère, et surtout manque énormément d'exemples concrets. C'est dommage, mais la facilité de la manipulation fait qu'on se prend vite au jeu d'essayer et surtout le fait de pouvoir tester directement ces scripts dans C4d permet de se faire la main assez vite avec la bibliothèque

Discussions similaires

  1. Portée d'un objet d'une classe perso
    Par Everice dans le forum Langage
    Réponses: 2
    Dernier message: 31/07/2011, 13h51
  2. Configurer le port pour les objets RMI
    Par Alasthor dans le forum Glassfish et Payara
    Réponses: 2
    Dernier message: 07/06/2010, 09h02
  3. Réponses: 4
    Dernier message: 22/02/2010, 01h13
  4. Portée d'un objet crée dans objet JSP!
    Par mumu27 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 06/05/2009, 08h08
  5. [debutant]Portée d'un objet et creation avec new
    Par harsh dans le forum Débuter
    Réponses: 7
    Dernier message: 17/05/2006, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo