Monday, March 26, 2012

Google Summer of Code 2012 -- Projects Wishlist

Over the past few weeks there has been quite a lot of discussion about projects which would be cool to have for this year's Google Summer of Code. With applications opening again this week, I'll take some time to quickly go over a few of the project ideas that have been coming up.

By the way, although I've been involved in previous years (and am eligible again this year), unfortunately my workload this year means that I really don't have much time+energy left over from the many projects I'm involved with to commit to any further (new) projects.

However, I'm happy to help out with mentoring duties, especially in any of the areas I usually work in :)

Popular Projects
Outliner Improvements - Drag and drop, etc.
This is quite a worthwhile project, and is well within the scope of a successful SoC. It's important to define a set of achievable targets (+ timeline), and not get bogged down with some of the more "pie in the sky" ideas that lurk around here.

Layer Manager
No doubt many people out there have strong opinions about this one (most in favour; some like me don't mind). The hardest part here is getting a design that everyone can agree to, with the right level of space <-> immediacy of access tradeoffs, and which fits well with everything else (or not).

Asset Management
A review of the tools for this sort of thing is probably overdue. I'm a bit 50/50 about whether prior experience or understanding of how the current system actually works would be beneficial; you could say that those experienced with the system would perhaps just see a series of tweaks to be made to certain problem areas they've encountered, while others just look at the whole thing and say "it's all crap (and I want my mummy!). Let's just start from scratch!".

Rigid Body Physics
This area is big enough to demand its own little section I think...

Muscle System
Flashy razzle-dazzle concept... if only someone had a clear definition of what one consists of! This just about falls into the "avoid" category due to the lack of clarity on this.

Hair Stuff
If you're up to all the simulation stuff associated with this, by all means, go for it! You've got my blessing :)
Let's beat those long-stranded fuzzies into shape!

Tablet/Touch Friendly Interaction Tweaks
It's just a matter of time before more people try to use Blender under such environments, so developing keybindings and/or interactive elements which are well suited to this is something that would need to occur.

Rigid Body Physics
It's no doubt that this is an area of interest for many people, just by the sheer number of noises made in favour of this as a priority.

Complete the Blender-Native Bullet Integration
(AKA finish off my GSoC work from 2 years ago, and which I nowadays run an Git repository/branch to house development work on).

When time allows, this is one of several side projects I'm already committed to working on, but which I cannot actually guarantee I'll have time to work on. Anyways, if you're interested, I can certainly help out with Blender-side advice (though you'd have to come prepared with some Bullet/Rigidbody sim knowledge ;)

We've also got another dev who's been making a few patches to get this up to speed. However, there are certainly a few chunky integration issues that need resolution still, among those being the ability for other parts of Blender to act on the results of these sims.

Demolition Support
As I understand it, "demolition" tools run on top of rigid body sims. There are already many voronoi-based shattering schemes out there in the community, and various attempts of building this stuff. Anyways, it'd be good to have this stuff happening on top of the Bullet integration work, and also to help drive some of the design decisions here regarding post-sim triggers/interactions.

Projects to Avoid
Some of these fall into this category due to the complexity of the task, others as they are already in progress, and a few others which are considered to be a bad direction to go in. The category that each falls into will be indicated.

"Grease Pencil - 'pen' mode and 'shape' mode"
I'm not sure if 'pen' mode refers to what's currently in place, but I know pretty darned well what 'shape' mode would be. In fact, it has come up a few times before. Basically, this would be drawing boxes and ellipses like in MsPaint (and perhaps the crappy drawing programs that student programmers invariably write at some point).

IMO, this is a bad direction leading to bloat. Grease Pencil is intended for making quick and rough sketches/annotations for planning/commenting. However, these preset shapes are invariably neither quick nor fluid/fluent to use. Ever.

Nodify Drivers/Constraints System
There are multiple complications here which run right to the heart of the current evaluation and dependency handling systems. As such, this falls into the "very hard" category requiring experienced developers (who currently all have one or more major projects going on). Also, action on this is planned for the future.... (just, perhaps not the immediate future).

Direct Manipulation Deformation
These sorts of ideas you'll find readily in research literature from a number of research labs, in particular those of Sumner and Zhou. However, as I've discussed in detail in as part of a thesis/report I wrote a few months back (/me makes note to properly release this sometime), IMO this is really a redundant and ill-founded research direction.

In short, the problem boils down to two parts:
1) The research labs usually end up implementing some of these things from scratch. Or at the very best, using some lab-specific framework that they've been building up for tinkering with these things. And then, the go and test this with some relatively simple meshes (where there many be high polycounts, but no fine-grained details needing additional deformation control), with rudimentary stick-figure skeletons to control all this. Even then, they may only really care about the overall appearance, and/or whether or not their is any visible pinching.
2) Production setups are not anywhere that simple, and animators never animate their rigs by directly rotating a few skeleton bones only, except in a few pathologically abstract cases (usually for teaching animation skills too).

If you're thinking about this, or even wasting your time doing this: find something else to waste your time on.

1 comment:

  1. I don't know if you agree, but I think grease pencil could benefit from a quicker way to change color/layer + the ability to move those layers around. That could help animation by moving sketches, over-imposing them and stuff...

    I tend to think of grease pencil as the best friend for animators rather than a tool to write things around (though I've used it for both!).

    But then, I'm not an animator (just a hobbist), so maybe that wouldn't be such a great idea.