Job Title: R&D Programmer
Harry is one of the R&D Programmers working in Double Negative’s fluid dynamics research team dealing primarily with the likes of expansive oceans, fiery explosions and water cataclysm. His career profile has been reproduced here with kind permission from Double Negative.
What’s the best thing about your job?
The best thing is seeing my programming working really well, and of course seeing it on screen. There’s a moment where you design something, and then all of a sudden it slots into this huge VFX pipeline, and becomes part of something huge.
How did you get into the business? What natural skills do you think lend themselves to being a programmer?
I got into the business after doing a masters in Applied Mathematics. I did some projects on fluid simulation and computer graphics and really enjoyed it. To be a programmer you need patience. An awful awful lot of patience.
Is there any particular training / courses you’d recommend?
Anything which familiarises you with software packages, and teaches you Python, C++, and/or software development practices will give you a headstart.
Is there anything you wish you had done before you joined the industry which would have better prepared you for your career in VFX for Film?
I wish that I had had more software design experience; I’ve picked it all up, but it’s been tough and I’m still learning!
From Karn Spydar Lee Bianco: Have you always wanted to work in visual effects / is that what you’re trained in? I work in game development – do you have any advice for a game programmer looking to move into a role like yours?
Not quite: I was trained in applied mathematics. However, I got really interested in visual effects, and found that software development was much more interesting than mathematics research. So I tried hard to tailor my remaining time at University to computer graphics.
We’ve got a lot of crossover between VFX and the gaming industry. I’d say if you want to move towards VFX, get an understanding of the VFX world, as the problems we face are a little bit different. For example, in many ways we care less about how long something takes or how much memory it uses, so long as we can get it through our system and it looks great on a big screen.
From Daniel J. Smith: When getting in to the VFX industry, is it better to specialise in a certain area or to make yourself slightly more general?
Wow, tough question. Who knows? I guess one thing to bear in mind is that the VFX industry is relatively small, at least from a software side of things. With that perspective, I’d say it’s better to be more general, and more flexible. That particularly applies when you’re working in a VFX house itself; as opposed to pure software companies that service the VFX market, who do need specialists in order to advance very specific pieces of their software.
From Victor Daropoulos: Any suggestions on how to work in your field if you are a computer engineer?
If I were you I’d get myself familiarised with the kinds of problems that we face in the VFX world. In my field being a good computer engineer is essential, probably the most vital requirement. Typically we’ll be facing problems like “how can we get this render to fit in memory?”, “how can we expose more user control over this feature?”, “should we support this particular file format?”, “that picture doesn’t look quite right…is there anything we can do to fiddle with it?”, and so on. But there’s also an important place for experienced computer scientists who can use their knowledge to help us design frameworks for testing, building, and releasing.
From Santosh Krishnan: I am currently doing my MSc in Computer Animation and VFX from Bournemouth University. I would like to ask how relevant is a pure programming background considered for an entry level position in RND? By that I mean, will a 3 year work experience in software development/application programming in c++ domain be considered relevant along with my Masters degree which would also upgrade my graphics programming skills? Thanks.
That sounds absolutely ideal. You want to be presenting yourself with a very relevant mix of skills. The vast majority of what we do is underpinned by good programming and software development, so that’s skill number one. If I were you I’d focus your MSc on things like a knowledge of film, real-world studios, and animation; which should put you as a really well-rounded candidate.
From Amy Brand: I’m doing a degree in 3D animation but for my final project I wanted to look more into the coding and programming for fluid dynamics and how a knowledge and understanding of this will affect how an animator approaches animating fluid simulation – problem is I’m not experienced in programming and don’t really know where/how to begin my research. Any suggestions? How did you first begin to research into fluid dynamics?
I studied mathematics at University, so I got a great introduction into the mathematics of fluids before I ever started trying to program. Of course, the best way to understand the coding is to go and build a fluid simulator yourself. However, if you’re not too experienced in programming and you have limited time, that isn’t really an option. But I’d certainly start by looking at the paper “Stable Fluids” by Jos Stam; it’s a great introduction.
For the artist side of things: most research papers don’t discuss the end user a great deal. But there’s some really interesting questions that you can explore. In particular, with fluid simulation for VFX you want things to look realistic with minimal artistic effort, but you also want to give people the ability to poke in and play around with what would actually happen in nature. There’s a interesting balance to be struck there.
From Anitha Rajagopalan: Are non-European students considered for entry level jobs in RND with these VISA restrictions?
Sure! We consider applications from around the world. However bear in mind that it will always be more difficult if an employer has to sponsor a visa to get you in. I’d suggest getting a few years’ experience under your belt to make yourself look as attractive as possible. That could be work experience or your own projects on the side.
Check out the article written by our R&D manager Jeff Clifford for the kinds of things we look for.
From Arihant Gupta: Are you a part of Dneg’s propriety “Squirt Fluid Simulator” development team? What challenges do you face while working with Fluid Dynamics? Also I am using Naiad these days. How do you think it’s similar to Squirt?
I am indeed. The challenges we face are predominantly ones of scale: making simulations bigger, finer, faster. For example, we’ve got some great work going on at the moment looking into panellising our simulator, which is giving really promising results. We’re also trying hard to be in a position where we’re really flexible to the needs of different films and different shots. Our flexibility and responsiveness is really the crucial benefit of in-house software.
As for Naiad—we’re really similar! Some of the early developers of Squirt are the same developers as Naiaid.
From George Jose: First off, I’m a little curious to know how long the process took for generating CG Sea, upwellings for the final few shots for the movie “The boat that rocked”. Secondly, where these shots completely developed with a proprietary software?
The Boat That Rocked was using Squirt for the splashes around the boat, blending out to standard procedural Tessendorf oceans in comp. The simulations were big, I think the biggest was around two days’ worth of calculation, but there was nowhere near as much resolution as what we do now. Some of the interaction stuff with the sinking ship was tricky, but thanks to some awesome TDs the integration all worked in the end.
With Squirt at our disposal we were able to tackle a lot of these types of shows way before other facilities had the same options available to them!
From Arjun Singh: great job Mr. Harry…Dneg’s water animation is one of the finest…but i’d like to ask, why does CGI water splashes look more foamy than the real water?
You can broadly think of a fluid simulator as just a particle simulator; except you impose some additional constraints, like “these particles can’t get too close, because then the pressure would be too high”. So the output is a whole load of little spheres. What we do then is to convert this bunch of spheres into a surface, by squashing out and smoothing the spheres, or by ‘shrink wrapping’ a surface around them. So the choice lies entirely in the sphere-to-surface bit of the pipeline. There’s a whole range of ways of doing this, and a big range of artistic choice, too. If you see a lot of spray and foam it will usually have been requested.
From James McLean: Given what you do with fluid dynamics, and that not every movie does these sort of effects very well, are there any that were done so badly you and your team would redo them in a heartbeat? Apart from THE TEN COMMANDMENTS!
We get pretty critical of our work sometimes: we’re often spending months on a few seconds of film, flicking between frames that last one twenty-fourth of a second. Fluid dynamics is really hard to get right. As for specific examples, I couldn’t possibly comment…
From Lorenz von Colonia: Hey here comes a tricky one. Any Idea how to animate raindrops coursing down a Window? They schould do this spontaneous movement with sudden acceleration and melting together and so on. I nearly got mad about that issue. Tried with Realflow…
Yeah that’s tricky indeed. The thing with fluid simulation is that it’s very different depending on the scales you’re dealing with. With raindrops the dominant forces are things like surface tension and adhesive forces; however most of the software used in visual effects focuses on large bodies of water where pressure and collision objects dominate. There’s are some simulations I’ve seen in the research community that model surface tension very well, but I don’t know of a case where this has been integrated well into proprietary software.
As for the spontaneous acceleration: I would imagine imperfections in the window’s surface contribute to this a great deal. Tiny imperfections leading to droplet-scale behaviour; that sounds unstable and pretty hard to model. I think you’d be better off generating some kind of randomised force field that mimics the overall effect. Good luck!
From Matt Suggit: Do you spend more time making fluids act realistically, or making realistic fluids unrealistic, for dramatic effect?
Good question. Essentially what all VFX fluid simulators start with is a pretty good model of the physical world—the Navier-Stokes Equations. We’re not interested in the kind of accuracy that, for example, engineers strive towards, so we don’t bother solving the equations with such fine timesteps. This means that our resulting simulations are something like reality, but not quite. Add to this the fact that we’re trying to give artists the ability to reach in to the simulator and warp reality, and you might get the impression that we spend most of our time making fluids unrealistic.
However, in practice, we’re engaged with smoothing out artefacts, tracking down bugs, and making our system handle finer grids (that give more accurate solutions). Our clients typically want realism: “I wonder what it would look like if that water powered reactor actually exploded?”, and our artists want to be able to tweak here and there. That said, if we ever got to perfect realism, we might want to backtrack a little bit; where would be the fun in that?