Parent mode for Location Transform Orientation #91827

Open
opened 2021-09-29 21:21:10 +02:00 by Luciano Muñoz Sessarego · 24 comments

This has come up several times, and is something we need a lot in animation:

What is it?
Basically a way to display the Location XYZ orientation based on the parent of the selected object/bone/control.

When any objector control is parented to an other it's location transforms depends on the parent, so if i rotate the parent in any weird angle, the locations of the child (the one i want to move) depend on that object, making any of the transform orientation options make no sense when you want to use a specific axis unless you do it from the graph editor or from the transform values.

transform orientations.webm

Propolsed solution:

Adding a new transform orientation (for location only) that is called parent, where it will always look at the parent transforms of the seelected object to orient the transform gizmos, when there is no parent, the "parent" is the world so it'd show the orientations based on that.
That'll make it fast, easy and really a great improvement in the animation workflows.

This has come up several times, and is something we need a lot in animation: What is it? Basically a way to display the Location XYZ orientation based on the parent of the selected object/bone/control. When any objector control is parented to an other it's location transforms depends on the parent, so if i rotate the parent in any weird angle, the locations of the child (the one i want to move) depend on that object, making any of the transform orientation options make no sense when you want to use a specific axis unless you do it from the graph editor or from the transform values. [transform orientations.webm](https://archive.blender.org/developer/F10676104/transform_orientations.webm) Propolsed solution: Adding a new transform orientation (for location only) that is called parent, where it will always look at the parent transforms of the seelected object to orient the transform gizmos, when there is no parent, the "parent" is the world so it'd show the orientations based on that. That'll make it fast, easy and really a great improvement in the animation workflows.
Author
Member

Added subscriber: @LucianoMunoz

Added subscriber: @LucianoMunoz

Added subscriber: @JasonSchleifer

Added subscriber: @JasonSchleifer

Oh my gosh, yes please.. I would love this so much.

Oh my gosh, yes please.. I would love this so much.

Added subscriber: @AndyCuccaro

Added subscriber: @AndyCuccaro
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Member

Changed status from 'Needs Triage' to: 'Needs Developer To Reproduce'

Changed status from 'Needs Triage' to: 'Needs Developer To Reproduce'
Member

Nothing to triage, fully #animation_rigging realm.

Nothing to triage, fully #animation_rigging realm.

Added subscriber: @dr.sybren

Added subscriber: @dr.sybren

I don't quite understand. The Transform panel always shows the same thing: the selected thingy's local transform. In other words, it just shows the properties of the selected thingy. This is shown regardless of the selected Transform Orientation, as that option only changes the orientation of the transformation interactions in the 3D Viewport (widgets, operators, etc.).

Is this a request to make the Transform panel show different values depending on the chosen Transform Orientation? Or to have a new panel/tab that shows this? Otherwise I don't see how a new Transform Orientation choice is going to be useful, because without more changes, it won't be reflected in the Transform panel anyway.

I don't quite understand. The *Transform panel* always shows the same thing: the selected thingy's *local transform*. In other words, it just shows the properties of the selected thingy. This is shown regardless of the selected *Transform Orientation*, as that option only changes the orientation of the transformation interactions in the 3D Viewport (widgets, operators, etc.). Is this a request to make the Transform panel show different values depending on the chosen *Transform Orientation*? Or to have a new panel/tab that shows this? Otherwise I don't see how a new Transform Orientation choice is going to be useful, because without more changes, it won't be reflected in the Transform panel anyway.

Added subscriber: @angavrilov

Added subscriber: @angavrilov

@dr.sybren It's a guess, but I think @LucianoMunoz may mean an orientation mode that has the arrows aligned to the transform channels, rather than true local space. I.e. channels are applied in the location -> rotation -> scale order, so rotating the object does not actually affect the interpretation of location channels, but in Local mode the widget is rotated. This vaguely feels similar to the intent of the Gimbal mode (for rotation), but the arrows are rotated in that as well...

I wonder if rather than a new mode this could be a redesign of the Gimbal mode to produce correct channel alignment not only for rotation, but location and scale as well?

@dr.sybren It's a guess, but I think @LucianoMunoz may mean an orientation mode that has the arrows aligned to the transform channels, rather than true local space. I.e. channels are applied in the location -> rotation -> scale order, so rotating the object does not actually affect the interpretation of location channels, but in Local mode the widget is rotated. This vaguely feels similar to the intent of the Gimbal mode (for rotation), but the arrows are rotated in that as well... I wonder if rather than a new mode this could be a redesign of the Gimbal mode to produce correct channel alignment not only for rotation, but location and scale as well?

