Flakes – nodular everything

Good work AnvilSoup, your project is one of the most important and fascinating blender project. Hope to test it as soon as possible, I can only doing that, unfortunately I cannot write a single code line…

Anvil, I too come from the SI world. SI is, and will remain for the foreseeable future, an integrated part of my pipeline. However, what you’re doing here is incredible, and amazing. Not only do you have my support, but I would love to donate to this work. Not only do I think that this is something that could really set Blender apart from other apps, but it could also give SI users an out. You have my support as well!

Small update, since it seems to be a while since the last one.

Life is rather busy at the moment. I have a ton of stuff fully figured out (or so I think) and I’m just waiting for a good spot to start hacking it together. Most of my available coding time has gone to playing with some Qt features that I haven’t touched before. Qt has actually changed** and improved quite a bit since the last time I used it, so there was a bit of a learning curve. I think I’ve got the hang of it now.

For practice I’ve been making one of my favorite nodes, the function curve, which I can’t really make with pynodes. I liked to use it a lot in ICE since you can take huge shortcuts and avoid a lot of brain acrobatics with it. I sometimes wish I could use it in syntactic code. It’s also probably the trickiest one to implement from scratch, so probably wasn’t the wisest place to start :).

It’s quite awesome to have a full gui system available all the sudden. I think I will start doing some other gui extensions for my personal use, which I may or may not release publicly. I’d really love to have toolbars and floating palettes where I can just drop operators without bothering with any definition scripts.

I will likely at least do something like the piemenus for adding nodes to the scene, which may end up as Flakes feature if it works well. Making it also work with the rest of Blender would be neat, but we kind of have that already, so I probably can’t bother. Piemenus isn’t particularly customizable though.

**the new system known as QtQuick has been around for years, but I have ignored it previously since it was missing a lot of important things. It had some major improvements in versions 5 and 5.1 and it’s quite superb now.

As always, very excited to hear updates to this project!

If you do end up doing the GUI extensions, please do share! Being able to drag and drop a series of Ops into an automatic toolbar button is one of my most missed features from SI.

hey anvilSoup, are there any news about this project?

yeah good call i am interested 2.

Anything new on the project ? Would be great. :slight_smile:

Yes, I do have news. In fact I wrote most of this reply last week, but did not get around posting it :slight_smile:

The new compiler is in the works now. It’s going quite well, but maybe not quite as fast as I had hoped. I’m still trying to do some manner of pre-alpha release towards the end of the summer, but there’s a ton of stuff going on right now so I might slip on that.

I just decided to cut some corners to get this running faster. The easiest way to implement it actually also runs the fastest, but it will need more frequent compiling and the compile process might be somewhat slower. For small things it shouldn’t be noticeable though.

I will have to rewrite a bunch of stuff on the nodes’ side to accommodate the compiler, but making new nodes is now incredibly easy compared to the previous system. I made a simple quasi-language that defines the mid level logic of each node. The node graphs get compiled to that language as-is, and then the code is compiled to python.

I’ve been thinking about what to include in the first release. Mesh deformers and generators will likely be the first things. Operators* and drivers* will probably make it in as well. Procedural and simulated animation may or may not be stable by that time, but I’ll do my best to have them too.

Particles are somewhere in the horizon. Making a particle system is actually pretty easy, but making it work with Blender internals is a lot trickier. You could use a mesher to render them even now, but it would be very inefficient.


On another note: I’m working full the whole summer so my time is again a bit limited. Curiously, in my job I get to use a software package called labview, which is a node based system for measurement data logging, device control and light weight computing. Seems they have had a lot of the same ideas as I, and it’s the closest thing to a general purpose system that I’ve seen so far. One thing they’ve done particularly well is GUI creation. It takes almost no effort to make complex interfaces. I definitely want to have something similar for modeling tools and rigs. Their node interface is a bit clumsy and inefficient, though.


*operator is a Blender operation that can be bound to a keyboard shortcut or placed on a toolbar.
*driver is an expression or a function that drives a parameter in blender. Good for rigging and other animation setups.

Righto, the compiler now compiles the basics, and I’ve began working on a graph parser now. Once that’s done I’ll probably work a bit on python api connections. I plan to replicate a lot of things on the opencl side, but in the short term it’s probably wise to use what’s built into Blender already.

