Power Nodes Project

Power Nodes project

I present to you: Power Nodes.

Official page: www.power-nodes.com
Patreon: https://www.patreon.com/radupopovici
Twitter: https://twitter.com/radu_popovic
blender.chat: https://blender.chat/channel/power-nodes
Github: https://github.com/rpopovici/power-nodes

Goals of this project:

  • user friendly node based modeling, animation and simulation solution, with focus on UI/UX
  • interactive operators with automatic node sensing and activation
  • performant operators, accelereated with GPU/CUDA cores
  • declarative style operators and nodes
  • uncluttered nodes interface
  • node parametrization and data binding
  • reusable digital assets
  • fewer connection as possible
  • pass-through state
  • automatic conversion to and from mesh/object/curve/collection/etc when required
  • generic operators based on standard ops, modifiers and bmesh already working
  • live node previews
  • custom python operators
  • independent/autonomous operators from blender internal(affect blenders internal affairs as little as possible)

Long term goals:

  • integration with everything nodes if possible
  • complete workflows for game development
  • batched processing and optimizations
  • multi user support
  • unity/unreal exchange
  • animation/simulation integration
  • and many moreā€¦

Very long term: :slight_smile:

  • relase as stand-alone app with other packages integration

What works so far:

Operations and node previews
power_nodes_demo

Live edits
power_nodes_live_edit

Interactive primitive
power_nodes_interactive_primitives

Live primitive node
power_nodes_live_primitives

This project is in early state of prototyping. When it will be ready for prime time, I will release it on blender market and gumroad. Any C&C are welcome.

30 Likes

Release notes:

v0.1

  • generic operators based on standard ops, modifiers and bmesh already working
  • live node previews
  • live primitives
  • cached node output
  • ops, modifiers and bmesh integration works well with some hacking, edit mode ops not working thus
  • fast voxelized preview for extra large meshes
2 Likes

Working nodes, so far:

Boolean

  • with boolean fix for simple primitive meshes
    power_nodes_boolean

Transform
power_nodes_transform

Bevel
power_nodes_bevel

Array
power_nodes_array

Sweep
power_nodes_sweep

Mirror
power_nodes_mirror

SUBD
power_nodes_subd

Solidify
power_nodes_solidify

Bisect
power_nodes_bisect

Copy to vert/edge/face
power_nodes_copy

Push/Pull
power_nodes_push_pull

4 Likes

First custom operator using CUDA cores: push/pull from the center of the mesh
Benchmark:

  • native code pushing 1.5M verts takes aprox 230 ms
  • CUDA accelerated, 1.5M verts takes aprox 40ms
  • edit mode, standard push/pull operator takes 8s, but this cannot be considered for the purpose of the benchmark since edit mode itā€™s heavier anyway

The benchmark takes in account data transfer from object to operator and from operator to GPU mem, and back

CUDA is 5x faster than native in this case :slight_smile:

3 Likes

Since itā€™s overlapping a lot the the future everything nodes features is difficult to know how much time until it be deprecated. But itā€™s probably the best prof of concept to ā€œnode modifiersā€ as a modelling workflow.

@vitorbalbio Yes, itā€™s true that some of these ideas ar overlapping with ā€˜everything nodesā€™. But, we donā€™t know when everything nodes will be released. Think about it, they started talking about this stuff 5 years agoā€¦ Only recently everything nodes was moved from backlog to ā€˜long termā€™. I donā€™t even know what that means. There is no ETA for this project. It could be 6 months, or it could be 2 years from nowā€¦ until you will have a first early BETA to toy with. Besides this, they are refactoring a lot of blender core right now. I donā€™t know exactly what is the purpose of that refactoring?!? C++?, better perf?, I donā€™t know. Anyway this refactoring alone will introduce an enormous number of bugs to be fixed. Donā€™t expect to much stability in the next two three versions.
Also, there is the GPU accelerated problem to address. How? Is it going to work out of the box, another 2 years?. We donā€™t knowā€¦

My approach here is taking in consideration, from the start, the UI/UX/perf problem. In the end, this is what truly matters for the end user.

Also, worth mentioning is the fact that I intend to release an early BETA, hopefully, two months from now :slight_smile:

5 Likes

Youā€™re probably right. Is better to have a tool now than a promise.
Keep the good work, i will follow it closely.

1 Like

Looks like a very serious attempt, I might be interested to test it as well. How does it compare to sorcar though? Should I try both?

I donā€™t know much about sorcar, but from the looks of it, it was designed to work with standard operators and modifiers. This approach has some limitations. You are totally bound to what blender does internally. Other than that, it looks like a very good solution. And it is also a lot more mature than my approach. What I am trying to do here is beyond blender scope. From the start I want to introduce GPU accelerated operators which are also context agnostic(you can run them from anywhere - not bound to blender internal state). Beside this, I want this solution to be extremely easy to use and interact with from the viewport. This is something I really missed in Houdiniā€¦

7 Likes

Good answer, in this case this is a very good approach.

Indeed, Blender has a good set of fundamental modifiers, however the toolbox is quite limited, not to mention that half of them need to be reworked so they can become 10 times more productive and user friendly.

eg: Bending and twisting is so troublesome to setup and use, so nobody bothers with it. While in 3DSMax you would simply change a slider, simple as that:
https://knowledge.autodesk.com/support/3ds-max/learn-explore/caas/CloudHelp/cloudhelp/2015/ENU/3DSMax/files/GUID-C83CBEE2-19FE-4D19-A1F8-52EC04D89A2A-htm.html

These exactly are serious use cases that need to be taken into consideration.

1 Like

This looks very promising, love the live preview in the node editor. I will follow the progress with big interestā€¦

What is Iā€™m really missing right now in animation nodes, sverchok, etc is the ability to work with rigs via nodes creating some complex structures. I want to see the whole rig with all its connections (modifiers, constraints, drivers, children, parenting) as nodes as the whole picture instead of messing with bone layers, selecting each bone to edit constraints, etc. Do you have some plans about that maybe?

Long term, yes

3M tris live push/pull with voxelized preview, accelerated with CUDA cores
power_nodes_voxel_preview

4 Likes

This looks promising. GPU accelerated.

There are already addons like Sorcar, Sverchok, Animation nodes etc. They are good but they have performance issues and itā€™s diffcult to work with those in combination with each other.

Did you try to contact blender foundation developpers if they are interested in this?
Have you read function nodes and everything nodes documents by Jacques Luke?
I feel like, if all the developers are united and stick together, they can bring a really good unified node system for the community. Some one has to lead the development.

(This is just a suggestion, I am not even a developer)

Thanks, I am aware of everything nodes and the docs made public already. My approach here is different than what they are trying to do. I am doing a top-down implementation instead of bottom-up. I am trying to focus here on high level functionaly first and then I will take care of low level optimizations and performace.
Thereā€™s a long debate here https://devtalk.blender.org/t/blenders-architecture-concerning-everything-nodes/9888 about this subject if you are interested in more technical details

3 Likes

Destructive extrude with nodes - work in progressā€¦
power_nodes_destructive_extrude

3 Likes

From what it seems you can utilize both destructive and non-destructive techniques. Is this something that Houdini does as well?

I have some idea for a workflow as well, that I do often, though I still trying to perfect it.

  1. Creating a shape as extruded plane.
  2. Using solidify operator to make it 3D.
  3. Using smooth operator reduce hard corners (Laplacian or Corrective).
  4. [x] Editing geometry ontop of the existing result

Only step [4] is the most difficult, in simple cases I would use a cage mesh operator (or lattice) though, but for finer control it does not work well. I have a test model I created that way that uses about 10 lattice modifiers stacked ontop of the other, however is really bothersome to setup. The correct solution as of now is to bake the operators of the mesh at step [3] and then proceed to [4].

Destructive extrude - face mode, with automatic detection, node spawning and auto layout
power_nodes_destructive_extrude_face

8 Likes

Just an update here:

  • managed to port PyCSG https://github.com/timknip/pycsg(original work https://evanw.github.io/csg.js/) to my plugin.
  • also created Cython, numba and C++ ports of PyCSG
  • did more research on hybrid technologies. Technologies included in my research pool: NumPy, CuPy, PyTorch, Cython, numba
  • the goal of this port was mainly to offer an alternative to the default boolean engine, and to allow future optimizations based on CUDA, ROCm and SVML

5 Likes