Why is it so hard to find Python programmers for Blender?

Indeed it does. Being realistic is also a hallmark of good ones. Your claim that you built an add-on that takes an arbitrary mesh animation and bakes weights onto an existing skeleton giving results even near what we see in the video you linked… in around three hours is not realistic. I don’t want to call your honesty into question but I simply don’t believe you.

Extraordinary claims, extraordinary proof and all that. You need to get other people to develop your Blender add-ons due to lack of knowledge/skill on your part doing so… but you put together something in three hours a set of functionality that gets you a presentation slot at SIGGRAPH? No, I don’t buy it.

You didn’t read the comments then.

As I said, that’s great if you can find those people willing to charitably give of their time because the cause/subject interests them. I work for free in a volunteer organisation on the weekends as well. It’s the expectation that you should be able to find developers willing to do these things for your offered price that is unrealistic.

With all due respect, the level of design a non-programmer puts into functionality is not even half the level of design that needs to go into developing it into code. You know, speaking as someone that actually does it for a living and all.

I was pointing out that a developer having not used Blender is not the same as the developer not using 3D & math as per your earlier comment (the one I quoted for context). Believe it or not, you pay a developer enough - they will learn pretty much any API they need to in order to get the job done. If you can’t find developers who know the API willing/able to help you with knowledge of the Blender API AND you are not willing to pay developers capable of learning it to do so - then it is (once again) an issue with your expectations.

You are putting words in my … fingertips. I didn’t design add-on. I designed a workflow. I converted morph anim into skeletal manually, with tools Blender has. Then the programmer translated that into Python, and improved a bit. If one is given an algorithm, and one can’t implement it fast enough, I doubt such skill set worth $50+ per hour.

Lol, you don’t need to have extraordinary software to be on SIGGRAPH. Money to pay the slot, and something interesting to show is what’s needed.

It’s late here, but once I have an opportunity I will record video showing the script in action.

One doesn’t need to be a programmer to be able to design systems and algorithms. I am not formally trained in software engineering, nor I know C++, but I cracked down on the new UI system in Doom 3 BFG engine. I also script and program certain things for my game (C++ like script and C++ code). Again, not trying to be offensive or bragging, but some programmers know bunch of languages, yet take forever to design algorithm or a system, and then on top of that don’t even come up with proper solutions. So it’s all relative, and a price tag programmers put on themselves doesn’t guarantee good results (again, I have prior experience with such things).

Anyhow, going off-topic yet again.

Maybe because we programmers are taking into consideration issues that you do not even imagine exist…

That depends on the subject, but perhaps.

I look forward to seeing it and comparing it to Naughty Dog’s.

Not to be offensive or bragging, but I’ve been making a healthy living developing systems, algorithms, and software for over fifteen years now. You came into the forum asking why it was so hard to find developers then slam those that answer your question. Just because you don’t like the answer, doesn’t make it wrong.

I’m telling you, for free and without any hidden motive, getting a Python add-on to calculate those bone weights (even given an existing rig) is days of work at least. Not three hours, not something you knock out over the weekend, and it will almost certainly require additions to the Blender API if you want reasonable performance. One doesn’t perform least-squares fitting of vertex weights over multiple bones across a range of motion in straight Python.

I’m not bidding on the job. I have no horse in this race. I have no ulterior or selfish reason to tell you this. Make of it what you will, but I suggest considering the fact that just maybe you might be underestimating the level of effort required… you know, given how you only have the idea of a workflow and all :wink:

Guys, what is this discussion about? blender addons count literally exploded since blender got new API.
And if you are serious about paying normal money for development, just contact me :wink:

I think one issue that is being overlooked is the interpersonal one. Pretend the programmer you need is reading these forums too,
Anyone with an ounce of aggression can convince themselves they are right,Add in a little incredulousness and things go downhill from there.

But I am going to look at the practical interpersonals here and make a list of questions.

-If they already have formidable programming expertise, then why do they need one?
-Would I trust them to pay me?
-Is there satisfaction going to be based on the projects end product. Or the project experience. If I want pain I have a friend into S&M who would indulge me.
-Is this job going to land me in court reading though many amorphous and ambiguous of some self contradicting agreement?

Your every interaction with the public in an interview. And very often what it comes down to at the end of the day is being the friend a friend would like to have. And although professional relationships are not friendships. They do share quite a bit in common with those.

This would be great for id tech 4 engine. I did that manually once but it’s too much work:

That’s the goal :wink:

All this “we’re gonna charge 15K at 100$/hr and start out with a formal specification” talk is really out of place with Blender. It is doubtful that any of the actual Blender developers have ever worked under such circumstances. That’s not to say this doesn’t happen, but that’s not what the general market for Blender development looks like.

Having said that, it’s also true that the market doesn’t have to provide you with (in your terms) affordable developers. It really is a supply-and-demand situation, specializing in Blender as a developer isn’t a wise decision if you care about earning money. You might find somebody by a stroke of luck, maybe somebody who cares more about developing something interesting than money. I believe that’s how most developers arrive at Blender, but in the end there probably isn’t enough incentive (financially or otherwise) to make them stick around forever.

Your comparison of “I can buy Max instead of hiring a developer” is a bit absurd. I can buy my furniture at IKEA instead of having it handmade. But there is something in there which should be common understanding: If you can buy something off-the-shelf that serves your purpose just as well, that’s the economically rational thing to do.

Computations like that one are very heavy. Doing them in Python might not be the best idea. The minimum you need to make this kind of calculation within a meaningful amount of time is JIT compilation. Yes, I know it exists for Python as well, but Python itself is a slow language because it is not strongly typed.

