Vasily Vlasov talked about his experience of working in Unigine and real-time engines in general, their advantages and challenges.
Hello! My name is Vasily Vlasov (nickname SOULFIBER), I am a generalist designer, a computer graphics teacher, and a freelancer. I do everything related to 2D and 3D graphics - graphic design, corporate identity, logos, business cards, interiors, exteriors, websites, animations, promos, etc. I come from Moldova but have been living in Russia for over 7 years.
I began to study graphics in 2002. I still remember how, after watching the Jurassic Park movie, someone told me that some elements were made in CG and I realized that "this was it", something that I would do for the rest of my life. It was hard: the Internet at that time was not yet high-speed, there was no Youtube and information could only be found in books which cost a lot of money. My first software for learning was 3ds Max 6 and Maya 3.0. Slowly, with the help of books, perseverance, and a small online community, I began to master the basics of 3D.
By the beginning of my studies at the Slavonic University of the Republic of Moldova, I already knew 3D quite well, and I had even been teaching architects, designers, and programmers for 2 years while getting my master's degree. After that, I decided to move to Russia (St. Petersburg). Here, I worked in the Art Mirada Viva LLC design studio, as a web designer at the beginning and as a general designer at the end, before the company closed. After that I went to Vladivostok and there I had been teaching computer graphics in 2 schools for another 4 years - interiors, exteriors, graphic design, 2D animation, plus I also worked as a freelancer making websites. But in my free time, I always continued to develop my skills in 3D, because I love it the most. You can say that it's my whole life. I do not regret that I have chosen this profession and direction since creative people have only one limitation — their imagination. Apart from that, you can create your own world — and it captivates me.
Specifics of Working in Real-Time Engines
The principle of almost any Real-Time engine is that you get what you see! You can see all the effects more or less at once. The most interesting thing is that you can always change the settings from high quality to low and only slightly lose the quality of the picture, but gain FPS (frame per second). I usually do this when I work on a complex scene, to make the process easier. For any 3D artist, when going from high-poly to low-poly graphics, it is important to keep track of the FPS! If, when loading a heavy object, FPS drops drastically, then you need to optimize it first and then start importing. As a rule, many objects from my scenes have 3-10 million polygons at the beginning, and after optimization from 15,000 to 500,000.
Another moment is cloning an object. If the scene in the background has repeated objects, it is better to clone them instead of creating new ones, it saves lots of time. And, of course, use LODs (level of details) and Impostors to simplify very heavy scenes.
And the third heavy parameter is lighting and shadows. Even with simplified algorithms, lighting requires a lot of resources, that is why I try to use one solid filling instead of point light sources to save a bit. Also, you should avoid using dynamic lighting, it is the most resource-intensive kind of lighting because it is rendered in Real-Time.
In addition to that, one of the main characteristics of Real-Time is artifacts. Of course, everyone wants to get the smoothest picture possible with fewer SS-artifacts (screen space), especially with reflections. The era of denoisers solved some of the problems with noise, but unfortunately, sometimes with complex material and lighting settings, noise is still there. You need to be prepared for this, too.
My main advice for all new Real-Time specialists, especially those who have used Octane, Redshift, V-ray, etc. for a long time, is to be prepared for the fact that you will have to get immersed in all the above aspects and learn how to get along and cope with them. In general, I will say that the Real-Time segment is pretty cool and will bring any artist to a new level; you will learn how to optimize scenes, adjust scenes faster even in offline renders, save on resources and time, and shift from offline to real-time. Many clients do not demand complete realism, but they want quick results and Real-Time is definitely the winner here. You can also make changes in front of the client and immediately show the result, thereby quickly solving problems and moving the project toward the completion.
In general, I liked the result of my first real-time project and realized that it was time to open those doors wider. For me, the main advantages of working with Real-Time engines are the following:
- You get what you see! I like that in comparison with offline renders, I immediately see materials and textures, reflections, how light hits the surface, post-processing. As a rule, the tests in ordinary 3D packages are lengthy, and here I can enjoy spending more time on creative moments instead of technical aspects.
- Easy to set up and use! Unigine has a very clean and neat interface. Minimum settings and maximum quality when compared with other engines.
- One of the priorities in choosing an engine for me is quality! Unigine has advanced technologies for rendering lighting and shadows and displaying materials. There are also cloud and water modules, which are also implemented at a high level. All these together with certain settings and post-processing can give a high-quality result.
- Real-Time! The real-time parameter itself shows high engine optimization, which means that physics engines, particles, clouds, water, and lighting do not require a lot of resources for rendering. But the most important parameter of course is geometry optimization. Unigine works well with heavy geometry.
- Procedural Approach! When working on scenes, my main lifesavers are SSBevel, SSDirt, and Triplanar mapping. These three modules allow you to texture objects without any problems in the shortest possible time and especially in large scenes. This is a time saver for those who want to create something large-scale in no time. Here's an example – I made the project Egypt for a Hackathon in 3 days, thanks to these 3 modules at the core:
Disadvantages of Real-Time CG and Unigine:
- Transition from high-poly 3D to low-poly! It takes time to learn this process, optimize the geometry, especially when you are working with 10-20 million polygons, bake textures and normals, and put all of this together in the engine. But overall, it pays off by not having a lot of lighting tests and material settings.
- The disadvantages of Unigine itself are the lack of some animation capabilities, ALEMBIC, USD, and VDB, and also a node material editor and visual programming. All this is just a matter of time since, with the new release, the developers are adding more and more new functionality to the program.
Testing Unigine and Other Engines
My acquaintance with Real-Time engines started with Unreal Engine. After watching impressive videos from talented designers, I started to wonder what could be done in such engines and at what cost. I had been dreaming for a long time about getting away from static pictures and starting to make animation, but offline renders, even on powerful computers, still take long to calculate, especially when it's 20-30 minutes of animations.
After considering everything, I decided to start looking at the Real-Time engines. I worked with Unreal for a whole month or two and then stopped. Unreal Engine is undoubtedly an excellent engine with a variety of functions and capabilities, but the reason why I personally did not stick with it was that it's overloaded and sluggish. You need to turn on a lot of things in different places and do a lot of unnecessary actions before you get the necessary result. In other words, simple actions are done in complex ways. The stability of the program is also not up to par and its weight is quite big. This, of course, is purely my subjective opinion.
I needed another solution to my problems, and so I began to look at other engines and their capabilities, among them — Lumion, Enscape, Unity, Godot, and Unigine. I installed Unigine previously, during the versions 2.1-2.2 or so when it was still exclusively paid for and you could only work with the trial version. I played with it for a day and then uninstalled the software. This was my first experience with it and something went wrong. Besides, I installed Unigine only for the sake of interest, since I did not have money to buy it and there were free alternatives. I liked Unity, but for some reason, a lot of things didn't work for me in it as intended, so it didn't work out either. Lumion is good, they have some kind of an unbelievable GI-algorithm that gives the quality of offline rendering, but literally within 1 minute. I have not seen anything better on the market yet. The problem is, Lumion has limited settings – it is rather tailored to architects and interior designers, and I needed a program with a lot of possibilities, a more versatile one.
I heard the news that Unigine was going to release a community version of the engine and after version 2.1 the software made a big step forward, so I decided to wait for the free version and give "us" a second chance. After the release, I immediately downloaded and started studying it for days. It was entertaining and fun. In just a week of studying the engine, I created this:
For creating 3D models and scenes that will be subsequently imported into Unigine, my main software solutions are Cinema 4D, Marmoset Toolbag, RisomUV, Clarrise IFX, Quadspinner Gaea, Quixel Megascans, SpeedTree, Quixel Mixer, DAZ Studio, Reallusion Iclone, Photoshop.
When I come up with an idea in my head, I don't waste time sketching and storyboarding – I just do it! However, for complex scenes, I first create a primitive version and then bring it to the final, high-quality result.
As a rule, my main software for modeling, texturing, animation, and creating complex scenes is Cinema 4D — a powerful, flexible, cross functional, easy to learn and use package that has everything you need to bring even the most creative ideas to life.
I try to keep away from modeling as much as possible, not because I'm a bad modeler or lazy, but because modeling is time-consuming, and I try to save time and spend more of it on the creative process. Sometimes it is impossible to avoid it though, and you have to redo or make something from scratch.
Work with Textures and Materials
One of the biggest challenges in the process for me is baking normal maps! In the process of studying Real-Time graphics, when I realized that high-poly models could not be used in the project since the FPS at that moment would drop to zero and I wanted to keep the details, I had to delve into baking normal maps. This is a difficult and time-consuming process, but necessary if you want to get the minimal difference in appearance between an optimized model and a high-poly one. For baking normal textures, I use Marmoset Toolbag, it is the best of its kind for creating this kind of textures and has a number of unique features that allow you to adjust normal maps.
Be sure to test and set the lighting and materials correctly! 80% of realism comes from the right lighting and proper material setup! I used to think that superrealism meant making the material just shiny, smooth, or glossy, but unfortunately, it does not. In real life, materials have inaccuracies, defects, asymmetries, dust, dirt, and scratches. Don't be lazy and tweak these maps too. I like that Unigine has dirt, which allows you to quickly and procedurally create and adjust such things; it works based on the Curvature effect:
You can also use the Z-Depth map to set up DOF in Nuke or After Effects, for example, or 3D-Fog!
The most difficult material for Real-Time is probably glass! The way it's correctly displayed without ray tracing is controversial. Unigine made a nice glass shader. At first, I had to study the settings, but when you understand what's what, it becomes much easier. Colored glass is even more problematic, but even this can be solved to some degree.
Lighting and Post-Process
Another challenge is DOF (Depth of field)! Real-Time DOF is not bad, but it has problems with image processing just like offline renders. Therefore, I export the Z-Depth pass from Unigine and then do post-processing and add DOF in Nuke. There, I also add other effects like Chromatic aberration.
It's important to remember about GI and lighting in general and to properly set them up, otherwise, the picture will become flat in a moment. Of course, adjust the settings wisely so that the FPS does not drop much. I remind you, this is real-time and everything is processed at once, in front of you, so you need to use resources smartly. By the way, another advantage of Unigine is that when setting up the GI, even of the highest-quality, the FPS does not drop much, which is quite important!
Another important thing, and maybe the most important one, is to always experiment! Do not be afraid to change and redo something in the scene, otherwise, you will never know if your image could have looked better with different settings. Here is an example of such a scene:
Nobody likes to wait, and neither do clients! The faster you complete the project, the faster you will get the payment and the more satisfied the client will be – and they will contact you again and again if, of course, the quality of work does not suffer from the speed. Real-Time capabilities of Unigine allow you to bypass these problems and, most importantly, make changes to the project very quickly. The key thing is that the versatility of the engine allows you to create projects in various design branches: interiors, exteriors, auto industry, VFX, advertising, motion graphics, etc.
Two main reasons why I decided to switch to Real-Time engines are saving time and creating animation. With the advent of RTX cards and ray tracing in Real-Time, beautiful shots are becoming a reality and the era of high-poly models processed in real-time is not far off, which means that it will be possible to create high-quality cinematic scenes!
A time has come when static doesn’t satisfy my needs anymore. I want movement, life in scenes, ANIMATIONS! Current offline GPU renderers, although fast, are still slow for rendering a large number of frames, with acceptable quality and no noise. More and more cartoons, videos and scenes are created in Real-Time engines — that's why I began to pay attention to them. I want to amaze the viewers not just with a picture, but with the whole story behind it.
I also got interested in the world of 3D games and creating content for them. I'm looking into this matter, but I will definitely take the time to learn how to do cool things in this field, too. The more new things you learn, the easier it gets to create things you are accustomed to, not to mention that you can do what you couldn't before! Develop yourself, move forward, try, experiment, gain experience and knowledge and nothing will stop you!