Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sharing a material I made plus my thoughts about Material Maker and how to improve it #193

Closed
unfa opened this issue Oct 13, 2020 · 15 comments

Comments

@unfa
Copy link

unfa commented Oct 13, 2020

Hi! I've started doing some work in Material Maker and I love it.

Here's one of the materials I've made recently - I release it under CC-0 - enjoy!

image

unfa-Concrete_Wall.ptex.zip

graph

My overall feeling is that it's very powerful, but the UI and UX need work - I find it especially difficult to work with large node graphs. Just panning and zooming the node graph is difficult.
I know a lot of these limitations come from Godot - maybe material Maker could become a driving force in improving it upstream?

I think I can manage much more complex node graphs in Blender than in Material Maker, because:

  • I can zoom in and out without much limitation
  • I can use dot (no-op) nodes to create visually readable DAG paths (like PCBs) instead of getting tangled in unwieldy noodles that cross each other in every direction
  • I can use panels to group nodes visually and make it easier to move these groups around
  • I can drag a node onto a noodle to insert it between two other nodes
  • I can duplicate a node with it's original inputs staying connected
  • I can cut the noodles instead of disconnecting them one by one
  • I can create groups and re-use node groups much more easily, with finer control still being there

I think one of the easiest ways to improve this node editing experience is by allowing the users to zoom out far more.
Right now I feel like hitting my head on a low ceiling all the time when I try to zoom out more.

Also - a mini map of the node graph with the ability to pan with it would be very helpful.

I'm excited to see he Workflow nodes, trying to implement a way of merging sub-materials together - it'd be way easier to work this way instead of manually affecting every PBR map of my material by hand for every layer of detail. However I was unable to understand how these are supposed to work and how to use them.

Now - these are pretty fresh notes, I've been using Material Maker for about a week now - I am very, very excited for it, and it already can do amazing things, but I feel there's a need for many quality of life improvements and helping users manage large graphs.

Thank you for creating this software, and making it free for everyone.
This is wonderful!

PS: I'm sorry if this is a wrong place to post such a letter. I'll happily move it somewhere if need be.

@Calinou
Copy link
Contributor

Calinou commented Oct 13, 2020

Most of the changes you've requested must be done in GraphEdit/GraphNode, which is one of the most complex GUI nodes in Godot. It's all written in C++ and is built into the engine. There are many proposals about it. The main "driving forces" behind GraphEdit development are visual scripting and the visual shader editor.

Since many of these changes may involve breaking compatibility in subtle ways, this can't be done before Godot 4.0 is released. Also, since these nodes are not a development priority, they may not change significantly in 4.0 either. It all depends on how much work volunteer contributors will put into it.

I can zoom in and out without much limitation

Zooming is currently limited because it only scales the "final" image rather than properly scaling everything. If you were to zoom out too much, pretty much everything would become unreadable. I'm not sure if we have control over this in GDScript anyway.

I can use dot (no-op) nodes to create visually readable DAG paths (like PCBs) instead of getting tangled in unwieldy noodles that cross each other in every direction

I suppose this could be added in Material Maker by adding no-op nodes that take as little space as possible?

Also - a mini map of the node graph with the ability to pan with it would be very helpful.

See godotengine/godot-proposals#672.

@unfa
Copy link
Author

unfa commented Oct 13, 2020

Thanks @Calinou - I understand most of this needs to be addressed in Godot itself, and I also expect porting Material Maker to Godot 4 is going to be a major task once it's out.

I think text readability is not a concern when zoomed way back out. What I want to see is the layout of nodes. The structure -being able to zoom out and in with no limits lets me build a mental image of the node graph and manage them better, this is handicapped right now and it's difficult to find your way around large graphs.

Maybe I should start using groups aggressively to mitigate that problem, though they work way different than in Blender so I'm not sure how to use them properly right now.

They are probably something I should really stat using going forward.

@RodZill4
Copy link
Owner

Hmm I wrote Material Maker with some of those limitations in mind. So I totally agree that those improvements should be made, but you should definitely use groups in such a huge graph. You can use the comment node to document your graph as well, it is resizable and you can choose the background color (and yes it needs more love from me because editing the text is still a PITA).

Anyway, thanks for testing the "screenshot" feature with a real life example, and thanks for sharing this awesome material!

And yes porting this to Godot 4 will be a lot of work, but I just can't wait. Multiple windows, probably new possibilities with shaders... This Godot release will be awesome.

@RodZill4
Copy link
Owner

RodZill4 commented Oct 13, 2020

@unfa BTW, would it be possible for you to share your material in the subreddit? Would be a pity to hide it in a feature request...

Oh and please don't hesitate to show other materials if you have some (just screenshots if you don't want to share the graph).

@unfa
Copy link
Author

unfa commented Oct 13, 2020

I'd totally love to share this material there - could you give me a link?

@RodZill4
Copy link
Owner

RodZill4 commented Oct 13, 2020

There's an entry in the Help menu for the subreddit.

https://www.reddit.com/r/MaterialMaker/

@unfa
Copy link
Author

unfa commented Oct 13, 2020

Posted on Reddit:
https://www.reddit.com/r/MaterialMaker/comments/jaobw6/a_weathered_concrete_wall_material_made_in/

I don't know why my account has a random name. I tkink I'll delete it and create a new one, but I don't have time to do that right now.

@Jummit
Copy link
Contributor

Jummit commented Oct 14, 2020

I can use dot (no-op) nodes to create visually readable DAG paths (like PCBs) instead of getting tangled in unwieldy noodles that cross each other in every direction
I can drag a node onto a noodle to insert it between two other nodes
I can cut the noodles instead of disconnecting them one by one

These would be possible if godotengine/godot#40513 would be merged.

@RodZill4
Copy link
Owner

@Jummit Do you think this PR will be merged? When?

@Jummit
Copy link
Contributor

Jummit commented Oct 14, 2020

It depends on an engine rendering fix, and even if that is merged, it'll take a while.

@RodZill4
Copy link
Owner

RodZill4 commented Oct 16, 2020

Hmm maybe we could fork Godot to get those fixes early. Material Maker will need EXR support in runtimes anyway (and a way of getting an error message from shaders would also help a lot).

@Calinou , is there a way I can force Godot to include tinyexr when compiling runtime execs (non-tool), or do I have to modify config.py in the module?

@Calinou
Copy link
Contributor

Calinou commented Oct 20, 2020

@Calinou , is there a way I can force Godot to include tinyexr when compiling runtime execs (non-tool), or do I have to modify config.py in the module?

Import functionality isn't included in non-editor builds to decrease binary sizes. Itg would require a pretty significant amount of work to allow building non-editor builds with import functionality; see godotengine/godot-proposals#1632.

I suppose an easier way to fix this would be to implement godotengine/godot-proposals#676 for the EXR format.

@Calinou
Copy link
Contributor

Calinou commented Nov 9, 2020

A built-in GraphEdit minimap is being worked on in godotengine/godot#43416.

@fire
Copy link

fire commented Jan 12, 2022

I second Image.load_exr_from_buffer() for run-time EXR loading godotengine/godot-proposals#676 and symmetrical saving.

@RodZill4
Copy link
Owner

Many issues here were fixed (minimap, reroute nodes...)

@RodZill4 RodZill4 closed this as not planned Won't fix, can't repro, duplicate, stale May 26, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants