Jump to content

HKXPack/HKXAnim - Animations in FO4


Recommended Posts

There's also an 'official' Java library, called Java3D, that can import some other file formats, namely 3DS and X3D, taht can be exprted by Blender. If these formats are aslo availale as 3DsMax output formats, then I'll go for that.

 

3DS files are available as output by 3DSMax. It's where the file format comes from in the first place - so it seems like you've found yourself a very good candidate to proceed. It's exciting watching this progress - best of luck to you, sir.

Link to comment

3DS files are available as output by 3DSMax. It's where the file format comes from in the first place - so it seems like you've found yourself a very good candidate to proceed. It's exciting watching this progress - best of luck to you, sir.

So, finally I decided to go with the Collada format, which can be exported both by Blender and 3DsMax. It's kind of the standard for all the animation files, so I guess it's the best of all worlds.

 

I'm finishing to figure out the transforms to apply to get the HKX data from the Collada data, but the results I have already are extremely promising. I have as always no ETA on the tool, but I may say that an early version could be finished for maybe... next week ?

 

Keep in mind that by "early version" I don't mean something that works, just something that kind of give results.

 

 

edit: I think I finished the algorithm itself, and uploaded it to the HKXAnim repo. This is the only thing on there for the moment.

The HKXAnim repo can be found here. If you want to check out the algorithm I'll implement.

 

Now, there is only to test if it holds up... and to actually implement it I guess.

Link to comment

I got the skeleton out of the skeleton.hkx (see attached files, you still need to manually set the scale to 1). However I have a strange problem: When I open the skeleton.dae in Blender the skeleton looks like a skeleton should look like. When I now make an animation with this skeleton in Blender, import the animation as fbx into 3ds max and generate a hkx, in game my character looks like all bones are broken when the animation plays. When I use the skeleton from the skeleton.fbx, in Blender it looks wrong (actually it looks exactly as my character in game when I use the dae skeleton), but when I make and animation with it, the animation plays correctly in game (besides that it is rotated 90° around the z-axis). Has someone a clue why that is happening? Does Blender rotate bones when it creates an fbx?

skeleton.fbx.rar

skeleton.dae.rar

Link to comment

I got the skeleton out of the skeleton.hkx (see attached files, you still need to manually set the scale to 1). However I have a strange problem: When I open the skeleton.dae in Blender the skeleton looks like a skeleton should look like. When I now make an animation with this skeleton in Blender, import the animation as fbx into 3ds max and generate a hkx, in game my character looks like all bones are broken when the animation plays. When I use the skeleton from the skeleton.fbx, in Blender it looks wrong (actually it looks exactly as my character in game when I use the dae skeleton), but when I make and animation with it, the animation plays correctly in game (besides that it is rotated 90° around the z-axis). Has someone a clue why that is happening? Does Blender rotate bones when it creates an fbx?

 

All I read from this was

"I got an animation into the game. It was rotated 90°. Fuck it. I got an animation into the game!"

 

Sorry for the utterly useless post - I have no clue.

Link to comment

I got the skeleton out of the skeleton.hkx (see attached files, you still need to manually set the scale to 1). However I have a strange problem: When I open the skeleton.dae in Blender the skeleton looks like a skeleton should look like. When I now make an animation with this skeleton in Blender, import the animation as fbx into 3ds max and generate a hkx, in game my character looks like all bones are broken when the animation plays. When I use the skeleton from the skeleton.fbx, in Blender it looks wrong (actually it looks exactly as my character in game when I use the dae skeleton), but when I make and animation with it, the animation plays correctly in game (besides that it is rotated 90° around the z-axis). Has someone a clue why that is happening? Does Blender rotate bones when it creates an fbx?

 

Not entirely sure, but I believe Blender does have Z and Y axis switched when compared to some other 3D software. (or something like that, at least, I have heard about the 90° rotation thing before somewhere, and that it had to do with the axis being different)

Link to comment

I got the skeleton out of the skeleton.hkx (see attached files, you still need to manually set the scale to 1). However I have a strange problem: When I open the skeleton.dae in Blender the skeleton looks like a skeleton should look like. When I now make an animation with this skeleton in Blender, import the animation as fbx into 3ds max and generate a hkx, in game my character looks like all bones are broken when the animation plays. When I use the skeleton from the skeleton.fbx, in Blender it looks wrong (actually it looks exactly as my character in game when I use the dae skeleton), but when I make and animation with it, the animation plays correctly in game (besides that it is rotated 90° around the z-axis). Has someone a clue why that is happening? Does Blender rotate bones when it creates an fbx?

 

