Ai-笔记:Blender2.79 + Add-On

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

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教程的收获,真的是太棒了。

placeholder

placeholder

placeholder

placeholder

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.

就完成了。

placeholder

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非常多,或者想选中相机和灯时,会相当好用。

placeholder

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

placeholder