Hunting for a VCS

Lemme get technical for a second and ask for some suggestions. First though… story time!

I use version control for all of my creative projects (3D, animation, graphics, writing). I started years ago with Subversion and eventually migrated to Mercurial. There were a number of reasons for this switch, but the biggest was the ability to do ad-hoc local version control without setting up a server. Also, Mercurial handles binary diffing slightly better than Git, making it a better choice for art assets.

Now, I’ve been doing a lot more writing lately and, more importantly, a good chunk of my writing these days has been on my Android tablet. And therein lies my biggest problem. There’s no Mercurial client for Android and there’s no plans for a port (and I’ve tried various workarounds… even came close by running Python on the tablet, but there are limitations in Androids filesystem that prevent it from running an unmodified version of Mercurial and I don’t quite have the necessary chops for modifying Mercurial’s source). My current solution has been to use rsync to synchronize files between my home workstation and my tablet, and only commit on the home box. It works… but it’s pretty kludgey. Add to this the fact that I’ve been slowly migrating from writing in LibreOffice ODTs to plaintext formats like Markdown and Fountain, so for my writing at least, the saved disk space of binary diffing becomes less of a determining factor.

All of this is a long way of saying… I’m in the market for a new version control system for my writing projects. The main two requirements are as follows:

  • Should not require a server (allow local ad-hoc versioning)
  • Has an Android client that allows for commits and pushes

Right now, it looks like my options are Git and Fossil. Anyone got any other recommendations or suggestions?

Open Source Creative Podcast #13 – Starting Is Easy… If You’re Already Moving

The first episode of 2015! Hi folks. This week (yes… this is still supposed to be a weekly podcast) I talk about ways to get started and get inspired on creative projects. It’s the start of the year and folks tend to think about what they want to do over the course of the coming year… but sometimes get stuck right out of the starting gate. Maybe, just maybe I give some suggestions that can help thaw out that paralysis and get you moving on your projects.

And… since it’s been so long since the last episode, there’s quite a bit of news. Here’s the quick rundown:

Whew… that was a lot. See you next week!

Open Source Creative Podcast #12 – Open Source Program, Where Do You Fit?

This episode is a week late… or I just skipped last week. I suppose it depends on your perspective. In any case, I cover a lot of news in this episode since two weeks of it happened since the last one:

  • Darktable liquify – Someone’s developed a liquify tool for Darktable. Maybe one day it will make it into the stable development branch.
  • Synfig gets improved bone deformations – Drawings in Synfig get distorted more cleanly now. I wonder if/when they’ll get IK solvers.
  • Sony Pictures got hacked – Not exactly open source specific, but they do run a lot of open source tools on their backend, and they’re a creative company. For the information that got yoinked, it’s kind of scary for people who work there.
  • Hacker Public Radio New Years Show – They’re doing a 26-hour live show thing around New Years. Definitely worth checkin’ out.
  • Twine – I stumbled across this open source (though Windows and Mac only… boo!) tool for non-linear story development.
  • Ormr on Linux – Closed-source 2D image editor, Ormr, now has a beta version that works (for the most part) on Linux.
  • 2D animation in Blender and Krita post mortem
  • And… I’m on Pinterest – Fairly new there… but I do have a board for all the podcasts I listen to (there are a lot).

I also have a pretty serious question for you about the kind of content you’d like to see in the next edition of Blender For Dummies. I’m working on the 3rd edition of the book and have come to a point where I need to decide on whether I cover more of Blender’s features or if I include some basic tutorial material. Let me know what you think in the comments.

And in the meat of the episode, I spend a fair amount of time discussing where I think open source creative tools best fit… what kind of artists and environments they’re best suited for. I think I came up with some answers, but feel free to let me know if you think otherwise.

Have fun listening!

Creating 2D Animation with Blender and Krita, a Post Mortem

A couple months ago, I was contacted by Michael Crouch, a friend of mine who’s a commercial producer for an NBC affiliate station in Richmond, Virginia. He was producing a promotional spot for Angel Tree, a Salvation Army charity program that runs during the holidays. So standard fare: tight-ish timeline, low budget. However this was for a good cause… and more importantly, he wanted to do something special. An animated spot. He would focus on the overall spot’s script, audio, backgrounds, and environment. I’d be providing character animation that he could lay into the scene.

Oh hell yes.

After batting around a few ideas, we came up with the concept of having a somewhat paper-cut look to the environment. The character animation would be added as if it were a set of ink and watercolor drawings, cut out and laid into the scene. For both aesthetic reasons and time-constraint reasons, it was decided that the bulk of animation would be on 3s and 4s.

