f3d
f3d copied to clipboard
Rework UI using ImGui
Context
F3D has a simple UI using VTK text actor. For many reasons, this UI is not satisfactory. Lets create a new UI using ImGui
Hello, For this matter, I would propose ourselves to ask and answer some questions of what we would like to achieve with the UI for F3D. This way maybe we can understand what features to build, how they will look and feel to the User and also how it's going to make more sense with APIs/Bindings and F3D from CLI. I can start with the following questions:
- What type of visual clarity do we need (i.e. extreme minimalism, minimalistic, hideable, etc)?
- Are we going to integrate it with CLI in any shape or form? Like adding a Console inside the program to execute commands (for example in games like CS2, Quake, etc).
- Do we need the Cheatsheet to be more "visual", for example having a keyboard layout drawing with each hotkey? Or will it remain just the same with different styling?
- Are we going to have PopUp windows for users to input/output data (like 3DSMax or Maya) or will all be condensed into the same window (Like Blender)?
In addition to the last question, I would like to point out that some of the Human Interface Guidelines from Blender would also make sense to F3D:
The Blender user interface is based on 3 main principles:
- Non Overlapping: The UI permits you to view all relevant options and tools at a glance without pushing or dragging windows around.
- Non Blocking: Tools and interface options do not block the user from any other parts of Blender. Blender doesn't pop up requesters that require the user to fill in data before things execute.
- Non Modal: User input should remain as consistent and predictable as possible without changing commonly used methods (mouse, keyboard) on the fly.
For further reading: https://developer.blender.org/docs/features/interface/human_interface_guidelines/
What type of visual clarity do we need (i.e. extreme minimalism, minimalistic, hideable, etc)?
minimalist, hidable
Are we going to integrate it with CLI in any shape or form?
Yes, #595
Do we need the Cheatsheet to be more "visual", for example having a keyboard layout drawing with each hotkey?
We will see what ImGui offers, but no need to get crazy here, info should just be clear.
Good link from blender imo.
In my personal opinion, I prefer the way Blender treats UI because you don't have "fluctuating", additional windows besides the main window of the application. This way, whenever you bring up a modifier in Blender or any other feature, it is all concentrated into the same window, much like a web browser or something the like, without the need of closing stuff nor pressing additional buttons with the mouse. We could use the same principle with F3D own features and UI design.
Integration with f3dCommand would be cool in form of a console. It could just slide down inside the F3D window when you press ~
.
I've been looking for simple viewer that can have it's own built gui. Currently Open3D has the closest approach. But probably I would need primarily check boxes, sliders, rgb value changer and textbox with buttons for file/models selection. Trimesh or Numpy for data manipulation.
@JPLost please note we will be using ImGui to create a similar UI to the current UI. No checkboxes or mouse driven UI.
UI Rework Figma file
As per our latest discussions, the new Figma File for the F3D UI Rework is located in the newest F3D Figma Account. There I included my suggestions for a new UI design having in mind we'll be using ImGui, as well as previous discussions over Discord. Suggestions, help and insights are always appreciated!