Added subscriber: @Pipeliner

Added subscriber: @Pipeliner
Author
Member

Exactly what Alexander said.

Exactly what Alexander said.
Member

Added subscriber: @BClark

Added subscriber: @BClark
Member

Yes have a translate manipulator that always displayed/aligned to the parent space of the selection, instead of having the translate manipulator "orient" to aim where the selection was rotated as Local does now, would be great.

Yes have a translate manipulator that always displayed/aligned to the parent space of the selection, instead of having the translate manipulator "orient" to aim where the selection was rotated as Local does now, would be great.

Changed status from 'Needs Developer To Reproduce' to: 'Confirmed'

Changed status from 'Needs Developer To Reproduce' to: 'Confirmed'

👍

:+1:
Member

Added subscriber: @PaoloAcampora

Added subscriber: @PaoloAcampora
Member

I have a starting point: working only for objects so far. Patch attached

parent_mode_cropped.mp4

parent_mode_v001.patch

I have a starting point: working only for objects so far. Patch attached [parent_mode_cropped.mp4](https://archive.blender.org/developer/F10710826/parent_mode_cropped.mp4) [parent_mode_v001.patch](https://archive.blender.org/developer/F10710837/parent_mode_v001.patch)

In #91827#1229315, @PaoloAcampora wrote:
I have a starting point: working only for objects so far. Patch attached

I really think the 'parent' thing should not be taken at face value. What @LucianoMunoz was asking for is arrows that match transform channels, which is basically 'local without local rotation', includes effects of the bone rest pose or object parent inverse matrix, and is more like Gimbal orientation for rotation. I also really think that unless there is a compelling reason not to, this functionality probably should be added to Gimbal mode instead of adding a new one.

> In #91827#1229315, @PaoloAcampora wrote: > I have a starting point: working only for objects so far. Patch attached I really think the 'parent' thing should not be taken at face value. What @LucianoMunoz was asking for is arrows that match transform channels, which is basically 'local without local rotation', includes effects of the bone rest pose or object parent inverse matrix, and is more like Gimbal orientation for rotation. I also really think that unless there is a compelling reason not to, this functionality probably should be added to Gimbal mode instead of adding a new one.
Member

Hi,

I agree with parent space being a more subtle concept: objects should take their parent inverse into account, and bones have their own space to deal with. I have to delve more into the blender source and see how the transforms are generated before I can say which formula is better (parent * parent_inverse? world * local_inverse?).

I understand the Gimbal analogy, yet I'm not sure it would be correct to display a different set of axis with the transform set to gimbal: I think that's why they have kept the "parent" term in Maya even if Maya's stack is more convoluted than blender's.

Yet, I concede that nobody I know has reasons to animate translations with gimbals and rotations with parent.

Here's what I would do:

  • Instead of Gimbal, it's called "Channels"
  • When in "Channels Mode", the rotation gizmo shows the Gimbal rings, the move gizmo shows the "Parent not at face value" arrows :)

That would make it esplicit, functional and original, but now this has become a design proposal. If it gets accepted, I'll be willing to work on that

Cheers!

Hi, I agree with parent space being a more subtle concept: objects should take their parent inverse into account, and bones have their own space to deal with. I have to delve more into the blender source and see how the transforms are generated before I can say which formula is better (parent * parent_inverse? world * local_inverse?). I understand the Gimbal analogy, yet I'm not sure it would be correct to display a different set of axis with the transform set to gimbal: I think that's why they have kept the "parent" term in Maya even if Maya's stack is more convoluted than blender's. Yet, I concede that nobody I know has reasons to animate translations with gimbals and rotations with parent. Here's what I would do: - Instead of Gimbal, it's called "Channels" - When in "Channels Mode", the rotation gizmo shows the Gimbal rings, the move gizmo shows the "Parent not at face value" arrows :) That would make it esplicit, functional and original, but now this has become a design proposal. If it gets accepted, I'll be willing to work on that Cheers!

Added subscriber: @Cigitia

Added subscriber: @Cigitia

Added subscriber: @ChristiaanMoleman

Added subscriber: @ChristiaanMoleman

Added subscriber: @kpavicic

Added subscriber: @kpavicic
Philipp Oeser removed the
Interest
Animation & Rigging
label 2023-02-09 14:35:30 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
12 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#91827
No description provided.