Jump to content

Azar's Ponytail HDT-SMP / xp32's Skyrim Hair Physics Project porting


Recommended Posts

Posted

Hello everyone!

 

I'm trying to get Azar's Ponytail 03 with physics working in SSE since it to me is one of my favourite ponytail styles as it has the perfect balance of everything in its looks and function both diegetic and by design; I've used this ponytail a lot in LE. I've seen so many other ponytails which are all fantastic but they seem to be a bit too much or too little in one given aspect or the other for the given character I'm trying to make.

 

For reference, it's this one.

https://www.nexusmods.com/skyrim/mods/47000

 

This takes a ponytail from this mod and applies HDT-PE to it.

https://www.nexusmods.com/skyrim/mods/31797

 

I'm somewhat new to this whole process and I've briefly fiddled around with NifSkope and Outfit Studio and the likes to get this but end up getting lost.

I've tried working out how to convert wigs into hairstyles since someone ported this hairstyle over as a wig which has HDT-SMP physics, but it doesn't exist as a headpart hairstyle you can select in e.g., RaceMenu and likewise suffers from the lack of the ability to select a custom hair colour and otherwise exist as a default hairstyle without headpieces worn.

 

This is the SSE mod in question, which adds in wigs for Ponytail 03 and Ponytail 06:

https://www.nexusmods.com/skyrimspecialedition/mods/29094

 

I've tried using the ARMO_2_HDPT_converter conversion tool on the wigs and following the steps (downloading the .exe as I didn't want to dive into running the most up to date python file as with this too I am unfamiliar) but this again was a process I soon got lost with and ended up with a strange mesh without physics and a lot of .nif files in some ExtraParts folders that I couldn't make too much sense of beyond the comparison that other HDT-SMP hairstyle mods had a similar structure albeit more complicated configuration in addition.

https://www.nexusmods.com/skyrimspecialedition/mods/46971

 

I've also tried doing something like editing the LE mesh from the Skyrim Hair Physics Project mod (47000) so that it pointed to HDT-SMP but I got completely lost on what to do from there, including anything to do with the .xml files.

 

If anyone is willing to help out with how to get this lovely ponytail over to SSE as a hairstyle, I'd be extremely grateful! I don't mind if it's a long process—I'd be happy to share the outcome with others if that would also be all right.

 

Thank you for your time!

Posted

I think I would attempt something like this:

  1. Run the HDPT meshes from the original LE mod through CAO.
  2. Disable the SMP dll (if present), and test in-game. If the hair shows up in RaceMenu, and the meshes look file, then continue.
  3. Obtain (steal) a ponytail physics hair preset from somewhere else.
  4. Enable SMP, and remove all references to PE preset hints from the converted hair meshes. Make note of which meshes have them.
  5. Pick one hairstyle with which to figure out physics.
  6. Create a copy of the (stolen) physics preset, and adapt it to the hairstyle.
  7. Add SMP preset hint to the same file that had the PE hint earlier.
  8. Test in game.
Posted
20 hours ago, traison said:

I think I would attempt something like this:

  1. Run the HDPT meshes from the original LE mod through CAO.
  2. Disable the SMP dll (if present), and test in-game. If the hair shows up in RaceMenu, and the meshes look file, then continue.
  3. Obtain (steal) a ponytail physics hair preset from somewhere else.
  4. Enable SMP, and remove all references to PE preset hints from the converted hair meshes. Make note of which meshes have them.
  5. Pick one hairstyle with which to figure out physics.
  6. Create a copy of the (stolen) physics preset, and adapt it to the hairstyle.
  7. Add SMP preset hint to the same file that had the PE hint earlier.
  8. Test in game.

 

Thank you for getting back so quickly!

 

Just to be clear, a ponytail physics hair preset refers to an .xml file, right?

The SSE wig file has an .xml there but the problem is that the mesh is all one thing rather than broken up into a hairline model (which in this case is the actual tail part and most of the crown hair) and the hair model itself (which seems to be some side locks and the bangs, as well as some other parts of the crown) like the LE hairstyle one is.

This is reflected in the .xml files where the LE ones has two .xml files (one for hairline, one for hair); the SSE one simply has one .xml for the entire wig.

Do you reckon it's worth using this or should I focus on getting a preset from say, a similar ponytail from one of the hair packs I have here? I think the Tullius probably have quite a few which are similar in ponytail style. 

 

As for 'picking one hairstyle': sorry, I'm not quite sure I follow! So I pick out, say, the Skyrim Hair Physics Project ponytail that I've run through CAO (it doesn't seem to change the .nif at all when I do this, mind you—I take it this means it's already optimised for SE?) and then I just make its NiStringExtraData point to HDT Skinned Mesh Physics Object with the relevant .xml file?

 

Either way, I'll give it a go when I can a little bit later. Thank you again for this much as it is!

Posted (edited)
29 minutes ago, Poopo said:

Just to be clear, a ponytail physics hair preset refers to an .xml file, right?

 

Its the file pointed to by the PE/SMP hint in the mesh. Most likely an xml file yes.

 

29 minutes ago, Poopo said:

The SSE wig file has an .xml there but the problem is that the mesh is all one thing rather than broken up into a hairline model...

 

Which I why I said you should use the LE mod which was not made with wigs but rather HDPT records, and convert it instead. Assuming CAO can handle it. Never tried. I just have a feeling converting wigs to HDPT records and meshes is going to be more work than letting CAO run through already existing meshes - porting the HDPT records to SSE is as simple as opening the plugin once in the CK and saving it again.

 

29 minutes ago, Poopo said:

Do you reckon it's worth using this or should I focus on getting a preset from...

 

If you're using a hair mod made for LE it's going to be using PE physics. It's going to be far more work to convert a PE preset to SMP, than it would be to "borrow" a similar SMP preset from somewhere else and rename the bones and constraints. Credit the original author of that SMP preset, if you can't sleep properly knowing what you've done.

 

29 minutes ago, Poopo said:

As for 'picking one hairstyle': sorry, I'm not quite sure I follow! So I pick out, say, the Skyrim Hair Physics Project ponytail that I've run through CAO (...) and then I just make its NiStringExtraData point to HDT Skinned Mesh Physics Object with the relevant .xml file?

 

Since what I said is purely theoretical, it would be silly to convert all however many hundered hairstyles there may be, only to then find that CAO can't convert X mesh because of some weirdness specific to headparts, or that the physics preset you're using turns the head mesh into a Bethesda hedgehog. Get one working first. Then once you know what you're doing, convert the rest.

 

29 minutes ago, Poopo said:

it doesn't seem to change the .nif at all when I do this, mind you—I take it this means it's already optimised for SE?

 

How did you test this? Run both files through a file checksum algorithm. If the file didn't change at all (literally) then that's probably not right. I'm fairly certain at the very least, some version number field is supposed to change.

Edited by traison
Posted

So,

 

I actually had a sudden idea. I'd be more verbose for the purpose of clarity in the elaboration but I fear I don't currently have the mental energy for it. What I will clarify is that I've very little experience with working with pretty much any of this, though this whole ordeal ended up teaching me a lot very quickly.

 

What I ended up doing was, immediately after sending that last reply, I thought maybe I could give it a go in the meantime and essentially, I created a new .esp and wrote the HDPT records from scratch but modelled them similarly to how KSHairdosSMP.esp does it, which entails having a base/'mothership' HDPT record for the actual hair option that can be selected in RaceMenu, and then it's comprised of Extra Parts of which are also HDPT records.

