Application: crassell

Join the team. This area is for people who want to participate in OpenMW's development in one way or another.
crassell
Posts: 49
Joined: 26 Aug 2017, 21:10

Application: crassell

Post by crassell »

Hi,

I'm a firmware developer for Intel so my expertise is mostly in hardware design but I have quite a bit of experience with large code bases (maintaining a c++ architectural simulator, designing verilog integration with the c++ architectural simulator, scripting for build automation and code generation, inline assembly optimization, etc.). I am a complete newb when dealing with computer graphics / game design, but I learn fairly quickly and reverse engineering code is my full time job (nobody seems to believe in good code documentation / comments :D ).

I'm mainly interested in getting involved with some potential post 1.0 features but can pick up other issues to resolve as needed.

Some things I would like to do:
1. Add animation support through the OSG format as an alternative to NIF.
2. Add the ability to extend general animation mechanics, combat mechanics, etc. to behave different than vanilla while maintaining compatibility with vanilla behavior (seems like a refactor of character and npc state behavior would be needed for this).

Other things I would like to work on are just the general render pipeline but some of these things may take months to learn and I will have to start small.

I have cloned the master of the git repo for openmw and have built and ran both debug and release on Visual Studio 2017. My full time job is working in linux as well so I wouldn't mind developing on either platform.

Thanks,
crassell (I go by Chris)
kuyondo
Posts: 243
Joined: 29 Mar 2016, 17:45

Re: Application: crassell

Post by kuyondo »

yours skills are invaluable in the openmw community.
User avatar
psi29a
Posts: 5355
Joined: 29 Sep 2011, 10:13
Location: Belgium
Gitlab profile: https://gitlab.com/psi29a/
Contact:

Re: Application: crassell

Post by psi29a »

Hello Chris and welcome aboard!
crassell wrote: 28 Aug 2017, 01:53 1. Add animation support through the OSG format as an alternative to NIF.
This is fairly ambitious but if you're serious then please have a chat with Scrawl and get your familiar with OSG. :)

The problem here is that there is currently no 'standard' for animation support in OSG, so you'll be defining the format. That's not enough because people will need to also be able to use it! That means either writing or supporting people to write plugins for at least Blender, but likely other sets of software like s3studiomax and maya.

This isn't to discourage you of course, but to give some grounding as to what it means to support animation in OSG.
crassell
Posts: 49
Joined: 26 Aug 2017, 21:10

Re: Application: crassell

Post by crassell »

psi29a wrote: 28 Aug 2017, 07:18
This is fairly ambitious but if you're serious then please have a chat with Scrawl and get your familiar with OSG. :)

The problem here is that there is currently no 'standard' for animation support in OSG, so you'll be defining the format. That's not enough because people will need to also be able to use it! That means either writing or supporting people to write plugins for at least Blender, but likely other sets of software like s3studiomax and maya.

This isn't to discourage you of course, but to give some grounding as to what it means to support animation in OSG.
Should I start a discussion in the development forum for the format? I can begin by studying the current nif format for animation and compare that to how we are currently doing this translation in openmw from nif to osg c++ data structures. The motivation here was to streamline content creation through the latest blender using the osg exporter but from what you're saying, I would be writing both the osg format and the exporter :D .
User avatar
psi29a
Posts: 5355
Joined: 29 Sep 2011, 10:13
Location: Belgium
Gitlab profile: https://gitlab.com/psi29a/
Contact:

Re: Application: crassell

Post by psi29a »

Certainly, and be sure to have a look here:
viewtopic.php?f=2&t=3724&p=49271&hilit=gltf#p49271

Scrawl widened the comparison between opengex, glTF, Collada, morrowind NIF and OSG, which includes talking about animation support.

It was later posted with this:
https://godotengine.org/article/small-defense-gltf

which covered animation in gltf
this bit was interesting:
Here, Eric makes the point that glTF 2.0 has serious design flaws by poorly (or not) supporting:

Keyframe animation with cubic interpolation
Animation of rotation angles
Tension-continuity-bias (TCB) animation curves
When exporting animations from DCCs to glTF 2.0.

I think however, that here the point is missed and that OpenGEX has put a lot of effort into features that are impractical.

The reasoning behind this is that animation is imported in game engines mostly from characters. Nowadays, characters are rigged and animated using IK, not FK. Reproducing the full IK chain and settings in a game engine is not only inefficient but against the most common use case of using state and blend trees, and game-related IK.

