1
$\begingroup$

I am working on a modal that paints objects & then drops them using rigid body. I'd like to include support for collections, where the user can store a group of objects as a collection & then randomly choose one of those objects to paint.

how can I access objects in a collection & duplicate the chosen object?

Thanks

$\endgroup$
3
$\begingroup$

Use this code:

import bpy
from random import random

#select your collection by name (in this case the collection named "Collection")
col = bpy.data.collections["Collection"]

objNum = len(col.objects)

#Generate random number 
randomIndex = round(random()*(objNum-1))  
#use the random number to call a random object in the collection
obj = col.objects[randomIndex]

#creat a copy of the object and link it to the collection 
newObj = obj.copy()
col.objects.link(newObj)
$\endgroup$
8
  • 3
    $\begingroup$ You may also want to .copy() the object's .data. $\endgroup$
    – Robert Gützkow
    Sep 17 '19 at 7:51
  • $\begingroup$ You can also use random.randint(0,objNum - 1). $\endgroup$ Sep 17 '19 at 7:51
  • $\begingroup$ Since I am using a hit raycast, can I duplicate all objects & assign locations to equal the hit value? $\endgroup$ Sep 17 '19 at 7:58
  • $\begingroup$ Thanks! I will try it out right now. $\endgroup$ Sep 17 '19 at 7:58
  • $\begingroup$ @Animationsvfx you have to give us a lot more details to understand what you need $\endgroup$
    – Tareyes
    Sep 17 '19 at 8:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.