XDS 2016: Shotgun and the Integrated Pipeline

Louai Uncategorized 0 Comments

Chris Wren at E.A. invited me back to present at the External Development Summit due to the popularity of my 2014 talk there. I co-presented with Autodesk’s Eli Rarey, and it was a blast! I had an amazing response to our talk and I met allot of very talented people while I was there, all in the beautiful city of Vancouver, CA. I’ve embedded the conference video and session description below.

Everyone has a pipeline, but how much thought and attention has gone into building it? Has it just come together organically over time or been engineered and constructed for your workflow? This session will look at some different approaches to pipeline and how the idea of pipeline has developed in the game industry. How can pipeline improve artists’ efficiency? How can it improve our quality of work — and more importantly, our quality of life?

Louai Abu-Osba will show battle tested examples of High 5 Games using Autodesk Shotgun to build a high-volume game asset pipeline that normal humans love using. Presenters will show how to optimize your pipeline with non redundant processes, activity measurements, interactive tools, and lots of automation. Specific examples will be offered as to how to integrate local artists and off-site artists with production using build systems, source control, and production management tools. Learn how to better build your pipeline into a flexible system designed for creativity.

GDC 2016 Presentation on Pipeline Deployment

Louai Uncategorized 0 Comments

I was greatly flattered to speak at the Technical Art Bootcamp for GDC 2016, at the invitation of the bootcamp organizer, Jeff Hanna! I had great fun and was honored to speak at the premiere industry event. A video version of my presentation is below, and you can find a subscription only recording of the GDC session on Vault.

The Creative Machine

Louai Uncategorized 0 Comments

At the flattering invitation of Shotgun Software I presented the state of the High 5 Games asset pipeline at the External Development Summit 2014. XDS is a game industry convention focused on developers that use external studios and developers for their products. It was a fascinating group of people and I had a great response to my presentation. It inspired me to take some of the content I prepared and write an article on Medium, which I’ve been quite smitten with. I also posted a shortened version of the tool demo on the home page.


The Creative Machine

Emerson 0.0000001: Preliminary thoughts for a low cost, real time customizable digital puppeteering system & rehearsal methodology for live scripted performances

Louai Personal Projects 0 Comments

Background

I’ve long fantasized about bringing 3D digital characters to life on a theatrical stage to perform with human counterparts. In particular, I was really inspired by Bulbous Bouffant by The VestibulesThe Vestibules are a Canadian sketch comedy troupe and this piece is a work of whimsical genius. I have not so clear memories of sitting in my friends dorm room; “Listen to this,” he cryptically said and I was promptly taken on a 4.5 minute ride of wonder. I’ve been obsessed with this piece ever since.

There are two main characters, one of whom sounds like a straight laced normal human, and the other is undoubtedly a cartoon character. In my college days I thought long and hard about how I could adapt this to theatre for my Div III, with a human actor playing normal dude and a digital projection of the cartoon character as a 3D model, being puppeteered or prerendered behind the scenes by an operator.

Playing back prerendered video of a digital character seemed antithetical for a live performance. That’s not to say video doesn’t work in theatre, but it doesn’t work that well for a character that’s supposed to be interacting with a live actor. Even when delivering a scripted performance an actor has all sorts of subtelties of timing and gesture that change with each audience, ie when a line is delivered, which parts of the line get emphasized, where exactly they fall on stage. Live puppeteering seemed like the only solution. However, I hate the look of digital puppets that just flap their mouths open and shut, without making real lip shapes and facial expressions. In order to get a fully articulated digital puppet the control systems that existed then and currently do now are very complex, proprietary, require two or more people to operate, expensive, and may need an engineer for initial configuration:

Since I’ve been focusing more and more on character animation over the last few years rather than motion graphics and compositing my interest in puppetry rekindled in a big way, especially after watching the Elmo documentary and stumbling on Jeff Dunham standup on TV. I started searching for hand puppet to play with and a colleague and fellow puppet enthusiast turned me onto the Muppet Workshop at FAO Schwarz. You get to customize a Muppet extra using their web app and then THEY SEND IT TO YOU. Amazing!

Together, at last.

Louai and Enzo. Together, at last.

His name is Enzo. Enzo is wonderful. Unlike a rigged 3D model, he responds in real time, he puts me in character immediately, I can experiment endlessly, doesn’t require a graph editor to get perfect arcs, and is completely WYSIWYG. Unlike a rigged 3D model, he is wholly limited to how my hand and body can move and the range of my voice. So I would love to take the immediacy of single performer hand puppetry and combine it with the control, articulation and flexibility of an animated 3D model and project the results in front of a live audience.

