Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
On 13/12/2014 at 09:42, xxxxxxxx wrote:
Hello,
has anyone made experiences with Bodypaint Bitmaps. If I check the dirty state of a bitmap like:
Tex = bodypaint.PaintTexture.GetSelectedTexture() actlay= Tex.GetActive() if actlay.IsInstanceOf(c4d.OBJECT_PAINTLAYERBMP) == True: bmp = actlay.ToPaintLayerBmp() bmp.GetDirty()
I´ll get this error message:
SystemError: /perforce_buildsystem_osx/c4d_mx_buildsystem_osx/release/16.0/modules/python/source/i_getargs.cpp:1616: bad argument to internal function
I´m not allowed to set a zero flag as it is suggested in the docs: PaintBitmap.GetDirty( flags )
PaintBitmap.GetDirty
Thanks in advance Martin
On 13/12/2014 at 11:19, xxxxxxxx wrote:
You've created a paint layer bitmap. Which doesn't have a GetDirty() method. You'll need to convert it to a BaseBitmap() type using GetPixelCnt() to loop through it and copy the color values to a new BaseBitmap with SetPixelCnt().
Then you should be able to use GetDirty() on it.
-ScottA
On 13/12/2014 at 12:34, xxxxxxxx wrote:
Hello Scott,
yes thanks! I see. But it doesn´t make sense to me as im able to use the other members of the class with bmp = actlay.ToPaintLayerBmp()
I want to avoid recalculating the Bitmaps on every event message in my plugin. I copied the BP layer structure to a treeviewcustomgui and an userarea in my dialogplugin. That´s why I was searching for a fast indicator that the user changed something at the PaintBitmap and I thought GetDirty should be good enough. Do you have an idea to solve this in fast manner.
On 13/12/2014 at 13:19, xxxxxxxx wrote:
No idea. I've never tried using the layer images in other GUI's.
Sorry.
On 13/12/2014 at 15:23, xxxxxxxx wrote:
ok. By the way the treeviewcustom gui on your website was a good resource to begin with.Thanks Martin
On 15/12/2014 at 07:03, xxxxxxxx wrote:
if I try to follow along with Scotts suggestion.
Originally posted by xxxxxxxx You'll need to convert it to a BaseBitmap() type using GetPixelCnt() to loop through it and copy the color values to a new BaseBitmap with SetPixelCnt(). Then you should be able to use GetDirty() on it.
Originally posted by xxxxxxxx
You'll need to convert it to a BaseBitmap() type using GetPixelCnt() to loop through it and copy the color values to a new BaseBitmap with SetPixelCnt().
my dirty status is always 1, as expected. Because I have to initialise the bitmap in the first place or load it from a path to use GetPixelCnt()/SetPixelCnt()
So is my assuption right that the dirty status of a bitmap only reflects the count of how often a bitmap was saved with c4d and therefore it is not possible to detect if a bitmap has changed without saving it to disc?
Could someone please throw light on this issue? Thanks in advance Martin
On 15/12/2014 at 10:45, xxxxxxxx wrote:
the dirty count is increased every time a part of the bitmap is changed. Unfortunately there is a bug in PaintBitmap.GetDirty(). A bug report was filed.
Best wishes, Sebastian
On 15/12/2014 at 13:46, xxxxxxxx wrote:
Hello Sebastian,
thanks for the bug report, I hope we can use it soon.
Best wishes Martin