Assign Vertex Color Map to shader [SOLVED]
-
On 21/05/2018 at 08:08, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 18+
Platform: Windows ; Mac ;
Language(s) : C++ ;---------
Hi,I want to assign a vertex color tag to a vertex map shader.
Here is the code I am using:
// allocate the Vertex Map shader AutoAlloc<BaseShader> vertexMapShader(Xvertexmap); if (!vertexMapShader) return false; // retrieve the BaseContainer of the Vertex Map shader BaseContainer* vertexMapShaderBC = vertexMapShader->GetDataInstance(); if (!vertexMapShaderBC) return false; // The Vertex Color tag is vctag GeData gd; vertexMapShaderBC->GetParameter(GV_VERTEXCOLORMAP_INPUT_TAG, gd); // ---->this is where the crash happens BaseLink *myLink = gd.GetBaseLink(); myLink->SetLink(vctag);
Any idea why it does not work?
-
On 22/05/2018 at 05:32, xxxxxxxx wrote:
Hi Salozo,
First of all, I'm not sure to understand, from where you get the ID GV_VERTEXCOLORMAP_INPUT_TAG, to know an ID you can simply drag and drop the parameter in the console.
Another thing is actually you should use Set/GetParameter in the C4DAtom(the shader in your case) itself and not on the BaseCcontainer.
In other hands here an example how to set up a link.// allocate the Vertex Map shader AutoAlloc<BaseShader> vertexMapShader(Xvertexmap); if (!vertexMapShader) return false; // allocate the Vertex Map AutoAlloc<BaseTag> vertexMap(Tvertexcolor); if (!vertexMap) return false; // allocate the Vertex Map AutoAlloc<BaseLink> link; if (!link) return false; link->SetLink(vertexMap.Release()); // I use release, since vertexMap is an AutoAlloc object, so you need to release it in order to let the ownership of the vertexMap I created to c4d. vertexMapShader->SetParameter(SLA_DIRTY_VMAP_OBJECT, GeData(link), DESCFLAGS_SET_0);
Hope it helps, if you have any question please do not hesitate!
Cheers,
Maxime -
On 22/05/2018 at 07:59, xxxxxxxx wrote:
Thank you for your help Maxime. It works as it should now.