HIGHLIGHTS:
- Visited the Saturn V center at NASA Johnson Space Center
and the rocket park (the free part). - Finished business tax filings, started personal taxes.
- Drafted business plans, including offer to Keneisha Perry.
- Redesigning the Patreon “Progress Bar” widget for
the website. - Characters for the Episode 2 teaser.
- Published DAMS article for Open Source magazine and
started on one about Project Management tools.
Characters for Part 1
Keneisha Perry had to model and rig a lot of characters for small parts in Part 1 of “No Children in Space”, with all the reporters, technicians, space port staff, and towns folk.
This was rendered before the characters were rigged, which is why they are all in “modified T-pose” (but they have all been rigged now).
Podstaging Test Render
This shot is from the launch sequence in Part 1 of “No Children in Space”.
This is a test of the NPR shading style on the pods, the texture and color, and of course, the flame effect for the exhaust.Research, Design, Texture, and Effects by Terry Hancock. Model and Rigging by Chris Kuhn.
Some Characters for Episode 2
Keneisha Perry has started creating characters for the “media montage” sequence at the beginning of the 2nd episode. These characters are made as “Extras” or “Walk-Ons”, based on original generic character meshes with mix-and-match modifications.Mar 9, 2018 at 4:00 PM
Writing TACTIC Installation Playbook
Decided to just get started on a TACTIC installation, using Ansible. It’s a lot of picky dependencies and the documentation appears to be years out-of-date with respect to the code. So this may be kind of tricky.But at least I know my way around Python code and installations — I think I have a fighting chance to get this right!
The documentation describes compiling libjpeg, and I’m not sure why I’d want to do that, since libjpeg is in standard distributions. They also compile Python Imaging Library (PIL) version 1.1.7, but that’s pretty much been subsumed into the “Pillow” library now — and indeed, scanning the source code reveals evidence that it has already been ported to use Pillow.
I’m sure there are more surprises waiting for me.
I had been planning to setup the filesystem tools for the asset directories, but it occurred to me that TACTIC itself will be installed elsewhere (probably /var/local/, which is what I’ve been using for web applications), and so it’s really not sensitive to the asset directory work.
I have done some more work on the volume storage script as well this week.
TACTIC Installation Notes
So basically, the TACTIC installation consists of:
- Install and configure dependencies, like ImageMagick, PostgreSQL, and so on — mostly can be done through Debian packages.
- This includes a number of Python modules, which could be installed with either the Debian package manager (apt-get) or with Python’s own package manager (pip).
- Configure Apache.
- Configure PostgreSQL.
- Decide on installation directories and create a configuration file for the TACTIC installer.
- Run the installer.
My plan is to do all of this using Ansible. I did similar stuff with WordPress and MediaWiki earlier. Kind of waffling over whether it will make sense to install multiple TACTIC instances for different domains, but I’m thinking not — that the biggest strength of TACTIC is to use it for everything together, so that it’s easy to pull assets from one project into another.
Also, the default configurations all have the Apache load-balancer module set up, and I’m not sure how much sense that makes on a single server — especially when it’s a VPS. Are there software-only reasons to need a load-balancer with Apache? I doubt we need that.
On the one hand, TACTIC is clearly very configurable, which is great in the long run. On the other hand, it hits me with a lot of up-front decisions to make! It’s not for the faint-hearted.
Think I’ll be able to get it running this week, though.
Yeah But Really It’s EPL…
I must admit, it IS a bit disconcerting that although Southpaw re-released TACTIC under the Eclipse Public License in 2012, they left an awful lot of these proprietary license comments in the source code (most obviously in the installation scripts, which is where I found this one).
I feel funny deleting them, even though they are supposedly invalid now. Really, Southpaw should have done that and replaced the text with EPL boilerplate.
I’m still writing an Ansible “role” for TACTIC installation. The Sys-Admin documentation is also fairly far out of sync with the source code: it seems the documents were originally written for 2.6, updated for 3.8, and the source code is at version 4.5.
So, for example, it describes downloading and compiling dependencies for the Python Imaging Library (“PIL”), but for some years now, that has been mostly replaced by Pillow, a “friendly fork” of the original, and one which continues to be maintained.
I was scanning the source code to see how hard it would be to use Pillow instead, and then discovered that actually, it had already been ported to use it. So installing PIL (which is now kind of difficult) would have been pointless.
I hope to get to the point where I can write better documentation.
Saturn V at the Rocket Park
This has been a busy week personally. My son needed to visit the Japanese Consulate in Houston for some paperwork, so we decided to take the whole family on a road trip. Naturally, we had to stop off and visit the Rocket Park at the Johnson Space Center.A tour of this site is available from the nearby “Space Center Houston” attraction / museum (which is kind of pricey), but you should know that it’s free to see the Rocket Park itself if that’s all you want. They do make it kind of scary, because you have to drive up to the gate guard at JSC and tell them you just want to visit the Rocket Park.
We used to make trips down to see this park now and then, calling it “the pilgrimage to the Lawn Ornament” — a tongue-in-cheek reference to a remark that, due to the cancellation of Apollo 18, 19, and 20 back in the early 1970s, the hardware slated to fly those missions became these two “multi-billion dollar lawn ornaments” at the Johnson and Kennedy Space Centers. But that was before they built a building over it to protect it from the elements and retouched the paint. It does look a lot better now, although it seems like they haven’t done as much to the Command Module for reasons I don’t know.
It is sad that they were never used, but on the other hand, because they never flew, we get to see them up close, and that’s pretty cool.
Likely won’t be posting much new “Lunatics!” progress until next week — my goal today is to catch up with my income tax filing before the deadline hits!
This did make me think about how our “LTS Moon Shuttle” would compare in size — I think if I remember correctly, the service module is about the same diameter altogether as the Saturn V booster stage, although it’s four tanks rather than one big cylinder, so quite a bit lighter and also shorter. It is considerably larger and heavier than the Apollo CSM/LM combination, though, which illustrates why we went for an “Earth Orbit Rendezvous” logistics system, more like some of the early Apollo concepts.
Maybe I’ll post a comparison diagram at some point.
Website Review
Spent some of today looking over the website and trying to fix some long-standing problems.
I changed the Patreon banner to stop pretending it’s a progress bar (it hasn’t actually worked in a long time, and the Patreon API has apparently changed since I wrote it).
Also decided to drop the Diaspora and Google+ social media buttons. Those sites are still there, but I haven’t updated them in a long time. I’ve also reduced how often I post on Facebook (because unless you pay them, the posts don’t get very far anyway). So the bar correctly places Patreon, Twitter, Tumbler, and Vimeo as our top posting sites.
I’m still working on editing the info on some of the pages — I suspect I’ve got some out-of-date information up still.
Our DAMS Article in OpenSource.com
Since this article was written by me, and released under a CC By-SA license, I am reprinting it whole.
Digital asset management for an open movie project
When it comes to frontend creative software for multimedia projects, Blender and Audacity tend to get the most attention, mainly because they are easy for beginners to use. But when you use them to produce a large multimedia project, like our animated open movie project Lunatics!, you quickly run into problems with the backend infrastructure.
You might not even realize at first that your problem is rooted in disorganization. You find yourself procrastinating and/or working in circles because you can’t keep your project organized in your head. You need software to help you.
One of our goals has been to solve this problem using open source software, and thus remove obstacles to doing longer-format movies on the non-existent budget of a free-culture film project.
Digital asset management
The first and most obvious problem is called digital asset management (DAM), and a system to solve that problem is called a “digital asset management system” (DAMS). An “asset” is a component of a multimedia project, be it an image, sound clip, movie, 3D model, or whatever. It’s generally synonymous with “file.” Keeping one asset to a file is a good rule of thumb, but it is possible to store multiple assets in a file or for a single asset to have dependent assets, such that it spans several files.
A DAMS will typically provide something like a search interface combined with automatically collected metadata and user-assisted tagging. So, instead of having to remember where you put the file you need, you can find it by remembering things about it, such as when you created it, what part of the project it connects to, what’s included in it, and so forth.
A good DAMS for 3D assets generally will also support associations between assets, including dependencies. For example, a 3D model asset may incorporate linked 3D models, textures, or other components. A really good system can discover these automatically by examining the links inside the asset file.
Version control for multimedia
Most software projects simply use their version control system (VCS) as a DAMS. The source tree provides a hierarchical scheme for locating files, which is entirely adequate for the rigid and static structure of program files that are intended to work together like parts of a machine.
Readers may be in familiar territory with VCS; you’ve likely heard of Subversion, Git, Bazaar, and Mercurial. However, these tools are terrible at handling multimedia assets. VCS documentation usually talks about this as if it were an intrinsic problem of multimedia files, but that’s loser talk. The reality is that these applications simply aren’t designed to cope with multimedia, so they fail badly at it.
Explaining exactly why that is (and how to really fix it) is a big enough subject to warrant a separate article, so, let’s just talk about the consequences of it:
- You CANNOT merge multimedia files automatically
- That makes concurrent “merge-based” version control IMPOSSIBLE
- Therefore, all version control for multimedia should be on a “locking” basis
And with that, about 90% of the functionality of Subversion, Git, Bazaar, and Mercurial went right out the window and smashed on the pavement. Thanks anyway, guys!
- Multimedia files are HUGE
- Project structure is FLUID and LOOSELY DEFINED
- Intermediates can be EXPENSIVE
Typical VCSes simply have not been designed to cope with these facts. They all assume filesystem-type hierarchies of files are being stored, and most do not accommodate partial checkouts (or at least not easily; Subversion does do this better than the others). The relational, tagged organization of a DAMS is better suited to the fluidity of multimedia collections, and most have been designed with large file sizes in mind.
Searching for another option
We surveyed many different software packages, most of them not originally designed for our application. Some are used by other projects but don’t seem optimal for ours. Others simply have issues with maintenance; they’re either old and succumbing to bitrot (falling out of sync with current software) or still too immature to be used on an active project.
Some of the roads we didn’t take:
- Blender-Aid is a Blender-refactoring tool that assumes you are using Subversion for the VCS. It was developed for use on the Blender Foundation’s Sintel project, but unfortunately was not maintained after that project finished. When we tested it, we had to patch the source to get it to work with current Blender files (and that was several updates back). We submitted our patch, but no one was maintaining the project to accept it.
- Git is, of course, very popular with programmers. I’m often asked why we aren’t on the Git bandwagon. It would be a small improvement over Subversion, but it’s mostly a sideways move, making it not worth the trouble of migration.
- Git-LFS is an extension to Git that improves performance with large files.
- SparkleShare is a folder-sharing tool, based on Git, that’s simple enough for artists without any VCS experience. It’s used by the Tube project (Wires for Empathy).
- Boar can be seen as either a VCS or a backup system. It focuses on folder replication and easy handling of large multimedia files, although it doesn’t help much with search or organization.
- Peragro goes to the other extreme, handling lots of small Blender assets well; in particular, it can look inside of Blender files to find the individual objects they contain. It’s still very much in development, though.
- MediaWiki allows assets to be stored as “files” or “images,” and we did use this approach for a short time during our pre-production work, but it’s difficult to manage when asset storage is its primary use.
What we’re using now
We are currently using a combination of Subversion, Trac, and Resource Space.
Subversion is a VCS to manage the Blender “source code” for our project. It is familiar and somewhat usable, although we’re clearly overloading it. The Trac application provides a simple web-based view of the repository but doesn’t preview multimedia content.
Resource Space is a DAMS with an excellent search and preview interface. Unfortunately, these programs don’t really work together at all, so we must manually move files from one to the other when needed.
Trying a new TACTIC
In 2012, the Blender Foundation started a new project, called Gooseberry, which ostensibly had similar goals to ours, including producing a feature-length film with Blender. However, that has morphed into a series of shorts, and its solution for a studio backend was to go with a software-as-a-service platform called Blender Cloud. This was completely the opposite of what we wanted.
We looked into what options they had considered prior to that project and discovered TACTIC. TACTIC seems ideal, providing DAMS, VCS, and additional project management features, and it’s licensed under the Eclipse Public License. Our biggest concern was that we weren’t sure why Blender Foundation had opted against it. Possibly it was not under the EPL at that time (the package was relicensed about the same time as the Gooseberry project started) or simply too coupled to Maya (which it was originally developed to work with). Considering that Blender Foundation opted to build new, it may simply be a case of “not invented here.”
However, as our intention is to invent as little as possible, TACTIC seems almost too good to be true. Our main infrastructure project for 2018 is to set up and test this system on our pilot project.
VirtualBox Testing
So, in order to test TACTIC, and in particular, to test the Ansible scripts for deploying it (along with the new website and other stuff), I need to have a testing environment.
I had these set up on my old workstation, but when I upgraded, I never recreated it, and the test environment wasn’t quite as portable as I hoped.
Also, the previous version of Ubuntu Studio (17.04) went out of service on me, and I discovered that they take away the Package repo when that happens, so I couldn’t even install VirtualBox until I upgraded.
So today, I upgraded to 17.10 (“Artful Aardvark”); installed VirtualBox; and now I’m installing the virtual “staging” machines.
What I do is to create a “little universe” of testing machines, where the test client (“studio” — a stand in for my workstation) is used to access the server (“narya.net“) which is set up to appear to the test client as if it were the real server (i.e. with the correct URLs and everything). That way, the test environment behaves just like the real one, even for absolute URLs.
Once I get these set up, I intend to export them into a “virtual appliance” format so they’ll be more portable in the future.
Design Work for Hatchways
Space Station Alpha Render
To Facebook or Not to Facebook…
Facebook has been a very frustrating platform. It’s so close to being good, and yet this is constantly thwarted by, shall we say, “commercial concerns”. I realized awhile ago that my frequent posts on the Lunatics! Facebook page were largely a waste of my time, considering how few people saw them, and that they were detracting from posting here on Patreon (I had this idea that I had to only post full articles here, but realized I should really just make those same quick posts here on Patreon first).
It’s understandable, considering that Facebook is in the business of selling our identities to advertisers, rather than meeting our needs as users. But that doesn’t make it any less frustrating to use.
I got on it originally to keep in touch with family. Then I found it useful for professional connections. But in fact, many of the people I got on the platform to connect with have already left it. Some just got dissatisfied with it and stopped using it over time. Others left in a huff and deleted their accounts in the wake of their latest scandal with Cambridge Analytica (Certainly that was a bad thing, but shouldn’t really have surprised anyone — that is, as some have noted, “how Facebook works”).
Perhaps more importantly, Facebook is psychologically unsettling (I like to describe it as “the opposite of meditation”) and a frequent time sink for me.
And of course, it’s not a free, decentralized, or open-source platform, so it’s not really the kind of technology I want to support. It was just “where the people were”, so I went there.
I’m not sure what I’m going to do about that — possibly delete the account, possibly just delete old posts, possibly just tighten up security. I don’t know.
Now, I’m thinking about other options. Mastodon looks easy enough to install, so I think I’ll probably create an instance on my VPS server — probably under the “filmfreedom.org” domain that I set up awhile ago. That’s on top of other software I’m planning to install as part of my website upgrade, so don’t hold your breath, but I’ll post a link when I’ve got it set up. Possibly I’ll open it up to allow other people to use it as well. I haven’t really had the chance to think about the impact of that.
Other current accounts:Twitter
Not-so-current accounts (but I suppose I could wake them up):
Of these, only Diaspora is a free, open-source, federated platform. However, I didn’t find it very easy to find contacts there.
Present-Day ISS
Before we created the future “Space Station Alpha” for “Lunatics!”, Terry Hancock and Chris Kuhn collaborated on researching, creating, and rendering this model of the prsent-day (approximately like it was in 2014) International Space Station.
This was a test not only of the model, but also the style, and the Alpha model was an extension of this (assuming that somehow the ISS keeps getting refurbished and repurposed into an extended lifespan — which might happen, despite the occasional threats to retire and deorbit it, like its predecessor, Mir).
Workstation Build
This week, I’m ordering parts to build a new workstation for our principle animator, Keneisha Perry. We found out that slow rendering in the Blender viewport was getting in the way of her doing finer animation, and that seems to simply be a case of not enough “oomph” in CPU and RAM, although possibly the video system is a problem too. I should be assembling it, installing software, and shipping it to her next week.
This has given me a chance to look at the next generation of components. The CPU will be a Ryzen 7, which is an 8-core AMD. RAM will be 16 GB DDR4, and it’s now pretty standard to put an M.2 SSD port right on the motherboard, like the one picture above (not for this build — that’s still in the mail). She’s also getting an nVidia card on it — I’ve generally avoided nVidia in the past, because the open source drivers aren’t really adequate and thus it’s generally necessary to run the proprietary ones, but nVidia has a much better performance reputation with Blender users, so I decided to ahead with it, since performance is the main concern here.
It’ll also be the first test of using Ansible to deploy our standard studio workstation build, so that will also be interesting.
Unfortunately, the time it took me to find cash for this has introduced some delays. Our first release will probably be in early Summer at this rate.
Although in running an animation project like this, the people and their time are unquestionably the most important asset, technology is a multiplier. Inadequate equipment wastes a lot of human time, so keeping it up to date is one of our most significant out-of-pocket cash expenses.
I hope we can keep up until we reach a break-even point, but we’ll have to see.
Links
Articles I linked to on our Patreon Blog in March, 2018:
Add-ons for Blender from Samuel Bernou
Oooh, nice!
May have to use some of these!
More NPR Effects
Looks interesting. I’ve been tinkering with flame effects for the launch and later rocket-firing effects. Still not convinced I have the right look, so I keep looking at how others have done it.
Solar Probe
Just to be clear “touching the Sun” is a bit of a stretch: 4 million km is about 6 solar radii (meaning the radius of the photosphere). The “Sun’s atmosphere” is kind of a vague term that basically means the “corona” in this case (in another sense, you could say that we ourselves are in the “Sun’s atmosphere”, since the solar wind permeates the solar system out far beyond the major planets where it hits the interstellar medium).
But even so, that probe is going to get pretty hot!
That’s about ten times closer to the Sun than Mercury ever gets.
Essay About Hayao Miyazaki Films
Very nice essay about characterization through animation and other aspects of Hayao Miyazaki’s animated films. I’ve definitely found those films inspiring, though it’s often hard to say exactly what it is that makes them work.
Some is probably that they don’t necessarily follow western ideas about story structure. In the East, there is a theory called Kishoutenketsu, which breaks story into four parts:
- Introduction (ki)
- Development (shō)
- Twist (ten)
- Conclusion (ketsu)
Which gives a lot of Japanese stories a different feel from American or European stories.
But I do think there’s more to it than that with Miyazaki, and this essayist makes some good observations.
Daylight on Pluto
Interesting question — I’ve wondered that myself.
MUCH dimmer than full daylight on Earth, but still much brighter than moonlight or even “civil twilight” according to this.
Krita 4 Introduces Python Scripting
I don’t really know anything about the API yet, but I’m very excited to see this happen! I’m hoping this will mean that Krita can be integrated into our KitCAT project.
The idea behind KitCAT is to create a context-sensitive client for TACTIC, which is tightly connected to create applications on the artists’ computers.
Imagine being able to simply pop up a window in Blender, Krita, Gimp, Inkscape, Ardour, and other apps, and immediately be able to see the collaboration history and goals for the file you’re working on in the application. This would really streamline team projects.
Krtia was one major application this would not have worked for — except (possibly) now. It will depend on how complete the API is, which is something I’m going to have to study.
Selected Comments:
- Lunatics Project:
I have been looking at the API, and I think it is going to be possible. It’s possible to add features to the GUI, and other than that, we just need to be able to do inter-process communications and introspection into the current document. It’s a SIP API based on the C++ interface, as I understand it. The only downside is this probably means relying ont he C++ API documentation and mentally translating into Python (I’ve done that before and it can be a little hard to keep straight, depending on how “Pythonic” the style of the API is). I’m optimistic about it.
Tiangong-1 Re-entry
Less silly space news for this week: the first Chinese space-station is re-entering the atmosphere. Like most returning spacecraft, it will break up and disintegrate, with little reaching the ground.