Getting the Editor Color for a shader [SOLVED]



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

    User Information:
    Cinema 4D Version:   15 
    Platform:      Mac OSX  ; 
    Language(s) :     C++  ;

    ---------
    I was trying to create a shader that would return the editor display color of an object.
    My main shader code is this:

    Vector EditorColorShaderData::Output(BaseShader * chn, ChannelData * cd) {

    Vector the_color=Vector(.5,.5,.5);
       
        if (cd->vd)
            {
                RayObject *op = NULL;

    op= cd->vd->op;
               
                if (op)
                {
                   BaseObject* original=(BaseObject* ) op->link;
                  
                   BaseContainer* bc=original->GetData()
                  
                   if (bc) the_color=bc->GetVector(ID_BASEOBJECT_COLOR)
                }

    }

    return the_color;
    }

    But it is not working. I mean, it always gets me a grey color (the default I set).
    How can I get the color of the editor of an object, at render time, in a shader?



  • On 04/03/2015 at 23:35, xxxxxxxx wrote:

    Sounds like you need BaseObject::GetColorProperties().



  • On 05/03/2015 at 03:12, xxxxxxxx wrote:

    I tried the following code:

      
    BaseObject* original=(BaseObject* ) op->link;   
      
    ObjectColorProperties* prop;   
    original->GetColorProperties(prop);   
      
    the_color=prop->color;   
    

    But it is not working :-(



  • On 05/03/2015 at 04:52, xxxxxxxx wrote:

    Your are passing an uninitialized pointer to GetColorProperties() so it can't fill it with data.
    Try this instead:

      
    ObjectColorProperties colorProps;   
    original->GetColorProperties(&colorProps;);   
    the_color = prop.color;   
    


  • On 05/03/2015 at 05:23, xxxxxxxx wrote:

    YES!!! Finally did it!

    Thank you all :-D



  • On 05/03/2015 at 07:31, xxxxxxxx wrote:

    Hi,

    Thanks for helping Rui. I'll close this thread as solved.


Log in to reply