I always wanted to model a helicopter and chose the UH-60 because I like the design and there is a lot of excellent references and blueprints of this bird on the Internet.
Stage I. Modeling.
This stage was done in three parts:
- The Fuselage, Exhaust System, Tail, Windows, Doors
- The Main Rotor, Tail Rotor, Main Gear, Fixed Tailwheel
- Small Parts, Openings, Additional Details
All three parts could be done in a single 3D software solution, but I personally was interested to find the shortest and simplest way from modeling to texturing, because I am lazy. At the beginning of my career, I was a Fanatical Adherent of Subdivision Modeling Sect. Say “No” to triangles (even if it is ok), say “No” to “spiders” and “starfish”! I repeated all the tutorials by genius Peter Stammbach. But after a while, my views got somewhat modified.
- Part 1. The Fuselage, Exhaust System, Tail, Windows, Doors
The point is that you should not try to get the shape of the Helicopter and all the parts like doors, windows, etc. in one single mesh. I divided the Helicopter into three parts: the front part, the middle part, and the tail.
To model these basic shapes, I used MoI 3D. MoI is very powerful and easy to use. The basic shapes of the Helicopter were done pretty quickly and easily by using MoI CAD toolset.
Basic Shape Modeling in MoI
After the basic form of the fuselage, the projections of the windows and doors were finished, I exported these details to Maya. I love MoI because you can set up parameters when exporting to OBJ. In the Meshing Options, you can select N-Gons and then quickly turn exported details into Subdivision Surface with Maya. No triangles and spiders so far, guys!
Export OBJ From MoI to Maya
- Part 2. Main Rotor Hub, Tail Rotor, Main Gear, Fixed Tailwheel
I went through a lot of references to get the idea of how to make the Main Rotor Hub and Tail Rotor. To collect my references in one place, I use PureRef which is a very useful app. Seriously, it has a lot of cool features like transparent mode, alignrrange, etc.
To make Main Rotor Hub, Tail Rotor, Main Gear, and Fixed Tailwheel I used Fusion 360.
I often use this app to create complex mechanical details for two reasons. Firstly, I do not need to think about the grid (hello, triangles). Secondly, I can quickly make any tweaks even if the model is already finished, because Fusion 360 has a history of all the operations made in the progress.
Important Note: I do not export final parts from Fusion 360 directly to Maya. Why? I’ll tell you about it later.
Modeling with Fusion 360. Main Rotor.
- Part 3. Small Details, Openings, Additional Details
In the final modeling stage, I made all the small parts and openings and prepared the Main Rotor, Tail Rotor, Front Gear, and Fixed Tailwheel for import to Maya.
For example, take a look at Recontoured Forward Fuselage which has openings.
Recontoured Forward Fuselage. Openings
To avoid spending time on the Subdivision Surface Modeling and at the same time get a perfectly clean surface with openings, fillets, and chamfers, I exported the Subdivision Surface from Maya to Fusion 360. Then, I converted it to NURBS and made all the openings, fillets, chamfers, and additional details.
Export Subdivision Surface from Maya to Fusion 360
- Exporting Details from CAD to Maya
Exported Fusion 360 STL files work pretty good in Maya, but sometimes the surfaces do not look perfect. You have to set up Soften/Harden Edges to get a clean surface. Also, the exported details have no UV. That’s where MoI comes in, again.
I exported all the CAD details to STEP, then opened it with MoI and saved it in the OBJ format. After exporting the details from MoI to Maya, the surface looks perfect!
The difference between Fusion 360 STL and MoI OBJ in Maya.
Another important reason why I exported CAD details to MoI is fully Automated UV unwrapping algorithm. When exporting details to OBJ, MoI automatically makes UV.
After minor tweaks in Maya, UVs worked fine for texturing in Substance Painter. Since this model was not made for real production, I was more than satisfied with the result. Just imagine how long it would take to prepare and unwrap all those complicated triangulated details! I spent just a couple of hours on the UV unwrapping of all the details.
Fully Automated UV unwrapping algorithm in MoI
Summarizing the first stage, here’re the results:
- Great time savings when modeling complex surfaces;
- Huge time savings with UV unwrapping
- Saving time spent on model optimization. When exporting from MoI to Maya, I reduced the quantity of triangles more than twice.
The pipeline looks like this:
In conclusion, I got a complicated 3D model ready for texturing and real-time rendering in UE4 which was good enough for my goals.
Stage II. Texturing.
My model has a huge number of rivets. To save time, I baked two custom rivets and exported the Normal maps to Substance Painter.
Then I just set up my brush and quickly painted rivets right on the Fuselage’s Normal map. Easy-peasy.
To control the quality of the textures, I created a project in Unreal Engine 4. I hope that Algorithmic will make “a bridge” that will work with the new version of Unreal Engine 4 to change the textures on the fly.
Stage III. Unreal Engine 4 Real-Time Rendering
In the final stage of the project, I created a very simple runway, then set up the scene in Unreal Engine 4 and made decals in a free vector app Inkscape. Next, I imported all the assets to Unreal Engine 4.
In Unreal Engine 4, I made six master shaders:
- (#1) Sky Material with HDR map for EditorSkySphere
- (#2) Glass Shader with HDR to get custom reflections
- (#3) Shader for Helicopter details
- (#4) Multi-Layered Shader for the runway (Special thanks to Kurt Kupser and CGMA for the amazing class Texturing and Shading for Games!)
- (#5) Shader for Decals
In my career, there were projects where I had to bake the light in UE4. The baked light looks awesome but was interested to try to make a scene using Dynamic Light only.
I used the Directional Light and Skylight with Specified Cubemap. To get more flexible reflections on the glass, I used another HDR map assigned via the Glass Shader.
For the background, I made a shader for EditorSkySphere. In this way, I was able to rotate the Background image in the direction I wanted.
For soft lighting, I used a skylight with HDR. Also, I added Volumetric Fog.
In the post-production stage, I’ve set parameters of PostProcessVolume such as Bloom, Exposure, Chromatic Aberration, Dirt Mask, Lens Flares, Vignette, Color Grading, Post Process Material, etc.
Also, I made a custom LUT. It is very easy to create LUT in Photoshop or use any ready-made LUTs. I like Chameleon Post Process by SumFX. It has a lot of premade LUTs and a bunch of essential settings such as Letterboxing and Anamorphic Lens Flares.
To get good-looking close-ups, I used Cinematic Camera with Manual Focus Distance. Also, I used Post Production material (Shader #6) to get additional sharpness.
I especially love UE4 and Real-Time rendering because it is super flexible. Once the scene had been finished, I get as many images as I want with different parameters of the camera and lighting.
To improve the anti-aliasing I increase the resolution twice when saving images. Then, I reduce the image size in Photoshop to a standard resolution. I did no post-production of the final images in Photoshop, except for the image size.
Summarizing all the steps, the pipeline looks like this:
I like to use this method for rapid prototyping and presentations in Unreal Engine 4.
Of course, this model is not created for real production and some of the things might be improved. For example, baked light would allow you to get great contacted shadows and make the render even more realistic.
But taking into account how fast Epic is moving forward, I hope that Ray Tracing technology would provide high-quality contact shadows and a photorealistic render without the need for extra work with Light Maps.
I hope this article was useful!