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

Add different 3D navigation styles #455

Open
wants to merge 10 commits into
base: master
Choose a base branch
from

Conversation

bliepp
Copy link
Contributor

@bliepp bliepp commented May 8, 2022

Problem description:
As every 3D software uses it's own navigation style in 3D I find it hard to transition from one software to another as I always have to rethink navigation in 3D space. I therefore thought it would be nice to let users choose which way to navigate the 3D viewport by choosing navigation styles. Right now the default ist something similar to (but not the same as) Blenders "Trackball" orbit method. Many other software - Godot included - on the other hand uses something similar to Blenders "Turntable" orbit method.

What I implemented:
I've implemented something similar to the "Turntable" style navigation and created a submenu under the "Environment" popup menu for changing it. I think this would be a nice addition as I would definitely prefer the turntable-styled navigation.
Moving around is similar to the default navigation style:

  • Orbiting by clicking and dragging.
  • Holding Cmd and dragging zooms in/out
  • Holding shift and dragging rotates the object freely
  • Scrolling with the mouse wheel zooms as well
  • Scrolling and while Cmd changes FOV

How it is implemented:
As the navigation code was very long I implemented it in a strategy like pattern. The new way of implementation allows for a more modular approach as many navigation styles can be added later as the navigation and UI logic are now strictly separated. The default navigation code was moved to it's own class but remains mostly untouched.

Edit: This addresses #97 somehow

@bliepp
Copy link
Contributor Author

bliepp commented May 8, 2022

I forgot to mention that it would be nice if this setting would be saved when closing Material Maker, but I could not figure out how to do this for now.

@RodZill4
Copy link
Owner

RodZill4 commented May 9, 2022

Nice! I'll have a look at this when I'm done with EasySDF update...

@bliepp
Copy link
Contributor Author

bliepp commented May 12, 2022

I also think turntable navigation should be the default as it is way more common in other programs and also more intuitive. In that case I would keep the current default navigation method under a name like "Classic" or something like that.

@bliepp
Copy link
Contributor Author

bliepp commented Dec 13, 2022

Made some final touches to this PR:

  • Resolved merge conflicts
  • Renamed a few things
  • Save this new setting when restarting MM

It is now ready for merge

@bliepp
Copy link
Contributor Author

bliepp commented Mar 26, 2024

Completed the Godot4 port of this PR and resolved all merge conflicts that occurred because of that, so it's now fully compatible again.

Once again, it's ready to merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants