Elite3D is a proven 2D and 3D artwork studio dedicated to developing and producing outstanding art for triple A and mobile/tablet videogames. Here, their lead artist Bjorn Seinstra reveals their work behind their real-time Bistro demo scene for Amazon Lumberyard. You can read some of their top Amazon Lumberyard tips in issue 119 of 3D Artist
The Amazon Lumberyard team approached elite3D to create a scene in Lumberyard, which could showcase a number of specific render features.
Features like SAA (Specular Anti-Aliasing), OIT (Order In Transparency), and TAA (Temporal Anti-aliasing) amongst others, were planned to be shown in real-time during a demo at the GDC conference.
At the time of the initial request, these features were still in development by the Lumberyard engineers, which meant the art team had to work hand in hand with the Lumberyard engineers and graphics programmers to achieve the desired goals for those features.
The team consisted of a small number of experienced artists from within elite3d and these artists, who had previously worked on titles like Star Citizen, Ryse: Son of Rome, Homefront The Revolution, Call of Duty Infinite Warfare and Hitman, were put together in this team to achieve the desired goal. The team consisted of the following artists:
– Bjorn Seinstra (Lead Artist)
– Antonio Pons (Environment Artist)
– José Escriche (Environment Artist)
– Marvin Jimenez (Environment Artist)
– Elias Vergara (Environment Artist)
– Javier (Plot) Tejada (Environment Artist)
– Diego Mínguez (Environment Artist)
– Daniel García (Environment Artist)
– Imanol Delgado (Shader Artist)
– Carlos NCT (Concept Artist)
The scene was built, following a pretty standard AAA game-art pipeline, however we also had to keep in mind that the technical features that we needed to show off, were actually common problems in real-time rendering in PBR, that we needed to present, and the engineers needed to solve or improve these problems in the demo.
As you would with creating such an environment, we started off with an approved concept that was made by our concept artist at elite3d, which was then turned into a simple blockout of primitive shapes to get a sense of scale, proportions and volume.
After we had an approved blockout based on the concept, part of the team started to focus on creating a modular system for the buildings.
Even though most buildings were different from each other, there were plenty of parts that could be reused, so it made sense to modularise them.
Since this demo did have a frame target, we had to keep object and shading draw calls in mind, however visual fidelity was of very high importance for the Lumberyard team.
Tip: Using a modular approach to build your environments is always good, however make sure the modular system that you are designing caters for all your needs going forward in the very early stages of your project, before committing to details. Testing out all combinations and possible usages in the initial stages of your project can save you a lot of headaches later.
Since the Lumberyard team wanted to show these technical features off in real-time, multiple camera angles and tracks were also blocked in using the in-engine feature called trackview, which can import cameras from any DCC package as FBX, then cameras can be refined within the editor to create camera tracks that (amongst a plethora of other usages, like cinematics or cutscenes), could be used as a real-time demo to show off the before after of these technical features really nicely. Getting these tracks in early was vital for the final positioning of the artwork and establishing the shots.
Tip: Amazon Lumberyard lends itself to be very much a real-time “What you see is what you get” type of workflow. Once you have the basic blockout of the scene in the editor, the engine lends itself for quick iterations, and will allow you to quickly iterate on your establishing shots, whether stills or complete fly-throughs or cinematic compositions. By adding the cameras to the scene in the initial stages of the project, we were able to quickly amend needed changes on the artwork and lighting, without losing precious production time
The assets that were made to complement the buildings, like for instance drainpipes, chimneys and antennas, could be shaded with the same materials as the buildings, since we divided this master material up in a variety of base materials, like different stone types, different brick types, plastics, different metals etc., all with their own blend- and dirt-/grime- layers. Most of these materials were fully tintable in the diffuse channel aswell, so we could get a lot of mileage out of reusing the same texture sets.
When creating the modular buildings, we made use of custom vertex normals, a workflow that has been around in the gaming industry for quite some time now, however getting increasingly more popular in the last couple of years.
This meant we could make use of a library of tiling materials and textures for the building sets aswell as the building props, which could be shared throughout the scene, and would result in more or less a fixed cost for all the building shaders.
We also made use of blend shaders, aswell as parallax occlusion, features in Lumberyard that are invaluable to get to a convincing result in environment art nowadays.
Tip: Planning your shader usage for a runtime environment is vital. Always reuse as many things as possible. Setting up a master shader helped us enormously in controlling consistency and allowed us to push general visual changes very quickly.
For the remaining props, we had a more conventional workflow, where most of the props were made with a high to low-poly workflow and were then baked down and shaded/textured within Substance Painter and /or Photoshop.
One of the lovely features in Lumberyard, is the Substance plugin, which makes it possible to jump directly from Substance Painter to Lumberyard, which makes shading iterations really quick.
We used Substance Designer, and Substance Painter extensively for the scene.
The materials in the scene are made with several techniques. Both photogrammetry and procedural techniques were used. The scene was based in Paris, and in this case, we wanted a nice mix between realistic materials and something more stylised/softer looking.
Therefore, we decided to keep most of the scan made materials on ground level, and let the slightly simpler and less noisy looking materials fill the rest of the scene, that way, the scene would be easier to read and we could let the lighting do the rest.
Lumberyard is an engine that really works along the “what you see is what you get” principle. Most features can be changed on runtime, directly in the viewport without waiting times.
The artist tools that are delivered with the engine, can be easily installed with a click of a button.
This is a huge benefit when it comes to lighting a scene like this.
When we had an approved blockout in the engine, and the team could start working on the modular sets for the buildings, and start working their way through an extensive list of assets and all the needed texture sets, we could already block in the basic lighting pass, thanks to Lumberyard’s quick and intuitive lighting system.
We started off by creating a quick 24-hour day/night cycle, to get a base lighting/mood in, aswell as setting up the basic cubemaps for the scene.
It was then up to Lumberyard’s Art-Director to pick the time of day, where they would like to show the scene. This turned out to be two different times, since we also wanted to show the scene in night lighting, to be able to show improvements in real-time reflections and specular anti-aliasing.
We agreed on two specific times of day to present the scene in, and then started to block in lights, to be able to define where light points would go, where reflections needed to appear etc.
Tip: Getting your initial light pass in as soon as possible is always advisable. In general, you want your first light pass established as soon as possible. From there both the art and the lighting department can work towards the desired result.
After the first light pass, and while the art team was continuing the asset creation, some particle effects were added, like rain, leaves blowing around, lights swaying, aswell as awnings moving in the wind.
Once the basic lighting principles where in place, we could then easily create the night version of the scene, since we had the day night cycle ready, cubemaps and lighting were tailormade specifically for each time of day off course, however we could switch the scene to night-time very easily, thanks to a bit of scripting, which was done with Lumberyard’s in engine Script Canvas and layer switching.
Things like lens flares and fog were added aswell, to give the scene some realism.
As the scene progressed further and further, we regularly sent builds over. We also had our weekly meetings, so all stakeholders involved could keep track of the overall production, and make sure everybody involved could raise potential issues, or needed changes to accommodate certain features.
Once all stakeholders were satisfied with all the basics in place, and all the needed features implemented and working, the art team could start polishing the scene, and mainly focus on making it look pretty. To make sure the scene looked correctly on the show floor, aswell as the large HDR screen, Jonathan tweaked the lighting to the Art Director’s needs.
For both the sequences as the render stills, some post effects were used. For instance, colour grading, slight HDR vignetting, slight motion blur and a slight amount of grain were added to achieve the look the Art Director was happy with.