蟒蛇

注册

 

发新话题 回复该主题

适用于非程序员的Blender28Py [复制链接]

1#
免费治疗白癜风 http://www.t52mall.com/

创建3d渲染,游戏和动画总是令人难以置信的激动!好吧,除非它变得充满挑战或乏味。如果您一段时间以来一直在使用Blender或任何其他3D应用程序,您会发现自己一遍又一遍地遍历相同的任务,并且有时会想到:“我真的希望Blender为我做到这一点”。

通过脚本,可以!不仅如此,Python还可以创建有趣的新功能,这些功能甚至通过单击界面都无法实现。

如果您像我一样,并且没有接受过计算机科学方面的任何培训,那么编程看起来像是四个字母的单词,除了带有十一个字母(差了2.75倍!)。就像只有聪明人才知道的秘密语言一样,他们也许总是会阅读营养知识,制造有趣的火箭发动机或获得博士学位。在某种甚至不使用数字的数学运算中

幸运的是,事实并非如此。事实是,如果可以使用Ctrl+C和Ctrl+V进行复制和粘贴,则可以立即开始制作自己的BlenderPython脚本。

习惯于看代码

暴露疗法。进行性脱敏。随便说一下,但标准化某些最初看起来很奇怪的东西的最佳方法是在正确的环境中经常查看它。

您在Blender界面中执行的每个操作都是通过Python命令执行的。您可以通过将时间轴切换到“信息编辑器”并查看其在进行正常工作时会看到的内容来亲自检查一下。

信息编辑器可能有点麻烦,但是关于命令行的某些内容可能正在编写异端代码,但是在开始时请放心-大部分内容都是为了防万一,而98%的用户会发现。不需要的时间。因此,当您执行诸如移动多维数据集之类的简单操作时,它会为您提供两三行完整的代码,您可以忽略其中的大部分内容。重要的部分就在开始时:

bpy.ops.transform.translate(value=(0.5,0,0))

蟒蛇

您已经知道移动某物的名称称为“翻译”,因此其后的值分别是您分别在X,Y和Z轴上平移了对象的数量。在Blender的代码中找到“translate”之前的所有内容。好像Blender是一个巨大的嵌套菜单,并且您选择了BlenderPython-操作-变换-翻译。

BlenderPython(bpy)有9个主要部分。您不需要记住这些,但是了解其中一些可以帮助您了解Blender的工作原理。

bpy.app-有关Blender本身的信息,在运行时不会更改。

bpy.context-Blender中当前活动内容的只读列表。

bpy.data-Blender的所有内部数据,例如对象。

bpy.msgbus-代表“消息总线”,用于通知Blender某些更改。不用我们担心。

bpy.ops-您可以在Blender中执行的所有操作,从建模到将文件附加到渲染。

bpy.path-处理文件路径的函数。

bpy.props-Blender使用的不同属性。您可以使用它来告诉Blender输入应该是数字还是颜色。

bpy.types-Blender中存在的每种类型的事物,从修改器到纹理再到灯等等。

bpy.utils-实用程序功能,仅适用于Blender,但不处理内部数据。

如果您感到好奇,请参阅以下Blender2.8和所有以前版本的API文档。

在工作时,请习惯于在代码中找到最喜欢的工具的位置。您现在不需要了解所有内容,只需习惯它的外观即可!

强大的Python控制台

准备好下一步之后,转到“脚本工作空间”选项卡。您会在左下方找到现在熟悉的信息编辑器。在它的正上方是Python控制台,您可以在其中粘贴命令并使事情发生。尝试以下操作:在信息编辑器中选择一行,按Ctrl+C进行复制,然后使用Ctrl+V将其粘贴到控制台中。按Enter键,您将看到完全相同的操作再次发生!

现在,尝试以下操作:旋转,缩放和移动某物,或连续执行其他三个操作。从信息编辑器中复制所有三个文件,并将它们粘贴到控制台中。现在您一次只能做三件事!这是没有限制的,因此您可以根据需要一次完成数百项操作。即使您不花更多精力进行编码,这也是保留在口袋里的绝妙技巧。

使用文本编辑器保存命令

如果您经常执行许多任务,然后一直进行复制/粘贴,这本身就很繁琐!让我们节省一些时间,并使用Blender的文本编辑器使我们的多任务处理效率更高。

创建一个新的文本文件,然后将三个或更多个不同的操作从信息编辑器复制并粘贴到文本编辑器中。我将从添加一个多维数据集开始:

bpy.ops.mesh.primitive_cube_add(size=2,view_align=False,enter_editmode=False,location=(0,0,0))

蟒蛇

然后,我将沿Z轴旋转立方体:

bpy.ops.transform.rotate(value=-0.,orient_axis=Z,orient_type=GLOBAL,orient_matrix=((1,0,0),(0,1,0),(0,0,1)),orient_matrix_type=GLOBAL,constraint_axis=(False,False,True),mirror=True,proportional=DISABLED,proportional_edit_falloff=SMOOTH,proportional_size=1)

蟒蛇

哎呀,这么简单的东西很多代码!如果不打扰您,请继续进行下去。如果您发现它令人生畏,请尝试删除除值和定向轴以外的所有内容,以便于阅读。其余的将简单地假定为默认值。

bpy.ops.transform.rotate(value=-0.,orient_axis=Z)

蟒蛇

最后,让我们添加一个斜角修饰符:

bpy.ops.object.modifier_add(type=BEVEL)

蟒蛇

要运行脚本,您需要做的另一件事是键入:

import.bpy

蟒蛇

在文件的顶部,以便它可以读取BlenderPython。在“文本编辑器”的标题中打开三个用于行号,自动换行和语法高亮显示的按钮也很有帮助。

到这里,您现在有了脚本!现在,通过单击“文本编辑器”标题中的“运行脚本”,可以一次完成三件非常重要的事情。如果要保存以备后用或在其他文件中使用,请转至文本-另存为并将其另存为.pyPython文件。

如果您尝试的命令与我尝试的命令不同,并且脚本无法按预期运行,则可能是由于上下文所致-选择了哪个对象或哪个编辑器处于活动状态。您可以通过将Blender2.8的selection属性设置为True或False来选择或取消选择对象:

bpy.data.objects[ObjectName].select_set(state=True)

蟒蛇

所有冰雹自动完成

Blender拥有的某些命令只能通过代码完成,而在界面中找不到。此外,界面中确实发生了其他更改(例如,擦拭时间轴)并不能始终在信息编辑器中为您提供可以复制和粘贴的内容。

您始终可以使用Google或BlenderAPI文档来帮助您找到执行所需操作的正确命令,但是通常使用自动完成功能更容易找到它。如果您开始在Python控制台中输入地址,则可以按Ctrl+Space键,Blender会向您显示所有可用的方法来完成您编写的内容。这是浏览代码库和发现新功能的好方法。

文本编辑器还具有Ctrl+Space自动完成功能,但它的工作原理不同,通常没有帮助。如果您经常使用它,我建议您抓住JacquesLucke的CodeAuto

分享 转发
TOP
发新话题 回复该主题