Initializing compositing-tag problem
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/10/2011 at 08:41, xxxxxxxx wrote:
Hey guys, new day, new problem.
So I need to initialize compositing tags, a lot of them. They need to have different states concerning "seen by camera", "seen by reflection", etc. but their object buffers need to be the same.
I started with one object and one tag for testing things:import c4d from c4d import gui #Welcome to the world of Python def main() : object = doc.GetActiveObject(False) tags = object.GetTags() for item in tags: if item.GetType() == c4d.Tcompositing: item[c4d.COMPOSITINGTAG_ENABLECHN0] = True item[c4d.COMPOSITINGTAG_ENABLECHN1] = True item[c4d.COMPOSITINGTAG_ENABLECHN2] = True item[c4d.COMPOSITINGTAG_ENABLECHN3] = True item[c4d.COMPOSITINGTAG_ENABLECHN4] = True item[c4d.COMPOSITINGTAG_ENABLECHN5] = True item[c4d.COMPOSITINGTAG_ENABLECHN6] = True item[c4d.COMPOSITINGTAG_ENABLECHN7] = True item[c4d.COMPOSITINGTAG_ENABLECHN8] = True item[c4d.COMPOSITINGTAG_ENABLECHN9] = True item[c4d.COMPOSITINGTAG_ENABLECHN10] = True item[c4d.COMPOSITINGTAG_ENABLECHN11] = True item[c4d.COMPOSITINGTAG_IDCHN0] = rendertag[c4d.COMPOSITINGTAG_IDCHN0] item[c4d.COMPOSITINGTAG_IDCHN1] = rendertag[c4d.COMPOSITINGTAG_IDCHN1] item[c4d.COMPOSITINGTAG_IDCHN2] = rendertag[c4d.COMPOSITINGTAG_IDCHN2] item[c4d.COMPOSITINGTAG_IDCHN3] = rendertag[c4d.COMPOSITINGTAG_IDCHN3] item[c4d.COMPOSITINGTAG_IDCHN4] = rendertag[c4d.COMPOSITINGTAG_IDCHN4] item[c4d.COMPOSITINGTAG_IDCHN5] = rendertag[c4d.COMPOSITINGTAG_IDCHN5] item[c4d.COMPOSITINGTAG_IDCHN6] = rendertag[c4d.COMPOSITINGTAG_IDCHN6] item[c4d.COMPOSITINGTAG_IDCHN7] = rendertag[c4d.COMPOSITINGTAG_IDCHN7] item[c4d.COMPOSITINGTAG_IDCHN8] = rendertag[c4d.COMPOSITINGTAG_IDCHN8] item[c4d.COMPOSITINGTAG_IDCHN9] = rendertag[c4d.COMPOSITINGTAG_IDCHN9] item[c4d.COMPOSITINGTAG_IDCHN10] = rendertag[c4d.COMPOSITINGTAG_IDCHN10] item[c4d.COMPOSITINGTAG_IDCHN11] = rendertag[c4d.COMPOSITINGTAG_IDCHN11] break c4d.EventAdd() if __name__=='__main__': main()
The strange thing is, that it sometimes works, and sometimes I get this error message:
"TypeError: __setitem__ expected c4d.BaseList2D, not bool" concerning one (not always the same) COMPOSITINGTAG_ENABLECHN -states.
I also tried to allocate with values from other rendertags and there I get something just the other way around "TypeError: __setitem__ expected bool or int, not c4d.BaseList2D"
Would be really glad if someone could explain this behavior to me.
cheers
Phil -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/10/2011 at 12:01, xxxxxxxx wrote:
Hi, where do you define _rendertag _?
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/10/2011 at 12:29, xxxxxxxx wrote:
Hehe, sorry I forgot to update the code.
Nevermind the "rendertag", I have fixed values there like:
item[c4d.COMPOSITINGTAG_IDCHN0] = 1
item[c4d.COMPOSITINGTAG_IDCHN1] = 2I don't have problems with these, just with the enabling of the buffers.
Sorry again for the incorrect code. -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 03/11/2011 at 08:47, xxxxxxxx wrote:
I created a Compositing Tag, and executed the following code
import c4d from c4d import gui #Welcome to the world of Python def main() : object = doc.GetActiveObject() #removed False for R13 tags = object.GetTags() for item in tags: if item.GetType() == c4d.Tcompositing: item[c4d.COMPOSITINGTAG_ENABLECHN0] = True item[c4d.COMPOSITINGTAG_ENABLECHN1] = True item[c4d.COMPOSITINGTAG_ENABLECHN2] = True item[c4d.COMPOSITINGTAG_ENABLECHN3] = True item[c4d.COMPOSITINGTAG_ENABLECHN4] = True item[c4d.COMPOSITINGTAG_ENABLECHN5] = True item[c4d.COMPOSITINGTAG_ENABLECHN6] = True item[c4d.COMPOSITINGTAG_ENABLECHN7] = True item[c4d.COMPOSITINGTAG_ENABLECHN8] = True item[c4d.COMPOSITINGTAG_ENABLECHN9] = True item[c4d.COMPOSITINGTAG_ENABLECHN10] = True item[c4d.COMPOSITINGTAG_ENABLECHN11] = True break c4d.EventAdd() if __name__=='__main__': main()
All buffers of the attached Compositing Tag are enabled. Which version do you use? Have you the latest version of your C4D installation?
Cheers, Seb
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 04/11/2011 at 01:51, xxxxxxxx wrote:
Yep using the latest version 13.029.
I don't get it, if I create new scenes and new tags it seems to work. If I open older scenes it sometimes gives me the error messages.
I've attached a file where it works on one object(Level1) and on the others it doesn't (Levels2.1, 2.2). It works if I activate and then deactivate the buffers.
http://dl.dropbox.com/u/1262854/\_C4D_stuff/composite_tag-test.zipAnyway most times it works now, and I inserted some exceptions, so I have direct feedback If something goes wrong.
Thanks for looking into it, maybe I just have some messed-up scenes (some of them are from R9.5). -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 04/11/2011 at 07:20, xxxxxxxx wrote:
I can reproduce this. When the scene is from version 9.5 it might be that the datatypes at these IDs were updated and so they are not valid anymore.
__setitem__ of BaseList2D checks the datatype before they are set. When they are incompatible this call raises an exception. Actually obj[id] is recommended but in this case check out the following code which (force) overwrites the data of your tag. See following example:
import c4d from c4d import gui #Welcome to the world of Python def main() : object = doc.GetActiveObject() #removed False for R13 tags = object.GetTags() for item in tags: if item.GetType() == c4d.Tcompositing: bc=item.GetDataInstance() bc.SetBool(c4d.COMPOSITINGTAG_ENABLECHN0, True) bc.SetBool(c4d.COMPOSITINGTAG_ENABLECHN1, True) bc.SetBool(c4d.COMPOSITINGTAG_ENABLECHN2, True) bc.SetBool(c4d.COMPOSITINGTAG_ENABLECHN3, True) bc.SetBool(c4d.COMPOSITINGTAG_ENABLECHN4, True) bc.SetBool(c4d.COMPOSITINGTAG_ENABLECHN5, True) bc.SetBool(c4d.COMPOSITINGTAG_ENABLECHN6, True) bc.SetBool(c4d.COMPOSITINGTAG_ENABLECHN7, True) bc.SetBool(c4d.COMPOSITINGTAG_ENABLECHN8, True) bc.SetBool(c4d.COMPOSITINGTAG_ENABLECHN9, True) bc.SetBool(c4d.COMPOSITINGTAG_ENABLECHN10, True) bc.SetBool(c4d.COMPOSITINGTAG_ENABLECHN11, True) break c4d.EventAdd() if __name__=='__main__': main()
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 05/11/2011 at 00:56, xxxxxxxx wrote:
Great that works, thank you very much.