Boeing or Airbus?
When I moved to London in 2008, Airbus was just starting to deliver the first orders of the Airbus A380.
I remember being lucky enough to work on the 3D interior visualisation of this aircraft for several airline companies.
In a few months, I knew everything about the cabin and it was funny being able to recognise the plane from just a few details.
Later, I had the pleasure to work on Boeing aircraft interiors. I can't remember if it was a 747-800 or a Boeing 777 but I clearly remember feeling privileged and excited working for airline companies.
I personally find aircraft interiors extremely photogenic. Although the cabin is narrow, it's an absolutely interesting subject to portray, experimenting with different lighting conditions, camera lenses and depth of field. Also, they tend to look very photorealistic!
Designers and CGI.
With this article, I would like to offer an insight on the process of creating a set of 3D images and a 360 panoramic VR to showcase the design of an aircraft interior. The model is vaguely inspired by the Airfrance 777. Most of the designers are already familiar with a 3D software, be it Autocad, Vectorworks, Maya or 3Ds Max. The web is full of tutorials about residential interiors and automotive renders. I couldn't find anything about aircrafts and I am sure you'll find this it an interesting topic. This article is not only for 3D artists. It's aimed at designers who wants to understand the process of creating the visuals and the benefits of visualising an idea before it is built. Arteconi CGI specialises in 3D Visualisation for the design industry and aircraft interior visualisation is one of the areas we focus our efforts on.
The reasons why a designer would rely on CGI are few: to illustrate the seating design, to create different colour and trim options, to make a lighting study , to analyse the space and ultimately to present their ideas to airline companies. CGI is the vehicle to communicate ideas and a great image is often worth more than 100 words. Images have an impact at an emotional level. They get engrained in the memory of the buyer so make sure to rely only on the best 3D Visualisation Studio.
A few nerdy considerations about the state of the market of rendering engines.
For this exercise, I have used 3ds Max, V-Ray, Corona Renderer and Photoshop. The images are rendered in Corona. I have used V-Ray to render few selection masks and to explain the process. The tutorial is software agnostic though. The same principle is easily achieved also in Maya, C4D or any other software of choice for the modelling. For rendering, you can rely on Corona, Vray, Arnold or any other progressive / biased / unbiased solution. They can give a very similar result. Recently I am in love with the quality of Corona renderer but I still find V-Ray irreplaceable at work where deadlines and quick fixes are imperative.
It's a very exciting moment for rendering engines. There are a few players in the market: Vray, Corona and Arnold just announced for 3ds max. I have been looking also at GPU rendering engines. V-Ray RT has gone a long way, offering now the light cache for secondary bounces and few more options that make it very close to the production renderer. I'm a hardcore V-Ray user and one of those that have tried to jump off the train few times attracted by some new rendering engine. For some reason or another, I have always gone back to V-ray. It's solid, stable and predictable. RT is replacing the standard V-Ray for me. I find its use very immediate and the combination of the light cache and the denoiser is a life saver like in Corona.
Ultimately I have been experimenting with Redshift and Fstorm renderer and I have been blown away by the speed of the first one and the quality of the second one. There's a lot of hype around Redshift and it's speed. I have checked the company website and I wasn't too impressed at first. The quality of the images rendered with it is nothing better than any other renderer. On top of that, I understand that it is a rendering engine targeted to production and not archviz or design. To make a long story short, thanks to its out of core architecture, I managed to render a completely noise free animation with soft shadows, brute force primary GI, glossy reflections and volumetric lights with an average 1 minute per frame. I'll dig into this further in the future but it looks very promising. It makes you feel your workstation is as powerful as a renderfarm.
Fstorm. This is the reason why I just bought 2x GTX 1080. I have seen on Facebook people posting some of the best archivz images so far. I went for it and tried it. It is amazing. The image quality is great. Everything is progressive, you can change resolution and it will keep updating the render. Lens effects included. So far I think it is the best I have tried for shading and lighting in real time. But then again, it is at a very early stage. A lot of features are not supported and I have personally experienced a few crashes. Not blaming the developer it might be my setup. The beautiful renders you see online are pretty simple scene. Easy to fit in the GPU memory and overall not too complex to calculate. Still, what I see from people using it are some of the most photorealistic interiors. Time permitting, in the next few months I would like to put on test the following rendering engines from an archviz and design point of view: Vray, Vray RT, Corona, Arnold, Redshift and Fstorm. Anyway, this will need an entirely new post so let's get back to our Boeing.
The process in a production environment.
There are two paths to go when a design firm commission the visualisation of an aircraft interior and both ways have its pros and cons.
Option A: The 3d model is provided by the client from the CAD software.
In this case, the work consists of cleaning the CAD model received, making it lighter and prepare it for the materials.
Often the CAD model is a conversion from NURBS surfaces. This mean that you will either receive a very dense triangulated mesh or you'll have to do the conversion internally deciding for the resolution of the model based on few considerations on quality and manageability of the model.
It's not rare that during the conversion some triangles are lost and you'll end up with few "holes" in the fuselage.
Often the case is to create a shell around the cabin to block any potential light leaks of the sun or skylight entering those holes.
Another time-consuming job is to make sure to have decent UVs wherever you need to apply a 2D map. You'll probably get away with it on the fuselage since it's often a matter of shading more than texturing. A box / planar mapping could be enough. Ultimately V-Ray offers the triplanar projection that can solve you quiet a lot of problems. I have not tried it yet and since we're using Corona it is not an option.
Most probably you would have to remodel the seatings since they will need decent mapping and details like stitches, folds and creases that are usually not present in the CAD model. Generally, they look stiff and boxy and since your client is most probably the designer of the seating you'll have to put some more effort into them.
Pros of receiving the model from CAD: The model is detailed and there's not much modelling involved.
Cons: Heavy Geometry. UVing. Whenever you have a problem with the geometry it's probably faster to remodel than fix. The 3D model could be hard to manage in the viewport and selecting different elements might not be straightforward.
Option B: Model it from scratch.
This is, of course, our favourite route and from our opinion the most elegant one.
The Pros: We can deconstruct the aircraft into few elements and keep the model very light. Using symmetry, instances and xref we'll be able to achieve great results still retaining control over the model and performances in the viewport that are vital to accomplish a good job. Also, we'll have deeper control on the texturing since we'll be able to create UVs along the 3D modeling process. In general, you're less exposed to surprises since you're in control of the entire scene from the beginning and you can keep on eye on polygon number, texturing issues and model elements according to your needs and complexity.
The downside is that the model won't be as detailed and accurate as the CAD data but most of the time it will be good enough. I am especially referring to the area where the fuselage tapers towards the nose of the aircraft, doors, emergency exits, hostess seats and bar areas. Everything could be modelled but I will put into account a few compromises in terms of level of detail to keep the budget reasonable.
In this article we'll go through this second option: 3D modeling the fuselage and assembling a section since it is the funniest route.
We'll then add a commercial 3D model of a seat bought from TurboSquid and proceed with lighting, shading and rendering.
Here we go!
References and other online resources.
The hardest task in this project was to find information about the cabin.
Blueprint.com this is the first place I have researched to find plans and elevations but unfortunately, there was nothing about our Boeing 777. It is a very popular website for automotive visualisation and vehicles in general. "You always want to start from blueprints when possible" were the words of my colleague and friend Wojciech Piwowarczyk when talking about modeling a car and for some reasons they still resonate into my head.
With a bit of luck, I found a cross section of the aircraft on Google. I have used this as a base to trace some lines that I have later extruded and transformed into a section of the fuselage. Also, I managed to find few more vital pieces of information on two forums: Cardatabase and Flyertalk. The dimension of the window is 27cm. x 38cm. and the section itself is 53 cm.
One of the most important aspect while creating a photorealistic image is to collect photo references. 3D Artists often acts on memory for their reference. I am one of those and I admit that it's easier to get lost or mislead by what you think it makes sense. Always rely on images for your 3D modeling, lighting and shading but also search for plans, elevations and blueprints of your subject before getting into any kind of detail.
Google Images is the place to start for photo references, alternatively, you can try Flickr and Pinterest or Getty Images and ShutterStock if you are ready to pay.
Another underestimated step is to get the volumes and masses right. You don't want to spend a few days modelling your seat just to later realise that it doesn't fit the fuselage. Block out the volumes based on as many info you can obtain and then move on to small details. It's always more painful to get backwards then do things correctly from the beginning.
Google is your best friend not only because of the search engine but also because of Sketch-up Warehouse. At least it used to be Google.
The 3d models you find there are usually low res but very often they are in scale. This means that you can use them as a reference for the proportion of your 3d model. Not to mention the fact that you can use them to populate scenes in the distance or as background elements that don't require a high level of detail.
Another thing to consider is momentum. Every project has a curve of excitement. After few days of looking at the same elements you won't have the spirit and inspiration that you had when you started, so, exploit the momentum and make sure that everything falls into place from the start so you won't feel like going backwards later on.
TurboSquid is the place to go when you need 3d models for your project. They have all kind of 3d models, either commercial or free. In this case, I bought the 3d model of the seating that I have later used and adapted to this aircraft from a 3D artist called Diesel_V.
The model I used is this one:
Once gathered all those info and material I have created a ContactSheet of the reference images in Photoshop.
The measurements, the section and the contact sheet have been constantly on my 2nd screen ready to compare my progress.
Modeling a section of the fuselage.
Looking at the pictures we can easily breakdown the fuselage into identical repeated sections. For practical reasons we'll make the lighting, aircon and luggage compartments to match the length of a double windows section. In reality, those modules are offset from the windows section and are used in modules to match the size of the seating but for this exercise, we'll make them the same length: 106 cm.
The first part I focused on was a single window panel. If you have any knowledge of poly-modeling you'll recognise how simple is the model. If you don't I warmly suggest you to pay a visit to Grant Warwick's website where you can find one of the best hard surface modeling course around. He will take you from zero to hero in no time. There's also a few free videos on his youtube channel.
The process is very easy and takes advantage of the symmetry modifier. I have traced a spline from the cross section and extruded it of 53 cm. making sure to have enough subdivision to proceed. After that, I have added a symmetry modifier and started to work only on half the model since the rest gets reflected on the other half. To create the window I have used the cut tool trying to follow the shape of the window. Then I have refined it moving vertices and chamfering extra details. To finish it I have created the double window with the symmetry modifier again and used a turbo smooth modifier on top to give more resolution to the mesh.
An important step was to create an external shell to protect the plane from light leaks. The sun light and skylight are very strong and the fuselage is always in a high contrast lighting condition. The extra panel is not visible from inside the aircraft since it is in line with the window but serves to avoid artefacts from the rendering engines. Being Vray and Corona biased solutions I have in past experienced that some splotches could enter the fuselage. The solution to that is to have a shelled fuselage, this is the reason for the extra external panel. To be completely honest I am not sure I would have had this problem with Corona but being the UHD Cache my biased option for secondary rays I preferred to play safe. Also, when I started the project I wasn't sure if it was going to be rendered in V-Ray or Corona.
After the double window panel was ready I proceeded adding details. The grid in the lower part is just a series splines with different bevel profiles and the window cover is a simple exercise of poly modeling.
Modelling the upper fuselage. Lighting, Aircon and Luggage Compartments.
Continuing on the fuselage, I have extruded few more splines from the cross section until I reached half of its profile. Again I have used the symmetry modifier to mirror the right side of the fuselage.
The details of the lighting and of the aircon are simple poly modeling exercises achieved using the cut / move / shell / chamfer / connect / turbo smooth tools.
Again there's a grid element modelled as the previous one, a series of lines with a bevel profile modifier for the grid and a different profile for its frame.
As you can see once a full section is ready I made sure that every area was protected from light leaks creating a shell all around the section.
Modifying the seating
The seating is a commercial model bought from Turbosquid.
The only modification I did to this model was to sculpt some folds on the headrest to make it look more organic. After that, I have created a version of it with three seats for the central row. Again this was easily achieved by using the symmetry modifier and then cleaning up some small geometry problem generated by the modifier.
Cloning the elements and adding the end walls and curtains
The next and very important step were to clone the section of the fuselage and the seating. Make sure that the sections are exactly 106 cm wide and clone them at this same exact distance to avoid problems with the light leaking in the geometry. So far, the model remains very light and easy to edit because everything is instanced. An alternative techniques could have been to use xref or V-Ray proxies but the scene is not too big and instances are more immediate than other options. The next step was to add a shelled plane for the carpet, the end walls, the curtains and the exit signs.
Again the modeling is extremely simple. The curtains are subdivided planes with a noise modifier and the exit signs no more than chamfered boxes.
Lighting and Shading in Corona
This is my favourite part of the job together with modeling. Lighting in Corona is natural and easy. There're no tricks involved.
Initially, I had the Corona Sun active but then I have decided to use only the skylight as the main light source.
I have used the Corona Sky in the environment and Corona Light portals on the window glass geometry. With Corona Light portal you have to make sure that the geometry is capping the hole perfectly. The easiest way was to select the borders of the windows in edit poly and create a cap. Then detach it from the window geometry and assign it the light portal material.
To light up the cabin I have added some Corona Lights set as a plane in correspondence of the window wash light and above the luggage compartments. Essentially I have cloned these same lights together with the fuselage. To keep things consistent I have researched the web on this type of lights and found out few info on kelvin temperature and intensity here: http://www.sela-light.com/lighting-refurbishment/
Also, I have used few IES spotlights in correspondence of the spotlight geometry. Again, I have just tried to keep the intensity real, I think around 400 lux.
I won't be digging into shading for two reasons.
The first one is that the materials are very simple so you won't learn anything new. Ronen Bekerman's blog is filled with excellent tutorials on the subject. Moreover, in this scene, I have just use diffuse colours and maps and plain reflections. Maybe a bump for the carpet, that's it.
The second is that the materials for the seating are a straight conversion from the V-Ray materials that were already in the commercial model so I have created very few materials: the fuselage, carpet, curtain and signals.
One tedious job was to give variation to the magazines and screens. I took the freedom to get few screengrabs of my favourite movies, I am sure you'll recognise some of them.
Rendering and Post Production
The beauty of Corona is that you don't have to fiddle with the render settings. You just accept the fact that it might take its time to render but you know in advance that is going to be a good render. Coming from V-Ray I was used to dedicate a good half a day to testing settings and lighting conditions, maybe more. Thanks to the freedom that Vray gives you can optimise the scenes to make it render very fast at the cost of quality. Corona doesn't get into compromises but surprisingly it's render times are very acceptable and often comparable to a good V-Ray render. Overall it's a matter of usability. I have tried a lot of rendering engines in past, Maxwell Render, Octane, Arnold, Fryrender, Mental Ray and only Corona has been able to compete with V-Ray in terms of quality / render times. Again I am leaving out the new generation of rendering engines because something good is definitely happening out there. Also, I would like to thank my colleague and friend Davide Chicco for suggesting me Corona Renderer, I admit I was sceptical about it a few years ago.
Render settings are default, just using the UHD cache as secondary rays. No other modification.
I have rendered exr files but used the frame buffer for tone mapping so the images still conserve a high dynamic range but they're not linear. I like the idea to have complete freedom in post but my ultimate goal is always to have a great render out of 3ds max. Also, I didn't render any extra passes. Overall I have doubled the exposure in the frame buffer, used a burn value of 0.5 and a contrast of 3 with a white balance of 5000 kelvin.
In Photoshop I have opened the renders in camera raw and colour corrected the values again but to be honest the images didn't need too much of it.
360° Panoramic View.
Everything is extremely easy in Corona and so is creating a panoramic view. Just make sure that the proportion of the image is 2:1. I have used 6000x3000 px but you can go higher to 8000x4000 px or 12000x6000 px. if you want to be able to zoom in without losing details.
I have used a Corona Camera Modifier to set the projection override to spherical. This is it, just hit render.
With the last version of Corona, you can render also in stereoscopic 3D and use it with Oculus Rift or in alternative use a smartphone supporting a VR headset or google cardboards.
Links & Resources
Grant Warwick hardsurface modeling course: http://masteringcgi.com.au/
Informations on the 777 fuselage: http://www.cardatabase.net/
Section of the 777 fuselage: www.flyertalk.com/
Sketch-up models 3dwarehouse.sketchup.com
3D models: www.turbosquid.com
Rendering Engine: www.corona-renderer.com