Someone should make a tutorial on understanding Blender Source Code/making addons

There’s frequent complaints from users on how the feature they want isn’t being implemented and devs talk about how there isn’t enough manpower and such. It would be a great investment if someone could make an in-depth series going over at least some parts of the code to get started or how to make a full blown addon. I assume this could be long and there would be difficulties but I believe this is absolutely necessary. Blender has an entire community that floods these forums with art but not with code at least not proportionally. I know little to nothing about coding so I would be interested in watching such a series.

12 Likes

To give people some context there are over 2500 feature requests on Right-Click Select and Devs have implemented only 13 with another 5 in the works. There are highly rated features that’s been sitting around for years with no talk of implementation.

2 Likes

I agree if that were text documentation, well explained from the beginning for people who have no idea about programming. I would hate to have to learn this from videos with low readability and the inability to copy&paste portions of code to be able to experiment.

3 Likes

That is an issue with the video format but it’s not a huge limitation IMO. There are Youtubers out there that executes tutorials very well like TheChernoProject.

There are plenty of them:

You should also check out what Jayanam does. And so much more.
While these all deal with Python rest assured, that there are a lot on the source also.

But the thing is, if you are a true beginner in coding anyway, it makes much more sense to learn that first. Just a few weeks ago I was also a total Noob regarding Python. Well, I did dabble with it a few times but didn’t come very far with those free resources that are found everywhere on the web. But than I bought a course on Udemy about Python (when it was 9.99) and within days it all came together and I could start hacking away in Blender.

Now C and the Blender source is a totally different beast. But I believe if you know C you’ll find your way around. I won’t tackle C now because there’s enough to explore in Python right now.

2 Likes

Thanks, those are some great resources and I’ll definitely check them out. I still find coding for Blender far less accessible than general use Blender. I know this is inherently the case with coding but comparing the amount of resources of coding Blender to general use the resources are still sparse. I have tried to learn C++ and Python but I always end up stuck due to a lack of tutorials so eventually I forget how to use them. With general use if I have a very specific problem there’s near 100% chance that someone out there has tried it, but even for python scripting I had difficulties understanding the commands and functions Blender uses when looking through the documentation. I could just be really bad at this and just need to be more patient.

I saw this years ago but I was too novice to really understand everything. I learned python since then from many different resources but still need more education.https://youtu.be/5Ymoav0nNWQ

2 Likes

OOOhhhhh boy,
I can feel you. That bitter-sweet pain of reading an API as a beginner. I sucks as hell!
But here’s the thing. Those APIs are actually very good. The problem is we noobs don’t know how to read them.
That is a topic I missed for quite some time and always wondered why nobody did a tutorial on that. Then while working through that course I mentioned I realized, that there is no need to. Because if you know the language you are using you automatically understand what the API is presenting you. If you don’t know the language the API is useless anyway because you can’t use what’s written up there.

What I want to say with this: A course on Blender-Python development for non-programmers would basically be a generic Python course. And of that, we have enough. The trick is to find the right one for you.

2 Likes

Oh yeah, I was searching for that one and didn’t find it. That’s a good example. The tutorial is actually good. But there are prerequisites to it. If you don’t have the general coding thing down don’t mess with this. And it can’t be Campbell’s job to teach you the basics of C and software development in general.

1 Like

The user documentation on add-ons links to existing how-to code an addon documentation as well. Granted, it looks a bit dated, but the main mechanisms are there.

Much info can be had from here: https://docs.blender.org/api/current/

1 Like

Really? Where? I looked for them a while ago and couldnt find much.

While there is room for arguments that these are old the presented topics hold very true.
When it comes to source development we are endeavouring into a very complex thing. And all of that isn’t really a good fit for a ‘tutorial’ format. There are just to much pieces to this puzzle than a single video or writeup could cover.

3 Likes

Hey, thank you. I wasn´t able to find these back then, which was a couple of months ago. When I said tutorial I didn´t necessarily mean as a video. Any kind of documentation is interesting.

One problem I remember when searching for this topic is that the keywords you use are problematic. If you google for something like “blender source code” you will get a bunch of topics about blender being open source.
Searching for “Blender c” is problematic as well.
So, if you have any other links I´d be very happy to see them.

There is also the wiki

https://wiki.blender.org/wiki/Main_Page

2 Likes

You need to stop blaming the environment for your own failure to follow through with something. How do you think Blender got written in the first place when there was no tutorial for it?

Learning 3D programming is quite challenging and it will take time, but there are a lot of resources online. They don’t have to be specific to Blender. You haven’t learned anything from just following a tutorial to the letter, you have learned something when you can apply that information to a new context. Most importantly, you need to be able to figure things out for yourself. Blender will never be written like a textbook to teach beginners.

Now let’s imagine you really acquired all those skills instead of just giving up (like 99% of people will do), you probably won’t want to just keep working for the community for free indefinitely, after having invested so much.

So there’s your #1 reason why there’s so many open feature requests: 99% of would-be developers give up and those that don’t give up won’t waste their life filling user requests voluntarily. It’s not about lack of documentation or tutorials. Real programmers can figure things out.

1 Like

Very good aspects, that didn’t come up until now.
Refreshingly undiplomatic and angrily served as always*. But right down to the point.

*I couldn’t resist. I like that no-nonsens style.

@Lumpengnom
I’ll see with what I can come up for you later today…

1 Like

Well, there are a ton of people who create python scripts and pretty complex ones.
I believe that is at least partially due to the fact that python scripting is very well documented and there are a ton of good learning sources specifically for learning how to script Blender Python.
There is even a very good “python scripting for artists” video tutorial in the Blender Cloud by the core developer Sybren Stüvel.
If we had something like that for C development I´m sure only 90% would give up instead of 99%.

The thing is learning coding is easier if you do it for something you know your way in and out. Learning scripting for a 3D app is not hard if you are an experienced user. You have well developed sense of how different parts of the program work together by using the interface. The connections within pyhton are all the same. And they can´t be that different when coding in C. The “gut feeling” you have developed as an experienced user is worth a lot when learning coding.

3 Likes

It’s more likely because coding addons in Python through the APIs is an order of magnitude more straightforward than modifying the source. I’m a professional software developer myself and Blender is a hobby for me. I wouldn’t touch the source, it would be like being at work. It’s a job. You can hack things together in Python with minimal effort and it can be fun.

1 Like

Well why don’t we have it? If the adoption of programming languages in the past decades has shown anything, it’s that people really don’t like programming in C/C++. If you make a mistake in C, your program crashes. Compiling takes time. The workflow is far more tedious.

The other issue is that it’s much harder to get C-based changes into Blender. There’s no API for C-based plugins, these changes have to be submitted as patches, reviewed, brought up to standards, etc. In the meantime, you have to provide custom builds for your users. The barrier of entry is far higher, no amount of hand-holding will change that fundamentally.