I've performed a reasonable refactor of the addon and introduced bone/skin support in a new version, a (release candidate for) 0.5.0 which is now available. I'm holding off on recommending this as the go-to choice until I've gathered some more feedback and it's been tested more widely - for that reason, the latest stable version should still be considered to be 0.4.3 and is still available for download. However, please do feel free to try out 0.5.0 and let me know if it works for you or you encounter any issues.
The main post has been updated accordingly - give it a read and as mentioned, do send any feedback my way as usual (either here or on Discord).
As part of this, I noticed that the TPM spec says:
Skins include an extra index for each vertex, which is the bone number. This number may be zero, meaning it is not bound to any bone
However, there are valid bones ending 00 actually assigned to vertices in TPMs generated from TresEd, Trespasser itself expects to index joints from 0, and the 3ds Max plugin (tpmimport2.ms) has the following comments:
NOTE: Following the Trespasser convention, bone numbers start at zero, as
do the bone indicies in the vertex definitions.
... <snip> ...
-- Return list of bones for given mesh, searching through the given object list
-- Bone name is of form "$J%NN" Where % is the mesh name, and NN is a number
-- If zeroIsValid is false, bone number 'k' is returned in list position 'k' as expected.
-- If zeroIsValid is true, then 00 is a valid bone number, and bone number 'k' is
-- returned in position 'k+1' in the list (because MAX lists can only start at 1...)
Consistent with the former, zeroIsValid seems to be passed as true at the call site further down.
This perhaps seems like something we should mention in the file format documentation, or just change outright due to the in-practice generation of TPMs (perhaps leaving a "this was a breaking change" note). I've followed the convention of using 0 as a valid bone index in my implementation as well - being incompatible with TresEd or even Trespasser itself would make this part of the addon pretty redundant otherwise. Does anyone here have any insight on the matter?