Hodor animations and joint position woes

LS(F) and LE(F) are relative to the ST(F) and EN(F) times - so almost always they’ll be zero…

I think Markers not animating is actually a known bug - FYI. You aren’t the only one that wants this, so it’s on my list - but lower priority for now than about a million ‘big’ things.

The Warning should indeed state the joint it is on, I can fix that for ya. Uh-oh - I just realized that ‘Root’ in your error message is the node with the problem - it should be enough info to find (do you have many MULT objects called Root?). I’m not seeing how to make that more informative - it’s dumping a log with all of the info I have at that moment for that node…

Would an ideal use of LS(F) and LE(F) be a ship that unfolds or opens a radar (for example) and THEN has the radar constantly spin?

I found that stf:0 enf:100 lsf:0 lef:100 would never play let alone loop when asked to in the mad state nor would having lsf:50 and lef:60 loop 10 frames it would just assume the first frame and freeze. It is easy enough to set them to zero and have additional animations and more states in madstate. I was thinking it would work like the loop sample start and end in the SFX for engine noises, but it seems to behave differently

I think the error message isn’t a big issue because really what I was doing was breaking down the meshes for debugging and putting everything at root so every mult needed to be checked, normally I wouldn’t have 24 meshes under the same node, the would be further in the hierarchy so the message would mean a lot more.

At the end of the day I was actually able to animate the mesh as intended and more consistently than with the old Maya tools. So that is a vast improvement even if it took a while to figure out why it was all hosed up. Now on to dock path fixing my resourcing and production facilities

1 Like

The rules I have gleaned from this conversation

  1. make sure your joint names are unique (duh, but check anyway)

  2. don’t use LS(F) and LE(F) it can be done in the madstate

  3. convert all curves to linear (may get fixed in the future)

  4. rotate the pivot of your meshes to match the root rotation

  5. do not scale an animation (really can’t stress this enough you will save time by starting over)

  6. move all of your animated mesh pivot points to the same location as the JNT, do not move or adjust your meshes to the JNT, animate the JNT not the mesh

  7. reset all xforms and collapse

  8. markers won’t animate currently, may get fixed

1 Like

What would you need an extra MAD UI for?

Thanks to this thread I realized that the Blender Toolkit wasn’t actually exporting animations correctly (I didn’t know HODOR was supposed to generate a MAD file, so when I tested the Taiidan Interceptor example I was just using the existing one, and everything seemed okay.) I’m continually baffled why the original creator of the exporter thought that just writing Blender’s transform matrices to file and expecting any other software package to understand them was the way to go.

Happy to say that it is fixed now. Weird thing about how the animation part of the exporter was originally written, is that it actually does go frame by frame to generate the animation data, instead of keyframe to keyframe.

This means that the MAD file is quite a bit bigger, but it also means you don’t have to worry about either manually baking animations out to keys, or only using Linear interpolation in the animation.

1 Like

Kick-ass sir!

HODOR’s first life wasn’t actually related to HW2 HOD authoring with Max/etc. It was written first to help convert ‘source art’ HW1 ships into HW2 HOD files. It had some pretty crazy features (auto generation of engine burn nodes from HW1 hints, full LWO->HOD & layered PSD baking/welding) - but ultimately with ‘new’ HW1 ships being authored I think none of the resulting art was actually used (Doh!).

However all of that effort resulted in a proper HOD save/load tool - then with the advent of the ‘new’ graphics engine I pushed the HOD format further (and it has not reached the final form yet by any means). One big part of HW1->HW2 was animations, which were done in the old Lightwave-centric TCB curve style. So I created a baking pass that could burn those down into LINEAR super-sampled keys. The MAD authoring stage would look for keys that weren’t needed and nuke them (or keys that didn’t transition right and super-sample further). I may be able to resurrect that code as a HOD saving flag and have it ‘auto-prune’ LINEAR animation MAD channels.

Ultimately, getting BEZIER will be ideal though - as it’s much cleaner, smoother, and smaller (which actually means faster/less CPU when an animation is playing).

1 Like

Actually a number of seemingly batch-generated functional hods using original HW1 models and textures still live in HW1Ships.big - kushan and taiidan light defenders, kushan headshot asteroid and taiidan cryotray, from the top of my head.

Nice! Yup - those were most likely made by an infant HODOR. I initially tried to use the ‘in-game’ versions of the ships in HW1 - but with all of the ‘source’ data it became clear quite fast that baking it down would be superior. I did all kinds of crazy ish to get it done though - HW1 models had a ‘glow’ flag (boolean) per polygon, defined most of their structure and elements very differently. The Team-color stuff was crazy. I bet some of that code still works. Oddly, in that case, if the source art for Cata existed, I bet HODOR could be quickly coaxed into making legit (some would say ‘authentic’?) HW2 HODs from it. Alas, this appears to not be the case :frowning:

