Tuesday, December 31, 2013

Scams? Phishing? I say, no thanks!

This article was published in Fusion Magazine, December 2013. Click for the magazine!

Greetings everybody! Christmas is upon us, and with such a big celebration come many purchases. Sadly, this also means that there will be people in the shadows trying to take our money without our consent. Any of us may be affected by this, so my goal for this issue is to provide some basic guidelines to help you protect yourself from the many thieves that exist online, and particularly, in the world of Second Life®.

These guidelines are based on two that our mothers always told us:

  • If something looks too good to be true, then it probably is
  • Do not accept candy from strangers

The last guideline translates this way to SL: If a stranger sends an object to you, delete it immediately. Do not rez it. Do not wear/add (attach) it. Simply, delete it. Don't worry about just receiving it: that alone will not hurt you nor will it compromise your account. Just delete it, and you will be safe. We'll expand this information in another issue.

What about "If something looks too good to be true..."?

This is how, sadly, many accounts have been stolen from their users: they offered a link that reads somehow similar to a SL Marketplace link. After logging in with our password, the thieves have our login information. They use this to log into the SL website, change our password, take all of our money, and use the stolen account to continue spreading the links to the groups the victim was into.

A sure way to know that we are going to a legitimate SL web page is to type the address ourselves in the browser address bar.

http://www.secondlife.com/

This will never fail us. We'll talk in the future about how we can know that an address is safe.

I don't want to close this issue without mentioning a recent scam. If you're receiving Buy Cheapest Linden Dollars offers, report the avatar immediately. "If something looks too good to be true..." plus, LL changed the Terms of Service (TOS) this year in this respect: only third parties explicitly listed by LL in the official wiki page, are allowed to sell L$ to you. Anybody else that is not listed in that page, is someone you should not trust.

The official wiki link is:

http://wiki.secondlife.com/wiki/Linden_Lab_Official:Linden_Dollar_(L$)_Authorized_Reseller_Program

With all this information, I hope your purchases will be safe. Have fun, and enjoy your SL.

Saturday, December 28, 2013

Today is my birthday, in that world we call "real". I'm now 37 years old.

However, I would prefer if you don't say "happy birthday." Not yet. I've come to hate my birthday over the years. Intensely. I didn't feel there was anything to celebrate. My world had made clear that it would be a better place if I wasn't in it, and I had no other world to go to. My birthday wasn't but a reminder. Adding to the irony, I was born on the day when my country, Spain, celebrates its own "April Fools" sort of day. Everything in my life was a big joke, from its very start.

Perhaps I had true reasons to feel hurt and despair. Perhaps not. Perhaps I was somewhere in between my pain being justified, or it not being justified at all. In any case, there was something that remained true: I could not realize there was a world for me as long as I continued dwelling in feeling deeply hurt.


When I joined SL, on April 16th, 2009, I was 32 years old, and I didn't know I was sick. I was indeed naive enough to think that I was starting to recover from all the physical tiredness that had hit me like a truck three years before, after happenings that do not matter here. If anything, my first months in SL were a reflection of how lost I was feeling in my own life. I came to SL because building and creating particle effects were appealing to me, especially after someone in RL showed me the possibilities. It seemed like the perfect kind of distraction that my mind needed. But I was lost. I rezzed prims and I didn't know what to do with them. My mind was a huge black screen.

At this point in my writing, I also feel lost. It's not that I don't know what to say next. I have been writing and rewriting, noticing how something I learned after being in SL for a while, was more ingrained in me than I thought.

I wanted to explain why I had this intense dislike for my birthday over the years. I also wanted to explain why I felt lost in both worlds, and the course of events that made things change. But every road I took was leading me to give away too much of my past, of my life, my pain. Something I have learned is that I own the words I do not say. I have also learned since I'm on the Internet, but even more since I am in SL, that there are many predators out there. Predators are quick in pointing fingers at someone else while deciding their next victim, or draining their current victim's soul. Predators also often cover themselves in a victim costume.

I don't trust easily, if at all. You don't need to know the reasons. Likely, you would not believe my story, so if I told it, that would only serve predators and their dark purposes. I also don't want that you know about my pain. My pain is mine. It belongs to me. I do not consent that predators take on my pain for a cause they can use to manipulate others, or myself. I prefer to tell you a story of hope instead.

In the middle of feeling over the edge, wounded and wary of everybody, perfecting my own master plan that was leading me to my self destruction (body and mind), somebody slipped through all my defenses. I still don't know how he made it, but he did. One student, in SL, that was already on my radar because of his kindness and his sense of humor, asked me out to dance one night. I don't know why I took a picture then, but now I'm glad I did, because I keep a memory of that moment.

We started dating as summer started in 2011. We did as any other couple of lovers does. Talking, dancing, exploring places and exploring ourselves. Then Christmas arrived and I broke over my birthday. Again. But he didn't let me fall into darkness. By that time, he was already an important part of my life. Separated by an ocean, closer than anybody calling themselves "friend" in my "real world" could ever be.

His concern was honest, and part of a "wake up call" that I so much needed. As 2012 went by, I worked more and more in my SL store, which meant a sense of feeling useful to a community and to myself, and so I began stopping the strong desire of self destruction. Writing scripts and books for designers keeps your mind busy with much more pleasant thoughts. Or at least, with other than destructive thoughts.

It may seem irrelevant, but in order to stop with your own self destruction, you have to first really want it to stop. This doesn't mean that once you reach to this realization, everything will magically be fixed. Oh, no. A long path of repairing everything that's broken, if possible, waits for you. You will have to reverse all the habits that were being harmful to your health, physically and mentally, not to mention all the obligations that were neglected for a long time. It looks like so much to do, that you will never be able to achieve it.

What to do?

Start anywhere. It doesn't matter where, when there's so much to fix. It matters that you will be making a step in a direction that will help you. Clean a room. Go see a doctor. Dig out one square meter of weeds. Today you sleep eight hours instead of four. Just pick one so you start to do something.

Yes, everything seems too big and unattainable right now. Today you go to the bank to pay some back taxes, and you are told that you also have to pay for some more things. Today you clean a room and in the way find out that something is broken. You start taking iron because of the anemia, and the next day you will not notice a difference. You're still weak. The car needs repairs. A machine breaks and you discover a mess because of the water. A spider bites your foot while cleaning weeds, and it makes it so swollen that you can't even walk. It seems that your goal will never be within your grasp, and that you've just opened a can of worms that grows worse each day.

However, if you don't give up, you will notice something interesting: your strength is slowly coming back, life is always tough but you have less things to take care of. You even begin having some time for entertainment.

I started taking care of myself by mid September, 2012. My first goal was my sleep. Nowadays, unless we're talking about a critical emergency (hospital, evacuation...), nothing is going to take from me my seven-eight daily hours of sleep. Nothing is more important than that. If I have one less item to release, so be it. If I have to go shopping for food in the evening rather than in the morning, that's what will happen. But my sleep is sacred. If I don't have rest, I am good for nothing, and "good for nothing" defeats the fight against self destruction.

I haven't finished fixing what there is to fix. I broke so much that I now have to continue working hard. My partner in SL is a constant support. We live a quiet life that helps me in my personal struggle. Visiting places, shopping, and then talking a lot. I've never felt attacked by him and up to this date, I can't recall of a single disagreement that finished in saying things that were later regretted. We've barely needed to say "I'm sorry."

As peace started to enter in my life, I felt I could start to open a bit to the world. SL-related, the first thing I did was to participate in the SL feeds. I started following some people that I had already been reading for a long time in the forums. There's a radical sector that considers a few of these people I follow, no less than Satan's spawn. My being friendly to them, of course, turned me into another of those Satan's spawn. That didn't came as a surprise to me. I've been observing radicals for long enough to know what they would do, and at that point I was strong enough to just ignore their hate.

For somebody like me, always curious about why people do, think and behave the way they do, that extremely narrow view of the world is amusing, up to some extent. It's like observing a three year old, starting to learn the world, needing to have clear and very simplified "right" and "wrong" lines for their toddler minds. The sad part is that this behavior is observed in alleged adults. Their huge corpus of prejudices don't let them realize that the people they slander are often smart, fun, and with an uncomfortable habit of making you think about what you don't want to think: your own preconceptions. So the people they slander could actually teach them a lot about life. But they prefer instead to cover their ears, sing "lalalalala I can't hear you," and are quick in screaming that you are what your friends are. Although I find that simplistic view of life quite laughable, one thing is for sure: I prefer to be surrounded by smart and fun people, than by radicals full of anger and hate. If something has to permeate my life from people that surround me, I prefer it to be a smile and a brain. In the end, I'm trying to run away from self destruction, not return back to it.

Participating in the SL feeds brought very good things to my life. One of those things was to know a few people that were also fighting their own personal struggles, not making an "oh poor me" public spectacle of it, but rather, making others smile despite their own pain. In a way, they helped me, and I cannot thank them enough for the example they set.

Participating in the SL feeds also brought something back to my life. I have always liked, wanted, to write. One of my dreams is that some day I will write a book, but not a technical one. Perhaps essays, or perhaps a novel. Perhaps both. Writing was interrupted by... it doesn't matter what, and now thanks to SL I again have a chance, plus a medium that inspires me through its landscapes and people. SL also gave me the ability to convey some feelings through images, something that I never thought I could do, and the SL feed lets me share all that in a way that is safe to me.


