Skeletal animation

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Skeletal animation

      I am looking for decent resources for skeletal animation using keyframing and the like. I have one of the books in your line up, the 2nd Edition, but we only moved teapots around. The book had some very good things to say regarding other important parts of a game engine but it is not what I am looking for now. I am not building a game engine. I am tasked to build an animation system. In Amazon, the table of contents for the 4th Ed. does not reveal to me if true mesh animation is supported. I also did not see "skeletal" in the index either.

      Now I do have the book "Character Animation with Direct3D" by C. Granberg and another book for Direct11 by F. Luna but both are heavily reliant on Directx (obviously, hence the book titles) I am looking for guidance on building the C++ framework for a mesh loading and animation (skeletal, preferred) system. There is the CAL3D SDK but no explanations (this is not true now that I remember. There is some documentation that provides basic understanding of the larger components) only code. If understanding through reading source code is my only option then so be it but I'd much rather get some explanations of the various components of the system and why they are needed.

      So after that exhaustive backstory, does your book offer what I am looking for?

      Edited above.

      Steve
      Steve Jones

      The post was edited 2 times, last by smjones ().

    • GCC doesn't really touch animation unfortunately, and even more unfortunate is that there are not really any good resources on generic (non-direct3D specific) animation systems, the best resource I have found on even touching animation, is Jason Gregories "Game Engine Architecture"
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz
    • I have the "Game Engine Architecture" book also. Never occurred to me to look there for this topic.

      Definitely agree on the lack of animation resources out there. I've spent days looking for resources. Our application is a flight simulator that uses a few third party libraries that use OpenGL. One of the best libraries we have found is called DI-Guy by Boston Dynamics but the licensing costs are very high. The NRE developer costs to develop our own in-house solution may not be cost effective compared to just passing on the license costs to the customer but we could probably come up with something that adds a few characters in the scenes that create visual clutter that help improve fidelity.

      My plan of record at this point is to take what Luna and others teach and create my own non-DirectX dependent code. We'll see how that pans out. :)

      time to crack the math books, I know how to spell quaternion but that's about it. :D

      Thanks mholley516!
      Steve Jones
    • Ogre3D would also be a good code base to check out, at a very high level it is fairly simple to conceptualize, however implementing it will be a big job essentially you have.

      - A Mesh which is rigged to a skeleton, each vertice is weighted to one ore more bones in that skeleton
      - The bones are represented in code in whatever format you want, GEA recommends to use an SQT or Vector3 - Scale, Quaternion - Rotation, Vector3 - Translation. The important part here isn't the format they start out in, but in the output during a rendering frame, you will create and pass what is referred to as a "Skinning Palette" which represents the entire skeleton in 4x4 Matrices directly consumable by OpenGL or Direct3D. You would pass this Matrix Palette (an array) to the vertex shader
      - The mesh itself will be rendered the same as usual, however you will need to pass along (as vertex attributes) the indices and weights of each bone to use on each vertice.
      - Each vertice will have an associated one or more bones to be transformed by from its default state, it is easy to see how this will work from here, essentially the matrices will be be combined depending on their weights into a final matrice used for transforming the vertex.
      - Whether you transform the bones manually, with physics, or using an animation system (likely a combination of all 3 in some cases), the rendered mesh will follow these bones.

      I hope this helps, It is a hard subject to find info on, and I had to work out a lot of it in my head.
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz
    • As an additional note, also make sure you know the limits of your open-gl shader model equivalient num constant registers and the number of bones(matrices) you're passing in to your shaders. I don't think this is an issue with the newer shader models anymore but you'll never know.

      The first time me and my teammates were working on the rendering implementing the animation system using shaders had a bumpy start. The human biped characters were all drawn so messed up it was kinda funny actually. They were all stretched and had weird long crooked legs and very long necks like aliens or ostrich dinosaurs! lol. It didn't gave us any errors or warnings whatsoever. It just ran smoothly display the visual bugs. It just turned out that our characters had too many bones than the our shader can handle; thus truncating some of the matrices and vertices reading invalid matrix indices.
    • mholley519,
      I actually have been looking at Ogre recently. I could find information on their custom mesh and anim file formats, however. But honestly I didn't look very hard either.

      Hi Brent, good suggestion on the shader version support. Our systems use newer cards with SM 4.x support. Nice to see you here btw Brent. I was hoping you were going to have a chance to enter something in GameInstitute's last contest. Your game demo was very impressive.

      I think I'll starting cobbling together something from the various resources I have.

      You need to put a bug in Mike's ear to add this kind of support in v5 of his book. :)

      Thanks guys!
      Steve Jones
    • I thought I recognized your guys names, I took the game institute courses before I enrolled in college and frequented the forums for a while there.
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz
    • So are you "mholleyfamily" at GI?

      I've looked through Adam Hoult's code in the Carbon engine a bit but it is too specifically tied to the whole framework and DirectX. Plus I do not want to mess with any licensing issues.

      Just saw your sig. that you have an Alienware laptop. I bought one earlier this year and love it. Would buy another one in a heart beat. It came down to Asus and the one I have. They are more pricey but I think its worth what you get.
      Steve Jones

      The post was edited 1 time, last by smjones ().

    • Yeah, I got the alienware for school as I needed the best rig I could get for the software we use in our courses, I prefer to use my desktop though which is quite a bit faster.
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz
    • My laptop is similar to yours except I wanted the largest built-in screen I could buy so I got the x18. The rig is definitely a boat anchor but I mainly bought it as a desktop replacement. My current desktop which is a couple years old is typically running Minecraft and Arma3 since my kids took it over!
      Steve Jones
    • The only reason I didn't get the 18 is because I had to haul it all over Toronto, and the 17 is heavy enough as it is lol.
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz