Hi there! You are currently browsing as a guest. Why not create an account? Then you get less ads, can thank creators, post feedback, keep a list of your favourites, and more!
Quick Reply
Search this Thread
Test Subject
Original Poster
#1 Old 4th May 2020 at 12:41 AM Last edited by madegeeky : 4th May 2020 at 1:31 AM.
Default Recolored hair defaults using wrong texture size
So, for my own personal use, I've been use SimPE to take some of the defaults done in Maxis Match (that aren't available in semi-realistic), exporting textures from a semi-realistic but non-default versions of the hair, and replacing the MM texture with the semi-realistic ones I've exported.

Until now, everything has been going swimmingly. However, I'm having a lot of difficulty with the current default. I downloaded it and did what I usually do but when I went into bodyshop, it still showed the MM textures. Going back and looking at it, for each texture there are several difference sizes in the each texture file; I've replaced the 1024x1024 file but none of the others. I tried deleting all the sizes except 1024 (which is the one I replaced) and it worked perfect. I then deleted just the 512x512 size, as I assumed that that was the size that boydshop was pulling from; this caused both the hair to render improperly in Bodyshop and for SimPE to throw up errors when I tried to check out the texture again ("unable to read beyond the end of the stream").

I really don't want to have to go through every texture file and delete all the other sizes, not to mention that I'm now worried that some of the other hairs (that I haven't tried out in bodyshop) are also acting in the same manner. Is there any way to fix this problem without me having to go through and delete every non-1024 file?

Some more details: The texture for this hair comes in two separate texture files: a buzzed portion and the mohawk. The buzzed portion's size is 512 and the mohawk's is 1024. The MipMap level is set to 10 and 11 respectively The format is DTX3Format and the size is set to 512 or 1024, the correct size for the image used. If you need any other info, please let me know.

Thank you in advance for any help that anyone can give me.

Edit: I just realized that despite all my testing, I didn't test to see if the buzzed section has the same issue and it doesn't. Despite there being also multiple sizes in the texture file, it only shows the 512 texture I uploaded, rather than one of the many other ones that are there.
Advertisement
Mad Poster
#2 Old 4th May 2020 at 8:00 PM Last edited by simmer22 : 4th May 2020 at 8:12 PM.
Don't delete textures in SimPE unless you know what you're doing. They're linked to the TXMTs.

To size up/down, the best way is to build the texture with DXT3 or DXT5 in SimPE (don't use import!). DXT can be done via right-click on the texture, you need the Nvidia DDS tools. There's a separate import for alphas via right-click, but not needed if the alpha is already applied. SimPE puts all identical textures into one TXTR, so there should be a bit less work. DDS files also work.

As long as the "hair" layer (the scalp/head part) is 512x512 (it's supposed to match the "hairbald" texture size of skins, and is linked ot the SimSkin setting in the TXMT), it doesn't matter much which sizes the rest of the textures are (if they're set as SimStandardMaterial, mind). If one texture is 512 and the other 1024, that's fine.

If that doesn't help, it could be useful to see the file.
Test Subject
Original Poster
#3 Old 4th May 2020 at 8:52 PM
Quote: Originally posted by simmer22
Don't delete textures in SimPE unless you know what you're doing. They're linked to the TXMTs.

To size up/down, the best way is to build the texture with DXT3 or DXT5 in SimPE (don't use import!). DXT can be done via right-click on the texture, you need the Nvidia DDS tools. There's a separate import for alphas via right-click, but not needed if the alpha is already applied. SimPE puts all identical textures into one TXTR, so there should be a bit less work. DDS files also work.

As long as the "hair" layer (the scalp/head part) is 512x512 (it's supposed to match the "hairbald" texture size of skins, and is linked ot the SimSkin setting in the TXMT), it doesn't matter much which sizes the rest of the textures are (if they're set as SimStandardMaterial, mind). If one texture is 512 and the other 1024, that's fine.

If that doesn't help, it could be useful to see the file.


Thank you for answering! That's good to know about the texture thing, with SimPE. Luckily, I've been experimenting on a copy, so the original file is still good.

So, either I'm misunderstanding you or you're misunderstanding me, which is totally understandable: I'm a novice with SimPE and my problem is pretty convoluted. It sounds to me like what you're trying to help me with is resizing a texture but I already have all the sizes I need. (Actually, way more than I need.)

The issue is that, in every texture file, there are multiple sizes available (11 of them, to be specific). I've attached an image to show you what I mean. I've replaced only the 1024 size with the texture that I want while leaving all other sizes the old textures. However, when I load it up in bodyshop, it shows the old texture. When I delete all the other sizes, leaving only the 1024 one, it works exactly as it should. This makes me thinking that, for whatever reason, bodyshop (and in-game) are pulling the texture from one of the other sizes *not* the 1024. If you want a better look at it the default that I've been working off of is umhairmohawk from this post.

Please let me know if I've completely misunderstood you or there's any other info that would help.

Based off this, though, back to your first comment about not deleting textures: does this still stand if I'm not deleting the textures themselves but rather extra sizes *in* the texture file while leaving one texture in place (thus not deleting the full texture file)? Basically, in the attached picture, if I deleted every size but the 1024, would that cause the issues with TXMTs that you mentioned or, since I'm only deleting extra sizes and still keeping a texture, should I be fine?

Again, thank you so much for your answer.
Screenshots
Mad Poster
#4 Old 4th May 2020 at 9:43 PM Last edited by simmer22 : 4th May 2020 at 10:57 PM.
Do you mean the textures listed in the "texture blocks" that go from 1x1 to 1024x1024? That's completely normal. They're there so the hair doesn't use more resources than strictly needed, for instance if you zoom out. You'll not want to delete these, because it'll force the hair to use larger textures when zoomed all out.

If the textures "don't work" I'm guessing you've used the Import function to import your texture, and didn't do "update all sizes". The texture import function often gives a bad result, so I wouldn't recommend it. As long as you use PNGs, DXT texturing with either DXT3 or DXT5 give the best result and also make sure all the sizes are updated so you don't have to do that (DXT3 and 5 work best with alphas, DXT1 can give a crappy result and isn't properly alpha enabled so you'll probably want to avoid that one). Using DDS files instead of PNGs is also an option, but may require some additional plugins in Photoshop/Gimp.

I think there's a MTS tutorial on this, but can't find it, so here's one I made a while back - link (with a link to the plugins and one to a quick "how to use" at the bottom).

----

I first thought you meant the long list of textures in the "Resource View" (there's a fix for that too, if it's a problem - that's what happens if the textures used in Bodyshop aren't identical. In Bodyshop I tend to recolor one set of all the different textures and alphas, and then copy them over to the other ages. This ensures they're identical).
Test Subject
Original Poster
#5 Old 4th May 2020 at 10:47 PM
You're an angel and may you never step on a lego for the rest of your life. That worked perfect!

I had indeed been using import! I knew it wasn't the ideal option but DDS (the only other way I knew how to do it) just refused to work for me. (I keep getting system.outofmemoryexception.) And somehow whenever I looked up tips on importing textures that's all I ever came across, I'm not sure why. I must have been googling the wrong keywords/phrases or something.

Thankfully, I've been taking meticulous notes on where I've been getting my textures from (largely because if I ever post anything on the internet I want to make sure that I give proper credit) and so it should be very easy for me to go through and fix any of the textures I've already done.

I've never had an issue with long lists in the Resource View, so I'm fine with how it is, unless there's a good reason I should be tidying it up.

Again, I cannot think you enough. I spent over an hour googling this and was so worried that I'd have to do it a super time-consuming way. ("Geeky, couldn't you just choose a different hair?" Listen, I'm not saying I'm proud of it, but I decided on this hair and I'm too stubborn to turn back now.)

Seriously, thanking you for taking the time out of your day to help me.
Mad Poster
#6 Old 4th May 2020 at 11:02 PM
No problem

(I like to hang out in the creation section - it's fun to help, and I even learn a thing or two once in a while. Plus, it's very good practice for problem-solving skills ).

Like I said for the textures, if you make sure the alphas and textures (that are supposed to be identical) are identical while working in Bodyshop, SimPE puts them together into a neat little set of as few TXTRs as possible. A slight tone change or alpha deviation can be enough for SimPE to make two (or more) textures out of it. I tend to make a set of all the textures I need and then do copy/pasta/merge on the rest of the textures. Gives me much less to edit if I have to do any changes later.

I'm not entirely sure how the package files calculate in texture files, but I think if there are more texture files that appear in SimPE, the files will be larger and the hair could end up being heavier for the game because the game has to put more than one or two textures into the texture memory (could make a small change if you run into the pink-flashing issue or memory crashes).
Test Subject
Original Poster
#7 Old 6th May 2020 at 4:58 PM
Thank you for the info! If I have any of the pink flashing pink or memory issues I'll definitely keep this in my mind.

I hope you don't mine if I ask another related question. I've tried figuring this out myself and googling but haven't found anything else.

Sometimes the textures in defaults aren't named the colors they're binned as but are instead named something random. This isn't an issue if I'm just looking at the five base colors. If it's red I replace with red, etc. However, if there's unnatural colors and I want to bin them, I run into issues because I can't tell which property set belongs to which texture.

I've figured out a way to use Bodyshop to figure it out but it's a bit convoluted and more time consuming than I'd prefer. Is there any way to tell which texture goes to which property set in SimPE?
Mad Poster
#8 Old 6th May 2020 at 8:01 PM
Probably because they're custom-binned. Custom-binned hair colors will have random strings in the "hair color" in the PropertySet, and probably a random color listed in the hair color XML.

I'm not entirely sure how to re-bin unnatural default colors - they tend to be partly hidden anyway.

Also not entirely sure with defaults (I don't work a lot with default hairs), but the instances and/or group numbers may be identical for each set.
Test Subject
Original Poster
#9 Old 6th May 2020 at 10:58 PM
Re-binning hairs to to whatever you want is just a matter of messing with numbers in the property set so I do know how to do that. Don't ask me to do much else (case in point: my texture issues) but I can tell you way too much about property sets. XD

Unfortunately I've done my best to match the groups and/or the instances between property sets and textures but, as far as I can tell, there's no connection. Maybe there's just no way to tell without doing what I've been doing, which is through bodyshop. :/ Ah well, can't expect the program to every little thing I want it to do.

Thank you, again, for taking the time to help me. I'm gonna go start redoing the textures right now!
Mad Poster
#10 Old 6th May 2020 at 11:11 PM
I think I'd need to see the files to figure it out, especially with defaults.
It's easier with regular recolors.

Bodyshop changes most of the resource names when it makes recolors, so if you're trying to match defaults with the recolors that's no easy feat.
Test Subject
Original Poster
#11 Old 7th May 2020 at 8:11 PM
I was poking around SimPE more and I figured it out. It's still more obnoxious than I'd prefer but it doesn't involve me having to open Bodyshop.

Basically, I look in the 3IDR and make a note of the Instance (*not* the high one) and the Material Defintion. I match the Instance to the one a Property Set has. Then I look up the Material Defintion in the 3IDR. The third string of numbers will match a Group number for a texture. And ta da! I now know which property set goes with what texture!

Thank you so much for your help! I would never have figured it out if you hadn't mentioned group and instance numbers. Your were exactly right that those were the key, I just needed to find how to tie them together.

Thank you so much for all your help! Both of these thingd are going to make my defaulting so much easier!
Mad Poster
#12 Old 7th May 2020 at 8:27 PM Last edited by simmer22 : 7th May 2020 at 9:05 PM.
^ That's one way to do it. Matching the TXMT to the Material Definition in the 3DIR (because the PropertySet info can occasionally be a bit wonky in recolors - not sure about defaults though) is something I've done on occasions where I've been unsure about ages in a hair or which TXMTs goes with which 3DIR.

Everything is connected in the files in some way or another, so you should be able to locate numbers elsewhere in the files. Last Material Definition number out of the four 8-digit numbers in each set will match the Instance number of the TXMT it belongs to. The SHPE and CRES numbers in a mesh file match the SHPE and Resource lines. The Group number (Instance? I keep getting those mixed up) will be the first 8-digit number in most of the 3DIR lines.
Back to top