Friday, August 16, 2013

RestrainedLove Viewer

Hi there,

Ok, third release in a week, and I'm supposed to be in vacation...

But this release fixes invisiprims ! Thanks to Henri Beauchamp's help, a little bit of code that was getting in the way of having invisiprims work was removed, the result was tested, and here you go ! New version of the RLV.

Now, I was wrong on some account : I thought nobody cared about invisiprims but me, because two products of mine needed them to work. That was incorrect, I'm far from being the only person worrying about the loss of support for invisiprims (LL officially dropped supporting them long ago). A lot of people still need them.

It's true, invisiprims are a hack in the first place. They were never supposed to be kept working for long, but for years we had no way to hide parts of the avatar mesh until alpha layers were introduced. Then most people were like "Ok can we stop with invisiprims now ? We can hide parts of the avatar mesh in a more elegant way now, let invisiprims die already ! They're ugly !"

Sure they are ugly, they're a hack. Invisiprims hide not only the avatar mesh behind them but also alpha textures, shininess and shadows. Plus, they render differently in the deferred renderer ("Lighting & Shadows", aka "Advanced Model") and in the forward renderer (the one without shadows). Ugly ! Hacky !

But there are two things invisiprims can do that alpha layers can't (or any other technique for that matter) :

- Hide a part of the avatar mesh by script : When you turn an invisiprim even semi-transparent, it stops hiding the avatar behind it. When you turn it fully opaque again (ok it's invisible, but opaque, follow a little, will ya ?), it hides the avatar behind it again. That's the feature two of my products rely on : the RR Armbinder and the RR Tape gag (plus blindfold). The RR Isolation Hood uses invisiprims too, but they can be replaced by alpha layers, and will. But for the former two, they are invisible while unlocked (and shouldn't hide the avatar's shoulders and lips respectively), and visible while locked (and expected to hide the shoulders and forearms for the armbinder, and lips for the gag).

- Hide only one arm : It's silly, but there is only one texture you can apply on the arms, and this texture will be mirrored on the other arm. This is how the SL avatar is UV-mapped, and this is not going to change any time soon I don't think. This means that an alpha layer (which follows the SL avatar UV map) is stuck with this restriction too. You cannot hide the left arm and not the right arm, for example. Invisiprims, on the other hand (no pun intended) are attachments, you can hide whatever you want without bothering with UV mapping.

Now, I know this post is supposed to be about RLV, but let me digress for a minute. I have made a script that gives the user of a RR armbinder or a RR tape gag a folder when locked. It's not released yet, maybe I will included it in an update, maybe not, and you'll see why I'm undecided if you read on.

The folder can contain anything you can think of and its name begins with a tilde ("~") so it is placed directly in your #RLV folder, and in the case of those two products, it just contains an alpha layer. The folder is different for some locks, for example the armbinder needs to hide only your forearms on locks 2 and 3, and needs to hide the whole arms on locks 4, 5 and 6. It works exactly like the Mousewheel and the Treadmill, which give you a folder containing clamps and/or a harness, depending on the configuration. It won't give you the folder if you already have it, to avoid clogging your inventory with useless stuff. And unlike the Mousewheel and the Treadmill, it doesn't need a RLV relay since you own the product, the commands are direct.

All this is good and well, but there are a few problems with this technique :

- The user needs to be on a RLV. If they aren't, they need to wear the alpha layers manually. It's clumsy.

- The #RLV folder receives sub-folders directly at the root. While this is acceptable and used by many other products in SL, this means this folder needs to be cleaned from time to time.

- The alpha layers take some time to bake. This means you won't see your avatar correctly (lips or shoulders will keep poking through the restraints) until the baking is done, which can take between 10 seconds and... the whole session. Depends.

- It won't work if you are already wearing 5 alpha layers. The limit of how many pieces of clothing of each type you can wear at any time is 5.

- Sometimes SL will just refuse to acknowledge that there is something in the folder you've been given. Sure you'll see the folder under #RLV, but your viewer will believe the folder is empty (or still "Loading...") and the "force wear" command issued by the restraint will fall short. Meaning you will think there is a bug : you've received the folder, the alpha layer is in there, but you're not wearing it. Mariiiiine ! There's a bug !

- Finally, you could be restricted from wearing stuff outside certain folders under your #RLV, and the "~" folders such as the one you've just received are not part of them. This means you receive the folder, the alpha layer is in there, the "force wear" command works... but nothing happens, and you think there is a bug, while everything is working as designed.

So... You can see why I'm currently happy with invisiprims, even though they are hacky and ugly and not supported. But until there is a better option to hide parts of the avatar mesh by script, I'd rather stick with them than relying on the more static option of alpha layers.

Thanks Henri !

You can grab the viewer here :

The MD5 hash for the Windows package is

Have fun !

PS : My fix for invisiprims until now was limited to re-activating a bit of code deactivated by Runitai Linden (the 3D rendering guru at Linden Lab). Henri's fix