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

Transform system redesign #1530

Open
Tracked by #144
0HyperCube opened this issue Dec 20, 2023 · 0 comments
Open
Tracked by #144

Transform system redesign #1530

0HyperCube opened this issue Dec 20, 2023 · 0 comments
Labels
Feature New feature or request Rust Involves Rust programming for the backend

Comments

@0HyperCube
Copy link
Member

0HyperCube commented Dec 20, 2023

Design and implement the new pivot system containing a pivot stored in layer space (?) instead of normalised bounding box (so a pivot of (0.5, 0.5) would no longer be in the middle of the bounding box as it is currently). Note that this will break things such as rotating around the pivot, transformations applied by tools, etc. Careful thought should be applied as to how exactly the pivot should be stored.

"Pivot" concept is split into "reference point" and "pivot"

  • Reference point: after the graph has rendered, this is the point from which we measure X and Y location
  • Pivot: an Option<> which starts out as None, it must be set (either by a Set Pivot node or a widget next to anything, like Scale or Rotation, which requires it)

Also we likely don't use the nine-square widget for pivot to ensure people think of it only as the reference point concept

So the Transform node changes like so:

  • "Pivot" becomes "Reference Point"
  • Rotation and Scale get a "Pick Pivot" widget which lets you place a pivot in the artwork, it's required if the pivot is None
  • Also: add skew? And non-affine?

Goals: don't have shift caused by upstream changes, thus we can't use the bounding box as a pivot reference, instead we have to explicitly have the user set any desired pivots


As part of combining issue #534 into here, here's the description that was part of it:

  • Folders have transforms?
  • Showing skew in properties panel
  • Non-affine perspective transforms (dragging each corner of the bounding box to an arbitrary place, except concave)
  • Inconsistent behaviour between lines / polylines and other shapes (render_index in simple_shape)
  • Allowing outline width to be scaled / not as desired
  • How to display layer & folder(if applicable) transforms in properties panel (i.e. do we show layer transform or bounding box, and how is it transformed etc.)
  • Clear reference for contributes / artists
@0HyperCube 0HyperCube added Architecture Involves architecture or engineering work or discussion Time Sensitive Blocking another task that needs to be worked on now Rust Involves Rust programming for the backend Graphene Involves the node graph system/engine used by Graphite labels Dec 20, 2023
@Keavon Keavon changed the title Redo pivot system and redo transformations Transform system redesign Feb 15, 2024
@Keavon Keavon added Feature New feature or request and removed Time Sensitive Blocking another task that needs to be worked on now Architecture Involves architecture or engineering work or discussion Graphene Involves the node graph system/engine used by Graphite labels Jun 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature New feature or request Rust Involves Rust programming for the backend
Projects
Status: Short-Term
Development

Successfully merging a pull request may close this issue.

3 participants