 Hey there, my name is Evgeny and I'm a tech art lead at CrazyPanda, which is a mobile game development oriented company And today I'd like to tell you about tech art and our experience in dealing with it Specific society, I'd like to start with why I am here and what I want to accomplish from this talk First and foremost, I'd like to promote tech art in general Because while it is gaining popularity as more and more companies Integrate tech art and tech artists into their workflow still a lot of people see it as a gimmick or a tool for AAA only and I'd like to do my small part by Showing you that that is not the case Second I'd like to promote blender as a tech art tool and to show you that it has a lot to offer and Is a great tool to start your tech art journey Finally, I'd like to highlight blender's opportunity to grow among 3d artists Especially which as I'll show you later is great for tech artists like me so Here's what you have to know about me. I'm a tech art lead at CrazyPanda. I've spent last three years developing a massive online multiplayer real-time strategy mobile game called Stellar Age and Basically, I've done a lot on that project Because I've started there as a mere programmer and through the years progressed and developed I've developed several vital pipelines and Every place I went I tried to make myself obsolete That is a weird thing to say During that time I've had a lot of tools that I had to use Here are some of them. So you've got Unity. You've got blender You've got Gujini Marmoset tool bags substance designer and painter Resom UV Sprite UV creator Figma Google Sheets and that is just on the top of the list Point is that I've doubled in a lot of tools in a very Different from the usual way because you see there's like common line. There's Python there's like Lua and other languages and What I want to share here today with you is based on my spilled blood and tears from that time So that you don't have to So what do tech artists do and what is tech art all about? Sure the answer is pipelines and workflows Long answer is is a bit too long for this small presentation, but here's a bite of it so you've got Quality assessment By the way, I love lists. There's gonna be a lot of lists When I am nervous, I like to make a list about what I like about lists Quality assessment, which is the amount of polygons the texture size so that the art is consistent and pretty Increasing speed of art production and integration Then there are art optimizations art integration optimizations basically building a bridge between quarters coders and artists Which is extremely important and Very cruel job to do Shaders render pipelines custom geometry generation custom textures, which is mostly procedural VFX and stuff like that Some might argue that some of these professions like VFX and shader render pipelines They can be done by a different specialist like VFX artists, but a Technical artist due to his generalist nature can bring a lot to the table VFX artists usually doesn't understand shaders and shaders can make your effects just pow so With all of this said The key thing to understand about a tech artist is that it is all about Saving other people's time as well as your own You should try to let people Concentrate on the things that they want to achieve rather than the tedious processes of achieving it by understanding tools And stuff like that. So here are a few examples Wander a strike well just move the curve around and you got one Have a Photoshop sketch that you want to turn into a game level. Well, that's easy. Just press a button Need a city fast? Here are a few building generators for you to play around with need a complicated terrain with biomes with roads rivers water grass trees buildings cars well I Can do that You might think that your game or application doesn't require all of that grandeur, but I believe that you just don't know what you're missing because you can do pretty much anything and the key is that Anything that has a standardized input and a standardized output can be automated and How do you do it? Well tech artist script custom tools that help to mainstream the Pipelines and workflows basically excluding some people or letting them do their job and then pushing it forward and When saving time, it's very important to save your own time as well because it is just as important If not more considering that there are a lot less tech artists than 3d artists Yeah, so whenever possible, you should use shortcuts And by that I mean third-party applications Because if there is a tool in the market that does the job for you, then obviously you should use it At the same time using third-party applications come with a lot of limitations Here's another list like I said, I love them Some tools are not common. That means that people that might use your tool are not familiar with like Blender or Sprite UV or something like that Some tools are wrong version High Blender 2.8 that broke half of my add-ons Most tools require licenses and that means that you have to persuade your company into using them into buying licenses and Licenses are usually perceived. So if your company is big or your 3d artists are numerous Not numerous, but like there is a huge amount of them then that's gonna cost extra extra for your company and considering that there are indie licenses usually and Corporate licenses if you have if you work in a big company, then that's gonna be extra extra extra persuasion for you Yeah, then the IP documentation API documentation it can be like last time and Moreover you might happen to come To a stumble because of some unpredicted bug that's usually not you that's usually the bug and the problem with Most licensed software is that you can do very little about it You can do a bug report, but that is not always Gonna help you do your job open source in that matter is much better and Picking a wrong tool is a huge time waste But at the same time Every time you see a tool. It's a decision whether you use it or not. You do not have You usually do not have the luxury of knowing the outcome right away So here are some helpful rules that you might Use when picking your tools So first of all you should stick to tools people already using their workflows That is very important because if they haven't used it You're gonna have to explain them how to use it write a guideline at the very least or maybe even guide them through the Process by yourself, which is a huge time waste next is free and open source are your best friends because the chances of you meeting a bug that you can do nothing about are very slim and You don't have to persuade anyone. You can just use the tool right away If the choice is between saving a little time and using less tools always choose less tools because there's less Potential for problems that you cannot solve Always be on the prowl for new tools and techniques and conferences are great for that So blender conference is great. Then you've got a game developer conference. Then you've got seagraph all of those are amazing places to Quintus yourself with new tools and tricks and Finally whenever possible try out new tools and small home projects first because if you try to scale it right away You're gonna meet a hell of a lot of problems So This is a conference about blender, but I barely said anything about it. Let's fix it Blend it to the rescue. So what does blender has to offer to the tech art? One of the key things is its license because you can just download it and use it. You don't have to persuade anyone at your company You can even distribute blender along with your tool to ensure that it is the correct version Along with every plug-in required to which is morally dubious, but legally sound and Another great benefit is it's great API You have Python which is a great language, especially in terms of how much There is for Python Because you can attach Python modules that are already there third-party Python modules and extend the blender's functionality From inside your code, you can use almost every nook and cranny of blender including extending menus and creating custom operators There is also a great plug-in for visual studio code that gives you auto completion and You can learn the basics of API because blender outputs almost every action you do at the Python call in its console Then there's an awesome library of blender plugins all of which are open source which you can learn from and that is invaluable Also, there are custom shaders which can be amazing and help you do your job and While it's still unusual to see people using blender for work There is a huge community of enthusiasts that keeps getting bigger day by day Thanks to you The blender itself is open source, which means you can make basically anything out of it should you so desire There are even custom branches of blender out in the wild that you might find interesting and some of them Find their way to the main branch like for example, just recently there was a talk about the sculpting branch that I Was tracking down for a while The one major drawback that I find in blender is that in the industry at least where I'm from it's still not that Well used But that's changing fast And now back to miracles. I invite you to delve into one case from our life So our game Includes a decent amount of 2.5d sprites. These are basically flat 2d images That you can with shade of voodoo do real-time lighting upon as Well as some other need 3d things They are very tedious to make and take a lot of repetition and my not been work to finish This is the pipeline broken into stages so For starters, you've got a marmoset tool back scene where everything is set up You've got your 3d models your lights your materials And you have to render them piece by piece three different ways first of all You have to just render the picture then you have to render the normal so that you can do lighting later on and That's not world space normals that's screen space normal story about that and then finally you've got a mission so that you can animate the lights Animate the emission of the materials in the runtime in your game Then you have to pack those renders into atlases and create custom measures so that you Basically recreate the picture Finally, there's a VFX modification layer where you swizzle atlas channels for example are red and green for normals blue for roughness alpha for something else adding vertex color so that for example on our global map you have these Pirates that do the levitating and They are De synchronized the parts are de synchronized To do that We use vertex color in our shaders Then you have to create fragmented meshes so that you basically get your destruction for free correct pivots then finally you get to unity where you can when you should create your prefabs and Render them in the game engine so that the art director can finally make a decision whether this fits it or if it Well, or if you should make some changes to it Yeah, so all of those steps pretty much were done separately and manually That was a huge waste of time But not anymore since I've done an entire to my pipeline that automatically takes another director approved marmoset scene renders the meshes inside of it piece by piece into textures three different ways creates and fills assistant textures creates an emergent custom Meshes for those sprites with correctly sorting creates UVs and pucks all of the textures into appropriate atlases Mixes the atlas textures channels into game ready textures fills the vertex channels of meshes creates an auto distraction state by using Voronoi noise to split the mesh into big pieces that are then split into tiny pieces and even tinier ones with all Always correct hierarchies and pivots for auto animation All of that is sent to unity where prefabs are created seen automatically set up with the newly created prefabs screenshots videos taken Sends the message over email skype's like a telegram to the art director with attached screenshots for final decision making and Yeah, oops Well, at least in this process So before the Automatization to your artist would finish their work and I had to spend a lot of time basically Making those things into game ready assets so that the art director can make a decision I've already said the entire process two times. So I'd like to skip that tedious part Not only did that take a lot of time, but the results were pretty mediocre since they're done by hand and I'm and I am only human By the way, it could be rejected midway and sent back to these 3d artists to make some adjustments Which means that I had to redo the whole week of depressing work all over again Good days After the automatization now Suddenly the 3d artists can have complete control They are always in the loop as they get final feedback immediately even if it's not filing They quickly fix what's wrong and in a jiffy like with the press of a button. We get back to where they Where they are director said no, no, let's let's do this Basically they got a clone of me in the in a box that can in seconds do my work better than I could do in weeks Aside from pluses I've described this tool packs atlases like there's no tomorrow maximizing the texture space usage By a landslide creates all the required textures without a chance for human error and less but not least unlike me It's always available Aside yeah, this tool is already battle tested and while some parts and features of it remain as a to-do list For example, you have to send emails and messages by yourself. Unfortunately Yeah It does give all the benefits are described 3d artists worked directly with our director and I don't have to do a thing So in the end artists and quarters living together Mass hysteria some things went harder than I thought though So let's take a look at the pipeline one more time And break it down into third-party tools that could do the job required At the very input we get a hard limitation the scene is done in Marma set tool back. So that is what we're gonna have to use For creating atlases and measures out of images I found spy TV to which does its job quite well and has a common line support Which is always welcome Mixing textures can easily be done in Python for vertex colors fragmentation pivot manipulation and other mesh Post-processing blended as well. The rest is unity 3d specific. So unity 3d it is the messenger part is not that important So everything looks great now that we've got our tools and they seem to be able to do the job until it doesn't Most of the tools do their work as required Spy TV to has some issues with the pivots it outputs, but that can be fixed later in blender Blender loving it plus it can be included into the tool itself, which is awesome unity loving it Marma set though Not so much And let you show you let me show you some of my sorrows But before that for those of you unfamiliar with it, let me explain to you what Marma set tool back is So it's a tool for look development that a lot of the artists use due to its simple UX Basically you send your models there just set up the materials Pick the required shader pick the required HDRI put on some lights here and there and then you can export it straight to artstation and Export a package that you can then upload to Sketchfab That's where it wins It also has a surprisingly decent Python support along with custom deal SLS shader support That was a welcome side because without it I wouldn't be able to do my job Yeah, but there were some problems First issue. I've encountered our custom passes. So to do what I needed I needed to extract screen space normals and Emission passes emission passes. Well, they went rather well, but the normals well This is an article from 80 level where a An author the author Alexander explains how he Extracted the screen space normals. So it comes so you basically what you should do you should set up three lights and you should twinkle with the material settings and then add this curve and then finally hopefully you You get what you need By the way, the curve that you see there will will come to it later and you'll see that it is no coincidence Anyways, I've tried it The results were subpar and hard to implement via Python They required quite a lot of changes in material and lighting and I've given up before finishing a stable version of it. So What I did instead Was create custom shaders for both paths Screen space normals gave me still one hell over right Just in case let me clarify to you what screen space normals are So inside a normal map texture Most of the time you have a tangent space normals. These are dependent on the geometry normals When rendering things into flat sprites, you lose surface normals altogether So you can't just render and lit normal map and call it today What you should do instead is unwrap it and flatten it Marmoset does the unpacking of the normal map for custom shaders after the box But it only provides the sum space normals We'll get to that soon Usually to convert those to what you need you have out of the box matrices for such cases Examples are object to world view to world, etc Most of the 3d tools I've used have those for example in blender. You can do this transformation with one simple node Yeah, we'll get to that In Marmoset though, you have no such thing you can't even multiply a vector by a matrix as is in your GSL GLSL code that that's why it's esk at the end. Well to be frank While these are never mentioned There are Two interesting shader files containing those things those are utils which has methods for vector matrix multiplication So including it gives you that and custom extras has some matrices with funky names like you custom shading to world and you custom shading to model Yeah, custom shading more fun There is some documentation on that Comment it in the code transforms from shading to world space and the other one is from shading to model Still doesn't explain what shading is and we'll get to that as well As is after trial and error I created a view matrix by passing forward up and left camera object vectors from Python Multiplied normals by the resulting matrix and thus my world space normals were complete Although I thought after Importing the results the resulting atlases into the game engine I found issues with the resulting normals They seemed a little bit off Yeah, this is where we get back to that curve that the article author did There are different color spaces for image files when a file is saved to sRGB a gamma correction is applied to it Fun fact the inverse of gamma correction curve looks very similar to the one the article author came up with to make his world space Make his screen space normals look better could us to his sense of beauty Anyways, it's easy to fix when you know exactly the problem, but can be extremely frustrating when you do not It took me a while to figure out the culprit behind the inconsistencies Marmoset writes PNG files only in sRGB format hence the gamma correction is applied to the files automatically To save myself from the trouble of working with EXR files or finding that you can't export them Via Python from Marmoset. I've included an inverse gamma correction curve into the shader itself and all was well Well, until it wasn't turns out The world is a lie the in Marmoset you have this hierarchy the visible hierarchy where objects are rooted to something and Presumably it should be all rooted to the world, but instead it is rooted to an HDRI object that you can rotate in a Different menu all together So once again after a lot of trial and error, I finally pinpointed the problem and fixed it. It was rather easy to fix because of Those two wonderful files and custom shading apparently when you multiply your resulting normals Normals by the you custom shading to world mattress You have found the solution meanwhile in blender Might I remind you that all of this can be done with just one note one very very simple note that you can do like in several places Yeah, but That was not the end of my problems This is a huge issue that I still do not have not found a correct way to fix While when working with a batch of new art assets one of which you can see here I've noticed that I can't just disable objects to render them piece by piece because that would affect shadows and that would affect global Illumination and that would change the visuals so that that would be very problematic And On this object it became very obvious None of the easy fixes I came up with worked neither the hard ones. I've tried so far one of the obvious solutions for this would be baking complete Lighting and hey, what do you know? Marmoset tool back has a baker for that. I wish I could say victory by default, but Yeah, there's a bug So Turns out it doesn't care about normal maps when calculating light. So the results it produces were not what I Wanted out of it and unlike blender where hypothetically I could fix it by myself Without having to wait for the fix for the official fix Here I could not more over There's a topic on it on a very different side because Marmoset doesn't have an official forum and The post there Dates almost a year back. So my hopes of it being fixed very slim meanwhile in blender You can do it with just one toggle Granted it's cycles not Evie. I believe that Evie cannot do that but in blender in cycles you can do practically anything like turn off The solid rendering turn off the shadows turn of this turn of that because all of it is done through different passes So after all the said and done and we finally have our tool in the working order I've had a lot of the problems while dealing with Marmoset funky documentation weird features bugs every step of the way I saw how I could do this or that much easier has it been blender scenes but they weren't and While I am rooting for blender and I am rooting for blender and I wanted to become better and I wanted to be blender scenes But I see how that was not the case and how it couldn't have been It has everything to do with the UX of the tools themselves and that's what I want to concentrate the rest of my talk Marmoset in my humble opinion has a much simpler and user-friendly interface when it comes to look development First of all, I'd like to direct your attention towards HDRI lightning In Marmoset adding HDRI based lightning is extremely intuitive You easily set up an environment texture from one of the built-ins define simple image-based lights to further customize the scene easily correct brightness of HDRI image-based lights and While not perfect. I find it to be a big step up in terms of usability against blender's environment texture setup and especially lights Then you've got shaders and while I love the node structure of blender shaders Marmoset allows to customize its principle shader quite a bit The shader is split into categories for each category. You have several choices Do you want a simple diffuse a Lambert or Dota diffuse for your diffusion? Do you want a Dota specular specular or metalness for your reflectivity, etc? These are very intuitive for people especially for artists and To get a good surface shader going for an artist in blender. Well, that takes a lot of guts Also artstation and sketchfab integration. Well, blender does work To do that easier. I believe that this is a good place to create a plugin to just mainstream your renders into to artstation or to Maybe even YouTube knows and then there's lighting and lighting in blender is quite complicated In blender's EV light object has no modifiable attenuation curve that I know of although I did find some ways to fake it but The control on that is rather lackluster Also the lights brightness power inversely depends on its size radius and it's a rather weird side when you know you increase The radius of the light and suddenly it becomes dimmer rather than well You expect it to be brighter because it gets closer to the object that it's supposed to highlight Those are the things that my colleagues found weird and Summing things up Tech art is awesome. A good tech artist can make your five 3d artists produce more content than fifty 3d artists would Blender is a great tool for doubling in tech art due to its free and open-source nature With a great Python support along with a good coding environment and lots of examples to learn from Blender is already a great tool for a lot of people working different jobs in very different industries 3d modeling animating rendering Look depth scripting motion design movies VFX and much more in it I love that blender is gaining momentum and I want to help it grow One such improvement is EV because it allows blender to compete as a look depth and portfolio tool due to its like You see what you see is what you get nature and Marmoset is extremely popular and I believe that if blender were to add an entire different workspace for just simple lighting and simple shading that would Provide the starting 3d artists with a better way to engage with the software and The tool that people use at home is the tool that they will eventually use at work. Yeah, I miss that So One of the key pros that I find in blender is it's diverse community Because you don't just have 3d artists you have basically everyone including coders that can create plugins and can even create Custom branches that then get into the main branch. So basically blender is what we make it to be so you have all the power to do it even better and there are a lot of Examples that I can give that just made I Enjoy vanilla blender, but there are some plugins that I just see as Requirements for blender like there's box cutter that made my modeling much easier There's dickle ops that made it much easier like you can almost entirely skip the High poly face and just on the low poly create all the details that you want from it quite fast quite easy So community is I believe what drives blender and what should drive blender to its much brighter future Thank you for listening. I hope I've shown you an interesting topic to explore and some ideas on how blender could get even better and More common among the industry. Thank you