The System

The workflow would be something like this:

  1. Make your hand puppet.
  2. Make a 3D model and rig inspired by your hand puppet, or vice versa.
  3. Rehearse with your hand puppet and other human performers.
  4. Record a final performance with your puppet and other performers in front of a camera. The hand puppet’s performance is recorded as machine friendly data using a variety of methods; a flex sensor in it’s mouth, a gyroscope on it’s head, tracking markers on the hands, and an ever increasing number of other ways to capture physical movement.
  5. Keyframe the 3D model animation with a 3D application, using the recording as reference, and continue to shoot reference as needed, both with puppet and your whole body. This finished animation is what the audience will see and the human actors will interact with.
  6. Using a custom tool denote the parts of the animation that will be modified and exaggerated during the live performance. Add cue points for when phrases of the animation should be triggered.
  7. Showtime! You will perform with your hand puppet in front of a video camera with the sensors attached, as you reach the cue points with modifiable attributes created in step 6, the animation will playback with whatever output medium you’ve chosen, ie a project or large display. As the performance of the hand puppet unfolds it will drive the playback of the 3D model with modifications to the keyframe data, such as the exact tilt of the head, how far the 3D model moves across the stage, how fast a walk is, or when exactly a line is delivered. The control system playing back the animation would be rendering in real-time 3D, much like a game engine. What will be interesting is using machine learning methods in the control system so it can match the physical puppet movements against the keyframe animation.

I have no idea how well this will work, but there must be a better way to control digital puppets that is more natural than stepping inside a mech or button mashing an XBox controller.

Cloud Rendering with Amazon Web Services

Louai Personal Projects, Professional 1 Comment

I’ve been long intrigued by Amazon Web Services and the fervor surrounding “cloud computing”. Frankly I didn’t really understand what a bunch of servers have anything to do with puffy, white ethereal objects floating in the sky but I knew it’s reputed to be cost effective and on demand. A few weeks ago the Day Job sent me to an all day AWS 101 training session. After 8 hours of pure geek/tech/engineering talk I left salivating at the promise of virtually unlimited computing instances. The part of the session that really got my attention was when the trainer discussed using AWS for running batch jobs. “Since we only charge for total compute time there’s no reason not to run your batch jobs in parallel. If a batch job takes a server six hours to run, there’s no reason not to use two servers for three hours. Since it’s the same amount of compute time, it costs the same.”

Whoa.

With a little PowerShell script I can render each frame of a Maya scene file in parallel. That means my total render time for all frames equals the time it takes to render ONE frame (albeit, the slowest rendering frame) plus the overhead of starting up a render instance. That sounds pretty nice right? Once I’m finished hacking out the script and refactoring it I’ll be posting it on Source Forge, along with setup instructions, the PowerShell source, and a command line executable. Launching a render farm job from your laptop will look something like this:

renderzon –file ‘myscene.ma’ –frames ‘1-300’

And BOOM! The script commits your assets, starts up 300 render instances, syncs the assets, renders the frames, and copies them back to your lowly laptop. Sounds ethereal don’t it?

Building Excellent Teams

Louai Extended Interview, Professional 0 Comments

I’ve been working on Scholastic’s ereader for the last year. It’s undoubtedly been one of the most challenging and stressful projects I’ve been involved in. It’s a strategic project for the company and there are lots of eyeballs looking at the work my team and I pump out. As I’ve been navigating the minefield of other people’s decisions, recruiting staff, training staff, setting up workflows, and watching deadlines whiz by, I can’t stop thinking about what creates an excellent team. The very subject of team building is almost a cliche in any reading about management techniques yet I’m amazed how often the various organizations I’ve worked for ignore this foundation of productivity.

Half of Directing is Casting

A wonderful theatre professor told me this adage is truth when I took her directing class in undergrad. It holds true in all mediums. If you don’t hire people with the right skills and personality nothing you do will ever make a good team. Hiring takes as long as it needs to because the wrong people are eventually let go and the hunt begins all over again. If you take the time to cast well the first time you won’t end up like Sisyphus.

Job Titles/Descriptions Are Not Sacred

Once you get that special someone with the right skills the tyranny of their job title should be stripped away. We often reduce people’s worth to a verb, like “animator” or “programmer” or “producer”. If you’re animating a shot in a film, or writing a tool that will be used on a film, or putting together a callsheet for tomorrows shoot, all of you are the same thing; filmmakers. Excessively compartmentalizing your role within a team can easily limit your thinking, communication with other groups, and troubleshooting abilities. Your crew should be encouraged to learn outside of their job titles. We all need to learn, flourish and grow to lead fulfilling professional lives. This is a huge part of what makes some companies successful and innovative and others mediocre but existing. When people feel stagnant, they leave.

