.comment-link {margin-left:.6em;}
Moriash Moreau: My Second Life
Friday, September 30, 2005
Throwing the First Stone
As a break from crossing my eyes for hours on end, I've been busy churning through the mechanics of simulating a completely pointless activity: tossing pebbles into the ocean. I don't really know what possessed me to do so. I think part of it was the old standby, "because it was there." The Garden of Mo (see the link there on the right if you want to visit) recently expanded to include a small segment of oceanfront property. Or, more specifically, a piece of land at the end of the world. If you look at the grid map, you'll see that Louise is located at the easternmost edge of the mainland continent. So, if you look to the east, all you can see is calm blue ocean stretching off to the horizon. This is one of the reasons why Louise is a less-than-desirable piece of property: it's far off the normal flight paths, and right on the edge of the nearest telehub service range. But it is a compelling view, nonetheless. I'm hoping to improve it.

I suppose it's part of the developing theme of the Garden. Right now, it's covered in trees and modern concrete picnic tables, with nothing else visible at ground level. (My main builds are 50 or more meters above ground, out of casual view from ground level.) It's turning into a fairly good simulation of a smallish, poorly funded state park. I'm already coming up with weathered wooden signs that say "scenic overlook" and "nature trail" and such. Maybe I need a small, tasteful historical marker around somewhere.

From a technical standpoint, it was a somewhat more interesting problem than it first appeared. If the water were inland, I could simply have thrown a physical rock. Have it detect when it has fallen to water level, and trigger the splash effects. But, since there's an invisible barrier at the edge of the world, such a device would merely bounce off and fall to the ground. However, in trying to work around this, I discovered two things. First, particles can pass right through this barrier. Second, so can prims, provided the insertion point for the root prim remains inside the sim. I suppose both of these are obvious extensions of normal behavior. Particles are client side, and are thus not limited by the server's need to keep all its prims inside its own boundaries. And I'm sure we all have - either accidentally or on purpose - parked an object across a sim boundary. I just hadn't really made the connection until recently. These little epiphanies are the start of many a project.