Because of this, character animation is mostly sampled (when exported) to either transforms or TRS units at fixed intervals, then compressed.

In fact, my main criticism to glTF 2.0 is not supporting transforms tracks.
Not sure what IK and FK are, but from a blender perspective everything works with KF (key frame) and the rest is interpolated which is what happens in the NIF "standard". (Others, please correct me if I'm wrong.)

It would be great if we supported the other formats (opengex, glTF, Collada) before we went about creating our own extension to the OSG file format. Considering that they have tools already available for Blender and other content artists tools, we should be supporting them. We've had professional artists wanting to help the project, but they refuse to use old tools because they are the only ones to support the old NIF format.

That's just my opinion though... ;)

BTW, updating our NIF support to beyond Morrowind would also help. By supporting TES4 and TES5 NIF improvements (not game, just asset loading support) we can also take advantage of more recent tools. This is where I plug the development of cc9cii and others who have invested their time in updating OpenMW's NIF support. Have a read at this thread: viewtopic.php?f=3&t=3017&start=180
^-- at least 3 people working on this.
User avatar
AnyOldName3
Posts: 2666
Joined: 26 Nov 2015, 03:25

Re: Application: crassell

Post by AnyOldName3 »

IK and FK are something to do with having a simplified skeleton which the animator animates, and then a real skeleton which is actually used to animate the mesh. A bunch of constraints are programmed in such that the animations from the complicated skeleton can be calculated from the simple one and they shouldn't do things like having elbows bend backwards.

This could be not quite right, as I've not googled it, but it's my best recollection.
crassell
Posts: 49
Joined: 26 Aug 2017, 21:10

Re: Application: crassell

Post by crassell »

AnyOldName3 wrote: 28 Aug 2017, 12:02 IK and FK are something to do with having a simplified skeleton which the animator animates, and then a real skeleton which is actually used to animate the mesh. A bunch of constraints are programmed in such that the animations from the complicated skeleton can be calculated from the simple one and they shouldn't do things like having elbows bend backwards.

This could be not quite right, as I've not googled it, but it's my best recollection.
My first google resulted in this which seems to be a very simple explanation for FK vs IK
https://www.reallusion.com/iclone/help/ ... _IK_FK.htm
psi29a wrote: 28 Aug 2017, 09:33 It would be great if we supported the other formats (opengex, glTF, Collada) before we went about creating our own extension to the OSG file format. Considering that they have tools already available for Blender and other content artists tools, we should be supporting them. We've had professional artists wanting to help the project, but they refuse to use old tools because they are the only ones to support the old NIF format.
As a novice in this entire affair, I would lean more towards OpenGEX as it has more green support rows in the comparison column :D . The website also already has format consumption code ready to be integrated in OpenMW. The only downside I see is the lack of a binary format but that may be a plus as it allows the engine the ability to format the data in whatever way it wants for an internal binary format while having all of the development happen between the modelling tools and the engine using the text format.

There seems to be other considerations to make beyond my knowledge at this point such as the PBR support. I know PBR is big with most of the latest game engines now but not sure if this is a sticking point.
User avatar
AnyOldName3
Posts: 2666
Joined: 26 Nov 2015, 03:25

Re: Application: crassell

Post by AnyOldName3 »

PBR isn't a sticking point until at least after 1.0, as Morrowind used classic materials instead.

The one issue with OpenGEX that isn't covered there is that it doesn't have support for particle systems, which Morrowind, and therefore OpenMW, support.
crassell
Posts: 49
Joined: 26 Aug 2017, 21:10

Re: Application: crassell

Post by crassell »

AnyOldName3 wrote: 28 Aug 2017, 18:41 The one issue with OpenGEX that isn't covered there is that it doesn't have support for particle systems, which Morrowind, and therefore OpenMW, support.
Are particle systems something that other game engines have standardized formats for with the modelling tool? It seems like each game engine I look at (by googling) does it their own way and then makes an export from the content generation tool to match the engine. Not very familiar with particle system implementation but is there a way to define our own standard for just the particles while lumping the rest of the assets in OpenGEX?
User avatar
Br0ken
Posts: 243
Joined: 02 Apr 2012, 05:54
Location: Siberia

Re: Application: crassell

Post by Br0ken »

Is there any games/engines that using OpenGEX (besides Terathon's engines)?
I'm googled about it, but don't find anything.
Post Reply