The Pipe Should Facilitate Creativity

Making creative decisions is what humans do best. Your pipeline, workflow, production system or whatever you want to call it should be designed to accommodate this fact. Many of us live in a world of computer based production, be it for interactive media or linear experiences, and computers should be used appropriately. Here’s an awesome quote, which wasn’t said by Einstein:

“Computers are incredibly fast, accurate and stupid; humans are incredibly slow, inaccurate and brilliant; together they are powerful beyond imagination.”

Automation, custom tools, and off the shelf applications are what make computers the most incredible creative tool ever made. Every time you ask your team member to compensate for an inefficiency in your pipeline you’re sapping them of energy they could be using in their next creative decision. You are asking them to forget they have a loyal servant at their fingertips, just waiting to perform an arbitrary task for them. There’s no sense in this. These days almost every professional application has a high level scripting interface, or can output data in XML. You can build pipelines that can accommodate almost every need and style of working imaginable. A sensible pipeline is a really, really, really, really, really easy way to keep that happy worker you searched for from turning into a zombie misanthrope.

The Big Picture Is What Matters

We’ve all seen innumerable hasty (terrible) decisions made because of a short term deadline within a larger project. Please stop making those. Eventually they pile up and you get a fortress of cards held together by post-it notes. It’ll fall. Most likely just before the project is supposed to be finished. Hasty decision making is a gigaton burden on your workers. They have to clean up the mess because of a series of decisions made in the long, long ago which seemed sensible at the time but in the larger scope of things was certainly not so. Don’t create tasks that distract from the mission. It’s hard enough as it is.

Your Team Should Breath A Sigh of Relief When You Walk Into The Room

Not when you walk out of the room. When you walk into a team meeting, or over to your members desk, they should feel relief that you’re there. They should feel inspired and confident that you can help solve today’s problem, crisis, or etc. My senior most boss at the defunct Firebrand had exactly this effect on the post production team. It did wonders for us as we scaled our mountain of avalanching work.  The “manage by panic” style, by contrast, which usually entails throwing down some insane requirement for a deadline, or yelling tirades, is poor, visionless leadership. You are meant to be their leader, a general, taking your crew into challenging and competitive territories. You must make them loyal to you by being loyal to them.

Go Forth! And Conquer!

What is a Technical Artist?

Louai Extended Interview, Professional 0 Comments

I had become a technical artist before I realized they existed. I read about this mysterious new discipline while I was at working on a Nintendo DS game at Scholastic, circa 2006. I had just finished writing a simple XML exporter for Photoshop using ExtendScript and stolen my colleauges copy of Game Developer. An article talked about how very useful this new subclass of artist had become at varying studios.

Basically, they were lazy snobs. And filled with an unsustainable amount of hate that frothed into rage and an occasional bitterness. Anyone that’s done five seconds of game development knows the unbearable amount work there is to do in preparing art assets or coralling transformed data into a game engine. The ignoble tech artist hated doing anything more than once, hated inefficiencies, hated error prone work, and wanted to HULK SMASH any task that wasn’t creative. So…

…did I. In fact, my exporter served to turn Photoshop into a primitive level editor for an oscillating Venn diagram type arcade minigame. I was prompted to write it when a beefy XML document that defined leveling data was dumped on my lap with a request to “Uhh, I think these levels don’t really work and everything past level five makes the DS crash. Can you redesign all 30 levels? And make them fun. And the title goes to manufacturing in two weeks.”

Nothing about this frightened me other than “fun”. Make 30 levels fun? Designing any type of game that’s actually as fun as the marketing claims requires time, iteration, experimentation and creativity. Trying to get to fun while hand defining layout data in a giant XML document was a blackhole of realism. I would have been entirely ecstatic if only half the levels crashed by the ship date. So out came the Photoshop scripting reference and I clobbered together a workflow fast enough for me to design some interesting, fun and unexpected levels.

That’s the essence of the technical artist. Creativity is the pursuit, and technology gets us there faster, easier, with some sanity left to appreciate it. Being creative is uniquely human. So to spend our precious waking hours toiling with a workflow that’s slow, awkward, hateful and stupid, stupid, stupid, turns your crew into zombie misanthropes. Do you really want zombie misanthropes creating your game, movie, tv show?

These man made creatures of the dark are a big part of the reason why 90% of all products in those mediums aren’t fun, entertaining, or unique.

I say no! If you have to cross a gorge with a class VI rapid flowing through it, build a bridge. Don’t go swimming.