Cannot modify Lens Effects
-
I want to change the lens effets Settings, but I can't. I'm using python.
Why is that? Is there any other way? Can you provide sample code? Thank you very much!code: def main(): lightObj = op.GetObject() print "Assignment before: 'col' = ", lightObj[c4d.LIGHT_LENSEFFECTS_GLOW].streak[0]['col'] lightObj[c4d.LIGHT_LENSEFFECTS_GLOW].streak[0]['col'] = c4d.Vector(1, 0, 0) print "Assignment After: 'col' = ", lightObj[c4d.LIGHT_LENSEFFECTS_GLOW].streak[0]['col']
result: Assignment before: 'col' = Vector(0, 0, 0) Assignment After: 'col' = Vector(0, 0, 0)
-
Hi @sean, first of all, welcome in the plugincafe community.
So the main issue is light[c4d.LIGHT_LENSEFFECTS_GLOW] returns you a copy of the GlowStruct and GlowStruct.streak also return you a copy of the list (unfortunately this can't be changed it's on our implementation for some safeties reason).
So here is how to do it.import c4d def UpdateStreak(light, streakId, color): # Retrieves the copy of the glow struct glowStruct = light[c4d.LIGHT_LENSEFFECTS_GLOW] # Retrieves the copy of the list streakList = glowStruct.streak if streakId >= len(streakList): raise ValueError("Streak Id is bigger than the number of streak.") # Defines the color streakList[streakId]['col'] = c4d.Vector(1, 0, 0) # Defines the modified list of streak glowStruct.streak = streakList # Defines the modified GlowStruct light[c4d.LIGHT_LENSEFFECTS_GLOW] = glowStruct def main(): print "Assignment before: 'col' = ", op[c4d.LIGHT_LENSEFFECTS_GLOW].streak[0]['col'] UpdateStreak(op, 0, c4d.Vector(1, 0, 0)) print "Assignment After: 'col' = ", op[c4d.LIGHT_LENSEFFECTS_GLOW].streak[0]['col'] c4d.EventAdd() # Execute main() if __name__=='__main__': main()
Documentation will be improved.
Finally, few rules, don't worry I've setup correctly your topic since its the first one, but please try to follow them for your next topics.
- Q&A New Functionality.
- How to Post Questions.If you have any question, please let me know.
Cheers,
Maxime. -
@m_adam Thank you. Thank you very much!