Home > notes > Merkin

The Saga of My Little Pussy

- or -

Does the Snatch Thatch Match?

The whole story starts with a story - the Story Thread at Herena Forge. One entry had a character remark about another "I don't think the carpet matches the drapes". This (of course) started me thinking about whether it would be possible to ensure that in the character selection for Dungeon Siege. I already had a set of nude skins to use as the base layers for creating new armor textures, so what else would be needed?

This page will hopefully answer that question.

Helmet or Ornament?

The first thing to decide is how the merkin would be defined to the game.

The options were

  • An extra piece of the head mesh
  • A separate mesh, probably an ornament

The first would make it easier to have the hair texture applied to the pubic area too, but the downside was that every helmet she could wear would have to be modified to add the extra polygons. Also, it would be independent of the body armor, so skrit would be needed to hide it when body armor was equipped.

click for larger image So I tested an ornament, to see what would happen. To do that, I had to add it to the template for the selectable human female hero. Well, this was good, but what would happen when she put on type 1 armor? (That is just another skin texture.) I used Sharkull's "My Test World" map to have her buy some and find out.


click for larger image The result was that the armor replaced the ornament! That was even better than I had hoped. This meant that it was not going to be necessary to write any skrit for the equip/unequip events, but I still had some major work to do.


Map the Merkin

The patch of six triangles I had created as an ornament was moving well with the character animations, but it needed a transparency map (alpha channel) to look right, so the next step was to get one to work. That took some time to figure out. It is not sufficient just to add the channel to the texture map, the ASP file needs flags that indicate that transparency is used. For some time, I was stuck with the "Launch Preview" function in gmax showing me a good result, but when I exported the model and reloaded, the alpha channel would stop working. I'm still not certain what I did to get it to work - at one point I was hex-editing the ASP file - but now it does, I don't have to go back there again.

click for larger image click for larger image

Shapes and colours

The next step was to try out some other shapes and colours and decide whether to try and use the hair textures or have new ones for the merkin. The answer turns out to be somewhere in between. The existing bitmaps would not have the right alpha channels, and they did not have enough overlap to use a single patch from each, but I could borrow parts to put together what I needed.

A quick mini-poll of potential users determined that Dryads had leafy ones, which did not fall off in Autumn. Elves and humans would be able to share hairstyles, but would differ in shade. I put together a sample, by editing the templates, and using Sharkull's useful test map again.

click for larger image click for larger image click for larger image click for larger image

User Interface

The next step was to modify the UI to add the selection buttons. That entails editing the contents of ui\interfaces\frontend\create_party\create_party.gas. The items that needed changing were the next/previous buttons, background and text for all the options except race and gender in order to make room for an additional set, which were copied from the existing ones with appropriate changes to coordinates and text. The rollover help for the new set also has to be added to tooltips.gas, just changing the help_text value doesn't do anything!

I also added skrit blocks for next/prev functions and wired the buttons to call them, but at this stage they just play the sound for the button click.

click for larger image

I labelled the extra set "Details" in case I do anything later for the males.

Skrit

OK, so I left the hard part to last!

There is a function for GoAspect that looks like it will do what is needed. Its name is RCSetChildTextureFromTextureName and it takes three parameters, two strings and one integer. One of the strings must be the texture name. The integer will be the texture number on the model, which could be 0 or 1 depending on where they start counting. The mystery is what the other string must be. Since the submeshes for body, head, hands, and feet can all be replaced by armor, my guess is that the string names the child submesh. So what is the ornament's name for this function, and which string is which? Time to experiment!

Lara 3