Resizer Development
Posted on 09. Nov, 2009 by Tenshi Vielle in Digital Life, Gadgets 'N Gear, Scripts

Okay, so you know those shoes you have that you can resize in a single click? Apparently, the script that does this has to multiply itself per prim that’s being resized… so your 255 prim hair with the resizer script has 255 scripts in it. “WHOA, OMG! NO WONDER I’M LAGGING.” As my friend says, “griefer technology.”
Thankfully, there appears to be a solution to this. Nicocci Denfu has developed a script that resizes an entire linkset at once. The script resize time is a bit slower, however, the end result of lack of lag is worth the milisecond-slower resize time.
The documentation:
Rescale
A single-script tool for customizing no-modify attachments through menusWhy one script?
The entire goal of Rescale is to cut down on the amount of scripts that must be worn per attachment, thus preventing lag.
For very primmy objects, for example more than 128 prims, the simple method would be to keep a script in each prim.
This means 128 or more scripts just to resize such an object, which means 2MB or more of simulator memory will be in use (A LOT for one object).
Having several such objects worn or rezzed piles on yet more memory usage.
Not only does this degrade sim performance in general, it is particularly destructive during teleports.
Teleports must transfer each script’s state to another sim, and transferring all those scripts causes a large delay in some cases.
This delay is extremely noticeable, and often painfully so.
Avatars wearing hundreds of scripts can cause a sim to hang for even as much as 10 seconds when they teleport in or out of the sim.
To avoid all of this, Rescale can replace hundreds of resize scripts by having one per whole object rather than one per prim.
The only trade-off when using a single script versus hundreds is an increase in the time necessary to resize all prims at once.
However, resizing is often only done once or twice to fit an object when first purchased, or on occasion.
An increase in rarely needed resize time is far preferable to constant, horrid sim lag and possibly failed teleports.Features
Resize a whole object
Resize a single prim on all axes at once, or in a single dimension
Move individual prims
Restore the whole object to its original state
Restore individual prims to their original state
Coordinate multiple, separate objects to resize or restore all prims simultaneously
One script
Extremely sim-friendly
Free support and updates for lifeLicense and terms of use
Rescale is provided with copy and transfer permissions.
This script is designed to facilitate end-user customization your own products in situations when you need them to be no-modify.
It must be used only for this purpose and may not be resold or redistributed on its own.
You may make the permissions on this script more restrictive than the default within your own products, as necessary.
Only at the time of any installation (whenever ‘Setup’ is chosen from the menu), Rescale verifies your purchase against a database of purchases to ensure its validity.Installing Rescale (guide for content creators)
The following steps will prepare your object for use with Rescale. The script itself will give you these instructions.
1. Rez your object on the ground.
+ If you are setting up coordinated objects, rez all of them.
2. Drop Rescale into the root prim of the object(s).
+ If you are setting up coordinated objects, touch each object and choose ‘Coordinate’ from their menus, then follow steps 3 to 8 for each object.
3. Touch the object(s) and select “Setup” from the menu.
+ If the object is only one prim, no further steps are needed.
4. The object will soon tell you that it should be picked up. Take the object.
5. Rez the new copy that you have taken back onto the ground.
6. Select this new copy, and from the menu bar at the top, select Tools -> Set Scripts to Running in Selection.
7. A panel will appear displaying the progress of the operation. Wait until the script says that it is ready, then close this panel.
8. The object is now ready for customization by future customers.Using Rescale (guide for end users)
To begin using Rescale, click on one of your object’s prims, and a blue dialog menu will appear.
You may first see the these two options: “This Object” and “All Objects”.
This means the creator has made it possible for multiple objects to be resized or restored simultaneously.
Choose “This Object” to only resize or restore the one that has been touched.
Choose “All Objects” to resize or restore all objects that have been set to work together (such as a boot with multiple attachment parts).
If you chose “This Object” (or did not see that option), You will see two options: “Linkset,” and “Touched.”
Choosing “Linkset” will cause all further menu choices to modify the entire object.
This lets you resize the whole object or restore the whole object to its original state.
When resizing all prims in an object with a large number of prims, it may take some time to finish an operation.
Choosing “Touched” will cause all further menu choices to modify only the prim you touched.
This lets you resize or move an individual prim, or restore both the size and position of an individual prim.
When resizing a single prim, you can resize it on any individual axis or change its overall size.
When moving an individual prim, you can move it on any individual axis.
All menus time out after 1 minute without a response, and the object must be touched again to continue.Changelog
1.1.0
Initial release
1.2.0
Added coordinated modeSupport
For all questions, comments, bug reports, and direct support, please contact Nicocci Denfu in world, or email nicocci.denfu@gmail.com.
Additional support, updates, and information can be found in the ‘Niccoci’s Products’ group.
If you want to check it out, this is available on XStreet for $150L, copy and transfer permissions… which basically means for you big-time content creators… it’s free.




