Affichage des résultats 1 à 1 sur 1

Discussion: Sélecteur de matériau par image

  1. #1
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    R19 Studio
    OS
    MacOS X
    Messages
    669

    Sélecteur de matériau par image

    Suite à une question posée par Niko sur ce fil de discussion, je mets le script final ici, histoire de le retrouver plus facilement.

    Lancez le script et choisissez l'image dans la liste déroulante, puis bouton OK. Tous les matériaux qui utilisent l'image seront sélectionnés.

    Code PHP:
    import c4d
    import os
    .path

    class MonDlg(c4d.gui.GeDialog):
        
    """Dialogue pour le choix de l'image, avec liste dérouante de toutes les images
           utilisées dans les différents matériaux du doc"""
        
    def __init__(self,lst):
            
    self.lst lst
            self
    .choix lst[0]

        
    def CreateLayout(self):
            
    self.SetTitle("Sélecteur de matériau par image ")
            
            
    self.GroupBegin(1000,flags=c4d.BFH_SCALEFITcols=2rows=1)
            
    self.GroupBorderSpace(1010100)
            
    self.AddStaticText(1001,name="Image : "flags=c4d.BFH_MASKinitw=100)                                  
            
    self.AddComboBox(1002,flags=c4d.BFH_MASKinitw=250)
            
    self.GroupEnd()
                     
            
    self.GroupBegin(2000,flags=c4d.BFH_CENTERcols=2rows=1)
            
    self.GroupBorderSpace(1010100)
            
    self.AddButton(2001flags=c4d.BFH_CENTERinitw=100name="OK")
            
    self.AddButton(2002flags=c4d.BFH_CENTERinitw=100name="Annuler")
            
    self.GroupEnd()
            
            return 
    True
            
        def InitValues
    (self):
            for 
    i,n in enumerate(self.lst):
                
    self.AddChild(1002,i,n)
            return 
    True
            
        def Command
    (self,id,msg): 
            if 
    id==1002 :#choix dans la liste
                
    self.choix =  self.lst[self.GetLong(1002)]
            
            if 
    id==2001:#bouton ok
                
    selectMatImg(self.choix)
                
    self.Close()
            
            if 
    id==2002:#bouton annuler
                
    self.Close()    
        
            return 
    True
        
    def searchBitmap
    (shdliste):
        
    """fonction récursive qui renvoie une liste avec les noms des fichiers images
           utilisés dans le shader"""
        
    while shd:
            if 
    shd.CheckType(c4d.Xbitmap):
                
    fn shd[c4d.BITMAPSHADER_FILENAME]
                
    name os.path.basename(fn)
                
    liste.append(name)
            
    searchBitmap(shd.GetDown(), liste)
            
    shd shd.GetNext()
            
    def getListImg(docu=doc):
        
    """renvoie la liste de toutes les images contenue dasn les materiaux du doc"""
        
    return sorted([os.path.basename(tex) for i,tex in docu.GetAllTextures()])


    def selectMatImg(nom_imgdocu=doc):
        
    """selectionne les materiaux qui utilisent l'image"""
        
    if not nom_img : return
        
    mat docu .GetFirstMaterial()
        while 
    mat:
            
    lst = []
            
    shd mat.GetFirstShader()
            
    searchBitmap(shdlst)
            if 
    nom_img in lst :
                
    mat.SetBit(c4d.BIT_ACTIVE)
            else : 
    mat.DelBit(c4d.BIT_ACTIVE)
            
    mat mat.GetNext()
        
    c4d.EventAdd()
        
    def main():
        
    imgs =  getListImg(docu=doc)
        if 
    not len(imgs):
            
    c4d.gui.MessageDialog("Il n'y a aucune image utilisée")
            return
        
    dlg MonDlg(imgs)
        
    dlg.Open(c4d.DLG_TYPE_MODAL)
        return

    if 
    __name__=='__main__':
        
    main() 
    Dernière modification par oli_d ; 04/05/2013 à 11h41.

Discussions similaires

  1. [Problème] Selecteur visuel vide...
    Par Delorfindel dans le forum Nouveaux membres
    Réponses: 2
    Dernier message: 10/04/2013, 10h10
  2. [Question] Rotation et selecteur visuel
    Par Ocarina dans le forum Nouveaux membres
    Réponses: 2
    Dernier message: 30/08/2012, 23h12
  3. Comment créer un selecteur visuel
    Par Karyn dans le forum Nouveaux membres
    Réponses: 4
    Dernier message: 04/11/2011, 14h44
  4. le sélecteur visuel à la maya
    Par fabrice.sierra dans le forum Character animation
    Réponses: 2
    Dernier message: 05/03/2009, 15h38
  5. Selecteur visuel et user data
    Par cartman1er dans le forum Character animation
    Réponses: 0
    Dernier message: 26/10/2008, 17h19

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
  •