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

Make GUI for slice renderer and contour renderer consistent #3029

Closed
clyne opened this issue Feb 15, 2022 · 3 comments · Fixed by #3037
Closed

Make GUI for slice renderer and contour renderer consistent #3029

clyne opened this issue Feb 15, 2022 · 3 comments · Fixed by #3037

Comments

@clyne
Copy link
Collaborator

clyne commented Feb 15, 2022

The Slice and Contour renderers currently have inconsistent GUIs for manipulating the slice plane

It should be noted that the contour UI is simply an extension to the slice UI; both provide specification of orientation through rotation about the coordinate axis, and both all the specification of position with by selecting a point in the domain that the plane passes through. The contour UI adds two additional features: 1. The option to specify the orientation with a normal to the plane, and 2. the ability to specify the position of the plane as an offset along the normal from a point in space.

If the user knows exactly where they want the plane, and how they want it oriented, both UIs operate in the same way and work well. However, in the case that the user only knows apriori how they want to orient the plane, but not where they want to position it, I find the offset + position a much simpler interface than what is possible with the slice UI. Even in the simplest case of an axis-aligned plane, it is not at all obvious which of the three position sliders to use in the slice interface to properly move the plane. If the plane is not axis aligned, it is very difficult to sweep it through space along a normal with the slice UI.

@clyne clyne added this to the 3_6_0 Release milestone Feb 15, 2022
@clyne
Copy link
Collaborator Author

clyne commented Feb 15, 2022

Input from @sgpearse

To optimize Vapor's usability, options that serve the most common use cases should be made prevalent. The common use cases should require little effort as possible for the user to achieve a desired result. Less common use cases should require additional exploration of the GUI to achieve results.

We can currently position our slice/contour planes in two ways; through the origin and through the offset controls. These two approaches serve the three use cases listed below in order of their simplicity and commonality.

Use case 1- The simplest and most common. Requires 4 inputs (XYZ rotation + offset).

  1. Rotate
  2. Explore cross sections via offset parameter

Use case 2 - More complex and less common. Needed when a user knows an exact location that the slice/contour must intersect. Requires 6 inputs (XYZ rotation + XYZ origin).

  1. Rotate
  2. Set precise XYZ origin parameters

Use case 3 - Most complex and least common. Needed when a user needs multiple slices that are offset from a point of origin. Requires 7 inputs (XYZ rotation + XYZ origin + offset)

  1. Rotate
  2. Set XYZ origin parameters
  3. Duplicate slice
  4. Offset new slice

By presenting offset and origin controls simultaneously, we present seven parameters for our users to understand, in order to satisfy use case 3. This is a lot, and I think we need to be sensitive to this.

The biggest challenge I have with using tools such as Vapor is that it takes too much time to produce a nice visualization (countless options to fine tune, difficult to script etc.).
-Falko Judt

We already allow the user to select the mode for orienting the planes (rotation vs. normal).
I'm asking that we add a drop-down menu that allows the user to select their mode of positioning the plane: Offset mode, and Origin mode.

By defaulting to Offset mode, we would only present four controls to the user - XYZ rotation, and offset. This is by far the simplest and most intuitive way to configure the plane. With a little exploration, Use case 2 can be satisfied by switching to Origin mode. Use case 3 can still be satisfied by setting an initial plane in Origin mode, duplicating that plane, then switching to Offset mode in the new renderer. We can satisfy all use cases this way, without presenting a daunting set of controls.

Thoughts?

-Scott

@clyne
Copy link
Collaborator Author

clyne commented Feb 15, 2022

I agree with your main points @sgpearse. I'm not sure toggling between origin/offset makes the most sense because they can be combined and used together. How about simply show/hide the origin? Possible @StasJ ?

@StasJ StasJ self-assigned this Feb 15, 2022
@clyne
Copy link
Collaborator Author

clyne commented Feb 15, 2022

@StasJ will add a show/hide option for origin specification. And @sgpearse will then migrate to slice renderer.

clyne pushed a commit that referenced this issue Feb 16, 2022
* add a show/hide option for origin specification

* clang-format pre-push hook
@clyne clyne added the Fixed label Feb 17, 2022
@clyne clyne closed this as completed Feb 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants