27 November 2011


I've spent most of my time running around as a micro lately. The virtual world's a different place when you're only a foot tall. There's sculpted versions available, but I prefer the mesh version - if you've got skin and clothing textures you like you can apply them to the avatar. There's also prim wearables, vehicles, and furniture available for them.

I'm still enjoying the papillon breedables I got last month. The community group is very friendly, the toys are low lag and attractive, and if you set up the environment right you can pretty much ignore them and they'll still thrive. They're also good company while you're scripting. *grin*

The train-based project I've been working on with some friends has entered beta. I'm excited! I made a lot of the art assets on it. Sometimes the beta grid is down, so I've changed my workflow when doing sculpt/texture combos to include using sim-on-a-stick as a free way to check out how they look.

I purged several old products. Deleting entries from the current SLMarketplace is a painful process. First you have to remove the items from your magic box(es), then refresh so the delete option is available on that listing. Then you have to delete each listing one by one, since the page refuses to let you use the checkboxes to group command the listings. I'm still musing about which products I want to freshen up or rearrange and which I want to leave as-is.

I finally seem to be getting comfortable making mesh models with Blender. I'm still working on getting rigged models to work, but there were some changes made to Blender 2.6 that are supposed to help.

09 November 2011

Copy viewer toolbars from one account to another

To copy toolbar positions from one account to another in Viewer 3.2:

Shut down the viewer. Copy the toolbars.xml file from one acct to the other's folder. Restart.

Public Service Scripting Message

Only the most recent sensor event is queued. 
Previous sensor events are replaced. 

So, what does this mean to you? If you're using sensors, and you're sending sensor messages fairly quickly one after another, and the sim starts to lag... Your script appears to stop.

Every script has an event queue that holds up to 64 events. Normally these are given to your script in more or less a first come, first served order. If you do something that adds a sensor event (  a llSensor() or llSensorRepeat() call ) then the queue adds it to the end and removes any other sensor events in the queue.

I repeat: If you make a sensor call while you're still waiting for the results of previous calls, you will never see the results of the first call.

Scriptors often talk about problems or look over each others' code when it isn't working as expected. Sometimes another set of eyes can spot whatever it is that's driving you nuts. I've spotted this one in several "broken" bits of code this month, so I figure it's time to write it up somewhere. LSL has its quirks, and at least in a SL environment this is one of them.

08 November 2011

New viewer with customizable buttons, and a Humble interview

Spotted Rod Humble interviewed in an article about game innovation.