Blender's default FBX importer is unfortunately garbage.  I assume what you see when you import skeleton FBX is this:

 

fltZTOE.jpg

This is like this because of Blender's Bad FBX importer.  

 

Now there's a Japanese guy who has written a better FBX importer for Blender, which is based on using Autodesk's FBX SDK. so it's far, far more accurate.  When I import your skeleton FBX with that, I get this:

 

yfzI8fF.jpg

 

Skeleton appears far more correct. However as you see it's rotated 90 degrees on the X axis (as well as technically 180 degrees on Z. ) this may or may not account for the 90 degree rotation you're seeing.

 

You should be able to import it with this plugin, try different rotations of the skeleton in blender, and see what works in the game.

 

I'll have to hunt up the info on the Japanese plugin.

 

EDIT:  The FBX plugin consists of two components.

 

First is the actual blender plugin, you can download here: http://blenderfbx.render.jp/

Currently it only works for blender 2.73 through 2.76 due to Blender changing Python versions in the latest 2.77.  I am sure he will update it for 2.77+ soon.

 

Second part is the converter exe portion you can get here: http://umconv.render.jp/home/

 

These converter EXE files you place in your Blender directory in the "umconv" folder. for example: C:\Program Files\blender-2.76b-windows64\umconv

The plugin will use these to do the conversion to-from FBX using Autodesk's SDK.

 

Good luck.

Link to comment

Blender rotation bug has always been a problem with any bethesda game, especially visible when using blender then export to 3dmax. i am not sure but how is the script for 3dmax right now ?? the older scripts for 3dmax never worked right when usinmg blender templates for games like oblivion and fallout 3/nv it was due to the bone named bip01NonAccuum witch does not seem to be there when importing in 3dmax so it will always rotate in the wrong direction. not sure how they even fixed it.

 

btw i was hoping people will make fully working scripts for blender this time around, that way we will be able to use stuff like this in newer blender:

 

http://www.loverslab.com/topic/18497-organic-rigging-for-blender-267-and-higher/

 

That way you can create animations even more fluid.

Link to comment

All I read from this was

"I got an animation into the game. It was rotated 90°. Fuck it. I got an animation into the game!"

 

Sorry for the utterly useless post - I have no clue.

Thank you for the support ^^

LE666 indeed have already got animations kind of through the whole thing already, by exporting them from 3DsMax... but not with tools we can provide to the general public yet.

 

The thing we're discussing about here isn't this kind of port, but a simple converter for everybody to be able to make FO4 animations, be it from Blender or Max.

 

 

btw i was hoping people will make fully working scripts for blender this time around, that way we will be able to use stuff like this in newer blender:

 

http://www.loverslab.com/topic/18497-organic-rigging-for-blender-267-and-higher/

 

That way you can create animations even more fluid.

 

The thing is that Blender (and 3DsMax) both use either Python or C++ as base for these import/export/convert scripts.

 

Python

There's actually two problems in Python : no librairies, and no code obfuscation.

 

There isn't a really useful Python binary file creator/analyzer - the closest we have is PyFFI and it's already hard enough to use it for Nif files. I have no idea what would be required to implement the "delayed data retrieval" part of HKX files into PyFFI (I know that it isn't handled yet).

 

Tthe biggest problem is that coding a Python interface for HKX files will require something like a "nif.xml" file, or hardcoded constructs for only some of the elements. However, while the nif.xml file was discovered organically over time by the NifTools team, the whole "hkx.xml" file equivalent I use is actually extracted from the game engine, and it would break the EULA to disclose it.

I got around the problem in Java by obfuscating the filem, meaning making it unable to be retrieved from the compiled file. As the Java code is in a single big blob, nobody could just "replace" part of the code to make it dump this XML file, or at least if he can do that it can extract the data directly from the FO4 game, so that makes HKXPack pretty safe to be distributed. Sadly, there's no simple way to obfuscate data in Python as all the source code can always be fragmented, especially if I want to make it open source.

 

C++

A C++ library to write (and maybe read) HKX files would be way too close to the official, not-free Havok library to be accepted by Microsoft. This

would actually be even worse because even though the "extracted" data wouldn't be disclosed, the whole library would call for a takedown request.

 

 

 

To make it simple, the only languages we could provide converters for are languages not supported by Havok (to not blindly "copy" something they have) and languages that allow obfuscation (to not disclose Havok's internal data). I only know of a select few languages that could correspond to these criterias (Java, Go, Haskell, Cobol...) and from these I guess only Java (and maybe Go, but I don't use Go) are used today.

 

What we could try to do is hooks to the Java code. I have no idea how I'd proceed for that, be it in Python or C++.

 

 

What I hope will happen, however, is that the COLLIDA data will provide all the relevant information extracted from the Blender scene and that the

exact replica of the Blender animation can be created in HKX format.

 

 

I also forgot to say : I'll in fact be a little less available that I thought this week, so I may not have a prototype version as soon as I would have wanted (probably not this sunday then). Sorry for that, I'll try to get to it as soon as I can :)

