Cloning a shader [SOLVED]



  • On 04/03/2015 at 02:00, xxxxxxxx wrote:

    I have a material from which I want to copy a shader to a tag with a texture field.
    So I get the material, get the shader, clone it and copy it to the tag texture field.

    This does not work

        cloneShd = mat1[c4d.MATERIAL_COLOR_SHADER]
        shd = cloneShd.GetClone()
    

    When I do not use a clone it works!

        shd = mat1[c4d.MATERIAL_COLOR_SHADER]
    

    What am I doing wrong here?

    -Pim



  • On 04/03/2015 at 02:13, xxxxxxxx wrote:

    Have you inserted the clone into the tag using BaseList2D.InsertShader()?



  • On 04/03/2015 at 06:14, xxxxxxxx wrote:

    Originally posted by xxxxxxxx

    Have you inserted the clone into the tag using BaseList2D.InsertShader()?

    No, I use it in a VRay tag to set the texture.

    tag[c4d.VRAYLIGHTTAG_AREA_RECT_TEX] = shd
    

    Without the clone it works fine. Using a clone, the texture does not seem to be filled.

    -Pim



  • On 04/03/2015 at 06:34, xxxxxxxx wrote:

    You have to insert it, else it won't have any connection to the document.

      
    shd = mat1[c4d.MATERIAL_COLOR_SHADER].GetClone()   
    tag.InsertShader(shd)   
    tag[c4d.VRAYLIGHTTAG_AREA_RECT_TEX] = shd   
    


  • On 04/03/2015 at 08:27, xxxxxxxx wrote:

    Strange things are happening with this post.

    On my  mobile I received a message that a post was added by Yannick saying:

    "This is a limitation of the python api.
    For such situations the c++ api provides the "AliasTrans" class but the python api does not implement this classand c4datom.getclone() misses the AliasTrans parameter."

    Did I quote you correctly Yannick?

    -Pim



  • On 04/03/2015 at 08:36, xxxxxxxx wrote:

    Originally posted by xxxxxxxx

    You have to insert it, else it won't have any connection to the document.

     
    shd = mat1[c4d.MATERIAL_COLOR_SHADER].GetClone()   
    tag.InsertShader(shd)   
    tag[c4d.VRAYLIGHTTAG_AREA_RECT_TEX] = shd   
    

    Great, it is working now.
    I guess when I use the original it is already inserted (somewhere?) and the clone is still to be inserted.

    -Pim



  • On 04/03/2015 at 08:44, xxxxxxxx wrote:

    Exactly the shader you create a clone of has already been inserted into the material.


Log in to reply