探索Blender

1 初识Blender

今天在看代码时发现了一个新的工具:Blender,一款专业、开源的三维计算机图形软件。以下介绍摘自维基百科,刚接触,不太懂:
Blender可以运行于不同的平台,而且安装后占很少空间。虽然它经常不支持说明文档或示例发布,但其拥有极丰富的功能,而且绝大部分是高端模块塑造软件。

  • 支持不同的几何图元,包括多边形网纹,快速表层塑模,曲线及向量字符。
  • 内置cycle光线追踪渲染引擎,可提供真实的画面
  • 同时也有eevee实时渲染引擎(类似游戏引擎),可即时提供极佳的预览画面
  • 动画工具,包括了反向动作组件,可设置骨干,结构变形,关键帧,时间线,非线性动画,系统规定参数,顶点量重及柔化动量组件,包括网孔碰撞侦察和一个具有侦察碰撞的粒子系统。
  • 使用Python语言来创作及制作游戏及工作自动化脚本。
  • 基本的非线性影像编辑及制作功能。

2 安装

Ubuntu不建议用apt-get安装,版本老且有很多问题。
直接到Blender官网下载压缩包,解压到/usr/local或者任何地方,直接就可以通过里面的可执行文件启动blender,详情见安装教程
多加一步,建立软链接:

ln -s /usr/local/Blender/blender /usr/bin

然后就可以在终端通过blender启动了。

UI界面的布局层次:Screens - Areas - Regions

  • Screens: Layout, Modeling, Sculpting, Shading, Scripting, ...
  • Areas: PROPERTIES, OUTLINER, INFO, TEXT_EDITOR, VIEW_3D, CONSOLE, ...
  • Regions: TOOL_HEADER, HEADER, TOOLS, WINDOW, ...

3 基本操作

  • G, X/Y/Z 移动
  • R, X/Y/Z 旋转
  • S, X/Y/Z 缩放
  • Shift-D 复制。与Ctrl-C的区别是不会新增材质。
  • A 选中全部
  • 直接通过“选中物体, Delete”不会删除材质,通过“文件, 清理数据块”可以删除未使用的数据块;
  • 选中物体,编辑模式/物体模式

4 材质

新建材质 --> 使用节点 --> 添加需要的节点构建所需材质

slot(材质槽)

一个物体可以通过拥有多个材质槽,从而对一个物体不同部分应用不同的材质。
例如:在shading界面,选中物体,在下方选择新建或者新建材质槽,然后令物体进入编辑模式,选中一个面,然后在下方选择一个预设的材质槽,选择指定,即可为一个特定的面制定材质。

材质随动画渐变

为物体添加“混合着色器”,然后添加两种材质的着色器作为其输入,在动画中通过控制参数实现两种材质间的转换。

5 UV编辑

首先为物体的材质设置图像纹理,并设置纹理图像;
进入UV editing界面,在 VIEW_3D 区域中点击 UV 按钮选择展开方式。

6 渲染

命令行渲染

某些情况下我们想要提高渲染速度、远程访问Blender进行渲染或通过命令行编写脚本。
使用命令行的一个好处就是我们并不需要图形界面进行显示(比如不需要Linux的X server),因此可以通过远程shell进行渲染(典型的比如SSH)。
命令行渲染
命令行渲染只支持CYCLES引擎!!! 用Eevee渲染出错

单张图像

blender -b file.blend -f 10

-b         后台渲染(没有用户界面)。
file.blend 用于渲染的blend文件路径。
-f 10      只渲染第10帧。

blender -b file.blend -o /project/renders/frame_##### -F OPEN_EXR -f -2
-o /project/renders/frame_##### 保存渲染图像的路径,使用五个0补位用于帧计数。
-F OPEN_EXR    覆盖blend文件中指明的图像保存格式,并保存为一张OpenEXR图像。
-f -2          仅渲染倒数第二帧。

动画

blender -b file.blend -a
-a             使用blend文件中保存的设置渲染整个动画。

blender -b file.blend -E CYCLES -s 10 -e 500 -t 2 -a
-E CYCLES      使用“Cycles Render”渲染引擎。执行 blender -E help 查看可用渲染引擎列表。
-s 10 -e 500   将起始帧设为 10 结束帧设为 500。
-t 2           仅使用两个线程。

注意

始终 将 -f-a 放在最后一个参数的位置上。

Cycles选项

blender -b file.blend -f 20 -- --cycles-device CPU

--cycles-device CPU
Override the device that is used to render frames. Currently supported options are CPU, CUDA, OPTIX and OPENCL. Additionally, you can use CUDA+CPU or OPENCL+CPU in order to use both CPU and GPU rendering.

--cycles-print-stats
Show detailed statistics about memory and time usage for Cycles renders on the console.

不同于其它选项,Cycles的选项放在命令最后,用--隔开

经验

实测用CUDA和CPU对速度影响不大,但是线程数极大影响速度。

7 Python API

  • Scripting 界面有个 INFO 区域,当用户在图形界面上进行操作时,这里会显示对应的 python 命令,可以作为写脚本的参考,有时候可以直接复制使用;
  • 建议在偏好设置中开启 'Python工具提示',这样当鼠标移动到对应的按钮时,可以显示对应的 python 对象,极大方便脚本编写;

bpy.data

访问blender中的数据,如bpy.data.objects/materials/images/...
可以访问或者修改数据的属性;
可以创建/删除数据;

bpy.context

不同于bpy.data通过列表来直接访问所有对象,bpy.context通过上下文来确定对象,如bpy.context.object/selected_objects/active_object/...
通过context访问对象是只读的;
通过context能过访问的对象取决于在blender中访问的区域;

bpy.ops

依赖于context来确定操作对象,所以首先要确定context正确性。
bpy.ops中的operator通过关键字参数指定相应操作的属性,除此之外,还有三个可选的位置参数:

bpy.ops.test.operator(override_context, execution_context, undo)

override_context - dict type.
execution_context - str (enum).
undo - bool type.

当前context不符合ops的要求时,可以通过覆写override_context参数来改变ops生效的context;
例如:

# remove all objects in scene rather than the selected ones
import bpy
override = bpy.context.copy()
override['selected_objects'] = list(bpy.context.scene.objects)
bpy.ops.object.delete(override)

其他技巧

节约内存开销

  • 材质重复使用
    重复的物体使用同一材质,不要每个物体都拥有独占材质。
    使用Shift-D代替Ctrl-C。
  • 实例化
    一个复杂的物体集合可以通过实例化节约内存。
原文地址:https://www.cnblogs.com/tofengz/p/13399797.html