Link to comment

I finally have a skeleton that produces correct animations. Let's ask my provisioner what he thinks about this:

post-233525-0-63426900-1462897959_thumb.gif
 

I think he is happy that he doesn't look like an abomination from hell anymore :cool: . And yeah, I am not the best animator :angel:.

 

The cause for the skeleton problem was that Blender uses the y-axis as primary bone axis, while 3ds max and HCT use the x-axis. Also the bone orientations got messed up during the import process. After I found the correct import settings and corrected the bone orientation everything seems to be ok now. The skeleton may still not be perfect, but at least we have now a starting point. I think it would be a good idea to collect animations to use as testing set for HKXAnim, so animators start animating and send me your animations :P.

 

I have attached a Blender project file with the skeleton. 3ds Max user have to wait for a kind soul to convert the skeleton to Max, my knowledge of Max is very limited and I don't feel up to the task.

 

 

 

 

 

post-233525-0-63426900-1462897959_thumb.gif

FO4AnimSkeleton.blend.7z

Link to comment

Dexes, this is great work. Thank you so much. I'm following this project and just wanted to encourage you to keep up the good work.

I'm encouraged that lordescobar got results using the plugin that shall not be named, but I think in the long run we are going to need Dexes's program to make custom animation commonplace.

Link to comment

I finally have a skeleton that produces correct animations. Let's ask my provisioner what he thinks about this:

 

I think he is happy that he doesn't look like an abomination from hell anymore :cool: . And yeah, I am not the best animator :angel:.

 

The cause for the skeleton problem was that Blender uses the y-axis as primary bone axis, while 3ds max and HCT use the x-axis. Also the bone orientations got messed up during the import process. After I found the correct import settings and corrected the bone orientation everything seems to be ok now. The skeleton may still not be perfect, but at least we have now a starting point. I think it would be a good idea to collect animations to use as testing set for HKXAnim, so animators start animating and send me your animations :P.

 

I have attached a Blender project file with the skeleton. 3ds Max user have to wait for a kind soul to convert the skeleton to Max, my knowledge of Max is very limited and I don't feel up to the task.

 

 

Thank you so much for your work!

Link to comment

3DS skeleton yet?

 

Not until someone else make it. I can't do it, and Lordescobar can't do it.

 

You're welcome to try to do that of course. The idea is "just" to convert or remake the Blender project into a 3Ds project.

 

(I'll try to make some progress this week-end, but no promises about results :/ as I said, things popped up and I don't have the time I thought I would have.)

Link to comment

 

Not until someone else make it. I can't do it, and Lordescobar can't do it.

 

You're welcome to try to do that of course. The idea is "just" to convert or remake the Blender project into a 3Ds project.

 

(I'll try to make some progress this week-end, but no promises about results :/ as I said, things popped up and I don't have the time I thought I would have.)

 

 

That one is beyond my 3D capability. I know just enough to follow a guide to animate (and barely that). By the time I figured it out, there will be 3 skeletons to choose from here. :)

 

Thank you for working on this between actually important things.

Link to comment

Thanks all for you kind words.

 

I have now added the missing nif skeleton bones and rigged the CBBE body to it (Actually I did it 2 days ago, but then I received my HTC Vive and I got lost in virtual reality :P).

 

That's cool :)

 

However... I don't know how to animate :/ If someone cold create a sample animation from this project and transfer it to me, I'll try to continue the exporter from there. (just a .blend project should be fine)

 

Ideally, I would like if possible for each bone of the project to be included in the animation in some way... but this isn't a requirement as of now. I'll try to extrapolate if you can't manage to make an "all bones animation" easily.

 

(I struggled to animate that for a good 30 mns and didn't even manage to add a keyframe, that's how sad it was.)

Link to comment

 

(I struggled to animate that for a good 30 mns and didn't even manage to add a keyframe, that's how sad it was.)

 

 

it could be worse: i am totally lost when looking at any animation program - i don't even know what a keyframe is... now that is sad :P

Link to comment

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...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use