 Hello everyone, thank you for coming. It's great to be here. My name is Peter Gubin, this is Anton Sirvachev, and today we'd like to talk with you about Blender and GIF development. But first, let me tell you a little bit about us. We work at Trace Studio, where we create game content for golden titles, and then as an expert in 3D and 2D, we collaborate with studios like Infinity Ward for games, Wargaming, and Gaging Entertainment to create awesome games. So, I'd like to share with you some artwork by our artists at Trace. We create environment art, character art, as well as vehicles, weapons, and other surface stuff. But today we'd like to talk mainly about environment art. We won't be talking about animation, rigging, stuff like that. So, as you can see here, we make a lot of environment art. And today, we'll be talking about current states for Blender with a rival of 2.8, and Anton will be talking about intro to environment art. I will show you tips and tricks that will hopefully help you with your own game-ready art creation. Also, we'll be talking about how we use Blender and why we use it in our pipelines. And finally, we'll be talking about how Blender could be improved to make it even better in the future. So, let's... Anton will be talking about Curricidal Blender in game dev. Thank you. Thank you. So, you have already seen the slide after that. This is how I felt about the arrival of Blender 2.8. So, when Blender 2.8 arrived in an experimental branch, I was beginning to learn Blender with the intention of switching over to it completely. At that time, I was using other industry-standard software, both at home and at work, but I was really missing some software that would allow me to model with the same speed that Blender offers. So, what I really liked about Blender was its clean UI and powerful modifiers. So, those two things alone were already a big improvement over what I had to deal with on a daily basis. But what really sold me on to Blender was the new real-time rendering engine called Eevee. And this is a work by Daniel Baistat, if I remember it correctly. So, what Eevee allowed me to do was to preview my vertex normals, my surfaces, how they look in the viewport, how my textures look, how my material layers work, without actually exporting the asset into your game engine. So, in that sense, Blender gives you freedom because it removes that extra step and you save time by doing that. So, let me talk a little bit about Blender game development now. So, Blender is being used on big game projects right now, but I have to say that in terms of becoming a part of pipeline outside of simply modeling stuff, there are still some challenges. So, in-house tools remain oriented to industry standard software. And it is used for organizing scenes and also for animation and rigging. And that's all good. But there are also such third-party plugins like Havoc, which are not supporting Blender at the moment. And I think with how Blender 2.8 is progressing, this is going to change in the future. So, at the same time, I have to say that people new to Blender do not have to fear that they will not be able to use Blender at their workplace because Blender fits any modeling pipeline. So, why do we use, why our company uses Blender in AAA projects? Because Blender is efficient because it supports our modeling workflows. And from Boolean to Bevel Modifiers, it allows us to do our job in a very fast, very efficient, non-destructive, and very procedural way. And we very much like that. So, a little bit into, I'll talk about an introduction to creation of environment assets for video games. And, you know, real-time applications like that. So, current generation video game consoles have a fairly limited amount of texture memory. But at the same time, they can handle a lot of polygons on the screen at the same time. So, for you as an artist, this means that you have to get very creative with how you handle your UV mapping and texturing. And this is how getting creative with UV mapping actually feels like. What kind of texture size you should use, what kind of type of texture you should use. This is mainly decided by the size of your asset and also its importance and proximity to the player's point of view. So, in this graph, you'll see that small assets are uniquely textured. Medium assets are textured using trims and decals, while big assets use tellable textures and material layering. In reality, of course, this is not so clear-cut. And most of these techniques are used together in conjunction also with such supporting techniques as custom vertex normals, vertex color painting, material layering, and stuff like that. There are many, many, many techniques with which you can achieve a visually rich look for your real-time assets. So, unique texturing. Unique texturing is easy, very easy to implement, very easy to understand for newcomers. But at the same time, it allows for a lot of visual richness. But due to its unique nature and the fact that current generation systems have limited texture memory, they become pretty expensive. They can become pretty expensive. So, how do you mitigate some of this issue? How do you offset the cost of the unique textures? You can overlap or mirror some of its elements, but that's about it in how to fix that issue. So, next up, you need to make something medium-sized like, let's say, a fireplace. For this one, you will need to use trims. Also, unique texture. Yeah, so very unique, very rich. But for medium-sized assets, you need to use trims because you cannot use unique texturing on small assets. That would be very expensive. So, trims are basically, sorry, trims are basically textures that are tileable only in one direction, horizontal or vertical. And you can move these trims around just like that, sorry, yeah, just like that to give your asset a more interesting and exciting look. At the same time, it would be beneficial for you if you could include other elements into your trim texture into the same texture space, I should say, like unique elements, uniquely baked, uniquely textured. And also, elements like decals that you can mix using a second UV channel. So, as you can see, I'm mapping decals into the other material, into the material. And with that, I can achieve visual richness. So, okay, a third type of texture, tileable textures. For instance, you need to make a big asset like a building. For this one, you cannot use unique texturing, you cannot use trims. Well, you could, but that would be more trouble than it's worth. And since you are using tileable textures and you have to build something huge, you need to probably use several of those tileable materials. And you can, sorry, and you can mix these materials together using such techniques as bitmap masks, or as it is shown in the next screen, vertex color painting. So, as you can see, we mix the materials with red, green, blue, and other colors. And you can also take colors in between for smoother transitions. So, this gif is made by Peter. He's very good at this technique. He's very clever. He also mixed in masks for height maps so that, you know, the grout is shown below the actual paint. So, yeah, some more vertex color painting. And yet more vertex color painting. I hope you're not bored with that. Okay. So, why do I talk, speak so much about all of this texturing and UV mapping stuff? Simply because I want to stress how important UV mapping is. And, naturally, the tools that allow you to do that have to be very robust. I have to say that tools for UV mapping in Blender are lacking at the moment. And objectively speaking, other industry-standard software does this job so much better. So, how do we progress from here? How do we improve Blender? I think the best way would be to get inspired by example of father industry-standard software. And it has a lot of neat features. They, several software packages. First of all, signing and checking textual density by clicking the button. So, this one is really important because you do not want your textual density values across all of your assets to be random. You need to get them more or less uniform. And this would lead to a smoother player experience. Otherwise, some of your assets will have a very pixelated, very blurry look. And some others yet will have a very crisp and very texture-rich look. So, another second thing that I want to point out, what would be good to have in Blender is straightening UV shells. So, basically, you would use that a lot in environment assets for games because you will work a lot with trim textures. And you will need to have a very easy way to map your UV shells onto trim elements. And third thing I think would be good to have is an unfolding algorithm. So, other industry-standard software has good unfolding algorithms. And they allow you basically to remove stretching in your UV mapping. Blender has something like that, I know, but it doesn't work as well. And I think this algorithm has to improve. And I know what you will say, that all of this stuff can be mitigated by using third-party plugins, paid plugins, free plugins. But we really want Blender to be an ultimate 3D package. And we want it to, we want Vanilla Blender, Vanilla Blender to work out of the box the best way it could possibly do. And now, thank you. I'm done with that. Now, Peter is going to tell you more about modeling tips and tricks that we use at our work on a daily basis. Thanks. Thank you. I would like to show you some tips and tricks. And they are, I would like to point out that they are using core-blank functionality, so they don't require any third-party add-ons and stuff like that. First one is when I use decimation, I often use a bunch of vertex groups to mask the several decimation modifiers. And it's a great way to control different areas of decimation and it's procedural, so you have control over the result. So, as you can see here, I remove a lot of geometry from the edges by painting and then removing the unnecessary geometry there. Next one is a technique I use for organic modeling. And it's several modifiers such as solidify and subsurface. And it's a great way to model organic shapes. I try to work with simplest geometry as possible when I model stuff like this. And it allows me to make this stuff in a quick way. And you can use Boolean to do that. And, yeah, it's really powerful. So, now I would like to talk a little bit about new modifier features in 2.8. The first one is UV offset. It's important because when you use array and you get the overlapping UVs, you get the baking errors. And it's a great way to avoid that because you don't need to collapse modifier and move your UVs outside of zero to one space. So, the way it works is that you offset it by a margin of one and you get a goal. Mirror UV offset is the same feature for mirror. And, again, it's a great way to get cleaner bakes when working with mirror geometry. Data transfer modifier is really useful in specific cases. And it's rarely in a spotlight, but it can be really helpful and most useful data to transfer customers normal CVs and their color. And here, as you can see, I have issues due to the fact that I cut the cylinder in non-uniform and messy way resulting in better apology. And this happens a lot when you cut your geometry for secondary channel or stuff like that. And you can easily fix that by transferring normals from in this example, clean cylinder and you get correct shading. The triangulate modifier is great in 2.8 because it allows you now to triangulate on the end guns, which is great and which is even better because it preserves normals now. Why is preservation so important? Well, because you want to have your geometry shaded correctly when you triangulate it because if you rely on FBX exporter or stuff like that, basically standard exporters, you don't have a control over triangulation and you can get errors due to different triangulations and stuff like that. So as you can see here, I have triangulate modifier on the end of the stack and I get correct shading and I can be sure that I will get correct shading across different applications. Next one is Boolean modifier and it's great. It's being great but now it's even greater because it can work with bevel modifier which have custom works normals now and it's great because it's procedural and there is simply no other to do dynamic Booleans in such powerful and efficient way and it's very flexible. And stuff you may not know is that you can transfer the data from Boolean objects, any data such as vertex colors giving mapping stuff like that which will be handy later as you will see. Next one is custom works normals. Custom works normals is a way to affect your shading and it's been used in game dev for a while now but now we have a bunch of modifiers that do this procedurally and we don't need tools like Yavna and other tools and as you can see here we have average normals on the left and custom works normals on the right. So here's the first way to get custom works normals out of the box and bevel modifier now have option to harden normals it's basically a way to get procedural custom works normals with bevel. And second one is weighted normals modifier which is awesome because you have on top of having procedural custom works normals you have an option to preserve hard edges and also you can affect custom works normals shading by using weights. So here's an example of using custom works normals for making stuff here I have a rock which will have a lot of gradients on normal map where if I use it with average normals but I can use custom works normals and get flat surfaces and avoid a lot of shading on normal map and it's a great way to get cleaner bakes and one thing you should note is that your baker and your game engine should support the custom works normal. Here's an example of using a bunch of stuff I discussed before so here's a couple of booleans and bevel modifier with custom works normals and this subject is procedural it's great to have procedural bevels, real time bevels. So here's another example you have a bunch of booleans and you can see the only symbol here is it's mapped to second degree channel used by a source subject so it's a great way to transfer different UV maps like that and here's another example how you could achieve wall damage like that using that technique here I use one plane with solidify modifier and a bunch of UV channels. The wall damage is mapped to second channel and I even transfer vertex colors here from the boolean object so it's a great way to get such wall damage with ease of editing and you can copy this stuff over and you will get wall damage really easily. Next one is paneling which I use for one of my personal scenes it's basically again this plane and I can cut geometry easily and use solidify on the top and bevel to achieve these hard surfaces and this is a result. This map doesn't use any unique textures so here's another technique it's a variation of previous technique and here I basically curve the panels along the curve object and I use two instances one without curve modifier and one with and it's a great way to edit stuff like this. You can edit the object on the plane and preview the result right there so here's the result another useful technique is to use asset linking and it's a great way to mitigate the complexity of the scenes by separating objects into their own scenes and it helps a lot with dealing with such objects like windows or stuff like that because you have simple objects on the top in their separate scenes and you will propagate any update to the object here as you can see I use two blender scenes one is assembled from collections so no unique geometry there but I can easily edit separate objects and I will get the updates right there so great thing here is that I can use any modifiers objects and stuff like that in separate scenes and ignore them in main scene because I just link objects and later on you can return to your scene and bake stuff and it will update everywhere so in conclusion I would like to I would like to say that you should it's a great thing to invest your time into learning about modifiers and incorporate them into your daily routine because it saves a lot of time and it's procedural and it's great so thanks so let me briefly conclude it I would like to highlight what is great in Blender and what is not so great about Blender right now and how it could improve and how we could all benefit from that so first not so great UV mapping has to seriously improve to make a big statement in game development and current implementation of UV mapping module is probably 10 years old so it should change or at least be overhauled so second one is subdivision modelling we understand that the algorithm for subdivision has been improved and now it's of high quality you get higher quality results but at the same time we have lost in speed and what we have to do now is we switch on sub-diff modifier see what we are working with then we switch it off and then we model push polys, polygons, vertices, whatever and then we switch it back on to just to see what we have done to see the results this is sub-optimal I think this should also be improved you would like to have this kind of quality that we have now but with the same speed that we had before that would be pretty awesome third one, undo of course it really holds us back not always but sometimes in some scenes that are very complex it can hold us back we can mitigate this issue by separating the asset into several elements and then link them from different blend files but we would like to avoid that but that's about it for the shortcomings from our side now I have to say that despite all the shortcomings that I have discussed Blender is an excellent modelling tool we need to highlight some of its more awesome features so modifiers Blender Extra Special Subdiff, solidify, bevel boolean it's all the special sauce that makes Blender with this and I cannot imagine going back to what I had before I like this non-destructive very procedural way of working up until the very end when we export the asset to a game engine it's called Ivy, it has given us freedom missing that extra step as I have said before just to see what the hell you are doing very important and speed speed in terms of how fast the Blender starts up it takes seconds while industry standard software can take a minute or more to start and add up during the day especially if you load that standard industry software with a lot of plugins with a lot of in-house build tools and this makes your software unstable and then it crashes all the time you probably all know that so Blender starts in minutes and this really saves time and by saving time it saves money in the end we would like to share some resources they happen to be made by artists from our studio but that's a simple coincidence it's because we are the best, I'm joking and some of our contact details you can get in touch with us, tell us how awful and boring the presentation was or on the other hand maybe you liked it please, we would be very excited to hear your input and we very much appreciate your attention we hope that you all think that it has been somewhat useful for you maybe you would use some of the approaches that we have discussed here at your work, thank you