Man_In_A_Skirt
Nov 9th, 2009
wow fantastismo!! thanks for sharing
kesseret
Nov 9th, 2009
I really hate resize scripts. With a passion. However, 1 single script resizer is actually making me think about incorporating it into my jewelery- if only to prevent the bit slam my stuff gets if you rez it on ground. My main problem i've had with them in the past is there's no delete option- and I hate riding around with over 200 scripts in my hair/feet.
Autumn Heyse
Nov 9th, 2009
I would like to point out that if this is done the way it probably is, it would take 51 seconds to resize a 255 prim object assuming script time was free on the server.
One thing that is a very common misconception is that scripts create lag. They do take CPU time, however that time is at the lowest priority. This means when the sim is lagging (due to avatar load which is what really causes lag) then scripts will simply take a back seat and not run.
Don't get me wrong, I am all for this. The other items with resizers will kill a sims ability to effectively load important scripts and they will seriously slow down teleports.
The real issue at stake is slow resize time with 1 script running vs fast time with a bunch running and HERES THE IMPORTANT PART the ability to delete those scripts once you are done resizing. I choose fast with delete. No scripts is always best.
Innula_Zenovka
Nov 10th, 2009
Autumn, I assume you're calculating 51 seconds from the 0.2 second delay per prim you get with llSetLinkPrimitiveParams. But that wouldn't work for a resizer because you need to read the position and size of each prim.
I suspect — and I will be happy to be proved wrong — that stages 1 to 8 are about using llSetRemoteScriptAccessPin so that the end user can send running, self-deleting, scripts through the linkset with llRemoteLoadScriptPin when they're actually trying to resize it.
Which is all very well, but means it would take end users 3 seconds per prim, or 12 minutes, 45 seconds to resize a 255 prim object.
The best way to do this, to my mind, if you've got to use resizer scripts, is to supply the objects to customers with a script in each prim that you can delete when you've finished (or that deletes itself after the object's been rezzed for an hour or so).
Customers can always rez a new copy of the object if they to resize it again, or, if it's no copy, you can leave a resizer in the root prim and have them propagate using the steps outlined in the article.
The other real issue with resizer scripts is that people who don't know any better compile the damn things in mono, thus causing the problems outlined in jira issues SVC-4196 and SVC-3895 (basically freezing the whole sim for 30 seconds or so).
Autumn Heyse
Nov 10th, 2009
llSetLinkPrimitiveParams works fine. I have a working script I wrote that does this flawlessly. Its all based on percentages of the original size of the prim. Its the fastest way and the only way that I know of to do it with a single script in the root prim. Scripts that self delete would not work in worn items as the end user would not "rez a copy", they would wear the original. Once the scripts are gone it would be broken, unless like you said they replicate. But that is not what is being advertised here.
If I were ever to distribute this I would require it in the license agreement that the prims be mod. 1, so if the lab broke it the item would still be usable and 2, no mod prims suck plain and simple and there is NO reason to sell something no mod anymore. If someone wants to steal your design, they will, no matter what you do.
Sharron Schuman
Nov 9th, 2009
I hate, hate, hate resize scripts.
Monolock
Nov 9th, 2009
And i hate people who apply resize scripts in their products. THEY SUCK. One or 255, THEY SUCK. And there is no whatsoever freaking reason why to turn hair or clothes to no-mod.
Luisa
Nov 20th, 2009
“no whatsoever freaking reason why to turn hair or clothes to no-mo”
sadly you are right. it’s not preventing theft at all, nowadays. it has been a protection, but that’s history now.
so what has been left is some sort of inconvenience for any and every customer. the promise of an permission system permitting calculateable business for inworld content creation has failed us.
AfraidOfLLSpies
Nov 10th, 2009
Been using tnresizer by Tatiana Niven for ages. One script per attachment. Uses a process during setup to create a notecard with the prim data.
Whoever makes an open source low memory low script time one script resizer wins. Someone will. Just a matter of time.
Eff Mons
Nov 10th, 2009
This is why I hate the resize script, or at least hate any resize script that doesn't have a "descript" option.
3blahs1whatever
Nov 10th, 2009
People who put their hair "no mod" and think a resize script suffices, are crazy. I would NEVER buy hair no mod, resize script or not. Ridiculous
Man_In_A_Skirt
Nov 10th, 2009
Agreed! If you don't want to make mod hair, then don't make hair!
Man_In_A_Skirt
Nov 10th, 2009
Resize scripts with delete button are the best. There's no point keeping the resizing script inside the object.
AfraidOfLLSpies
Nov 10th, 2009
After reading those instructions I have to wonder about memory usage. When avatar script memory limits are rolled out then things that retain a lot of stuff in memory are going to become useless. And those gown "sitter scripts" never managed to retain their data and constantly had to be "retrained". What happens to this when the script resets for whatever reason?
It isn't the price of the tool that bugs me. It is the potential losses from having to replace everything that went out with the script in it.
Oh I guess that is why we need to leave the stuff mod so customers can delete the memory using scripts rofl. ok.
Miss Jay
Nov 10th, 2009
using the delete option should solved everything. duur
Lauren Weyland
Nov 10th, 2009
If you can't mod hair it's not worth buying. I often snip mine a bit different etc.
Jack Abraham
Nov 16th, 2009
I like this process better.
1. Set object to mod.
2. Receive goodwill from customers, sim owners. Do not get burned when script limits come into play.
3. Profit!
Luisa
Nov 20th, 2009
“milisecond-slower resize time” is technically incorrect, it’s about 200 milliseconds per prim inside the linkset, which is about 5 Prims per second or 255/5 = 51 seconds for the biggest possible linkset. Technical restriction. Actually you could speed it up by harnessing two resizer scripts inside rootprim.
and during installation, you still need resizers inside any prim. but this technology is the same I do use on jewellery, and probably best practise to go. Further in development.