Mouselook Navigation addon (+ZBrush mode)


(dairin0d) #1

Hi all,
I’ve been experimenting with 3D viewport navigation ideas, and came up with the following addon:
http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/MouselookNavigation (the download link is in the wiki)

It’s an alternative to Blender’s default orbit/pan/zoom/dolly/fly/walk navigation. Here are some features:

  • ZBrush mode - mostly useful for tablet users, since it allows to use the same mouse button both for painting/sculpting and for navigation (depending on whether you clicked on geometry or on background)
  • Easy switching between navigation modes without exiting the operator
  • Changes to viewport can be cancelled from any mode
  • FPS-like movement is available in all navigation modes
  • Crosshair is visible in all modes and has a different look when obscured
  • Option to more easily prevent accidental viewport rotation in Ortho projection
  • Different turntable/trackball algorithms and different fly mode (more FPS-like)

I think at this point it’s complete enough to ask for public opinion/testing… and for help, since there are some issues which I’m not capable of resolving by myself:

  • I cannot understand how to implement Blender’s trackball behavior in python. I’ve tried my best to translate the corresponding C code, but the result still behaves very weirdly.
  • Other known issues are caused by the incompleteness of Blender’s API, and, unfortunately, I would hardly have the time to dig into Blender and make the necessary patches myself. Is there even a place for API requests?

Also, does anyone know what is the current system of reporting bugs for addons? Is tracker_url in addon’s bl_info still relevant?

Acknowledgements:
I’d like to thank MOTH3R for the valuable feedback and suggestions.


(Crocadillian) #2

Hey, this seems like a very interesting plugin, i’ve just started playing around with it and the combination of navigation modes like FPS make it pretty interesting. I’m having a problem trying to use the ZBrush mode though, i looked at your readme file and couldn’t find any instructions on how to actually use this. You state a bunch of different operator properties, but I don’t know how to actually use them, :x

Also, I’m curious as to why a crosshair has been implemented, as although its kinda cool to see how the navigation points are being calculated, but i personally find it distracting. Is there a way it can be turned off?

One more thing - the properties panel the plugin uses could have a more logical layout and grouping of components - I’d suggest something like this as a start :smiley:


This plugin is extremely promising though, and is already useful, thanks a lot for sharing it in it’s current state!


(dairin0d) #3

Crocadillian, thanks for the feedback. I’ve updated the wiki, it has illustrations now.
Also, I added options to not draw the crosshair and ZBrush border, and reorganized the panel. Thanks for the ideas :yes:


(Crocadillian) #4

Oh awesome, the panel is looking a lot better :slight_smile:

I tried activating ZBrush Mode in a way that would allow me to use Left Click on the background, suitable for use on a Windows Tablet, and it doesn’t work in Sculpt Mode. I think it would be more user-friendly to add this as a Preferences option inside the plugin add ons page, rather than requiring the user to manually figure out what changes they have to make to the input configuration, but at least the Wiki pointed me in the right direction in editing it, thanks for that update.


(dairin0d) #5

Yeah, I should probably write a warning in the wiki that such a setup requires an extra keymap in Sculpt mode. I tried to make keymap auto-registration explicitly customizable in the addon preferences (you can see it in the latest version). Hope that would be of some help.
I haven’t updated the wiki yet, but I hope to do it this week.


(dairin0d) #6

I have released the 1.0-beta version, with some big changes. The documentation has been updated.


(3DNeksus) #7

hi,this is really cool add-on.
but is it possible to make Alt+ FMB(first mouse button) to be --pan view and also when you realese Alt but holding FMB-key and move your mouse position higher --zoom out if you move your mouse lower then you zoom in . -like in zbrush --basically it much easier way to navigate with just one alt key and a FMB than using different keys for zoom and pan.
thanks


(dairin0d) #8

Yes, actually there already is a preset pre-configured for ZBrush style of navigation, you can load it from the addon preferences:



(3DNeksus) #9

thanks, it was smth with my old hotkeys or maybe addons because of this it didn’t work --I have just loaded factory settings and now it is working !:smiley: thanks again! but in zbrush it is reversed when I move mouse up it will zoom out and when I move down it zoom in. Can I change it somehow in your prefs ?


(dairin0d) #10

Yes, you can toggle Zoom Y (see the top of the screenshot), it will invert the up/down zoom direction.
Actually, I will fix the ZBrush preset, so it will be set automatically in the next release.


(3DNeksus) #11

Cool,thanks a lot :yes:
it kind of works but also it wont sculpt on a parts where mesh different from original of the starting mesh
basically if you make a sphere then in sculpt mode you stretch this sphere with move tool with zbrush preset it wont sculpt on the stretched parts ((
Also rotate around last sculpted stroke not working

also I have found why the Alt key pan was not working in z brush preset because of emulate 3 mouse button in prefs was checked.
other than that this is awesome addon! Please keep it up great work!
it really can make workflow seamless between zbrush and blender because in zbrush you cannot change navigation hotkeys ((

P.S. If I can somehow help give me a pm letter
thanks


(dairin0d) #12

Actually, the problem with outdated geometry is also present in the Edit Mesh mode, because right now I’m using raycasting to determine if there’s anything under the mouse. I suppose I can read OpenGL depth buffer instead, but in this case non-geometry (empties, lamps, cameras, grid floor, etc.) will also be considered “something under the mouse”.

Blender doesn’t seem to expose to scripts the information about last sculpted/painted strokes. I can try to record last position under mouse, but I wouldn’t be able to determine if it actually belongs to the active object or to some non-geometry.

Thanks for the information on the 3 mouse button emulation :slight_smile:

Hm, if you are a programmer, I could use some help in figuring out how to implement Blender’s trackball algorithm in python :wink:
Other than that, I suppose you can tell your 3D-artist friends about this addon when it becomes polished enough :rolleyes:


(Crocadillian) #13

The UI is really cleaning up nicely, thanks a lot for also adding key bind defaults to the plugin - although I don’t care much for ZBrush navigation, having the ability to move the camera by touching empty space will be really useful when working on a Windows Tablet.

With the ZBrush preset, is it possible to zoom and pan? I tried using various keybinds but I couldn’t get it to work. Also in regards to what 3DNeksus said about rotation around the last stroke, at least currently wouldn’t it make sense to rotate using the currently selected object’s origin until a stroke-based solution can be found?

Thanks again, i hope this eventually ends up in the Blender trunk :smiley:


(dairin0d) #14

In ZBrush preset, you pan by holding Alt and then dragging mouse, and while you pan, you can switch to zoom by releasing the Alt key. BTW, thanks for the idea :slight_smile:


(3DNeksus) #15

my programing skills is not very proficient it is only enough for making some custom menus in blender)LOL
sure I will spread the word, thanks for the developing it!

but in sculpt mode if rotate around selection is enabled in prefs rotating around last stroke is working but with your addon enabled it is not working so I assume it smth with your addon
rotate around last stroke in painting mode was always not working (( and I dont know how people working lake this (


(Crocadillian) #16

Although theres a preference for it, the plugin calculates viewport camera transforms in a completely different way, which means he needs to be able to have available the underlying data for stroke points in order to rotate around them. Blender’s current camera solution isn’t scripted in python, which means he can’t use the same data access points Blender uses to rotate around the last brush stroke.

Thanks for the tip dairin0d, although I’m a little surprised you can’t do it during a normal camera rotation operation. It seems a little inconsistent with the default mouselook camera transform operator being able to.


(3DNeksus) #17

smart:spin:
but maybe he can not override the blender default rotating around the object ? so default blender rotate around last sculpted stroke will work
anyway I dont know how blender works so I’ll better :spin:spin away, but thanks for explaining !


(dairin0d) #18

Well, I configured the ZBrush preset to behave as close as possible to ZBrush, and in ZBrush you can’t switch to pan/zoom while you are rotating. In any case, you can easily customize the control scheme to your liking.


(dairin0d) #19

I have updated the addon to include several methods of figuring out whether the mouse is over empty space (Raycast, Z-buffer and Selection); the default one is Z-buffer now. (Also, I have fixed Y-zoom direction in ZBrush preset.)

I also investigated the possibility of implementing rotate-around-last-stroke-position feature. Unfortunately, I don’t see any way to implement it, as Paint/Sculpt operators are modal (so I can’t monitor mouse position through a background-running operator), and Blender doesn’t provide information about mouse position otherwise. So, as an approximation, in sculpt/paint modes, if Rotate Around Selection is enabled, the addon will rotate around the active object’s position.


(3DNeksus) #20

Really cool!thanks
but with this z-bufer it became much slower than original navigation of blender:(