I came across an issue the other day while doodling on a 3D model of a car wheel. The nuts, or bolts if you will, were too small and I found it strange that there was no tool inside LightWave to scale them individually as separate entities as they were inside the same layer (mesh) in Modeler. This would mean I had to manually select each island and scale them one by one. Not a giant task by any means as it was only a few items, but still annoying.
So I went to the NewTek forums and posted a question on whether or not there is a solution for this, either hidden somewhere in LW or some sort of plugin. I got some suggestions on plugins to use and a script to try. They weren’t exactly what I was after, but it gave me a starting point and idea of how to get this functionality working as I wanted it to.
I studied the suggested LScript (LightWave Script), got the grasps of what was going on, analyzing why it wasn’t working, and after a couple of iterations came up with a solution that worked. This was in turn taken by someone else, new to the discussion, and improved to yet another level.
At this point the script was doing what I wanted in terms of scaling each “island” of selected polygons, but in a very try-and-see-what-happens kind of way, as there was no interactive feedback of the end result while changing the scale value. So I added an interactive update to it as well as the next step.
From this it was a couple of lines extra and we had “island-rotation” as well. The only problem here is that it happens on world-coordinate axis, so if your island of selected polygons were on differently slanted angles, it could mess them up. If they were aligned flat on the same plane, they were fine.
Now this LScript is in a stage of adding scaling around each polygon-selection’s average normal (its local “up” axis) and if this works then… woohoo! Anyone with some 1337 LScript and/or 3D math knowledge is welcome to contribute.
I would not have found these solutions as fast if it was not for the community and the general attitude of sharing and contributing.
That’s it for now, check out the forum thread and follow the continued development of this:
http://www.newtek.com/forums/showthread.php?t=100587
Thanks for the great script, this is a problem I’ve run into a lot with mechanical models. As for the rotation axis, I was wondering if it would be possible to get the rotation vectors from the first selected poly in each island? There are some other scripts for LW that deal with rotation or alignment on odd angles that use this method I think.
That’s a good idea. I will have to see how to implement that. I’ll keep it as a feature request, but don’t have too high hopes for it though, my to-do list on other LScripts are growing too 🙂
this is a fantastic script.
thank you so much! :]
This is a terrific script and compliments Point Normal Move quite nicely. Thanks for sharing it! It would be great to see an additional “move to center” option added to it which moves all of the polygons towards (or away from) the center of the selection without scaling them. Sort of like a radial move. But as it stands I’ll be tucking this into my favorite plugins folder. 🙂
Just what i need right now 😀
Thank you ever so much!
… Would it be possible to add a Min/Max value to variate the scaling of each group within a given range?
Great script! Thank you!