通过Python控制Blender进行三维建模和效果渲染

分享点有意思的 Python 小技巧,帮助你将工作中的一部分交给计算机自动化运行,没有程序经验也能学会,不然就不叫小技巧了!

关于渲染和合成流程

举个栗子,我们用 Gooseberry 项目的尽头1.2.1为例,这是由 Hjalti 制作的一个片段blenderget-一些实用的Python小技巧-开发 -1

感谢 Blender 的库和链接系统,这可以使得我在为场景设计灯光等工作的同时,不受 Hjalti 对场景或人物做任何修改后的影响,我只需要重新更新一下我的 blend 文件,或者重新打开一次,已经在 SVN 上提交后的最新文件就会自动在我的场景文件中更新了。不过如果你不知道什么是 SVN,我可以试着去之前的开源电影博客中找找类似的介绍文章,不过你也能试试搜索一下,网上有很多关于 SVN 的介绍。不过到后面等 Lukas 完成了新的资源管理系统开发,这种协同方式可能会有所调整,不过未来还未来,我们先看看现在可以做些什么吧。

当我们完成了高模场景、完整的光照设计、渲染需要的雾效或各种随机生成的石块等网格物体,还包含 Victor 和 Franck 的动作文件,他们在被链接至合成 .comp 文件之后,属性都将被锁定起来,仅能在源文件中编辑修改,但是当我们在测试渲染时,需要临时改动大量的属性,就可能需要对各个物体进行单独调整。我的意思 是,这一步你可以手工完成,当然,也可以靠脚本来批量化执行,很明显这是脚本最能体现其价值和优势的地方啦!

有了脚本,以下这些工作只需要动动鼠标按键就可以了:

  • 开启/关闭各类设置中的属性开关

  • 为各类设置中的数值属性重新赋值

  • 隐藏一些不需要显示的粒子系统,或者修改他们的粒子树和随机因子(这些修改绝对不会影响源文件的设置)

  • 重写 Victor 的一些关键属性,例如将他的头变大两倍!

  • 删除掉导入至视频编辑器中的一些无用参考视频(未来的 BAM 系统将不会调用这些未使用到的片段,不过现在不行)

  • 开启并添加一些渲染印章信息,包括采样数、渲染时间和渲染农场的节点名称等,统统都打印出来

  • 其实还有很多啦!

好吧,现在开始正题。

让 Python 能自动运行

我接下来会在Blender 的文本编辑器中新建两个文件,分别如下(Shift + F11):

  1. settings.py – 这个脚本将用于修改渲染设置、用户参数,以及场景或视图中可优化的属性,单击菜单上的 “Run Script”即可运行。

  2. startup.py – 这个脚本将用于修改粒子系统的显示,以及一些渲染印章的信息,这个脚本在每次打开 .blend 文件后将自动运行(主要用于渲染农场),所以这个脚本必须开启注册选项,即 ‘Register’ 需要被选中

settings.py 可以命名为任意名称,因为他是一个自行执行的文件,但 startup.py 必须以 .py 结尾,否则将无法被执行注册执行(实际上,只有当文件以 .py 结尾, “Register” 选项才会显示为可开启的状态,否则为灰色)。

文章最后你可以下载到完整的脚本。


这里再加一个小提示,那就是 Pablo 的 Amaranth 脚本是一个相当不错的生产优化插件,点击这里查看器完整的功能列表。我最喜欢的其中一个功能,就是场景的调试选项,可以帮你找到丢失的贴图等。Amaranth 可以由你自行编译,也可以在 Blender 的自动编译版本中下载。


好了,接下来我们就分别看看这两个脚本是如何编写的。

settings.py:

1. 属性的定义申明

我喜欢在脚本的前面将一些我常用的参数做一个定义并赋值,这样在脚本中直接调用这些变量即可,而不是满屏幕的到处找这些属性然后分别修改参数。脚本的注释以 # 开头,所以随便写什么都不会印象代码的运行。

专业的脚本都会有一些注释规范,不过这篇文章不是写给程序员的,所以大家就随意吧

  ____                      _                          
 / ___| ___   ___  ___  ___| |__   ___ _ __ _ __ _   _ 
| |  _ / _ \ / _ \/ __|/ _ \ '_ \ / _ \ '__| '__| | | |
| |_| | (_) | (_) \__ \  __/ |_) |  __/ |  | |  | |_| |
 \____|\___/ \___/|___/\___|_.__/ \___|_|  |_|   \__, |
                                                 |___/
##############################################################
#
#                                                                     SETTINGS
Samples = 50
Depth_of_field = 0.006

开头的符号文字可以在右侧链接中生成: ASCII 生成器


2. 导入 Blender Python 并定义当前场景

脚本开头要这么写就行了:

##############################################################
#
#                                                                        SCRIPT
import bpy
Scene = bpy.context.scene

3. 开启简化选项,设置细分数为0,然后开启 Amaranth 的非简化渲染

我们在本文中涉及到的大部分代码和方法都可以在 Blender 的界面上找到,你只需要将鼠标移动到某个参数上面,就会看到下图中得类似提示,虽然你看到的也许根本就不是最后实际调用的方法,但至少可以给你一些编写提示:

blenderget-一些实用的Python小技巧-开发 -2

接着单击 Shift + F4 进入 Python 控制台,然后敲入:bpy.data.sce… 并单击组合键 CTRL + Space 来获取代码自动提示,再按一次进入下一个提示。如果要清除当前输入,可以单击 Shift + Enter。我们可以试试 bpy.data.scenes[‘Scene’].render.use_simplify 然后再按回车,控制台就会根据当前系统设置显示出对应的结果,如果我们希望对参数做出修改

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值