So I already had a collision head model, a collision body model, and a virtual ground model from using the ARMO_2_HDPT converter .exe on the SSE Azar ponytails wig mod (that mod's .nif seems to combine all the pieces together so the collision meshes are also on the same model used for the wig armour); I thought I'd look at the wig's .xml file and then compare it with the various .xml files of KSHairdo and Tullius mods (the latter uses modified KSHairdo afaik). I figured I could also use the latter two mods' VirtualHead.nif and VirtualHairCollision_#.nifs and VirtualGround.nif if it comes to that and if I were to adapt these to something like 3BA bodyslide morphs (but I'm not touching this yet because I have no idea what I'm doing—for now).

 

I had literally zero understanding of the .xml files before this point as they looked intimidating to me but after sitting with it for a few minutes, I've come to realise that they're really not so bad. I looked at the HDT-PE ones by comparison and those looked scary compared to HDT-SMP's. 

Anyway, from what I could tell, the .xml files are fundamentally similar and I generally erred towards the wig .xml's values because I assumed that the author for that mod configured it based on the appropriate bones and models; I did have to add an extra <generic-constraint> element to connect the Azar03PT 06 bone to the Azar03PT 05 bone since in the initial tests, the very tip of the ponytail remained static, leading to this strange jump-rope ponytail when moving around. For some reason, the wig .xml didn't have this, although its ponytail on the wig seemed to move around just fine. I suppose that's a difference in how physics are treated for HDPTs versus ARMO entries?

 

Anyway, after checking the <tag> elements under <per-vertex-shape> and <per-triangle-shape> elements to make sure they corresponded to <can-collide-with-tag> elements, I opened up Skyrim SE again and lo and behold, there is physics on the hair and it looks decent.

Except:

There is no collision. The front locks also look a bit floaty but I'll deal with it after I sort out this collision problem in case that has something to do with it rather than something like the weight values and other physics values.

The ponytail clips right through the body. I'm not sure why, since when I look at KSHairdoSMP and Tullius as examples, they have separate .nifs for the collision meshes, although I'll note that some of them also have .tri files. Does this have an impact on collision?

This problem seems consistent with user complaints to various HDT hairstyle mods that require BodySlide building of the collision *bodies* (though not the head nor ground) in that they'd have hair clipping through their bodies—however, this still occurs even with the wig mod's collision bodies.

I have other hair mods which seem to resolve this by simply doing the wig mod route of putting the collision meshes in the same .nif file.

 

I'm not quite sure what I'm missing here. Is it something I missed in the .esp records, something I missed in the .nif meshes, or something I missed in the .xml? I've tried modifying the .xml to look more like the KSHairdoSMP's, and I still get the same problem even after swapping out the collision meshes with that mod's. The records undeniably point to these collision meshes, and the file path looks correct (the hair parts also show up). The BSTriShape label corresponds to the string in <per-triangle-shape> and <can-collide-with-tag> corresponds with <tag> so I'm not sure what's going on.

 

I will still have to deal with actually ensuring the meshes are optimised, as you've kindly suggested—I ended up just working from the separate hairline and hair .nifs from the original LE Skyrim Hair Physics Project (which I had modified earlier to point to "HDT Skinned Mesh Physics Object" instead of "HDT Havok Path") since trying to do anything else often ended up with a very strange-looking mesh that looked much like shiny bacon with the missing texture blue-purple glow; it made me panic but writing this now, I wonder if it's just from shader/texture properties not being transferred over.

To reiterate and clarify: the hairline model is the actual ponytail part, while the hair model seems to consist of the smaller front and side locks that dangle down. There is no actual base scalp hairline model (although this doesn't cause any apparent visual problems + can be rectified by adding one anyway in the base HDPT); what this also means is that I have both of these .nifs with NiStringExtraData properties pointing at the same .xml file. I don't know if this will cause problems or not.

 

Anyway, thank you again and again.

Posted (edited)
2 hours ago, Poopo said:

There is no collision.

 

Make sure the virtual collision mesh has its own shape definition, and that the shared element within all shapes involved is set correctly. For instance, if the virtual collision mesh shape is defined in the same file as the hair shapes then it can be set to private. If they're in different files, then it needs to be public. For hairs I would recommend you try to get it to be private.

<per-triangle-shape name="VirtualHead">
	<shared>private</shared>
</per-triangle-shape>

 

Make sure the tags are correct, and do not to mix collision whitelisting and blacklisting as afaik the result is undefined. So, either use can-collide-with-tag or no-collide-with-tag, not both.

 

Make sure weight thresholds are not too high, if you're using them. A threshold of 1 would ignore all triangles/vertices of that specific bone.

<weight-threshold bone="NPC L Clavicle [LClv]">0.2</weight-threshold>

 

Make sure marging is large enough. Use 1.0 or higher when debugging. Make sure penetration and prenetration are both 0.0 when debugging collisions not working. Note that prenetration is not a word, and its meaning is currently unknown. This is a value that has been added and removed several times during the lifetime of SMP. It probably started from a typo, as if I remember correctly, the early versions of PE didn't have a penetration value. My current notes suggest negative prenetration values work a bit like the margin.

 

2 hours ago, Poopo said:

some of them also have .tri files. Does this have an impact on collision?

 

If the tri files morph the virtual collision mesh vertices as well then yes. You probably don't want that kind of precision with hair, so I'd ignore that regardless.

 

2 hours ago, Poopo said:

I will still have to deal with actually ensuring the meshes are optimised

 

CAO despite its name is more of a converter in this case. The optimization bit is in texture re-encoding and BSA archiving.

 

2 hours ago, Poopo said:

I have both of these .nifs with NiStringExtraData properties pointing at the same .xml file.

 

SMP has had issues with physics presets overlapping in the past. As far as I know this has not been addressed. I would assume it does not check to make sure it hasn't already loaded a preset, but it might. Typical side-effects of SMP fighting itself is unexpected physics behaviors such as fast motion, sluggish motion, jittering and other abnormalities.

 

You don't actually have to have a SMP hint for every mesh that should have physics. It's enough that one item currently being worn has a preset, and that preset will affect the nodes and shapes it is configured for. This is the same reason why SMP can sometimes be difficult to debug. Not only can its files be literally anywhere, but its also possible for a ring to change the way your hair moves, and for a hat to make your toes wiggle in the wind.

Edited by traison
Posted
On 5/19/2025 at 9:33 AM, Poopo said:

I've tried working out how to convert wigs into hairstyles since 

...

suffers from the lack of the ability to select a custom hair colour and otherwise exist as a default hairstyle without headpieces worn.

Converting wigs to playable hairs for this reason is a lot of wasted effort when there is a simple mod available that automatically syncs the wig to the hair color you've selected/configured in racemenu.  The mod even describes how to edit wigs that aren't already set up to use the Hair Tint shader.

Posted
59 minutes ago, Kastagir said:

Converting wigs to playable hairs for this reason is a lot of wasted effort when there is a simple mod available that automatically syncs the wig to the hair color...

 

As long as you don't mind your hair disappearing when you put your shoes on, or whichever equipment slot it will conflict with. Personally I never use wigs. The only valid use-case I've heard of is that followers apparently need wigs in certain situations.

Posted (edited)
5 hours ago, traison said:

 

As long as you don't mind your hair disappearing when you put your shoes on, or whichever equipment slot it will conflict with. Personally I never use wigs. The only valid use-case I've heard of is that followers apparently need wigs in certain situations.

Wigs should use the same slot as hair (31/131) and/or long hair (41/141).  If another mod is using those slots it is the problem, not the wig.  Those slots are clearly labeled as being for hair.  If you're looking for ways to idiot-proof your game against clueless modders you're going to fail.  Better to learn the proper way to make things work together and develop the skills to fix the mistakes of others to make your game do what you want.

Edited by Kastagir
Posted

Afraid to say I seem to still be having some trouble with this!

 

I've ensured the <tag> elements matched up, used only <can-collide-with-tag> elements and refrained from using <no-collide-with-tag>, weight thresholds no higher than 0.4 so far (but I'll keep lowering them), p(r)enetration 0.0, tried with both public and private <shared> values on the collision triangle shapes...

 

Still not quite sure what's going on here, though I am grateful for all both of you have been teaching me so far.

 

I reckon a workaround is to put the collision meshes into the hair model itself. I'll try that if all else fails but, at this point, I'm curious to see if I can't replicate how KS Hairdo SMP seems to do it where they have separate .nif files for each piece, including the collision meshes.

I do notice that KS Hairdo SMP's hairstyles, their hair and hairline(?) models (so for example, a hairstyle called Sparklers --> Sparklers.nif and SparklersHL.nif; the actual base hair record lists these as Extra Parts in addition to an actual hairline model which adds scalp hair) seem to be identical (at least at first glance; I haven't taken a deeper dive for the time being as to see the comparison with the bones) beyond the fact that the hair model has the NiStringExtraData block pointing to the physics .xml, but the HL model doesn't have anything like that. Despite this, it looks perfectly fine, so I'm not sure what magic was achieved there for the time being.

 

