blender瞎玩1_自制(?)Maya热盒的笨方法(一)

用户头像
保定/设计爱好者/7年前/696浏览
blender瞎玩1_自制(?)Maya热盒的笨方法(一)
用户头像
钢水壶

通过修改官方插件pie menu实现maya热盒

(1)


一些抱怨:


身为maya用户,信仰虽然是有的,但是是可忍孰不可忍呐!近年来maya越来越臃肿,启动的越来越慢,每次开机打开maya,我甚至可以拿起手机看一章小说,再看电脑,还是启动界面!你说慢点也不是完全不能忍,结果两周前我和往常一样打开maya,然后。。。就没然后了,它打不开了!


于是我们来说说blen,总体来说blen是个好软件,我只玩建模,maya的建模功能blen也能胜任不少,最重要的是,


Blen能秒开!ψ(`∇´)ψ


不过有个问题,告别了maya的甩鼠标操作,我表示我浑身难受,再看blen,

为什么挤出要分整体挤出/沿法线挤出/各个面挤出/内插面!

为什么挤出倒角都要点一下再拖动才能启动!

为什么knife不能ctrl环切也不能在物体外拖动切分!




(2)


进入正题:


先说了,本人不会编程


本来想求助于网友,用了用老外的“Blender设置Maya操作习惯和快捷键”,感觉不好使,有用的功能太少。又找到看起来很好使的Pie Menu Editor,一看,16刀!算了,顺便说一句,maya里自带类似的玩意


不会编程就不能创作新的脚本,然后我突然想起来,blen是个开源的啊,我不会做新脚本,我可以改老脚本啊




(3)


我们要下手的就是大家常用的自带脚本

Interface:3D Viewport Pie Menus



它的路径在插件界面有显示,我的mac路径是

/应用程序/Blender.app/contents/resources/2.81/scripts/addons/space_view3d_pie_menus/

如果是window系统,大概在appdata或者program files里


打开这个文件夹,里面有所有的子插件,随便选哪个都可以,虽然blen用户觉得很好用,但是我这个maya用户觉得这几个子插件没一个有用的,



我决定改pie_modes_menu.py这个文件,即blen的切换模式的菜单,既然我们的目的是做出类似maya的右键热盒菜单,那这个菜单比较类似,更容易改。(其实我觉得pie_save_open_menu.py这个插件最没用:-D)。对了,记得【改之前备份】


打开一看,卧槽天书啊!没事,我们可以xj8改嘛,不行了就把备份文件覆盖一下。





(4)


经过我的xj8猜想,大概class是组的意思,(Operator)组会调用blen内部指令,(Menu)组就是最终表现出的菜单


举个(Operator)组的例子,功能是切换到点模式,


class PIE_OT_ClassVertex(Operator):

    bl_idname = "class.vertex"

    bl_label = "Class Vertex"

    bl_description = "Vert Select Mode"

    bl_options = {'REGISTER', 'UNDO'}


    def execute(self, context):

        if context.object.mode != "EDIT":

            bpy.ops.object.mode_set(mode="EDIT")

            bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='VERT')

        if bpy.ops.mesh.select_mode != "EDGE, FACE":

            bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='VERT')

            return {'FINISHED'}


上面5行是本组特征,大概分别是是组名,索引名,显示名,描述,(不知道是啥),这几个。

下面9行就是组内容,当当前模式不是“编辑模式”时,进入“编辑模式”,然后进入“点选择模式”,当当前模式不是“边选择/面选择模式”时,也进入“点选择模式”。


这个组里我们只要记住索引名class.vertex就行了




(5)


再举个(Menu)组的例子,因为这个组太长了就放一小段吧


找到class PIE_MT_ObjectEditMode(Menu):这一行

(别忘了善用ctrl+f搜索)


        elif ob and ob.type == 'MESH' and ob.mode in {'OBJECT', 'SCULPT', 'VERTEX_PAINT',

                                                    'WEIGHT_PAINT', 'TEXTURE_PAINT',

                                                    'PARTICLE_EDIT', 'GPENCIL_EDIT'}:

            pie = layout.menu_pie()

            # 4 - LEFT

            pie.operator("class.pieweightpaint", text="Weight Paint", icon='WPAINT_HLT')

            # 6 - RIGHT

            pie.operator("class.pietexturepaint", text="Texture Paint", icon='TPAINT_HLT')

            # 2 - BOTTOM

            pie.menu("MENU_MT_objecteditmodeothermodes", text="Edit Modes", icon='EDITMODE_HLT')

            # 8 - TOP

            pie.operator("class.object", text="Object/Edit Toggle", icon='OBJECT_DATAMODE')

            # 7 - TOP - LEFT

            pie.operator("sculpt.sculptmode_toggle", text="Sculpt", icon='SCULPTMODE_HLT')

            # 9 - TOP - RIGHT

            pie.operator("class.pievertexpaint", text="Vertex Paint", icon='VPAINT_HLT')

            # 1 - BOTTOM - LEFT

            pie.separator()

            # 3 - BOTTOM - RIGHT

            if context.object.particle_systems:

                pie.operator("class.pieparticleedit", text="Particle Edit", icon='PARTICLEMODE')

            else:

                pie.separator()


这个组就是pie menu的8个方向对应功能,从上到下分别是,左/右/上/下/左上/右上/左下/右下,我不知道官方注释的数字是个啥意思,不过不管他也行。


如果我想改“左边”的功能,就改下面这行


            # 4 - LEFT

            pie.operator("class.pieweightpaint", text="Weight Paint", icon='WPAINT_HLT')


把pie.operator()括号里的内容改掉就行,"class.pieweightpaint”即上面定义过的组的索引名,text="Weight Paint”是在菜单上显示的文字,icon='WPAINT_HLT’是图标。


比如说我想把“左边”功能改成和Maya一样的点选择模式,就改成


            pie.operator("class.vertex", text="Vertex Mode”, icon='VERTEXSEL')




(6)


我总结了一下有用的信息


功能/组名/图标名


点模式   class.vertex   VERTEXSEL

边模式   class.edge   EDGESEL

面模式   class.face   FACESEL

物体模式   class.object   OBJECT_DATAMODE

顶点绘制   class.pievertexpaint   VPAINT_HLT

权重绘制   class.pieweightpaint   WPAINT_HLT

贴图绘制   class.pietexturepaint   TPAINT_HLT

粒子   class.pieparticleedit   PARTICLEMODE

雕刻   sculpt.sculptmode_toggle   SCULPTMODE_HLT


其中雕刻似乎直接调用了内部指令


以下是我改的代码:


            # 4 - LEFT

            pie.operator("class.vertex", text="Vert Select Mode", icon='VERTEXSEL')

            # 6 - RIGHT

            pie.operator("sculpt.sculptmode_toggle", text="Sculpt", icon='SCULPTMODE_HLT')

            # 2 - BOTTOM

            pie.operator("class.face", text="Face Select Mode", icon='FACESEL')

            # 8 - TOP

            pie.operator("class.edge", text="Edge Select Mode", icon='EDGESEL')

            # 7 - TOP - LEFT

            pie.separator()

            # 9 - TOP - RIGHT

            pie.operator("class.object", text="Object Mode", icon='OBJECT_DATAMODE')

            # 1 - BOTTOM - LEFT

            pie.separator()

            # 3 - BOTTOM - RIGHT

            pie.separator()


只用了点/线/面/物体/雕刻这5个,其中pie.separator()是空图标的意思。改完这个就可以ctrl+s保存了,


重启blen,保证这个插件是打开状态,打开按键映射,在搜索按键绑定状态搜索所有right mouse,把所有冲突按键前面的勾关掉,然后在搜索名称状态搜索pie或者mode switch(ctrl tab),反正你知道你改的是哪个就好,



把快捷键改成鼠标右键,完事。

(老实说,其实我改的是鼠标中键,因为我在用maya的时候也是中键右键互换的,而且blen的右键菜单还有点用)



【注意】如果你打开blen发现pie menu这个插件不管用,那很大可能是你刚才改完的代码有bug,也许是你改代码的时候用了中文输入法?也许是首行缩进没对准?那我就不知道了


5
举报
|
2
分享
相关推荐
评论
用户头像
评论你的想法~
表情
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
深蓝色三维科技地球,全球化、国际化、科学技术概念抽象图形
红色三维概念礼盒背景
黑暗房间内的金属方块展台,三维渲染
灰色三角四面体、点线链接构成三维空间科技矢量背景
三维地形图,等高线。抽象的点线科技背景,类似云端数据连接、区块链、神经网络的概念。
三维上海城市天际线
矢量抽象三维几何图形创意海报
红色喜庆风格的三维产品展台
三维金融创意股票基金金融模型
矩阵立方体三维空间科技背景
矢量三维场景彩色质感球体抽象海报
三维渲染炫彩背景
三维渲染抽象波浪流金风格背景
旋转的漩涡和流动的线条,三维渲染
三维假期旅行主题
扁平化抽象几何三维模型创意时尚海报
三维渲染的流动白色布料透明玻璃背景
三维渲染的年轻女医生
三维渲染极简北欧风现代家居装饰场景
三维渲染的老年医生
三维曲线空间背景
三维界面科学技术,科幻场景矢量背景图。
三维抽象矢量星球,寓意全球化、国际化,球形世界地图,点和线连接的矢量背景
点线连接的科技矢量背景,三维抽象矢量星球,寓意全球化、国际化,球形世界地图
三维渲染的简约简洁极简风格几何体场景海报
你可能喜欢
相关收藏夹
大家都在看
登录注册