Thus far I haven’t really worked on api hooks for anything other than meshes. Object manipulation is likely next. With some simple object access nodes one can do pretty impressive thing. It looks like the “advanced modifier array” thread gets bumped regularly, so something equivalent might be a good first demo. Should be almost trivial with nodes.

In the short-to-mid term, I’ll have to prioritize a bit which parts of the api I’ll make available. You can toss me some suggestions what sort of “manipulations” should be available early on. E.g. I really need spline access tools myself. That’s probably not a priority though, since Blender api for them is really lacking at the moment, so it’ll take some time to do (almost) everything from scratch.

Hope to see a nice demo soon :wink:

anvilsoup, this project is badass and probably has the most potential to improve blender (hell, the whole gaming and 3D art industry, even) of anything I’ve seen lately.

It’s a bit out of my league technically, but it might give me a good excuse to brush up on real programming. Really cool.

Great updates!

Great update Anvilsoup, many thanks for your commitment! Maybe talk to BF for more help ?
They would surely appreciate this undertaking with more help/resources ? Or did you already ?


Hae rahat pois kuleksimasta. Noilta on Helsinki Hacklab saanut rahaa joihinkin imureihin ja jyrsimiin, joten kyllä kai sullekin pitäis herua!

Och samma på engelska:
anvilSoup might be eligible for a grant from the Finnish Unix Users Group.

enilnacs :
Flakes isn’t really part of blender, and I doubt the devs regard it any higher than any other node system that is currently in development. I haven’t been in touch lately, so I don’t know. Better apis is the biggest help they could give really, and even now most apis are fairly capable already, albeit very cumbersome. Current climate (still) seems to be that Blender is supposed to be monolithic so extension apis are not a priority.

Tonttu:
Grants like that usually need more “completable” projects. Flakes’ end goal is still a bit all over the place and I’d like to keep it that way for the time being :). I’m afraid I might lose interest if I define it too strictly.

Speaking of that, if anyone happens to know Ogre users or developers who might be intersted, feel free to pitch flakes where appropriate (no forum spam). I might need some tutoring on Ogre internals in the future.

Well, this is not your usual grant, then :wink:
Read more here:
http://coss.fi/2014/06/27/fuugin-saatio-jakaa-apurahoja-avoimen-koodin-edistamiseksi/

Many non-completable, open-ended definitions there, like communication/journalism, teaching… And they say that the same applicant can apply multiple times in a row. I noticed by Googling around that Helsinki Hacklab is planning to apply for a second grant. They process the applications 3-4 times per year, so the waiting time shouldn’t be too much either.

Turns out the compile process has some inconsistencies in the way it has to treat api nodes vs. other lower level primitive nodes, which has become bit of a problem. That means I’ve got to do some redesigning in few places. It’s not a huge deal, but will take some more time to resolve, which really annoys me right now since I’m supposed to get started with some other things soon. Other than that the process works like a charm and should run really well too.

On the plus side, animation should be pretty straight forward to do now. Even some softimage style interactivity should be possible fairly easily. Actually it occurred to me today, that a lot of the game engine stuff could be tested and experimented with right in Blender viewport, long before C++ support and external libraries are integrated. In essence it would be a game engine with bad graphics and no sound :). Might be fun to make a few simple games to test all the principles even before the engine is fully designed.

Just for clarity: I don’t mean BGE, but rather raw scene manipulation and viewport rendering. The advantage there is that it will not need anything other than core Flakes to work. Even BGE would be a needless detour at this point.

. Even BGE would be a needless detour at this point.

Good updates but keep reading stuff works flawlessly without any examples so far, would be too complicated posting some working examples screenshots? I can understand video with voice over is a pita but screenshots takes a second and would make things much more tangible. I still can’t see what is the direction clearly, lot of topics covered but not explained in depth.

Hairs, parametric modeling, remesher, game engine, node based scripting…it’s a bit “foggy” to me. And I’m not critical, I’m curious.
Thanks

marcoG_ita:
Sorry, this is the most boring and tedious part of the dev process, so what seems like working flawlessly to me does not look pleasant to anyone else yet. It mostly just prints pretty lines of text which look extremely appealing to me, but I doubt users would be interested :D. I’ll post some demos once the compiler is fully operational.

I’m really short on time right now so I’d rather focus purely on the development rather than examples anyway. And like I said, it’s not working flawlessly at the moment. I’m primarily posting these small updates so people have some idea where I’m at.

BluePrintRandom:
Neat, but I don’t see how that relates to what I said.