Yes, despite my introverted and reserved nature, I'm also human, and I also want to share what I feel is important to me. It's just, whiners, "victims" and attention whores occupy so much space with their laments and their "it's all about me!" screams... How could I dare ask for a chance to share, for my own space?

My partner had the answer to that: You do not ask for a chance to share. You stop being shy and put yourself out there.

That is not easy for me to do. This may sound stupid, but I often feel like the most uninteresting, dull person in the world. Why would anybody want to read me? Still, I pushed myself. If I was really uninteresting and dull, that would be for everybody else to decide.

And so, with my "second" and "real" lives intertwined, I realize that as my birthday arrives and the year is about to come to an end...

I have saved a garden that was about to die. Nature is grateful and when I now look around, I see no more death, but green and flowers instead. I have started to fix "bureaucracy issues" that were delayed for years. I eat better. I sleep good. I survive in RL thanks to my work in SL, while the economic situation in my country is still critical. I have learned modelling in 3D (something I wanted to do since I was 17)... and I am even teaching about it! I'm writing again, sharing it, no longer thinking that I am uninteresting and dull. I have lost 20 kilo since summer (about 44 pounds), which is making me feel very good on several levels, and is helping me feel stronger. I have made the first step in rebuilding some personal relationships that were broken, and let others approach me again. I have realized that it is not true that everybody wants me dead. Some people even love me. And I also begin to like myself, to smile at the woman that looks at me every morning in the mirror.

True, there is a lot yet to fix, and other things will break along the way. But for the first time in my life, I feel like celebrating that I am alive. I don't want to dwell in the pain. I want to feel that living is worth it. Join me, if you so wish.

Happy birthday, me!

IMAGE: Happy birthday!, in Flickr

Also published in Connecting 365 SL Lives

Friday, December 20, 2013

Creator Resource - Creating HUDs: The Builders Part

This tutorial is currently available at Creator Resource: Creating HUDs, the builders part



What is a HUD? What is the purpose? How do I create a HUD?
I'm a builder and want to create a HUD so a scripter works the code, what should I take into account?

Creating HUDs is usually a team work between builders and scripters. Come join this class to have answers for the questions above and learn, as a builder, what to take into account to design your HUD the best way for the scripting it may require.


Table of contents




WHAT IS A HUD?


"HUD" stands for "Heads Up Display", that's it, an object that gets attached to one from a few special points in our viewer and shows in our window, but it's not seen inworld by the rest of avatars around. They provide us with an interface to control many things we can think of: our avatar (like animation overriders), objects around, nowadays with the new viewers they can even display media on them.

We sure have used lots of HUDs, being the most popular uses:

  • Animation overrides
  • Multi-tools
  • RP and combat systems
  • Books, magazines...
  • Texture/Color/etc change for hair, shoes...

and many more.

To use them is very simple: we just have to attach them to any of the EIGHT special HUD points that SL allows us, and begin clicking :o)

The available points for HUDs are:

  • top-left
  • top
  • top-right
  • bottom-left
  • bottom
  • bottom-right
  • center
  • center2

There are no left and no right attachment points, as of 2013-12-20.

However, nowadays we can use the "Add" function instead of "Wear", so we may have several HUD attachments in the same HUD attachment point, if the HUDs are designed to be placed in the same HUD slot.


FIRST COMMON QUESTIONS ABOUT HUD OBJECTS


One of the first questions that may pop into our minds is, Is there any restriction about what we can attach to a HUD?

And the answer is: NO.

We can attach even a castle if we feel in the mood.

Of course, the castles being as big as they are, they'll cover all the screen... But can we attach a big castle to the HUD? Yes, we can do it.

So yes, as long as what we want to attach is an object, there are no limits on what we can attach to HUD: From a jewelry nano bead to any other object, no matter the size or the contents (that this is useful or not, is a different matter.)

There are a few properties that HUD objects won't show: we'll discuss them later in the corresponding section of this class.

Do HUDs affect to lag in any specific manner?

No: If our HUD contains lots of 1024x1024 textures that change often, is heavily scripted, has many listeners, sensors, timers... It will be a laggy object, but if textures are kept to small resolution, the scripting is wise... We should not expect more lag from a HUD object than from the same object inworld.

Even more: since a HUD does not exist inworld, the server does not have to check about the possible collisions against it. So common sense applies here: design the textures (sizes) and the scripting wisely, and your HUD won't be a problem.


HOW DO I BUILD A HUD? ARE THERE ANY RESTRICTIONS?


One could wonder, have HUD objects any specific building requirement?

And the answer is NO: If you know how to build, you know how to build a HUD, as we're going to see now.

The only difference is this: If, after building our HUD, we need to add a new prim, or unlink a prim to delete it... That forces us to REZ the HUD inworld, add/unlink the prim, take it again back to inventory, and then attach.

Let's go over building one by doing a small practice.

So please, rez now a box.

In your "General" tab, name it, for example, "Test Box for HUD":


Texture the box with the blank texture.
Then make a SHIFT COPY by following the Y axis (the green arrow.)

Now for this new copy, select another color than white, just to distinguish them. I will tint mine dark red. Then, make this red one smaller, say, a 0.25 cube (it doesn't matter as long as it's smaller.)

Move the red inside the white like this, and link them:


Just this, it can be a HUD :-)

NOTE: a HUD can be even just *one* prim. One prim that has a very complicated texture with many options drawn could be a HUD :-)

The only limit for the number of prims a HUD can be made of are the SAME limits we have for the objects inworld: 256 linked primitives per object. That's the max of prims we can link, no matter the object is a HUD or not (Check here for the reference: http://wiki.secondlife.com/wiki/Limits#Building)

Ok, so do we have our "Test Box for HUD" object linked?

Take it back to inventory and look for it in the "Objects" system folder.

Now, right click over your object in inventory: this will open a menu.

Look for the "Attach To HUD" submenu and move your mouse over it.

When hovering on it, we see that the viewer offers us the EIGHT attachment points mentioned before, to select one.


Now, select CENTER for this one.
And yes, it's going to cover a lot of the screen :-)


You should have now something very similar to what the picture shows. The red box can be pointing to the same side, or the opposite. It's fine whichever side, don't worry about that :-)

Now that we have this huge thing on... Since it's possible that some of you don't know how to move a HUD object, let's learn that first.

Right click over the HUD object.
Select "Edit".
You see now that arrows appear in the center of the object, same way as when we edit objects inworld, right?


So moving the object in the HUD is done the same way we move an object inworld: we can drag the arrows and the object will move along that direction.

Notice this, though: The HUD is not 3D. The objects attached are 3D, yes, but what we see is a 2D projection of them. Still, we can move objects and ROTATE them in the HUD.

Now, let me explain something... (little side note)

Right after attaching the box in our HUD, the first we've all seen is the attack of a giant box in our HUDs. And the box was simply 0.5 meters inworld!

This leads to an obvious question: What's the size of the HUD display area?

Good and bad news: We can know only the vertical visible size of the HUD. There's no way to know the measure of the horizontal size.

The vertical size corresponds with the Z axis.
Including the menu bars of our SL window and the mottom menu options, the height of our HUD area is ALWAYS ONE METER, no matter the resolution of your screen/SL window size.

This is handy to know if, for example, you have to create a HUD that hides when the avatar goes into mouselook. Your script could change the Z of the HUD to, say, two meters, and the HUD would not be visible by the avatar.

So we have an horizontal, undefined width, and it moves along the Y axis. Then, positive values of Y are when we move from the center of our screen, which always has coordinates (0,0), to the left.

Then, we have the height of the visible area, which is always one meter, and it moves with the Z axis.

And what happens to X?

