0%

【blender】EasyBPY插件

【blender】EasyBPY插件

作为新手入门blender,总是会被各种繁琐的’xx.xx.xx’困扰,比如bpy.data.object,bpy.data.mesh bpy.data.material 等等。Curtis Holt 大佬开发的 EasyBPY 帮助我们解决了这个问题。我们可以使用此插件轻松的访问对象以及其他操作。

安装以及引入

插件的代码可以在github直接搜索得到(主要是我忘记了地址了),安装的话我们直接把里面的.py文件拷贝到

E:\blender\3.2 (根据自己blender版本来)\scripts\modules 下就可以了

引入则是在自己写的py文件中加入

1
2
import bpy
from easybpy import *

基本操作

获取对象

1
2
3
4
object = get_object("Cube")
select_object(object)
# or:
select_object("Cube")

创建集合

1
2
3
4
5
my_col = create_collection("MyCollection")
# copy object into MyCollection
copy_object(object, "MyCollection")
# or:
copy_object(object, my_col)

材料操作

1
2
3
4
5
6
7
8
9
10
11
12
#add matrial to an object
new_mat = create_material("New Material")
add_matrial_to_object(object, new_mat)

# get all materials from an object
mat_ref = get_materials_form_object(object)
mat_names = get_materials_names_from_object(object)

# remove material from objs
remove_material_from_object(object, new_mat)
# or
remove_material_from_object(object, "New Material")

变换操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# location
# get the location of the selcted object with consideration of the context of the args
location()
# get location of the object
location(object)
# set location of the object
location(object, [1.0, 2.0, 3.0])

# rotation and scaling are the same as location
rotation()
rotation(object)
rotation(object, [45.0, -25.0, 60,0])

scale()
scale(object)
scale(object, [1.0, 1.0, 1.0])

平滑操作和平直操作

1
2
3
4
5
6
7
shade_smooth()
shade_smooth(object)
shade_smooth("Cube")

shade_flat()
shade_flat(object)
shade_flat("Cube")

显示和隐藏

1
2
3
4
5
6
7
8
9
10
hide_in_viewport(object)
show_in_viewport(object)

hide_in_render(object)
show_in_render(object)

display_as_bounds(object)
display_as_textured(object)
display_as_solid(object)
display_as_wire(object)

对象的更多操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
new_object = create_object("New Object")
new_mesh = create_mesh("New Mesh")

if object_exists("Cube")
obj = get_object("Cube")
verts = get_vertices(obj)
faces = get_faces(obj)
edges = get_edges(obj)
rename_object(obj, "Delete me")

# also you can
delect_all_objects()
select_all_meshed()
select_all_curves()
select_all_cameras()
invert_selection()
delect_slected_objects()

实例

假设需要将一堆物体加入到一个集合,现在我们假设objs是需要操作的物体的列表

1
2
3
4
5
6
7
8
9
10
11
12
# assume objs is a list of objects

# create a new collectiona and link the objs to the collection
# be careful of the plural
col = create_collection("Collection")
link_objects_to_collection(objs, col)

if collection_exists("Collection"):
duplicate_collection("Collection")

# delete the used unnecessary layout
delete_hierarchy(col)

使用EasyBPY, 你几乎可以做任何事情,就像你可以创建一个物体,然后再给他添加一个修改器

1
2
curt = cerate_cube()
add_subsurt(curt, "Name of Modifier")

最后的最后,作者提到,该项目仍存在许多的功能缺失,但我认为这绝对是一个对用户极度友好的插件。关于EasyBPY的使用大致就是这些了,希望能对大家有所帮助。

本文作为作者在学习blender过程中的一个笔记,参考的视频在这,侵删。

【Blender+Python】BPY速成课 04 EasyBPY简介_哔哩哔哩_bilibili