Friday, July 18, 2014

New project, new technology, more fun !

Hi there,

Let me tell you about a project of mine that I've been brewing in my head for some time... And recently I have made the whole tool chain that allows me to realize it. Now... I could get all technical on you, but instead I'm going to shake my butt.

Do I have your attention now ? I mean, really ?

Okay. So as I was saying, this tool chain allows me to -- hey, you there, will you stop staring at my butt for a minute please ? Thank you.

With this tool chain, I can process a video into animated textures that I upload back into SL and -- what, again ?! Okay, I knew it was a bad idea. I give up, I'll show you what I mean with videos :p

Right now, if someone took this video and somehow turned it into an animated texture, the resulting texture would look like this :

As you can see, it is a mosaic of frames organized so that SL will play them one after the other, from left to right and top to bottom, at a pace fast enough that you have the illusion of movement. If it were uploaded into SL, it would look like this :

Pretty blurry, isn't it ? This is not surprising, the video lasts 30 seconds and was shot at 10 frames per second. This gives 300 frames, decimated down to 256 frames, so that the texture is exactly 16x16 frames (a square is a better choice so we don't have any stretching). Since the maximum size of a texture in SL is 1024x1024, the math is simple : each frame is a small 64x64 thumbnail. Stretched up to fit that square you see in the video above, you can see why it is blurry.

And that's why you don't see many animated pictures in SL, except for controls and the like, stuff that doesn't need a high resolution and a big number of frames at the same time. But you don't see good looking videos unless you use media, which means your viewer connects to an external video (YouTube or whatever), and then all bets are off. You don't have any control over what kind of url your viewer connects to, the url could be potentially malicious. None of this happens with animated textures, since you are only looking at harmless textures inside SL.

If you don't want to give up too much detail nor too much smoothness, you have two options.

The first one is to cut the time frame of the video into several short clips that are to be played in succession. This is all well and good and makes sense, but unfortunately, playing videos is a viewer-side feature, while the switching from one part to the next is the responsibility of the script telling the viewer to play that video. In other words, both will never be synchronized well enough, there would always be a slowdown or a pause between two parts of a video.

The second option, the one I chose, is to cut the screen itself into parts, in 2x2 squares, 3x3, 4x4 etc. That's what my tool chain does and when it's done, it creates a bunch of textures that I just upload back into SL.

Here is how the video looks in 2x2 (that's the exact same AVI file you've seen at the beginning of this post) :

It's much crisper already, but I can do better. Look at it on a 4x4 :

Now we're talking. You can see each piano key for example. And no I am not showing myself on the videos because of a sudden case of inflating ego... but only to show you that this is SL, and the scale of the TV compared to an avatar :p

As you can see, this 30 seconds video, shot at 10 frames per second, looks a lot better on a 4x4 screen (that's 16 textures of 1024x1024 each, instead of only one) than on a regular 1x1 square prim. There are seams between the different squares, but that's due to how SL stretches small textures (since each individual frame is still small), it blurs it, I can't do anything about that. The texture itself is crisp without any blur, I saw to that (you can check in the animated texture above in this post that there is no blur in it).

You must be thinking, where is she going with all this ? Well now that you understand the technical stuff (and that I've shaken my butt enough), maybe you can see the possibilities of such a device.

First of all, the TV itself that you've seen on the videos above is fully working and can display a video on a 1x1, 2x2 or 4x4 screen. It also adapts the dimensions to the specified dimensions of the video or picture (because it can display static pictures as well, even multi-part ones) so that they don't look stretched.

It plays a playlist received from the decoder (which looks exactly like an old VHS tape recorder), which itself receives it from a VHS tape.

And that's where it becomes interesting : the movie producer (Yours Truly for the moment) shoots a video into an AVI file on the hard drive, then processes it through the tool chain I made, then uploads the resulting pictures into SL (automatically named so the SL scripts understand that they are in fact one single video, and the parameters such as the speed, the number of frames and so on). So far so good.

Then they insert the pictures (without changing anything to the names) into a VHS tape, which calculates a playlist out of it. Then, once the tape is inserted into a decoder, the playlist is transferred to the decoder, which in turn dispatches it to all the connected TVs. But the textures are never transferred anywhere nor to anyone, the tape deletes them before they can be taken out. Everything is encrypted so the data are safe.

For now the tool chain I made is pretty difficult to deploy (it uses 4 different tools, all freeware, that need to be installed on the computer), so I will keep it for myself for a moment. Plus I must make sure it works perfectly, it's still a little rough around the edges. But I can at least start the fun part of the project :

Producing erotic SL movies !

Think about it : nowadays we've got a lot of good looking furniture with gorgeous motion-capture animations for solo avatars, couples, threesomes and even more. Those animations can take up to 30 seconds so we need the best resolution in order to render them into SL as animated pictures without looking dull. We've had erotic SL comics, now we'll have erotic SL movies !

I know it sounds silly and all, but isn't every new technology used either for war or for sex first ? Sex and war are what make the world turn !

In all seriousness though, this technology isn't going to be used for eroticism only. It has actually nothing to do with eroticism, it's just a video recorder and player. I will produce eroticism because everything I touch turns to kink, but it will be great for in-world demonstrations, fashion shows and the like, without having to rely on videos on external servers (which, I repeat, always contains a part of risk, whereas with animated textures you're safe, since it stays within SL).

I will be more than happy to share this system once it is mature enough (no pun intended), but it is still a bit early for that. What I will do first is produce a few good videos with friends, for once mixing business and fun because I will create an SL "company" for it (I have yet to decide the name but it will probably be a silly one), sell tapes (for a small price) as well as the TV with its decoder (for a small price too). Then, if all goes well, I will probably hire more actors and actresses to produce more videos, but I don't know how many yet. What I do know is that the processing of such videos will be the bottleneck of the whole production, and with the amount of work that is awaiting me for the next months, I can't afford shooting videos to take more than a fraction of my time. In other words, I'll be part of this business only for a limited amount of time, after which I will probably write an API of some sorts and release the scripts (not as open source since the protocol is encrypted, but free to distribute nonetheless), as well as release the tool chain and explain how to make it work. I do want high resolution videos to be part of SL !

Of course, you know the drill : no ETA, I'm just stating what I am working on. And shaking my butt :p


Friday, July 4, 2014

Update to all RealRestraint products, v1.25

Hi !

As promised, here is the update of all the RealRestraint products up to v1.25, with three main features and many bug fixes and small improvements !

This update is quite big, and some products will require a full replacement, while others will do nicely with a soft update (when you click "UPDATE" on the menu instead of "REPLACE"). A RR Anim HUD is included in the update folder, so you don't need to replace the armbinder to get the new HUD.

The products that just need a soft update and do not need a replacement are :

- Armbinder
- Ballgag
- Scarf blindfold
- Body harness
- Isolation Hood
- Jammer
- Restrained Elegance (collar only)
- Ringgag
- Serious Shackles (collar only)
- Slave crate
- Straps arms
- Tape gag & blindfold
- Vixen leather training set (collar only)

And the products that do require a replacement (because of new animations and some slave scripts being updated) are :

- Police handcuffs
- Police legirons
- Pretty Mummy (all of it, gag and blindfold included due to slave scripts having changed) (*)
- Restrained Elegance (except collar)
- Serious Shackles (except collar)
- Shibari arms
- Shibari legs
- Siren arms
- Siren legs
- Straps legs
- Vixen leather training set (except collar)

Normally, if I did my job correctly, you should not see an "UPDATE" button if your product is part of that second list, but you will necessarily see "REPLACE" since that product has been identified properly. But if you do see an "UPDATE" button and your product is part of that second list, DO NOT PRESS IT. Although the product would still work afterwards, it would not have the new animations, therefore it would not be recognized as a retail product in a future update anymore.

(*) For the Pretty Mummy set, the warning stated above is not entirely true. You can still choose "UPDATE" on it and it will not break future update attempts, because only a slave script has been changed, which makes no difference to the updater. You will not benefit from most of the changes specific to this set, that's all (but you will still benefit from the changes to the core scripts, like the RLV 2.9 features for the blindfold, the new feature on the Anim HUD, the new Vulnerable plugin, etc).

Here is the list of what has changed :

Firstly, following the release of RLV 2.9 and its new camera commands, the restraints now use these new commands to make blindfolds much more enjoyable. Instead of simply moving a prim in front of your view to blind you totally, you will now be blinded "selectively" : the tighter the tie, the smaller the area you can see around you (but you can still see yourself), beyond it will be just black (or mostly opaque for the three lower locks, "Blurry", "Very thin" and "Thin"). More so, the three upper locks ("Medium", "Tight" and "Opaque" will remove the texture of everything around you, so you can only guess what you're touching. In "Opaque', you will really have to hug the walls to actually have a clue where you are going. But it's better than not seeing anything at all, right ? Also the upper locks will turn people into silhouettes, unless they are really really close, to enhance the feeling.

Secondly, a new plugin, called "Vulnerable" is added to all the arms restraints, and only them (not collars, gags, blindfolds or legs restraints). The gist of it is simple : when your arms are bound, you are more vulnerable than when they are not (well, duh), so anyone can do things to you without you being able to resist. Namely, they can strip you by force, make you wear things (but not lock the outfits on you), they can force you onto some furniture, and they can snap a chain to lead you around. But the latter two features will not be available if you are already locked down on a furniture by the keyholder, or leashed by the keyholder, respectively, to avoid breaking their set up. This plugin, as discussed in earlier threads, has two toggles : one for the sub to allow the dom/me to make them vulnerable (they are not by default), the other to actually make the sub vulnerable when tied. That way, the sub is vulnerable only if she and her top wish so.

Thirdly, the ability for anyone who owns a RR anim HUD (that's anyone who wants, since that HUD is copy/mod/transfer, just ask the sub to give you a copy of it) to actually command the animations and poses of the nearest sub around. Even if she is not tied by them ! More so, the top can even "freeze" the sub in place, i.e. make her unable to change her position herself. This simulates the fact that once bound, a sub can be rolled over or held in place forcibly, and she cannot resist. More power to the dom/mes ! Attention, the sub needs to have a RR product v1.25 or above, or it won't let the HUD (even the updated one) control it. The feature takes place in both the Anim HUD and the Anim plugin.

Aside from these new features, there is a number of smaller changes and fixes that I hope will satisfy everyone :

* Autolock :
- changed : Prevent access to the wearer while the plugin is running and there are macros waiting to be executed.
- changed : The countdown is now hidden by default.
- fixed : The first macro run after a reset would execute immediately, due to a faulty timestamp check.
- fixed : Setting a timer on a macro didn't reset any existing timer when executed, resulting in ever-growing timers when stuck in a loop.

* Anim plugin :
- fixed : Possible infinite loop in some rare cases, resulting in the plugin freezing, but not crashing.
- fixed : Struggling animations did not default well, resulting in struggling not moving at all while it should, on some restraints.
- fixed : Prevent the plugin from saying "LABEL : 1/1" when changing the pose while it is unlocked.
- fixed : Do not change the avatar height offset automatically when sitting on something.

* Unlockable :
- fixed : "keys on" was written instead of "loosened"

* All arms restraints :
- added : The new "Vulnerable" plugin for forcing the sub while not having the key (see above).
- added : New groups of poses for the "hands back" locks, with the hands crossed higher behind the back, with a more relaxed look. It's quite sexy.
- changed : The RealRestraint_Base.1 script now uses RLV 2.9 features (only if the user is on a RLV 2.9 or above), which means when forced to Mouselook, the avatar is actually locked into Mouselook, with no way out of it.
- changed : When /77 is off, clicking on the RR HUD (when blocked) will not go to the main menu any longer, nor using "menu" button on the RR Anim HUD. Careful, this means a sub can really find herself stuck now, but this is desirable in some situations.

* All legs restraints :
- added : The 3 legs poses from the Pretty Mummy set (lie straight up, lie up with the back arched, lie down with the knees bent 90°).
- changed : Replaced all the "TTSd" (standing straight in "Tight") animations by the newer, sexier one from the Pretty Mummy set.

* All blindfolds :
- changed : The RealRestraint_Base.2 script now uses RLV 2.9 features (only if the user is on a RLV 2.9 or above), which means no more HUD covering the screen, the blindfolds will now be much more enjoyable !
- changed : When /77 is off, clicking on the RR HUD (when blinded and not on RLV 2.9 yet) will not go to the main menu any longer. Careful, this means a sub can really find herself stuck now, but this is desirable in some situations.

* Siren ropes :
- changed : Make the Style and SirenTex plugins back to "keyholder only", since the sub is not supposed to be able to change the ropes after having been bound. It was made that way as a convenience, but it confused many people and was not very realistic. Plus, the Pretty Mummy set did not work that way anyway, so here is a little consistency across different products.
- changed : The Style plugin won't change the style when the same lock is chosen repeatedly. Once again I had done this that way for convenience, but it was just confusing and sometimes frustrating. Now if you want to change the style of the ropes, just use the Style plugin.

* Armbinder, Ball gag, Scarf blindfold, Shibari ropes, Tape gag & blindfold, Vixen set :
- changed : Make the BinderTex, Color this, Color all, ShibariTex, TapegagTex, TapeblindTex and VixenTex plugins (respectively) back to "keyholder only", since the sub is not supposed to be able to change the restraints after having been bound. It was made that way as a convenience, but it confused many people and was not very realistic. Plus, the Pretty Mummy set did not work that way anyway, so here is a little consistency across different products.

* Pretty Mummy :
- added : Some struggle anims from other ropes sets.
- added : Now the "Cover ears" plugin has an "IM blockable" button, unset by default, to allow the dom/me to block the IMs or not, just like the Isolation Hood. That way the sub will not have her incoming IMs blocked if she doesn't want to.
- added : The Style plugins of the gag and blindfold allow to hide and show the wads of cloth in the mouth and on the eyes respectively. This allows, for example, to wear a ballgag or a disc blindfold under the tape. The effect is quite nice !
- changed : The "Very funny" plugin hides the drawings by default.
- changed : The sounds now depends on the chosen tie, but also on the tie the restraint was on. For example, unlocking the gag from "Loose" (where only the wad of cloth shows in the mouth) will sound like removing the fabric, while unlocking it from "Tight" will sound like removing tape, plastic, latex or cloth.
- changed : Now one can only change the color and opacity of the parts of the set they have control on. For example, if the sub is tied in "mummy" in both the arms and legs, she won't be able to change the color of the body fabric by using the MummyTex plugins on the gag or blindfold.
- changed : The modifiers and costs for the Wriggle plugins of the set have been lowered, to make it easier to switch from standing to lying and back.

* Body Harness :
- added : Now the harness has the Outfit, Wear and Unwear plugins so you can force the sub to wear and unwear clothes, and prevent her from wearing or removing certain outfits. For example, it can be used to lock a catsuit on, since it is locked over it.

* Lockable_Plugins :
- changed : Now each page shows 9 plugins and the favorites are gone. It was confusing and took too much room anyway.

* RealKey plugin :
- changed : Modified to take the Vulnerable plugin into account.

* Touch :
- changed : When prevented from touching one's own attachments, the restraint will not have the "touchme" exception to it, so the sub has to use the /77 channel (if allowed).

* Outfit :
- changed : When accessed from Vulnerable (i.e. the user is not authorized to use this restraint, but Vulnerable gives them limited access), the buttons that control the restrictions ("Unshared", "Wear", "Unwear" etc) are not visible.

* Leash :
- changed : When accessed from Vulnerable (i.e. the user is not authorized to use this restraint, but Vulnerable gives them limited access), if the sub is already leashed by the keyholder, this plugin won't be available to the user.

* Sit :
- changed : When accessed from Vulnerable (i.e. the user is not authorized to use this restraint, but Vulnerable gives them limited access), if the sub is already tied down on a furniture by the keyholder, this plugin won't be available to the user.

There are four updaters in-world. Go to one of these locations, spot the updater (it looks like a black orb with stars, floating above some kind of pedestal), and click on it. The rest will be explained on site.

My little shop :

The Little Shop of Kink :

S&M Castle :

(near my vendor, you need to walk a little)

Roper's Dark Playground :
(not easy to spot, for the time being it is located on the right of the main structure, the black castle)

Have fun !


PS : It is very likely that you will get an error when trying to update your Pretty Mummy set. This error will say something like "Task 'RR Update orb' trying to illegally load script onto task 'Mummy MAIN XXX'". If this happens to you, fret not, this is not your fault but mine : it is all due to the original Request script (the one contained in each of the four main parts of the set) being faulty, it does not open a slot for the updater to modify its contents. Without this opening, the update cannot proceed and you're stuck. To fix this, all you have to do is to delete the Request script from the part you are trying to update and to put the one contained in the folder you get when you click on the updater. Do not delete anything else, of course. Once done, you may try to update again and it will work this time. I'm very sorry for the trouble, and there is nothing I can do to fix this automatically, since such a fix would require an update anyway. It's like locking yourself out of your own house !