美文网首页
Ai-笔记: Blender2.79体验+优化选中Add-On+

Ai-笔记: Blender2.79体验+优化选中Add-On+

作者: 威玲旺卡 | 来源:发表于2018-03-25 21:57 被阅读0次

    前言,本文是威玲旺卡原创笔记,没有告知请不要转载,代码也请不要抹去作者条目,谢谢啦。

    0. 收获

    Blender1周,终于明白CG课上的那些东西和可以模型简单的物件,不用依仗别人的模型了。
    额外收获,了解了一个动画角色的制作过程。
    在一周前看不懂Gleb Alexandrov的教程,但是在跟了Blenderguru的教程之后,突然觉得自己入门了,是个挺有成就感的事情,非常感谢他,制作了空前绝后极完美的教程。
    无论是建模还是使用软件本身,费眼睛是真的。
    cycles渲染器渲染效果传神,还可以自己写着色器代码在node editor里调试。
    Blender不只是一个3d软件,它灵活的插件扩展,内部终端,script editor,texture painting和video editor,还有后期堪比整个image编辑库,都让它远远超过一个3d软件的定义。
    新的电影Agent 327,惊艳指数已经远远超过过去所有blender open movie了
    无论怎么看,软件,用户,开发者状态,Blender都很出色,非常推荐,期待2.8的发布。
    下面就是我这一周里做出来的东西了,其中甜甜圈是跟着BlenderGuru教程的收获,真的是太棒了。


    甜甜圈1.png
    甜甜圈2
    柔顺阿狗.png
    不济的阿狗.png

    1. Ubuntu下Alt键修正

    Blender是靠热键才能用好的,所以也是它比其他软件难入门的一个原因。
    Alt键在Ubuntu下会失效,GNOME界面都会有这个问题,这在Blender的使用上是不可以接受的问题。
    问题的原因是,Alt键被Ubuntu的系统作为移动窗口的热键了,所以要更改,可以把系统热键map到super键上,
    方法是在CCSM里改,(compizConfig setting Mangement, 安装sudo apt-get install compizconfig-settings-manager compiz-plugins-extra
    CCSM -> Window Mangement -> Move Window-> Initial Window Move把热键从<Alt>Button1改到<Super>Button1.
    就完成了。

    Screenshot from 2018-03-25 15-22-18.png

    2.自定义Add-On

    用Blender过程中有一个事情我比较难搞定,就是选中,往往用户是知道要选中什么object的,可以在菜单栏选中它,但是菜单栏只是把目标选为Active Object,真正Select永远依仗用户在场景里去瞄准点击它,当工程很小这都没差,但随着工程变大,这就要求用户越过层层object,或者很多次滚轮缩放移动再选中,这也费blender的计算量,因为它要花力气去根据用户鼠标位置计算到底是哪个object,所以用到后面,用户往往会发现,“选中”变成了一个越来越“艰难”的事情,然而这些只要有个select active object的选项就可以避免了,可惜一阵搜索之后,并没有这样的东西,大家都会把鼠标选中当成一个想当然的事情,可我不这么认为。 我通过它的API给它写了一个Add-On,并生成了一个方便使用的菜单和热键,这个Add-On的功能是,在菜单栏选择想要的object后,按下Ctrl+Shift+空格,或者选择菜单栏的Object -> Select Active,就可以自动在场景里选中这个object了,在object非常多,或者想选中相机和灯时,会相当好用。

    Add-On功能
    Add-On代码
    import bpy
    
    bl_info = {
        "name": "Select Current Active Object",
        "author": "ThatWolfieFeeling",
        "category": "Object",
    }
    
    class Active_Object_Selection(bpy.types.Operator):
        """Select Current Active Object"""
        bl_idname = "object.select_active"
        bl_label = "Select Active"
        bl_options = {'REGISTER', 'UNDO'}
    
        def execute(self, context):
            bpy.ops.object.select_all(action = 'DESELECT')
            bpy.context.active_object.select = True
            return {'FINISHED'}
    
    def menu_func(self, context):
        self.layout.operator(Active_Object_Selection.bl_idname)
    
    # store keymaps here to access after registration
    addon_keymaps = []
    
    def register():
        bpy.utils.register_class(Active_Object_Selection)
        bpy.types.VIEW3D_MT_object.append(menu_func)
    
        # handle the keymap
        wm = bpy.context.window_manager
        km = wm.keyconfigs.addon.keymaps.new(name='Object Mode', space_type='EMPTY')
        kmi = km.keymap_items.new(Active_Object_Selection.bl_idname, 'SPACE', 'PRESS', ctrl=True, shift=True)
        addon_keymaps.append(km)
    
    def unregister():
        bpy.utils.unregister_class(Active_Object_Selection)
        bpy.types.VIEW3D_MT_object.remove(menu_func)
    
        # handle the keymap
        wm = bpy.context.window_manager
        for km in addon_keymaps:
            wm.keyconfigs.addon.keymaps.remove(km)
        # clear the list
        del addon_keymaps[:]
    
    
    if __name__ == "__main__":
        register()
    

    把脚本命名为Select_Active_Object_byThatWolfieFeeling.py放在Blender目录的脚本位置../../scripts/addons
    在启动Blender后,在User Perference中选择Add-Ons,再搜索wolfie,勾上Object: Select Current Active Object就可以在每次使用Blender的时候用这个功能了。

    3. 角落

    1. 如果发现顶点超过10k后,选中花费很长时间,应该是驱动不支持,可以试试看在User Preference -> System -> Selection -> 从Automatics改成OpenGL Occlusion Queries

    (完)

    相关文章

      网友评论

          本文标题:Ai-笔记: Blender2.79体验+优化选中Add-On+

          本文链接:https://www.haomeiwen.com/subject/zvjkcftx.html