Extra Nodes for GeometryNodes

Hey folks
GeometryNode 2.0 is still to be finished, but i made some custom nodes with python already :slightly_smiling_face:

GitHub - DB3D/ExtraNodes: This is a collection of scripts that will add an extra node for blender.

Capture d’écran 2021-10-17 202245

Sequencer Volume

Will evaluate the sound of the video sequencer editor volume, useful if you’d like to create mograph or effect that react to music for example.

this node was possible thanks to @tintwotin Get the sound intensity of a current frame

Capture d’écran 2021-10-17 202236

Python Api

This node will grant you the ability to evaluate a line of python code directly from geometry node. Meaning that you can go fetch and synchronise almost any kind of data in blender to geonode ( there’s implicit type conversion fo float/bool/int/vec properties, objects, material, collections etc
 `)

Capture d’écran 2021-10-18 183153

Is Rendered View

This node will check if the rendered view shading type is active, it works well with is Viewport as you’ll be able to have a preview of your final object also in cycles dynamic viewport (it can handle a heavy workload compared to a raster viewport).

Camera Info

Gather information about the scene active camera, or selected camera.

This node was made by @Strike_Digital

Creating your own node with python:
If you’d like to create your own node, you’ll need to lower your expectations ASAP. be warned that the API is still young. So far bpy.types.GeometryNodeCustomGroup can only be used for two things, creating a simple input node, or managing an existing nodegroup with a custom interface. If you’d like to process data, you can stop your journey here.

Feedback on the socket API:
We could perhaps talk about how the API can be improved? for example it might be interesting if we could evaluate a socket value via NumPy with something such as socket.get_array() and write it back with socket.write_array() ? there’s also no way to get feedback when the socket is being used, I believe this was the role of socket_value_update().

About the extra node menu:
These two plugins share the same “Extra” menu, perhaps you can take a look in the registration process of this menu, it was made so multiple plugins can use it without conflict. for users i believe it’s best to put all plugin nodes in there.

You are aware of the limitations and you’d like to create your own node? great idea :slight_smile: this topic might be the best place to gather information about this subject?

As for potential updates:
-i believe the GeometryNodeSequencerVolume could have an slider to sample data backward or forward in time, it could be useful for users who want to create “time falloffs” of some sort. GeometryNodeSequencerVolume could also be very useful in Cycles/Compositor :grinning_face_with_smiling_eyes:

Cheers

51 Likes

Woah, this is really cool!
I had a play about with it, and it really does make it super easy to create custom nodes. I made a quick camera info node with it, which could be really useful for stuff like camera clipping etc.:

I can tell it must have been a massive headache to figure everything out from scratch, tho. Great job documenting it as well!
Script is here:

Thanks again for this!

11 Likes

Nice!!

You are fast, just wanted to do this today :wink:
And btw @Strike_Digital , what happened if you change the render resolution?

Can i do some cleanups?
you’ll left a lot of unused codes (even my own copyright lol)

2 Likes

Just added

“GeometryNodeIsRenderedView”

Capture d’écran 2021-10-18 183153

I explained here why it’s useful

Similar to the usage of bounding box, it would allow us to see geometry only when the renderedview is active

New

‘‘But why’’ you may ask?
well because cycles rendered view is capable of displaying a ton of polycount with ease thanks to the nature of ray tracing algorithm, so having a simpler geometry for the rasterized viewport and the “real” render ready geometry for rendered view could heavily facilitate workflows

17 Likes

Yeah, that doesn’t work out of the box, I think that’s best suited for a “Scene info” node.

Yeah, of course, I was just a bit excited about it and didn’t stop to clean up after myself, lol.

As a bit of a side note, have you considered making the core functions/class into a library? It would just avoid the need to duplicate the code for each new node, and would also mean you could install multiple with one addon. Idk if you have other ideas, though.

Yeah but I think that blender design is a bit bad in that sense, the aspect ratio is heavily linked with cameras, I believe it would be best to have this information in a camera info node :slight_smile: I’ll add it tonight

As a bit of a side note, have you considered making the core functions/class into a library? It would just avoid the need to duplicate the code for each new node, and would also mean you could install multiple with one addon. Idk if you have other ideas, though.

Well I liked the idea of having one py file per node, so users could shop on what they need (assuming bpy nodes become a thing in the future), what do you think ?
In term of lib, we’ll except the boiler plate functions and the menu registration process there’s not a lot of repetition per nodes

Yeah, that’s a good idea. I guess I would probably assume that users would rather install all nodes once, and then choose which ones to use later (rather than potentially installing 5 or 10 nodes individually). You could even select the ones you wanted in the prefs, and only register the ones that were needed.

Yeah, I guess there isn’t too much. But even just for boilerplate and menu code, I would consider putting it in a library, in order to avoid headaches later when you have to update 10 of the same function to fix a typo. Maybe that’s not such an issue, though.

1 Like

You bring good points :slightly_smiling_face:
i think it’s up to personal preferences

*edit
@Strike_Digital

just did published the clean up and on my github

btw not sure that using handlers (none the less a combination of two) all the time is a good idea, perhaps msgbus when possible is a better practice? :grinning_face_with_smiling_eyes:

1 Like

wow very very useful node


1 Like

Hmmm I couldn’t get the Sequencer audio to pass thru.The node is active but I’m wondering if there is some setting that I’m missing? Is it ok to run the script from the text editor or must I install it like a regular addon?

Our production have searched something like “Is Rendered View” for render time mesh changing, Thanks!
Will it included in Blender3.0 as a default node?
And I haven’t heard GeometryNode 2.0. Where should I head to get information about it?

Geometry node 2.0 is simply the field redesign. that’s my nickname :wink: nothing official

Will it included in Blender3.0 as a default node?

No these are python plugins

I got it! Thanks for the great work. :slight_smile:

1 Like

It seems liked this was the perfect opportunity to get my feet wet

https://developer.blender.org/D12932

once it get these confirmed i’ll try to do Object/Collection/Image
then maybe camera info node :slight_smile:

9 Likes

Thanks, @BD3D. These will be so useful. I have just two suggestions:


First of all, it’s a bit distracting to see the output name of the input nodes change when you are scrubbing the value.

Second, the extra nodes don’t seem to show up in the search menu.

Also, what does the image node do? The socket type is not a color.

socket will be for the image texture node :slight_smile:
and other node later that need an image data input

1 Like

You know what would be really useful for nodegroup creators in combination with the python api node?


I propose a node to output warning messages to a nodegroup or modifier. It would let nodetree creators output these:
image

I think this is essential for any nodegroup creator creating an asset pack for beginners. What do you think?

I don’t have much experience with python nodes, so I have no idea if it’s possible. Is it?

2 Likes

No
more and more thinks are hardcoded in Cpp in blender nowadays.
i don’t think this information is mod-able via python

1 Like

I got greenlight by Hans that they can be implemented
( i was not sure about the share-ability paradigm. but external references got a pass somehow)

However, 3.0 is bcon3 , so there’s no hurry. I’ll do the patch later :slight_smile:
I removed the input nodes from github and from main post

5 Likes

Here
https://developer.blender.org/D13058

Waiting for review :slight_smile:

4 Likes