On 5/21/2025 at 5:28 AM, Kastagir said:

[...] there is a simple mod available that automatically syncs the wig to the hair color you've selected/configured in racemenu.

 

That's useful to know—thank you. I'll keep that in mind for the future but at this point, I'm interested in how to keep it as a headpart just to see how it's done!

Posted (edited)

I haven't worked with hairstyles, but I know a little about porting wigs. I think the process will probably be similar with hairstyles. First, you need to convert the meshes. SSE NIF Optimizer does it best. Then open the NIFs and see if the shape names have changed, if they have, add your own name, any name you think of, because the xml will still have to be completely rewritten. In general, porting physics is a rather complicated process, I spent six months figuring out how to write this code from scratch, and I still don't understand much about it, I write intuitively). Then in the NIF, you need to delete the HDT Havok Path entry from the NIF and add HDT Skinned Mesh Physics Object instead, write the path to where your xml is located at the bottom (you can leave it the same, delete only the code inside). Then you need to write new code. And here you can't explain it in a few words. I can advise you to look at guides on writing codes, look at codes of other authors, find patterns. One of the main rules is that the anchor bones (these are the ones to which the physical bones are attached) do not participate in physics, they are usually designated by the number 0, they must be specified at the top of the code immediately after the list of skeletal bones. And then come the codes for the physical bones. Another interesting thing. There are two types of physics from the body </per-triangle-shape>, this is rough physics, with minimal collisions and huge bones, it was usually used in LE. In CE they use physics from the vertices </per-vertex-shape>, it is more accurate.

 

