Hi RunRudolf,
Thanks for keeping AlternativeFuta going. I ran into a bug with custom hair on AltFuta characters and wrote a fix against your v14. I'd like to offer it for your consideration.
The problem: hair saved from Hair Creator with the DirectSkinFemale/DirectSkinMale scalp breaks on an AltFuta character in two ways:
- Hair made on the futa anatomy (e.g. ball or pubic hair) saves fine but fails to load. First it logs Binary hair data not compatible with chosen scalp mesh, then an IndexOutOfRangeException in RuntimeHairGeometryCreator.LoadFromBinaryReader on every later load.
- Hair made on a stock female, including published DirectSkin fur and tails, always fails with "not compatible".
The cause, in short: DirectSkin hair stores one slot per skin vertex: 23,008 on the stock female skin and 24,333 on the futa skin. AddMaleGenitalia() selects the new character before the male graft is merged, so hair that connects in that window sizes itself for the stock skin. VaM never resizes it once the skin grows. Also, the futa skin's vertices are the stock female ones in the same order, with the male graft added at the end, so stock hair only needs its slot list padded for the graft to work.
The fix: once the skin is ready, AltFuta checks the atom's DirectSkin hair once a second and does one of two things:
- Hair made on the futa skin is reloaded, so VaM rebuilds its slot list from the finished skin.
- Hair made on the stock skin is loaded from a padded copy written under Custom/PluginData/RunRudolf/AlternativeFuta/DirectSkinHair/.
Per-scene hair settings are kept, the change only adds code (381 lines, nothing removed), and I've tested it in VaM. The attached README covers the details, verification, test steps and known limitations.
Attachments (renamed to .txt for the board):
- AlternativeFuta-DirectSkinHair.patch.txt: rename it to .patch, then from the VaM root run
git apply AlternativeFuta-DirectSkinHair.patch
or patch -p1 --binary < AlternativeFuta-DirectSkinHair.patch
- README.txt: the write-up, in Markdown.
One gotcha: AlternativeFuta.cs uses Windows (CRLF) line endings and the patch keeps them. If the download or an editor strips the carriage returns, the patch won't apply. If that happens, let me know and I'll send the complete patched AlternativeFuta.cs another way.
Full disclosure: I used Claude for most of this work. You're welcome to use any or all of it however you like. I've been running the fix for about a week with both DirectSkinFemale and DirectSkinMale scalps, and it's worked well.
Thanks!