To get back to the actual topic:
This is the reason why I am not using Python on a regular basis in Blender. I use it from time to time, but it is unfortunately not possible to make very funky stuff with it. With funky stuff, I don’t mean things that are not possible due to the API, but operations that become too heavy and take too long to compute. Of course, it could be implemented in C, but that is definitely not what I want to do for a custom tool.
I know that a lot of people like Python and that is absolutely okay. But for me, it is the reason why I am not scripting in Blender. Calculations that need to be done in 3d applications easily become very heavy and that’s why the scripting languages should be as fast as possible to avoid it as much as possible to port expensive operations to the native side.
It is not my intention to start a language or technology war, that’s why I don’t mention what my favorite choice would be.

I don’t know how many others are not scripting in Blender because of that. If another scripting technology was in place there would be one more programmer to use it. Of course, it is possible that 100 other wouldn’t be scripting anymore in Blender because of it.

Not interested in a language war either, but an apologia for Python is in order:

I’m not sure I get the argument here. JIT is supposedly “the answer”, JIT exists for Python, but since Python is not strongly typed, it is slow? As a matter of fact, Python is strongly typed, but it is not statically typed. Yet, Javascript and Lua (both for which very fast JIT exist) are not statically typed either.

It is true that Blender’s CPython is pretty slow for numeric computation, however for that very reason a large number of solutions exists, from various C extension libraries like numpy, metalanguages like Cython, embedded jit-based DSLs like Numba, plus the ability to call any C library through ctypes (which implies the ability to use a Lua interpreter).

A carefully designed Python API provides you with mechanisms that ensure that the interpreter does not become the bottleneck. Python actually has a foothold in high-performance computing, because libraries like numpy offer excellent performance.

I don’t know how many others are not scripting in Blender because of that. If another scripting technology was in place there would be one more programmer to use it.

The language isn’t necessarily the problem. Most performance is lost through misguided programming/design practices, in the hopes that some magic compiler technology will revert all the damage. It should be clear that this is wishful thinking from just looking at the reality of web technology. On paper, these Javascript JIT compilers offer near-native performance. Yet, the actual performance of modern websites is often catastrophic, because the real bottlenecks are somewhere else.

I certainly meant statically typed. JIT compilation in combination with statically typed restrictions makes a huge difference. Those are essential elements for asm.js, which is a subset of JavaScript that is a lot faster than actual JavaScript.

There are many JIT environments where it is not necessary to outsource the computations. Very often I don’t need to squeeze the last bit of performance out, I just need acceptable performance and that as easily as possible.

As already explained, the near native speed is achieved thanks to asm.js and one of the corner stones of that performance improvement is static typing. There are several JIT environments that have very good performance since years. Unfortunately, Python isn’t one of them.

Again, I don’t want a language war. I simply want to explain why I am not scripting in Blender.

This is inarguably true. At least as far as CPython is concerned, which is what Blender uses and hence the implementation relevant to this thread. Quite honestly, it is the second-most important reason I only use Python for throwaway scripts and Blender add-ons (the most important reason actually being sandbox issues).

It is not making it a language war to explain why you don’t want to use a language. Kind of hard to argue with that because the only person that can say why that is would be yourself. :wink:

Doesn’t Blender have C++ (or C) API for plugins ? Wouldn’t it be better to write plugins instead of add-ons ? (better in a sense of performance)

Of course, C/C++ is faster, that’s out of question. Unfortunately Python is one of the slowest programming languages I have ever used. As experienced programmer who just wants to fiddle around in Blender and doesn’t want to dive into the native side, it is not enjoyable.

I am really just asking if there is C++ (or C) API for plugins in Blender, not what language is faster :slight_smile:

No, there is no C/C++ API for plugins in Blender.

asm.js is not a programming language, it’s a target for other languages (most commonly C/C++ through emscripten) to transpile for, nobody (in their right mind) writes asm.js by hand. The annotations it provides are only supported by Firefox, so it’s not necessarily faster than regular Javascript. Looking at the benchmarks done by Unity, the difference with asm.js is significant, but not extreme.

The point is, it’s not the explicit static type information that makes the huge difference. Recovering static type information is just another job for the JIT to handle.

There are many JIT environments where it is not necessary to outsource the computations. Very often I don’t need to squeeze the last bit of performance out, I just need acceptable performance and that as easily as possible.

Which environments would those be? There are really not that many alternatives that fit Blender. There’s PyPy which does JIT for Python (but which can also be slower than CPython, especially regarding C modules). There’s Lua, which is somewhat popular and has a very fast JIT implementation, but not everyone likes it. There’s Javascript, which has great JIT engine, but which is a terrible language and very web centric. There’s .NET/Mono and Java, which are both huge cans of worms by themselves.

Most DCC applications end up going with Python, maybe in addition to their own scripting languages. It is worth noting that Python interfaces very well with C, unlike .NET, Java and Javascript.

Also, even with a good JIT you’ll easily leave 5-10x performance on the table in many cases, not just those “last squeezy bits”. You don’t want to use another library and you don’t want to use another domain-specific language to get to performance, but you are willing to deal with the peculiarities of a JIT? I rather think you want the illusion of free performance that a JIT provides you, when in reality you never know unless you benchmarked your jitted code against a C/C++ implementation.

I simply want to explain why I am not scripting in Blender.

What alternative language do you recommend?

Let’s not go into argument about performance issues and thus deeply offtopic. There will be hardly any heavy computations done by the add-on (or virtually any add-on for game dev).