Archive for July, 2007

Does Wired Magazine do justice to the reality of SL?

Friday, July 27th, 2007

Two Squabbling Reporters

There’s a fair bit of squabbling going on over Frank Rose’s recent article for Wired Magazine, How Madison Avenue Is Wasting Millions on a Deserted Second Life. New World Notes editor-reporter Hamlet Au took a few jabs at the Wired piece, and Frank Rose fired back in a comment.

Au tips his hat to Rose’s chutzpah in trying to remove the wool from the corporate eye, but asserts that the article is riddled with the popular media myths and untruths about Second Life. Au suggests that Rose is too inexperienced with SL to know truth from fiction—that he just doesn’t get it. It seems that Frank Rose is just one more of those silly, misinformed media reporters who couldn’t tell an avatar from his own ass.

In response, Rose takes a scapel to Au’s article, systematically cutting off its supporting evidence and leaving it castrated. Rose points out that the New World Notes piece itself suffers from the hype, half-truths, and blindness that Au accuses Rose’s article of possessing. Perhaps Hamlet Au is not as infallible as he likes to believe.

Here we have two reporters, swatting and spitting at each other. Which of them is right?

(more…)

Recruiting for content innovation and inspiration play-group

Tuesday, July 24th, 2007

Here’s the skinny: I’m looking to gather a small community of SL content creators of all types and experience levels. What for? To foster creativity and innovation in SL content, and have a good time doing it!

  • Get friendly feedback, tips, and suggestions about your works-in-progress!
  • Be inspired by seeing what other people are making!
  • Teach or attend workshops to hone your skills or broaden your horizons!
  • Challenge yourself and make the best content of your Second Life!
  • Meet interesting and creative new friends!

More information and fewer sentences ending in exclamation marks, after the fold!

(more…)

Monster functions: LLManipTranslate::handleHover

Saturday, July 21st, 2007

It starts off innocently enough:

BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask)
{
    // Translation tool only works if mouse button is down.
    // Bail out if mouse not down.
    if( !hasMouseCapture() )
    {

Three hundred ninety-six lines later, we come to the end of the function:

    dialog_refresh_all();		// ??? is this necessary?
 
    lldebugst(LLERR_USER_INPUT) << "hover handled by LLManipTranslate (active)" << llendl;
    gViewerWindow->setCursor(UI_CURSOR_TOOLTRANSLATE);
    return TRUE;
}

One function.

Over 400 lines long.

Not intimidating enough for you? Here’s a sample of what some of those lines look like:

            // snap to planar grid
            LLVector3 cursor_point_agent = gAgent.getPosAgentFromGlobal(cursor_point_global);
            LLVector3 camera_plane_projection = gCamera->getAtAxis();
            camera_plane_projection -= projected_vec(camera_plane_projection, mManipNormal);
            camera_plane_projection.normVec();
            LLVector3 camera_projected_dir = camera_plane_projection;
            camera_plane_projection.rotVec(~mGridRotation);

This is one of those functions that makes your eyes go blurry and your head start to hurt until you curl up into fetal position and question the existence of a merciful god.

Oldbie Blitz Build

Monday, July 16th, 2007

Tonight, I went to the Oldbie Blitz Build event at NCI Kuula! I didn’t have any plans, but one of my former students (and now a very talented NCI instructor in his own right), Locke, made an announcement in group chat, and I just happened to see it!

The theme was “Space”. We had 40 minutes to build something using 40 prims or less—so, quite a different scale than the rules I’m used to from Building Shelter, 10 minutes and 25 prims. I had a ton of fun building! A couple days ago, I had noticed that I hadn’t done much building for fun as of late, so this was a great opportunity to dust off the ol’ torus-twisting finger.

Here are the entries after the 40 minutes were up. Can you guess which one is mine?

Oldbie Blitz Build Entries

If you said, “That twisty, colorful one in the corner, of course!”, you’re right!

It’s a fun and relaxing build to look at, especially with the sun set to midnight (World -> Force Sun -> Midnight)! Several slowly-spinning swirly shapes to stare at, plus lovely luminous light-prims to lure you in! It’s called, “The Colour Out of Space”, after the short story by H.P. Lovecraft. Thankfully, unlike the titular essence of the story, my build won’t slowly consume the lifeforce of everything nearby!

I’m quite pleased with how it turned out, so I’ve set it up in my garden:

The Colour Out of Space

Want to see it for yourself? Please drop by my garden in Hallasan and take a gander!

Wish: Male/Female Avatar Slider

Tuesday, July 10th, 2007

Ever wanted to make an androgynous/intersexed/nonsexed avatar? Perhaps a robot, or an alien, or just a plain old tomboyish girl or slightish guy?

There’s no good reason why the Male/Female avatar control has to be an either-or affair. It’s the same base mesh in both cases, so we could morph between the two shapes in the same way that all the other avatar sliders morph between two (or more) variations.

The one technical issue that would need to be resolved is certain “sex-specific” sliders: the breast size, gravity, and cleavage sliders for women, and the discreetly-labeled “package size” for men. The simplest solution would be to hide/show them based on which half of the “gender spectrum” the avatar is on. A better solution, i.e. one which offers more choice to the user, would be to always show all the sliders, regardless of the sex of the avatar. (Plus, I bet the newbies would get a kick out of making brawny men with thick beards and voluptuous breasts, as their first adventure on Orientation Island.)

The best solution, of course, would be to forego having male and female base shapes at all, and instead define a selection of qualities of the body which contribute to someone appearing masculine or feminine. (Of course, there would be “Man” and “Woman” presets, for users who don’t want to spend a week getting their avatar just right.) But it’s too late for that, unless we were to scrap the current generation of avatars and start over—a worthwhile but substantial endeavor; the type of endeavor that people are given jobs and paid salaries to do.

I can has Communicate?: Reprise

Tuesday, July 10th, 2007

Do. Not. WANT.

After hearing accounts from people who have been able to do more than just look at a screenshot, I’ve realized that I was wrong: the Communicate window is not sexay. It’s an abomination, a Frankenstein’s Creature of communication methods!

Ok, ok, maybe that’s being a bit dramatic, but it seems that the reality of it isn’t up to par with the glowing possibilities in my ever-optimistic imagination!

“Do. Not. WANT.” was too good to pass up, but my view is more accurately represented by the following lollisms: “Your Communicate XML. Please to show me it.” and “OH HAI I’z just fixin ur UIz.”

(I just hope they don’t make it too hard for us to revert to the old UI. Toggle buttonz plz kthxbai.)

Wish: Algorithm-Driven Attributes

Sunday, July 8th, 2007

What I want to do:

Bind the rotation channel of an object to a sinusoidal wave function for smooth, client-side swinging/rocking motion.

Some cool stuff you could make with driven rotation:

  • A swinging hammock.
  • A rocking chair for granny.
  • A weeble that wobbles but never falls down.
  • A chintzy Felix the Cat clock with pendulum tail and moving eyes.
  • A Gothic church bell that swings convincingly.
  • A tree branch that seems to move in the breeze.
  • A boat that seems to gently rock and sway in the water.
  • A bird that flaps its wings convincingly.

Other cool stuff you could do with generalized algorithm-driven attributes:

  • A prim that “breathes” in and out (slowly grows/shrinks).
  • A prim that moves in a circle, ellipse, figure-8, etc.
  • A torus that pulses and grows over time.
  • A carousel that goes ’round and ’round, while the horsies go up and down.
  • A flexi clump of seaweed that waves side-to-side hypnotically.
  • A glowstick that smoothly changes color in time to music.
  • A flower bud that slowly opens and becomes vivdly colored to greet the sun.

Notes:

  • Motion is client-side only; collision detection won’t work in the expected way. This is already the case with rotation set on a nonphysical object using llTargetOmega.
  • Server-side bindings could exist in the future. They would be updated relatively infrequently (only a few times per second), while client-side interpolation keeps it looking smooth.

Interface:

llDriveAttribute( [attribute, algorithm, parameter1, ..., parameterN, ...] )

This interface is future-proof: new attributes, algorithms, and parameters could be added later, without breaking existing content.
Note that multiple parameter sets can be chained together for one function call, similar to llSetPrimParameters or llParticleSystem.

Implementation notes:

  • Select from a set of pre-defined algorithms which take parameters for tweaking. Proposed initial set:
    • SIN_WAVE: Sinusoidal wave. Parameters: duration, amplitude, value offset, period, phase shift.
    • TRI_WAVE: Triangle wave. Parameters: ibid.
    • SAW_WAVE: Sawtooth wave. Parameters: ibid.
    • LINEAR: Constant change. Parameters: duration, slope, value offset
  • Regarding “duration” parameter: Motion stops after this many seconds. Can be non-integer (float). Can be FOREVER (-1.0). Can be STOP_NOW (0.0).
  • Parameters are sent to the client with the time that it started. This allows all viewers to remain in sync, even viewers who arrive after it has started. All algorithms are parametric (based on real-time); the algorithm can be evaluated at any point in time, without needing to evaluate earlier points in time to ‘catch up’.
  • A one-time synchronization between the sim clock and the client clock would be necessary to properly know how much to adjust the current time when evaluating the algorithms.

I can has Communicate?

Thursday, July 5th, 2007

I can has Communicate? So I was reading Torley’s post about bug reporting, following the links and having a grand old time, when I noticed something I’ve never seen before

Hey, what’s this?! I quetly thought to myself (and shouted aloud, startling my cat).

After some preliminary investigation (i.e. looking at the picture), I deduced that this is none other than Uiwindowus communicatus, commonly known as the Communicate Window, in its only known natural habitat: the First Look client.

Many of you probably know that Linux users won’t be chatting it up with voice any time soon. I don’t mind that so much, but I sure hope we get our pengi flippers on this sexay Communicate window! I lurve me some new UI floaters!

Cuddlefish

Sunday, July 1st, 2007

Cuddlefish