Unique Object Identifier
-
Hi, I searched around for an answer on this but I haven't found anything solid on how to identify an object based on a unique ID of any kind in python. Isn't there something uniquely consistent with each object we can refer to? I need something I can write out to a file and read back later to reference a specific object.
Thank you
-
Hi @Motion4D,
thank you for reaching out to us. The answer to your question is
C4DAtom.FindUniqueID
. The topic has been discussed just yesterday here and also a couple of times in the past; you might find this thread informative. I also attached a small example, please feel free to come back with any remaining questions.Happy holidays,
Ferdinandimport c4d def main(): """Entry point. """ if op is None: raise RuntimeError("Please select an object") # Get the unique ID attached by MAxon to each node. See linked threads # for details. uuid = op.FindUniqueID(c4d.MAXON_CREATOR_ID) print ("node:", op) print ("uuid:", uuid) print ("raw uuid:", bytes(uuid)) if __name__=='__main__': main()
node: <c4d.BaseObject object called Cube/Cube with ID 5159 at 2488003778176> uuid: <memory at 0x000002434A4CD198> raw uuid: b',\xf0]w\xccG\x14\x0c\xfd\x8c\xfd.\xb8U\x00\x00' >>>
-
@zipit Hi Ferdinand, yes this is exactly what I was looking for. Sorry, I must have missed the other post. Thanks so much for clarifying with the example code:)
-
@zipit Hi Ferdinand, it seems I spoke too soon. At first, it seems that the ID stays consistent. But I noticed when you go into the plugin manager and reload a plugin all the IDs change again:(
It's possible this won't be an issue for users who aren't reloading plugins but there also may be other things that change the ID of all objects.
Is this a bug perhaps or is there really no guarantee that an ID can stay consistent with an object?Thanks!
Adam
-
Hi @Motion4D,
indeed, Cinema does reestablish the scene graph when you hit
Reload Python Plugins
. However, this is more of an odd outlier, for more details, have a look at this thread I did link to in my first posting, which clarifies a bit the guarantees with whichMAXON_CREATOR_ID
comes. There has also been a recent thread where we did talk about the shortcomings of unique IDs in regard to caches.Cheers,
Ferdinand -
@zipit thanks for clarifying. Hopefully, there will be something more predictable for IDs in the future.
-
Hi @Motion4D,
I am not quite sure if there will be anything in the pipeline soon, because the limitations of IDs and markers are more of principal nature due to Cinema's heavily procedural architecture; i.e., not really something that can be "fixed". If you have any particular feature in mind, I would ask you to make a separate post with a dedicated feature request.
We however already did identify the whole "identifying and object"-thing a few weeks ago as something that is probably not explained well enough at the moment and added it to our to-do-list. There are no guarantees on when this will come though
Cheers,
Ferdinand