Replies: 9 (Who?), Viewed: 3545 times.
Test Subject
Original Poster
#1 Old 16th Aug 2021 at 6:23 PM Last edited by thornowl : 24th Sep 2022 at 4:13 PM.
Default Completely avoiding Milkshape (Blender 2.79-2.8+) / Manually editing bone assignments and morphs (Blender 2.8-2.9)
This post is sponsored by me struggling to select a vertex in Milkshape for like 20 minutes. Anyone who recommends MS to you in 2021 is either trolling or salty that they had to buy it back in the TS3 era.

This is mostly a collection of tips for making clothes (and maybe other CAS parts?) in Blender and TSRW. All of this information is probably obvious for the enlightened masters of the community, but considering that some people struggle to import an .obj into Blender, I think it could be useful to at least one beginner CC creator. Yours truly spent like a day trying to find this info on the Internet before giving up and figuring it out on my own.
I do have an actual question I'll ask in the end. Gotta justify posting it in this forum somehow.

Milkshape No More [Blender 2.79/2.8+]

My workflow is mostly copied from Lyralei's great Maxis Match tutorial with a few adjustments.
She uses Milkshape for five important steps: renaming the mesh to group_base, aligning normals, fixing seams, making lod2/3 and exporting as wso. Let's talk about how to do it all without Milkshape.

First, renaming the mesh. That one is easy. Just rename the mesh in Blender, duh.
Don't forget to change the name next to the white triangle, which you can see by clicking the plus button (2.79) or a small triangle pointing right (2.8+).

If MeshToolKit still refuses to see the mesh, make sure you exported it as an OBJ group rather than an OBJ object.

Next, normals. Even if we ignore our goal to ditch MS, its Align Normals function has let me down before. I use a method suggested by my friend miha97sr, which involves splitting sharp edges.
If you look at some EA meshes, you may notice that they seem to use it as well - that's why their meshes have so many double vertices. It's a common practice in games: Genshin Impact does that too, for example.
First, make sure you have disabled auto smoothing in object properties.

Next, select all edges/edge loops you want to be sharp (for example, the bottom edge of a skirt), press CTRL+E and click Mark Sharp. The edge should now become cyan.

Finally, add an Edge Split modifier and disable Edge Angle. Don't apply it, Blender will do that for you when you export the mesh. Just let it be.


! Be careful, however, if you're working with a relatively highpoly mesh, as splitting edges will increase your vertex count. You can temporarily apply the modifier to see the new vertex count, then Ctrl+Z to keep working. Make sure you're below the absolute maximum of 10k vertices for tops/5k for bottoms/15k for full body outfits, otherwise everything is going to break.

Before and after:



Next, seams. As Lyralei mentions, MeshToolKit has an option to fix seams, and personally I've never had it fail. You need to make sure that the seam loops are untouched, and if you happened to mess them up somehow, you can fix it with the snap tool. Add an EA mesh and snap those vertices back to where they belong.
Unless you added more vertices to that loop for some reason, you should be fine.



Seam Fixer seems to be partially broken in the latest version and doesn't work for toddlers, elders or female teens (other groups are fine). If you make clothes for those groups, get the 1.3 version as well.

! Skip the Seam Fixer for LOD2 and LOD3 if you don't wanna mentally scar yourself and your fans.

If you really don't want seams on your LODs, you can probably match seam vertices to EAxis positions and match normals with MTK. Maybe. I'm not deranged enough to try that.

Making LODs is easy with Blender's Decimate modifier, I think it works even better than Milkshape's. Drag the Ratio slider to the left to decrease the polycount. Just make sure it's first in the list before Edge Split, otherwise your LODs will have holes in them.


To be fair, some creators say that they prefer Milkshape's tools for LODs, but. I mean. You won't see those LODs up close during normal gameplay, and if you really care about quality, you might as well make them by hand. To me, it's not worth the hassle of using MS.

Finally, export it as .obj like usual, and make sure the export settings are correct.

Open MeshToolKit and run the OBJ to WSO conversion.

