Tracking the development of the BlenderPeople script suite.
Wednesday, August 30, 2006
Wow. BlenderPeople0.8 release has been a success, as much as an unfinished GPL script suite can be a success.
Someone noticed it and put it to the front page on CGTalk
, which was very cool, and I've gotten a lot of very nice and ethusiatic responses. The BlenderPeople websites (RSS feed, blog, and main page), which usually serve about 12,000 pages in a month, served almost 10,000 just on the release day.
Monday, August 28, 2006
The post title says it.
Duped from the static page...
Not sure if BlenderPeople is for you? Download and read the comprehensive documentation: Blender People 0.8 DocumentationBlender People 0.8
, zip file.
Blender People is a suite of Python scripts for Blender that, in conjunction with a mySQL database, allow the generation of large scale crowd dynamics, including (but not limited to) combat scenarios. Included in the distribution are a sample .blendfile, with all the scripts embedded, and the Windows installer for MySQLdb. BlenderPeople0.8 is release under the GPL. This version of BlenderPeople makes use of features not found in the official Blender 2.42a release. Windows users can find the special Blender compile here
; OSX (Python 2.3) users go here
. Anyone who wants to build their own for their platform can get a .zipped ./blender/source/blender directory here
If you want a comprehensive list of what it can do, then download the standalone documentation. But if you're too lazy to even do that, then here is a short feature list:
- Arbitrary number of Actors
- User-defined Actor types
- Heirarchical, automatic or user-defined command and control
- Ranged attacks
- Actors can be set to attack, defend, march, retreat, mill, regroup, attack area, etc.
- User-defined effectors to simlute the effect on Actors of fire, mud, boulders, force fields, etc.
- Support for Blender's character animation DupliGroups
- Fast (my Athlon XP1800 w/512 MB RAM was clocking 40 seconds of calc time for each 1 second of animation in an 800 Actor simulation).
Don't be intimidated by the requirements list. People have found the documentation to be both complete and helpful, and have been able to get things running on their first try. Trust me, when you set up two 500-Actor armies, let them have at each other for fifteen minutes or so of calculations, then watch the results, it's really fun.
Thursday, August 24, 2006
Here's what 40 seconds of rendering buys you:
Release Scheduled for Next Week
Today and tomorrow, I'm rendering the final demo video. 400 Actors with full character animation, 34 seconds.
Everything seems to be working well, so I'll spend this weekend finalizing promo artwork, making a "press release" (Big Time!), editing the docs and making the demo/tutorial DVD. Monday, I'll post the Blender binaries to graphicall.org. After that, it's release time, and then I'm taking a nap.
Tuesday, August 22, 2006
BlenderPeople 0.8 Docs Available Now
I just finished writing up the documentation for BlenderPeople 0.8. If you're interested to see what the upcoming release will do, download them and read them. The only things missing (I think) are the links to the final binaries and DVD .iso. If you see any glaring typos, feel free to send me a marked-up .PDF of the bad stuff.
600k PDF file:BlenderPeople0.8.pdf
Writing the Docs
I try to make the BlenderPeople docs the absolute best documentation of any Python script available. In fact, I try to make it even better than the Blender documentation itself. Do I succeed? Well, that's not my call to make.
I've gone through a bunch of test runs on the final release .blend and the final binaries, and everything works as I'd hoped. I've fixed a number of interface bugs, and will probably crunch the last couple today.
I'm also finishing up the docs... new sections have been added for the character animation controls (which from a user standpoint are pathetically easy), as well as entire sections explaining the database structure and walking you through creating your own character animation library for use with BlenderPeople.
Hopefully, I'll be finishing the docs today. When I do, I'll post a link, so you all can see what the release will do in-depth.
Monday, August 21, 2006
Banner Graphics -- Preferences Anyone?
Here are the two banner graphics I've come up with. Both are just type and rendered characters from BP.
Does one trounce the other completely?
Thursday, August 17, 2006
MatchBone blendout problem fixed
I fixed the MatchBone blendout problem (well, mostly). It's not an ideal solution, but it doesn't exhibit the radically bad behavior that it was showing before.
Also rearranged the place in the sources where is build the MatchBone caches, so that fooling with NLA in Python also causes MatchBone to update. Previously, it only updated on GUI interaction, which was limiting.
Another Matchbone Bug
I was reviewing the OpenGL animation of the almost-minute-long final demo video I'm preparing for release and noticed that there were still some problems along the way (evidenced by "flying" actors -- people zooming back and forth through the scene). Upon analysis, I realized that MatchBone, which has recently been modified to work properly on BlendIn/blendout values doesn't work when blending in from one strip, but blending out to a different one. A slight modification of the original fix should do for this case, too.
And, as that's the only thing I see wrong with the OpenGL version of things, once I get it fixed, I can start rendering the final demo!
Wednesday, August 16, 2006
Memory Issues Solved At Last
One of the showstopper bugs that I wasn't willing to release until I fixed has been found and squashed. There was a memory leak somewhere in the Action Baking code, and it seemed to be causing Blender to consume increasingly enormous amounts of RAM while generating walk animation. With Ton's help, I was able to find the problem and fix it. No more memory leak!
However, BP was still eating RAM for breakfast when I was making character locomotion. After a couple of tests, I realized that all along it had little to do with the memory leak and more to do with Blender's Undo system. The system will store (by default) 30 copies of the .blend file in RAM while you work (it's actually more efficient than that, but that's as far into it as I'll get here), so it was just crushing itself after 20-30 turns of animation! Turning off Global Undo before generating locomotion fixed the problem entirely.
So what am I doing right now? Getting ready to have BP make the final animation pass on a 400 actor battle.
Monday, August 14, 2006
Level of Detail
After I implemented the Dupligroup support into Action Baking and Matchbone, I realized that one of the true strengths of the dupligroup system is for Level of Detail. Once you have everything built, it's a piece of cake to swap out entire grouped objects with different levels of detail. You simply retarget the placeholder at a different group and update any Action Strip target armatures. Everything else works seamlessly. It turned out to be so simple that I just went ahead and put it into BlenderPeople.
So, before, where I was having trouble rendering more than 24 characters TOTAL, I just had my whimpy machine crank out a frame of 300 actors, all onscreen at once, with the appropriate level of detail per their distance to camera, in about 45 seconds. No memory chokes.
The way I did it was to create five different versions of my main mesh: hi res (26k verts), medium (13k), low (2k), proxy (382) and skeleton (150). I'm thinking to implement it like this: you start off with skeleton, for blocking things out. Once you have everything hopping as you like it, you can go in and make a selection in the 3D window of the relevant camera and the actors in question, advance to a particular frame, then press the LoD button in BlenderPeople, at which point it relinks the groups to the appropriate group objects. It should be a good first step.
As part of the new release is making some impressive demo animation, getting the Actor count up in final rendering is very important. So, if you're thinking this doesn't relate directly to release, well, you're wrong. To me, it's essential. Nice picture hopefully forthcoming tomorrow.
Wednesday, August 09, 2006
Support for Dupli Groups now built in!
I managed to put in support for objects that represent dupligroups today. As mentioned in the previous post, this technology is a big advance over previous methods of doing the same thing and will probably become the preferred way of animating groups of actors.
I just had to modify things slightly in the Action Baking code so that all baking takes place on a reference object and an actual object. In the case of a regular armature, those two objects are the same. In the case of a duped object, they're different. But, it works, and looking at the dupli-group code showed me how powerful it is. I don't think we've seen the last of the benefits of this feature.
So, now that that little detour's taken care of, back to preparing the release...
Linked Duplicate Groups
Right now I'm working on updating the Action Baking code to work with the great new Linked Duplicate Groups feature found here:http://www.blender.org/cms/Object_Groups.755.0.html
This will make the creation of armies much easier from a user standpoint, lighter from a file size standpoint, and easier to manage programmatically.
The task of updating Action Baking to use this isn't the easiest thing I've ever done, but it's pretty straight forward and I'm hoping to have it finished today.
Monday, August 07, 2006
A Couple of List Points Done
Finished over the weekend were the following:
3. Add SQL creation for default Action links.
I also tweaked the default configs for the included Actor types, as well as creating table info for the included walk cycle
5. Finalize NLA creation code
I figured out a good algorithm for filling available NLA space with a nice mix of Actions from the main list. It still needs a little pushing around, but the heavy lifting is done.
2. Test test test for bugs, then kill kill kill.
Been doing some testing, and discovered another bug in MatchBone... strips weren't detecting other strips up the line if the strip was only valid because of strip Hold. The problem was due to the float rounding error, i.e., a strip time of 1.0 which should have given the last frame of a strip for holding wasn't working. I had to set it to 0.999999. Ah well. Fixed, at least.
Friday, August 04, 2006
Slogging Toward Releasing 0.82
I spent some time last night fixing bugs and trying to get things up to speed for a release.
The MySQL configurator wasn't working properly, so I kicked the bugs out of it. Now, the first time you run BlenderPeople, it shows you connection info and lets you test different settings (IP address, username and password) until you get it right. Once you have the settings correct and it's able to connect to your MySQL installation, it saves the info in a Blender text object (password is displayed and saved in the clear, so be careful) and just uses that from then on. So, if you have two reasonably fast computers on 100 MB Ethernet (or Giga), you might even be better off running the MySQL db on a second machine and hitting it over the network!
I also spent some more time tweaking Don Kim's Actions so they work out a little better with the character mesh. Adjusted the rigging and skinning a bit, too, though there are still a few problems to work out (Foot pinching! Argh!).
I've decided that I'm only going to bug-fix the Information tab, and not enhance it at this point in time. The best way to change actor and actor base type stats is to use a 3rd party db browser, like MySQL Query Browser, or even... MS Access. It's just sooo much more efficient than using the single actor view get/set methodology in BP's gui.
Things remaining to do before release:
1. Finish tweaking skinning and Actions; make two more walk cycles for variety
2. Test test test for bugs, then kill kill kill.
3. Add SQL creation for default Action links (it's just been copy and paste up until now)
4. Update documentation
5. Finalize NLA creation code
6. Create collateral materials (graphic banner, promotional buttons, etc.)
7. Create a couple variations of the mesh
8. Make nice new rendered video fixing (mostly) the problem noted in a previous post.
9. Create final Blender binaries for OS X and Windows that incorporate my character animation patches, as well as confirming that the monolithic patch works for Linux and other platforms.
One of the other things I'm working on is a video demo of BlenderPeople, as well as the new character animation I've built. I'm recording from my computers video output straight to DVD via a standalone DVD video recorder and my semi-pro audio recording stuff. Tests show that the video is of great quality. The demo is almost a 1/2 hour long, and if I can find someone to host it (my host probably can't handle the size), I'll make the .iso of the DVD available for download. I'll also rip the created DVD and recompress it into a smaller format and offer that for download here.
If anyone wants the physical DVD, I can always dupe it and send it to you, but I'd to charge like $15 or something to make it worth my time, so you'll probably be better off dl'ing the .iso and burning for yourself. Or you all can make a chain, and I'll send one out to somebody, then you can pass it around.
So anyway, things are progressing to the point where you can actually, like USE this thing.
Apologies and Addendum
I've noted a few times in the blog the name of the character animator who produced the really dynamic actions for the upcoming release. I'm sad to say that I've noted his name incorrectly every time.
Apologies to Don Kim for making an incorrect assumption about his name.
And, just for the sake of Google, and the fact that this blog gets almost ten thousand visitors a month...
Don Kim is a great character animator. Here is some great animation
by Don Kim
Hopefully, that sets the record straight, and makes for some nice Googling.
Here's a 28 second rendered video of a fight done with BlenderPeople.
From a user standpoint, it takes about two minutes from Blender boot until you hit F12 to generate this. That kicks ass.
The bad (lots):
1. I had to remove the subsurf modifier from the characters, as it was preventing vector motion blur from working. You can't see it as much on this half-size video I'm posting, but on the full resolution one, it's obvious and makes it look like an in-game animation. Ack.
2. By the time I saw the actual rendered fighting, I didn't have time to go back and tweak the Actors body radii, so they're obviously fighting too far away from each other. Argh.
3. Rigging and skinning isn't the best, and it shows up, for example, on people's feet when they die. They get all pinched and stupid looking. Yikes.
4. Ground plane artifacts once folks are dead. Until we get ragdoll physics implemented as NLA strips, I'm not sure what to do about this.
But anyway, here's the video, 2.8 MB, XVid
02/01/2004 - 02/29/2004
04/01/2004 - 04/30/2004
05/01/2004 - 05/31/2004
06/01/2004 - 06/30/2004
07/01/2004 - 07/31/2004
08/01/2004 - 08/31/2004
09/01/2004 - 09/30/2004
11/01/2004 - 11/30/2004
12/01/2004 - 12/31/2004
01/01/2005 - 01/31/2005
02/01/2005 - 02/28/2005
06/01/2005 - 06/30/2005
09/01/2005 - 09/30/2005
10/01/2005 - 10/31/2005
11/01/2005 - 11/30/2005
12/01/2005 - 12/31/2005
01/01/2006 - 01/31/2006
03/01/2006 - 03/31/2006
04/01/2006 - 04/30/2006
05/01/2006 - 05/31/2006
06/01/2006 - 06/30/2006
07/01/2006 - 07/31/2006
08/01/2006 - 08/31/2006
09/01/2006 - 09/30/2006
10/01/2006 - 10/31/2006
11/01/2006 - 11/30/2006