One Man Helicopter
Welcome everyone in the next episode of “One Man Helicopter“ for Unreal Engine 4. This is time of importing all parts from my beloved modeling software Blender – 3D to triple AAA Epic’s game engine. At this stage as I mentioned in the last post I am going to make manual unwrapping for each part with index UV0 and light maps with index UV1 to match to naming UE4 convention.
If the title brought you here because you are looking for advice on how to export an object from Blender 3D to Unreal Engine 4? If so, I invite you here. You’ll find advice about the good workflow between these two great software. For those who came here interested in the progress in the work on the personal ultralight helicopter, I invite you to the rest of this post.
This project going to be more detailed than I suspect and you need to be aware of consequence this is bringing with itself. First of all, more details is associated with a higher triangles amount. And full setup of ultralight personal helicopter P01R9-A currently contain equivalent in polycounts of 400.000 tris. This includes also the custom collisions. And besides making nice uvs I want to try reduce geometry with emphasis on areas not accessible, or difficult to spotify. The technique I am using in modeling process is medium polygonal modeling with respect to possible distance in game between player and the object. This allow me to chose density of the grid. In result we can reduce poly-count to low-poly and in the areas with the high visibility in game I want to see those details.
Anyway, this not mean high-poly, most of the time this is a simple one segment bevel. The magic of this technique comes with vertex normals calculation which makes illusion of more nicer bevel. Widely used in GTA, Star Citizen and many others games. It is super solution for hard surface objects. And our helicopter is perfect to try this out.
The bigger advantage of this technique is ability to modify more easier due to no need to bake from low to high poly. You don’t need even source file, all you need is export fbx from UE4 to Blender-3D. Select all, turn triangles to quads and model is ready to modify. The goal is to achieve same look in a game environment as we achieved in modeling software and we can achieve this with importing correctly our tangent spaces and with our custom vertex normal calculation to make Unreal Engine 4 to respect those. If you want to try out yourself you can see my export – import pipeline among with other tips.
Another issue that I would like to address is very complex materials system and this not mean it is sophisticated. OMH at current state has 3 prototypes and each has a number of parts and each one has individual material and textures. In the result full setup of single seater helicopter has too many materials what influence the performance. With this update I want to introduce new materials solution. This time all parts will share same materials. All together we end up with just few base materials. For example metal as a base material with material instance to create its variants like aluminium, cast, chrome, etc.
Second part of this introduction to new material solution which will come with this update is using double sided function. My decision is based on try to avoid creating inside walls, to fake material thickness especially when part is laying somewhere separate and you are able to see its inside. It’s not perfect solution for all scenario, but as far it’s working very nice. It is worth to point out that this option makes material more expensive, but because of low amount of materials with this function enabled we can easily get away from consequences and stay happy. I hope that soon I will be able to say more about this new solution.
Currently whole logic is in UE4 blueprints, and the goal was to stay with blueprints, but with new improvements I want to bring to “One Man Helicopter” the power of C++ to unlock some function which are difficult to achieve in BP. New personal flying unit P01R9-A is designed to withstand greater overloads, and perform best in low altitude, which should allow the pilot of this machine to perform acrobatic maneuvers as: full roll and pitch loop if need it.
In the present state if you try you will experience something what is called Gimbal Lock. For this reason logic at the moment is preventing you to go more than specific angle to avoid this gimbal lock. Which is working well in most scenarios but it won’t let you to do the full loop. And this not represent reality I want to achieve.
Solution to this often problem are Quaternions, however the way of implementation seems to be easier, and possible through C++ than BP. To be honest I feel more confident with blueprints than with cpp. But I asked myself why I am paying for those C++ courses? To be able to use it, right? And this situation need me to try work more harder under pressure to keep everything up to date. I have claimed to make racing one seater helicopter and I don’t want to take my words back.
Good thing about this, is once it is set, should be ease to maintain. This will be one C++ function library and I am going to support this solution. Another good side of this choice is performance , chunk of calculation will be handled in cpp.
I have some interesting ideas for this project to make it more real. You can treat below video as a little introduction to one of them. This feature “inspection” let you see through the engine shell to see working crankshaft, pistons, gears, etc. I think about do the same to transmission shaft, what you think? Please leave your ideas, comments, requirements for this project on our forum.
This is a little image gallery with screenshots from Unreal Engine 4 representing current state of work. Notice please that above statement may change and will expand more accordingly to progress in work. For some aspects is too early to speculate. But you can preview some of already imported parts. For the time being they are covered in base material, but it will be expanded in the near future.
Hit this Red Bell in the left bottom corner of your screen to stay up to date and always receive new content . Thank you!