Log in

Previous Entry | Next Entry

A subset or mesh group is when your mesh is divided into separate groups which each can take on their own texture and material definitions. When you open your package in Sim PE, these are listed towards the bottom of your Property Set:


"numoverrides" declares the number of subsets in your mesh (0x0000000X) and each subset needs its own "overrideXshape", "overrideXsubset" (the name of your subset) and "overrideXresourcekeyidx" property.

The typical clothing mesh only has one subset: "body" for fullmeshes, "top" for top meshes, and "bottom" for bottom meshes (duh).

  • Naming a subset "bottom" will cause the textures to overlap the corresponding parts of the UV map on top of any subsets named "top" (such as a high-waisted skirt or bottom-only dress)

  • Naming it "top" will make it so that the textures are overlapped by subsets named "bottom" (such as shirts that go underneath the above or 'untuckable' tops)

  • The standard name for a solid (non-transparent) extra subset to a mesh, such as a bow or necklace, is "noblend". Transparent subsets are typically called "alphas", though they can also be opaque.

The most important thing is that the name under "overrideXsubset" matches the name that you put in your mesh comments. You can name them anything, as long as they match. However, it's good to use a standardized naming system to make things easier on yourself when making new meshes. If you name all your tops "noblend", you'll know to just clone any of your old tops for a new recolor file to hook up to your new mesh. If you name them random things, you'll have to go in editing the subset names and regenerating TXMTs all the time.

ADDING SUBSETS: Let's say you've added new subsets to a mesh, but the package you've cloned only has one group ("body"). It's easiest to clone your recolor from something that already has the right number, but it's not difficult to generate TXMTs for those new groups if you need to:

  1. Change the numoverrides to the correct number of groups that your mesh has. (ex. 0x00000001 to 0x00000002)

  2. Duplicate "override0shape", "override0subset", and "override0resourcekeyidx" by selecting each of them and clikcing add on the righthand side. Change the the numbers to the next consecutive numeral (override1shape, override1subset etc). Do this for every extra subset you're adding.

  3. Change the name of the added "overrideXsubset" to the name of your new subset group. (ex. "body" to "alpha")

  4. Clone (export) your edited file in bodyshop and it will generate TXMTs (and TXTRs) for the new subsets added in your new recolor package.

You need more than one subset for clothing when:

  • There's not enough room on the UV map and you need another TXTR.

  • There's not enough room on the UV map and you need a "null" group for the parts of your mesh that are just naked flesh (all TS3 conversions!)

  • You want certain parts of the mesh to display as transparent ("alpha" layers) or shiny

  • You want certain parts of a top to be overlapped by bottoms, and certain parts not ("layerable" jackets)

  • You're repositorying clothing, but don't want part of the texture to show up on the repositoried outfit.

  • You're too lazy to edit everything onto one UV map (not a great habit, but I've been there)

(Note the word "clothing". Object subsets are a whole different shebang.)

"TOP" SUBSETS: Most longer top meshes have both a "top" layer and a "noblend" (or "top2" or whatever) subset to keep the textures from overlapping. In most cases, this is uneccessary. The only time you need a separate "top" group is if you are making a layerable jacket (or crop top, corset etc), in which case the undershirt subset that goes underneath the "bottom" textures should be named "top". The subset of the mesh that does not go underneath needs a different name, such as "noblend"

If your top mesh does not need to be layered, keep everything in one group and change the "overrideXsubset" name from "top" to "noblend" (or whatever you want) in your mesh comments and GZPS. However, since there are a lot of extraneous blank "top" subsets already around, it's easiest to just turn them into null groups.

