Can't figure out what's wrong with my basepose or msh

How to create models in XSI and other 3D applications and make them work in Battlefront 1 & 2. Post models, tips for application usage and share anything XSI, 3DMax, SketchUp, etc.

Moderator: Moderators

Post Reply
Sporadia
First Lance Corporal
First Lance Corporal
Posts: 127
Joined: Thu Jan 24, 2019 11:02 pm
Projects :: No Mod project currently
Games I'm Playing :: None
xbox live or psn: No gamertag set

Can't figure out what's wrong with my basepose or msh

Post by Sporadia »

I've reduced a character model to about 90% the height of a regular unit and I've repositioned psych0fred's skeleton to match it. I'm trying to export a basepose and then munge it with obiwan's animations to scale them down. But there has to be something wrong with either the basepose or the character mesh that I've exported, because it's only half working. All of the proportions on the model are fine. The obiwan animations (lightsaber swings) are using the correct skeleton. But the stand_idle animation, which comes from human_sabre, is not using my character's skeleton (it's not munged with the basepose.msh, and it's not using my character's skeleton). In other words, the animations munged along side my basepose have the correct skeleton, but the animations not munged with my basepose have the wrong skeleton.

The way I'm judging this, is by looking at the lightsaber position, because it's quite hard to tell whether the bones are coming from my basepose or from human_sabre, but with hp_weapons it's very easy to see when it's in the wrong place. And that makes it hard to tell if the whole skeleton is broken, or just hp_weapons. So I'm loading the game and seeing the lightsaber in the character's fingertips (placed incorrectly). Then when I swing the lightsaber (using an obiwan animation), the lightsaber quickly moves into the correct place in the hand, and then after the swing the lightsaber slowly drifts back into the wrong position as the animation blends back to stand_idle emote.

I considered that it might be normal for the game to behave that way, but then I tried munging yoda's basepose with the obiwan animations, then switching to yoda's character model and I wasn't able to reproduce the problem. (I did the same test with the jawa basepose afterwards). So it looks like with the stock animations, switching the basepose.msh and the character model is supposed to affect all the human_sabre animations, even though they aren't munged with the basepose. And that makes sense for skeletons too, because in theory all you need to munge is a basepose.msh to change a character's skeleton. You don't have to munge the basepose alongside all the human0 animations.

As a workaround, I took stand_idle_emote and crouch_idle_emote from the assets and munged them with my basepose and the obiwan animations. That fixes the problem, which rules out the possibility that hp_weapons is placed incorrectly, and confirms that the basepose is doing something. But it's just a workround. This isn't how basepose.msh is supposed to work because it should be affecting human_sabre without me having to munge them.

This was my first time exporting animations and I didn't know exactly what settings to use, so I've been doing trail and error with all the settings. This is a list of what I've tested:

basepose: all of the following have frame range 0-1 in xsi
  • Keyed only on frame 1, current frame = 1, exported with 'export animations' checked
  • Keyed only on frame 1, current frame = 1, exported with 'export animations' and 'current frame as basepose' checked
  • Keyed on frame 0 and frame 1, current frame = 0, exported with 'export animations' checked
  • Keyed on frame 0 and frame 1, current frame = 0, exported with 'export animations' and 'current frame as basepose' checked
  • Keyed on frame 0 and frame 1, current frame = 1, exported with 'export animations' checked
  • Keyed on frame 0 and frame 1, current frame = 1, exported with 'export animations' and 'current frame as basepose' checked
  • Keyed only on frame 0, current frame = 0, exported with 'export animations' checked
  • Keyed only on frame 0, current frame = 0, exported with 'export animations' and 'current frame as basepose' checked
  • Keyed only on frame 0, current frame = 1, exported with 'export animations' and 'current frame as basepose' checked
That's in approximately the order I did them in. I don't remember if the early ones even worked, but the later ones all did.

character mesh
For the entire list above, I've done at least one test alongside a character mesh exported with the following settings:
(these are the export settings for the character mesh now)
  • Key frames on frame 1 (if it affects this), current frame = 1, exported with 'export animations' unchecked
For some of the tests, particularly the earlier ones, I've also tested them alongside a character mesh with these settings:
  • Key frames on frame 1, current frame = 1, exported with 'export animations' checked
  • Key frames on frame 1, current frame = 1, exported with 'export animations' and 'current frame as basepose' checked
  • Key frames on frame 0 and frame 1, current frame = 1, exported with 'export animatons' unchecked
  • Key frames on frame 0 and frame 1, current frame = 1, exported with 'export animatons' checked
The basepose doesn't contain any geometry or collisions. It's just the DummyRoot, bones, effectors, roots, and hp_weapons. I at one point switched out the material in a hex editor with the material from a stock basepose.msh (because my baseposes have a material with a TX0D/.tga) and it changed nothing.

The keys on my skeleton are as follows:
  • DummyRoot is keyed for translation and rotation
  • All the bones are keyed for rotation except:
  • bone_root and hp_weapons are keyed for both rotation and translation
  • No keys on the roots or effectors, or anything else
The hierarchy for the base pose exports is always DummyRoot > bone_root > the rest of the skeleton. hp_weapons is a child of bone_hand (none of that's been changed from the psych0fred skeleton).

The hierarchy for the character model is always DummyRoot > bone_root and DummyRoot > shadowvolume, DummyRoot > polymesh etc. (It's not DummyRoot > polymesh > bone_root)

ODF
I've tried both AnimationName and SkeletonName (separately) and they both have this problem. The yoda and jawa test were done with AnimationName. SkeletonRootScale is 0.89 which is about correct for stopping my character from floating. Changing it doesn't fix my problem. Similar situation with CollisionRootScale.

Debug log
ZenAsset looks like this whenever I check it (which isn't that often tbf):

Code: Select all

-- Processing directory C:\BF2_ModTools\data_SPK\Animations\SoldierAnimationBank\form3barriss
	Processing file basepose.msh, will save in .\\\form3barriss.zaf
*** WARNING: Skin model segment 0 has too many/few vert weights?
*** WARNING: Skin model segment 0 has too many/few UVs?
*** WARNING: Skin model segment 0 has too many/few vert colors?
.*** WARNING: Animation <form3barriss_sabre_jumpattack_end_full> has a framerate <29.970030> that isn't 30fps.  Framerate correction code has not been done yet
.*** WARNING: Animation <form3barriss_sabre_jumpattack_fall_full> has a framerate <29.970030> that isn't 30fps.  Framerate correction code has not been done yet
.*** WARNING: Animation <form3barriss_sabre_jumpattack_land_full> has a framerate <29.970030> that isn't 30fps.  Framerate correction code has not been done yet
.*** WARNING: Animation <form3barriss_sabre_stand_attack1a_end_full> has a framerate <29.970030> that isn't 30fps.  Framerate correction code has not been done yet
.*** WARNING: Animation <form3barriss_sabre_stand_attack1a_full> has a framerate <29.970030> that isn't 30fps.  Framerate correction code has not been done yet
.*** WARNING: Animation <form3barriss_sabre_stand_attack1b_end_full> has a framerate <29.970030> that isn't 30fps.  Framerate correction code has not been done yet
.*** WARNING: Animation <form3barriss_sabre_stand_attack1b_full> has a framerate <29.970030> that isn't 30fps.  Framerate correction code has not been done yet
.*** WARNING: Animation <form3barriss_sabre_stand_attack1c_full> has a framerate <29.970030> that isn't 30fps.  Framerate correction code has not been done yet
.*** WARNING: Animation <form3barriss_sabre_stand_dashattack_full> has a framerate <29.970030> that isn't 30fps.  Framerate correction code has not been done yet
I've also done a couple of cleans/munges during this process. No issue there.

(For transparency, this isn't a model that I've made, it's Deviss' Barriss Offee that I added a cloth skirt to a while ago. I have at some point seen a post from Deviss saying it's fine to edit all their models.)
Post Reply