In this case, I ended up sticking a particle emitter on the end of a 25m pole. The user sits down on the bench, and the bench captures his mouse button to trigger throws. He presses his mouse button, and the splash emitter rezzes itself and moves into position with its root prim just inside the sim border, and its emitter well out beyond the edge of the sim. (The splash emitter assembly is coded to vary its coordinates somewhat each time its rezzed, so its never in precisely the same place twice.) Once in place, the splash emitter shouts its key, and the stone throwing emitter (an invisible prim built into the bench, placed approximately where the user's hand is located at the end of the throw animation) sets it as the target. Once the target is set, the throw animation is activated, and the thrower emitter launches a single blob of particles (the stone itself) in a long pseudo-ballistic arc, with the splash emitter at its end. After a set time interval, approximately when the stone particles hit the splash emitter (determined in advance by trial and error), the user sees and hears a splash out in the water. Then the splash emitter deletes itself, and we're ready for another throw. Kind of a circuitous route for something as simple as creating the illusion of a thrown rock, but it seems to work pretty well.

I suppose this wasn't the simplest way to do things, all told, but my narrative requirements ended up painting me into a corner. See, I wanted as few impediments between the user and his casual ability to toss a pebble into the drink. I expect that I put entirely too much thought into this, honestly. I blame it on my fond childhood memories of lobbing rocks into the pond and scaring away all the fish, much to my relatives' consternation. By its very nature, it's a casual, unpremeditated thing. You see a stone, you pick it up, you toss it into the water and watch the splash. I didn't want to add "you touch the rock thrower dispenser, click 'yes' to accept the object, attach the resulting rock throwing attachment, and answer the permissions box" to that list. (I also didn't want to either make an attachment that only worked on my land, or was sophisticated and self-contained enough to work on any body of Linden water. Maybe later on the latter.) So I settled for a fixed "rock cannon" on a bench. When a user sits down on a scripted object, the system assumes that he allows animations, key captures, and such. Otherwise, players would be bugged by permission windows every time he sat on a pose-enabled chair. Now, all the user must do is have a seat and click to toss a rock. There's even a convenient pile of (inert prop) stones on the bench to make the suggestion. I think that's probably casual enough.

Another approach might have been to mathematically predict the ballistic arc of the rock particle (using some basic high school physics- this is the ideal friction-free environment the teacher always told you to assume) and toss the splash emitter at its expected point of splashdown. I don't see any reason this wouldn't work, and I may end up doing it at some point, but for now the cheater method I used (having the rock attract itself to a randomly determined set of coordinates) looks pretty good.

The most maddening thing about the project was the animations. If you look at the Linden "throw_r" animation, you'll see that it pivots the torso 45 degrees to the left as the avatar throws. This is natural for a baseball pitch, where your whole body is put behind the throw. But when you're just casually chucking something from a seated position, it looks pretty odd. The avatar, for no apparent reason, decides to twist 45 degrees to the left to throw his rock. After an hour or so of shopping, I could find no alternate throw animations. (Yes, I know I could hire someone to do it custom and/or buy and learn how to use Poser. Umm... No. Not to throw rocks.) So, well, the user just throws his pebbles off to the left. Not a big deal. Just a matter set design. That's what the trees and rocks off to the avatar's right are there for. His line-of-sight on the right is blocked, so he tosses to the left instead. Good enough!

And, well, there you go. That's how I added the ability to throw rocks off the edge of the world to the Garden of Mo. You can wake up now. It's over.
Tuesday, September 27, 2005
Telador in 3D
This time, I've taken a set of stereo images of one of my favorite sims, Telador Island. From what I gather, Telador is intended to be a follow-up to the Myst and Uru games. And from what I've seen so far, they've captured the feel of a Myst world quite well. The pictures don't do it justice.

If you're interested, I'm compiling all of these stereo photologs offsite at PsychicGoldfish. (The Burning Life 2005 pictorial is also there, if you haven't seen it yet.) There are also tutorials, for those of you having trouble getting your eyes to cross properly.
Bora Bora in 3D
Hey, look! It's another collection of cross-eyed stereo 3-D images of SL locations! Isn't that exciting? This time, it's Bora Bora island, a sim-wide shopping complex with a Mediterranean motif.

Gold Coast in 3D
Here's another of what promises to be a long series of 3-D stereo images of Second Life's sights. This time, it's Gold Coast island. I don't know much about the island, actually, but I was impressed with the tropical metropolitan feel of the shopping, residential, and entertainment complex.

More to come!
Monday, September 26, 2005
Simcast in 3D
Here's another batch of 3-D stereo pairs (cross-eyed view). This time, it's the Simcast island. Basically, the island is a 4-sided battle arena. The grounds are covered with assorted bunkers and debris, with roughly the same arrangement in each quadrant. In the corners are four fuel dumps (the shiny gray storage tanks in some of the pictures below). A central control tower hovers above a river that bisects the island. It's an impressive build, even when there's no action going on.

Well, that's all for now. Over the next indeterminate time period, I plan on posting more stereo sets of various islands and large-scale builds I've found in my wanderings.
Sunday, September 25, 2005
Futile Rant #3: Shotgun Pattern
I keep telling myself I'm going to write long, insightful (oh, stop laughing) posts on some of the issues that have come up in Second Life. Sometimes, I even get around to starting them, just to delete them when I realize I'm rambling ignorantly on something I don't understand well enough to form an educated opinion. Well, I've decided that personal ignorance is no reason not to spew my unadulterated, half-considered opinions onto my own weblog. That's what it's for! But I'll keep them brief, anyway. Everyone hang on to your drawers. Here we go!

On Webcomics in SL - We need more of them. Come on, guys! Technically, it's just not that difficult. Sure, there are a few hurdles, but they're not that high! Drop me a line, and I'll be happy to give you all the advice you can stand.

I was massively irritated by the reception Second Theory was given in the Herald comments. Not by the Herald staffers themselves, who were very supportive, but by the usual gang of miscreants. There's nothing like an oh-so-supportive "...why are you still making this crap?" to encourage someone to refine their craft. What exactly can be gained from a comment like that? Is having this comic in the Herald costing you anything? It's not taking space away from other stories, or distracting anyone from more vital issues, or costing anything except an extra couple of moments to read or scroll right past. And, frankly, if you have time to log in and post comments like that, your time clearly isn't that valuable. Is your life really so poor, are your moments of triumph so fleeting, that you must get your rocks off by bashing something completely inoffensive while hiding behind a net pseudonym?

On Linden's Involvement in the Money Market - I haven't really been following the whole controversy surrounding the proposed addition of money trading to the Linden services. But I do hope that the new feature, when it arrives, is well hidden. I would hate to see a new player confronted with some variant of "Give us more money to get more Linden bucks!" right off the bat. Real-money-for-virtual-money is kind of a tricky concept for the uninitiated. Most non-players and new players don't equate Linden tender with real money yet. So telling them to go buy more fake money before they fully understand the economic ramifications just makes Linden Lab look moneygrubbing, and casts the whole game in a poor light. (Yes, I know the Linden proposal is to provide front-end for established third party services, but I think that distinction would probably be lost on the average newbie.) SL is what you make it. It can be all about the money, if that's the game you want to play. But that's only one of many options. I think seeing the "$500" in the upper right corner of the window is all the newbies need to see for now. Let them get their feet wet before apparently asking them for more money.

On the "Stalking Tool" - I went off on this at some length elsewhere. I still feel generally the same way. Just because you have a tool doesn't mean you should use it. The same rules of courtesy apply in SL as in RL. If you want to see someone, call ahead first. Don't just appear on their doorstep. And if they say they're busy, go find something else to do!

On Burning Life 2005 - And the amount of promotion (or lack thereof) it was given. This one will be brief: oh, just dry up, everyone! Linden Lab provided 6 sims to play in, gratis. And, to put it concisely, it rocked. Are you honestly bitching because they didn't yell about it loudly enough to suit you? I'm not saying you should fall all over yourselves bowing and scraping in gratitude (here's the definition, if you are puzzled by that word), but perhaps a "Gee, thanks guys, that was really neat!" might be in order? I swear, some of you folks could be given free ice cream, and you'd complain about the flavor.

Oh, and by the way, they did promote it. I know this, because I found out about it. You found out about it. Everyone found out about it! It was in the announcement forums. It was in NWN. It was in the login message. If you paid the slightest bit of attention, you knew about it. Your engraved invitation must have gotten lost in the mail, I guess.

On Linden Bashing, and My Chronic Exhaustion - Dry up, take two. I know this is going to mark me as a sycophant and an apologist, but I'm getting tired of the flaming.

I'm tired of watching the same people twist and bend every single decision until it becomes a personal insult.

I'm tired of every change being greeted by the same vocal minority proclaiming that said change isn't fair and/or will destroy Second Life as we know it.

I'm tired of hearing "How could you do X when Y is still broken/undeveloped/not up to my standards?!" I mean, good grief, some people actually complained about Pony Linden for this reason. Lighten up, guys!

Second Life, taken as a whole, is excellent. And you know it or you would have moved on by now. 99% of the complaints are over fringe issues and technicalities. Granted, many are important fringe issues and technicalities, but they're a tiny part of SL as a whole. Keep that in mind next time some bug or missing feature expands to fill your entire horizon.

Here's an idea. Before you make your next venomous forum post or weblog comment, preface it with "Second Life is freakin' awesome, and I enjoy using it for many hours a week." Then read that line again. Reread it until you mean it. (And if you can't honestly say that, even to yourself, why are you still here? Plenty of other things to do with your free time and, frankly, you're just wasting sim resources moping around here.) Then you can delete it, if you must. Now write the rest of your post accordingly. If you can manage to complete your missive without feeling like an ungrateful jerk, you've probably struck a more appropriate and reasonable tone. (Either that, or you're an amoral putz with severe entitlement issues, and you'd do us all a favor if you evaporated from the SL scene, stat). And you've probably also written a post which might actually be listened to. I'm not saying you should be a bootlicker and grovel at their feet. A simple, cordial correspondence from a reasonable adult would do.

I get so very, very tired of twits screaming "U GUYZZ SUXXORS!!1!" then acting surprised when their complaints aren't addressed. I think this is a bleedover from the net proper, where everyone seems to feel that their anonymity gives them license to act like complete assjacks. But we're a smaller community here, and one with the privilege of actually having contact with people who can and do change the way things work. At least for a little while, until SL becomes too big to listen to the individual voice (like Everquest or WoW). Don't waste that chance by being a whiney twirp, and rendering your own voice null in the process.

Ah... I feel better now. Anybody got a cigarette?
Sunday, September 11, 2005
Burning Life in 3D
I've just finished with a 3-D photo documentary of Burning Life 2005. It contains 51 3-D stereo images of exhibits from BL-05, by far my most ambitious virtual stereo photography project to date.

Due to popular demand (ok, one reader), the images are offered in both cross-eyed (convergent) and wall-eyed (parallel) versions. So if you haven't been able to see the cross-eyed images shown here before (also archived here), but you've mastered wall-eyed viewing (such as used for those random dot stereogram posters that were popular in the nineties), here's your chance! And if you have no idea how to view these, I've also compiled a list of tutorial sites that might help you out. Soon, you'll be free viewing 3D images and getting severe eye strain, just like the pros!
Saturday, September 10, 2005
Hall of Mori's
It's amazing what you find when you're cleaning out your screenshots folder.

Saturday, September 03, 2005
Mo-Tech Cruiser
Today, I decided to take a break from Plywood and tinker with another project. Well, that's not quite right. I needed an airplane prop for an upcoming strip, and decided to go ahead and make it into a fully functional vehicle. It's not perfect yet, but I'm pretty proud of how it's turning out.

I've never attempted a vehicle before, so I ended up swapping in a standard Linden airplane script for now. So there's nothing too exciting about the flight mechanics. Right now, it flies pretty well. But, like all SL aircraft, it easily goes out of control. I'm going to have to do a fair bit of tweaking (or more likely a complete gut-and-redo) to get it really workable. At this point, most of the work has gone into the actual prim model and the customization menus.

Here's an overall view from the front. As you can see, I've built yet another egg-shaped SL airplane. Because there just weren't enough of those around! Actually, that was more or less deliberate. Since it started as a prop for the webcomic, I originally wanted to make something distinctly recognizable as an SL vehicle. It then grew from there.

Here's a view from the top. As you can see, it's a small (about 6m long) single seat aircraft. The twin particle thrusters are fully customizable from a dialog menu. The starting and ending colors can be selected from 10 presets, picked at random, or even pulled from a user-defined custom color vector in a notecard. The length of the thrust flame can also be adjusted (short, medium, and long settings). This is a medium length jet, starting at yellow and fading to red. There's also a low, rumbling rocket noise sound effect. I created it by blowing into my microphone and running the resulting sound through a few random filters.

Here's a view from the underside. I've got the hover jets turned on (the bluish-white nimbus at bottom). I'm not certain how I'm going to make those work at this point. I've tried various schemes using collisions and sensors to activate the effect automatically when the craft is near the ground. So far, the results have not been dependable. I suppose I could check ground heights, but I'd also like them to activate on prim surfaces as well (like the prim-runways at Abbots). In any case, it looks pretty cool. And it's definitely more science-fiction high tech than conventional landing gear. The hover jets form two toroidal "pillows" of particles underneath the craft, and generate a crackling hum when active.

As I mentioned above, the thruster colors can be changed using a touch-activated dialog menu. The same is true for the chassis, trim, and canopy glass. Some of the combinations are pretty horrible, actually.

I'm especially proud of the cockpit. The pilot sits in a comfortable-looking leather seat, and steers by means of two tank-style steering levers. No, I don't know how one would steer a vehicle in three dimensions with such a mechanism, but the freebie Abraham Lincoln pose was too perfect to pass up. It looks like the pilot is in the process of reaching for the control panel with his left hand.

Speaking of the control panel, check out the texture. Yes, it's just a picture of an airplane cockpit, cropped and chopped to fit. But it still looks pretty convincing.

I've got the canopy open for this picture. The canopy open/close mechanism is suitably sci-fi. On touch, it simply fades out of existence. Or, more precisely, it cycles from translucent (alpha 0.5) to completely transparent (alpha 0.0). I originally had the canopy glass retracting into itself (by dimpling the cut-sphere of glass from the nose back), but when the dimpling changed, the game kept reading it as an intersection between a solid object and the pilot. So the pilot would eject every time the canopy was opened or closed. Vexing.

So, instead, the canopy fades from view. Then, once it's invisible, it quietly flips itself around (changes local rotation) out of the way. Net effect is that the canopy glass appears to disappear on demand, and reappear after 15 seconds or so (long enough to take a seat or disembark). Not exactly the effect I wanted (the shrinking window-glass effect looked better), but still pretty slick.

Anyhow, I don't know if I'm ever going to sell this. So far, the only items ever purchased from my vendor have been bought by me to test the scripts. I may just keep it for myself and save the documentation work. In any case, it felt good to just do some building for building's sake again.

Addendum, 9/5/05, 12:50pm:
Gave up on the hover jets mentioned above. The blue particle "pillow" effect looked pretty good sitting still, but it had the bad habit of filling the cockpit with fog every time I descended. So, instead, I went with rotating thrusters. In hover mode, the thrusters rotate to point downward. I think it looks cooler that way. And since they're purely cosmetic (would that motive force could be packaged in a single solid block in the real world), that's what counts.

The behavior of the craft changes in hover mode. When in conventional flight, it behaves like a reasonably responsive and forgiving jet. It banks, rolls, pitches, and yaws as one would expect. When hovering, the craft no longer banks, rolls, or pitches. It always remains upright (as shown below). Instead, it ascends and descends like a VTOL aircraft. It's also slower and easier to control for fine maneuvering. With practice, it can be landed on a dime. Nice for those sudden-death runways floating 300m in the air.

I've also added some basic camera controls, so that the pilot can either view the craft from inside the cockpit, or from a chase camera 15m behind. The frame of the craft also turns transparent (from the inside) when the pilot is in mouselook. This allows the pilot a little extra visibility underneath the craft, which is handy for landing.