What a great and helpful guide you've written. Respect.
Just updated it!
Why didn't you share the URL to sign up in the article
We’ve talked with the talented guys from Main Road|Post about some of the cool tools they’ve developed for the production of visual effects in a Russian science-fiction film “Attraction”.
Main Road|Post was founded in 2006, at first, the studio employed 6 people, now we have 60 employees, by the end of the year we’re planning a considerable expansion due to the amount of work we currently have. The studio is focused on visual effects for movies and works on major Russian movies. In 2013 the studio became noted in the international VFX community for its work on the movie Stalingrad. The last year we moved away from our familiar operating structure and implemented Scrum, dividing the company into small cross-functional teams.
Since Attraction is a very emotional love story, about relationships, about social relations – VFX was given the role of a dagger of sorts, which destructively entered regular people’s life. It was literally shown in the scene with the crashing spaceship, destroying a part Chertanovo, a district in Moscow, which wasn’t in the downtown and which was home to our main characters, some of them were local hoodlums in sweat suits. That’s why our task was to make it look absolutely authentic.
We developed a selection of tools (assets), capable of procedural generation of city districts. The toolset included a generator for apartment buildings, a generator for urban infrastructure (trees, bushes, lawns, parked cars, sidewalks, fences, street lamps, road signs, traffic lights, stalls, posters, communication wires between buildings, trash containers and much more) as well as a system for road traffic simulation, which was programmed with general principles of traffic flow on city streets. It is worth mentioning that the traffic flow in this algorithm was controlled by the traffic lights.
The buildings generator (as was mentioned above) allowed to create any building of any height and configuration from the selection of typical buildings. Moreover, the variability was achieved through adjusting parameters of fenestration of the balconies, density of the attachable equipment (satellite dishes, air conditioners) and texturing. With the full set of tools, manual operations were reduced to marking streets of the district, everything else was generated automatically.
Based on the plot of the movie, we created three main districts, where the main characters acted, and except full-cg scenes we actively used them for set extension of the footage. Also, we created several additional districts, which were mostly used as backgrounds. As a result, we minimized usage of matte paint in work on shots.
The stadium, buildings and overhead road were destroyed using Bullet Solver in Houdini. What was rather difficult in this task is that the spaceship was a one-sided collision object in the simulation. In other words, the spaceship could destroy houses but houses couldn’t destroy the spaceship and it caused the problem of unrealistic object acceleration which doesn’t happen in real life, because any material, especially a building, has plasticity which dampens the impulse as a result of deformation and destruction. In order to achieve a balance in the behavior of the fragments, we added a variety of “soft” limiters of accelerations.
In addition to that, we used caches of destroyed houses from the scene with the spaceship crash to create assets of destroyed districts. It allowed us to keep the “natural” pattern of destruction and fragment scattering and let us save resources.
The crash of the spaceship on the city was one of the most difficult scenes of the movie in terms of simulation. In the early stage of work on the episode we thought over the geography and choreography of the crash: where did it fly from, what was the speed, and where would it finally stop. We created an authentic design of the district of the crash, arranged the houses, keeping in mind which of them were to be destroyed and which to remain standing, roads, elements of urban infrastructure. Then we made a previs with end-to-end animation of the whole crash. In the previs we identified the most spectacular elements: collapsing houses, stadium, overhead road, smoke from the spaceship. Then we filmed the whole action on several cameras (about 20 different angles) and edited the episode. Basically, it reminds filming a complicated stunt in a movie: preparation, shooting the maximum number of angles, editing.
The previs was the first iteration of animating the spaceship and cameras. When the previs had been approved by the director, we began working on the simulations. You can identify two general groups of effects in the scene: RBD and Fluids. In order to work with RBD, all buildings (and the stadium) were created to meet the requirements of solvers such as Bullet. Moreover, apartment buildings also had internal layout and flights of stairs. Basically, any building in the movie could be destroyed, because the procedural generator of buildings (we’ll tell about it a bit later) was originally designed with that functionality in mind. It let us, as late as in the stage of finalization of simulations, change the number of stories and blocks of flats they had, adjusting the scale of destruction.
Besides, all destruction and contact of the spaceship with the earth was accompanied by a great amount of dust, smoke and fine fractions sent into the air. All of it was also reconstructed with fluid simulations. The climatic and most complicated part of this kind of dynamics was the last phase of the spaceship crash, where at the same time the shot included: a pyroclastic flow of thick dust from the contact with the earth, dust from the collapsing stadium, smoke of the burning hull elements of the spaceship, where the missiles hit it. Generally, in that episode we didn’t use a single stock sequence and all the effects of smoke, dust, fire were simulated.
I would like to separately mention the scene with the attack of the jet fighters before the spaceship crash scene. It doesn’t contain any major simulations but has several elements worth mentioning. The atmosphere and light of the scene are a single physically accurate environment, where everything derives from the sun position. We also reconstructed in Houdini a basic model of the formation of cumulus clouds, which was used to create a cloud library. And of course, the full-cg pilot of the jet fighter.
Let’s touch upon the challenges. The challenges can be divided into 2 large groups – artistic and technical. Actually, it’s better to call them tasks instead of challenges. Basically, the whole project in general and every shot in particular consists of a variety of such tasks. Design development for all extraterrestrial objects (spaceship, exoskeleton, artifacts), nature of the alien’s movement, choreography of the full-CG scenes are maybe the largest and most difficult tasks of artistic kind, which we solved in Attraction project. Solving tasks of such a type means a continuous and intensive search for a better solution or, in other words, a solution that brings out “the right” (from the director’s point of view) emotions of the viewer.
Complex technical tasks are largely related to action scenes. The fall of the spaceship on the city, the jet fighter attack, the final battle are, probably, three the most technically difficult scenes, due to the large number of simulations, crowds of characters and generally great number of objects in shot. Filming such shots requires considerable computational resources, which a usually not enough, that’s why we have to look for work-arounds, optimize.
Over the recent years our pipeline hasn’t seen any significant changes, because from the start it was created with great flexibility of use of different tools in mind. It’s hard to say how much more extensive our use of procedural methods has become, because we were keeping to the procedural approach from the start, trying to solve our tasks that way.
Of course, development of additional tools, such as photogrammetry, allows us to use them more often than before, when they didn’t exist 🙂 They pretty easily fit into the framework of our pipeline and principles of our work.
Speaking about the difficulty of working with effects, it remains more or less the same, but quality of the result is increasing. Perhaps the same pattern can be traced here, similar to that in rendering – every year, despite increasing performance of computers and growing efficiency of rendering engines, rendering speed of a single frame remains the same on the average, but the quality of the final image grows substantially.