1 Like

By “source” art, do you mean something else than the peo-geo formats used by the HW1 engine?

If HODOR is capable of inputting those formats, I bet a number of people around here would be interested in batch-converting old HW1C mods.

No in this case I mean ‘source’ (LWO/PSD). That said, converting PEO/GEO might be an option. I know I did a first pass on that ages ago and found it to be quite ugly - the format sucked hard. Might be fun to do at some point though, certainly. If anyone has a few examples they want to donate, send 'em over. I’m busy as heck - but I’d keep them in my back pocket. It’s nice when doing properly ‘heavy’ work at times to just take a break and chew on something new for a bit…

1 Like

OMG I can’t wait until UnHod is available so I don’t have to rig everything from scratch again. Max is killing me with transform madness. I have spent more time trying to fix joints and meshes being rotated in a rotated coordinate system (and sometimes max flipping the rotation because WHY NOT and even better inverting normals when you reset xforms…) It would be really helpful to have a maxscript that would place dummy objects to show how things are going to be oriented in game.

Well I got working latch paths… one of them, it works better than the maya exported latch paths, but ships are still doing weird things (approaching one latch path and then sliding over to another when it becomes free)

Paths are being set up like the following with SEGs underneath

DOCK[Latch4IN]_Fam[Utility]_Link[Latch4OUT]_Flags[Latch]

DOCK[Latch4OUT]_Fam[Utility]_Link[Latch4IN]_Flags[Exit Latch]

have a bunch of small issues

  1. the ships latch about 1 meter to the left of where they should, I can move the paths over, but it doesn’t line up with everything else, weird?

  2. ships use one maybe two latch positions, then start queuing but always start with the same one, occasionally ships will use other paths

  3. I have linked the path names so ships will queue up if the path is full… sometimes two ships will start down the same path and both will dock inside of each other…

  4. it was unclear from the example if ncl1# was required or if any sequential string would be fine. It looks like In and Out paths have the same suffix in the example, but editing it made no change when it was just 001 , 002 etc

  5. Can we create our own dock families now? Or are we tied to Fighter, Corvette, Utility, etc… Utility seems to do double duty as resourcing and docking…

  6. are there any resourcing specific flags/families in the dock paths?

What controls which animation to play when opening and closing hangar doors?
I took a look at the fuel pod example and it looks like Flag’Anim’ at least says there is a link, but then it has MAD’#’ not sure how I’m supposed to link this. A quick experiment showed that the door open animation played properly on exist and the ships follow it which is good, but the door open on ship docking doesn’t play at all even with the Anim flag.

Couldnt we always create our own dock families via familylist.lua?

I havent found any resource specific flags in the dockpaths so far. Is latch useful for anything besides resourcers?

Well, now I don’t feel quite so stupid knowing someone else is exacerbated with the system. Sorry for your woes but there does need to be a better system. Is Blender giving this much grief also?

@ sastrei: That’s what I was talking about and how a plugin would be very useful. Unfortunately I’m not qualified to make one.

I was looking for custom dock families so that I could for example have a ‘probe’ family for specific dock paths or something

latch is used for repair now too, like on the kushan support frigate. Though I don’t know if that is scripts or dock paths…

That’s what I mean. To make a “probe” dock family wouldn’t you just rename the dockpath in max to suit after adding the name to familylist.lua and editing the .ship file to match? it’s all just text.

Oh yeah I forgot about repair.

The ‘in game’ mechanics of dock paths, latching, etc - are not my area of expertise. I just make the data and draw the stuff.

In this case I’ll ping a few others and see if I can get some attention from people that do know this stuff. This is a system that has been and will probably continue to be, problematic - it’s a proper pain in the ass, even here (in house @ GBX)… :smile:

Just an FYI while I was thinking about it - almost without fail HODOR’s DAE handling cares about ONLY things it can see as parameters which is a format of XXX[DATA] - when Max adds that ‘ncl’ stuff to make nodes unique - it is completely irrelevant to HODOR (except when parsing the DAE for name references).

If you have an issue and you think that’s related (it shouldn’t be) - post for me the node names in question, it may be something else entirely…

I had about 5 or 6 new dock families in my old HW2 mod. Yeah, why would that be a problem? As Sastrei says, just add them to the familylist.lua and use them in your dockpaths… Nothing complicated.

The old Maya exporter wasn’t flexible and you couldn’t make new classes as far as my experimentation went. I would assume any race prefix will be ignored.

The two specific questions are

How to bind an open animation to a IN dockpath? It looks like the MAD parameter isn’t used.

Are there any specifics for resource docking paths.a resource collector example or a carrier would be really help ful