X measures how "sunk" is the HUD in the screen (although we'll see it always the same size.)

Changes in X may help us to the following: Design a HUD with several panels, they having different X. We know, now, that the ones with a lesser X will be hidden by the ones with a greater X, so a scripter could use this to swap panels.


Now, this is advice that comes from experience: Don't make your buttons to be thin :-)

As you can see in your test HUD now, we only see a 2D projection of our object, no matter how thick are the buttons. If we try now to resize the HUD (how? In a moment,) if our buttons were too thin, we'll quickly stumble against the 0.01 minimal size that SL allows for our prims, and we could not shrink our HUD much.

And since we know, now, that one meter inworld will fill all the vertical part of the screen, it's obvious that we're needing to shrink our HUDs quite a bit.

So let me quickly show an example here of what I mean with what we should NOT do when designing a HUD. I'm going to rez one HUD object I created. (Almost 2014 note: This HUD dates from 2010 =))

Please, zoom around.
Do you see that my buttons are NOT thin, but quite thick indeed?


(the buttons are even thicker... sunk in the main, black prim)

I don't care about the size that, anyway, won't be shown in the screen:


So why make them thin, and find myself stuck soon in a 0.01 problem?
I make them big.

Is there any recommended size to start with? I usually begin building at one meter (which will cover the whole vertical size,) then shrink once I attach in the HUD. Experience will tell you what works best for you.


I've said that the HUD screen area is one meter vertical, undefined, horizontal. But we have know, before editing things, that the total HUD area is quite bigger in fact. If we lose a sock, we may explore that area :o)

Let me explain what I mean.

Please, right click again in your HUD object, select edit.
And now, use the mouse wheel to zoom out.

NOTE: If you don't have mousewheel, you'll achieve the same by holding pressed ALT key, click with the left mouse button, and move the mouse backward.

Do you all see, as here, that it appears a white frame, and there's more space around?


That white frame delimits always the screen area. But yes, we can move objects further (and thus, make them disappear from our sight.)

When one loses a HUD, has to do this to get to the total HUD area: edit something else in the HUD so we can zoom out. Then find your object, click it, and move it back within the white area. (Unfortunately, what we can't do is zoom in MORE than the own HUD screen area.)

So, when we lose a sock, now we know how to look for it, yes? :o) (or when we WANT to lose a sock, where to send it)

It could be possible that we have no attached HUDs in the visible area, and we want to know if there's something out of the visible area. There's no way to zoom in the HUD unless we're editing something in the HUD, so this is a simple solution:

  • Rez a box
  • Take it
  • Attach it to HUD: Center

And now we for sure have something in the visible area to edit, to be able to zoom out in the HUD total area. Once we've found what we've lost, we can detach the box.

If you are in a place where you cannot rez, then you can try this (which might be quicker in many cases):

Check the "Worn Items" tab from the inventory window, and look for your HUD item there. If you don't find it there, then have a look at your "Marketplace" tab. Worn items from that tab do not show (yet?) under the "Worn Items" tab.

NOTE: When we close the edit window, we're closing the zoom-out in the HUD automatically, and will get again only the screen area, 1 meter height.

Now, how can we edit something that is in the HUD, once we've attached the object? Can we do the same edit options we do inworld?

Almost: remember what was said before... We CAN'T link/delink in the HUD: We have to rez first, then link, or delink, take the object back to inventory and attach it again to the HUD.

But apart from that...

Can we edit linked parts?
Yes.

Can we rotate the objects in HUD?
Yes.

Move them?
We've seen also that yes.

And do we rotate, scale, etc, the same way we do it inworld?
Again, yes.

It's very easy to check this: Please edit again your HUD. If you click now, in the edit window, the "Rotate" option, do you see that the wheels to rotate appear?


Rotate doesn't have handles, but wheels, don't forget!

Also, the keys keep working: holding CTRL in edit mode will make the rotating wheels to show up. And we can hold CTRL pressed, click over the wheel and rotate.

But I don't recommend this, for rotating, for a reason: The HUD is a 2D projection, and we can't zoom around it as we do with the 3D objects inworld. So if we're not specially careful using the wheels, most likely we'll rotate the pieces wrong.

What to do then?
Use the edit boxes for the rotation, in the "Edit" window.

But for size... If you want to resize the whole object at once, use the WHITE HANDLES that show when we click "Stretch", because if we type directly numbers in the edit boxes... This will resize ONLY the root prim, or the child prim we had selected.


Trying to resize a whole linkset typing numbers only changes the size of the selected prim: Inworld and in the HUD. If we aren't into "Edit linked parts", this is the root prim.

You can now detach the test HUD.

IMPORTANT: When you prepare a HUD for sale, make sure that you attach it to your HUD, move it to the position you want it, and then detach it, prior to pack it. Why this? Because it is when you detach the HUD when all the data related, including the position within the HUD, is saved. (This is true for any attachment, not only HUD objects.)


PROPERTIES THAT ARE NOT SUPPORTED IN HUD OBJECTS


Now that we're talking about what we can do in our HUDs... It's time to think about what we can't do in our HUD objects.

Yes, we've said that there are no building restrictions, meaning, we can attach any object to the HUD points, and we build them inworld, so same rules for the limit of child prims and others apply too.

But there are a few restrictions when working with HUD objects that we have to know about.

The first difference comes with sounds: If a sound is played using llPlaySound, in a HUD, only the person wearing the HUD listens it.

Also, sadly, particles usually won't work (they could in experimental viewers... but don't take this for granted! most of the people if not all, will not see them in the HUD object.)

Texture animation, sculpted prims and even TARGET OMEGA and flexi prims do work in a HUD object. Glow doesn't, but shininess does.

The hover text is supported BUT this is important: The text does NOT scale with the size of the HUD. If we make the HUD smaller, the hovertext will have the SAME size, so keep this in mind if your HUD is small :-)

The hover text sometimes may help you saving on textures, and it's also useful to display values that change often (like the ones that come from combat/RP HUD objects, with meters for several properties of our player.)

Shared media also works in HUDs, but since V2.2.

And don't forget this... A HUD object is an attachment, so, like any other attachment, if our HUD has a sensor active, it will not detect the avatar that has it attached.


A NOTE ABOUT HUD OBJECTS AND PERMISSIONS OF THE CONTENTS


When our HUD object is attached, the only assets we can drop in the "Content" tab are those that, for us, the owner, have FULL PERMISSIONS. If we have to drop any asset that has any restriction over the permissions *for us*, we'll have to REZ the HUD object inworld, drop the assets while it being inworld, and then take it back to our inventory. (That's why we have to rez our poses HUDs, for example, since we normally purchase them copy/no transfer.)

Be careful when you do this with NO COPY assets!

Make sure in this case that there are no notified problems that could affect to no copy items rezzed inworld. For this, you can check the grid status page.

A couple of related resources:



ADVICE WHEN YOUR HUD HAS TO BE SCRIPTED BY SOMEONE ELSE


Before finishing, I want to give one more suggestion, apart from all what we've said.

If we're the builders of the HUD, but then we have to contact with a scripter to make it work... It helps A LOT if you put names/descriptions in the prims that you want to be, either having an action on click, or that have to display information/textures.

What do I mean with this?
Again, let me look for an example to rez.

The HUD I'm going to show will also show another suggestion, in case you need to switch textures for on/off actions. In this case, the customer used the name field of the prims, for prims that were relevant when clicked.

Please, inspect this object.
Go into edit linked parts.
And click the prims.


Do you see that they have specific, unique names?

Why is it important to put names/descriptions to the prims?
Because each one of this buttons has a specific action, and they could be linked in any order.

Even if you're not a scripter, you should know that is better if a script does NOT rely on link numbers. If the script simply looks for specific names/descriptions, and retrieves the link numbers, that makes a scripter's life a lot easier AND should you unlink/relink your object, the script will (should) continue working THE SAME.

So do you all promise me that, from now on, you'll put names/descriptions in the prims you expect actions from, or information to be displayed? :-)

"Make a scripter happy... Use names/descriptions in the prims" :o)


Now, let me "break" this HUD a bit :-)
Look at this button. (The dagger button in the picture, which has been duplicated twice to show the side faces.)


It has, apart from the visible texture (the only we'll see when we attach the HUD), two more textures.

The two textures that should be used for on/off, each one at one side. The reason of doing this, is to have the textures preloaded, so your user doesn't wait for textures to load when switching on/off.

This is something I recommend doing: If you're building HUDs, and need to switch textures, have them in the sides of the buttons. They're not going to be seen anyway, because we only see the 2D projection. The rest is between the HUD and us :o)

(Make sure, though, of using small textures. For small HUD buttons, 128x128 pixels could be more than enough. Even 64x64 could be enough. 1024x1024 textures for small buttons... NO!)

Now, don't forget this: we can hollow and path cut boxes, so this makes up to 9 textures that we could apply in each face. One has to be always the texture that we show to the user: but that makes 9-1 = 8 textures that we can preload per button, should we need them.


MISCELLANEOUS QUESTIONS


QUESTION: Let's suppose that we want to rez a HUD to be able of link/delink, and turns out that the HUD contains a script that makes the HUD to be deleted if the object is rezzed instead of attached. What to do in that case, to be able to link/delink prims to the HUD object?

If the prims are copy/modify, and the script is copy at least, the following is a possibility:

  • Make a copy of your HUD object
  • Attach this copy
  • Delete the script that is making it to be deleted on rez
  • Detach the copy, rez inworld and work with it
  • Attach it again and add the copy of the script that you deleted, in order to be able to rez and work with it

Alternatively, go to a region where scripts are deactivated. (IMPORTANT: If you do this, make sure you're no higher than 50 meters above the mesh terrain, otherwise, scripts WILL be active.)

If the prims are no modify, you would not be able to link/delink anyway. In that case you can contact the creator to see if they can make the specific variation you want for the HUD object.


QUESTION: If particles can't be shown in the HUD... How could we create a HUD to make particles effects?

For that, your HUD object has to communicate via llWhisper/llSay/llShout/llRegionSay with an emitter inworld, that should receive the parameters, process them, and generate the corresponding particles effect.


QUESTION: Is it advisable to speak with the scripter before building the actual HUD?

Yes, always. Creating a HUD is a team work, so this previous dialog should happen to avoid later changes in the specifications (which can drive mad the scripter, since at times, a change in the specification could mean to have to redesign the whole scripting.)


And this is all for this class. I hope you come away with new knowledge.

-- Auryn Beorn

Sunday, December 1, 2013

Auryn's Quest: Everything about BFF

Lately, I was feeling as if life had turned too serious. Deadlines. Reflecting. Having to pee sitting on a frozen toilet. No more cheese in the fridge. Having to go buy more cheese. It's so exhausting to keep a straight face all the time. So I decided I would explore the daunting "exterior world". My last reads made me aware of creatures called "BFF", and I felt the need of investigating. That would make for an interesting quest! Maybe new friends to talk to!

Of course, it wasn't going to be a blind quest, and so I started listing reasonable questions whose answers I should look for. Beginning by the obvious!

So, what is a BFF? Which is their natural environment? Are they lonely creatures, or social ones? Which are their mating rituals? How about their eating habits? Are they friendly? Do they like reading in bed, or are they more of TV users? And the music? Do they like Mike Oldfield, by chance? Beatles? Nacho Cano? Any special preferences when it comes to shoes? Will they wait for me to go sleep and then eat my feet?

I decided I should wait to find those mythical creatures before making more questions to myself, for I am not the one having the answers. Weather was starting to chill, and I didn't know for how long I should be outside. So, I equipped myself in comfortable clothes and two rations of cheese. I was ready!

Dubious at first about which direction taking, I finally stepped outside from my platform. I of course forgot that stepping off the platform meant falling for almost 500 meters. A couple of bruises, but no major injuries that I should lament. The Lola's, though... I don't think I can use them again.

Well, each investigation has its risks and its losses. I dug a hole, buried the Lola's inside, and started walking.

After two hours walking north, then south, and why lying, being completely lost in a little maze of twisty passages, I finally heard a noise coming from some trees. Cautiously, I strolled up to the sound's source, and found a couple of exotic creatures. They were looking at me, I was looking at them, and I thought that the polite thing to do would be to greet and ask.

"Hello. Please excuse my intrusion. Do you happen to know where do I find a BFF?"


Their puzzled stare made clear that we would have serious issues communicating. Perhaps they're strangers and don't know the language. I should later check in Google from what country they're from, and add it to my report.

I continued walking, lost again in a twisting maze of little passages, and smiled widely when I stumbled upon found a representative of my gender. She obviously was from another species, perhaps a BFF? But no doubt, she was somebody that would understand me!

"Hi! Are you a BFF?"


I could hear the wind across the trees. A couple of bushes rolled between us, running to find a river and have in there a dramatic end for all their dreams of freedom. Birds were singing. The sky was clear. Temperature was 10 degrees (Celsius). The sea was calm. The Moon was Full. The representative of my gender continued to be silent. Either she was thinking I'm stupid, or she was waiting that I would read her mind for the answer. Sadly, I failed all of the psychic practices in high school, and eventually resigned to continue waiting for an answer. I went, alone and slightly disappointed.

I can't count all the hours that followed. I wasn't sure anymore if I had turned to east, west, or where. All those trees were a mortal trap, a twisty little maze of passages waiting for my last breath. My legs were tired, and what was worse... I was running out of cheese. I fell on my knees, in despair, and cried out loud:

"What has a girl to do, to learn what's a BFF?"


It was then when I felt their presence. I knew it was them. Hidden behind the trees, I could first see the shadows, then bright red eyes staring a me in... was that anger?

I had no chance to stand up and friendly ask if they were the mythical BBF creatures I was looking for. Several lightnings hit me. Now that answered many of my questions.


I let myself fall in the cold water of a close river. It alleviated the pain of my burns. That made to boil a couple of fishes that were close, though. My apologies: it wasn't intentional.

I finally walked outside the water, waited for my clothes to dry, and started drafting my essay about BFF living beings. I reached to a conclusion and wrote it down: if I've learned anything about these mysterious BFF creatures, is that they have no sense of humor... at all.

This post is a rendition to Sin Noticias de Gurb, Uncle Travelling Matt and Colossal Cave Adventure.

Saturday, November 30, 2013

Turn that light off!

This article was published in Fusion Magazine, November 2013. Click for the magazine!

Greetings everybody! My name is Auryn Beorn and this is my first article for Fusion. I will try to approach some topics that could be considered too techy for the betterment of your enjoyment in your SL experience. My philosophy is quite simple: the world of SL is a big place with so many different people and tastes; hence, learning the tools that allow us to minimize exposure to what we do not like, will be always beneficial for us. It's my wish that these tips will help you enjoy your SL.

I'm opening the field with facelights. Like them or not, they'll be present whenever we teleport to an event, club... Normally, the avatar wearing them, is not aware of what everybody else sees. Likely they haven't learned about windlight, and they don't see themselves right without the facelight.

This girl could light a city on her own.

Attacking the avatar that wears the facelight will solve nothing. What we can do is to deactivate them in our viewer. Easy and clean.

How do we do this?

We will have to open up our preferences (Me/Avatar: Preferences or CTRL P), and go to the Graphics tab. Make sure you have access to the advanced options (Advanced button). In there, we can find an option named Local Lights under Shaders: untick it.


This has one drawback: No local lights will be rendered. Local lights refer to light points that aren't the SL Sun/Moon. That is, all the other lights coming from objects.

But we have more choices.

We can start by derendering only the attached lights. We find this under the menu Develop: Rendering: Render Attached Lights. Un-ticking this option, the result is that only the lights attached to avatars will not be rendered. All the other lights will be rendered. (If you see no Develop menu, activate it under Advanced: Show Develop Menu. If you see no Advanced menu, CTRL ALT D for it. Almost, if not all current viewers, have these options.)


If you don't want to derender the attached lights, you have also the option, under some viewers, of derendering the avatar of your choice. Temporarily or permanently, but when an avatar is derendered, the attached lights go away with them.

Yay! Lights are gone!

Whichever your choice, don't forget to turn the lights back on when you need them!

Simply activate what you deactivated in the first place, and that's it: the lights are back when and where you have full control over them.

Enjoy your SL.

Monday, November 25, 2013

The dance of the young widow

«The dance of the young widow.

Twirling alone every night,
pondering over crossing that door
and making the pain to stop.»


The dance of the young widow, in Flickr
(Text as a part of the image - Before I decided to add the word "alone".)

I'm asked at times, after one of my dark pictures sees the light, if I feel okay, or if I'm exorcising any ghost from my past. Honestly, I never know what to answer. "Yes and no" don't seem to be accurate enough. "No and yes" present a similar issue. I'm not too open to publicly talk about my life. I'm not too open to privately talk about it either. My life is not that interesting.

What may be interesting to know is how I make these images. I choose one or a few songs, and play them repeatedly. I let the music talk to me, and it eventually tells me a story. During that process, my imagination starts to work, my mind, to explore a feeling, I begin selecting poses, and the result is a picture with a short story attached. If the image in my mind requires a specific setup which can't be created by the objects I have in inventory, then I create the poses and the props myself.


PS: For the curious, while I was working in the picture of this post, I was listening to I am the walrus.


Even with the lyrics, I have no idea what the song is about. Anyway, I consider it to be a great song. At times it's not about the message, but about the music.

Sunday, November 24, 2013

Writing for Fusion magazine

A couple of months ago, a new SL magazine saw the light, Fusion. I'm quite excited of having joined as a writer, and I'll try to approach to the average SL user, the most technical (but necessary) parts, among many other topics I have in mind. November's issue contains my first participation, under the title "Turn off the lights".

My philosophy, as I explain there, is quite simple: The world of SL is a big place with many different people and tastes, so learning the tools that allow us to minimize exposure to what we do not like, will be always beneficial for us. And, as I say there, It's my wish that these tips will help you enjoy your SL.

Check this month's issue to learn more :-)

There are also inworld kiosks from where you can subscribe. I've placed one inside my store, Black Tulip.

Enjoy!

Saturday, November 23, 2013

Maturity

Rambling alert! This is a long post. You acknowledge that I cannot be held responsible of your falling sleep over the keyboard and neck damages caused by that if you decide to continue reading. This is a fair warning, placed at the top of the post :o)

When I started writing Relationships i̶n̶ ̶S̶L̶, I promised a "next post" that never came. Instead I published two consecutive posts that had nothing to do. I hadn't realized that the deadlines for all the winter events were so close in time, I needed some time to develop the "next post", and the time had to be used for the new releases.

There was a discussion about that thread in my feed, and I enjoyed it. I'm terribly curious about human behaviour, and people participating added interesting comments, and also jokes. I'm quite glad the discussion happened. It made me think about my own reasons to prefer a not so much public display of myself. Despite of what you've heard around, thinking is always a good thing :-)

Still, some replies in my feed made me wonder if I had made my point across clearly.

I never said I'm against partnerships nor against making it public. The word "hypocrite" wouldn't be good enough to fit me if I said. I also never said I'm against public displays of love and affection. Indeed I said, "I like to see people in love."

What I said was:

Each time we say that this time, this is our love forever, and each time it is not. Each time, forever lasts an average of three weeks, six months for the lucky ones.

Then why make it public each time? What's the purpose? Why do we need to repeat publicly "I love you"? Shouldn't those words be saved only for the one deserving them? Do we want to make everybody else jealous because, this time, we've found "the love of our life"?

Of course, when the bubble bursts, the situation turns ugly. There's the break up, and that alone hurts. There are all the photos that now are telling people "we failed", which adds to the injury. And there will be future photos from your ex, this time with someone else. More pain and resentment.

I would like to understand, why, if we all know this, we continue to expose ourselves constantly, voluntarily, to all the extra pain that could be easily avoided. I, for one, don't get it. I would like to understand. Please feel free to add your comments about.


I realized that two separate things were confused at that point. Probably the confusion came from here, "Why do we need to repeat publicly "I love you"? Shouldn't those words be saved only for the one deserving them?"

Although it may seem that I'm complaining about public displays of love, I'm not. Remember that I said, clearly and openly, "I like to see people in love." The key word here is "context". Those questions came right after I said "Each time we say that this time, this is our love forever, and each time it is not. Each time, forever lasts an average of three weeks, six months for the lucky ones." and so were related to that. Perhaps I should have rewritten my questions to something like this:

You have proven once and again, that every time you've said "I will love you forever", "this time this is my true love forever" (and variants)... You don't really mean it. Shouldn't you be a little more careful when you publicly say something absolute like that? What makes you feel wanting to repeat the routine of publicly exposing your next relationship, again under the "my true love forever" promise, when the odds are against you?

You'll have to trust me in this: despite of my "ice queen" ultra-rational facade, I also feel, and fall in love. I'm human, like you (whether you like it or not), and so I empathize with your feelings, with your need of saying sweet nothings. I understand why it happens. I say those things too. With perhaps one exception. I don't use the word "forever". I don't feel it's appropriate to promise eternity to each and every stranger. But that is my choice.

I feel that the way I've rewritten my questions sounds more like what I had in mind. And still, whether you believe it or not, I have absolutely no issues with your public displays of love. Real love, fake love, RP love, SL love, and many others. Whichever your choice. I'm fine with it. When I have time, I look at it (you make it public!), and when I don't have time, I just use the scroll wheel of my mouse, or simply, don't check the "Trending" tab. I just can't help myself wondering about what motivates repeated behaviours that prove to be harmful.


Anyway, none of this is actually the point of what I wanted to write next, nor my own feelings and situation are. I just felt that since I wasn't clear at that point, I should try again and clarify now.

I wrote Relationships i̶n̶ ̶S̶L̶ with a clear intention in my mind. I wanted to analyze some aspects that I find to be relevant about an incident happening in the SL feed a few weeks ago. I know that some will shake and foam, spitting words of "can't you let it go" and "witch hunt", but I know that a smart reader will realize, I'm not talking about the specific situation even though I will point to details of what happened. Just because things happen too fast on Internet, that doesn't mean I will not be taking my time to think about. I like to develop my own conclusions once I've finished with my thought process, not when the people that want to cover the truth with lies say that I should "let it go".

None of us is born being wise. Even more: when we are born, we are quite vulnerable. Neither our body nor our mind is ready to live in this world. Adults around us, normally our parents, help us grow. They are responsible for our security and our development into adults ourselves. This growing up doesn't happen suddenly. Each one of us develops body and mind at different paces, and differently from anybody else. For example, physically, I was fully developed when I was 10 years old. My mind, I tell you, wasn't as mature as my body looked like. I was still playing with my brother's construction games, and all of sudden I realize that in the event of a violent act, I could be pregnant and have a baby that would tie me forever to a life I didn't want. I can't explain how that thought shook me. I still remember the chill. I felt incredibly small and vulnerable in a world that suddenly started to show quite more dangerous than what I ever thought before my body fully developed. My parents were there. They took right decisions and they also took wrong decisions, but they never gave up their responsibility of making an adult from me.

I can recall that my mind started to also grow up when I was 15 years old. Adolescence is sure a moment of your life where the only certain you have is uncertainty about everything. When I was 15 years old, I was completely aware that even though I could start behaving as an adult, should there were consequences, my parents were legally responsible of my misbehaving. My parents had already taught me that I should always be responsible of what I do, and so I did my best not to cause them trouble. If I burned a public bench, my parents should be the ones paying for it. In my mind, that was unfair. But I understand that law can't be written to cover all the gray areas that exist in the development of a person into their adult state, and so the law needs clear lines to say "adult" and "underage". In many countries, this line is at the age of 18.

I know, it makes no sense that if the week before to be 18, I break something, my parents have to pay for it. There's not that much difference in the person I am from one week to the next. But in what comes to law, that would be a slippery slope to follow. What would be the week that "tells the difference"? So the line is clear. 18. No matter you're a more mature person since you're 16, or you're an eternal immature person even though you're now 50. From the age of 18 (in many countries), if you do something, you pay for it. You're on your own. If you do before, your parents are held responsible. (There are specific felonies where you are held responsible, though. If you think your parents will pay for your killing another, and you'll get away with it because you're 16, think twice.)

Adults should help us to grow up. This means that when we deserve to be scolded, we should be. When we deserve to learn the lesson, we should learn it. My parents never gave me an inch saying "please pity of the poor girl, she's still young, she will learn" when somebody else complained about me. They listened carefully. They never said "my daughter could never [insert whatever you want]" to the person complaining. They looked at me, stern, asking "is this true?", and since I was taught not to lie, I had to nod. They apologized to the person I caused trouble and assured it will never happen again. And oh yes. I was punished for what I did. But nowadays I thank them for those lessons.

The specific lesson they taught me is that ill deeds are ill deeds no matter how old you are, and you deserve no sympathy if you commit them. You deserve the consequences.

The fact that they never rejected somebody else's testimony with a "my daughter would never" also taught me a very valuable lesson. Nobody is sacred, specially when it comes to ill deeds.


Now, on to the SL feed. About three weeks ago, Laurin Sorbet writes in her blog that she doesn't want to interact with underage people in SL. It is a position I share, and I'm sure that many others. Unless I am in PG regions, I assume that people interacting with me are adults. Underage people shouldn't be in mature nor adult sims. I'm not talking about kid avatars, I'm talking about the real person behind the avatar. I don't go to an adult sim to have to bite my tongue and babysit others' offspring: I get employed in a kindergarten for that. My parents already taught me that each one is responsible of their own kids and nobody else's, and that nobody else should do your parenting job. They would have never allowed another adult to give me any advice. While I was growing up, they wanted me with people of my same age.

This means that when an underage person is in an adult sim, we have to think of one between two possibilities. One is that the parents know what the teen is doing, and they let them do. However, because of the nature of adult sims, I'm more inclined to the second possibility: the parents have no idea of what the teen is doing. Which by its own nature, is talking badly about what the teen does. Perhaps the teen is mature enough. I will not discuss that. It's possible. But I don't see that as mature when the act of being in an adult sim is, by definition, breaking LL's TOS if you're underage. When it comes to breaking LL's TOS and performing sexual acts with adults... It doesn't matter how mature the teen is. The law may come into play, and the law will look at the line: under, or above 18?

Some of us didn't know why Laurin was writing what it is common sense, and so asked. In her feed, the situation was clarified.

There was a girl I followed, that used to post nice pictures. She had a previous affair, and she was starting to air the new one, in a fashion like what motivated me to write Relationships i̶n̶ ̶S̶L̶ (Finally! The connection!)

Then, the couple broke up, and the girl received some "hate mail". When said like this, it doesn't look any different than any other of the many breakups you witness in the SL feed, and we quickly think "sheesh the guy" (although I'd like to see the "hate mail", for I've grown bored of the delicate skins that some have). So people sided with the "poor girl" that was "receiving hate", one of her "best friends" published the following:


