JMonkey Skinning

Hello,

I’m new to JME and I would like to know a few things:

  1. What kind of skinning does JME support? (linear blend skinning, log matrix blending, dual-quaternion skinning)

  2. Is this/are these method/s implemented on GPU?

  3. If there is only one skinning method implemented, how can I add another method?

I hope every question is clear enough, if not I will try explaining it more :slight_smile:

1 Like

JME has software and hardware skinning

  1. only linear blend
  2. the blending itself is done on the CPU, even for hardware skinning blending is “baked” into the transformation matrices passed to the shader.
  3. well…the hard way. There is no abstraction for different sorts of blending so the linear blending is hard coded in AnimChannel.update(). I guess you’d have to plug you code in there so that means you’d need to pull the JME repo and make your own version.

Whats your interest in using different types? Do you have any experience you could share?

I’m creating bachelor thesis’s project which involves me to implement dual-quaternion blending which removes most of the artifacts caused by linear blend skinning and other methods (here is a paper: http://www.seas.upenn.edu/~ladislav/papers/sdq-i3d07/sdq-i3d07.pdf). I would like to create this blending method in JME using GPU or CPU and if I’m successful it would be a pleasure to me to share it with you :slight_smile:

4 Likes

Awesome :slight_smile:

Heh ok I read the paper abstract and we’re not talking about the same thing. I think there is a misunderstanding

Blending in JME is blending two bones animations together in order to have smooth transition between the two, which is apparently not what you’re talking about.

The paper is about interpolation between keyframes in bone animations, and the thing is…we don’t have any.
JME uses “baked” animations, every frame has a stored transformation for each bone. The interpolation is done during the export process in whatever pipeline the user chose.
The idea is to avoid calculation at runtime at the expense of more memory.
That said, we have a blender exporter maintain by @Kaelthas, and I guess it does the interpolation when importing a bone animation, but I can’t tell what method is used.

Maybe that’s where you could contribute?

1 Like
@Shot511 said: I'm creating bachelor thesis's project which involves me to implement dual-quaternion blending which removes most of the artifacts caused by linear blend skinning and other methods (here is a paper: http://www.seas.upenn.edu/~ladislav/papers/sdq-i3d07/sdq-i3d07.pdf). I would like to create this blending method in JME using GPU or CPU and if I'm successful it would be a pleasure to me to share it with you :)

I remember this was one of Orge’s GSoC project.

I think I’m gonna develop some hardware solution for linear blend skinning and dual-quaternion skinning using shaders and shader nodes (I hope it’s possible) :slight_smile: