Bones - Skeletal and Pose animations for jPCT

Started by raft, January 06, 2010, 11:45:01 PM

Previous topic - Next topic

raft

Bones is a animation API for jPCT. It supports skeletal and pose animations. It's aimed to be small library with no additional dependencies where possible.

Bones can be found at its home page. The download pack contains the source code, necessary libraries, Eclipse project files and a few demo applications. It's definitely free software with a "Do whatever with it" license.

Note: As the API evolved, following information is not exactly correct anymore. Please refer to Bone's home page for up to date information.



Bones initially loads skinning information via Ardor3D's Collada loader. Out of this information, a series of SkinnedObject3D's are constructed. They have mesh data, textures coordinates and skinning information. It's enough to set their textures and call build() to prepare them to be added into a jPCT world.

After this initial loading, they can be saved in a compact form. Saved objects can be later reloaded with loader, with no dependencies to Ardor3D

At the moment, the project is at "Proof of Concept" state. Skinning and mesh deformation works, but skeleton poses can only be created programmatically. Hence it's not really useful for games at the moment. This is so since, Ardor3D's loader only support this much at the moment. As they progress, Bones will progress..

Cheers ;D
r a f t

Edit: Updated the link with some code cleanup and documentation.
Edit2: Updated title and description to reflect changes in the API

raft


EgonOlsen

Very cool. But what exactly does "but skeleton poses can only be created programmatically" mean? That you can't load any pre-edited animations from a file?

A little tool that bundles Ardor and jPCT to load the file, convert it into Bones' format and save it would be cool IMHO, so that one don't have to do this in code everytime.

raft

Quote from: EgonOlsen on January 07, 2010, 04:40:46 PM
That you can't load any pre-edited animations from a file?
yes, unfortunately it means that at the moment. only bind pose is loaded if you even call it a pose.

i dont know much about collada, so i'm not sure about what will be supported. as written in readme, the seymour file contains an animation but it's not loaded at the moment. Ardor3D is at an early state too, it would evolve. so lets wait and see ;)

btw, i guess Ardor guys got a little pissed of. they think they do the hard work and i copy it. kind of true indeed  ::)

Quote from: EgonOlsen on January 07, 2010, 04:40:46 PM
A little tool that bundles Ardor and jPCT to load the file, convert it into Bones' format and save it would be cool IMHO, so that one don't have to do this in code everytime.
yes, i can do that, possibly a command line tool after the projects gets more mature and useful

EgonOlsen

Quote from: raft on January 07, 2010, 05:27:20 PM
btw, i guess Ardor guys got a little pissed of. they think they do the hard work and i copy it. kind of true indeed  ::)
;D As long as you respect their license, what's the problem with that!? If they can't cope with such things, they shoudn't make it OS.

raft


EgonOlsen

The point is, that it doesn't make any difference for Ardor3D's developers if you wait for the animation system to improve to a) use it within Ardor3D, b) port it to jPCT or c) print the source code and use it as a wall paper. So i don't really get this "let us do the hard work" talk. If they don't want to do it, well...nobody forces them to.

raft

#7
Ardor guys progressed and so did i ;D Bones is getting closer to be useful. pre-saved animations can be played and multiple animation files can be merged in memory now.

this time i've significantly diverged from their implementation for both simplicity and to match jPCT semantics. for example i have two methods animateSkin(float, int) and animateSkin(float) with same functionality Object3D.animate(float, int) and Object3D.animate(float)

Ardor supports animation blending but i'm undecided about porting it yet..

a new capture:
<removed>

i will soon make a release after some cleanup..

cheers,
r a f t

edit: i removed the video because of licensing issues  :(

paulscode


EgonOlsen


raft

thanks ;D unfortunately using that skeleton model in demo was against ardor's license. so i removed the video. IMHO, these license things are really a pain in the ass >:( use that,  dont use this, use that but place a license note, bla bla bla..

anyway, if anyone has some nice looking collada models for a demo i will appreciate it ;)

raft

well, after this model license thing i've tried to export karga models to collada format. the results weren't nice. my models are skinned with 3dsMax physique modifier which collada exporters (both max's builtin and openCollada) don't support ::) they want skin modifier. i've found this annoying since pyhsique and skin modifiers are essentially equivalent.

i've found a plugin to convert physique modifier to skin and it succesfully f*cked up my models >:( considering most of the ready to buy models are skinned with physique modifier, i've begun to question real world usability of this collada thing..

looking for alternatives, i've figured that Ogre3D plugin for max (ogremax) is very nice. it supports both modifiers and has lots of export options to organize things. it's also nice that options are saved with max file.

i was about to dive into Cyberkilla's Ogre loader and fix it then I found jME has a mature Ogre loader. after some going mad and bumping my head to wall period i've managed to import its data into Bones. it was kind of hard because it's internal working is slightly different from Ardor's. for example, in jME's root joint's rotation is baked into all joint's inverseBindMatrix. anyway, i managed to use it ;D

Bones now can load skins via either Ardor's Collada loader or jME's Ogre3D loader. It's API is beginning to mature. i especially tried to make it match to jPCT semantics. it also have import script files for windows and *nix which convert Collada and Ogre skins to Bones binary format. I've uploaded the new version, it's downloadable

A screen capture of a skin loaded with jME's OgreXml loader:
http://www.youtube.com/watch?v=dGaaxiSwH_Y

cheers ;D

note: hope model license wont be a problem this time. i've wrote to jME forums but couldnt get an answer yet. that model originates from Ogre3D's samples and used in jME's samples. i guess i can use it too  ;)

raft

updated the documenation. added support to clone SkinnedGroup. added a version history page.

AGP

Raft, I just saw this. I gotta say, I'm really looking forward to the evolution of your project. This is priceless functionality for jPCT. Please don't let your project go like Cyber's and thanks very much.

BTW, I'm sure you could use Cyber's Ogre3D importer in your project since Cyber's is open source. Ask him, if you feel you need to, but no doubt he would let you.

AGP

Also, do you have the specs to your file format so that one could write a MaxScript to export it?