Page 1 sur 3 123 DernièreDernière
Affichage des résultats 1 à 30 sur 67

Discussion: PXL+DIRT "grunge/ dirt helper" Cinema 4D & Octane

  1. #1
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924

    PXL+DIRT "grunge/ dirt helper" Cinema 4D & Octane

    ------------------update--13/06/2017---------------------------------------------------
    Salut,
    quelques nouvelles
    et bien finalement et contre toute attente, j'ai été contacté pour une distribution commerciale de ce petit setup xpresso.
    Je n'avais pas du tout fais ce truc dans une optique de vente. Étonné d'abord , enthousiaste ensuite, j'ai décidé de tenter l'aventure et de saisir cette opportunité pour changer un peu d'air , bref ...

    PXL+DIRT est maintenant disponible a l'achat sur le site de PIXELLAB >> ici



    un grand merci a tout ceux passés par là et tout particulièrement
    Gr4ph0s pour son aide sur les scripts Python entre autre.
    Ciao

    ------------------update--13/06/2017---------------------------------------------------
    ------------------update--27/05/2017---------------------------------------------------
    Salut,

    Apres une petite latence, voici donc une version un poil plus aboutie.

    >>Plus d'info<<

    un petit gif ainsi q'une vidéo pour montrer les principales fonctionnalités du setup.
    Pour le reste il y a pas mal de choses décrites plus bas...





    Displacement Feature update (novembre 2017)





    ------------------update--27/05/2017---------------------------------------------------
    Salut,

    je suis en train de faire un petit "helper" pour salir , vieillir ou créer plus facilement des matériaux abîmés et d'autres...
    rien de bien compliqué vu mon niveau d'xpresso (pourtant j'avais fais la formation d'Aurety... il ya qq lustres...)
    ici c'est Octane qui est utilisé mais j'ai commencé qq essais avec vray (shader curvature ).
    Le tout est procédural, en gros ce sont les noeuds Noise et Dirt du pluggin d'octane qui sont dirigés via xpresso et les données utilisateurs.

    J'ai arbitrairement divisé le le processus en 3 zones de l'objet
    • les aretes de l'objet
    • le corps de l'objet
    • les coulures griffures (qui partent des aretes et s’étendent sur les corps de l'objet)


    les paramètres sont encore a affinés/etoffés/simplifiés pour un usage +/- passe partout...


    voila un petit .gif de principe


    l'avantage du procédural c'est la légèreté de manipulation pas de bitmap a trimbaler et pourtant beaucoup de solutions de maps en jouant avec le détail et les diverses transformations a dispo..etc
    mais avec Octane le gros désavantages est que tu ne peux pas attribuer un Nœud procédural(type Noise) en entrée du Displacement ni du Scatter Object d'ailleurs il bouffe que du bitmap

    Pas de bol j'aimerais les utiliser pour faire du "dirt" un peu plus en volume en utilisant le noeud displacement du MixMaterial et le Scatter object pour faire des petits pâtés pour les soudures par exemples..
    Donc je suis aussi en train de faire un version avec des bitmaps en entrée au lieu du noise procédural...
    (Octane bake a la volée le Bruit etc.. natif de C4D mais ça bouffe une blinde de ressources pour une bonne qualité...donc ce n'est pas une solution)

    encore un peu de recherche pour avoir une solution raisonnable et assez transversale entre les moteurs (vray/Octane)...



    Ceci dit j'ai deux questions concernant xpresso et les données utilisateurs :

    1) Je voudrais savoir si il est possible de contrôler l'affichage d'un groupe de Données Utilisateurs ?
    un interrupteur (vert) ici contrôlerait aussi l'affichage ou non du groupe de données utilisateurs (rouge)
    pour n'avoir d'affiché uniquement les paramètres des l'effets Actifs
    comme sur le gif si dessus



    j'ai vu que les groupes de données utilisateurs possèdent des ID mais je ne sais pas si c'est de la que je dois partir?


    2) J'aimerais aussi savoir si a partir d'une donnée"Liste d'Objets" ( donnée Liens .. ) en bleu sur le gif au dessus je peux affecter un matériaux a un Objet comme si je le glissais dans la zone réservée de l'onglet Affectation du Matériaux ?



    alors je ne sais pas trop mais peut être en utilisant via xpresso un mouvement dans la hiérarchie de l'object manager vers un neutre possédant un tag de texture du matériaux ou peut être mettant en connexion via xpresso ma "liste" d'objets et la zone d'affectation du matériaux ... mais je n'ai pas réussi a trouver le noeud correspondant dans xpresso ?

    en tout cas merci de m'avoir lu, je ne sais pas si mes questions sont claires mais merci d'avance pour toute piste ou remarques etc...


    ++


    ps/je posterais bien entendu ce truc si ça botte qq'un ?
    pss/
    exemples d'autres styles d'utilisation



    ou bien des écorces/ peaux de bêtes..

    Dernière modification par pxlntwrk ; 30/10/2017 à 02h22. Motif: mse a jour de la version
    ::::::::::::::
    pxlntwrk.net

  2. #2
    Pilier Avatar de miroof
    Date d'inscription
    janvier 2012
    C4D version
    R16 Studio
    Messages
    909
    Salut,
    ça pête !
    GG
    Expert en l'art de ne jamais finir mes WIPs persos

  3. #3
    Big Boss Avatar de Rudy
    Date d'inscription
    mars 2005
    C4D version
    R14 Visualize
    OS
    W 10 Pro 64 bits
    Messages
    8 117
    Billets dans le blog
    3
    Ça en jette et c'est prometteur.

    Mais est-ce applicable sur C4D directement, sans passer par les moteurs vray/Octane ? Comme vieillir des polygones vers le bord des arêtes, à l'instar de Substance Painter, un peu "métal / peinture " usée, abimée ?
    My BlogAccepter une possibilité, c'est lui permettre de se réaliser ...
    My Wip □ Juggernaut

  4. #4
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924
    Salut,
    @ Rudy je pense que tu peux gérer ca avec le moteur de C4d avec un Noeud "Occlusion Ambiante" dans les 2 sens (inversion de direction en produit) pour les concaves et convexes. Ensuite tu lui met un Bruit en Alpha que tu triture pour avoir un aspect "grunge".
    Si tu veux Il y aussi le pluggin GrungeShader qui fait ça très bien...

    personne pour mes lacunes en xpresso ?


    ps/un début très sommaire avec les shader de AR R18 (mise en place rapide du principe sans contrôleurs)

    http://www.cjoint.com/doc/17_02/GBlm..._dirtc4dAR.zip

    Dernière modification par pxlntwrk ; 11/02/2017 à 22h36.
    ::::::::::::::
    pxlntwrk.net

  5. #5
    Big Boss Avatar de Rudy
    Date d'inscription
    mars 2005
    C4D version
    R14 Visualize
    OS
    W 10 Pro 64 bits
    Messages
    8 117
    Billets dans le blog
    3
    Merci pxlntwrk de ta réponse rapide et fournie, je vais éplucher tes infos
    My BlogAccepter une possibilité, c'est lui permettre de se réaliser ...
    My Wip □ Juggernaut

  6. #6
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924
    En gros le principe est de gérer l'aspect du " grunge " en jouant sur les paramètres (echelle, octaves etc...) du bruit et la propagation est dirigée par la force et la distance de l'AO...
    ::::::::::::::
    pxlntwrk.net

  7. #7
    Pilier Avatar de gr4ph0s
    Date d'inscription
    mai 2013
    C4D version
    R16 Studio
    OS
    win 7 X64
    Messages
    796
    En "pure" xpresso je craint que ça sois impossible cependant voici une version qui fait les deux choses que tu veux mais via des noeud python.

    Le noeud hide il te suffit de redéfinir les variables suivantes avec les id que tu souhaites cacher
    Code:
        first_id_to_hide = [7, 8]
        second_id_to_hide = [1, 2, 3]
        third_id_to_hide = [4, 5]
    Pour le second malheureusement tu ne peux ajouter/supprimer des objets via xpresso donc la je suis sur que la solution est uniquement pythonique et elle sera un peu plus dur à expliquer mais si tu veux que je t'explique je le ferais.

    Voici le fichier
    pxlntwrk.c4d
    Si tu veux voir en action http://recordit.co/J2BSWt99ee

    Bon par contre il ne met pas à jour si le mat change mais cela peux être fait si tu veux que ça le fasse just say it
    Dernière modification par gr4ph0s ; 11/02/2017 à 16h18.
    3D 3e année MJM NANTES

    Website : graphos.xyz

  8. #8
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924
    yes c'est ça
    T'es vraiment un tueur
    merci beaucoup !!!

    faut vraiment que je me mette a tes formations du serpent!!!
    ::::::::::::::
    pxlntwrk.net

  9. #9
    Pilier Avatar de gr4ph0s
    Date d'inscription
    mai 2013
    C4D version
    R16 Studio
    OS
    win 7 X64
    Messages
    796
    Tien une version modifié de mon code de mat_assignement maintenant si tu mets a jour le liens du mat et qu'un objet qui été dans la liste n'avais pas de mat alors il le rajoute automatiquement. Et si tu change de mat sa le change sur tout les objets

    pxlntwrk_update2.c4d

    A vrai dire fraudais que je reprenne le temps de faire mes vidéos... Mais pas facile en ce moment. D'ailleurs je pense que lorsque je reprendrais je traiterais ton sujet car c'est un très bon exemple des possibilité qu'offre python couplé à xpresso (notamment la possibilité de rajouter des objets/ tag / mat ce qui est impossible via xpresso)

    EDIT: une autre version, si tu supprimes/ rajoutais le null cela recrais les mats. Du coup j'ai limité la possiblité au tag de rajouter 2 mats. En gros chaque tag que j'ajoute je les marques avec un ID unique
    Code:
            bc = textag.GetDataInstance()
            bc.SetBool(1037123, True)
    Du coup ceci me permet lorsque je supprime d'être sur que je supprime le mat créer via le xpresso et non un autre texturetag. Mais du coup avec ma limitation tu ne peux créer(via ton xpresso) qu'un seul matériaux sur chaque objet, même si tu as 2 xpresso avec le même objet dedans mais deux mat différent. A voir si cela pose problème et surtout je suis pas sur que ça sois bien compréhensible :p
    Dernière modification par gr4ph0s ; 11/02/2017 à 16h53.
    3D 3e année MJM NANTES

    Website : graphos.xyz

  10. #10
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924
    a priori le materiaux est imposé car c'est le "sujet" des modifs (salissures...) donc pour l'instant j'ai supprimé "le lien" mat et remplacé par mon Mixmat directement. je me suis même permis de changer la projection par défaut en " TEXTURETAG_PROJECTION_CUBIC ".

    après je vais voir aussi comment réagi tout ça avec copie, suppression... en tout cas merci encore
    Dernière modification par pxlntwrk ; 11/02/2017 à 17h40.
    ::::::::::::::
    pxlntwrk.net

  11. #11
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924
    @Graph0s,
    l' affectation de materiaux marche bien,
    mais il y a encore un truc que je n'arrive pas a faire avec ton noeud.
    quand je supprime l'objet de la liste (DU) le tag de texture disparaît (Object Manager) = parfait
    par contre quand je retire le tag de texture (OM) l'objet reste lui dans la liste (DU)= moins bien

    désolé de te solliciter encore, merci d'avance
    ::::::::::::::
    pxlntwrk.net

  12. #12
    Gourou Avatar de bru
    Date d'inscription
    août 2009
    C4D version
    R18 Visualize
    OS
    Windows 10
    Messages
    3 577
    Citation Envoyé par pxlntwrk Voir le message
    Salut,
    @ Rudy je pense que tu peux gérer ca avec le moteur de C4d avec un Noeud "Occlusion Ambiante" dans les 2 sens (inversion de direction en produit) pour les concaves et convexes. Ensuite tu lui met un Bruit en Alpha que tu triture pour avoir un aspect "grunge".
    Si tu veux Il y aussi le pluggin GrungeShader qui fait ça très bien...
    Juste un point qui va décevoir Rudy : L'occlusion ambiante n'est possible dans les deux sens qu'à partir de la R18. Avant, elle ne peut s'appliquer que sur les zones "concaves".

    Pour des objets pas trop complexes, il y a peut-être aussi moyen de faire quelque-chose avec proximal.


  13. #13
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924
    Salut,
    effectivement sur ma R17 il n' y a pas d'inversion mais cela fait un bail que je n'utilise plus les shader de AR, du coup je ne suis pas trop au fait des changements...

    merci pour la précision Bru
    ::::::::::::::
    pxlntwrk.net

  14. #14
    Pilier Avatar de gr4ph0s
    Date d'inscription
    mai 2013
    C4D version
    R16 Studio
    OS
    win 7 X64
    Messages
    796
    Citation Envoyé par pxlntwrk Voir le message
    @Graph0s,
    l' affectation de materiaux marche bien,
    mais il y a encore un truc que je n'arrive pas a faire avec ton noeud.
    quand je supprime l'objet de la liste (DU) le tag de texture disparaît (Object Manager) = parfait
    par contre quand je retire le tag de texture (OM) l'objet reste lui dans la liste (DU)= moins bien

    désolé de te solliciter encore, merci d'avance
    Voila c'est good ! J'ai commenté ce que j'ai modifié dans le code histoire que ça sois plus simple pour toi à merger avec ce que tu as déjà modifié.
    pxlntwrk_update3.c4d
    3D 3e année MJM NANTES

    Website : graphos.xyz

  15. #15
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924
    Franchement t'es au top


    si je puisse ...

    par coquetterie je voudrais donner une couleur ( le top serait une icone perso ) a mon object Null qui me sert de "controler"

    j'ai trouver un script ici que j'ai adapté pour pouvoir créer un objet neutre Nommé avec la couleur de mon choix.

    Code:
    import c4dfrom c4d import documents
    from c4d import gui
    
    
    usrInput = "pxl DIRT"        #Input dialog to name myobject
    
    
    
    
    def main():
        
        
    #create the xpressoNULL
        myobject = c4d.BaseObject(c4d.Onull)        #create a null object (myobject)
        doc.InsertObject(myobject)                  #Insert the object into the documents object manager
        myobject.MakeTag(1001149)                   #Add xpresso tag to myobject
        myobject[c4d.ID_BASELIST_NAME] = usrInput   #Give myobject a name (comes from the input dialog)
         
        
                   
        myobject[c4d.NULLOBJECT_ICONCOL] = True       #Set "Icon Color" on in basic tab
        myobject[c4d.ID_BASEOBJECT_USECOLOR] = True   #Set " Use Color" on automatic in basic tab
        myobject[c4d.ID_BASEOBJECT_COLOR] = c4d.Vector(0,1,0) #set "Display Color" in basic tab
        
    #Refresh the managers to show the new object    
        c4d.EventAdd()
     
    main()
    ca marche tres bien ,mais en fait je n'ai besoin que de mon null déjà coloré de base car j'aimerai le charger depuis une lib4d par exemple

    donc a priori un noeud python avec une de ces qq lignes (variables adaptées) connecté a mon null object dans xpresso ?


    Dernière modification par pxlntwrk ; 11/02/2017 à 23h37.
    ::::::::::::::
    pxlntwrk.net

  16. #16
    Pilier Avatar de gr4ph0s
    Date d'inscription
    mai 2013
    C4D version
    R16 Studio
    OS
    win 7 X64
    Messages
    796
    Pour le logo je ne pense pas que ça sois possible (ou tu modifie aussi l'icon de tout les null) par contre si tu veux absolument ton truc custom, une solution est de créer un objet via un plugin et la tu pourras rajouter son icon personnalisé.. Mais bon c'est assez lourd et surtout ça surcharge de plugin.

    Sinon voici avec le changement de couleur.
    pxlntwrk_update4.c4d
    3D 3e année MJM NANTES

    Website : graphos.xyz

  17. #17
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924
    cool merci encore x1000

    et j'ai regardé un peu pour un truc un peu plus Custom on rentre dans de la grossesse artillerie non nécessaire ici...


    ::::::::::::::
    pxlntwrk.net

  18. #18
    Pilier Avatar de miroof
    Date d'inscription
    janvier 2012
    C4D version
    R16 Studio
    Messages
    909
    Impossible de le dl, il me mets que je dois me loguer au forum, chose qui est faite

    *Résolu*
    Dernière modification par miroof ; 13/02/2017 à 12h39.
    Expert en l'art de ne jamais finir mes WIPs persos

  19. #19
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924
    Salut Miroof
    je n'ai pas encore mis de lien pour dl le contrôleur.

    je fais ça dès que j'ai réglé mon histoire de choix entre procédural ou bitmap...
    ::::::::::::::
    pxlntwrk.net

  20. #20
    Pilier Avatar de miroof
    Date d'inscription
    janvier 2012
    C4D version
    R16 Studio
    Messages
    909
    Ouais, je m en suis vite rendu compte ^
    Expert en l'art de ne jamais finir mes WIPs persos

  21. #21
    Pilier Avatar de leBigYO
    Date d'inscription
    mars 2014
    C4D version
    R15 Studio
    OS
    windows 10
    Messages
    1 382
    ce sujet m'intéresse particulièrement, mais étant en R15 sans autre moteur de rendu que AR...
    Cependant, comme le demandait Rudy, il y a une soluce en Xpresso qui s'appelle GrungFX que j'avais chopé sur le fofo il y a quelques temps mais impossible de retrouver le thread ni le lien où j'avais téléchargé le bouzin...
    Dernière modification par leBigYO ; 13/02/2017 à 23h39.
    La chance sourit aux audacieux : pourvu qu’elle n’ait pas de caries.
    http://yoniverse.jimdo.com/

  22. #22
    Gourou Avatar de bru
    Date d'inscription
    août 2009
    C4D version
    R18 Visualize
    OS
    Windows 10
    Messages
    3 577
    Pour les ARistes: j'envisageais il y a quelque temps d'acheter un plugin de "grunge" que m'avais renseigné Floc... Mais j'ai tardé, est arrivée la R18 et je n'en ai ainsi plus eu besoin.

    Je n'ai donc aucune idée de ce qu'il vaut, mais voici le lien: https://cinemaplugins.com/c4d-plugins/grunge-shader/#tab-id-1
    Dernière modification par bru ; 20/02/2017 à 21h43.


  23. #23
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924
    Salut,
    J'en parlais un peu ( plus haut ), utilisé avec Vray et ça marche assez bien , quoiqu' il faut quand même bien manipuler la map de noise pour obtenir l'effet souhaité...

    de mon coté pas beaucoup d'avancement, je me suis un peu perdu dans
    les videos d'introduction a python pour c4d de Graph0s ( un grand merci a lui pour l'ouverture de portes )
    je ne m'en suis servi ici que pour la partie "GUI" (fonctionnement) donc rien de très folichon...(de ma part !)


    j'ai donc
    -plus ou moins calé le coté fonctionnement Données Utilisateurs
    -commencé a rajouté une 4ème "couche" en amont sorte de "patine", avec du "micro-relief".
    -esquissé une icone qui sert de bouton pour appeler l'objet Null controleur.

    Un petit gif de WIP:



    apercu de l'expresso contrôleur


    et l'Octane MixMat contrôlé


    le python utilisé ( pour correction si possible)

    Noeuds xpresso:

    >gestion du null controleur

    Code:
    # Many Thanks!!! Graph0s## http://graphos.xyz/ 
    
    import c4d
    
    def main():
        obj[c4d.ID_BASELIST_NAME] = "PXL+DIRT"
                
        obj[c4d.NULLOBJECT_ICONCOL] = True       
        obj[c4d.ID_BASEOBJECT_USECOLOR] = True   
        obj[c4d.ID_BASEOBJECT_COLOR] = color
    >gestion du calque contenant les objets controlés

    Code:
    # Copyright (C) 2013, Niklas Rosenstein# All rights reserved.
    #
    # Free for private and commercial use.
    #
    # This node can set the states if a Layer object, which is prohibited
    # by Cinema 4D's default 'Object' node. It will only set a state if a
    # port is actually connected with that state.
    
    
    import c4d
    
    
    def assoc_inports(node):
        r"""
        Creates a dictionary which associates the names of the node's input ports
        as the keys with the actual GvPorts' as the values.
        """
    
    
        inports = node.GetInPorts()
        result = {}
        for inport in inports:
            name = inport.GetName(node)
            result[name] = inport
    
    
        return result
    
    
    name_to_id = {
        'Solo': c4d.ID_LAYER_SOLO,
        'Visible_in_Editor_View': c4d.ID_LAYER_VIEW,
        'Visible_in_Render_View': c4d.ID_LAYER_RENDER,
        'Visible_in_Managers': c4d.ID_LAYER_MANAGER,
        'Animation': c4d.ID_LAYER_ANIMATION,
        'Generators': c4d.ID_LAYER_GENERATORS,
        'Deformers': c4d.ID_LAYER_DEFORMERS,
        'Expressions': c4d.ID_LAYER_EXPRESSIONS,
        'Locked': c4d.ID_LAYER_LOCKED,
        'XRef': c4d.ID_LAYER_XREF,
    }
    
    
    def main():
        if not Layer:
            return
    
    
        ports = assoc_inports(op)
        globals_ = globals()
        for name, id_ in name_to_id.iteritems():
            port = ports[name]
            value = globals_[name]
    
    
            if port.IsIncomingConnected():
                Layer[id_] = value
        Layer.Message(c4d.MSG_CHANGE)
    >exemple de gestion de l'affichage ou non des groupes de Données Utilisateurs

    Code:
    # Many Thanks!!! Graph0s## http://graphos.xyz/ 
    
    
    import c4d
    
    
    def main():
        zero_id_to_hide = [68]
        first_id_to_hide = [5]
        second_id_to_hide = [13]
        third_id_to_hide = [10]
        
        UD = link.GetUserDataContainer()
        for descId, container in UD:
            if descId[1].id in zero_id_to_hide:
                container[c4d.DESC_HIDE] = not(zero_bool)
                link.SetUserDataContainer(descId, container)
            
            if descId[1].id in first_id_to_hide:
                container[c4d.DESC_HIDE] = not(first_bool)
                link.SetUserDataContainer(descId, container)
                
            if descId[1].id in second_id_to_hide:
                container[c4d.DESC_HIDE] = not(second_bool)
                link.SetUserDataContainer(descId, container)
            
            if descId[1].id in third_id_to_hide:
                container[c4d.DESC_HIDE] = not(third_bool)
                link.SetUserDataContainer(descId, container)

    Tags:

    >Revenir au paramètres par défaut

    Code:
    # " BaseList2D.AddEventNotification()" shared by Niklas Rosenstein on plugincafe.com## http://www.plugincafe.com/forum/forum_posts.asp?TID=11042
    ### " Here's an example scene: "
    #### https://dl.dropboxusercontent.com/u/99829745/stuff/2015-01-23-AddEventNotification_Example.c4d
    
    
    # bh_resetRig shared by Horganovski on cgsociety.org forum
    ## http://forums.cgsociety.org/showthread.php?t=1241344
    ### File Type: zip bh_resetRig.zip 
    #### http://forums.cgsociety.org/attachment.php?attachmentid=176592
    
    
    
    
    import c4d
    from c4d import gui
    
    
    
    
    def message(msg_type, data):
        if msg_type == c4d.MSG_NOTIFY_EVENT:
            event_data = data['event_data']
            if event_data['msg_id'] == c4d.MSG_DESCRIPTION_COMMAND:
                desc_id = event_data['msg_data']['id']
                if desc_id[1].id == 39:
                    
                        objList=doc.GetActiveObjects(True)
                        for obj in objList:
                            obj.SetRelPos(c4d.Vector(0,0,0))
                            obj.SetRelRot(c4d.Vector(0,0,0))
                            for id, bc in obj.GetUserDataContainer():  # Loop through each user data
                                if bc.GetId()==c4d.DTYPE_REAL:        # Test if it's a float user data
                                    val = bc.GetReal(c4d.DESC_DEFAULT)
                                    obj[id] = val 
                                
                         
    
    
    def main():
     
        obj = op.GetObject()
        bc = c4d.BaseContainer()
        obj.AddEventNotification(op, c4d.NOTIFY_EVENT_MESSAGE, 0, bc)

    >Utilisation du bouton pour actionner des données utilisateur

    Code:
    # bh_resetRig shared by Horganovski on cgsociety.org forum## http://forums.cgsociety.org/showthread.php?t=1241344
    ### File Type: zip bh_resetRig.zip 
    #### http://forums.cgsociety.org/attachment.php?attachmentid=176592
    
    
    import c4d
    from c4d import documents, plugins
    
    
    def message(msg_type, data):
        if msg_type == c4d.MSG_NOTIFY_EVENT:
            event_data = data['event_data']
            if event_data['msg_id'] == c4d.MSG_DESCRIPTION_COMMAND:
                desc_id = event_data['msg_data']['id']
                if desc_id[1].id == 42:
    
    
    
    
                        def tool():
                            return plugins.FindPlugin(doc.GetAction(), c4d.PLUGINTYPE_TOOL)
                    
                        def object():
                            return doc.GetActiveObject()
                    
                        def tag():
                            return doc.GetActiveTag()
                    
                        def renderdata():
                            return doc.GetActiveRenderData()
                    
                        def prefs(id):
                            return plugins.FindPlugin(id, c4d.PLUGINTYPE_PREFS)
                    
                        object()[c4d.ID_USERDATA,27]=True
                        object()[c4d.ID_USERDATA,19]=True
                        object()[c4d.ID_USERDATA,4]=True
                        object()[c4d.ID_USERDATA,67]=True
        
    def main():
        
        obj = op.GetObject()
        bc = c4d.BaseContainer()
    
        obj.AddEventNotification(op, c4d.NOTIFY_EVENT_MESSAGE, 0, bc)
    >Utilisation du bouton pour appeler des commandes (ici supprimer les matériaux et calques inutiliseés)
    Code:
    # bh_resetRig shared by Horganovski on cgsociety.org forum## http://forums.cgsociety.org/showthread.php?t=1241344
    ### File Type: zip bh_resetRig.zip 
    #### http://forums.cgsociety.org/attachment.php?attachmentid=176592
    
    
    import c4d
    
    
    def message(msg_type, data):
        if msg_type == c4d.MSG_NOTIFY_EVENT:
            event_data = data['event_data']
            if event_data['msg_id'] == c4d.MSG_DESCRIPTION_COMMAND:
                desc_id = event_data['msg_data']['id']
                if desc_id[1].id == 38:
                    c4d.CallCommand(1035351, 1035351) # Remove Unused Materials
                    c4d.CallCommand(100004760, 100004760) # Supprimer les calques inutilisés
    
    
    def main():
        
        obj = op.GetObject()
        bc = c4d.BaseContainer()
    
        obj.AddEventNotification(op, c4d.NOTIFY_EVENT_MESSAGE, 0, bc)
    et le script qui sert a charger le tout
    Code:
    ##
    
    import c4d
    import os
    
    
    fn = os.path.join(os.path.dirname(__file__), 'PXL+DIRT')
    def main():
        
        c4d.documents.MergeDocument(doc, fn, c4d.SCENEFILTER_MATERIALS | c4d.SCENEFILTER_OBJECTS)
        c4d.EventAdd()
    
    
    if __name__=='__main__':
        main()
    Dernière modification par pxlntwrk ; 21/02/2017 à 02h51.
    ::::::::::::::
    pxlntwrk.net

  24. #24
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924


    un petit up ..
    rajout d'une couche "Sticker", un bitmap avec une couche alpha en entrée. Un peu gadget mais bon . Tout le reste reste ;-) procédural (only Octane nodes ).
    utilisation du nouveau noeud "ADD" proposé par la version 3.06 d'Octane.

    un .gif peut être un peu lourd a charger

    Dernière modification par pxlntwrk ; 24/02/2017 à 01h58.
    ::::::::::::::
    pxlntwrk.net

  25. #25
    Pilier Avatar de atome451
    Date d'inscription
    mars 2004
    C4D version
    R19 Studio
    OS
    Windows 10 64bits
    Messages
    959
    Ça a l'air assez mortel ton truc
    Bravo !!
    "L'avenir a pris racine dans le présent... C'est fait."
    C4D 19 Studio - Octane C4D plug - 3 x GTX980, 2 x GTX670, 1 x GTX1060 - Intel i7 6850

  26. #26
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924
    Citation Envoyé par atome451 Voir le message
    Ça a l'air assez mortel ton truc
    Bravo !!
    Yes, merci! je ne sais pas si cela sera tres util,mais je m'amuse bien,et surtout je comble pas mal de lacunes dans mes bases de cinema4d.

    Introduction d'une fonction "Pattern", basée sur le shader "carrelage" de c4d.
    Je passe du coté obscur ;-) en utilisant un shader c4d natif, mais c'est la condition pour utilser le displacement d'Octane tout en restant procédural.
    un petit gif



    ::::::::::::::
    pxlntwrk.net

  27. #27
    Pilier Avatar de gr4ph0s
    Date d'inscription
    mai 2013
    C4D version
    R16 Studio
    OS
    win 7 X64
    Messages
    796
    Super cool ton truc !
    3D 3e année MJM NANTES

    Website : graphos.xyz

  28. #28
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924
    Citation Envoyé par gr4ph0s Voir le message
    Super cool ton truc !
    Merci !

    je vole un peu de temps par ci par la..
    ci-joint la fonction"Pattern" contrôlée via un masque de "bruit"



    ::::::::::::::
    pxlntwrk.net

  29. #29
    Pilier Avatar de pxlntwrk
    Date d'inscription
    janvier 2012
    C4D version
    Autre
    OS
    7x64
    Messages
    924
    Salut,

    Un poil d'avancement.
    avec en gros, réorganisation des rubriques et rajout d'entrées bitmap optionnelles pour driver la fonction "Coat".

    l'état en video



    Lien Vimeo >>


    il faut encore que je test en détail qq autres situations ( murs, statues , route , trottoirs etc..) pour affiner les valeurs de bases.

    Je mets le lien du bousin en l’état (testé actuellement uniquement sur C4DR18.041 et Octane Render 3.06)
    L'archive contient la scène utilisée dans la vidéo ainsi que pour test un dossier a mettre dans le dossier script pour pouvoir appeler le rigg via une commande ou icone.Je ne sais pas du tout si cela marche autre part que sur mon Ordi.
    Je suis preneur de tout retours, merci d'avance.

    Lien archive PXL+DIRT wip

    Dernière modification par pxlntwrk ; 01/03/2017 à 04h52.
    ::::::::::::::
    pxlntwrk.net

  30. #30
    Pilier Avatar de miroof
    Date d'inscription
    janvier 2012
    C4D version
    R16 Studio
    Messages
    909
    C'est télécharger, je test ça des que je peux
    Merci !
    Expert en l'art de ne jamais finir mes WIPs persos

Discussions similaires

  1. [Problème] Octane
    Par Lestarling dans le forum Nouveaux membres
    Réponses: 4
    Dernier message: 04/09/2014, 19h24
  2. equivalent de "helper layer" de 3DS sous C4D ?
    Par VJDESIGN dans le forum After Effects
    Réponses: 2
    Dernier message: 05/10/2009, 17h04
  3. Cinema 4D 9.52 et Dirt
    Par Matts3D dans le forum Textures
    Réponses: 3
    Dernier message: 28/12/2005, 20h44
  4. calculate dirt
    Par Maha dans le forum Textures
    Réponses: 1
    Dernier message: 22/01/2005, 02h45
  5. tutorial uv-map, dirt-map and baker
    Par mixel dans le forum BodyPaint 3D
    Réponses: 0
    Dernier message: 30/09/2004, 02h03

Les tags pour cette discussion

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
  •