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

Discussion: Comment répartir aléatoirement des textures ?

  1. #1
    Timide
    Date d'inscription
    juillet 2010
    C4D version
    R12 Visualize
    OS
    Windows 7 (64)
    Messages
    52

    Comment répartir aléatoirement des textures ?

    J'explique :

    J'ai un mur de briques. Chaque brique est un objet. Supposons que je prépare, 5 ou 6 textures différentes.
    Je voudrais les répartir aléatoirement sur les briques de mon mur... Comme dans le plugin "tuilegen"

    Comment dois-je m'y prendre ?

  2. #2
    Vieux Croûton Avatar de shtl
    Date d'inscription
    octobre 2004
    C4D version
    S22 Souscription
    OS
    osX 12.3.1
    Messages
    13 880
    Billets dans le blog
    5
    Avec ou sans MoGraph?
    2x6coreXéon2.66(24T);64Gram; GTX 1080; OSX10.13.6 ////
    Mac Studio 128 Ram ; OSX 12.3.1 ; papiercrayoncerveau;S22Studio;Redshift;Zbrush2022; CS2022
    ///SHTL 2011 DEMO HERE : http://demo.shtl.org/ /// NEW! 2014 WIP

  3. #3
    Timide
    Date d'inscription
    juillet 2010
    C4D version
    R12 Visualize
    OS
    Windows 7 (64)
    Messages
    52
    Sans...

  4. #4
    Timide
    Date d'inscription
    juillet 2010
    C4D version
    R12 Visualize
    OS
    Windows 7 (64)
    Messages
    52
    Je l'ai fait a la main. 711 Briques, ça va j'ai juste un peu les yeux qui piquent


    Mais si quelqu'un a une idée pour le faire automatiquement je suis tout de même preneur.

  5. #5
    Pilier Avatar de Ogier
    Date d'inscription
    juillet 2002
    C4D version
    R13 Studio
    OS
    seven pro
    Messages
    1 019
    hé bien sans Moggraph j'utiliserai la matière "carrelage" (matière que tu trouveras dans "surfaces") réglée bien sûr sur "brique" avec l'option "aléatoiree cochée. J'appliquerai ça à l'intégralité de mon mur en faisant attention à faire en sorte que la taille des briques de la texture corresponde à la taille des briques objet... voilà pour la base.. ensuite quelques calques de bruit pour apporter de la diversité à la matière elle même...

  6. #6
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    Autre
    OS
    MacOS X
    Messages
    707
    1. sélectionne les matériaux
    2. sélectionne l'objet parent contenant les objets à texturer
    3. colle le code ci-dessous dans le menu python/Gestionnaire de script
    4. clique sur le bouton Exécuter

    Code:
    import c4d
    import random
    
    def main():
        mats= doc.GetActiveMaterials()
        if mats :
            parent = doc.GetActiveObject()
            if parent:
                for obj in parent.GetChildren():
                    tg = c4d.TextureTag()
                    tg[c4d.TEXTURETAG_MATERIAL]=random.choice(mats)
                    obj.InsertTag(tg)
        c4d.EventAdd()
                    
    
    if __name__=='__main__':
        main()
    si tu veux enregistrer le script clique sur le bouton créer script, il apparaîtra dans le menu python/scripts personnalisés après redémarrage

    EDIT : toasted by Ogier
    Dernière modification par oli_d ; 02/05/2011 à 15h28.

  7. #7
    Timide
    Date d'inscription
    juillet 2010
    C4D version
    R12 Visualize
    OS
    Windows 7 (64)
    Messages
    52
    Merci,

    je viens d'essayer ton script mais cela n'a pas l'air de fonctionner. Aucune texture ne s'applique ...

  8. #8
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    Autre
    OS
    MacOS X
    Messages
    707
    Il faut bien sélectionner plusieurs textures ET un objet parent contenant tous les objets à texturer

  9. #9
    Timide
    Date d'inscription
    juillet 2010
    C4D version
    R12 Visualize
    OS
    Windows 7 (64)
    Messages
    52
    C'est ce que je fais :

    -je sélectionne mes 4 textures.
    -je sélectionne l'objet neutre contenant toutes mes briques.
    -je cop/col le script dans le fenetre du gestionnaire de scripts python.
    -Je clique sur executer

    ... et ça ne fait rien

  10. #10
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    Autre
    OS
    MacOS X
    Messages
    707
    si tu ouvres la console python (menu python/console) est-ce qu'il y a un message d'erreur ?
    as-tu bien la r12.043 ?
    es-tu du signe du poisson ? (<- humour désopilant, n'est-il pas?)


    Est-ce que quelqu'un d'autre a testé ...?

  11. #11
    Gourou Avatar de valkaari
    Date d'inscription
    mai 2009
    C4D version
    Autre
    OS
    OSX / windows
    Messages
    2 949
    ça a l'air de marcher



    me suis un peu lâché sur l'exécute xD

  12. #12
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    Autre
    OS
    MacOS X
    Messages
    707
    Merci Vaal, on dirait un MasterMind pour surdoués

    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		Mastermind+3.JPG 
Affichages :	136 
Taille :		38,2 Ko 
ID : 			2883

  13. #13
    Timide
    Date d'inscription
    juillet 2010
    C4D version
    R12 Visualize
    OS
    Windows 7 (64)
    Messages
    52
    Je viens de rentrer... je vois vos messages et je me dis "Mais c'est pas possible pourquoi ça ne fonctionne pas ???!!!!"
    J'ouvre C4D, je refais la manip' et ça fonctionne

    C'est extrêmement pratique je te remercie beaucoup oli_d !

  14. #14
    Pilier Avatar de Maha
    Date d'inscription
    janvier 2003
    C4D version
    R9
    Messages
    1 342
    Excellent Oli_d !!

    Quelle superbe évolution que cette implémentation Python.

  15. #15
    Pilier Avatar de Ogier
    Date d'inscription
    juillet 2002
    C4D version
    R13 Studio
    OS
    seven pro
    Messages
    1 019
    ah oui ! c'est carrément excellent ton truc Oli_D !
    t'aurais pas un script qui s'occuperait de la paperasse des fois ???

  16. #16
    Vieux Croûton Avatar de Aurety
    Date d'inscription
    juillet 2002
    C4D version
    R17 Studio
    OS
    Mac
    Messages
    14 477
    Billets dans le blog
    3
    Citation Envoyé par Ogier Voir le message
    ah oui ! c'est carrément excellent ton truc Oli_D !
    t'aurais pas un script qui s'occuperait de la paperasse des fois ???
    ahh ! toi aussi dans la compta !
    kenavo !! // Pinterest KAMIGAZ®

  17. #17
    Touriste Avatar de Erod
    Date d'inscription
    mars 2011
    C4D version
    R12 Studio
    OS
    W7 (64)
    Messages
    10
    Salut ;

    Très pratique ce script.
    Question :
    Est-il possible qu'à chaque génération de textures les textures précédemment générées soient supprimées, pour ne pas
    créer "l'effet" mastermind justement ?
    J'ai essayé de rajouter une ligne dans la fonction du genre tg=c4d.RemoveTag() ou avec DeleteTag() mais je ne connais pas assez la syntaxe Python pour cela...


    Erod

  18. #18
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    Autre
    OS
    MacOS X
    Messages
    707
    Citation Envoyé par Ogier Voir le message
    t'aurais pas un script qui s'occuperait de la paperasse des fois ???
    J'ai un générateur de paperasse qui s'appelle "Administration" (release 124365.02), mais je pense que tu imaginais un truc qui marche plutôt dans l'autre sens !

    Est-il possible qu'à chaque génération de textures les textures précédemment générées soient supprimées, pour ne pas
    créer "l'effet" mastermind justement ?
    Ci-dessous une variante qui ne détruit pas mais qui remplace le matériau de référence du tag texture le plus à droite

    Code PHP:
    import c4d
    import random

    def main
    ():
        
    matsdoc.GetActiveMaterials()
        if 
    mats :
            
    parent doc.GetActiveObject()
            if 
    parent:
                for 
    obj in parent.GetChildren():
                    
    tg None
                    
    for t in obj.GetTags():
                        if 
    t.GetType()==c4d.Ttexturetg=t
                    
    if not tg :    
                        
    tg c4d.TextureTag()
                        
    obj.InsertTag(tg)
                    
    tg[c4d.TEXTURETAG_MATERIAL]=random.choice(mats)
        
    c4d.EventAdd()
                    

    if 
    __name__=='__main__':
        
    main() 

  19. #19
    Touriste Avatar de Erod
    Date d'inscription
    mars 2011
    C4D version
    R12 Studio
    OS
    W7 (64)
    Messages
    10
    C'est exactement ce que je recherche !
    Merci oli_d

  20. #20
    Pilier Avatar de Vcyrille
    Date d'inscription
    novembre 2003
    C4D version
    R16 Visualize
    OS
    WIN 7
    Messages
    963
    Très très pratique comme script.
    Merci oli_d pour cette contribution qui je pense, à sa place dans les tut'minutes.

  21. #21
    Dépendant
    Date d'inscription
    novembre 2005
    Messages
    492
    Citation Envoyé par oli_d Voir le message
    es-tu du signe du poisson ? (<- humour désopilant, n'est-il pas?)

Discussions similaires

  1. Répartir des clones selon une img noir et blanc
    Par NiKo dans le forum MoGraph
    Réponses: 6
    Dernier message: 24/07/2010, 02h50
  2. Coffee : répartir des objets sur une spline
    Par clemz dans le forum Programmation
    Réponses: 9
    Dernier message: 22/01/2010, 20h57
  3. Dupliquer Aléatoirement ?
    Par filou dans le forum Modélisation
    Réponses: 18
    Dernier message: 09/12/2009, 00h56
  4. [RESOLU] Aligné-répartir
    Par bumpshoveit dans le forum Nouveaux membres
    Réponses: 6
    Dernier message: 11/05/2009, 15h21
  5. Comment gèrer les textures...
    Par Garion34 dans le forum Général Cinema 4D
    Réponses: 2
    Dernier message: 08/04/2005, 11h17

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