It tries to assign bones to the mesh, but the results can be a bit underwhelming. Just run it through all auto tools for WSO like usual.

Here we go, we prepared our mesh for TSRW without using Milkshape at all.



Editing bone assignments

Now, the fun part for deranged perfectionists like myself. Since my meshes are significantly different from any EA reference, bone assignments and morphs can get a bit wonky despite MTK's best efforts. All tutorials on fixing it I've found are done in Milkshape, and I don't understand why, since GEOM Tools exist.
I couldn't get them to work in 2.79, though. If 2.8+ crashes on launch for you because you're a proud owner of Intel HD Graphics, you can check Intel's website and get the latest driver for your GPU (Intel updated the drivers for old cards in like 2019 for some reason). It runs at 10-15 fps, but hey, better than nothing.

Editing bone assignments in Blender is fairly easy if you know what you're doing. Open your TSRW project, go to Edit > Project contents like when you export it as .package. Scroll down to the first GEOM in the list (for LOD1) and click Export.

Export is as a binary file.


Change its file extension from .bin to .simgeom.


Now open Blender with GEOM Tools installed and either go File > Import > Sims 3 GEOM as usual or switch to Scene properties and use the GEOM Tools panel there.


! When importing GEOMs, make sure that the "Preserve Normals" box is checked (it's in the import window on the right), or your mesh is gonna have seams.


Switch to Edit Mode, select a vertex and press N. Find Vertex Weights in the Item tab — that's the bone assignments for that vertex.


Open Viewport Overlays and enable Vertex Group Weights.


The mesh will turn blue. To see the weights of a specific bone on the model, just click on one of the names in the list.


Hopefully, you already know what to do with this setup. If you don't, check out this Blender tutorial.
Weight paint works fine, btw.

After you're done, you need to make it ready for the game. Sims 3 needs all vertices to have a combined weight influence of 1 (which likely won't be the case after you edited them) and be assigned to 4 or less vertex groups. If it's assigned to more than 4, GEOM Tools will yell "Stop right there, criminal scum" at you and refuse to export the mesh.
To fix it, go to Weight Paint > Weights, select Normalize All (which fixes the first problem) and then Limit Total, which will delete any excess vertex groups assigned by Normalize All.


Now you can export the mesh as .simgeom, change its extension to .bin and import it back to TSRW.

Editing morphs

Editing morphs is easier to do, but more tricky to set up for this workflow... Make sure you follow these instructions very carefully unless you 100% know what you're doing. This process is incredibly sensitive to user error, a tiny mistake will turn your beautiful creation into a flat blob on the floor or an eldritch abomination.

For some reason exporting BGEOs from TSRW doesn't work properly for me, so I used S3PE for this.
Export your CAS part as .package and open it in S3PE, then scroll down until you find four BGEOs. Those are your fat, fit, thin and special morphs (in that order).


