在Blender 2.8使用Python编程(入门级)
极客红叶会-geekbrh
2019年11月30日 13:02
收录于文集
共4篇

Blender是一个非常强大的开源软件,开源软件的一大优势便是能够直接看到未加密的源代码,值得我们去学习研究。Blender能够借助python实现一些实用的效果,下面我使用blender 2.8版本来介绍一下其中的python编程相关入门,希望能与大家学习交流。

首先我们可以将主界面中某一个编辑窗口类型设置为python控制台(快捷键为Shift+F4)。

它是编写插件和脚本的时候最重要的调试工具之一,我们可以在这个控制台内输入命令来实现一些操作。

它默认包含了bpy模块,bpy模块是blender python API最常用最主要的模块,它所包含的内容比较庞大。

'>>>&#​39;是Python控制台的输入提示符,不需要输入

在控制台输入bpy.然后按Ctrl+Space可以查看它的子模块,其中一些子模块,我理解的含义大概是:ops代表操作,data代表数据,context 代表运行时的环境,types代表所有行为的类型,utils是工具集。注意在控制台中context和data已经被赋值给了大写的C和D,这样可以使他俩的输入更便捷,但是这两个大写字母不能在脚本或插件中使用,只能输入全路径或自己重新赋值一次。这里我们使用bpy的子模块来输入一些命令,如:

bpy.data.objects["Cube&#​34;].location.z += 1

然后回车,可以发现我们默认的名为Cube的立方体往z轴上移了一个单位

我们也可以同时指定三个向量,如:

bpy.data.objects["Cube&#​34;].location = (2,2,2)

#将立方体的世界坐标变换为x=2,y=2,z=2

bpy.data.objects["Cube&#​34;].scale = (2,2,2)

#将立方体的缩放沿xyz轴各拉伸2倍

bpy.data.objects["Cube&#​34;].rotation_euler = (2,2,2)

#立方体在世界空间的旋转,注意需要用欧拉将弧度转换为角度,也就是2弧度转换为115°

我们也可以使用小键盘的上下键来重复之前输入过的命令,同时也可以使用Ctrl+Space使用自动补全来快速输入命令。

其实在blender几乎每个操作按钮上,只要将鼠标悬停久点,就会出现该按钮对应的命令提示,比如按x进行删除时,我们可以ctrl+c复制这个命令,然后ctrl+v黏贴到控制台回车即可删除物体。

同理,我们也可以在创建一个棱角球时复制这个命令,通过控制台创建这个棱角球。

通过这个方法,我们可以使用blender内置的功能简单地实现一些一键自动化的效果

我们在直接控制台中执行如下修改器命令:

bpy.ops.object.subdivision_set(level=1, relative=False)

#添加表面细分修改器

bpy.ops.object.modifier_add(type='SOLIDIFY&#​39;)

#添加实体化修改器

bpy.ops.object.modifier_add(type='WIREFRAME&#​39;)

#添加线框修改器

bpy.ops.object.modifier_add(type='BEVEL&#​39;)

#添加倒角修改器

bpy.context.object.modifiers["Solidify&#​34;].thickness = 0.05

#实体化修改器厚度设置为0.05

bpy.context.object.modifiers["Wireframe&#​34;].thickness = 0.04

#线框修改器厚度设置为0.04

bpy.context.object.modifiers["Wireframe&#​34;].use_replace = False

#线框修改器取消替换原物体

可以看到这个棱角球加了一系列的修改器。

我们也可以继续输入命令来修改这些修改器的属性:

bpy.context.object.modifiers["Solidify&#​34;].thickness = 0.08

#实体化修改器厚度设置为0.05

bpy.context.object.modifiers["Wireframe&#​34;].thickness = 0.02

#线框修改器厚度设置为0.04

bpy.context.object.modifiers["Wireframe&#​34;].use_replace = True

#线框修改器取消替换原物体

还有一种方法便是通过scripting布局窗口来查看你操作的所有命令。

我们可以通过记录这些命令制作宏命令,简化一些重复操作,或是达到一键成型的效果。

我们将编辑器窗口类型设置为文本编辑器,即可在这里写python脚本(快捷键Shift+F11)。

新建一个文本,我们尝试写一个随机分布阵。

要使用随机,我们需要导入随机模块。

python代码示例如下:

import bpy

from random import randint

#导入随机模块

number = 100

for i in range(0,number):

#创建一个范围循环

    x = randint(-20,20)

    y = randint(-20,20)

    z = randint(0,30)

#x,y,z的范围

    bpy.ops.mesh.primitive_cube_add(location=(x,y,z))

#添加方块

然后运行一下我们的脚本。

可以看到我们的场景新增了100个随机方块。

同理,继续在脚本里增加一些代码,便可以“一键”创建出一些有趣的效果。

可以通过导入其他的模块,创建一些更丰富的效果,由于up也是刚刚入门,这里我就不多赘述了。具体如何编写blender的python脚本,可以参考官方的python api文档,小伙伴们可以自行发挥一下创造力哦~

先写到这里,后面也许会继续随缘更新~

作者:seer