If the project has a collision body, it will also have to be replaced. You can take it from another similar project, deleting everything unnecessary and porting it to your project through Outfit Studio. Also note that different bodies are also used for different types of physics. For collisions from the body, use the Collision body, for collisions from vertices, use the Virtual body.

Edited by danna233
Posted

An additional difference I can see between the hair model and HL model for a given hairstyle from KS Hairdos SMP (currently looking at Tonight.nif and TonightHL.nif as example references) is that the HL model, while identical to the hair model barring the lack of a NiStringExtraData block (which points to the physics .xml), it also has different values from the main hair model for NiAlphaProperty.

 

Main Hair Model:

Threshold: 40

Flags: 4845 (Enable Blending is unchecked)

 

HL Model

Threshold: 200

Flags: 4846 (Enable Blending is checked)

 

As I'm unfamiliar with a lot of this, I'm not sure what this property manages. The bones and vertices seem to be all the same otherwise for the rest of the blocks in both .nif files as far as I can tell—I didn't expand EVERY single bone/vertex block to check the values.

 

Could this have something to do with collision?

 

The models in question looking virtually identical in the render.

 

(First/left is the hair model; last/right is the HL model):

 

image.png.f8a412cec342b5cd222ffad569887a50.pngimage.png.f149e6f47bb86dcf134eb6e08933d218.png

Posted
On 5/23/2025 at 6:41 PM, danna233 said:

I haven't worked with hairstyles, but I know a little about porting wigs. I think the process will probably be similar with hairstyles. First, you need to convert the meshes. SSE NIF Optimizer does it best. Then open the NIFs and see if the shape names have changed, if they have, add your own name, any name you think of, because the xml will still have to be completely rewritten. In general, porting physics is a rather complicated process, I spent six months figuring out how to write this code from scratch, and I still don't understand much about it, I write intuitively). Then in the NIF, you need to delete the HDT Havok Path entry from the NIF and add HDT Skinned Mesh Physics Object instead, write the path to where your xml is located at the bottom (you can leave it the same, delete only the code inside). Then you need to write new code. And here you can't explain it in a few words. I can advise you to look at guides on writing codes, look at codes of other authors, find patterns. One of the main rules is that the anchor bones (these are the ones to which the physical bones are attached) do not participate in physics, they are usually designated by the number 0, they must be specified at the top of the code immediately after the list of skeletal bones. And then come the codes for the physical bones. Another interesting thing. There are two types of physics from the body </per-triangle-shape>, this is rough physics, with minimal collisions and huge bones, it was usually used in LE. In CE they use physics from the vertices </per-vertex-shape>, it is more accurate.

 

If the project has a collision body, it will also have to be replaced. You can take it from another similar project, deleting everything unnecessary and porting it to your project through Outfit Studio. Also note that different bodies are also used for different types of physics. For collisions from the body, use the Collision body, for collisions from vertices, use the Virtual body.

 

I didn't know this! Thank you.

 

I'll take a look with Outift Studio to see what's what.

Posted
2 hours ago, Poopo said:

Could this have something to do with collision?

 

As far as I know, the only things that matter are the following:

  1. The SMP hint, as in, the NiStringExtraData. The SMP hint node is called "HDT Skinned Mesh Physics Object", and has a value that points to the physics preset file relative to the Data directory.
  2. The shape NiNode (i.e. BSTriShape) name.

The only thing that looks potentially problematic is this:

 

On 5/20/2025 at 9:47 PM, Poopo said:

