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

Visualize the separate concepts of tooling pivot and graphical data origin #2225

Open
0HyperCube opened this issue Jan 26, 2025 · 0 comments

Comments

@0HyperCube
Copy link
Member

0HyperCube commented Jan 26, 2025

There will be two different dot gizmos, which the Select tool's control bar shall display a dropdown to choose from. A checkbox beside these controls enables or disables the whole feature, and when disabled it uses the center of the current selection's bounding box. The 9-box widget that's presently in the control bar will become specific to the pivot mode— but when the feature's checkbox is unticked to use the bounding box center, we will show none of the 9 boxes as active while still letting the user click one to enable pivot mode. This would be grayed out entirely in origin mode. These same controls described above will be added to the Path tool's control bar, as well.

Currently, the pivot is used by the tooling. But that will adapt to the chosen mode once this issue is implemented, so the chosen mode's center of rotation/scaling is used by the following forms of tooling:

  • G/R/S
  • Resizing the corners of the transform cage when Alt is pressed. (Should transform cage rotation also use the bounding box center by default unless Alt is pressed?)

Albeit with some differences like our choice of labeling, this feature is sort of analogous to Blender's "Transform Pivot Point" menu:

Image

  • Bounding Box Center: behaves the same in Graphite; our equivalent occurs when disabled so this won't be part of the dropdown menu
  • 3D Cursor: equivalent to our pivot but it behaves differently
  • Individual Origins: behaves the same in Graphite; this is one of the origin's modes
  • Median Point: behaves the same in Graphite; this is one of the origin's modes
  • Active Element: behaves the same in Graphite; this is one of the origin's modes

Pivot

Image

This is the yellow (final color TBD) crosshair symbol. It's the temporary/transient pivot. Equivalent to Blender's 3D cursor, but isn't global to the document nor is it as persistent as the 3D cursor. It's used only for tooling, not part of the node graph data or document format. This is our current implementation, but it will need to be tweaked.

  • Currently, we store the pivot permanently on each layer, but this can lead to confusion if the user comes back later and finds it in an unexpected location (especially since scaling can affect it in weird ways). This also makes the code more difficult because we have to save tooling-level data into the serialized document. Remove the per-layer, persistent storage.
  • Make it so each layer that the user clicks will have the pivot set to its corresponding corner/midpoint/center of the 9-box widget (located in the tool's control bar). Switching from one layer to the next keeps that chosen position of the 9-box widget.
  • The user can drag the pivot crosshair gizmo anywhere in the canvas, disconnecting it from the chosen position in the 9-box widget. When disconnected, clicking away from the current layer (by deselecting it, or by selecting another layer instead; however not by partially extending/subtracting the existing selection) resets it, going back to the last selected position of the 9-box widget.
  • But the user can "pin" the dragged location:

    Then, no matter what selection changes occur, that remains the location of the pivot until unpinned or until clicking any of the 9 boxes in the 9-box widget again which unpins it. Perhaps double-clicking the crosshair gizmo can pin/unpin.

Origin

Image

This is the blue (final color TBD) dowel pin symbol. It's the origin ((0, 0) point) of the vector data's internal coordinate space. This is used when transforming in the Transform node's properties panel parameters, or when using the Copy to Points node. Its drag will be stored in the "Origin: Offset" parameter of the Transform node (but for now, we don't have that yet, so the origin is visualized but not draggable for now).

(This menu's scale and rotation parameters should also offer a way to edit those values factoring in the current pivot choice which would make it update its location together with the typed value for rotation or scale such that it treats the change as occurring with that temporary pivot.)

@0HyperCube 0HyperCube added the Architecture Involves architecture or engineering work or discussion label Jan 26, 2025
@github-project-automation github-project-automation bot moved this to Short-Term in Task Board Jan 26, 2025
@Keavon Keavon changed the title Seperate centre-of-transformation and layer origin Seperate tooling pivot and layer's graphical data origin Jan 26, 2025
@Keavon Keavon changed the title Seperate tooling pivot and layer's graphical data origin Select tool: visualize the separate concepts of tooling pivot and graphical data origin Jan 26, 2025
@Keavon Keavon removed the Architecture Involves architecture or engineering work or discussion label Feb 12, 2025
@Keavon Keavon marked this as a duplicate of #1530 Feb 13, 2025
@Keavon Keavon changed the title Select tool: visualize the separate concepts of tooling pivot and graphical data origin Visualize the separate concepts of tooling pivot and graphical data origin Apr 10, 2025
@Keavon Keavon added Good First Issue Good for newcomers and removed Good First Issue Good for newcomers labels Apr 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Short-Term
Development

No branches or pull requests

2 participants