 Yes, I might miss the chat. Okay, so I click. Okay. Thank you Let's see are we live and I need to hello, where is this blender logo coming from? Can do like Swink that has been pressed. Yes, it has been pressed Yeah, we are live. Yay Hello everybody So everything seems to work. Let's just like yeah, okay, I think that's better Okay, so Welcome everybody to an experiment where we'll be working on some motion tracking feature Just to show how it works from my backstage type of a thing of developers kind of blender cloud but from development So one of the question was what is the swatch so Let's go to the blender Go to the blender. So there's our blender So basically Hey, actually hello to Sebastian Koenig Who made this? Who showed this thing so anyway, so the motion tracking swatch is this tiny widget in the t-panel which allows you to Position your track more accurately on the footage And the issue is this currently well more like limitation is that it only Visualize a single frame. So if you If you truck something Okay, that's enough for the experiments And then you say, okay, so this is my key frame. There's another key frame And I imagine it starts sliding You wouldn't know how to reposition it back just because you don't know like was it like a bit to this side a bit to this side so not seeing where exactly it was on the previous good-known location It's something not very useful. So one thing you can do is to visualize several swatches Like the one on the current frame the one previous frame Well more more like on the previous key frame and the next key frame and then it gives you more information Like where exactly you need to tweak it to be for the most accurate tracking And that's what we will try to implement today So we have about two hours time limit Because we don't want to collapse in the blender today and we'll see how far we can go. Maybe we'll implement it. Maybe we will fail dramatically implementing it also just interesting note This year will be 10 years anniversary of the motion tracking in London. Anyway, so let's go to the code and Start with something where we know like by slip dot Pooh Actually, oh yeah, yeah, yeah, no, no, I don't want no Go go away Don't want anything What What is volume plus plus? Oh? Hello the matter Yeah, I can also call this project as Like old and grumpy Sergey talks to the young Sergey What's wrong with volume tomato branch? Oh, you know the tomato branch. Yes. Those were the days Anyway, I forgot where the drawing code was because they did to go from the drawing code and figure out how that goes to the interface Okay, I still get me to get used to some of the Some of the ways how things work. Okay, so this is blender. So I did so worse the interested Template track, okay So anyway, so the idea is because I honestly do not remember the code So the idea is to go from the interface code and see how that talks to the motion tracker and whatnot for the actual picture and increasing font size Yes, good point Ah No This Tutu tutu tutu tutu Yeah, yeah, yeah there Oh man, can I set a font size? Yes. I did Think it's too big though I think we can work with that No, she man. That's too easy Also, there was some rendering artifacts in V in the VS code It's like it starts to interlace the lines and whatnot, and it's okay. I think that's... This way there is no aliasing between the lines. Beautiful, yes. Only speaking of... That's like the line height on the font size. The font size is 28. Anyway, so we have the template track. I see Brian, I know, but again, be my guest to fix it for the next stream so that the lines don't interlace. Fine, yes. Well, the only issue is that you wouldn't see the menus and stuff, but like, do you really need... You're not interested in that template track. Okay, so this is the code which is responsible for actual drunk on the widget. Let's see what's going on here. Okay. We found a typo. Yay. We made them more than we had to place. I think that applies, like, does the events... This one does. Hmm. Yeah, controlling. Excellent. Nice. Okay. Okay, so if it's disabled, the marker is disabled, and just the background. That's fine. Oh, okay. I'll hopefully it only... That happens once. Happen on every draw. Okay. Well, so the idea would be to have multiple scopes defined. Really need... Let's just try something, so then we can see better. Oops. It will be as incredible. See, you cannot even control plus. It's like, no. I've tried. It would be nice if we could see that the search menu is better, but... That's the wrong space. Yeah, yeah. The font is good. I just wanted to increase the interface. Yeah. Oh. Control plus doesn't work. It shows that warning. Why is it... What do you mean it's unable to write them? Oh, it's... It's broken. Anyway. It's not digress too much. No, Mike, it's... It's not the issue. The issue is that this... This pop-up, it just cannot do this. No, no. Just give up. No. Yeah, it used to work, Danny, but not here, because nothing works on your life. So the easiest, I think, is to have... Let's just try to get to them. Yeah, sad, but... What can we do? I think it's just easier to duplicate those, because then we have all those things for free. Yeah, it is for free as well. That worries me. There it is. I don't get anything. It's... It's just code. Trying to remember what's going on, and where all those bits are, and stuff like that. Okay. So let's try this. Yeah, this kind of replaced the single scope with three scopes. Hopefully it will just... Hopefully it can just reuse a lot of the interface, handling code, and like other, like all those glue logic and whatnot. Seems just like easier. Easiest now. We'll see how it all goes. Okay, so let's go and fix those warrings, because we did rename some of the variables. And usually what you do is just a quick prototype what you want to achieve, and then you make code nice and tidy. Right here. It doesn't look too nice. Exactly. Come on. I need to give some Russian accent to the comments. Otherwise, what's the fun? Give some personality to the code. Actually... Oops. Actually, this boy checks for the noopt. Yeah, it does check for the noopt. You can just do this. Also, let's make people happy. There is no utility. Come find it quickly. And we see it already somewhere. Yeah, we did. Here and here. Okay, so let's just move so this to do already, because it just makes our life easier. Oh, yeah. Something to... Some people love when files are called tiles. Much generic. Let's just do it in Clip of Teals. At least for now. Clip here defined. Yeah. And there is this. There is this nice toxicion group syntax, which I forgot how it looks like. Let me check the wiki real quick. Let me do this. This is straight from our code style wiki. Yeah, there is code style online. I usually just search in the URL bar of the browser wiki blender code style, and it just brings me right there. A lot of stuff... A lot of things like bracket placements and line warping and stuff like that. It's taken care of by the Clang format, some of the, like, styles related to how to organize sections and whatnot, so we still need to follow up manually. I'm not sure if I can send a link in the chat. Let's try and see what happens. I think some of the lines of code is not too bad. So that's that. And we've been... I think it was yes. Here. And so, so... No, I do not use the WIM plugin. It's just quite stock configuration of VS Code with some add-ons. It's like, that's the thing. Like, some time ago, we would actually go and we can install our Emacs and Configure and whatnot. But now this is just not just GIME Editor. It just works. Also, while we're on this... there was another to do somewhere. Let's switch here to do somewhere else. Oh, there. Yes. 90 seconds lag. There was some option related to the latency, which is default to some low latency, but then there's also lower latency, which I'm not sure what was default, and I'm not sure what that option is even doing. I didn't feel like I should try it. What was it called again? It kind of depends. Like, while I'm typing and which I'm not... Like, it's about the tool, like, while I'm typing and see something I'm not entirely happy with, I would keep going just to have, like, something working as early as possible, rather than trying to go and make every possible bit of code ideal. And if I see something, hey, this is not ideal, I would just, like, put it to do. And then it depends. Maybe you keep developing and then realize, well, actually, this piece of code needs to be fully rewritten or that something needs to be refactored or something, hey, it's actually quite simple to do and it totally fits into overall thing you are doing. And then you, like, go ahead and fix that to do as before you even commit. If it's something that goes deeper, like, hey, this is suboptimal, it's what we can have without big refactor, it's you just, like, leave that to do and then commit it. Like, some of the to-dos can be something, like, related to more optimization aspects, which is not that critical for general use. So those go in, like, upstream quite often, at least in the areas I'm working with, because it's quite hard to get everything, possibly, ultimately optimized. But it's important to always put the to-do so that you know, hey, this is something that needs attention rather than trying to have something which you think, hey, it needs to be re-done and then you don't mark it at all. Yeah, there's quite a lot of to-dos. Well, the open-subdiff-gpu, that's, like, the entire different story, like, when I was originally making it, it was absolutely not nice. It was quite hard to make it fit into the viewport drawing and whatnot, and it sounded more for the gpu module to take care of, because it's not really my area. And then the speed performance, I don't know, it's hard to see if it's even justifiable. I don't know. Anyway, so let's try and see if it compiles. Ah, it doesn't. I forgot, I forgot this thing. Oh, hey, Anton. It is a forest stream, yes. If there will be more streams, I don't know. It's an experiment. It goes well, then why not? If we fail miserably, then I don't think there will be more streams. So we'll see today. Okay, so the D, the D-capital, it's the alias in my BUSH settings and it's basically this compile in the debug mode. There is a D, there is R to compile in relays mode, and I don't know. When I was just starting developing, it seemed like a kind of nice idea, but now, I don't know, it goes into... Like, we can't just go to the build folder and just take Ninja. It doesn't take that much as well. Also alias, I'm not sure how I feel about them nowadays. It is a display at 1440p. No, that's not a default font. I used, I think it's called console classic or classic console and it's own just got the fonts from VGA BIOS and vectorized them in the TTF format. It's a kind of nostalgic. I made a mistake. Oh, hello. We're still failing. Let's actually make it a bit more visible for you guys. That's the struggle. You don't really need the details, but it's just the current struggle. Actually, scratch not. I think we can do this. I cannot make the terminal font bigger. I just need to trust me. Okay, because that's not... No, let's roll back to this thing. So compile again. See a lot of warnings and errors. That's exactly what I meant. Copy paste, paradise. Oh, the git integration. I think it's called git lens. It is called git lens. This is what allows you to see inline blames and some other information directly from the IDE. I think some modification because I think by default it tries to keep blame on top of every line and it just becomes quite hard to read. Okay. Oh, I forgot to implement it. What do you do? Okay, that's like your element to what we are doing. The confusing part which I don't understand. So let's close all those files. And let's hide this from the way. The confusing part is... So there is this console classical thing. It's called a classic console. So there is this guy, right? So we are back where we were from in the beginning of the stream. So there is this boy, right? Which is called from drawing code to update the scopes. Which gets all those things done. So why is it? Why is it is not forgetting the search box image buffer in one place? Well, then we actually sample the pattern from that search in completely another place. Why is it so? That is interesting. But I think we can ignore it for now. And it's becoming interesting. D1 does single-track compilation. It's easier to spot error and like to see errors reported. I did this alone in a read code. Of course not. Hi. No problemo, Victor. You're welcome. So there is this thing. I think there is more than one person here who is not sure what code is doing. Because again, like... Ah, where is this? Why? So we have this layout restore. And we have a direct link area. Is it just mirror? They are quite similar. I don't necessarily understand. Okay, so BLO is the Blender loader. BLO is the Blender library, which is the lowest level utility functions, like the mathematical function, geometry functions, stuff like this. BQ, the Blender kernel, is where all those core Blender data structures are implemented. Not only like data structures, like majority of the algorithms, like the objects updates, stuff like that. So what do I think? Why sometimes we need to restore? Let's see. What happens? Ah, you're welcome. The Greek? No. I am the Russian hacker. What was the glitches? Yeah, it built. That's what happens. We actually used objects in C. Anyway, oh, look at those. It's slow, but getting closer. Now we have two of them. Now we just need to make one of them to use the different reference. Oh, so it's... It is super slow in debug. Is it really real quick? Of course I remember Russian. Easier than riding a bike. Hey, Sebastian, how are you doing? We used one image instead of two. I'm not sure what you mean. It's kind of an entire data. It's like two different images from two different frames. Now that I'm still working on it, I don't think we can do it in one live stream. It will be like a long series of... Yeah, I'm slowly making one, great. Well, how did I get into programming? To know. Family, parents working in Technical University. Then programmers having a computer. Anyway, working is the fun part. Oh, so again, let's go back to this boy. Because one thing is... Okay, so now we have two structs for previous and next one. But the marker is not stored in there. It's kind of forced to be used from... But here it just uses the marker and track. Yeah, track, it just uses... The track will be the same. That's fine. Now we need to... Oh, it's involved in a movie clip. Why this feature is scattered all over? We need to refactor it eventually. So I cannot trust this, because it's okay. That was one place where we... Yes, so we do better check this annoyance. Very, very disgusting, but okay. That will take care of later. That's a bit... As with how we're doing. Here, okay, that's not it. This one, yes. Stash for now. And then take care of this boy. So this is always happening. Okay. It's like when you make a typo and a commit message. It's a cleanup spelling. Make the typo and that message the best. Um, it's... It's debontesting slash seed. Why do we need... Why do we need both? Octave track and a track. Oh, yoyoyoy. I think we can just let go. We can just do this. Yes, yes. It's been taken care of. Now we see everything. Do compile. Oh, come on, link. Not good. Why do we need UPS? Power race table. Yeah, only if it's not. Flash your BIOS, you break your computer. Actually, is it even possible to break computer? Like what happens if you... Like nowadays, if you try to flash BIOS and power outage happens, like... Will the motherboard still be bricked? Let's reduce amount of mass here. And then we say... I think the old BIOS is like... nominal nowadays. Well, there is no enum classes in C. Again... It's fine. Nothing interesting happened. I just opened one file. And I was just thinking. And I need to figure out how to do it like more... more visible because I have... tool monitor. So it's like a bit like... hard to find a nice way to share all the screens I see. And then I forget to update. And then people in the chat... Ah, you forgot. And me like... Oh, yes, I did. It's not just compiling. It's also from the time around when I was doing cycles. What do we need to... Where is it used? Can we do something crazy? Just to see... where this boy... Where are you used? Oh, you mean that? Ah! That's also annoying. Okay. I see what you mean. How can we... Let's do it like that. Then we go to... Have a good day. It's a completely unrelated topic. Maybe it's possible to set up shortcuts to switch the scenes in the OBS. Does anyone know? Yeah, this plant... has a yellow leaf. It's sad. Okay. Actually... Okay, thanks Pablo. There it is. Yeah. What is it? Compilers does not use GPU. At least the CC++ compilers do not. Okay. Thank you for compiling. So let's go back to the code. Back to the code. So... Here... I have reference. So what do we need here? Compile. And we still don't want to compile. There's a lot of people here. Other minutes. Anyone here. That's that. Kind of marker access to have implemented. Let's see. Sure, no. So those are the only ones. Let's wait a minute. Okay, so... It's also not really key for a marker. It's more like a generator. I am at the office. Well, studio office. Yes, I did. Well, decremented. But yes. Good spot. Compile. No, you don't. So let's go creative to make stuff better visible. Or we don't. Wait. How can I make it so that it's very nicely invisible? Oh, wait a minute. Which order do we draw them? First scope. Then the previews. Let's compile and release. So it's fast. And check something. Because Oh, this is what what's going on here. So what happens here is that the image is always gets from the current frame. So when we request the previews keyframe it still uses the image from the current frame. So it uses previous position with the current image, which is wrong. So, okay. I need the reverse of this. So this is what it should be. Yeah, I know you can double click and stuff, but it also at some point it was feeling quite slow. So it just went back to rail console, but to see if it's up to the good fix or not. Or not because I remember it was improved at some point. Okay. Okay, so the first issue. Need to ignore the current frame. So because so that's the first thing the question is Oh, because we put it in IEI. Okay, let's see why they're crashing. It's not 80 characters Oh, well, I mean the 80 characters line. That's what we use in LibnV and the same as we use in service. It's also something where you use the PEP 80. Like the good thing about 80 characters is then you can have like multiple columns of code side-by-side visible. So can I have header file where you can see for example some structured definition and then you can see implementation file or you can have two parts or multiple parts of the same file opened everywhere like several times in different places and then update something and the top of the file where you work on your includes and something in the middle of the file and then arguably the long lines are not more readable than the short lines. I think you know what's going on here. I think that's what needs to happen actually. So didn't need the debugger. Anyway, so what happened here I just added the null pointer check which I realized while this ddb was indexing the blender symbols. For the columns of code there is like nowadays those really white screen monitors and there you can probably put like 10 columns of code it's like that development paradise. There was a crash when I went to the very beginning of the sequence blender just decided to crash. So that's what I wanted to debug real quickly but let's see again. So if we go to the first frame yay, can it to disable there. So here we just move it let's actually label the scopes. Oh hey, hey captain we don't improve anything we need to improve and then we need to get something like the third version. Anyway, so what I wanted to do is to um, how do we do how do we do the label do label on the interface is it not label? Yeah, not label so previous than the current. Oh, oh Andy, I don't know if I can if I can't do it like every day okay, let's see what happens it is track much blend it's not match track match track, no, first no, let's see why there is match what is matching oh, it's also wait a minute it's like it's almost getting to the time limit oh no wait a minute why is it upside down so we have about five to ten minutes to wrap up so previous keyframe as current it's almost perfect and that's what I was talking about it's like I was so slightly slide like because that's where it was put initially and then it lead the bar a bit so now you can position it more carefully why are you deciding to slide that quickly anyway why is it sliding it's orthogonal thing so think we should like call it done for now so we don't collide with the blender today and from what remained to do is that we need to disable the even handling from the non-current marker because currently if you do try to slide the previous keyframe it will modify the current one which is not good it should just be read only we need to add similar swatch for the next keyframe and then solve all those to-dos related to the to the versioning code it is kind of working it's like what I mean keep going it's getting a bit tired of the thing on the thing online and I don't think we can finish the remaining to-dos before the blender today stream so that's not like there are two things we can do we can oops sorry we can stash this we can because this is all no functional real quickly check the release cycle to beacon one yes we are totally open so let's commit all the non-functional changes to git ignore events so we committed this in 10 branch oh no problemo you are welcome so that's that I don't know you tell me what do you think shall we do it again was it too boring don't want something more exciting or something different don't want anything at all like leave the feedback down below in the comments because I think now I'll be closing the stream and go having some glass of tea or something no don't do the AVS code for the commit messages oh wow that's cool everybody's excited hey okay so I'd love to know if when we do it again may or may not be next week we'll see how it how the schedule allows it anyway thanks for tuning in and we'll see you in the future goodbye