Anthony Appleyard opened this issue on Nov 20, 2009 · 10 posts
bagginsbill posted Fri, 20 November 2009 at 9:05 AM
I just ran into this myself the other day. The Actors() method returns all actors, despite what the doc says.
So to find all actors, there is no need to loop over figures.
To filter out things from figures, you actually have to do more than check IsBodyPart. DAZ Vickie 4.2, for example, causes the list to return a bunch of things that are not body parts, but other things that are parts of figures. Things like bases, zones, deformers, goalcenterofmass, etc.
The things we actually see in Poser UI for choosing the current actor include body parts and what I call "ordinary props". You can test for IsBodyPart pretty easily, but there is no handy IsOrdinaryProp, such as the list you get in Poser when you choose a Prop.
Then, of course, there are cameras and lights, etc.
So I wrote this function to determine if an actor is an ordinary prop. Seems to work.
def isOrdinaryProp(actor):<br></br>
if actor.IsCamera() or actor.IsLight() or actor.IsBase() or
actor.IsBodyPart() or actor.IsZone() or actor.IsDeformer() or not
itemHasMaterials(actor):<br></br>
return False<br></br>
return True<br></br>
Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)