3d artist Sebastian Giannoulatos explained how he used UDK and UE4 to create amazing environments.
Sebastian Giannoulatos talked about the production of his detailed scene, inspired by The Division game from Ubisoft. Sebastian was kind enough to talk about the production process, the creation of materials, models and the general work in Unreal Engine 4.
My name is Sebastian Giannoulatos and though I grew up in Greece, I’m from Switzerland. When I was 12 years old I played the first Metal Gear on my friends NES and ever since my dream has been to be a game developer. Since then I studied Computer Animation in the US and between 2009 and 2013 worked in the simulation field doing training lessons for the oil and gas industry. In late 2013 my wife and I returned to Switzerland where the game dev scene is slowly taking off. I haven’t been able to work for a game development studio yet but I’m not giving up.
Last year I founded Swiss Realtime Solutions, we are a small studio that specializes in visualizations using real-time game engines, 3d content production and animation.
Building The Division Environment
Like everyone else, I was blown away by the first trailer that was shown during E3 2013. I was looking around for inspiration to do a personal project and I’ve always been a huge fan of architecture and large scale environments. Then I found this piece of concept art from the game and I loved the feel of it.
I decided to take that piece and place it in a real setting. The trailer took place in a real setting after all, 117 Water Street in Brooklyn. My first stop was Google street view and so I started looking for an intersection that looked interesting and that I could fit the elements from the concept piece into. That intersection ended up being 115 Madison Avenue and 30th.
One of the reasons I was looking around in that area was that I wanted to add as much Easter eggs as possible into the scene and from that corner you can see the Empire State Building.
Breakdown of the Scene
After I had my setting I had to decide on what had happened in the environment. At this point I’ve been already working on the scene for several days and not once opened a single content creation package. We’re still in text editor and spreadsheet mode. So the story that I’m telling here is that after the chaos broke out mass riots erupted. That explains all the debris in the streets. It’s a lot of spray cans, loose wood and rebar that the rioters could either bring with them or pry out of the buildings. Also smaller bricks that in most cases are decorative and wouldn’t be too hard to remove. Also littering the streets would be what for me is the signature look of the division, huge piles of garbage as a result of public services breaking down. Amidst all this chaos a truck blows through the intersection dispersing debris in its wake and crashes into the convenience store. That gave the garbage a direction and would help draw the eye to the car crash.
Next I started planning my assets.
Getting the scale of NY right was very important so before I randomly started assigning values to distances I wanted to make as accurate a guess as possible. To that end I consulted the US CABO 1996 Building code and an architectural dissertation regarding commercial zoning and ceiling heights and how they relate to customer perception.
With preproduction out of the way, the blocking out process went very quickly.
I use Maya for all my modeling work and after a couple of days I had most of the scene blocked out inside Maya. One of my goals with this project was to learn UDK. And so I spent a great deal of time learning that magnificent engine and also wasted a great deal of time with just trying things out. In the end this project had to be restarted twice more in engine because once it got corrupted and I had to redo the entire UDK part of it from scratch and of course Unreal Engine 4 came out a bit later and I decided to port it over. Restarting in UDK was a blessing in disguise since I got to trim the fat and be really efficient about it. When UE4 was released and I decided to try and port the project over it took roughly 2 days to get everything setup. The process went incredibly smoothly.
Building the Assets
This scene takes an all modular approach. There’s only a few custom pieces.
All buildings are modular, as are the sidewalks and the streets. There’s also only a handful of materials in the scene that I instance and change as necessary. Since all the pieces were designed with modularity in mind, they all conform to a grid so that you can easily assemble everything. Unfortunately for this project the scale became an issue because UDK used Unreal Units instead of centimeters. That meant that 16uu were 1 foot. Scene assembly became harder in UE4 because the grid had no marker that corresponded to feet. Luckily modern engines allow you to snap pivots to vertexes of other models.
For this project I wanted to only use generated maps and not use any photosourcing. That’s why I used both DDO while it was in beta and Substance Designer. I’d use Substance to do my baking and export masks and dirt maps and then use DDO to provide me with paintable layers in Photoshop. These days I tent to only use Substance Designer and Painter though as I find them easier to use. Almost all textures for the environment are tiles.
There was one texture in particular that accounts for almost 80% of the environment.
Only important props that would be focused on had unique textures.
Finally, to tie everything together I created a procedural snow shader that varied by world position. It would deposit snow on the upwards facing faces of a mesh and apply a mask that varied depending where in the world an object would be. That made all the cars, garbage piles and debris unique without me having to do any further tweaking.
The Devil is in the Detail
When I saw that first trailer I was blown away by the detail in it. There’s a shot early on where they show tiny icicles under a balcony… Since I was on my own I had to find a way to replicate that density with easier assets. In UE4 you can paint any asset you want onto another mesh and so I could have used that to paint debris and garbage around the scene to add custom detail. However, I didn’t have that functionality in UDK or if it existed I didn’t find it and so I used solutions inside Maya to generate detail. For the large garbage piles, for instance, I hand placed high poly piles together then I ran a cloth simulation that enveloped the pile to take on the shape. That generated a fairly good looking pile that I could use to quickly clutter up the scene that only used a few thousand tris and a simple material.
The debris on the ground was another such hack, I subdivided my road models with random cuts and then ran a script across it that placed random objects with random orientations on every vertex of the source mesh.
After that was done I just had to clean it up by hand.
Building Special Effects and Lighting
This scene didn’t have a lot of effects work that needed to be done besides the snow storm.
For the snow storm I just created a particle with several emitters that emit at slightly different angles and rates and applied a vector field to them. The other particle in the scene are the flares on the road, those are just a cloud that emits straight up and fades away quickly. The great thing with modern engines is that these particles can be lit by the scene and so the coloring of the flare was done by a real light. Also the lights around the scene helped break up the snow particle and make it more interesting.
For the lighting I tried to create pools that draw the eye to the places where parts of the story unfold. I tried to create a triangle between the foreground, the debris field on the right that the car drove through and the car crash.