Anyway, after checking the <tag> elements under <per-vertex-shape> and <per-triangle-shape> elements to make sure they corresponded to <can-collide-with-tag> elements, I opened up Skyrim SE again and lo and behold, there is physics on the hair and it looks decent.

 

The tag, per-vertex-shape, per-triangle-shape and can-collide-with-tag elements have nothing to do with movement - these are purely collision related elements. It may be worth doing a sanity check on this, for instance by removing/renaming the physics preset file you just made. Make sure the hair stops moving after doing this - make sure its actually using your physics preset. Reasoning being this:

 

On 5/21/2025 at 12:18 AM, traison said:

You don't actually have to have a SMP hint for every mesh that should have physics. It's enough that one item currently being worn has a preset, and that preset will affect the nodes and shapes it is configured for. This is the same reason why SMP can sometimes be difficult to debug. Not only can its files be literally anywhere, but its also possible for a ring to change the way your hair moves, and for a hat to make your toes wiggle in the wind.

 

You could for instance be wearing a SMP collision mesh armor courtesy of 3BA, and this collision mesh armor points to a physics preset that also includes hair nodes (for whatever reason). Or it's your shoes, or nose piercing, or the butterflies...

Posted (edited)

Hm... It's definitely pointing to this .xml; I renamed it and the physics stopped working then.

 

I removed the NiStringExtra block from the 'hairline' i.e., the tail model of the Azar ponytail, and the ponytail physics still work in spite of its .nif no longer featuring it. As you said, the normal hair model that does still have the block is probably causing it to move.

That said, it still seems there's no collision! I wonder what I'm still doing wrong!

 

For the time being, I'm still using the default names for the collision BSTriShape blocks that came with the aforementioned wig mod I partly based this on, and I did try swapping them out with the KSHairdoSMP's collision .nifs previously as well (ensuring that the names still add up between the BSTriShape/BSDynamicTriShape and the .xml names) but to no apparent change in outcome.

 

image.png.b51a91de0909adaf3d5cb6dbe2c06eb8.png

 

image.png.89de2f74ac4c3f308b342dc6bdaed044.png

 

image.png.1c3114d41a5d3925d3974823eb178a37.png

 

