USCSS Conrad 7 : Computer interfaces

The Conrad is a bit more than just a backdrop build; there’s a story here that I want to tell. The general idea is that you can explore the Conrad, enjoy the ambiance and discover the fate of her crew through interacting with the environment.

I’m sure anyone who has played any games in recent years is familiar with the idea of finding books, logs, or other information scattered about the world. Each game presents it in a different way. This is the mechanism that I’ve settled on for telling the story of the Conrad – SL doesn’t really give me a lot of choice there, but I guess if it’s good enough for Skyrim and Deus Ex it’s good enough for me!

The question is: How can I present it in SL in a way that both works to tell the story and doesn’t break the immersion in the scene?

I’ve tried several different options. The simplest for presenting some text to the user is for an object to give them a notecard, but that really seemed to take me out of the scene. “Hey, here’s a glaringly obvious SL mechanic!” Notecards are also very plain. I can embed pictures, but only as a clickable link. There’s no bold or italic and no control over the font at all. I definitely want richer text than notecards can offer.

Next I went down the route of using web media on a prim. On the face of it this was ideal, but this too came with some problems. First is that I know a lot of people either disable this feature entirely or set it not to auto-play. Sure, I could front-load the experience with instructions to turn this setting or that setting on, but I want to keep that to a minimum. The second problem is that you always get that floating media toolbar over it, something that again breaks the immersion.

What I’ve settled on so far is to use a prim, texture and script based system to present computer screens in the build with interactive elements:

Conrad PC_001

The screen in the picture above has an LI of 4 and contains two interactive windows displaying transcripts of voice logs along with other data. The documents are images, so I can construct any degree of “richness” for them in Illustrator – there are limitations on resolution, of course, so there’s only so much I can get in there but it’s accommodated everything I’ve written so far well enough.

The windows themselves are interactive in that you can scroll up and down the documents they contain using either the up/down arrows on the scroll bar, the top/bottom buttons or by just clicking on the body of the document and dragging it up or down.

The scrolling is accomplished by using llDetectedTouchUV to track mouse clicks and drags and then llOffsetTexture to shift the content. There’s a little mathematical fiddling in the script to preserve the correct aspect ratio of the content no matter the shape of the window prim.

It’s not perfect but it checks a lot of boxes on my wishlist, particularly:

  • Rich text – no limitations; I can do anything I like in an image.
  • Immersive – no floating toolbars, no SL mechanics, no nothing; you just reach into the scene, touch things and the things react.

The downsides are that the size of the document is going to be limited by the maximum resolution of SL textures. There’s only so much information I can fit into that space but my experiments confirm that it should be sufficient.

I intend to use this technique in several places – there will be a combination of text sources, on desktop computers, PDAs and other devices scattered around the Conrad. The build is designed to lead you on a particular path through it but knowing what a contrary and awkward kind of person the average SL user is (but I love you all, really 😉 ) I’m trying to keep the narrative coherent enough that you can piece it together even if you totally ignore the sequence cues.



USCSS Conrad 6 : Facehuggers 101

My last post showed that one of the props I’ve built for the USCSS Conrad build was a Facehugger. I guess that means the cat’s out of the bag about the whole thing being an Alien tribute.

Making the Facehugger was a little out of my comfort zone but ended up being a lot less trouble than I expected for such a complex organic shape. In this post I’m going to run through the steps I took to create the mesh and textures. A lot of this is going to be specific to the tools I use, like Lightwave, but I’m going to talk in general terms as much as possible so that it’s applicable to whatever tools you’re using (hint: not Lightwave – I think I’m the only one left using it for SL!).

Building the Mesh
The Facehugger has a symmetrical structure; on each side there are four digitals (or “legs”, if you’re not a synthetic – I’m looking at you, Ash), a breathing sac and half of the tail. That gives us six things per side, so I began with a short twelve sided cylinder. I pulled the vertices at the back out to give it a more elliptical shape, and wider faces to serve as the roots of the breathing sacs.

The first four polygons on each side I extended out into the legs. At this point I’m just roughing things out so I just extended the edges using Lightwave’s bevel tool which allows you to extend out a polygon along its normal and scale the result at the same time. Three applications got me legs with two very basic knuckles on each.

I similarly beveled out the extended polys behind the legs to form the breathing sacs. Another bevel on the top rounded out the back of the creature a little.

Mesh 01

Now that I had the shape of the creature roughed out I started working with it as a subdivision surface. Hitting Tab in Lightwave toggles between mesh and subdiv, so I was switching back and forth, refining the mesh to create a more detailed subdiv surface.

I added more detail on the bottom of the creature, beveling it into a hollow then scaling the vertices inward and beveling again to create the hollow proboscis.

Mesh 02

This looked like it was going in the right direction so I extended the tail, finalising the overall shape of the thing.

Mesh 03


Next up it was time to refine the detail of the Facehugger. This involved a lot of switching in and out of subdiv mode, dragging vertices around and scratching my head while looking at reference material.

The biggest change was the rebuild of the legs. They needed to have knuckles rather than just be straight. Everything after the end of the first poly was amputated and rebuilt with boxy joints that would pull the subdiv surface out into the knuckles I needed. This left the base mesh looking a little lumpy,

Mesh 04

but it worked a treat for the subdiv surface.

Mesh 05

At this point I was happy enough with the basic shape of the subdiv surface so I froze it into a mesh (Ctrl+D, in case you were wondering how Lightwave rolls) and looked to the UV maps.

There’s just no good way to unwrap a mesh this convoluted. You can break the thing up into dozens of UV islands that make efficient use of the map space at the expense of making the thing practically impossible to work with. In the end I elected to split the mesh into top and bottom halves, unwrap each separately and then plonk them down next to each other. This ends up with a fair amount of dead unused space on the UV map but it’s a map you can work with in 2D painting packages quite easily. Everything’s swings and roundabouts.

Mesh 06

So, now things need more detail. Time to break out Zbrush!

I exported the UV mapped mesh as a Wavefront OBJ file (I know Lightwave has GoZ now, but it just doesn’t work in a useful way) and imported it into Zbrush as a new tool. There’s not a lot interesting to say about the Zbrush process – if you know Zbrush then you can imagine it all already. If you don’t, well, nothing I can say will make it clear.

I moved from mouse to the Wacom tablet and added detail to the model in Zbrush, ending up with a super-high poly model with ribbed flesh, extended knuckles and all kinds of lightly nauseating detail around the proboscis on the underside. I could probably have accomplished the same results in Sculptris but I was feeling crash-averse that day and opted for Zbrush.

Mesh 07

I exported the high poly model from Zbrush and used that with the original mesh to create a normal map in xNormal. Both models were in Wavefront OBJ format which xNormal likes well enough. A little fiddling with the settings got me a clean normal map.

Texture 00


I fed this normal map to Knald and it obligingly generated me height, concavity, convexity and ambient occlusion maps from it.

Texture 01

There’s a lot of useful information in these different maps – layering them together in a 2D package like GIMP with different blend modes can create some interesting effects. I played with this for a while until I got something I was happy with, then painted in more detail like the red, fleshy underside around the proboscis. This comprised several layers: colour, highlights, blue veins, red veins, more highlights. I added some more colour with a textured brush over the top of everything to produce a diffuse map for the model that, I think, worked pretty well. I wasn’t too precise with things since a little randomness enhances the overall organic feel of the model, I think.

Texture 02

I also used a similar process to create a specular map that gave some low shine over the creature’s body and a slippery gloss around the fleshy underside.

The final stage was to use Lightwave to arrange the low poly model in several different poses as required for the overall build – curled up and dead, flat out and dead (and more, perhaps not so dead 😉 ).



Uploaded to SL this looks just as good as I’d hoped when I began the build. The land impact is relatively high at seven, but with a shape this complex I was never going to get away with much less while preserving the silhouette – the Conrad build has a heavy emphasis on lighting and shadows so the silhouette of the model was quite important to me.

USCSS Conrad, part 4

Work on building the Conrad continues. The past day or two has mostly been spent making small props to flesh out the build. Little things like plates, knives, forks and mugs for the lounge area can be surprisingly time consuming.

Of all the things I’ve built I think making a low poly fork that still looks good has been one of the most challenging, and it’s just a tiny detail in the scene. Possibly the only thing worse is a pair of scissors.

I’m releasing a small freebie with this post: A normal map for a poster. When used on a flat prim it gives a hint of some residual folds on the surface. Makes an otherwise flat poster a little more interesting.

Poster Normals

Poster Normals

Poster normals in action

Poster normals in action

In honour of Linden Lab’s new ToS for SL I’m releasing this texture under the special “Kat’s ‘Go Mad'” license. You’re free to use it for any purpose, anywhere, any time so long as you wear underpants on your head while working with it and mention the word “Wubble” in the attribution.

Medbay has grown but there’s still a lot of work to do there to flesh the place out and make it look lived in. Multiple medical units look great when placed next to each other, casting light from their screens onto each other.

Medbay Expanded

So, still having fun with this build. 500Mb of disk space, 332 files, 143 LI and counting…

USCSS Conrad, part 3

I’ve been working on the props for the Conrad‘s medical bay for the past day or so. My life has been full of not only subdivision surfaces but wipe-clean ones as well.

The result of this is a few bits and pieces, the inevitable cryo-sleep pods and the high-tech medical bay’s treatment beds with their integrated CT scanners.

Inevitable, I tell you

Inevitable, I tell you

I’m trying to keep the number of textures to a minimum for most of the build, relying on materials properties that are re-used all over the place. This works well enough on the surgically clean upper decks of the Conrad but the lower decks are going to have to use more, I think. I apologise to your graphics card in advance.

They look good enough when placed in the scene with the right lighting, I think, so we’ll see. Everything’s a balancing act in SL.



The main lounge is shaping up nicely. I’ve made some chairs and tables that I’ve carelessly forgotten to take pictures of, but trust me when I say they’re awesome. Totally.

I’ve finished the lighting rig for it and I think it’s created a nice blend of impenetrable darkness and muted soft lighting that is suitably mysterious. There’s still work to be done fleshing out the props in the room – this project is giving me a new appreciation of the people who create the environments for games; there’re a million little things that need to be done.



More on the USCSS Conrad

Work on the USCSS Conrad proceeds apace. If I had some kind of plan for this I’m sure I’d be able to update you with a series of tightly focussed posts that home unerringly in on a final product. I don’t have a plan, though, so I just built a load of random things and shoved them onto the grid.


Nauseating Alien Column:

This morning I got tired of the clean lines of the Conrad itself and decided to branch out into some alien stuff. There’s going to be a fair bit of this but I started with a fairly simple floor-to-ceiling column of glistening goo. Starting with a twelve foot shaft of gleaming mucus is a plan that has served me well in the past so I saw no reason to change now.

Really alien. Also slightly nauseating.

Really alien. Also slightly nauseating.

This started as a simple outline model in Lightwave that I then imported into Zbrush. A little work with the Wacom tablet produced a high poly model (around 800k polys) and a lightly modified version of the low poly model. I baked out the normals from the high poly and ran them through Knald to get an Ambient Occlusion and Convexity maps.

I took these maps and layered them over a dark green background in GIMP. A few copies of the ambient occlusion map added some depth to the surface in multiply blend mode. The convexity map went over the top in screen blend mode to highlight the convex veins in a lighter colour. It produced a diffuse texture that seems very effective when combined with the normal map and a high specular shine. I’ll likely be using this kind of cycle to produce other bits of alien architecture.

The low poly model went back into Lightwave for further decimation using the brutally effective qemLOSS3 plugin and then was uploaded to the grid for a final LI of 3, which isn’t too bad for the size I’m making them.



Next up were a couple of casualties, preserved under Aleph’s excellent antibacterial sheets.

Fresh as a daisy and only slightly dead

Fresh as a daisy and only slightly dead

These were a fairly quick build. I used Poser (I’m still using the copy of Poser 4 that I bought in, I think, late 2000. It’s a miracle it still works) to make a couple of posed figures. I fiddled with them a little in Lightwave (what’s a little dismemberment and decapitation between friends?) and then dropped a simulated cloth across them both.

Another quick cycle through low and high poly models got me some grid-ready meshes and normal maps. A few minutes in Illustrator made the diffuse texture – those Aleph guys sure like to brand everything. They’re not subtle like Weyland-Yutani.


Projecting Screen:

The Conrad is going to be dark. Very dark. It’s my plan that the final version will require users to wear a small HUD that uses RLV to control their Windlight environment settings (the SL experience tools may also be able to do this but since they’re not available it’s gonna have to be RLV). While building I wear a simple version of this HUD that I can turn on and off with a click in order to test the experience. With the HUD active there is no ambient light at all and only things lit directly by in-world lights show up. This incredibly dark environment lets subtle lighting effects really show up very well.

A lot of the effort in this build is going into lighting – I need to get something that will let me record video of SL proprly so I can post something that shows the scripted lighting effects I’ve got in place already. I’ll probably talk about these in a later post once I’ve expanded them a bit more.

One of the lighting effects I want to use is having active display screens project their light into the scene. This is pretty simple to do with projector lights but nothing’s ever quite as straightforward as it seems.

Conrad ScreenProjector

The pic above shows part of the main lounge area of the Conrad with the light from a status monitor illuminating the walls and a door. The screen is showing a simple image of ship’s status (long story short: not good) but also projecting that image into the scene.

To get this effect I drew a stark black and white image for the monitor to display in Illustrator:

Decal Ship Status-01

I’m sure it’ll buff out

To make this image into something useful I needed to run it through a few GIMP filters and then flip it horizontally. In SL we have some very nice fine control over images applied as textures (we can scale them, flip them, tile them etc) but we have none of that flexibility for light projector images, so we have to build the image for use as a projector and then use the texture options to make it look right as a texture.

Upload Decal Ship Status

As you can see the final image is a bit glowy and a little pixelated and mirrored left-to-right. If used as a light projector image it will be “right” for being the projected light of the original unflipped image. It’s also squashed into a square format for uploading to SL, but that’s really incidental to the real work.

This image can be used directly as a light projector image. To use it as the texture on a mesh you need to change the horizontal scale to -1.0, flipping it back to the right way round. Set the surface to full-bright, add a little glow and you get a really cool effect that casts subtle and correct light into the scene.


So, that’s the state of the USCSS Conrad as it stands now. Land Impact 52 and growing…

Miscellaneous hints and freebies

Until recently pretty much all of the content I’ve made for SL has been stuff that you wear. I was pretty happy with that state of affairs until I built a shop and discovered (or, really, re-discovered) how much fun it can be to build props and environments.

With the Advanced Lighting Model (hereafter, “ALM”, ‘cos I’m sure not typing all that out every time) in the viewer there is now much more opportunity to add depth and atmosphere to a build, but most people don’t really use it to its fullest extent because not all SL users will get the benefit. I built my shop trying to make the most of the cool bits of ALM but always with an eye on making it degrade gracefully for non-ALM users. Visit the store and judge for yourself how well I succeeded.

That build prodded me to experiment a bit more and see how far the ALM could carry some atmosphere. To that end I’ve started building something, a short experience, that tries to use no-holds-barred ALM to create something memorable.

It’s part technology demonstrator, part just me experimenting and a small part me evangelising on what’s possible with SL in 2014 and pushing the limits to find what would be great to enhance in SL2.0 (we’re all dooooomed! etc, etc – it’s totally a five-o doom). I may never finish it; all you may ever see of it is a few pictures on this blog. Still, what the hell – I’m having fun with it now, so let’s see how it turns out.

I want the build itself to be as open as possible, so despite it being very early days, I’m releasing a set of generic (i.e. not tied to specific meshes) textures that I’ve made for it. This time it’s some diamond plate for the non-slip flooring:

Normal Map

Normal Map

Stretched normal map for bigger bumps!

Stretched normal map for bigger bumps!

Ambient occlusion

Ambient occlusion

Above are two normal maps with different levels of elevation for the diamonds and an ambient occlusion map for the diffuse channel, all of which tile nicely. These textures are released under a CC BY 4.0 license, so feel free to use them in your own builds and products so long as you provide attribution and a link to this blog post.

So, where is all this effort going? It’s going into the mysteriously abandoned hulk of the USCSS Conrad.

Welcome aboard

Welcome aboard

This research vessel belonging to the Aleph Corporation was lost three years ago in mysterious circumstances. Mistakes were made.


Words can’t express how safe you’ll be on the other side of this door