blender瞎玩9:ALT一个键操作视图
3dview navigation(导航,即3d视图操作)的一种另类思路
1.
因为最近想用数位板,但数位笔笔杆按钮作为中键右键用的很不舒服,
所以希望实现类似zbrush的,只需要点击的视图操作。zbrush操作为,
“左键点击空白区域拖动”为旋转视图,“alt+左键”为平移视图,“alt+左键松开alt”为缩放视图。
问题是,blen怎么侦测“松开alt”作为一个事件?这个问题我不知道咋解决,所以我想了个别的办法
我的办法是利用piemenu,按住alt键召唤三个按钮,分别是移动视图,旋转视图,缩放视图,
这里为了避免误触,我制作了6个按钮,如下图,

2.
操作如下图,

操作逻辑为,alt键召唤面板,然后鼠标向某个方向甩,就进入了视图操作模式,
操作完毕需要按一个键结束操作,似乎默认为alt键,我又另外设了个鼠标左键
快捷键设定的位置还挺难找,在按键映射-3d视图-3d视图模态,如下图,


其中axis snap为旋转视图时吸附坐标轴,我觉得很碍事,会影响alt键退出视图操作模式,所以就关了
因为和alt键有关的功能太多,所以我也不知道有没有冲突
3.
思路
[1]
主体代码如下,就是个简单的创建piemenu,
class PIE_MT_Navigation(Menu):
bl_idname = "PIE_MT_navigation"
bl_label = ""
def draw(self, context):
layout = self.layout
ob = context.object
pie = layout.menu_pie()
pie.separator()
pie.operator("view3d.move", icon='SHADING_BBOX')
pie.operator("view3d.rotate", icon='ORIENTATION_GIMBAL')
pie.operator("view3d.zoom", icon='VIEWZOOM')
pie.operator("view3d.zoom", icon='VIEWZOOM')
pie.operator("view3d.move", icon='SHADING_BBOX')
pie.operator("view3d.rotate", icon='ORIENTATION_GIMBAL')
pie.separator()
[2]
下面是登录函数和快捷键,如果想用别的快捷键唤出piemenu,就把'LEFT_ALT'改成别的
def register():
for cls in classes:
bpy.utils.register_class(cls)
wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Select Mode
km = wm.keyconfigs.addon.keymaps.new(name='Object Non-modal')
kmi = km.keymap_items.new('wm.call_menu_pie', 'LEFT_ALT', 'PRESS')
kmi.properties.name = "PIE_MT_navigation"
addon_keymaps.append((km, kmi))
km = wm.keyconfigs.addon.keymaps.new(name='Grease Pencil Stroke Edit Mode')
kmi = km.keymap_items.new('wm.call_menu_pie', 'LEFT_ALT', 'PRESS')
kmi.properties.name = "PIE_MT_navigation"
addon_keymaps.append((km, kmi))
[3]
其实我还设想了另外一种理论上更舒服的操作逻辑,即,alt按住召唤3按钮,
然后左键按住某一按钮进行视图操作,松开左键时停止操作,松开alt键时按钮消失。
理论上可以用我上一篇文章(自制shelf)的功能实现,但是实际试验发现,
blen的视图操作命令,比如bpy.ops.view3d.rotate,无法通过“按住按钮”起作用,遂作罢
4.
最后附上代码,可以作为插件安装
文章仅供参考
glhf
















































