(I know the person doing this doesn't deserve my consideration, but I have as an habit not to point fingers because it allows to better focus in the issue. BFF means "Best Friend Forever".)

Well. Now this makes everything different than a normal SL-breakup. Keeping aside the fact that this "best friend forever" broke the community standards when publishing the RL age of the girl within the realms of LL (so, a TOS infraction), the situation we have now is that an underage person had been performing (virtual) sexual acts with adults. Two different adults, to my knowledge.

It's none of my business who you decide to be in bed with or how often. But when you're in SL disguised as an adult, even thinking of meeting in RL... That sends chills to my spine. Perhaps you're mature enough to have sex. I will not discuss that. But if your parents/guardian find out, they may think otherwise. And I have the feeling, they are going to disagree about your maturity. But which is worse, they may go against the guy. Perhaps by then you would have confessed the age. Perhaps not. That will not save him from the consequences.

The girl finally cracked and told him the truth about her age before meeting. Honestly, I can understand if the guy was upset. I can understand if he was angry. Probably, that "hate mail" was a mere "what the hell were you thinking of?" Because if they had met, the consequences could have been very ugly for him. He has all the right to be angry, and this "best friend forever" seemed to try to take importance from that. Likely, she didn't expect that some people would react saying "wait, what... did you say... a MINOR?"

This "best friend forever" did what my parents would have never done: "Pity her! She's young! She'll learn!" This minor deserved a lesson. Like not coming back to SL and developing the kind of life a teenager should have. All the "cuddling" and "oh poor you, all the world is against you" will only teach the following lesson to this teenager: lie all you want, for you'll find somebody stupid enough to forgive you and help you get away with your lies. That's the lesson this adult teaches to a teenager. Very mature.

But the history doesn't finish here. Oh no. Once we enter into the realms of absurdity, be ready for Henry the horse dancing the waltz.

The "best friends" had setup another account so the underage person could continue in SL, and gifted it to her. Of course, they didn't seem to read section 4 of TOS, where it says:

You may not sell, transfer or assign your Account or its contractual rights, licenses and obligations, to any third party without the prior written consent of Linden Lab.

Because if they had read that, then the minor wouldn't have been seen again posting photos in the SL feed from... drumroll... ADULT SIMS.

The response of the "best friends" was to teach the teenager how to better hide. This gifted account was also suspended, as the first one was, and in the third account, the teenager says that she's a teen, under her RL tab. However, the "best friends" she hangs out with, live in an ADULT sim. The "best friend forever" says she takes care of the babysitting. The thing here is, the underage person is AGAIN breaking TOS, and you, "bestie", are doing a job that doesn't belong to you, for you are not her mother. Her mother will not be delighted if she ever finds out, although after all the teaching how to better hide coming from you, irresponsible person, I doubt the poor mother learns about this. I don't want to be in her shoes when that happens.

It is not a witch hunt to point all this, as it has been mendaciously said. It is the responsible thing to do. As adults, we cannot teach a teenager that the right thing to do is learn to hide better in places where she shouldn't be in the first place, and that saying "I'm sorry" will be enough to get away.

It is highly irresponsible, it shows no moral decency or standards at all, and personally, it makes me highly doubt about the maturity that said "adults" have, because if they've followed all this path of lies and breaking TOS, expecting also that an innocent guy was pointed like "the bad guy", they sure have no moral grounds.

As a fun detail, the "best friends" have muted some of us in a response to this (imaginary) "witch hunt". Mute away, I say! I've never talked to you in the first place, "bestie", and given what I've seen, I don't feel like talking to you anyway. Interestingly, the teenager has NOT muted us. Shouldn't have been the teenager the one muting us, if she perceived any harassment? The answer is obvious to me. As any reader can see, there's no harassment in merely exposing our opinions and our publicly say that we do not encourage the behaviour of the teenager nor of the "adults" that taught her to better lie. And only the adults felt offended by that. In that regard, the teenager did show more maturity. I think it's funny.


I will finish with one more comment. There are reasons, important reasons, why we cannot teach that "I'm sorry, I'm sorry, oops I lied again" is something to forgive to "poor teenagers". You know, teenagers are underage, but they are not stupid. They can do a lot of harm. That's why I want that remains clear, after all this story, that what these "adult besties" are doing, is to plead forgiveness for this teenager who break TOS repeatedly (and so they have done too!), stepping over the uncomfortable fact that if there are RL consequences, those will be for the guy she played with.

Tuesday, November 19, 2013

Another meme for me! (Introspection)

Well, second time in a year that I join one of Strawberry Singh's challenges! Surely I'm not having more free time this year than the previous ones, but I'm having the chance of using more of that time for myself. Plus I've just finished setting up everything I could have ready today for one of the events I've signed up (Creators Winter Market), so I think I may have a moment of relax.

This time, her challenge is devoted to introspection. Since I'm kind of an introvert person, it makes me want to answer those questions.

Meme instructions: Answer the following questions and don't forget to leave a link to your post in the comments.

  • Regardless of your current number, how old do you actually feel?
    It depends on the situation. At times I feel like the child I could never be, left alone in a toy store. At times I feel like the teenager I could never be, daydreaming of love while looking at the flowers. A few times I've felt already dead. The rest of the time I feel ageless. I just don't know.
  • Which is worse, failing or never trying?
    Both.
  • If the average human life span was 40 years, how would you live your life differently?
    I would not change the way I live my life.
  • Are you more worried about doing things right, or doing the right things?
    Both.
  • Would you rather be a worried genius or a joyful simpleton?
    A worried genius.
  • Have you been the kind of friend you want as a friend?
    Yes. Although I know, I'm not the kind of friend that the majority would want.
  • Do you remember that time 5 years ago when you were extremely upset? Does it really matter now?
    Yes.
  • At what time in your recent past have you felt most passionate and alive?
    This year.
  • If you just won a million dollars, would you quit your job?
    No. I would invest that in making my future safe. I've always loved what I do for a living.
  • If you knew that everyone you know was going to die tomorrow, who would you visit today?
    My partner. Everybody else that matters in my life, I see them daily.
  • What do you feel is the difference between being alive and truly living?
    Feeling in peace with yourself.
  • If we learn from our mistakes, why are we always so afraid to make a mistake?
    Because many will never forgive us and give us the chance of correcting our mistakes, regardless of what they say.
  • What would you do differently if you knew nobody would judge you?
    Probably, nothing.
  • If you could offer a newborn child only one piece of advice, what would it be?
    People lie. Even your parents. Nobody is sacred. Don't put your trust on what social conventions tell you to do. Even your parents may betray you.

So, that's it. It didn't hurt :-)

Tuesday, November 12, 2013

I've changed my mind: Blender books available in Marketplace

It happens. When you take a decision, you do in the belief that will be the best thing for you. But life can tell you that perhaps it would be a good thing to reconsider. And that I've just done with the decision I took of not publishing the Blender books in Marketplace. I've changed my mind, and they're all available in Marketplace. Of course, since it's a long course, more books will be added as I continue teaching and then working all the material. I've not finished with this course, nor I think it's a topic one can really "end" with.

I no longer feel I have to protect myself from the situation that led me in the first place to decide not to make them available there. Although I continue to be disappointed to the extreme, I'm in peace with myself. If somebody has something to hide (like the sources of information), that person sure is not me.

Enjoy the books. I hear people like them :-)

Sunday, November 10, 2013

Relationships in SL

Yes, I am in one. This may come as a surprise for many, since I've chosen not to make a public TV drama show from it in the SL Feed, and normally I'm quite cynical when I witness the next display of "I will love you forever". But there's a "he", and whether you see him or not in my photos (often, no), he's always there. That matters to me.

However, I haven't brought this up because I am now going to talk about us. I am not going to do so. Whatever happens between he and me, belongs to us and only to us. Whatever I feel, that's for him to know, and it will be my deeds, not my words, which will tell him the truth.

I've brought the topic up trying to warm myself for one of my long rambling posts (which is not this one, although it could seem like it.)


Whenever I see a new relationship starting in the SL Feed, I feel a mix. On one side, I empathize. I like to see people in love. I like to think that when people are in love, involved in living it, they will not be busy making others miserable. I admit, this may be a very simplistic and naive way of looking at it.

But despite of what we say, love never lasts forever, and the passion it starts with, lasts for even less time. I see this constantly. Some couples that are married for twenty or more years (or less!), feel now that "forever" is more like a sentence. Some of them escape, others decide that staying together might be the lesser evil and so die together. Few are the ones that pass the test of time, and are able of living always by the other's side.

Scientific medicine sure played a bad prank to the ideal of romantic love forever, when it prolonged our life expectancy an average of two point five times. It was easy to love forever when you were going to die at your 30's, if lucky. Although to be honest, I prefer the perspective of living long and healthy, than dying horribly sick at 25 but oh, so in love.

I also don't feel I'm inconsistent by claiming that "I will love you forever" is a lie while at the same time I'm involved with someone else. By taking that claim off from the equation, I know that the success of the relationship will be highly related to the result of a team work, and not of any magical influence, call it "fate", "the planets were aligned", "we were meant to be" or "the tooth fairy made it". Working on it doesn't assure you any success (Chemistry has its own rules), but the alternative, believing that "we are meant to be", "we're soul mates", will only lead you to frustration and denial once problems arise. And they will. They always do. Repeating "but we're soul mates!" will not magically solve them.

Anyway, I digress...

As I was saying, whenever I see a new relationship starting in the SL Feed, I feel a mix. Yes, I like to know that people fall in love. Up to some point, I like to look at it. But when I witness the pattern, the questions begin to pop in my mind. Each of us in SL knows that the perception of time is different inworld. Everything seems to happen faster. Relationships begin in a torrid wave and end in a hurtful storm. Each time we say that this time, this is our love forever, and each time it is not. Each time, forever lasts an average of three weeks, six months for the lucky ones.

Then why make it public each time? What's the purpose? Why do we need to repeat publicly "I love you"? Shouldn't those words be saved only for the one deserving them? Do we want to make everybody else jealous because, this time, we've found "the love of our life"?

Of course, when the bubble bursts, the situation turns ugly. There's the break up, and that alone hurts. There are all the photos that now are telling people "we failed", which adds to the injury. And there will be future photos from your ex, this time with someone else. More pain and resentment.

I would like to understand, why, if we all know this, we continue to expose ourselves constantly, voluntarily, to all the extra pain that could be easily avoided. I, for one, don't get it. I would like to understand. Please feel free to add your comments about.

PS: I am the one that in meetings with friends (in RL) says "if you take a photo from me and upload it to Facebook/Flickr/anywhere, you will need surgery to have the camera device removed from your colon". Classy. Ladylike. That's me.

PPS/ADDITION: I feel I have to add this clarification. I'm not coming here to judge what is right or wrong. My curiosity is sincere. If there are 500 different cases, I want to know about all of them. All the nuances. I would hate to simplify what it might be complex and has a different answer per person.

Saturday, November 9, 2013

Blocked

Black. I see nothing in my mind. Not my usual chatter with myself. Not an idea to work into. Inability to perform a rather mechanic task. Inability to stop and take a break. Inability to change activity. Nothing, nothing at all. My mind is, at this moment, a black hole.


I hate when it happens.

Thursday, October 24, 2013

Creator Resource - Doors in SL

This tutorial is currently at Creator Resource - Doors in SL



You will need basic building skills to follow this tutorial, such as rezzing prims, texturing their faces and know what the root/child prims are. Knowledge about creating sculpt prims and/or mesh is not required to understand what the scripts will do. It's only advisable if you plan modelling your own sculpt/mesh doors :-)

TABLE OF CONTENTS


Introduction: What do we mean by "using doors" in our builds?


When building in SL, when we say that we want to make "a door", we're implying a little more. What we normally mean is that we want to build an object that will work as a door, this is, than apart of having the appearance of a door, it will open and close as a door would do.

Building the door in itself isn't complicated. The issues arise when we want to add our door the desired interactivity. Suddenly we may find that our whole build rotates, or that the door is rotating around the wrong axis, or moving around the wrong axis, or that the way the door rotates, is not how we would like it to be, and the fix has to be performed in the build rather than in the script.

For all those reasons, I've spent some time putting together all the information that I consider essential for builders, and that I hope will help you understanding what you're after when you want to add doors to your builds. It's important because you'll learn how your door should be designed, what kind of script to use and why.

Note: When we talk about doors, we don't refer to doors strictly. If you think about it, a drawer that opens and closes presents the same kind of issues: an object that should slide. A music box's lid that opens and closes, it's again the same case: it's an object, the lid, that should rotate in order to open and close. Like these two, I'm sure that you can think of many other objects and uses, and all of them fall within the same category: "doors". For all of them, the same principles explained here, apply :-)


Sliding doors


Simply put, a sliding door is a door we will expect moving, but not rotating. From a textured door to a mesh door, they don't have specific requirements. The kind of scripts used normally will let you decide which direction to follow, how far the door should move in that desired direction, and during how much time.


Sliding doors: How to build them


We're going to begin our study of sliding doors by completing a "little project" that consists of building a door that will be simply a box using textures from our "Library" folder.

Wait, I don't have a "Library" folder in my inventory...

If that's the case, follow the "Advanced: Show Debug Settings" menu, look for the "NoInventoryLibrary" setting, and set it to FALSE, as the picture shows:


Rez a box. Give it a name under the "General" tab. For example, name it "My Sliding Door Example".

Now position it at integer coordinates (without decimals), like the picture shows:


Resize it to, for example:
X = 1.75
Y = 0.25
Z = 3

Now, to texture, select the "front" and "back" faces, and apply to it the "door51" texture, which is under "Library: Textures: Textures by Marlin Studios". Then select the edges, and apply to it the "Brazillian rosewood" texture, which is under "Library: Textures: Wood".

If you want to have showing only one door on your box (since the texture is of a double door), change the settings of face #1 to the following:

Repeats Per Face
Horizontal (U): 0.5    [X] FLIP
Vertical (V):   1.0

Texture Offset
Horizontal (U): 0.25
Vertical (V):   0.0

and then the settings of the opposite side (face #3) to:

Repeats Per Face
Horizontal (U): 0.5
Vertical (V):   1.0

Texture Offset
Horizontal (U): 0.25
Vertical (V):   0.0

There's no need to modify the repeats and offsets of the edges, so we'll just leave them be with the defaults.

We have a door to slide! :-)


Sliding doors: What we should expect from a "sliding door script", what we should expect to edit in it


There are so many free full permissions scripts to move doors, that is impossible to cover each single variation and say what to change and where exactly. Instead of that, I've decided to talk about the general aspects that all of them cover, so you know what to look for exactly in your particular script, or even, to know if that specific script is of some use for you or not.

A "sliding door script" simply takes the following information into account:

  • How much time the door should be sliding
  • How many steps during that time
    • Few steps will make the motion to be less smooth, but it will cause less lag, for less calculations will be involved
    • Many steps will make the motion to be smoother, but it will cause more lag, for more calculations will be required
  • What axis to follow in the motion. Some force your door to a predefined axis (so you should build it a bit differently than explained: basically rotating and resizing in another way - the script should tell you this in the comments). In that case, they give an extra parameter for the direction the door should move (like "left" and "right").

This means that such a script will have at some place a section where you introduce the new values. Some of those scripts may require from you that you reset it if you change the initial position of the door. You should read all the comments in the script to be aware of that. If there are no comments, you may try to guess by looking if the script contains the text llGetPos(); at some place... but if the script has no comments, I'd rather suggest to look for another script with comments (comments in scripts are colored orange.)

This is important to know because, for example, if it's required to have the script reset manually, you should not give your customers a no modify object. When prims are no modify, we cannot manually reset the scripts they contain.

If what I've just said sounds like "huh?" to you, then I urge you to read this tutorial about the most basic of permissions in SL. What an user can or cannot do with modify/no modify objects is covered specifically in this section.

A simplified sliding door script would just:

Move the door from one initial position to an end position. The motion is almost instant (our viewer will give it some smoothness, over a short time that we do not control), but it has the advantage of not overloading the server with intermediate calculations. If we're having several linked pieces, this is recommended, for performance and lag reasons.

If we want our sliding door being composed of more than one prim (a door and a knob, for example), like it has been pointed before, check the "Linked doors. More than one door prim. What to do?" section at the end of this tutorial. Check it also if editing those values in a script is not your strong suit. A professional door system will save you a lot of headaches and script editing :-)


Rotating doors


In this case, first we have to consider is what we understand as "rotating doors". All prims in SL have the ability of rotating, and they all do taking as a pivot point the center of the prim. So whenever we rotate a prim, we are rotating it around its center.

This is telling us that a "rotating door" is a door that we want to see, well... rotating :-)

But actually, we mean a little more here.

Let's take a look at the following picture, which is basically, the door we designed for the sliding case, which now has a cylinder in the middle, along the Z axis, to make us think of a "pivot":


If we rotate the door around the Z axis, since it will do from its center, this is what will happen:


A script will always do that: if we tell a script "rotate this prim these and these degrees around these and these axes", the script will always apply that rotation making the prim to pivot around the center. It doesn't matter what we do, scripting wise. If we want that the door, instead of rotating that way, visibly (the key word here) rotating, for example, like in the picture:


What we have to do, and the picture is suggesting it... is to alter the prim! We'll cover this by talking how to achieve this with regular prims, sculpt prims and mesh. But before, a word or two about what a script would do exactly...


Rotating doors: What a script would do in this case?


If you've ever joined a scripting group, you likely have realized that barely anybody likes rotations. What is it that makes rotations so hated? It is because of the following facts, which you, as a builder, have to be aware of:

  • If a script rotates the root prim, it will normally rotate the whole build with it
  • If we want to rotate a child prim, we need to perform a calculation that not everybody understands

This is why builders often feel so confused when editing a script to rotate a door, often preferring to leave the doors unlinked. Even scripters have issues with them!

So if we have a basic "rotating door script", this is what we may expect from it: It will rotate the prim containing the script. If this prim is the root prim, everything else that is linked to the door, will also rotate with the door. That's why these simple scripts, when used, don't "like" when we link the door to the build. Because they normally aren't ready to perform the necessary calculations that are required in a linked build.

Are we then left with no other choice than unlinked doors when we want them rotating? Of course not. You may head to the "Linked doors. More than one door prim. What to do?" section and read about it. But whether you read that section or not, what follows is important: in the next three sections, we're explaining how to modify regular prims, sculpts and mesh, so when they are rotated by a script, visually, they will look as expected.


Rotating doors. Building the door: Regular prims


There are some ways of making a regular prim to have visible only half of it, so when it rotates, it does around the visible hinge. For this, we have to understand the following two properties:

  • Path Cut
  • Slice (Boxes and cylinders)

Path Cut

Path cut is a property that operates on the XY plane, around the Z axis of the prim. When we change the path cut property of a box, for example, like in the picture, we see that the prim is indeed "cut":


What we've said before, "operates on the XY plane, around the Z axis of the prim", means that we cannot decide around which axis we want to "cut" (path cut) the prim. It's always around the Z axis:


So if we want the path cut showing in another axis, what we have to do, always, is to rotate the prim:


finding a good angle so it begins to look like a door:


and modifying the path cut to finally have a door that visibly, will rotate around its hinge:


When you texture this, remember that the prim has been rotated, and cut. Don't expect that the door texture will look right at the first try :-)


We will need to rotate the texture:


If the texture isn't of a double door like this one, then we'll also have to change the repeats and offset it:


("door31", also in your "Library: Textures: Textures by Marlin Studios" folder)

This is the principle behind using path cut to get prims that visually will rotate around a hinge. More complex primitives, such as torus, tube and ring, may require from you to also tweak "Profile Cut" (a secondary cut type that these prims allow). When working with spheres, you may also want to check out the "Dimple" property, which is exclusive of spheres.

Slice (Boxes and cylinders)

Slice is a property that we can find in boxes and cylinders, that removes "slices" of the prim, either beginning by its bottom ("Slice Begin"):


or by its top ("Slice End"):


