What would be the exact criteria for making it produce output that is best suited for your joint extraction? The sorting im doing does greatly improve performance by getting the data radius sorted once very quickly. As for your needs im sure its just a matter of how to adjust the comparisons. Right now the algorithm is geared towards filling the space with as few spheres as possible. Can you maybe explain your pseudo process for what you want to achieve? Yea I get kind of distracted easily by these kinds of things :-) Its good practice for me anyways to try and optimize maya code. Im not even sure why the original developer used pymel. Its way to slow to use in heavy loops. Really the goal is to do as little as possible on the python side and let the C api handle what it can. Small things like setting properties once dont really gain much though obviously.
On Feb 11, 2012, at 8:25 AM, notanymike <notanym...@gmail.com> wrote: > Hi, I think the radius won't be set unless in the actual nParticles- > createNPartciles menu, the box under "points" is checked, I believe. I > had a similar problem as well until I did that. In terms of my slight > fancy to have this work as a skeleton-extraction script, do you think > sorting method you introduced would make it easier to pick the spheres > whose positions would be best for joint placement? > > I'm glad that I'm not the only one who got hooked on this little > script. Congratulations on what you've gotten so far, I didn't know > MFnParticleSystem supported NParticles! > > On Feb 10, 7:48 pm, Justin Israel <justinisr...@gmail.com> wrote: >> Hey, >> >> While I actually am not really familiar with the original problem that this >> trick solves, after seeing your code I got somewhat hooked today trying to >> optimize it further. I thought I would post what I've to be able to have >> some discussion about it. There were a couple things I was confused >> about... But first, here is my pass at further modifying your code: >> >> https://gist.github.com/1795840 >> >> Some changes: >> >> 1. Removed all the remaining pymel >> 2. During the first loop that computes the radius of each point, I >> create an MPoint as well and save all of the data in an object. >> 3. I sort the object by radius size instead of doing that extremely >> repetitive loop to find the biggest sphere each time. Instead I figured we >> could just start with a sorted list and work through it. Am I wrong about >> this approach? Did they need to remain in the original order for some >> reason? I didn't think they did and all we care about is having the >> biggest >> spheres first. >> 4. For the main intensive loop, since we no longer have to do the size >> test, we just go forward over our sorted list, popping off the next >> biggest, and then doing the collision test on the remainder. >> >> I noticed that (at least in my own tests) the original version, yours, and >> mine all did not properly set the radiusPP values on each particle. They >> all end up being 0.2. I can go and change them individually in the scene >> via the component editor, but I have yet to figure out how to get them to >> actually set in the script. So that remains unsolved. >> >> I think my version should be faster the more steps you use and the more >> complex the geometry. When I tested 60 steps on a very large sphere, my >> results were showing a ~30% increase in speed from yours. >> >> Very interested in messing with this :-) >> >> >> >> >> >> >> >> On Fri, Feb 10, 2012 at 12:26 PM, notanymike <notanym...@gmail.com> wrote: >>> Update: >> >>> It turns out the code was written by Djelloul Bekri, and Dorian had >>> just explained how it works on his blog... >> >>> On Feb 10, 9:05 am, notanymike <notanym...@gmail.com> wrote: >>>> I've converted the following code from being all pymel to mostly using >>>> the Maya API, mainly for fun: >> >>>> http://www.fevrierdorian.com/blog/post/2011/03/14/Remplir-un-mesh-de-... >> >>>> My code is available here: >> >>>> http://pastebin.com/3KbhXagZ >> >>>> It's a bit faster...I also attempted to translate the french parts of >>>> the code into English, though I don't speak French, so it's just an >>>> educated guess.... >> >>>> I was hoping to create a "skeletonizer" script, but maybe someone will >>>> find what I've got here useful as is... >> >>> -- >>> view archives:http://groups.google.com/group/python_inside_maya >>> change your subscription settings: >>> http://groups.google.com/group/python_inside_maya/subscribe > > -- > view archives: http://groups.google.com/group/python_inside_maya > change your subscription settings: > http://groups.google.com/group/python_inside_maya/subscribe -- view archives: http://groups.google.com/group/python_inside_maya change your subscription settings: http://groups.google.com/group/python_inside_maya/subscribe