We hammered through a few more details on the aesthetic. It was important to avoid singling out any specific ethnic or cultural type as being either a benefactor or beneficiary with respect to Angel Tree. Anyone can help, and everyone can benefit from hope. This presented an interesting challenge in terms of character design. To reflect that message, our character design landed at being a somewhat androgynous child, and as the animation played through, the child’s hair and skin tone would cycle through a series of colors. This way, we could play up the watercolor look and give the spot a bit of a multicultural taste. With the character design in mind, I used a handful of layers in Krita along with a still from his work-in-progress environment to mock-up a proof of concept, both for the aesthetic and for my own personal workflow.

Angel Tree - Test Character

It’s worth mentioning that I did the frames of this character test using the stable release of Krita. I knew at the time that there’s a development branch with animation features. However I hadn’t used it yet and didn’t have a build environment for Krita. That, coupled with time constraints, caused me to decide that I’d just do it the old layer-based way in the stable version.

Happily the character design and the animation aesthetic were approved.

That meant I could push forward with animation. However, as I mentioned, I wasn’t using the Krita animation branch. I could do ink and paint in Krita,but I needed a timeline for doing roughs/pencils. Dopey, the MyPaint fork with animation capabilities hadn’t seen any new updates for about a year. And Pencil, another useful tool that I’d used for my micro-short, Singularity, hadn’t seen meaningful development for even longer. I could’ve maybe used Synfig or Tupi, but as those are more vector-based animation programs, they don’t quite have the drawing tools that want for roughs; they’re too clean. So, predictably, I decided to use Blender.

Wait. What?

Yeah, Blender, the 3D modeling and animation package. Most people are aware that Blender is an extremely capable animation suite for 3D computer graphics. Those same people, however, might not be aware of how useful it is as a 2D animation tool. In this case, I’m specifically referring to Blender’s Grease Pencil feature, typically used for comments, draw-overs, and other kinds of annotations. But as an important feature for this project, Grease Pencil layers can be animated and show onionskinning. Furthermore, drawing with Grease Pencil is incredibly responsive. Grease Pencil strokes are, in fact, 3D curves, but they’re responsive enough to match may naturally scribbly drawing style. And as a kicker, there’s a special branch in the Blender development tree called GPencil_EditStrokes that gives additional features of value to a 2D animator such as editable strokes (duh), colored onionskinning, and Grease Pencil fills.

So here’s the basic workflow I used for this project:

  1. Draw rough pencils of the animation with proper timing using Grease Pencil in Blender.
  2. For each Grease Pencil key, generate an OpenGL render of the animation from the Camera view.
  3. As a house-cleaning step, pull each OpenGL rendered key into Blender’s Video Sequence Editor (VSE) as a strip with a duration matching its screen time as a Grease Pencil key.
  4. Commit everything — the .blend file and each OpenGL-rendered Grease Pencil frame — to version control (I typically use Mercurial)
  5. In Krita, pull in each Grease Pencil frame as a layer, nested within its own layer group of the same name.
  6. Ink and paint each frame of the animation, using a layer group for each frame.
  7. For each layer group (animation frame) in Krita, solo the group and export that, overwriting the Grease Pencil rough.
  8. Commit the updated frames (and the Krita project file) in version control.
  9. Back in Blender’s VSE, open the .blend (or refresh it).
  10. Render in an MOV container using the QTRLE (QuickTime Animation) codec, preserving the animation’s alpha channel.

I did this for each of the small animations I needed to deliver: a walk, an idle stand, a sit, a turn, and the final animation grabbing and sharing the Angel Tree tag. This workflow served sufficiently well since each little animation was reasonably short and I was animating on 3s and 4s. However, if the animations needed to be longer or I needed to animate on 1s or 2s, there’s a lot of opportunity for scripting some automation into the process. In particular, getting each of the Grease Pencil frames rendered and pulled back into the VSE is a prime candidate for making more efficient. So is the re-exporting process from Krita.

But, each of the animations were complete and could be arranged together by my client to complete his spot. His part was done in After Effects, but to make sure they would sequence well together, I did a test using Blender.

Once I proved to myself that a reasonably acceptable result could be assembled from these core pieces, I passed them along to Michael for integrating into the rest of the spot. They post the finished piece to the NBC12 Commercial Services Facebook page last week (click the image… embedded Facebook video looks a bit wonky until you click on it) and will be airing on NBC12 in Richmond for at least another week, I think.

