How to output BaseBitmap with ShaderData plugin

  • Hello PluginCafe! :)

    I hope the title is self-explanatory.
    Unfortunately, there is almost 0 info about ShaderData plugins on the forum.

    It is worth mentioning that I already figured out how to load textures into Xbitmap from the disk, but this is not exactly what I need.
    Currently, I'm trying to somehow load Pre-Defined Bitmap image Xbitmap (or maybe I have to load it into Xbase) but with no luck.

        def InitRender(self, sh, irs) :
            bmp = (c4d.bitmaps.InitResourceBitmap(c4d.RESOURCEIMAGE_OK))
            self.texture = c4d.BaseShader(c4d.Xbitmap)
            # Not sure but if I'm doing this correctly but probably here I need to somehow load my bmp.
            return c4d.INITRENDERRESULT_OK
        def FreeRender(self, sh) :
            self.texture = None
        def Output(self, sh, cd) :
            res = self.texture.Sample(cd)
            return res

  • Hi Merkvilson, thanks for reaching out us.

    If the final intent is to simply get BaseBitmapinformation to be returned by your shader, rather than sampling a Xbitmap shader I suggest instead to simply query the color information by using BaseBitmap::GetPixel and eventually apply color space transformation.

        def Output(self, sh, cd) :
            x = int(cd.p.x * self.bitmap.GetBw())
            y = int(cd.p.y * self.bitmap.GetBh())
            col = self.bitmap.GetPixel(x, y)
            return c4d.Vector(float(col[0]/256.0), float(col[1]/256.0), float(col[2]/256.0))

    Best, Riccardo

Log in to reply