Is GetParameter(c4d.MPBTYPE_DPI) broken?

  • On 13/02/2018 at 16:24, xxxxxxxx wrote:

    I've been using a script in R18 for sometime now and went to use it today in R19 and ran into an error. When I get to this command, GetParameter(c4d.MPBTYPE_DPI), it returns 0.0 which then throws up an error i my script as that measurement can't be zero.

    I tried it again in R18 and it works fine. Went back to 19 and it fails to return the dpi.

    Is this a known issue?


    Texture = c4d.bitmaps.BaseBitmap()
    width, height = Texture.GetSize()
    mbp = c4d.bitmaps.MultipassBitmap.AllocWrapper(Texture)
    dpi = mbp.GetParameter(c4d.MPBTYPE_DPI)
    width = width/float(dpi)
    height = height/float(dpi)

  • On 15/02/2018 at 02:51, xxxxxxxx wrote:

    Hi del, thanks for writing us.

    Given that MPBTYPE_DPI is marked as private and accessing the data pointed by this ID is not granted to be valid nor officially allowed, in R19 the default value of 72dpi (which I presume was returned in your execution on R18) is no longer returned. It's instead returned 0.0 or the dpi value set by MultipassBitmap::SetParameter(MPBTYPE_DPI).

    Best, Riccardo

  • On 15/02/2018 at 07:45, xxxxxxxx wrote:

    What do you mean that it's marked as private? I'm looking at the SDK and I don't see anything that says not to use it. How do we know if we can or can't use things listed in the SDK?


    Uses a description ID as a key into the container, and retrieves the stored data.
    Parameters:| id  (int) – 
    Parameter ID:

    MPBTYPE_SHOW bool Determines if the layer will be shown in the external render window. (The Cinema 4D renderer modifies this value itself.)
    MPBTYPE_SAVE bool Determines if the layer is saved with the image or not if SAVEBIT_USESELECTEDLAYERS is used.
    MPBTYPE_PERCENT float The blend parameter, between 0.0 and 1.0.
    MPBTYPE_BLENDMODE int The blend mode. (LAYER_NORMAL, LAYER_DISSOLVE etc. from from bplayer.h.)
    MPBTYPE_COLORMODE int The color mode: See COLORMODE.
    MPBTYPE_BITMAPTYPE int The bitmap type. Cannot be set with MultipassBitmap.SetParameter().
    MPBTYPE_NAME str The layer name. Only a PaintLayerBmp or PaintLayerFolder can have a name.
    MPBTYPE_DPI int The resolution in DPI.
    MPBTYPE_USERID int The user ID for the layer. In the renderer this is VPBUFFER_xxx.
    MPBTYPE_USERSUBID int The user sub-ID for the layer. In the renderer this is used for blend channels for instance.
    MPBTYPE_FORCEBLEND int The special mode used to force blend layers.


  • On 15/02/2018 at 09:09, xxxxxxxx wrote:

    Hi del, looks like the you've hit an inconsistency in our Python documentation which will be fixed in the future.

    I apologize for any inconvenience cause so far,  but if you check in the C++ doc (as pointed out in my previous post) you see that it's actually marked as private.

    Best, Riccardo

Log in to reply