Accessing V-Ray Material Parameters [SOLVED]
-
On 04/01/2017 at 02:22, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 16+
Platform: Mac OSX ;
Language(s) : C++ ;---------
Hi there,I simply cannot get this to work. Please help!
I try to set the color and to exchange Texture links within an Advanced VRay material and its Advanced Bitmap Shader.
This is what I have so far (getting the link to a V-Ray Advanced Material from a Texture-Tag and trying to read out the shader loaded to the Diffuse Layer 1 -> Diffuse Color Texture slot) :BaseTag* TexTag = MyObjekt->GetTag(Ttexture);
if (TexTag)
{
BaseMaterial* Material = ((TextureTag* )TexTag)->GetMaterial(true);
if (Material)
{
if (Material->GetType() == 5703)
{
// Material is of Type V-Ray Advanced Material
GeData Vray_data;
Material->GetParameter(DescID(4100), Vray_data, DESCFLAGS_GET_0); // VRAYMATERIAL_COLOR1_SHADER -> Texture link field in the material
BaseShader *shader = static_cast<BaseShader*>(Vray_data.GetLink(doc, 0));}
}
} -
On 05/01/2017 at 01:42, xxxxxxxx wrote:
Hi Arndt, thanks for writing us.
With reference to your code I'd say it looks fine at a least from a Cinema 4D SDK point of view. So I guess, there must be something happening on the V-Ray implementation side. Unfortunately the MAXON SDK Support team has no information about it, hence I suggest you to directly ask the VRAYforC4D guys (LAUBlab) or somebody in our community can help out.
As side note please I also invite you to make use of the
tag to include your code snippets in order to improve code readability.
Best, Riccardo
-
On 05/01/2017 at 06:11, xxxxxxxx wrote:
Hi Riccardo,
thanks for your reply. I will try to contact LaubLab directly then.
-
On 06/01/2017 at 05:46, xxxxxxxx wrote:
Hi Arndt,
may be try this code instate.
BaseTag* TexTag = Mein Objekt->GetTag(Ttexture); if (TexTag) { BaseMaterial* Material = static_cast<TextureTag*>(TexTag)->GetMaterial(true); if (Material) { if (Material->GetType() == 1020295) { // Material ist ein V-Ray Advanced Material BaseContainer *bc = Material->GetDataInstance(); BaseShader *shader = static_cast<BaseShader*>(bc->GetLink(VRAYMATERIAL_COLOR1_SHADER, doc)); } } }