(I've still been fiddling around with some of the values so the <shared> is back to 'private')

 

 

Edited by Poopo
Posted

While I don't really expect it to be helpful in this case, it may be worth keeping in mind that SMP does have a log file:

...\Documents\My Games\Skyrim Special Edition\SKSE\hdtSMP64.log

 

Consider uploading a demo archive that showcases the problem. Strip out all the other irrelevant nifs. I can't promise I'll get on it immediately, kinda busy right now.

Posted
34 minutes ago, traison said:

it may be worth keeping in mind that SMP does have a log file:

 

Noted—seems to be mostly empty for the time being but for hdtSMP64 200500 written into it.

 

In the meantime, I'll upload the archive with what I've mostly left it as as of the last post I made. I had since tried removing flag Bit 19 (524288) from the 003_bd.nif file to see if that made any difference since KSHairdoSMP's VirtualHairCollision_# .nifs seemed to do the same thing. 

 

I'll also say that I acknowledge that I'm not entitled to your help with this; I want to thank you for even offering to take a look at it yourself. Please do take your time, and only so long as it's convenient!

 

I've also included the .esp in the .zip containing HDPT records so that they can be selected in RaceMenu. For this reason, I've also kept in this other scalp hairline .nif, 'straightscalpHUMAN.nif', as well as its .tri file, in case it resulted in strange things in the actual game—I've been having the same issues without them as well, though this was much, much earlier on during this entire ordeal.

I hope that's all right.

Azar Ponytails HDT demo.zip

Posted (edited)

2 hours so far, and no collisions. I feel like the only explanation is that the virtualbody is not loaded.

  1. I remade the HDPT records.
  2. I rearranged the meshes.
  3. I remade the physics preset to some extent.
  4. I tried using collision meshes from another hair mod.

Other:

  1. I noticed changes to HDPT records do not apply, unless you swing by showracemenu once.
  2. "smp reset" reloads smp config files, in case you didn't know.

I think what I would do next is replace a known-good hairstyle's "main" Extra Part HDPT with the Azar ponytail mesh. I imagine that should rule out everything except for the hair mesh itself. Update the physics preset to use the new collision meshes.

 

Edit: If you don't want to wait for me to do it (which is potentially tomorrow), then feel free to try that yourself.

Edited by traison
Posted

I realise I've forgotten to include the textures folder—it didn't show up strange for me because I had other mods covering for it (the LE mods for testing/comparison/reference purposes much earlier on).

 

I'll attach it here in case it helps make things a little clearer somehow, though I understand this has nothing to do with the physics.

 

Azar Ponytail Textures.zip

Posted

I thought I would try and see what would happen if one were to use the .nif that the wig mod was using where all of the pieces are put together. So I made a backup of the .esp and then changed the HDPT records to point to that .nif instead and removed the HL extraPart entry in the 'mothership' record.

 

I booted back into the game (I made a save after changing the hairstyle to something else) and found that only the ponytail piece was still there and it lacked physics. I thought this was odd, so I decided to try making a fake HL .nif and re-adding the extraPart, and I renamed the .esp to something else and loaded back in, and now my character was completely bald. Not even the scalp hair loaded in. I tried removing the ESL flag to make it its own .esp and it made no difference.

 

So then I tried something else: I decided to do this on a new game and see what would happen then. I had been assuming that hairstyles were just things that you could simply load and unload given the ease of which they're added in when you first install a new hair mod.

On the new character, only the scalp hair loaded in, which I thought was really odd. The actual ponytail pieces didn't.

 

So I restored the original .esp before this little experiment and tried doing it on a new character again.

And nothing. Back to how it was before this: ponytail hairstyle there, has physics, but no collision.

Posted
1 hour ago, Poopo said:

I thought this was odd, so I decided to try making a fake HL .nif and re-adding the extraPart, and I renamed the .esp to something else and loaded back in, and now my character was completely bald.

 

This:

 

On 5/27/2025 at 9:44 PM, traison said:

I noticed changes to HDPT records do not apply, unless you swing by showracemenu once.

 

Also, not had time to look into this yet. File still on my desktop. Weather been nice, summer and all that, and other things.

Posted

I reckon I still tried to do all that—I set it to another hairstyle to begin with before using showracemenu to set it to the ponytail. Unless I had to go again?

Even then, I'm not really sure what would've happened to the new game instances.

 

Anyway, it's no worries. If the weather's been well then I don't see why one shouldn't go and enjoy it; I'd like to say again I'm grateful that you even considered taking this on in the first place since it's not like I'm entitled to it.

Posted (edited)

I transfered over as little as possible from your demo mod to BDO Espa, a similar looking hairstyle. Basically I just changed the mesh file names of existing BDO HDPT records to show the Azar mesh. I updated the SMP preset to match. There is still no collisions. BDO Espa had body collisions before the swap.

 

Without figuring out and documenting the entire setup of how to create hairstyles the only thing I can gather from this is that your HDPTs are just different, and that's probably why it doesn't work. For instance:

  1. Every mesh in BDO's pack has an associated tri file. I do not know what the role of this file is.
  2. Many meshes in BDO's pack have another visually identical mesh with the added prefix _45. I do not know what the role of this file is. Looking at something else like the SMP conversion of KS Hairdos, it does not have these files. So either their functionality is not relevant here, or it was merged into other files in KS Hairdos.
  3. Hairstyles in BDO are split up differently. Like for instance your mesh has all the hair in one mesh, and some of the hair in another. Espa on the other hand has bangs split up into several meshes, and the ponytail alone is its own thing.

I extracted the Espa B1 tri file (the ponytail) and it contains one obj file which looks identical to the mesh in the nif, except that it is rotated. The rotation could be an artifact of Blender/obj importing. Animation_Tools_N2 contains the files required to work with tri files, if you want to attempt to create these.

 

So based on this, what I'd do next is the following:

  1. Split the Azar hair mesh up into identical pieces, using something like Espa as a template.
  2. Create tri files for each mesh, like the Espa hairstyle has.
Edited by traison
Posted

Had another go at it. Created a couple of tri files with different rotations and it didn't add collisions. Extracted the tri file that came with the LE Azar hair mod and saw that it is used for weight morphing, so this is most likely unrelated.

 

Unfortunately I have no more ideas as to why collisions aren't happening. Unless there's documentation online, the only way forwards I see would be to analyze SMP's source code to see how its treating head parts, and what its expecting to find to do collisions. Worst case scenario would be to add debug logging at every relevant branch statement to see where it starts going away from the path that would lead it to calculating collisions.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...