views:

1618

answers:

10

I'm a dance teacher and I was thinking of writing some code to produce 3D animations of dance moves from choreography stored in a database. The dancing to data model representation I could write but I know nothing about graphics programming.

I wondered if anyone could recommend a library or similar of 3D human models, ideally with realistic physics/skeletal structure which would make this part easier. I assume with all the games around with human characters this must have been done.

Open-source/free as in beer would be perfect.

Also, this doesn't have to look beautiful, just good enough that someone trying to remember a step could see it and work out what was going on. It's not photo-realistic production for movie or a game, it's as a teaching aid.

Edit: I'm not sure how I could have phrased this more clearly, but let me try. I don't want to code it from scratch, as I said above "could anyone recommend a library or similar". It's a little frustrating everyone saying "don't do it from scratch" - I wasn't planning to. My dance teacher job is a hobby, my career is a professional software developer. So - what are the human model libraries, as someone not expert in 3D, but a competent programmer? Dance teacher doesn't imply incompetent. Many thanks to those who have answered the question with a positive suggestion.

+4  A: 

I dont think having a human model with an ainimation API is your biggest hurdle.

How are you going to program dance moves? This is going ot be your headache, especially if your thinking of using it for instructional purposes.

Look at how game Studios such as EA tryo to get thier little Football and Basketball players do realistic movements: they gave up on hand coding them, or trying to use some 3d Tool to design them, years ago. They have cameras with real humans with motion capture and a ton of geometric processing. The models are real athletes (in your case dancers) who wear special suits with reflective balls on all the joints and vertext points.

I would really look into what is involved in collecting this data before even thinking of trying to use it. I would hate to see you spend a lot of time getting an animation framework setup only to realize its gonna take you a year to map out your first dance move.

Neil N
You might be right but how you record data is probably dependent on the end result of how you use it. For example, if I was recording for a skeleton based model I'd need joint info, if for a 3d triangulated model then more of a surface capture.
Nick Fortescue
I would hope the expensive process of collecting this data would allow you to go either way. If I were to do it, I would certainly plan my source data to be as raw and complete as possible, allowing for any type of reformatting/conversion down the line.
Neil N
+1  A: 

You wouldn't want to code anything you don't have to from scratch. I would recommend getting your hands on a current game engine (Unreal 3, Crysis 2 ?) That already has human models in it. Then it's just a matter of scripting the animation of the model, learning the code for that engine. Then maybe learn to re-texture the combat outfit into a dance suit.

As mentioned already, motion capture for realistic human movement is hard. Game studios have whole rooms and cameras dedicated to it. They found out a long time ago, animating with logic instead of of human capture makes things seem off and inexplicably weird. The closer you get to real, it seems horribly wrong. One case of the uncanny valley, I believe.

I used to teach Tae Kwon Do and I often have wondered if I could write a program to do all the moves correctly based on physics and anatomy. It would take a ton of research, and a lot of non-programming knowledge to accomplish that. It would be impressive, but it would take a level of genius well above the ordinary genius of us programmers.

tkotitan
Thanks, any specific game engines? (you or anyone else has tried)
Nick Fortescue
I would say that it depends on your goals. If you just wanted to help a novice understand "fist at belt, punch to middle section", you might be able to produce a key-frame animation that made your point. Accurate physical simulation is probably not cost effective, though.
Bob Cross
A: 

I've had the same idea- I took Swing (the dance, not the Java framework ;) lessons for about eight years.

It would be a steep climb if you don't know anything about graphics programming. Most game and movie studios use motion capture systems to gather data on realistic human movement.

That said, you don't necesarily have to have game/movie quality rendering. If you're interested in 3D graphics programming and are willing to invest some time, you could start with "keyframe" poses instead of full animation. Demonstrate the moves in single-frame progressions. There are libraries of human models available from several vendors.

If you want to get into animation you'll want to read up on things like Inverse Kinematics and 3D game engines like Unity or Ogre.

Dave Swersky
+3  A: 

Quality 3D human models that are fully rigged can get somewhat expensive. It's really rare to stumble across sources which provides these for free. Basically, companies that need these hire armies of artists which make the models. Here's a few more

