 Hello. Thanks. Let's start. Thanks for joining. I'm going to talk about GLTF asset creation in Blender, and not only in Blender. But first, just a few words about me, and my name is Julien Durour. I have multiple hats. I'm a pipeline TD for Airbus, Defence and Space. I'm also a rigor artist. I work, for example, for Didilly in Paris with Le Fais Speciale Studio, a film from Michel Slot, and for the Dordogne Game Trailer, for example. And I'm also the developer of the GLTF Importer-Exporter in Blender for Cordes Group. Just a few words about GLTF. I don't know how many people here are already using GLTF. Wow. Okay. So for people that don't know it already, GLTF is a royalty file format for efficient transmission and 3D send loadings. And GLTF is not an authoring format like you can find, for example, for USD, MaterialX, FBX, and so on. It's definitely a file format for the last mile to be able to efficiently display 3D. So we are in a mix of authoring tool, authoring format, viewer, and drawing. And of course, there is a lot of GLTF tools in the ecosystem. And now a GLTF file format is now an ISO standard. For you, GLTF should be as simple as clicking on GLTF exports. But unfortunately, it's not so easy because, you know, Blender is not a GLTF editor. So it can have some incompatibility between our Blender managed data and our GLTF managed it. But today we are in the classroom, so I'm not going to display lots of slides. I'm going to demo some features of the GLTF import-export inside Blender. I'm going to talk about some external useful tools that you can use, tools and resources. And then I'm going to show you some of the current developments in the Blender importer-exporter that will be available for 4.0 that should be released in a week and a half and for later release. And I will keep time for questions if you have some specific questions. So let's start directly inside Blender. Of course, there is a lot of things that can be imported-exported in GLTF files. And so not to circulate, we can manage some 3D data. Sorry, I'm going to close that. The first thing that I want to show you is that it's not only 3D data that we can export, but inside GLTF file you can export shape keys too. And not only baked shape keys, but you can have some shape key definition. So if I create some basic shape keys, for example, like this, it will be some very basic keys for one and for... Sorry, this one. Let's start with that. And when you export into a GLTF file, you will be able to export these shape keys and something that's sometimes not known that you can set the default value of your shape keys and it's something that will be exported in the GLTF file too. For example, if I export these simple case cases and I want to display it in an online viewer, for example, this one, it's a viewer based on 3GS, and you import it, you will be able to get the shape keys here and as you can see the value of the shape keys, the default value of the shape keys that you import, you export it inside the GLTF file. So it's something that you can use and works quite well. There is sometimes some limitation inside Blender that I didn't manage yet. For example, if you restrict the shape keys by some vertex group, currently it's not yet taken into account, but it should be able to manage it in a future release. And of course, we are able to manage, for example, the modifier. For example, if I get an array modifier and when you export, you are able here to apply the modifier before you export, so it will get all the value and exports this data. There is currently limitation in Blender. When you apply the modifier, you are not able to export the shape key at the same time. It's an API limitation in Blender, so currently there is no way to export both shape keys and modifiers. So about 3D, it's quite straightforward. Something that can be useful for people working with point cloud, for example. Inside GLTF, you can export loose edges and loose points. So for exporting point clouding can be useful. By default, it won't be exported, but you can activate it here, loose points and loose edges to be able to export 3D data that have no faces. Maybe the most difficult part to export there is two difficulties to export. It's the materials and the animation. And first, I'm going to talk maybe about the materials. In this case, GLTF uses a PBR model definition. So, fortunately, we are able to manage it quite straightforward using the principle BSDF nodes. So what you can see here is a new principle BSDF. Maybe you don't recognize it because it's the new principle BSDF that will be included in 4.0 version. And you can see that there is some panels here that you can expand or close. And maybe we currently are not able to manage all these inputs inside the principle BSDF, but most of them are managed. Maybe something that if you want to work with materials in Blender, so you have the documentation that lists all the stuff that are currently managed, but you can also use websites where you have lots of sample models. It will be listed in a slide later. And you can have lots of sample GLTF files with all the features that are supported in GLTF files. Something that you can do is to check if there is something particularly that you want to import or export. You can check if you have some example files that did it. And you can, for example, import it. So if I import this model, for example, the same. That's what I showed you just before. But this time with the materials. And let's get a great Android mountain app. So when you import GLTF file, you will be able to show all the stuff that are created in the shader graph. So of course, GLTF file are able to manage some base color map. So you only have to plug base color map here in the base color of the principle BSDF. But if there is no map, only the color will be exported. GLTF file formats manage both texture map and color factor. So if you want to use this factor, you can use this multiply nodes to be able to manage both texture and a particular factor here. Any of the textures that are used inside Blender can also have mapping nodes and a new map. This is something that can be exported from Blender to GLTF file for all the maps. So the PBR material inside GLTF using metallic rootness definition. So it's quite farward inside Blender because it's something that is supported by the principle BSDF file, principle BSDF nodes. So you can use metallic and rootness here. You can have a single texture that will be used for all this metallic and rootness value because we map the green to rootness and the blue to metallic. So if there is no map, of course, you can set a single value for your assets. Yes, it's in the standard of GLTF file. Yes, only one image you will generate during the export will map all the channel of your images into a single texture at exports. We merge your three maps into a single one. Yes, during the report if you have multiple. If you are not editing a GLTF file, the question was maybe I can repeat the question. The question was if I don't have a single map for metallic and rootness, but I have two different maps here. What's happened? So the answer is if you are doing something like that during the export, we will merge the channels of the metallic rootness. So for example, in this particular case for the metallic, we will create a single texture during export. So we will create a new texture that is not in the image list of Blender for now. And this new texture will keep the blue value of these images, will keep the green value of these images if it's another images, because you plug a color here directly in rootness value. So currently it's not supported, but in the 3.6 version. But it will be, I don't remember it, it's 4.0 or 4.1. Because it's a rootness, now the exporter will be able to see that it's a rootness. So we are going to not take the three color RGB here, but we are talking about the green because it's rootness. Yes. Procedural texture are not part of the GLTF specification, so we are not able to export it. But there is no automatic back. You have to back your texture before and then create this map. And there is already some back capabilities inside Blender, or some add-ons are doing it. So I didn't manage. I chose to not back during the export and only manage this texture already done. No, currently we don't have the capabilities to choose a resolution during export. It will choose the resolution of your texture for now. But I will show you after some external tools that can perform this task in a post-processing. Yes. The question was about PNG or GPEG export because during the GPEG compression there is some mix between the color channels. So during the export you have multiple options for the material and about the images you are able to choose how you want to export it. Automatic, we keep the texture you choose as there. So GPEG will stay GPEG, PNG will stay PNG, etc. But you can also decide to say, okay, I want to export all in GPEG format or it's a new feature in 4.0, you will be able to export with WebP format. And of course you can have an alpha. If you are using PNG, you can plug the alpha here if you have some transparency in your map. You can choose the IRR that you want to export and of course you can have a normal map. Same way you can choose your UV map for the normal map. You can change the strength if you want it to be exported in the GLTF file too. Subsurface is not yet available in GLTF specification. There is in progress work to be able to have an extension to export subsurface but it's not done yet. Specular data are not exported yet. No, it won't export yet. But the specular, we are not able to export specular quite straightforward. It is not the case in the current stable release because there is no specular tent that is the color here in the 3.6 version. It's not available in the old principle BSDF, so you are not able to manage it. And the tropic is not yet exported or imported. I'm on it. It should be able in 4.1 version. You can choose the transmission if you want it to be exported. Same for coats. We will be able to manage coats. The coats weight, the coats thickness, and the coat tent is not yet in the specification. You are not able to manage a sheen version. If I, for example, import another fry when you have a sheen, for example, you have a sheen here that can be exported, the sheen value, or sheen thickness, and sheen color. And same for emission, the file that I had just before had a color map for that. So as you can see, most of the principle BSDF value can be exported. Yes. Yes, you can change the strength of the emission. You can plug a color here and you can plug a strength if I remember correctly. And something that is not supported by the principle BSDF here is the occlusion map, because in Cycle or AVs, there is no occlusion map. They are automatically calculated during the rendering. So to manage the occlusion map, we manage it by creating an additional node where you can plug a texture that will be your occlusion map. It's a plug-in red color. So here we have an additional texture for the occlusion, but if you want, because the metallic and darkness are using the green and the blue, there is still the red channel to be available for the occlusion. So we are able to manage the occlusion this way by creating these nodes. So you have to enable it in the GLTF add-on because the importer is an add-on blender, even if it's enabled by default. And you can enable here the shader editor add-ons, and that way you will have in the output here, you will have the GLTF material outputs that will create automatically these nodes. And there is one feature that is not managed by principle BSDF, but you can import and export its volume feature. And so you will be able to manage it with another node, the volume attenuation nodes. So for example, we try to... Don't remember one file that will manage attenuation volume. Yeah, this way. You can have volume absorption nodes here where you can set the color and the density. And there is one additional feature that is not available in the volume attraction is the thickness of the mesh. It's something that we can add to these output nodes using the thickness socket here. So most of this shader graph works when you import and export, but there is, of course, some nodes that can be recognized. For example, if you put a ramp map, it's not something that part of the GLTF specification, so it won't be recognized during the export. So let's talk about animation, except if someone has a question about the shaders. Okay, don't hesitate to ask questions. Don't wait until the end of the presentation. So about animation, and just before animation, GLTF files are able to manage skinning and rigging. So, for example, we'll be able to manage to imports. These models, that is animated, and it's also, as you can see here, there is some rigging and skinning. So we are able to import it and to export it, and it will export all your bones. If you want, you can export only your deformation bones, and it will export your skinning too. So if you change the skinning, for example, it's something that can be imported and exported without any problem. And as you can see here, we can import and export animation, but there are some limitations. We are able to import and export, of course, object animation, location, rotation scale, and same for armatures. But the current way Blender manages animation is not exactly the same in GLTF file, because any action is linked to only one object, but in GLTF file, you can have an animation that is linked to multiple objects. So if you attempt the C-Brain talk yesterday about the next animation 2025 project, it's something that will change, because we will be able to export some animation that is linked to multiple objects. It's something that will be easier to manage during import and exports. So if I get some simple tests for animation, for example, how we manage animation when we export and export is something that is not well known and quite difficult to understand, because we found a way to be able to export animation and to merge animation from multiple different objects into a single GLTF animation. For that, we are using the NLA editor. So, for example, currently we have two different animations inside for this armature, a robot dance here and a robot death. So let's create some... I want to change the shape keys of the head for this animation. So, for example, we create a really simple animation that changes shape keys here. And if I export this file, you will be able to see that it exports the animation without any problem, but it exports three different animations, one for the dance, one for the death, and the third one for the shape key animation. But it's maybe not something that I want, because maybe I want to export only one animation for the death plus the shape keys. So it's something that we can do. It can be done. So we create here another... For example, for the dance, I will decide to create maybe another animation here. And if you want to merge animation from different objects, you are able to do it using the same name for the NLA track. So, for example, for this one, I decided to have the same name for the robot dance and the robot death. And if I'm doing that when you export, it will export only two animations. And as you can see, this animation plays both the armature animation and the shape key animation, and same for the other one. It's a little bit, maybe we can... Okay, you can see that the shape key changed here. So it's a trick, because there is no the same data modeling blender on JLTF file, but it works. And somewhere during the 4.x cycle, a new animation system will come in Blender where we will be able to manage different tracks from different objects into the same animation. So it will be more or less the same as in JLTF file. So we will be able to avoid this trick. Another feature that is not well known is about using material variants. For example, here, we have... Preview, for example. We have a shoe here with two different materials, and we are able to change the material here for this part of the shoe. And maybe we want to change this value too, but it's something that we can perform in JLTF file. And if you activate it in the preferences, you will be able to manage material variants. So a little demonstration about this. We can decide, for example, to have this version when we are using blue color, for example, like this. And I can decide that it's my first variant. And I can assign all this material into this variant. And I can decide to create another variant, Variants 2, when I change the color of the shoe and this color too, for example, red. And I can assign it to variants. And I can create a new variant here with, for example, this one for black. And I can assign it to variants. I can decide in the JLTF file that I maybe want to have the default assets this way, for example. And I can decide to assign this material to default value. And so now if you switch here, you are able to see your different variants automatically will change all the materials, all the slot of your materials. And when you export that, as you can see, for example, in this, you are able to see the default values that I set for the materials. And if I go, for example, with another online viewer, the Babylon GS1, you can see the default value too. But here you can see that we exported the variants too and you are able to manage it from the JLTF file. And it's quite useful for customization of objects, for example, for online shops or something like that. For pipelines, we are able to manage some custom data inside Blender. So if you want to export some custom data, you can use custom properties here when you can decide, okay, I want property to be gone with value 3, for example. And during exports, you can decide to include the custom properties here. And it will export your data as extra fields inside your JLTF file. So that's some things that can be used. And we are able to manage custom attributes too for your data. So, for example, I can create some, yeah, for example, color attributes using here. I'm going to close that. And some custom attributes can be created and it's part of the JLTF specification. There are some limitations because not all the types that are available in the attributes are managed inside the JLTF, for example, you can't have some string attribute in the JLTF, yes. No, not all custom properties can be animated. But that's something that can be changed. So for extra fields, you can do whatever you want in the JLTF file. So, yeah, in theory, yes, you can animate this field and linked to animation, this particular extra field with the animation, but it's not part of the exporter yet. But it should be in the 4.1 version. And about attributes, for example, I'm going to create some attributes. And this, inside JLTF, I didn't find a great way to perform that yet. Because, as you can see, there is a lot of attributes here that are automatically created by Blender, for example, the position, the selection. Even if they are not displayed, you can't find it inside the Blender data. So for any custom attributes inside JLTF, they are starting with an underscore. So for now, only the attributes, the custom attributes starting with an underscore will be exported. So if I create, for example, this test and trying to export, you can say, okay, I want to export custom attributes here. And you will be able to see that these attributes are managed here. And it's a link to Anastasia to some part of the binary file of the JLTF with all the data for all your vertex of your file. So, talk about shader, about animation. There is something that is sometimes not known is that you are able to... another way to be able to manage both shape keys and armature animation is currently we are able to manage any shape keys drivers that are drive by a bone from your armature. So a little demonstration. For example, I'm in the robot dance. I'm going to, for example, create a new bone here. And here, inside here, you can create a new driver, any deformation shape case, corrective shape case that is driven by the armature will be managed. So, for example, if I decide to create a driver that will change the shape keys when I move this bone, if I animate this bone when I export it, even if I didn't do the trick about the NLA trick name, when I export it, the exporter will automatically check if there is some driver that are driven by a bone of your armature and it will export both the animation of the shape key and the armature in the same animation, as you can see. So it's an automatic recognition of the driver. So it's quite useful for any character that can be exported. Sorry, I didn't catch that. Yes. Don't remember. I have to check. Maybe we can check. I don't know. Didn't. Don't remember. So maybe we can say, OK, this bone is not a deformation bone anymore and during the exports, I want to export only deformation bones. So export it. Oh, it's crash. Say. Thanks. Yeah. A live session is not a good live session if there is no crash. OK, I will manage it. Fix it hopefully before the release. Any other question? No, there's a lot of features. It can be quite boring to go inside all the stuff here. So I can't. I don't have any time yet. No, that's not part of the specification. So we can't change the visibility of the objects. OK, some people are using some trick to put the scale to zero or something like that, but yeah. No, currently in the specification, only a rotation translation scale can be animated and shape keys. But there is an extension that should be ratified soon where you will be able to animate, for example, texture transform map or any factors, for example, to animate opacity or something like that. And this, OK, don't do that at home. I will switch my branch during the demonstration because I'm working on it. So this, OK, it will wake up, please. It's on my external drive, so it's not a SSD. Come on. Yeah. So this extension is named Animation Pointer. And with this extension, of course, it will crash, I know. Maybe not. It's currently in development. It's not in the main branch yet. Pointer, OK, you are with this extension. Oh, no crash. You will be able to manage animation on other parts of the shader graph, for example, the texture transform here. We are able to manage the opacities, the volume extensions, the change of eye area. It's not part of Blender yet. It's currently in development. But as you can see, for example, here, it will be able to manage some animation here on the mapping nodes, and on metallic rockness, eye area, and volumes should have animation, yeah. But OK, this field will be, I mean, admittable when the extension will be released, but it's not yet done. I don't remember exactly what field you want to animate, but visibility, yeah. So maybe we will be able to manage it with the alpha value, because here you can change the visibility with the alpha value inside the glTF file. So I'm running out of time, so maybe I can talk a little bit about external tools that can be useful, the sample models, where you can find a lot of glTF files to be able to see how Blender imported, and so you can replicate it on your own models. There is an online glTF validator, so you only have to drag and drop your glTF file inside this validator, and if there is something inside the file that is not aligned with the specification, it will say it. And there is, for example, and some other tools that you can already have seen, that I use this to online viewer, for example, and there are some post-processing tools that you can use, for example, to change your resolution of your texture and to transform a binary glTF file into a separate file, something like that. You can do whatever you want or compress the texture online, and there is another project that is quite useful. You can retrieve all the sample models of the website, but you can drag and drop your own models, and this website is quite useful because you are able to check any extension. You can see all the animation, sorry, there is no animation here, but you can change any data and you can debug your exported file, for example, if you want to see the texture coordinate map or only the normal map and the geometry tangent, there is some occlusion. You can see directly on your model only the maps that you want, so this website can be quite useful. Of course, the mPage for the glTF Blender IO that is where you can report bugs, you can report bugs on the project, on Blender developer.blender.org. If you want to, anyway, I will check all the bugs from both sites and you can request a new feature. This is the mPage for the project, but any change on this project will be automatically replicated inside Blender the day after, so don't worry about that. What's new, really fast because I'm running out of time, for the 4.0 version, you will be able to manage WebP texture, you will be able to manage GPU Instancing extension. We changed the way we import rigging data to have a better rigging import-export run-trip for people that want to edit glTF file inside Blender without any modification on the rigging parts and you are now able to change the number of bones that you want for influence your skin data because before it was for influences or all influences and now we are able to manage it precisely it was requested by Godot Game Engine that manage 8 if I remember correctly because Godot Game Engine using this add-on exporter when you drag and drop any blend file into your Game Engine project it won't open Blender and get the data it will open Blender and use my add-on export to get the glTF data and you are going to manage Spark Assessor for shape keys to reduce the file size and of course I already told about that we are a better use of principle nodes because they change lots of things that are more aligned with glTF specification and there is a lot of other stuff that will come in 4.1 or later when ratify for example the animation pointer that I just show you and for example the Anisotropy extension I am working on animation export performance you are also able in 4.1 to remove the armature objects because it is something that does not exist in any other software because other software and glTF are using joints but there is no armature objects that are containing all the bones so when possible at export we will be able to remove these objects and lots of any other features that will be added and there is a lot of active development so there is lots of features that are added if you have any questions I also have to mention that we have a glTF user group meeting starting in alpha hour it is upstairs so don't hesitate to come you will be able to ask any questions that you want we will have a little slide to recap where the glTF where and go so don't hesitate to come and say hi and ask questions if you want that's it, thanks a lot