Affichage des résultats 1 à 18 sur 18

Discussion: Convertir les texture de Vray vers C4D Standard

  1. #1
    Squatteur
    Date d'inscription
    décembre 2005
    Messages
    176

    Convertir les texture de Vray vers C4D Standard

    Salut tous le monde !

    Nous sommes quelque un à essayé de trouver une solution pour convertir les textures de Vray (dans cinema 4D) vers le Rendu Physique de Cinema 4D ?
    Il existe depuis Vray la possibilité de convertir les textures C4D vers VRAY mais pour l'inverse nous ne trouvons pas de solutions...
    Floc à trouvé un code en COFFEE qui fonctionné sous les anciennes version de C4D et VRAY mais qui n'est plus utilisable aujourd'hui...
    Nous nous demandons donc si quelqu'un serait capable de transformer le code pour l'adapter aux actuelles versions ?

    Voici le lien : https://forums.cgsociety.org/t/vray-...-maybe/1504511

    Un grand merci d'avance !

  2. #2
    Gourou Avatar de valkaari
    Date d'inscription
    mai 2009
    C4D version
    Autre
    OS
    OSX / windows
    Messages
    2 821
    Comme il y a plusieurs type de texture vray (je connais hyper mal vray) faudrait déjà essayer de référencer des correspondances.

    Qu'est ce qu'on fait si on trouve un vray blend material. Est ce qu'il peut y avoir des layers, les bruits, les textures.

    on fait ça pour une matière puis on fait une boucle puis voilà =)


    (j'ai pas une chié de temps pour ce genre de chose en ce moment)

    Comment créer un tableau de BaseMaterial qui correspondent à des Matériaux V-ray

    Code PHP:
    import c4d
    from c4d import gui
    # Welcome to the world of Python






    # Main function


    vrayMatsIds = {
    1022115 'V-Ray 2 Sided Material/V-Ray 2 Sided Material'       ,
    1024192 'V-Ray Fast SSS2 Material/V-Ray Fast SSS2 Material'   ,
    1022116 'V-Ray Blend Material/V-Ray Blend Material'           ,
    1035368 'V-Ray OSL Material/V-Ray OSL Material'               ,
    1039186 'V-Ray VrMat Material/V-Ray VrMat Material'           ,
    1020295 'V-Ray Advanced Material/V-Ray Advanced Material'    
    }




    def GetAllMaterials(OnlyVray True):
        
    # Creates an empty array and add all materials in it.
        # By default, only pick vray materials
        
    mats = []
        
    mat doc.GetFirstMaterial()
        while 
    mat:
            if 
    mat.GetType() in vrayMatsIds:
                
    mats.append(mat)
            
    mat mat.GetNext()
        return 
    mats






    def main
    ():
        
        
        for 
    mat in GetAllMaterials():
            print 
    mat




    # Execute main()
    if __name__=='__main__':
        
    main() 
    Dernière modification par valkaari ; 27/05/2019 à 20h25.

  3. #3
    Pilier Avatar de Floc
    Date d'inscription
    novembre 2012
    C4D version
    R15 Studio
    OS
    WindOSX
    Messages
    1 443
    Voici la version inspirée du coffee deja postée ici avec les explications.
    Je la reposte ici, comme ça si un valeureux dev passe par la qu’il n’hesite point à pointer de son doigt expert les eventuelles bourdes !
    D'ailleur je vois que Vaalkari est déja passé, zut je l'ai manqué

    On pourrai rester ici maintenant, vu qu'il y a quatre discussion sur ce même sujet
    Fichiers attachés Fichiers attachés

  4. #4
    Gourou Avatar de valkaari
    Date d'inscription
    mai 2009
    C4D version
    Autre
    OS
    OSX / windows
    Messages
    2 821
    dès que j'ai un peu de temps je regardes, n'hésites pas à poser des questions.

    Et pour réagir à ton autre post, non c'est pas si compliqué, bien pour ça qu'on encourage tout le monde à mettre le nez dedans
    Dernière modification par valkaari ; 27/05/2019 à 13h49.

  5. #5
    Pilier Avatar de Floc
    Date d'inscription
    novembre 2012
    C4D version
    R15 Studio
    OS
    WindOSX
    Messages
    1 443
    Merci Vaalkari, je crois qu'un oeil expert ne sera pas de trop.

    En attendant, voila une version améliorée.
    Je me suis rendu compte que le canal weight de vray en fait c’est l’alpha, donc je l’ai rajouter.
    Les layers sont pris en compte et le Filter conserve maintenant ses parametres.
    J’ai ajouter un dialogue pour l’option remplacer les materiaux dans les tags.
    et j’ai aussi ajouter un petit icone (total illisible )

    J’ai converti ma grosse scene avec, et ca à l’air de plutot bien fonctionner.
    Par contre dans cette scene la majorité des bitmap sont des bitmapshader C4d, mais j’ai quand même rencontré quelques materiaux ou le vrayAdvBitmap Shader a été utilisé et bien sur dans ce cas ca ne fonctionne pas. Mais il semblerai que les utilsateur vray utlise plutôt les shader c4d dans les materiaux VRay. Si c'est pas le cas dites moi, j'essaierai de le prendre en compte.

    Pour les layers et le filter j'ai utilisé un getClone du shader, c'est beaucoup plus simple, j'espere juste qu'il y a pas un loup derrière la facilité.
    Fichiers attachés Fichiers attachés

  6. #6
    Gourou Avatar de valkaari
    Date d'inscription
    mai 2009
    C4D version
    Autre
    OS
    OSX / windows
    Messages
    2 821
    une idée comme ça.

    Pour remplacer tes textures tu peux aussi utiliser la partie "Assignment"
    ça t'évitera de parcourir toute la hiérarchie des objets * nombre de texture.

    Tu peux aussi créer des tableaux si tu veux tracer les correspondances.

    pas beaucoup de code à ajouter et ça supprime pas mal de code pour parcourir l'arborescence

    "Sans programmation défensive"

    Code PHP:
     #on récupère une matière (ici je sais que la première est une vray)
        
    vrayMat doc.GetFirstMaterial()
        
    #je récupères les données des assignements
        
    vrayAssign =  vrayMat[c4d.ID_MATERIALASSIGNMENTS]
        
        
    #Création de la matière et insertion dans le document
        
    phyMat =  c4d.BaseMaterial(c4d.Mmaterial)
        
    doc.InsertMaterial(phyMat)
        
        
    #pour tous les objets présents dans la liste assignment
        
    for i  in xrange(vrayAssign.GetObjectCount()):
            
    #récupération du tag
            
    textTag vrayAssign.ObjectFromIndex(doci)
            
    #mise à jour du champ "material" du tag avec la matière physique
            
    textTag[c4d.TEXTURETAG_MATERIAL] = phyMat 
    Dernière modification par valkaari ; 27/05/2019 à 20h27.

  7. #7
    Pilier Avatar de Floc
    Date d'inscription
    novembre 2012
    C4D version
    R15 Studio
    OS
    WindOSX
    Messages
    1 443
    Ah oui ça m'as l'air bien ça, surtout que j'ai tendance a pas trop me préoccuper des "défenses" dans mes codes

  8. #8
    Big Boss Avatar de NiKo
    Date d'inscription
    novembre 2002
    C4D version
    R12 Studio
    OS
    OSX
    Messages
    6 441
    Super les gars...
    Je teste en l'état...

    NiKo

  9. #9
    Big Boss Avatar de NiKo
    Date d'inscription
    novembre 2002
    C4D version
    R12 Studio
    OS
    OSX
    Messages
    6 441
    ça a l'air de marcher très bien! Bien ouais les gars!

    Edit: ha non, ça ne marche plus quand la texture est chargée dans un VrayAdvancedBitmap, ce qui est le cas dans la majorité du temps...

    NiKo

  10. #10
    Gourou Avatar de valkaari
    Date d'inscription
    mai 2009
    C4D version
    Autre
    OS
    OSX / windows
    Messages
    2 821
    Citation Envoyé par Floc Voir le message
    mais j’ai quand même rencontré quelques materiaux ou le vrayAdvBitmap Shader a été utilisé et bien sur dans ce cas ca ne fonctionne pas. Mais il semblerai que les utilsateur vray utlise plutôt les shader c4d dans les materiaux VRay. Si c'est pas le cas dites moi, j'essaierai de le prendre en compte.
    Citation Envoyé par NiKo Voir le message
    ha non, ça ne marche plus quand la texture est chargée dans un VrayAdvancedBitmap, ce qui est le cas dans la majorité du temps...

    Ben voilà, au boulot :p

  11. #11
    Pilier Avatar de Floc
    Date d'inscription
    novembre 2012
    C4D version
    R15 Studio
    OS
    WindOSX
    Messages
    1 443
    Citation Envoyé par NiKo Voir le message
    ha non, ça ne marche plus quand la texture est chargée dans un VrayAdvancedBitmap, ce qui est le cas dans la majorité du temps..
    Ah ok, je suis tombé sur le seul mec qu'utilise jamais le VrayAdvancedBitmap

    Voila, c'est réparé, cette version prend en compte le V-Ray AdvBitmap, et aussi l'exposure en bonus.


    PS : Comme j'uitlise pas du tout vray si il y a un autre truc tres utilsé et qui a un equivalent CD4 dites moi, si c'est pas trop compliqué je peux essayer de l'integrer.
    Fichiers attachés Fichiers attachés
    Dernière modification par Floc ; 28/05/2019 à 19h22.

  12. #12
    Big Boss Avatar de NiKo
    Date d'inscription
    novembre 2002
    C4D version
    R12 Studio
    OS
    OSX
    Messages
    6 441
    Citation Envoyé par Floc Voir le message
    Ah ok, je suis tombé sur le seul mec qu'utilise jamais le VrayAdvancedBitmap

    Lol. Je dois être le seul gars qui se soit frappé les 90 heures de vidéo en anglais de la MasterClass Vray

    Merci pour le script, je teste ça...

    NiKo

  13. #13
    Pilier Avatar de Floc
    Date d'inscription
    novembre 2012
    C4D version
    R15 Studio
    OS
    WindOSX
    Messages
    1 443
    Juste un petit rappel, vu que moi même je l’avais oublié
    On peu recuperer la map de specular dans le canal diffuse (qui n’est pas activé), je sais c’est un peu bizarre, mais le canal reflectance de C4d etant dynamique c'est plus compliqué et j’ai pas vraiment le temps de m’y coller.
    Ca permet de recoller le map à sa place plus facilement.

  14. #14
    Big Boss Avatar de NiKo
    Date d'inscription
    novembre 2002
    C4D version
    R12 Studio
    OS
    OSX
    Messages
    6 441
    ça marche nickel Floc! Grand merci pour le travail! :-)

    NiKo

  15. #15
    Pilier Avatar de Floc
    Date d'inscription
    novembre 2012
    C4D version
    R15 Studio
    OS
    WindOSX
    Messages
    1 443
    Une petite "mise a jour"
    La refraction est prise en compte, le canal couleur n'est plus activé par defaut et le canal alpha est activés a bon escient.
    C'est a dire pas en fonction de l'activation du canal weight (il est toujours actif), mais si il y a une texture dans ce canal, ou si sa valeur de mix est < 1.
    Et super important un icone plus joli
    Fichiers attachés Fichiers attachés

  16. #16
    Pilier Avatar de Floc
    Date d'inscription
    novembre 2012
    C4D version
    R15 Studio
    OS
    WindOSX
    Messages
    1 443
    Je croyais plus jamais m'en servir, mais finalement ce truc est plutôt utile. Donc je continue a l'ameliorer doucement.
    La je voulais recuperer les maps de speculaires et les mettre a la bonne place dans la reflectance.
    J'y suis presque sauf que dans le cas d'un materiaux nouvellement créé, c'est comme si les layers du canal reflectance n'existait pas encore.
    J'obtient des messages du genre c4d.baseMaterial object has no attribute 'GetReflectionLayer...

    Un petit bout de code pour illustrer le probleme.
    la simple fonction GetReflectionLayerCount() genere une erreur.
    C'est pour ca que j'ai tenté insert, Message et Update avant l'appel mais ca ne change rien.

    Code PHP:
    def main():
        
    mat c4d.BaseMaterial(c4d.Mmaterial)
        
    doc.InsertMaterial(mat)
        
    mat.Message(c4d.MSG_UPDATE)
        
    mat.Update(TrueTrue)
        
        
    cntLayer mat.GetReflectionLayerCount()
        print 
    cntLayer
        

    if __name__=='__main__':
        
    main() 
    Par contre si vous essayez avec ce deuxieme script en selectionnant le materiau nouvellement créé, pas de probleme.

    Code PHP:
    def main():    
        
    #Maintenant on selectionne le mat nouvellement crée et ca fonctionne !
        
    matList doc.GetActiveMaterials()
        
    mat matList[0]    
        
    cntLayer mat.GetReflectionLayerCount()
        print 
    cntLayer

    if __name__=='__main__':
        
    main() 

  17. #17
    Gourou Avatar de valkaari
    Date d'inscription
    mai 2009
    C4D version
    Autre
    OS
    OSX / windows
    Messages
    2 821
    Le message d'erreur dit bien que la fonction n'existe pas pour un BaseMaterial.


    Code:
    mat = c4d.BaseMaterial(c4d.Mmaterial)
    AttributeError: 'c4d.BaseMaterial' object has no attribute 'GetReflectionLayerCount'

    Donc utilise un Material pour créer ton instance.

    Code:
    mat = c4d.Material(c4d.Mmaterial)
    dans ton deuxième script si tu print ta mat tu aura
    Code:
    <c4d.Material object called 'Mat.1/Mat' with ID 5703 at 0x0000023B68790B50>

  18. #18
    Pilier Avatar de Floc
    Date d'inscription
    novembre 2012
    C4D version
    R15 Studio
    OS
    WindOSX
    Messages
    1 443
    Ah ben oui, ca marche comme ça !
    Grand merci Valkaari.

    Y'as des fois c'est un peux ésotérique le python dans c4d quand même, surtout que j'avais lu sur le forum C4dCafé que c4d.Material etait déprécié !

    Enfin bon, du coup une version qui prend en compte le canal Specular1 de vray et place respectivement specular Color dans layer color et specularReflectionGlossiness dans Layer Mask. Si reflectionGlossiness n'existe pas il essaye specularHighlightGlossiness.
    Bon je sais Layer mask c'est pas la bonne place, mais le but etant (pour moi) de reconvertir vers Redshift, c'est plus facile d'acces pour le recuperer manuellement car le convertisseur redshift ne prend pas en compte la texture rougnhess.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Convertir les texture de Vray vers Rendu Physique ?
    Par darsanha dans le forum Textures
    Réponses: 8
    Dernier message: 27/05/2019, 16h57
  2. Convertir Materiaux VRay vers C4d standard
    Par Floc dans le forum Général Cinema 4D
    Réponses: 1
    Dernier message: 24/05/2019, 08h23
  3. Convertir objets 3ds Max vers Cinema 4d
    Par JohnMcClane dans le forum Plugins
    Réponses: 48
    Dernier message: 21/02/2018, 19h32
  4. passer u scene Standard pour rendu Vray
    Par STK dans le forum Nouveaux membres
    Réponses: 2
    Dernier message: 25/02/2014, 18h16
  5. Méthode pour convertir Claude Bonet/bones vers Skin/Joints ?
    Par shtl dans le forum Character animation
    Réponses: 2
    Dernier message: 02/08/2010, 14h03

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
  •