Create New Tree Workflow Thoughts

Just sayin’
I feel like it would help stream line the work flow a tiny bit if when you create a “New Trait Item” for Nodes, there is a +New button to the left of the Tree select box.
NewNodeTraits
You name your new trait, it pops up in the Tree select, and in the Node Viewer. In the very least the +New button next to the tree select would be sweet.
Right now the work flow is like this:

-Add new trait,
-mover over to node window, create new node tree,
-go back to parameter and select your node tree,
-then go back to node window and do your thing.

It just seems like something that could be smoothed out a bit.
I don’t want to come across as critical. I really like this engine, I hope it doesn’t fall to the wayside in the wake of ArmorPaint. Who ever is working on Armory3D… keep up the good work.
M

3 Likes

I did it =)

I’m not very good at API (Blender and Armory3D), but I got curious, and I found it not a difficult task.
As a result, a button like this appeared:
new_button

Now, when creating a NodeTree, a window will appear for entering a name, and if there is an empty string in the list, then it will be installed there.

In order for this button to appear, you need to replace the engine’s Python script in the folder “…\ArmorySDK\armory\blender\arm\props_traits.py” with mine:
props_traits.py
Added ArmNewTreeNodeDialog class (line 475) and button description (line 774) to the script.

If the developers of the engine are satisfied with such an implementation, I will make a pull to the main repository.
Checked for version Blender 2.83.5

3 Likes

Awesome!

A few small remarks:

  • Operator/UI labels in Blender are usually in title case, so New Node Tree instead of New node tree
  • Maybe it would fit better to the UI if there was a small “+” button (like the one next to the trait list) right next to the tree selection field for your operator. But I’m not sure, maybe your layout is much better because it the operator will be used quite a lot and shouldn’t be overlooked.

If you want an extra challenge, try implementing an operator that adds the currently opened logic node tree to the selected/all selected objects :slight_smile: Bonus points if you somehow get it on the logic node editor header, but I’m not even sure if that’s possible^^

1 Like

Holy cow! Amazing!
Thanks
P.S. Just tried it out and it works like a charm!

I put it wrong: I know very little about the API (Blender and Armory3D), but I accepted the call. =)

Done =)
The result is like this:
done_v2

But because of the possibility of opening multiple windows with the Logic Node Editor, difficulties arise.

  1. New Node Tree - create and install a new Node Tree;
  2. Edit Node Tree - loads the Node Tree selected from the list into all Logic Node Editor;
  3. Get Node Tree - loops through all the working Logic Node Editor and from the last in the list sets the value to the list.
    If you switch from 3D Viewport to Logic Node Editor in the window, and then back, then in this window this type of Logic Node Editor will be available and will already be in the list. If I’m not mistaken, then through you can try to find out the active property (from the parent class bpy.types.Spaces or bpy.types.AreaSpaces from the documentation (https://docs.blender.org/api/current/bpy.types.AreaSpaces.html)), but I can’t get property / methods from a child object with a SpaceNodeEditor class (https://docs.blender.org/api/current/bpy.types.SpaceNodeEditor.html).

Tell me, I’ll fix it.

I’m waiting for suggestions on the name, description, icons for new buttons.

Script: props_traits.py

P.S. English is not my native language, so I use a translator and make mistakes

3 Likes

It’s a thing of beauty.
I’ll give it a shot later, and get back to you if I think of anything.
Thanks!
M

It’s a thing of beauty.

It really is, looking forward to the pull request :slight_smile:

I’m waiting for suggestions on the name, description, icons for new buttons.

This is really nitpicky, but:

  • The order of the first two buttons (New, Edit) is different from the order of the same buttons for Haxe traits (Edit, New). Actually I find your version more intuitive, so maybe change the order of those Haxe buttons? Also, the Edit/Buttons could be greyed out if there is no logic tree (operators do have a poll() method that can be used for this, you can look at the Haxe trait buttons for reference)

  • For the descriptions I would propose for the Edit button Edit this Node Tree in the Logic Node Editor and for the Get button Use the Node Tree from the opened Node Tree Editor for this trait or something like that.

  • Maybe, instead of the RIGHTARROW icon for the Get button, you could use the DOWNARROW_HLT icon or maybe even the IMPORT icon, this would look more like something is pulled from outside to the current trait.

  • Maybe From Node Editor is a better label/name for the Get button?


If you want some tips for Python:

  • You don’t need to use bpy.context all the time because there is a context parameter for a lot of methods. There is no real difference but it can save you some writing work.

  • None values are compared with is and is not instead of == and != in Python, but both ways do work

  • In Blender it is usually safer to unregister classes in the opposite order they were registered in, but it normally makes no real difference.

That was a lot (sorry!) but those are just very small details. Great work!

3 Likes

Is possible to create an “Edit” button for logic nodes that open Logic Nodes Editor floating window maximized? Blender has suck functionality: https://blender.community/c/rightclickselect/Xldbbc/

There is this functionality in Unreal and Godot, but i don’t had tested it enough to say if is better or not. Also such button for edit Shader Nodes in material tab is way good. Probably will be one more thing for https://github.com/armory3d/armory/issues/1825.

To each their own, I understand, but I’ll be honest… I hate floating windows.
In Blender it’s easy enough to create your own Armory layout.
This is what Mine looks like:

3 Likes

Thanks!

New version:

  • I find this arrangement more intuitive.
  • Done. He also added a check that if there is no “active” window with the Logic Node Editor, then the buttons will also be inactive - picture right (though, in order for this to happen, you need to close the window, and not just switch the mode).

  • Changed name, description and icon.

  • I tried to take into account Python notes

Script:
props_traits.py

2 Likes

When working with Blender, I didn’t feel the need for floating windows.
My option is located similar to the one shown by the @Morbott

1 Like

I also use nodes like that, but the real problem is when the logic starts to get big, you need to enlarge the screen at all times with each test you are going to do, and have to reduce the screen to be able to start the player.

Believe me, over time you will understand that with each click saved, your hand will thank you and even your mouse. Nodes have the ability to become incredibly confused when you have several of them.

Anyway, I only had a first experience with giant node trees and it was at the beginning (in a very simple game), but the workflow in relation to that at Godot seemed pleasant (as much as the visual script there is more complicated than the script itself).

Thank you for your replies! :slight_smile:

1 Like

Huuu… I recall there used to be a way to duplicate your window to a floating one… I don’t see it anymore. Maybe it got moved or removed. Hmmmmmmm

FOUND IT!
In the Node window, top left menu select View/Area/Duplicate Area into New Window
Capture
Does that help?
M

1 Like

I didn’t know about this shortcut, thank you. :+1:

Also there is some shortcuts you can use to speed up things: Shift + F1…F12 to change the window type and Ctrl+Space to toggle the maximization state of the current window (the one with the cursor).

The reason why i suggest more intuitive buttons, shorcuts and layouts is for new users. I can edit somethings that i think will improve the things for me, but the more users happy, the more hope for Armory.

There is something in the small details that changes “everything”. For example everytime adding a new material need to change it for Armory PBR. :slight_smile:

1 Like

Update:
Found a bug in the enable/disable button From Node Tree.
A new version: props_traits.py

1 Like