Transform Tools: Perform on a base point #66424
Labels
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
11 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#66424
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Introduction
Before we delve into the topic, it's good to keep in mind that the transform snap is also used for:
The goal of this topic is:
The main topic addressed here is the introduction of a interactive mode for setting a snap source (See terminology).
Terminology
Snap With
options:Closest
,Center
,Median
andActive
).Current snap origin point limitation
Currently, a fixed snap point can be obtained through the
Snap With
options.But it's tricky for the user to define a snap source point. Even more having a complex geometry.
Because of this inconvenience, the user resorts to impractical solutions to get a base point for snapping in the geometry.
See this example of an "impractical" use:
{F11714181, layout=left, width=960, alt="The user used the cursor (which can be snapped) to choose the snap origin point."}
In this case, the user resort to the cursor (which can be snapped) to choose the snap source point.
While it is possible to work around this current limitation, it is important to reduce the number of steps and allow the user to set a snap source point through an optional interactive mode during a transformation.
Proposal - Interactive Mode for Editing a Snap Source
The proposed solution is to be able to move the current snap source point through a modal modifier activated with a key (eg. B).
The snap source point can thus "snap" to the elements in the scene (vertex, mid-edge, Lamp, …) during this mode.
{F11820460,, layout=left, width=960, alt="Base Point Snap, example of transform operation via the shortcut (not the tool). After pressing g and the snap base change shortcut (e.g., shift + ctrl) the user set the base point. The base point is then visible until the end of the operation. The z axis constrains the final position."}
Implementation Details
Move
,Rotate
andScale
transform modes.Builds
https://builder.blender.org/download/experimental/transform-snap-base/
Related Links
https://developer.blender.org/T45734
https://developer.blender.org/D7000
https://developer.blender.org/D9415
https://www.youtube.com/watch?v=KxMXGVmA1cE
https://www.youtube.com/watch?v=gfnX5MYXNfk
Attached #66484 with a proposal to handle base point.
We are currently modifying NP_Station to make object snapping suitable for architectural tasks.
Can be interesting.
https://blenderartists.org/t/np-station/686462/218?u=1d_inc
Also, birth of point based moving anf copying in raw representation
https://github.com/Korchy/1d_np
Finally!
A concept we were struggle for so long time.
Generalized proposal, that extends default tools and covers all possible variations of alignation:
SNAPS_B.A.S.E. proposal.pdf
The idea is good. But I start to worry when modal keymaps have 3 entries.
We will need to evaluate this as soon as the base point is implemented.
But it looks promising ;)
Thanks)
Prototypes of this concept, shown on GIF's, are already useful a lot, but requires creating/deleting empties, that causes problems, espesially in heavyweight scenes (> 30000 objects), where creating/deleting is hard and painful.
Nice concept, Paul.
If i may point out, there is a big chance a specific user would utilize these transforms with the same settings throughout a session (e.g. rotation with base point around z axis). That leads to conclusion it would be nice if the tool settings which would probably appear in the top bar remain the same until the user changes them again. So - if the first time you were required to sequentially press RB3Z, the next time the settings would automatically be set to 'rotation with base point around z' and the user would be required to press only 'R'.
Of course, that not being the optimal behavior for all users, an additional setting (check mark) with the 'save settings' option on the top bar would be nice also.
Thank you!
Well, as practice shows, saving any kind of settings can cause difficulties with their organization.
I don't think, that it will be good for master - it usually provides pretty much straightforward solutions with fixed keymaps, where actions on hotkeys are predefined strongly, but it can be an excellent realization for an addon.
However, if to remove "R" shortcut from it and replace it with abstract "Repeat last transform operation with it's last mode" function from spacebar menu,
that will work like Shift+R (repeat last action), but considering transform operations only - that can be pure solution, that leaves keymap straightforward, and, probably, will fit master conditions.
Also, F4 hotkey seems to be free both for object and edit modes, so it can be assigned to that function if desired.
How do you think?
I have some experience with 'repeat last command' operators in CAD apps, they are actually very useful, practically indispensable, boosting the speed of editing perhaps 2x. But - from my experience i myself rarely use the same transform operation more than once in a row, e.g. rotate around z than again rotate around z. It is more like - rectangle / stretch / move / align / extrude /poly / poly / poly / poly (repeat last command), trim / trim / trim / extend / rectangle / move etc. So, while for poly or trim commands 'repeat last command' operator is very useful, other commands usually benefit from remembered settings (rectangle, move, align, rotate...). I kinda feel the 'repeat last command' operator has it's place in the editing pipeline independently from saved operator settings, and should be incorporated eventually, regardless of the former.
However, if you think it would be tricky to implement 'remember settings for next activation', yeah, i guess specific keymapping could step in as a fall-back solution.
Yes, default "repeat last" function should be intouched.
it will be nice to have separate "repeat last transform setup only" function added, that will behave the same way, but will envoke only latest transform operation setup.
It will allow to overcome workflow limits in case of multiple repetitive transform operations - for example, aligning 200 windows to a wall
or making a city from 500 aligned blocks.
Well, i don't know if something like this was mentioned for 2.8 as an idea but what i had in mind is a simple check-mark setting, for example at the end of the top bar where the tool settings are shown. If checked, the user might 'lock' a certain tool setting preset for the next time that tool is activated. And for some tools he might restrict from doing so and let the tool always start with the default settings as they do in 2.79, because that certain tool e.g. is used in various ways in that particular session.
Because sometimes i would like for majority of my rotations to go around z axis and that would save me a lot of clicks, and yet, my translations have not grown into a certain pattern and i would like to leave the grab tool to start with the default settings, leaving me to adjust them upon each activation. It would basically be up to the user... What do you guys think?
Basically, I can't imagine such realization.
How is it supposed to work?
Pressing RB2Z and then checkbox? Then blender should constantly store keypresses that were pressed before.
Pressing checkbox, then RBZ2? Then checkbox is already pressed, so it have to lock something that were pressed before.
Pressing after transformation? That's a separate function, that behaves like "repeat last transform" fuction I've proposed...
How to check if Grab and Scale already have stored preset, but Rotate - not yet?
How to check if preset that have been invoked is that you need (RBZ, not RB2Z) - remember it for any kind of tool and scene?
It is pretty much new concept of storing preset for entire program - while transform is in progress there is no even ability to check any kind of checkbox or press GUI buttons.
It will require updating Blender's core to provide ability for such behaviour.
That can be too much deep and tricky for this scope.
Yes, practically a new concept of storing tool / transform settings throughout a certain session. Wouldn't quite call it a 'keystroke storing', but a new scene (blend file) property of some sort that is specific to all tools independently.
Yes i guess a check box is problematic with GUI, it would probably be an additional keystroke designation in the status bar, shown while the tool is running. Btw, wouldn't be nice to see which options from the tool settings are currently activated, some highlight on those letter icons? That way when i press Z after R, it would be indicated in the status bar with the 'Z' icon highlighted while the tool is running.
In the same way, there could be an additional letter icon for the 'automatically save current settings for the next activation' setting. It is quite simple actually - if you press the designated keystroke during the tool operation (at any time, just like with other tool options), what ever setting you change from then on, the tool would remember and start with the settings you left it with the last time. Nothing special actually. If you turn it off, the tool would start with the default settings each next time. Some kind of 'sticky' designation.
Example - let's say the keystroke for this 'store' setting is ctrl+shift+TAB:
RBZ / finish the operation - using other operators
RBZ / finish the operation (the full keystroke sequence is needed again although it is the same operation, because shift+ctrl+TAB is not active) - using other operators -
RBZ / the tool is running / ctrl+shift+TAB/ finish the operation (the rotate tool now remembers it's settings change each time for the next time) - other operators -
R / does rotation with basepoint around Z - other operators -
RX / does rotation with basepoint around X - other operators -
R / does rotation with basepoint around X - other operators -
R / begins rotation with basepoint around X / ctrl+shift+TAB (store setting deactivated) / user finishes the rotation with basepoint around X - other operators -
R / the tool is in it's default factory mode, requiring again to press the RBZ or other sequence
That sounds so complex
Indeed, it can be difficult to reproduce in practice.
Well, the tool system as it is now could probably work in the future without this feature. In fact i use it on daily basis in 2.79 as such.
This suggestion was my attempt to complement Paul's idea for basepoint transform which would engage user in a lot keypresses for each operation. And , although it is presented in a clumsy manner, try to reproduce it in your mind to see what i was going for. For the fun of it, replace the suggested shift+ctrl+TAB with just TAB (should be available during transform).
I am not sure that RBZ2 either would be feasible for each and every time the user needs that operation. If you think about it (disregarding the code implementation for now), a simple TAB press during the first time you use it and just pressing R further on could indeed make that workflow smoother.
As my experience shows, Base snap alignation is needed once to align something (for example, put doorhandle to opened door), or some specific one, but multiple times in a row, like for placing 500 windows or align 50 furniture assets to non-ortho walls.
In first case full shortcut is ok.
In second case "repeat last tranform setup" function can solve issue.
Don't know, it is hard to say how much preset system can be usable without workflow testing. That's the problem.
We need to have it to say if it is good.
Yes, good examples and my exact thoughts. It would be ideal if these suggestions could be tested in 'battle'.
Perhaps some kind of an addon could do the testing at some point and if it yielded good results it could justify the hard coding effort.
I think the solution to this is to create a draw system of visual previews and temporary markable markup points with the use of colors and or symbols and or texts to distinguish (and in case also helper to suggest) the various step operations
(I haven't read the rest of the comments)
anyway, mano-wii and 1D_inc thank you so much for doing this, you are my heroes!
A video about B.A.S.E. snap enhancement proposal.
It's main goal is to unify all those tools from first part.
Also different CAD precision Bonus tools were shown for forum discussions .
https://youtu.be/w_zJAlN6vqc
I agree that having the ability to set the default behavior for each tool would be helpful. I work in architecture, and I would probably want to manually assign a basepoint every time I move an object. (so Grab > Select basepoint > Select target). Others might want the default to be at the center of their selection. Others might want to keep the current behavior as default.
if when press g instead move object choose base point first after than if you want 2 point or more point, hold ctrl choose points and press enter you can have more control in scene
it can be two part in toolbar one part for origin and other part for base point
1-point aligning (from-to) from your mockup is just a single mode from the B.A.S.E. proposal
Therea are at lesat also 2 and 3-point aligning modes.
https://youtu.be/w_zJAlN6vqc
Any news on this task? It seems to me that having a snapping system that works is the foundation of any 3d program. I believe that many new users who come from other software drop out because of this lack. It would probably be the feature that would bring more users to blender from other programs, and not just in archviz field...
Hi, would this project go into master anytime soon? This is almost the last drawback for architects using Blender in their workflows. This has been years but is not implemented up to now(compared to its code complexity).
hi
where can i download this branch ?
there are no download links in here :
https://builder.blender.org/download/experimental/transform-snap-base/
The build for !104443 has been triggered
hi, can u make a new build? the last build was a bit buggy. (because of the early alpha version ...)
Yes, having a new build would be nice.
For example, I found some issues with basepoint snapping on edges, but it is hard to say if is it because of the patch or the application.