Trying out the new release viewer. I like being able to pick and position buttons. I'm still pissed that you can't move things around on the Inventory Recent tab (I really hope that's a bug and not a deliberate change!)

27 October 2011

Mesh clothes

Remember the mesh clothing deformer project? They're fully funded. I'm buttering that popcorn.

23 October 2011

So True! hahaha

If you've worked in the software industry or dealt with trying to keep a project on track, read this.

21 October 2011

Buying a sim? Buy now and pay no setup fees.

Want to buy a sim without paying setup fees?  I can't remember the Lab doing this before. I guess it will help answer the question about how much a barrier the setup fees are vs the monthly fees.

18 October 2011


I just finished a bunch of small Avatar Toolbox updates related to avatar masks or mesh along with pruning or replacing dead links.

I'm still thinking about how I want to write up deformer AOs and rigged mesh. Well, I'm trying to, but between the soothing movements of those butterflies in the picture last entry and the fact that I'm getting drowsy... zzz

17 October 2011


Old avatars never die. They just slowly gather moss.

10 October 2011

J is for Jira: Alphabet Game

So, what do you do if you find something wrong with the SL viewer or sim code? This isn't WoW where you hit a button and leave a message for a GM.

You enter a bug report into the SL Jira. It's used for bug reports and feature requests, not technical support problems.

I personally find using bug tracking software this way to be offensive. It's not designed for customers. Many people have no idea what to pick from all drop down boxes or put in the text boxes, much less how to describe a software problem in a way useful for a software engineer. Customers often find the interface confusing. In my snarkier moments, I assume the goal was to cut down the number of bug reports by convincing people not to bother making them.

You have to be logged into the SL website to see jira listings, which means you're stuck using the built-in search engine. I'd rather use Google myself. (That's how I find things on the SLMarketplace. I love being able to shop on the web but hate the half-assed search function.)

For those of you who code, the LSL Portal links directly to jira bug reports relating to specific functions.

Once you're logged in, you can vote or comment on bug reports in the system. Voting is a way to express interest. You can also follow a report so you receive notification of updates or changes in status.

06 October 2011

Would you like mesh clothes to just fit?

I'm making popcorn. There's an independent project trying to get funds to pay the former Qarl Linden (of sculpt map fame) to make mesh clothes fit by modding viewer code. Prim Perfect has the best wrap-up of the mesh clothing situation I've seen.

02 October 2011

I is for Inventory: Alphabet Game

Articles, blog entries, and tutorials about organizing and cleaning out your avatar's inventory abound. I always find things I never knew I had.

Remember to laugh now and again!

25 September 2011

Release Viewer, Masks and Shadows

If I'm wearing an avatar mask that makes the entire avatar invisible, I have no shadow.

If I wear a mask that covers part of the body, that hidden part appears on my shadow. Notice the pants legs, and the feet.

23 September 2011

Boosting the signal

Current list of viewers supporting mesh.

Viewer hair + shadows glitch

I was very excited today to realize that when I turned shadows on (in the release viewer) I was both seeing shadows and not seeing my alpha textures disappear! Pictures! With both hair and shadows! Squee!

But then I saw this... Noooo! What is this strange glitch around my avatar's head?

I began experimenting. It didn't appear on all my outfits. So I began taking thing off... No help there. But that shape was so familiar...

Aha! That's the shape of Ruth's hair! But why?

There's three ways to do bald hair.
1. Pull all the default hair lumps and bumps into your skull.
2. Use a transparent texture as the hair texture.
3. Wear an alpha mask that hides the default hair.

Some of my outfits use #2, and those were the ones that have the mysterious glitch. The solution is to either change your default hair to one that pulls all the hair lumps inside your head, or wear an alpha mask that hides default hair. Making an alpha mask that hides the default hair is much easier (just check the hair box when editing the mask!) so that's what I did.

The glitch does reappear when I've got the outfit in EDIT mode, but when I return to normal mode things look right again.

21 September 2011

H is for HTTP: Alphabet Game

HTTP with lsl

You can use llHTTPRequest() to get text information from the web. The free landmark HUD I offer uses it.

You can also run a http server inside the grid. Note the section about URL lifetime limitations! If you're doing anything beyond light testing you'll want to explore a URL-mapping service so sim reboots don't break your code.

20 September 2011

G is for Greyscale: Alphabet Game

Greyscale and 'tint' textures

A lot of people use greyscale tiling textures and gradients for texturing metal objects, but they're useful for more than that.

If you're looking to lessen lag on a sim or other large area, consider experimenting with prim color. If you make greyscale or tint textures (sepia, cool blue, etc) or a greyscale texture with a bit of color in some spots, you can use prim coloring to give the objects a bit of variety without requiring a lot of textures.

There's a couple items in the Library that use this. Grab a copy of the Sea Fan and see a greyscale texture in action.

To try a tint texture, grab a copy of Seaweed 1 from the same spot and change the prim color on it from green to white. Notice the white one has a bit of yellow on the top and light purple down in the center.

It's also handy with clothing. I've noticed a number of clothing makers that make one or two versions of greyscale textures and tint the various colors instead of uploading each color as it's own texture. I've used this myself, but I found that sometimes it's better to make a light greys version for pastels and a dark version for stronger colors, or to make a warm color version and a cool version.

Torley has a pack of greyscale textures that are fun to experiment with. There's also a couple in here scattered in the other sets.

16 September 2011

F is for Flexi: Alphabet Game

F is for Friday! Wait a minute...

F is for Flexible prims

Flexible prims were brand new to the grid when I signed up back in spring 2006. They're used for everything from flags and hair to tentacles and ballgowns.

Natalia's is still one of the best tutorial on using flexi prims.

If you want to make a more complex shape flex, it's possible to group flexi prims into units that move as one, although there are a lot of restrictions on making that work.

Flexi properties can be manipulated with lsl using the PrimitiveParams() functions.

15 September 2011

E is for Exporting Sounds: Alphabet Game

E is for...

I considered Environment (as in windlight) but right now I loathe the interface for it in the release viewer. Whoever came up with that needs to locked up in a room with 20 newbies and not allowed out until they can all make fashionista-quality snapshots. I can't see both shadows and textures with transparency at the same time, and I can't use shadows and antialiasing at the same time. The current release viewer is going through some rough times. I thought about Editing prims or terrain, but I'll save you the rants those thoughts inspired. E could be for Errors, but again with the rants!

So E is for Exporting sounds because that's something new I learned today. Cache location is on the Advanced tab instead of the Setup tab in the current release viewer, but everything else was right on.

14 September 2011

D is for DPW: Alphabet Game

Dept of Public Works

Do you like to travel? If you do, you've probably come across places the Department of Public Works built. Many of the public roads, railways, and seas on the mainland were made by them.

Three of my favorite places they've done are the funfair at Pyri Peaks (make sure to explore the Tunnel of Love), Rizal (a great place to go with a friend or three), and the Linden Memorial Park.

It would also seem that D is for Darn. Or maybe Disconnect.
At least the message made me laugh, right?

13 September 2011

C is for Color: Alphabet Game

Color. Prim color.

The color picker window on the viewer has several slots for you to save custom colors, but what about when you need more? Or what if you're working with a group and want to share colors? Why not make your own palette?

Rez a cube. I add a greyscale radial gradient texture to it, but that's up to you. Set it to full-bright. Copy the prim several times to make a row of prims. Link them together. Now as you pick colors for your project, set one of the prims in your palette to that color. Wear the palette as a HUD if prims are tight on your parcel, or leave it rezzed for collaborative building.

If you're doing scripting, you may need color information in RGB <0-1,0-1,0-1> format. Unfortunately the official viewer doesn't offer it that way in the color picker window. I add a root prim to my palettes (see that black prim behind the others on the top left?) and place this script in it. When you touch a color, it whispers the color information in that format.

  touch_start(integer p)
   integer linknum = llDetectedLinkNumber( 0 );
   list l = llGetLinkPrimitiveParams( linknum, [PRIM_COLOR, ALL_SIDES] );
   vector color = llList2Vector( l, 0 );
   llWhisper( 0, (string)color );

12 September 2011

B is for Bounding Box: Alphabet Game

Bounding box

How tall is your avatar? If you script, you know that while llGetAgentSize() claims to tell you, it isn't as accurate as getting the avatar's bounding box with llGetBoundingBox().

I am very amused that there's no way via script to guesstimate how thin or fat an avatar is. llGetMass(), llGetAgentSize(), and llGetBoundingBox() all assume default values for an avatar's x and y dimensions, and so any variation in their results is based entirely on the height of the avatar.

Add the following script to a prim and touch it to see how tall your avatar is.

    touch_start(integer total_number)
        key avatar = llDetectedKey(0);
        string name   = llDetectedName(0); 
        list BB  = llGetBoundingBox( avatar );
        vector size =  llList2Vector(BB,1) - llList2Vector(BB,0);
        integer feet = llFloor( size.z * 3.28084 );
        integer inches = llRound( (size.z * 39.37008)  - (feet*12 ));
        string meters = (string)size.z + " meters";
        string us = (string)feet + " feet " + (string)inches + " inches";

        llSay( 0, name + ", counting your shoes you are " + meters + 

                 " or " + us + " tall."); 

11 September 2011

A is for Animations : Alphabet Game


QAvimator is my favorite tool for making them. There are others though.

-The hip is the part that moves and rotates the entire avatar.
-The keyframe controls how your animation looks in SL. If the joint doesn't change between the keyframe and the second frame, it won't be moved by your animation in SL.
-Priority: 0-4. Don't be afraid of layering animations to get what you want. Built-in animations will encourage you to learn about how animation priority works.
-Hand and face 'animations' are morphs that you can trigger using scripts or attach to an animation when you upload it to SL. There's only a small selection to choose from, and sometimes they don't appear when the animation is triggered.
-Suggested joint movement limits.

23 August 2011

when did this feature sneak in?

I didn't know we can set a parcel to hide avatars on it. Secret workshops! Private meetings! Whoo-hoo!

16 August 2011

To the Second Life Official Viewer

Dear Official Release Viewer,

You know how sometimes you automatically download a new version of you? And once you've done that, did you know I can't do simple things like COMPILE SCRIPTS until I decide to run the update? And oops, you don't offer any kind of message when I try. Well...


Love, Me.

P.S Learn to leave my graphics options alone!

12 August 2011

Designing a Ferris Wheel

I've been building a ferris wheel for a customer. Design-wise it's an interesting puzzle. The wheel turns, but the cars/seats/carriages remain upright with the passengers inside.

The only way it was viable in the old days was to make each of the cars an object, and to have the wheel be an object. A seated avatar moves with the object it sits on, so the avatar would move naturally with the car. The movements of the cars could be coordinated according to messages spoken on a channel (requiring listeners in every car,) or they could use llGetObjectDetails() on the wheel to determine its rotation every so often and then place themselves in the proper locations. If you were a gambler, you could simply have the cars move along at every X time interval and pray they never got out of sync.

A ferris wheel using physics to allow the cars to hang as objects from the wheel is a disaster. Smaller sized physics objects (like a pole and ring for the car to hang with) develop strange urges to spasm wildly and fling themselves across a sim. When the pieces are large enough to behave, they are too far out of scale. I do recommend trying this - it's very entertaining!

Before llSetLinkPrimitiveParamsFast() was added to LSL, the 0.2 second delay for each prim would have broken the illusion of the spinning wheel if it was all one object. The other difficulty is that you must also move the avatars as if they were part of the linkset - moving a prim in a linkset with a sit target does not move the avatar sitting on it.

I made a demonstration one-object wheel using llSetLinkPrimitiveParamsFast() and four one-prim cars. I suspect quaternions are the lovechild of an insane mathematician and Cthulhu.

Moving prims in a linked object generates a surprising amount of scripting lag if you aren't just moving the entire object. The demo wheel with one avatar (5 individually moving prims in the linkset) averaged about 0.035s of script time. Surprisingly, sizing up to eight cars and five avatars (13 moving prims in the linkset) only used about 0.065s.

I've passed the eight car version on to one of the texturers on the team, and am looking forward to seeing the final product.

08 August 2011

Invisible Woman

I'd never gotten around to making an Invisible Woman avatar. Until tonight.

The original avatars (made years before avatar masks were introduced) had super-hero proportions in order to hide the default avatar inside. She's a good deal slimmer, and has smaller limbs since there's no need to try to hide the default avatar as it moves.

She's available at the shop in Kitaro.

01 August 2011


I found a freebie hover-board and a road...

I headed south.
Saw a lot of the usual stuff...
Parks and forests, houses, virtual horse ranches,
glowing meeroo hells...

This fellow reminds me of my old Easter Island Head Conference.

At the end of the road I found an amusement park. Most of the rides worked!

I haven't been out on the virtual roads for a while. I was surprised at the number of large plots sitting around unowned. I only saw one avatar - and he was afk.

21 July 2011

Musing about starting over

I've been having the urge to wipe out most of my inventory and start fresh. I've done the alt thing before, but this time I'm considering starting Storm over. Throwing out all those 2006 freebies, getting rid of the out of date clothes, dumping all those contacts I never see, etc. Maybe even starting with a fresh product line or two. What I've got now is a mishmash, over time a lot of it has aged, and my skills have improved.

29 June 2011


I was doing some blender/sl mesh today. The uploaded physics model doesn't appear to be working on the beta grid today, but I did have fun messing with the LOD feature.

30 March 2011


Changing your cloud texture is making the rounds... I like my sky to be surreal. How do you like yours?

12 January 2011

Particles trouble?

What I learned the other day:

If your particles ( llParticleSystem ) are being cut off by distance, make the prim they originate from larger.

Small prims get trimmed from your view first, and it seems their particle effects go with them.

... now I'm wondering if that's true for sound as well? Experiment time.

07 January 2011


Sometimes, this is so true. Even when it's entirely your own project.