+def boneLayerMask(bone, layers):
+ layer=[]
+ for i in range(32):
+ try:
+ layer.append(True if layers[i]!=0 else False)
+ except IndexError:
+ layer.append(False)
+ bone.layer=layer
+
+def objectLayerMask(object, layers):
+ layer=[]
+ for i in range(20):
+ try:
+ layer.append(True if layers[i]!=0 else False)
+ except IndexError:
+ layer.append(False)
+ object.layers=layer
+
+def objectPinShape(o):
+ o.shape_key_lock=True
+
+def objectAddShapeKey(o, name):
+ return o.add_shape_key(name)
+
+def objectActivateShapeKey(o, index):
+ o.active_shape_key_index=index
+
+def shapeKeyAssign(shapeKey, index, pos):
+ shapeKey.data[index].co=pos
+
+def objectIsVisible(obj):
+ return obj.restrict_view
+
+def meshVertexGroupNames(meshObject):
+ for g in meshObject.vertex_groups:
+ yield g.name
+
+def faceNormal(face):
+ return face.normal
+
+def meshFaceUv(mesh, i, face):
+ return mesh.uv_textures[0].data[i].uv
+
+def armatureModifierGetObject(m):
+ return m.object
+
+def objectHasShapeKey(o):
+ return o.data.shape_keys
+
+def objectShapeKeys(o):
+ return o.data.shape_keys.keys
+
+def meshVertexGroup(meshObject, name):
+ indices=[]
+ for i, v in enumerate(meshObject.data.verts):
+ for g in v.groups:
+ if meshObject.vertex_groups[g.group].name==name:
+ indices.append(i)
+ return indices
+
+def materialGet(scene, material_name):
+ return bpy.data.materials[material_name]
+
+def modifierIsArmature(m):
+ return m.type=="ARMATURE"
+
+def boneHeadLocal(b):
+ return b.head_local[0:3]
+
+def boneTailLocal(b):
+ return b.tail_local[0:3]
+
+def boneIsConnected(b):
+ return b.connected
+
+def constraintIsIKSolver(c):
+ return c.type=='IK'
+
+def ikChainLen(c):
+ return c.chain_length
+
+def ikTarget(c):
+ return c.subtarget
+
+def ikItration(c):
+ return c.iterations
+
+def ikRotationWeight(c):
+ return c.weight
+
+def shapeKeyGet(b, index):
+ return b.data[index].co
+
+def shapeKeys(b):
+ for k in b.data:
+ yield k.co
+
+def VtoV(v):
+ return mathutils.Vector([v.x, v.y, v.z])
+
+def meshSetSmooth(mesh, smoothing):
+ mesh.autosmooth_angle=int(smoothing)
+ mesh.autosmooth=True
+ mesh.calc_normals()