accessing bitmap shader

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 04/02/2008 at 01:23, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   10.5 
Platform:   Windows  ;   
Language(s) :     C++  ;

---------
Hi all,

I'm trying to access the color value of a shader, while not in a rendering process. The Plugin should scale multiple objects, based on the gray value of a give shader - like the mograph shader-effektor does.

I created a fake InitRenderStruct and ChannelData and all works fine with a normal shader like noise or gradient, but as soon as i load a bitmap it doesnt give proper values.

> <code>
> InitRenderStruct iStruct;
> iStruct.doc = doc;
> iStruct.docpath = &(doc->GetDocumentPath());
> iStruct.errorlist = NULL;
> iStruct.flags = 0;
> iStruct.fps = doc->GetFps();
> iStruct.matname = NULL;
> iStruct.thread = thread;
> iStruct.time = doc->GetTime();
> iStruct.vd = NULL;
> iStruct.version = GeGetVersionType();
>
> ChannelData cd;
> cd.d = 0;
> cd.off = 0;
> cd.scale = 0;
> cd.n = Vector(0,0,1);
> cd.p = Vector(1,1,0);
> cd.t = doc->GetTime().Get();
> cd.texflag = 0;
> cd.vd = NULL;
>
> shader->InitRender( &iStruct; );
>
> for (Real a=0; a<1; a += .1)
>      for (Real b=0; b<1; b += .1)
>      {
>           cd.p = Vector( a, b, 0);
>
>           // this doesnt work for bitmaps ???
>           Real testValue = shader->Sample(&cd;).x;
>      }
>
> shader->FreeRender();
> </code>

Thanks in advance, Heinrich Löwe