This slice happens only in the Z axis, so once again, if we need a different configuration, we will have to rotate the prim, taking into account also that this will affect too to the texturing.

All clear with regular prims?

Then now let's study how to design our sculpted doors, so they will rotate around their hinges :-)


Rotating doors. Building the door: Sculpt prims


The same idea explained for regular prims applies here: prims rotate around the center, so what we have to do is to make the VISUAL part of the sculpted prim (the door in this case) to occupy just HALF the bounding box. That will make the effect, when the sculpt prim rotates, that it visually does around the hinge:


The prim continues rotating around the center! What we've made here is altering the bounding box. If you don't know what the bounding box of a sculpt prim is, then please check out this tutorial, "Introduction to sculpt prims", which explains what this and other essential terms mean :-)

As we can see, when working with sculpt prims, the important is understanding how we're designing the bounding box: The relevant is that the hinge is in the middle of the bounding box. We have, of course, to make sure that the sculpting tool allows us to manipulate the bounding box if we want to create these doors! The discussion about the tools is also covered in the "Introduction to sculpt prims" class.

Click here to know how to do this using Prim Generator (link to the Prim Generator class)

Now, this is relevant to sculpt prims. The door shows a problem: unless we make it phantom, the part of the bounding box with no visible geometry could hit us if this door is open and we are in its way!

Specifically talking about sculpt prims, this leads us to the need of linking phantom and non phantom prims, having an adequate collision prim. Click here for a detailed, technical explanation about linking phantom and non phantom prims. It covers other relevant details as understanding how the Land Impact works, and why we shouldn't worry about using this method with sculpt prims.

But of course, if we make the sculpt door phantom, that means, when it's closed, users will be able to walk through! Working with sculpts, the solution consists in using one or more extra prims, completely transparent, that will not be phantom, and will have the physical boundaries we need. For example, with a door, we will need a transparent box, having the size of the visible part of the sculpt. And remember! If this is to be controlled by a script... the transparent box should be moved too! Otherwise, the user will stumble against an invisible part :-)

Fortunately, this last is better solved if using mesh. So if you're waiting to know how to proceed in order to make a mesh door... It's that time now! Let's study how to design our mesh doors, so they will rotate too around their hinges and have an adequate physical presence :-)


Rotating doors. Building the door: MESH


We've studied so far how the doors should be built either in prims or sculpted, should we want them to look natural when pivoting around their hinges. Now, how would we model a mesh door having the same feature?

The case of sculpt prims may suggest us that we should, somehow, "modify the bounding box" of the mesh object, so we can offset the door and have the hinge in the center of the bounding box.

I will explain how to make these doors in Blender, because it's the program I use, but I hope that the idea I will develop will be easy enough for a Maya or 3DS Max user to follow. The final step refers to uploading the mesh to SL and setting up the object inworld, so then again that's common regardless of the program used to model the door.

I don't know if there are other ways of achieving the same result. I was exploring this one when I tried to offset a mesh object so particles would emit from the point I wanted them, and it worked. This made me think that it would work with doors too. I tried the concept, and it worked indeed. So having found this one method that can be used, I didn't pursue any other way: that's why I don't know if there are other ways of getting to the same place. If you know of another way, I'd like to hear from it. (Also, I'm not claiming this is my innovative idea, only how I got on my own to this place.)

I'm explaining now the whole process of creating a mesh door that will rotate around its hinge, over a mesh gate I released for the store.

This is the gate in Blender, still having the supporting pillar visible:


You may notice that there's "something" to the left of the pillar. If I now hide the pillar (H key in Blender) and go to the front view (NUM KEY 1), when I select the gate, the outlines tell me that apart than the gate itself, there's a tiny extra to the left:


By changing the "Viewport Shading" to "Bounding Box":


what we see is that the "tiny little thing" is extending the bounding box of my mesh gate:


Going back to "Texture" as "Viewport Shading", and then going to the top view (NUM KEY 7), we see better that this "little thing" is a small triangle:


If you've worked a bit in Blender, you know that each object has a special point known as "pivot point". We can change this pivot point to wherever we want, and within Blender, that will make the object to rotate around the pivot point. I'm pretty sure that Maya/3DS Max have a similar concept.

We could think that just by changing the pivot point to where the hinge is, that would be enough. But it's not enough. When we upload our model to SL, SL will only acknowledge as pivot point the point that is in the center of the model's bounding box. So if we want to have a pivot exactly where we want, we have to modify our model within Blender, extending the bounding box as needed. And how do we extend it? Simply adding a little triangle to either the top or the bottom opposite corner. Only a vertex will not work: it has to be a triangle. Make it small if you will, but not too small that you'll run into issues when uploading (btw, should you run into issues when uploading, check this thread, where Gaia Clary shares what she's found out so far regarding upload errors and what to do to fix them.)

We're not done yet.

Now, we want to assign one separate material to the little triangle face. Why? So once in SL, we can texture it separately, and simply make it completely transparent, so the triangle will not show at all:


Then we have to make sure of applying rotation and scale (CTRL A for the menu showing below, then choose "Rotation & Scale"). That will change all the local references of size and rotation so they will coincide with the world (global) ones. In less technical terms, it's going to save you trouble :o)


How is it going to save you trouble? For example, if you have a different rotation than X = 0, Y = 0, Z = 0, and then start modeling the physical boundaries of the door, it could happen that, once in the mesh uploader, you see that the visible geometry and the physics don't coincide at all: don't continue and upload, because once you have the mesh inworld, the physics will continue not matching the visible geometry. Instead, go back to Blender, apply rotation and scale, and export your models again.

I'm mentioning "physics" more than once. Does this mean that apart than assigning a material for the extra triangle alone, there's yet more work to do? Right, there's still a bit more we have to do.

We also have to create a physics model for our gate. Since the expected is that we can't walk through the gate, just a box makes the role of gate when it comes to physics. And check out the little triangle! We have to add it too in our physics model! Otherwise, we are in the same case than before: the bounding box will not be the same once in SL :-)


So we make sure that the physics model and the visible geometry have the same size of the bounding box, we make sure that the physics "box" will match the boundaries of the gate, and we're ready to export both the geometry and the physics as separate .dae files, and upload the gate into SL.

NOTE: Remember that you can work in wireframe mode (Z key in Blender) and also make more than one layer visible at a time (select one layer, then hit SHIFT and click on to a second layer: both will be visible). So you may have your visible geometry in layer #1 (say), then the physics in layer #2, and make both layers visible by first clicking on the layer 1, then hold SHIFT, then click on the layer 2. Also, remember that the numbers under the "Dimensions" boxes are telling you the size of the bounding box. The door and the physics model, ideally, should have the same numbers there :-)

Next step is uploading the model to SL. So we proceed as usual, and load our geometry:


Then we go to the "Physics" tab and load our .dae containing the physics. We should see the physics "embracing" the geometry, and the little triangle extending the bounding box, at the opposite corner:


Just a bigger view to show it better:


So with this, we upload our door to SL... And we aren't done yet!

Two more details :-)

First: Make sure that you texture the little triangle it being totally transparent. I like to use the "*Default Transparent Texture" from the "Library" folder, under "Textures" here, apart than raising the Transparency amount to 100, for one reason: if your door uses a script that changes the transparency of all faces, that would unveil the little triangle too. So if the texture is transparent, you will not have to modify the script so the little triangle face is skipped.


Second: Under the "Features" tab, make sure of changing "Physics Type" to "Prim", or you will not be able of walking through the part of the bounding box with no visible geometry :-)


Now, finally, our mesh door is ready to pivot around its hinge! \o/


Linked doors. More than one door prim. What to do?


At this point, we know how to build doors (drawers, etc) that will slide, or that will rotate around a pivot (their hinge). Whether they're made of regular prims, sculpt prims or mesh, we now know all the tricks. We also know how very basic scripts will work in very simple cases. We also understand why if we drop a rotation script in the root of a build, the whole build is going to rotate, not the door!

A note from experience as a customer: customers will greatly appreciate that the doors are linked to the build. Even though I know how to move the door and the build all together to another place, it's always a hassle having to remember. Normally, I move the build, realize that the door hasn't moved, undo, select the door, move everything again... It's annoying. It's annoying to an advanced user. So now imagine how this is for a customer that has no idea about what to do if, when moving the house, the doors are left behind.

When we want to have doors linked to our build, or we need our doors being composed of more than one object, or both, we have always to evaluate pros and cons of all the possibilities. If you wish to use one script per door-prim, and have unlinked doors, because to you, it's essential that the rotation happens exactly during 3.84 seconds and not the interpolation the viewers perform for prim-motion, then I will not be the one telling you not to do so. But remember that every script you add, adds to server side lag.

If you don't mind that the motion is the interpolation performed by the viewer, and prefer having all of your doors linked to the build and controlled by ONE single, low lag, script, then you can head to Marketplace and check out my own professional door script, which you can find here, recently upgraded to V2, that performs all the basic functions you would expect from a door script (change position, rotation, size), and then, quite a lot more of extra functions (vehicles compatible, interface with other scripts, AVsitter/MLP compatible, special features to create Murphy beds...), helped by a very complete auxiliary configuration tool, that will simplify your work.

Whatever your choice is, let it be an informed one :-)