f3d-app / f3d

Fast and minimalist 3D viewer.
https://f3d.app
BSD 3-Clause "New" or "Revised" License
2.55k stars 182 forks source link

Rework UI using ImGui #1245

Open mwestphal opened 5 months ago

mwestphal commented 5 months ago

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

lknknm commented 4 months ago

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:

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/

mwestphal commented 4 months ago

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.

lknknm commented 4 months ago

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

JPLost commented 1 month ago

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.

mwestphal commented 1 month ago

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

lknknm commented 2 weeks ago

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