Closed kwokcb closed 11 months ago
All UI is uniformly "grey" and aesthetically "dull"
Add node color themes.
https://github.com/AcademySoftwareFoundation/MaterialX/issues/1373
It is very hard to distinguish data flow paths as they show up as overlapping lines with uniform appearance
From Lee Kerley: Color graph edges to help to improve readability
It is very hard to find specific node types such as inputs, outputs, renderables, and conditions
Add in color coding based on node-group or category. Note that this has overlap with color theming.
Note that node coloring is also mentioned by @dbsmythe in this grab-bag issue: https://github.com/AcademySoftwareFoundation/MaterialX/issues/1207
Text labels/ fields in the property editor and node graph are hard to distinguish from each other (e.g. for importance, for categorization etc)
( Pulled from #1207 from @dbsmythe )
Visual clutter and space taken up for node ports on nodes
Smarter Information hiding from @jstone-lucasfilm
Example from Houdini showing collapsible grouping (as well as pin and edge coloring by type)
Connected Inputs and Outputs don't show current (receiving or outgoing) values making it harder to debug the flow / state of a graph at a certain point ("does this input actually receive what I think it does")
Display readonly values next to [type]
(lower contrast, visually clear that they can't be edited)
When trying to resize the window sometimes the inner UI layout element gets selected (because it sets the arrow cursor on windows as well)
Disable resizing behaviour of inner layout element (?)
Refreshing a graph has to be done by re-opening the file. When debugging a graph that is generated by external tools I currently have to go to "File/Open File" and open the same graph again
Add shortcut to reload the currently opened graph from disc (e.g. CTRL+R or F5)
Invalid graph information is not displayed in the graph and just in the console window
Highlight nodes that are invalid / produce errors and display the error information in e.g. the Node Property Editor (?) as well
When adding a new node with keyboard (ENTER) the node list stays open and hides the newly created node which is confusing ("was the node created? where is it?")
Hide the node list when selecting a node and accepting with keyboard (ENTER)
Missing undo functionality
Add undo/redo functionality
Already connected inputs have to first be disconnected to be then able to make a connection to another output
Allow updating input connections by dragging another output connection over the port (replace the connection)
Connections dont start / end at the input/output dots but instead seem to use the center of the text. This is on windows 10. This is merely a visual problem :)
Connections should start / end at the node edge or at the dot
Connections only work one-way / connections can not be made by dragging Input to Output ports
Please also see the comment below: https://github.com/AcademySoftwareFoundation/MaterialX/issues/1398#issuecomment-1684194636
Allow connecting ports by dragging input over output port
Enabling Show All Inputs
toggle pushes the toggle to the end of the list which forces scrolling to close / hide the list again
Toggle stays at the same position and behaves more like a unfold
header item
To illustrate:
Another possible idea would be to have a list popup which can be used to selectively add inputs into the UI (similar to the "Add nodes" popup list)
Material has to be saved to see the actual material code that is being written
Add Viewer/Panel to display the MaterialX code that I would get when saving the graph (+1 if the code can highlight the part that I have currently selected in the visual graph + also visually mark/highlight the input nodes maybe)
CTRL+S
always prompts with the filepath where the graph should be saved to (even if it was saved to a particular location already before)
Remember last save location and override the file with CTRL+S
as well as add CTRL+Shift+S
for saving to a new location
Nice to have: hot reload (on material change on disc)
Graph Window doesn't show name of currently opened graph which becomes a problem when having multiple GraphView windows open ("I want to look at the marble_material")
Show name of currently opened graph in the window (if any), e.g. marble_material - MaterialX Graph View
title should start with the material name as it might be easily cut off otherwise, see screenshot below)
Selecting and cutting a group of nodes (CTRL+X) does sometimes only cut the connection and sometimes paste only the nodes BUT without the connection (loose the connections)
Connections should not be lost. When selecting nodes it should not just remove the connection. The nodes should be pasted in the same connected state as before
editing swizzle channels is very very slow (everything freezes for 2-3 seconds) and I'm on a beefy PC
Exported graphs all have position values baked in which makes the graph harder to read when trying to understand / learn internals
Add option to save without position / optional (meta-) data
On windows GraphView doesn't remember which graph I had opened before and where the window was on the screen
Remember last opened material + position on screen when starting GraphView
Selecting a nodegraph node recompiles the material
Dont recompile material when selecting a nodegraph node
Open graph via file association is not supported
No way to remove inputs (e.g. if I have changed some values in the standard surface shader during testing)
Add a way to reset inputs to their default values which should also (perhaps) hide them again if "Show all inputs" is enabled.
Could be a context click option?
Property Editor UI is very cramped and leaves very little space between categories making it hard to read
Add more space between items that don't immediately belong together For example between Category and Inputs headers should be ~half a line vertical space Similarly it would be helpful if the buttons below Inputs (namely "Show all inputs" and "Node Info") would be pushed down half a line. Header elements like "Category" and "Inputs" could be bold
Input elements could use the available horizontal space more properly:
Input element control items should be aligned for better readability
The console window doesn't print a message when i open a new graph. This makes it difficult to understand if validation errors in the console window where caused by the newly opened graph or were from a graph previously opened.
Print a short message before opening a new graph to the console
<timestamp> Opening <filename> at <filepath>
Dragging a node does not select it. I was multiple times fooled by thinking I had the node selected and then e.g. delete the wrong node
I currently have to click the node to make a selection
Dragging a node should select it (especially since it visually looks selected)
Example from Unity ShaderGraph
Property editor doesnt reflect multi-selection. It always just displays one of the selected nodes
Property editor should render UI for all nodes selected.
Copy paste of a node has unexpected inputs/defaults, pasted node is in a different state
Copy paste should produce a copy of the node, the UI should look identical
Automatic naming of nodes is confusing / misleading.
1) create a constant_vector2
node -> it is named constant_vector2
(also reflecting the type of the node, that's good)
2) create another constant_vector2
node for the second time -> it is named constant_vector3
Node names ending with a number (reflecting their value type) should not just increment
Perhaps the value type should not be included in the name but displayed differently on the node? Then it would become something like: constant_2
and vector3
be rendered elsewhere on the node (?)
Slots could indicate the value type
value
would become value (4)
(see screenshot below from Unity) value (xyzw)
and value(rgba)
which would indicate the type (might not work so well for matrix types tho)Example in Unity
Some input fields are very small and cutoff content
Use the horizontal space available
somewhat related to the proposal mentioned above: https://github.com/AcademySoftwareFoundation/MaterialX/issues/1398#issuecomment-1683723538
Environment can not be changed which makes visual comparisons in some cases very hard / impossible
Add option to change environment map (e.g. specify a EXR or HDR texture)
Scroll in PropertyEditor does also zoom in viewport in some cases Viewport interaction doesnt seem to check / play well with the scrollview
Errors are hard to debug without visual indication / validation errors
Visualize invalid connections and nodes
Trying to delete character in string
field with DELETE key does delete the currently selected node
When creating a new material I find myself always creating the same basic material
new
could have e.g. a standard_surface
material already setup
or it could work like in Blender with a template material stored somewhere in the installation directory that I could also override and change to my liking.
I know (or think) it currently opens the marble material but I don't want to modify example materials for that purpose :)
Connections sometimes visually work both ways but are not actually working which is very confusing when debugging
Related to the comment above: https://github.com/AcademySoftwareFoundation/MaterialX/issues/1398#issuecomment-1680203806
Add file drop support to open a graph
Editor doesnt have a file icon (the same is true for the MaterialX Viewer)
Inputs list has unnecessary scrollbar
Alignment of output slots is not working correctly in certain cases
uiname
is not used for node inputs (e.g. to name combine vector3 inputs x y z
instead of in1 in2 in3
)
Thanks so much for this list, @marwie and @kwokcb, and I'm marking it as a Good First Issue for our upcoming Dev Days event in October, since developers can select a single issue from this list to tackle in a short time period.
Problem
Graph Window doesn't show name of currently opened graph which becomes a problem when having multiple GraphView windows open ("I want to look at the marble_material")
Proposal
Show name of currently opened graph in the window (if any), e.g.
marble_material - MaterialX Graph View
title should start with the material name as it might be easily cut off otherwise, see screenshot below)
Hey @jstone-lucasfilm , I had a quick look at this one to get myself more familiar with the document structure in MaterialX. I have a "fix" that calls glfwSetWindowTitle
from the Graph::drawGraph
function. I am not a big fan of this as it requires passing the GLFWwindow down from "main" to the above function call. I preferred it slightly over extracting the document out of the Graph class though, but both feel a bit mweh.
Happy for better suggestions, or if this is the best we can do without doing bigger refactors I am happy to make a PR.
Thanks for taking a look at this one, @sandersteen, and I'm CC'ing @lfl-eholthouser for her expertise on the systems that you're asking about in this question.
Hi @sandersteen! Thanks for looking at the issue. For the extracting the doc from the graph class option, would it be possible to just extract the name of the document instead of the whole document? Or are other aspects of the document needed?
@jstone-lucasfilm I'm thinking of having a go at issue https://github.com/AcademySoftwareFoundation/MaterialX/issues/1398#issuecomment-1680360553. Hope that one is available.
@n-jay Thanks for taking a look at this subtask, and I'm CC'ing @kwokcb, who did some closely related work in #1499.
I believe there are aspects of the subtask (e.g. the Save/SaveAs distinction) that didn't quite make their way into the final commit for #1499, but this earlier work should make a great starting point.
Noted @jstone-lucasfilm, didn't notice that PR. Seems like I'd been running an outdated local main branch
but this earlier work should make a great starting point.
Yes, some of the doubts I had about the original implementation such as the _materialFilename
had been addressed here, so it's cool to know I've been going down the correct path. 😄
I look forward to Bernard's response.
This groups a set of suggestions / proposals for improving how users interact with the Graph Editor. The hope is to take the "best" ideas and designs and incorporate them if they will help interaction / usability.
Each item below is broken down into:
Folks can add / modify each item. Please up / down vote an item.
@lfl-eholthouser is the main stake-holder for this.