f3d icon indicating copy to clipboard operation
f3d copied to clipboard

Rework UI using ImGui

Open mwestphal opened this issue 1 year ago • 6 comments

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

mwestphal avatar Jan 31 '24 07:01 mwestphal

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/

lknknm avatar Feb 20 '24 17:02 lknknm

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.

mwestphal avatar Feb 25 '24 08:02 mwestphal

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 ~.

lknknm avatar Feb 25 '24 18:02 lknknm

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 avatar May 23 '24 14:05 JPLost

@JPLost please note we will be using ImGui to create a similar UI to the current UI. No checkboxes or mouse driven UI.

mwestphal avatar May 23 '24 18:05 mwestphal

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!

You can find the file here

lknknm avatar Jun 18 '24 06:06 lknknm