Maid Dress Progress 04

What with the problems that were dogging the Panel Dress things have run a bit behind schedule lately. Now things are moving again, so it’s time for another update on the Maid Dress!

As I predicted in a previous post the rigging for this dress has proven to be a challenge. ChallengeĀ is perhaps a bit of an understatement – frickin’ impossible might be closer to the truth. All those wavy in-and-out bits on the skirt? I should have thought about how tricky those were going to be to paint weights on a little earlier in the process.

Was I daunted? Was I halted? Well, yeah. For a while.

The solution I came up with was to make an approximate model combining bits of the avatar and dress with a much simplified skirt. This model I could weight much more easily.

Approximate as all hell

Approximate as all hell

Once this was weighted nicely I could use Blender 2.66a’s Transfer Weights function to copy the weighting from this approximate model to the real dress model. This got the rigging done close enough that it only took a little touching up to get a workable rig for the dress, pleats, folds and all.

The high poly model has also been in the texturing lab for a while and some nice and shiny looking textures are coming out, you’ll be glad to hear.

I’ve uploaded some models and I’m testing them in-world at the moment. So far everything’s looking good.

Posing the the maid dress in-world

Posing the the maid dress in-world

There’s lots of bits of the dress that are going to be separately texturable: The main part of the dress, the poofy sleeves, the ruffles, the apron belt, the main part of the apron and the apron ruffles. You’ll be able to go mad and create some seriously nauseating colour schemes!

I’m thinking of re-working the colour options on this product a bit. From the feedback I’ve been getting it looks like a lot of the colours I usually provide don’t get much use, and I don’t think dark brown is going to be a popular colour for a maid’s dress. I’m going to expand the variety of pinks and purples and drop some of the less popular colours.

If there’s demand I can always release the extra colours as a cheap texture pack.

Panel Dress Update

As I mentioned in the previous post I’ve sorted out a glitching problem with the first version of the Panel Dress. Today I released the version 1.1 update with the fix in place and some enhancements to the HUD and texturing system.

Anyone who has already got a copy of the dress can get an update by going to a Kcreations Update Orb (available at the Kcreations main store or at the Kcreations booth at the Little Shop of Kink) and clicking on the silver “Update” button on the dress’s HUD.

Anyone who hasn’t already got a copy of the dress should immediately buy one, because why wouldn’t you?

The new version adds the ability to apply different textures to the side and main panels of the dress – something that, in hindsight, I should have done in the first place šŸ˜‰

New options for sexiness

New options for sexiness

The update also extends to the Antique Leather Texture Pack for the dress to support selecting which parts of the dress you want to affect.

If you’re prepared to switch HUDs you can even mix and match different materials for a gorgeous leather-and-latex look.

Mesh Glitches and the Panel Dress

Some time ago one of my customers reported to me that her copy of the Kcreations Panel Dress was not appearing correctly – sometimes it would glitch out and throw triangles all over the screen. She didn’t see it herself, but others had reported it to her since its gymnastics were causing some havoc among folks nearby.

Later someone else reported the same problem. It only seemed to happen with the Panel Dress, not any of my other meshes.

Since then, with some help from the people who reported the issue, I’ve been trying to track down the exact circumstances of this bug so that I can fix the Panel Dress and make sure that any new meshes I make won’t do the same thing. I’m happy to report that I’m pretty sure I’ve figured it out, and that avoiding the problem is fairly easy.

For anyone who’s into following this kind of thing the particular issue is VWR-29396 in the SL Bug Tracker. I’ve been in touch with Dan Linden with all my findings, so hopefully it’ll help the developers finish this problem off entirely some time in the not-too-distant future.

Mesh glitching

Mesh glitching

In the course of running this one down I’ve made close to a hundred different rigged mesh files, uploaded dozens, tried different versions of Blender and Lightwave, and even written my own DAE file parser to check for errors and problems. In the end, though, none of that helped much, but I feel it’s important you know how hard I’ve worked to figure this out šŸ˜‰

The problem occurs when you enable OpenGL Vertex Buffer Objects (VBOs) in the graphics hardware settings in the viewer. In Firestorm the settings need to be VBOsĀ and either Hardware Skinning or Streamed VBOs.

The glitching occurs when you meet the following criteria:

  • You’re viewing a rigged mesh on another avatar (the glitch never affects a mesh that your own avatar is wearing)
  • There’s at least one other avatar in your view that is wearing a rigged mesh (can be your own avatar or anyone else)
  • A camera move causes the problem mesh to change between LODs. You can also move the object detail slider in the graphics settings up and down to trigger a LOD change.

The pivotal property of what makes a mesh glitch or not seems to be entirely down to theĀ materials assigned to it. Specifically, the number of non-transparent materials.

If the mesh has only one material (i.e. it only has one “face” for applying textures to) it will glitch. If it has more than one face, but all of the faces except one have a non-zero transparency setting applied to them, it will glitch.

This means it’s fairly easy to avoid the problem – just make sure you don’t upload meshes with only a single material and be careful with applying transparency to meshes with more.

One material vs two materials. Two's better than one!

One material vs two materials. Two’s better than one!

