![](/img/trans.png)
[英]How can I determine with script which textures are attached to a blender material?
[英]How can I in Blender acces a polygon, which is given by indices, for an operator?
在Blender 2.77
我有一个多边形,称为:
bpy.data.objects['Cube.001'].data.polygons[0]
和一个运算符:
bpy.ops.transform.resize(value=(0, 0, 1), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1)
如何使运算符在多边形上执行? 我努力了:
bpy.data.objects['Cube.001'].data.polygons[0].select = True
选择它,但似乎没有用。
当Blender将网格数据存储在object.data
,此数据仅在对象模式下有效,当您切换到编辑模式时,将创建网格数据的bmesh副本,当您离开编辑模式时,它将替换object.data
内容。 当您在编辑任何选择更改时使用重复的网格时,使用python对object.data
更改将不会影响编辑网格,并且在退出编辑模式时将被覆盖。
当您使用bpy.ops.transform.resize()
它可以在活动项目上使用,这意味着要调整其大小,您需要处于编辑模式。 在对象模式下,相同的运算符将调整对象的大小。
所以你可以使用
bpy.data.objects['Cube.001'].data.polygons[0].select = True
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.transform.resize(value=(0, 0, 1))
bpy.ops.object.mode_set(mode='OBJECT')
但是使用bmesh是使用python编辑网格数据的首选方法。 您可以在此处找到使用bmesh的示例,并在此处找到更详细的编辑bmesh 数据的示例。
因此,在z轴上缩放face[0]
的简单示例是-
import bpy
import bmesh
bm = bmesh.new()
bm.from_mesh(obj.data)
bm.faces.ensure_lookup_table()
bmesh.ops.scale(bm, verts=bm.faces[0].verts, vec=(0.0, 0.0, 1.0))
bm.to_mesh(obj.data)
bm.free()
看来您需要切换回OBJECT模式才能执行... polygons [0] .select
# assume in EDIT... mode now
bpy.data.objects['Cube.001'].data.polygons[0]
bpy.ops.object.editmode_toggle()
bpy.data.objects['Cube.001'].data.polygons[0].select = True
bpy.ops.object.editmode_toggle()
bpy.ops.transform.resize(value=(0, 0, 1),
constraint_axis=(False, False, False),
constraint_orientation='GLOBAL',
mirror=False,
proportional='DISABLED',
proportional_edit_falloff='SMOOTH',
proportional_size=1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.