Right click the morph you want to edit (I wanna edit the thin morph, so I'll click the third BGEO) and export it to file. If you want to rename it, make sure you don't delete the .blendgeom extension.

Tip: if S3PE has a stroke every time you click anything and takes years to load, switch Preview to Off at the bottom of the screen.


GEOM Tools don't support this file format, so we'll use MTK to convert it. Open Morph Tools > Convert to mesh, then select the BGEO and the base GEOM you extracted from TSRW (check the first part of "Editing bone assignments" if you haven't done that yet, or just export the GEOM from S3PE).


Import your base GEOM (the one you exported from TSRW/S3PE, not the one you just made with MTK) into Blender, then either go File > Import > Sims 3 Morph or navigate to GEOM Tools' panel in Scene Properties and click Import Morphs. If you don't see this button or see "Make Morph" instead, make sure the base mesh is selected. Import the morph GEOM you made with MTK.


! Again, when importing GEOMs, make sure that the "Preserve Normals" box is checked (it's in the import window on the right), or your mesh is gonna have seams.


Your morph should now appear as geom_MORPH_0, and you can edit it like a normal mesh.
Don't delete or add any vertices if you don't want to break your morph.
Tip: if you used Split Edge modifier for the mesh and now want to move a vertex that has a double, use proportional editing to keep them together.

When you're done, select the base GEOM mesh (not the morph) and export it as .simgeom. You'll see two files appear: one for the base mesh and the morph with a _MORPH_0 suffix.


Now we need to put it back in TSRW. First, if you didn't edit all 4 morphs, you'll need to export the rest of BGEOs from S3PE as well. Since I edited the thin mesh, for me that will be the first, second and fourth BGEO. Rename them while exporting so that you know which one is which.
When you're done, open MTK and go to Conversion Tools > GEOM to TSRW WSO. Select all the five meshes you just exported and click Convert to TSRW.

Now you can import this wso file into TSRW as usual.

I'm not exactly an expert on this, so if you know a way to do all of this more efficiently, please let me know.
Honestly, I don't know why tutorials for this stuff are nowhere to be found, since good Blender tools are there to use and it's much easier than editing in Milkshape imo.

For the actual question... One thing that bothers me is if there's a way to manually offset the hands from the body in an idle position, like when sims are wearing wide skirts.

You can achieve that by cloning a CAS part that already has that offset, like the base game hidden repairman outfit. But there aren't many options for guys, and I wanna make, like, REALLY wide skirts lmao

Edit: in case someone has the same question, you can export/import bonedeltas in TSRW (explained in LadySmoks's reply). There's also a bonedelta editor, but looking at it makes me wanna quit 3D.

Special thanks to Lyralei, CmarNYC, cmomoney and SmugTomato for making the masochistic experience of creating Sims 3 CC more tolerable
Research on bones/morphs editing was mostly done out of spite for a friend who said it's impossible
8 users say thanks for this. (Who?)
Advertisement
Virtual gardener
staff: administrator
#2 Old 24th Aug 2021 at 11:26 AM
Great tutorial!

I'lll admit, since Smugtomato released their Blender GEOM tool (See: https://modthesims.info/d/656413/bl...-2-8x-2-9x.html)

I've been entirely skipping Milkshape from my workflow too! Since forever I always thought it was a bit of a finicky program to work with (and, I think we all can agree that Blender just has gotten so comfortable to use, that Milkshape is just a nightmare to work with, especially with vertices and what not).

I actually hadn't thought of doing it the way you're doing it though! Personally, I just clone a CASpart with S3OC, then export the GEOM I need, import that into blender, make the changes/apply a whole new mesh over it, and voila! But your approach might be more favourable since you don't have to worry too much, when meshing an item from scratch, about the bones and the morphs :p

Regarding the question though, I really have to dive deep into that again. I know somewhere in either the BGEOM or the GEOM file there's something for that, but I honestly don't remember so I might edit my comment once I figure that one out again.
Field Researcher
#3 Old 12th Feb 2022 at 10:26 PM
Quote:
Originally Posted by thornowl
This post is sponsored by me struggling to select a vertex in Milkshape for like 20 minutes. Anyone who recommends MS to you in 2021 is either trolling or salty that they had to buy it back in the TS3 era.

But there aren't many options for guys, and I wanna make, like, REALLY wide skirts lmao

Special thanks to Lyralei, CmarNYC, cmomoney and SmugTomato for making the masochistic experience of creating Sims 3 CC more tolerable
Research on bones/morphs editing was mostly done out of spite for a friend who said it's impossible

Wonderful tutorial!!! You do several things differently than I, and present things I will need to try, and see how they work for me. Often, many roads from point A to B! A matter of finding best one. )))

I have never used Milkshape... $$$ Many use it and Blender, but I have always found ways to do all in Blender. As you mention with custom meshes, Tool Kit has limits. I still cannot live without it! I have alway fixed morphs by converting the morphed by Tool Kit .wso, convert to .obj, and importing them all to Blender as "split by group". Then to adjust each vertices in each mesh as necessary. Can be tedious! But, often must be done, especially fat morphs. ((( Then export as .obj and try to convert in Tool Kit to .wso, but something happens on export sometimes, and I must convert .obj to geom, then to .wso. Often, I only use this as a new reference and remorph my original mesh.

As to arms and wide skirts... There are several in various EPs. I forget which exactly, but Into The Future has a few which EA moved the arms out, as I believe mail carrier and repair woman. The mascot from University is ridiculously moved out. I will export the bondeltas as .bin and name 0 thru 4 as they correspond to morphs, base, fat, etc. My project in TSRW, I export and save the originals as back up, then import those bondeltas to my work. You can do the same in s3pe, but if you need to return to the TSRW file, you still have the old bonedeltas, and then have to switch again.
Test Subject
#4 Old 9th Sep 2022 at 8:02 AM
Dearest apologies. I am working in the newest version of blender and TSRW doesn't seem to be able to read "group_base". I renamed both triangles and MeshToolkit accepted the OBJ. It was exported under "Objects Groups". This is the error message TSRW gives me.

Found no base group, CASP mesh import requires one group named 'group_base'. Rename the groups and try again.

I'm having trouble figuring out my mistake.
Test Subject
Original Poster
#5 Old 24th Sep 2022 at 4:17 PM
Quote:
Originally Posted by Blazinga
Dearest apologies. I am working in the newest version of blender and TSRW doesn't seem to be able to read "group_base". I renamed both triangles and MeshToolkit accepted the OBJ. It was exported under "Objects Groups". This is the error message TSRW gives me.

Found no base group, CASP mesh import requires one group named 'group_base'. Rename the groups and try again.

I'm having trouble figuring out my mistake.

idk if you lurk without logging in or something. i sent you a dm two weeks ago
Field Researcher
#6 Old 4th Oct 2022 at 2:30 PM
Quote:
Originally Posted by thornowl
This post is sponsored by me struggling to select a vertex in Milkshape for like 20 minutes. Anyone who recommends MS to you in 2021 is either trolling or salty that they had to buy it back in the TS3 era.

[/I]

I must thank you for this tutorial. Sure, I have been meshing for a few years, but certainly do not know EVERYTHING... and I learned a few things here. Thank you! I have downloaded MS several times, but never understood using it, and as trial expired, never saw a reason to pay for a program I cannot use... so it has been Blender all the way for me.

I have had a problem with waist seam on tf bottom nude replacement that has beat me up for a while. Whatever reason, MTK does not fix tf waist seams (for me), and as geom tools usually does, I always had visible seam on the nude bottom mesh... ankles were okay. I have Blender 2.80 as my primary, and recently added 2.93 on this laptop. I began getting familiar with it on my dead laptop. I saw "preserve normals" in your tutorial and recognized it from 2.93. THAT was key... not changing working normals on export. So, I imported my mesh, removed top 2 rows at waist. Imported Cmar's muscle fix mesh, separated top 2 rows and joined, and merged my mesh to the 2 rows, recalucalted ID's and exported.

As the normals of the waist were preserved, they perfectly match to tops in game. I will be uploading af and tf replacement tops and bottoms soon. Again, THANK YOU!!!
Field Researcher
#7 Old 20th Nov 2022 at 1:15 PM
Quote:
Originally Posted by Lyralei
make the changes/apply a whole new mesh over it



Lyralei, I know you posted this more than a year ago and it seems like I read somewhere where you explained what you mean by "apply a whole new mesh over it" but I can't find that explanation. Maybe I just imagined it. Anyway, could explain what you mean?

And I have a question about assigning bones, particularly assigning bones to hair. I'm coming from the TS4 world where you transfer weights in Blender from a reference mesh to your custom mesh but that's not how it's done in TS3. I really like the idea of doing everything in Blender but can't seem to find much documentation on how that simgeom addon works. Could I make my mesh in Blender, assign weights somehow, then export as a simgeom and import the completed simgeom to S3PE? Does that make sense?
Test Subject
Original Poster
#8 Old 21st Nov 2022 at 2:14 PM Last edited by thornowl : 21st Nov 2022 at 5:39 PM.
Quote:
Originally Posted by mirabellarose
Could I make my mesh in Blender, assign weights somehow, then export as a simgeom and import the completed simgeom to S3PE? Does that make sense?

i prefer using tsr workshop for my cc rather than S3PE only, so i'll focus on that workflow

hair meshes aren't fundamentally different from clothing. after finishing your mesh in blender, do all of the stuff i explained in the first part of this tutorial (rename to group_base, split edges (optional), make lods, export as .obj using the correct settings)
clone a hair in tsrw and export it as .wso — it will be your reference
in meshtool kit convert your .obj to .wso (also shown here), then go to the Auto tools for WSO tab. run your new .wso through Auto-assign Bones and Auto-create Morphs (skip Seam Fixer)
after that, your mesh is ready to be imported into tsrw

in case there are some weird minor issues with bone assignments and/or morphs, you can then refer to the second part of this tutorial and fix those using geom tools, but that's optional
as for documentation.. after looking for it while writing this tutorial, i believe this is as much documentation as you'll get lmao (i learned how to use them though my own experimentation). i'd be glad to be proven wrong tho

if you don't want to use tsrw for whatever reason, there are also auto tools for geom in meshtool kit, though i haven't used them much and can't give you directions for that workflow
if you have any more questions, i encourage you to join the creators cave discord server to get quick replies from other creators (i'm not affiliated with them, i just really like the server)

cast spell: summon lyralei
Virtual gardener
staff: administrator
#9 Old 21st Nov 2022 at 2:49 PM Last edited by Lyralei : 21st Nov 2022 at 7:20 PM. Reason: MIsspelled thornowl, fixed now :) Sorry!
Quote:
Originally Posted by mirabellarose
Lyralei, I know you posted this more than a year ago and it seems like I read somewhere where you explained what you mean by "apply a whole new mesh over it" but I can't find that explanation. Maybe I just imagined it. Anyway, could explain what you mean?


Hrm, not sure where I mentioned it, but I'm guessing I was probably doing 500 different things + writing that reply... I tend to get super vague then Sorry about that!

Though, I'm guessing I may have written this on a default replacement mesh thread? With that, I probably was talking about using your current reference mesh (So an EA mesh) and editing this mesh and import the GEOM back through S3PE (with the above steps done as well of course).

Or, for the "Apply a whole mesh over it", with that I guess I have talking about your own custom mesh, that you make in Blender or whatever you use, and then import that through s3pe, also explained in the tutorial.


Also seconding joining the server, I'm there as well and it's always a great place to hang out in!


EDIT: Okay I found the reply I was literally staring at it as I wrote the previous reply lol. Here it is again:

Quote:
Originally Posted by lyralei
actually hadn't thought of doing it the way you're doing it though! Personally, I just clone a CASpart with S3OC, then export the GEOM I need, import that into blender, make the changes/apply a whole new mesh over it, and voila! But your approach might be more favourable since you don't have to worry too much, when meshing an item from scratch, about the bones and the morphs :p


So here the applying part is actually more about making a Custom mesh. In a bit more "depth-like" way of explaining it, this is my personal way of doing it:
  1. In S3OC, find the CASpart you want to use as a reference, clone that.
  2. Open the package you just cloned in S3PE, find the high LOD Geom of the CASPart, then export the GEOM itself (Click entry > Right Click > Export). You don't need Cmomoney's plugin for S3PE for this though. SmugTomato's plugin can already read a generic SimGeom file perfectly fine (rather than needing to convert it to a s3m2b)
  3. Import the SimGeom in blender. This will be our reference mesh.

A quick note as to *why* I export a reference mesh for a custom mesh, is because I personally always make my garments by importing an obj file of the sim body first (see: https://modthesims.info/t/411795)

And, let's say, we were to entirely make our custom mesh from an .obj file, and once we're done with it, exporting it, SmugTomato's plugin actually lacks quite a bit of data, and could result into some weird in-game issues (like game crashes even). Which is entirely reasonable for the tool to miss, since SimGeoms are so dynamic in certain aspects, that the tool itself can't just generate some sort of placeholder data for us.

So! With that out of the way Let's continue on:
  1. Now also import the OBJ file of a sim body you need, in my case, I often go with an AFBody. Alternatively, if you're like me and sometimes make complicated dresses in MD, then import this instead. You can use the avatar of course instead, but I like to at least import the AFbody from Nysha's link and then load in the MD mesh over it.
  2. If you rather use Blender's cloth file, or making it from scratch with a more "pipeline modeling approach" then make sure to start doing that here (also, huge respect if you pipeline model your clothes!)
  3. After you're done, and if you hadn't (or if your end mesh is like 15k in faces), retopology your clothes first.
  4. Now, in the Blender hierarchy, you select first your reference mesh, and Shift + Click on your own mesh (assuming you've merged your avatar and clothes already into one mesh).
  5. Under the Sims 3 Geom Tools, in the Tool Panel, click "transfer Geom Data". Now we're sure that our new mesh will have all the references to our textures, actually has shader data, and will simply work in such a way that all our resources in S3PE will still have a working scenegraphic.
  6. Now, Don't delete your reference mesh, unless you've done all the bone assignments and stuff! Export your mesh and override that with the reference SimGeom we once exported in S3PE. (feel free to create a backup if necessary before doing this!)


Now, here thornowl's approach is basically the same as what i'm about to talk about. Except, that in my case, we don't have any WSO files at all. Instead, everything is pure GEOM files.
  • For Bone Assignment: - !!!Make sure you do this first, so that you don't have to do this constantly do this for each Lod and Morph!!!. Also the same as the tutorial, except that we have the luxury of not needing to export our reference mesh Instead, you should make sure that you still have that in your blender hierarchy! So feel free to follow this whole bit from after we've imported the SimGeom in thornowl's tutorial.
  • For Morphs: - Follow the whole "Editing morphs" part. This is pretty much how I do it as well Alternatively, you could go super chad mode and make them all in blender, but I'd advise against that MeshToolkit just simplifies these things.
  • For LODs: - Follow the tutorial LOD part, till you get to the 'export .obj" file part. Instead, you want to export it as a GEOM. For this, you also need to make sure you've exported all the Morphs, BGEOM and LODs from your package as well and transfer the geom data for the appropiate LOD you're making (i.e, for LOD 2, we want to get the GEOM data from our LOD2 reference mesh).

One more note on the Bone assignment I actually rarely do it in blender. That's due to a few reasons:

1. The bone hierarchy order seems to be incredibly important. I've had some issues where Blender is forcing the order to be alphabetical. Which is lovely of our darling blender to do, but not in this case! ;P While blender gives us an option to only copy the bone assignments to bones of the same name, in this case our bones list is going to be empty. And weirdly enough, it tends to reshuffle them when you edit the bones in a certain way (deleting unnecessary bones for example, like the feet bones, because let's face it, unless we're doing shoes, why are they here lol) This has even caused some issues where I had to redo the whole rigging on CASparts and sheep (yes, I know it's an object, but it happened :p)

2. The bone editing in blender can be powerful but also annoying as heck (like the strength of something, etc.) Blender 2.9+ and 3.0+ is pretty great at this so far, but I'm not sure if the GEOM tool supports the latest 2.92 version. Which I should probably check. This is why I actually only use it for if a bone seriously needs tweaking.

Now, you may wonder "how do you do it then?". For the record, there's absolutely nothing wrong with thornowl's way of doing it! I've just been doing it this way for a long while so old habits die hard lol.

But I actually just use Mesh toolkit for this. Again, under Auto-tools for Geom > Auto assign Bones, I add the reference Geom we had exported waaay beforehand, and then our GEOM mesh. I then rinse and repeat for all the LODs. Then, import those into the package and voila!



Sorry things got so detailed! I figured it's probably good to explain my approach in case people want to somehow boycott TSRW or something. Not that I do that on purpose, it just, well, happened In fact, if you get yourself into such a great understanding of a sim mesh scenegraphic (which, believe me, you do if you've written an SimGeom importer for unity lol, it's a confusing mess, and you may hate every second of it till it's done), then you may even like to try CTU. Although this is only needed if you want a preview, rather than loading your game.
Back to top