As someone else mentioned, another obstacle is the animation capture. This is a very popular research area in computer graphics. There whole families of algorithms that allows you to map a skeleton movement to a surface movement and vice-versa. Look up "skeletonization and skinning", also lookup the proceedings of the last few years for SIGGRAPH

Skinning is the process of taking movement data of a skeleton and applying it to a surface mesh. There are some Very simple methods of doing this but there are situations where these methods fail so more and more advanced methods are constantly being invented.

shoosh
Thanks for the links, but this sounds a bit too much like coding it from scratch for me.
Nick Fortescue
+7  A: 

This really is impossible for you if you are not a coder already without extensive 3d graphics experience. Honestly, and speaking as a coder with a fair bit of graphics experience myself, forget it.

However there is a solution. There's two packages you could use which are very much aimed at the sort of thing you wish to do. The more professional of the two is Poser, which is now in version 7, and is in the USD$350 range. The cheaper is DAZ3D which is free. Both these two packages use the same model and animation formats, understand rigging and other such essentials for figure animation, and are generally extremely capable (although I admit I'm less familiar with DAZ3D than Poser). Moreover an extensive support community has grown up around them - Renderosity for example. Indeed DAZ3D started out as a Poser support company and added DAZ3D to their portfolio to extend the market for their products.

Poser inhabits an interesting space in that professional 3D artists down look down on it somewhat as their packages of choice would be software like Maya. It certainly isn't amateur level software though as it does have a significant learning curve and is very capable in experienced hands: probably best classed as semi-professional or serious hobbyist.

One interesting aside is that the animation export format from Poser includes BVH, which is the import format into Second Life where there is a significant market for quality animations.

EDIT: Checked the posters profile - and I see the question was asked by software developer. My initial comment about doing this yourself from scratch still stands as does my recommendation as to software. However as you do have software experience you'll probably find that these packages do offer you a way into some interesting possibilities. For example Poser offers vrml export and there are extensive java libraries that can use to handle these models. I've personally used this approach to develop Java3D applets for a client to show clothing options for an online retail store (although we eventually deployed using WireFusion as Java3D suffers from difficult automatic deployment for the end-user)

Cruachan
Big thanks for the links to the libraries, I'll check them out. Sorry the question wasn't clearer to start with.
Nick Fortescue
+2  A: 

Take look at toribash. It is a turn based rag doll physics fighting game where you can design your own moves. They also allow scripting of moves in Lua. You could definitely choreograph using it's scripting engine although I'm not sure if you'd want to.

Nick
Thanks for the suggested library, I'll check it out.
Nick Fortescue
+1  A: 

Plasticboy Anatomy 3D Models offer medically accurate anatomical royalty free 3D models.

www.plasticboy.co.uk

You can download full anatomy packs that include the full human body or just single elements and systems such as: Heart, Brain, Circulatory System, Digestive System, Endocrine System, Integumentary System, Nervous System, Reproductive System, Respiratory System, Skeletal System, Urinary System.

Formats include: .MAX (3ds Max) .OBJ (Maya) .XSI (Softimage) .FBX (Autodesk) .LWO (Lightwave)

Guy
A: 

in plasticboy site the models are not free, you should pay to get one of them

md
+1  A: 

I mess with Poser as a hobby and as such try and find to find as much free content as possible. I have found lots of BVH files including very lengthy and complex dances. I don't dance. I have seen BVH applied to any of a number of human characters that are extreamely lifelike in the texture department. I mean they need clothes to cover some of their bits. Very lifelike. You can get any number of outfits including ballroom gowns to jeans, and leotards. One particular dance I loaded through BVH was in a Hip Hop style and was like watching "So You Think You Can Dance" or something. There are methods to edit any of the BVH motions inside of Poser. Whether through Key Framing or larger group edits spanned over hundreds of frames. I don't work for whatever company owns Poser (as ownership has changed about 4 times since I've used it) or sell content. It sounds like a good way to do what you've described. And if you have less than perfect morals use can get it from any number of sites... (ahhm) bit torrent type places for the cost of your soul.

guy
+1  A: 

I'm not sure if this supports animation but I used http://www.makehuman.org/ a while back and was pretty happy.

ldog