The Panel Dress mesh that started all this only had one material, and so it fell victim to the problem. I’ve made new meshes now that have more than one material, and I’ve verified that they no longer have this problem, so an update should be available in the next few days for anyone who’s already purchased it.

Materials for Dummies

Time for another quick look at the new SL Materials Project viewer and another item from my personal toolbox: xNormal.

I think it’s easy to get the impression that using normal maps and specular maps is going to be just for the high-end users of 3D packages but nothing could be further from the truth. It’s possible to get some nice effects from the materials system without even touching something like Lightwave or Blender.

In this post I’m going to create a set of maps that can be applied to a prim to give its surface a more interesting look than just a single flat texture could. The example I’m using is a numeric keypad such as you’d find on a security door or safe. It’s something that you wouldn’t normally want to build in a complete mesh because it’s really not all that three dimensional, but a flat texture looks pretty boring.

To begin with I created a basic texture with the colours on it – this is called theĀ diffuse texture:

NumPad Diffuse

As you can see, that’s very simple and, if you just apply that to the face of a prim it’s not going to look very interesting.

normal-prim diffuse only

Feel the boredom

To jazz this up a bit it’s going to take a specular texture and a normal map.

I created the keypad texture in Adobe Illustrator, but a free package like Inkscape would have done just as well. Because it’s a vector file in separate layers I could go back and recolour all the parts to create some maps for different purposes.

The first map I created was aĀ specular map. This controls how much light the surface will bounce back, controlling where you get those bright, glossy highlights. I decided to make the background not shiny at all (black), the keypad surround a bit shiny (dark grey), the keys pretty shiny (light grey) and the numbers very shiny (white):

Specular map

Specular map

When I apply this map to the example prim it has an immediate effect:

The effects of specular

The effects of specular

Even if there’s just the default wooden texture on the prim you can see that there’s something going on on that surface by the differential shine.

This still isn’t all that interesting though – to get someĀ really interesting effects it’s time to tangle with a normal map.

Normal maps aren’t particularly human-friendly – it’s hard to justĀ paint on one. There is something that sort of bridges the gap, though: TheĀ bump map. Bump maps are greyscale images that represent the bumps on a surface – the whiter the image is at any point the higher the surface is supposed to be. Now, this, you can paint and create easily.

Bump Map

Bump Map

I’ve recoloured the original number pad image again. The brighter the colour, the higher the surface, so you can see that the keypad has a raised (white) edge, each key has a raised (white) edge and each number is inset into the key surface (darker grey).

All this is fine, but Second Life doesn’t use bump maps! Luckily there’s a little piece of free software called xNormal (http://www.xnormal.net) that can, among other things, turn a nice, easy-to-work-with bump map into a normal map. Just what we need.

I should mention that the user interface of xNormal takes a little getting used to…

It's as if a million user interface designers cried out in terror, and were suddenly silenced.

It’s as if a million user interface designers cried out in terror, and were suddenly silenced.

Under its Tools section there’s a “Height Map to Normal Map” tool (some people call ’em Bump Maps, some people call ’em Height Maps. To-may-to, To-mah-to).

From bump map to normal map thanks to xNormal

From bump map to normal map thanks to xNormal

The normal map doesn’t look like all that much to the naked eye – that’s why it’s easier to work with a bump map and then convert it to normals later.

When this normal map is uploaded to Second Life and applied to the test prim the effects are quite dramatic:

Normal map and specular map working together

Normal map and specular map working together

The shiny keypad appears quite clearly even though there’s only the default wood texture applied to the prim.

All it needs now is the original diffuse texture to pull it all together:

Diffuse, specular and normals all applied

Diffuse, specular and normals all applied

Now the surface has some life – the keys and numbers have some dimension to them and the specular map gives differential shine across the different parts.

It’s clear that all this stuff onlyĀ enhances a surface – it’s no replacement for well built meshes or prim sets, but there’s a lot of scope there for work that can take a model from mediocre toĀ spectacularĀ and, as I’ve shown in this (very long) post, you don’t need to be an expert with hyper-complex 3D apps to get some use from normal and specular maps!

Materials System Preview

It’s been a while since I’ve posted an update here because some things have been going on in RL and a few have been keeping me busy in SL as well.

I have had a chance to have a quick play with the Materials Project viewer. If you’ve not been following this it’s a new test viewer that has a much more advanced rendering system in it that allows specular maps and normal maps to be applied to prims and meshes. It’s definitely not ready for prime time yet – it’s pretty buggy right now, but it can’t be far away from release now.

Panel Dress with normals and specular

Panel Dress with normals and specular

As you can see, applying a normal map to a model can have some really nice effects – that’s not a pre-rendered texture there, the model has a plain red texture and all the shine and surface detail is done in real time. You can see the light skipping off the patterned panels and stitches.

What’s this going to mean for afficianados of latex? It’s probably going to get weird for a while – in the picture above if you were viewing it in a normal (non-Materials Project) viewer it wouldn’t look shiny, it’d just look a plain flat red. If I put a traditional texture with baked specular onto there then it’ll look very strange to people running the Materials system. This may drive a bit of a wedge between people who have machines powerful enough to run deferred rendering (Lighting and Shadows) and people who don’t. We’ll have to see how it pans out.

Hopefully I’ll be back with more updates on the Maid Dress soon – I have been working on it, I promise!