Never name a top and bottom the same thing or you'll get texture conflicts when used together. For this reason, you should never name bottoms "noblend" or "body", since a lot of tops are named the former and Maxis has named a few separates the latter. If I don't want a bottom to have any texture overlap over tops (because I'm too lazy to edit the UV map :P), I always name it something like "shorts", "skirt", or "pants", which are not likely to share names with tops.

These are subsets that can be made transparent, like a skirt or sleeve, or have pieces cut out that would be too intricate to mesh, such as lace, fringe, or a ripped hemline. These usually have two subsets, a front and back, so it's not just a gaping hole into nothingness underneath. Maxis usually names them "body_alpha3" and "body_alpha5", probably to make it easier to repository. You need to edit the TXMT for these subsets, so that the type is "SimStandardMaterial", with stdMatAlphaTestEnabled 1 in the properties, and stdMatAlphaBlendMode blend if you want transparency. You also will need to change the opacity of your mesh comments to make the transparency display properly. (default opacity is -1, inside the alpha it should be 0 and the outside should be 1)

Sometimes you'll see outfits that have shiny parts on them, like the Unsavory Charlatan's shoes, rubber boots on the rain slickers, or this TF outfit. In those cases, the shiny parts of the mesh have their own subset with a shiny TXMT while the non-shiny parts are the solid "body" layer. Maxis typically names these groups "reflection".


When two of them have the same name! If you name two milkshape groups the same thing, they'll act as one subset and share a TXTR/TXMT. If you're swapping shoes or arms or things, you don't always need to regroup everything! When you regroup, you have to redo morphs. Instead add on the piece that you need, give it the same name, and remove the morph references. (shoes and wrists don't need morphs!)

  • Example: Decent Maxis outfit with an annoying bangle? Hack off that part of the arm, duplicate the mesh and use Cat's mesh mirror to put a bangle-free arm on that side that shares the same textures. Cut off everything but the replacement arm and merge vertices so it's properly attached. DON'T REGROUP, give the new arm the same name as the rest of your mesh and remove MorphRefNum from the comments. It can now be repositoried, or you can just default replace the GMDC and not have to change the textures at all.

Something that comes in handy with subsets, is that through repositorying you can create more variation with less textures. (the most "fattening" part of a package) For example, with the amhairponybandana Maxis hair, the hair and the bandana are made up of separate subsets:

Note that there are 5 different colors of bandana, and 5 hair colors (black, brown, blonde, red, and grey) Instead of making 4 textures for each of the 5 colors (20 textures = a bazillion MB!) Maxis simply made 5 textures, and repositoried the remaining 15 files to the different colors. (bandana-green/hair-blonde, bandana- red/hair-blonde, bandana-blue/hair-blonde and so on and so forth) This is also how the Maxis sewing machine outfits work. They made the full outfit in red, blue, yellow and such, then let you pick which one each subset pulls textures from!

Here's some other examples of how you can use this:

  • When I separated and converted the top from tfbodyskater, I didn't want the bangles and bra straps, but I didn't want to edit the texture because I wanted to repository it. Instead I made the shoulders and arms into their own subset, sans bangles and bra straps, and made this TMXT a null group without any textures, just flesh. Then I repositoried just the shirt group to the original outfit.

  • Hack the shoes off any mesh, add on barefeet in a separate group and make the foot group "null" with no textures, then repository it to the original. Tada, now you've got bonus pajama files!

  • If you're a bit more daring, do a shoeswap and make the shoes a separate group. Repository the clothing to the original outfit and the shoes to another.


  • If you decide to change the names on your subsets, you don't need to regenerate the file as long you're still dealing with the same number of groups. Just make sure the subset names in GZPS match the group names in your mesh.

  • You can have a separate texture for each subset, but the more textures, the bigger the file size. Try to arrange your UV map so that everything can fit on one texture, and then repository them.



( 5 comments — Leave a comment )
Feb. 13th, 2015 09:18 pm (UTC)
Thanks !
It's cool that you're still on TS2 CC and this tuto seems quite usefull : I've wondered for long how you can change shoes on a outfit. But I have yet to read your tuto carefully and testing it ; if I can't success I'll ask for help.
In the meanwhile, I've to buy a new computer and am not sure if Window 8 will be compatible with TS2. What a dilemma !!!

Thanks again and keep going !
Apr. 7th, 2015 09:58 am (UTC)
Thank you for this! I was about to give up on a set of tops that insisted on pulling textures from the bottom when I thought "hang on, Skell did a thing about subsets, I should reread that" and now it's just one group called noblend and works perfectly.
Apr. 7th, 2015 04:54 pm (UTC)
Haha, yay! I'm glad to hear when anyone finds these useful. :D
Jul. 9th, 2015 10:01 pm (UTC)
I had a similar problem to sushi's, actually XD

I remember searching for a tutorial on subsets ages ago. I still remember the first line in red ("avoid having to do this at all costs" *is paraphrasing). So in my head, adding subsets was really difficult and something I shouldn't even try.

but you're tutorial was really easy to follow :D Thank you so much for writing it! Now I don't have to open all my clothing files to look for a mesh with the right number of subsets ^^
Jul. 9th, 2015 10:47 pm (UTC)
I've seen old subset tutorials telling how to use a really long tedious method manually creating all the little parts and codes of the package. That and other outdated tutorials are what inspired me to make this! I'm glad you found it useful. :D
( 5 comments — Leave a comment )