Generally speaking, I’m really happy with the finished spot. Michael and his team did a fantastic job of integrating the pieces together and giving a strong, unified feel. There’s a bit of a foot slide issue in how they included the walk cycle, but I think that’s only distracting to an animation nerd like me.

Workflow-wise, I’m really quite fond of the Blender to Krita pipe using Grease Pencil for roughs. There’s room for automating the process and I’d really like to explore adding a bit of 2D/3D integration, but the tools are definitely all there. I also ran into a bit of a nasty bug in the GPencil_EditStrokes branch where if you create a new scene in Blender by doing a full copy, the Grease Pencil layers weren’t really copied… they were linked. So changes in my new scene would absolutely obliterate the Grease Pencil strokes in the original scene. I believe that bug has since been squashed, but boy did it scare the mess outta me while I was working.

But yet, this project came together nicely and I’m quite pleased. I’m looking forward to using this technique more. And things will get even more interesting if the Krita animation branch gets merged into Krita proper… and I’m looking forward to it.

[Update 2014-12-09]: The features from the GPencil_Editstrokes branch of Blender have been merged into the master development branch. They’ll be available for everyone to play with in Blender 2.73 (or, if you’re the adventurous sort, you can check it out in one of the nightly development builds).

Open Source Creative Podcast #11 – Know Your Audience

Though it’s a bit scatterbrained, this is a fun episode talking about knowing your audience. When you produce creative work, it’s a good idea to have a notion of the people for whom you’re producing it. And amazingly, this is something that a lot of creatives sometimes overlook or forget about. I know I do on occasion. So I talk about it here as it pertains to writing and commercial TV (and yes, also how it relates to Free Software and the UI episode from last week). I also have a bit of a mini-rant about small business owners and their friggin’ dogs. I still don’t get it.

News bits:

  • Libre Calendar 2015 – The project is still on-going. However, if you want to have a calendar in-hand for the new year, they’re planning on shipping at the beginning of December, so now’s the time to send them 15 €.
  • QCAD 3.7.2 – QCAD has new release… some UI enhancements and performance fixes. If you’re a CAD person, it’s worth checking out.

Short and sweet on the news this week. Enjoy the show!

Open Source Creative Podcast #10 – Ooey Gooey UI

Ten episodes! Who’da guessed?

In this episode I talk user interfaces. Specifically, I try to crack the nut on why it seems that the user interfaces for open source tools appear to get higher scrutiny and more anger thrown at them than their proprietary contemporaries… and if that’s really a problem at all. Sadly, I’m not sure that I have any real solutions, but maybe we can use this as a means of launching a discussion that’s actually meaningful and productive. Maybe.

News stuff:

And that’s that. Enjoy the show.

Open Source Creative Podcast #9 – Tutorial Monkey Button Junkie

This week’s episode talks about tutorials… well, specifically how we tend to treat tutorials. There seems to be an overarching trend toward replicating the process in a tutorial verbatim without actually learning how to apply those techniques elsewhere. People learn how to push a specific series of buttons in a specific way to produce a known result… and it’s lame. I take a bit of time during this episode to try to sort out whether the responsibility for fixing this lies with the tutorial maker or the person following the tutorial.

News things covered in the episode:

And my little bit of personal news:

  • I’ve relaunched the Lie of the Day (posted everyday to this very blog and on my social media pages)
  • Farming Simulator Modding For Dummies – A little book I wrote earlier this year is being released on the 10th of November (the cover graphic on Amazon is in German, but I’ve been assured that’s the English version of the book)

Alright… enough with the shameless self-promotion.

Inktober – Day 31

Annnnd that about does it. Closing with another stretchy eyeless face. Seems appropriate. Inktober was fun. I definitely think I’ll be doing it again.


Open Source Creative Podcast #8 – Blender Conference 2014

You may have noticed that I skipped a week in airing the podcast. That’s because I was at Blender Conference 2014 in Amsterdam. I mentioned this in the last episode with a question asking how I should cover the conference. I should’ve realized that you, the wonderful audience, would ask me to interview everyone there. Unfortunately, I wasn’t able to get to everyone… partially because there were over 250 people there and partially because, well, I’m a bit shy.

In any case, I did get some people to allow me to record them. One of the most striking things about the Blender Conference is how many fantastically unconventional ways that Blender is used… and I notice every time I’m there. I hope that these 16 people who were willing to be recorded show a fairly accurate cross-section of that experience:

And a huge, huge thank you to everyone who agreed to be recorded. I can’t express how much I appreciate it.