Blender编程指南
什么是Blender
blender是一个轻量级的三维建模软件,可以通过steam下载。随着Blender官方的不断更新,其功能不断完善,blender已经受到越来越多人欢迎。
前置知识
本教程需要你掌握了Blender的大致操作和python的基础语法。然后看了这个教程能够大概将两项结合在一起。
Blender编程
Blender作为一款三维建模软件,所使用的人大多数是学艺术的,但像我这种程序员,使用软件的第一想法就是是否能编程。Blender非常人性化的支持python编程功能,并且很多Blender第三方插件也是基于Blender编程模块所开发的。
所谓Blender的编程,事实上就是编写一个自动化脚本,来将我们几乎所有能够图形化的操作变成编程语言。这虽然听起来会很麻烦,但对于一些重复性的工作比如随机生成楼房草地等非常有帮助。
编程前的环境设置
Blender的编程模块就内嵌在软件当中,当然你也可以使用Vscode进行编程。不过这里使用Blender内置的文本编辑器。在编程开始之前,首先要确保开启Python工具提示。
开启后,当你吧鼠标悬停到任意一个按钮上时,就会出现相应的变量。
界面介绍
首先在上面窗口栏的最右边你能够找到Scripting脚本窗口,点击进入脚本编写界面.
除了你平时见到的窗口,还额外多出三个窗口分别是:
- 文本编辑器:位于最中央。是你编写脚本的地方
- Python控制台:位于左中。一个可以交互式编写python脚本的终端。熟悉python的应该都知道,通过这个控制台可以很方便的学习脚本编写。同时这个控制台有按
TAB 键自动补全的功能。 - 信息:位于左下。每当你在图形化界面中做出一步操作时,相应的函数调用就会出现在这里。你可以这个信息为依据编写脚本,但是这里的信息很多时候都只是单独的一步操作,在编写脚本时不一定要按这个来。
编程过程
假设你会使用Blender和Python,你想要知道的就是Blender中的每一种操作在blender中是如何对应的,你有3种方法:
1.首先图形化界面做一步,然后在信息里查看调用了哪个函数。但这样做的坏处就是很多时候我们写脚本的内容和信息里所查看到的习惯是不一样。以下面创建一个立方体并旋转x轴旋转30度为例。
这是是以脚本的样子写出来。
import bpy
bpy.ops.mesh.primitive_cube_add()
so = bpy.context.active_object
so.rotation_euler[0] += 30 * 3.1415 / 180
但是在图形化界面中里面,旋转一个立方体有两种方法:
-
直接更改其旋转角度 -
按r 手动拖动旋转 以下为图形化操作在信息界面显示
bpy.ops.mesh.primitive_cube_add(enter_editmode=False, align='WORLD', location=(0, 0, 0), rotation=(0, 0, 0), scale=(1, 1, 1))
bpy.context.object.rotation_euler[0] = 0.523599
bpy.ops.transform.rotate(value=-0.523838, orient_axis='Z', orient_type='VIEW', orient_matrix=((4.93038e-32, 1, 2.22045e-16), (2.22045e-16, 4.93038e-32, 1), (1, 2.22045e-16, 4.93038e-32)), orient_matrix_type='VIEW', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)
? 从这里我们可以看出,同一个步骤有很多不同的方法,在编写脚本时我们尽量少用ops中的函数,推荐直接更改其属性。同时信息界面所得每个函数都包含很多默认的形参,在脚本编写时可以暂时不需要。
2.在控制台终端不断自动补全进行尝试。这也是一种较为有效的方法。鉴于编辑器没有自动补全功能。在控制台不断的自动补全并交互式的实验是非常有效。
3.之前说的python工具提示已经显示除了每个变量的名称,你可以以此作为对照修改值。
平时python用的大多数语法都是能用的,这就是一个加了个第三方库的python,正常使用就好。
后续
你已经学会了1+1=2了,现在是时候开始解微积分了。
了解怎么将图形化界面对应到python,接下来就是发挥你的智慧,大胆的进行尝试了。只要你足够了解python和blender,这些都不是难事。如果你是一个纯艺术生,建议不一定需要学习写脚本,或者就先学一下python吧。
|