OSDN Git Service

export toon textures.
[meshio/meshio.git] / swig / blender / bl24.py
index 3ef3dab..f57b1c7 100755 (executable)
@@ -53,9 +53,12 @@ def message(msg):
 def enterEditMode():
     Blender.Window.EditMode(1)
 
-def exitEditMode():
+def enterObjectMode():
     Blender.Window.EditMode(0)
 
+def enterPoseMode():
+    Blender.Window.PoseMode(1)
+
 def createVector(x, y, z):
     return Mathutils.Vector(x, y, z)
 
@@ -257,6 +260,22 @@ class object:
             indices.append(index)
         return indices
 
+    @staticmethod
+    def createBoneGroup(o, name, color_set='DEFAULT'):
+        # create group
+        object.activate(o)
+        enterPoseMode()
+        bpy.ops.pose.group_add()
+        # set name
+        pose=object.getPose(o)
+        g=pose.active_bone_group
+        g.name=name
+        g.color_set=color_set
+
+    @staticmethod
+    def boneGroups(o):
+        return object.getPose(o).bone_groups
+
 
 class modifier:
     @staticmethod
@@ -302,13 +321,22 @@ class texture:
     @staticmethod
     @to_internal_encoding
     def create(path):
-        image = Blender.Image.Load(path)
+        try:
+            image = Blender.Image.Load(path)
+        except IOError:
+            image = None
         texture = Blender.Texture.New(path)
         texture.type = Blender.Texture.Types.IMAGE
         texture.image = image
         texture.imageFlags|=Blender.Texture.ImageFlags.USEALPHA
         return texture, image
 
+    @staticmethod
+    def getPath(t):
+        image=t.getImage()
+        if image:
+            return image.getFilename()
+
 
 class material:
     @staticmethod
@@ -322,13 +350,34 @@ class material:
         return Blender.Material.Get(material_name)
 
     @staticmethod
-    def addTexture(material, texture):
-        material.mode = material.mode | Blender.Material.Modes.TEXFACE
-        material.setTexture(0, texture, Blender.Texture.TexCo.UV)
+    def addTexture(m, texture, enable=True):
+        for i in xrange(10):
+            if m.textures[i]:
+                continue
+            if enable:
+                m.mode = m.mode | Blender.Material.Modes.TEXFACE
+                m.setTexture(i, texture, Blender.Texture.TexCo.UV)
+            else:
+                m.setTexture(i, texture)
+                material.setUseTexture(m, i, False)
+            return i
+
+    @staticmethod
+    def getTexture(m, index):
+        return m.textures[index].tex
 
     @staticmethod
-    def hasTexture(material):
-        return len(material.getTextures())>0
+    def hasTexture(m):
+        return len(m.getTextures())>0
+
+    @staticmethod
+    def setUseTexture(m, index, enable):
+        enabledTextures=set(m.enabledTextures)
+        if enable:
+            enabledTextures.add(index)
+        else:
+            enabledTextures.remove(index)
+        m.enabledTextures=list(enabledTextures)
 
     @staticmethod
     def eachTexturePath(m, dirname):
@@ -406,6 +455,10 @@ class mesh:
     def addMaterial(m, material):
         m.materials+=[material]
 
+    @staticmethod
+    def getMaterial(m, index):
+        return m.materials[index]
+
 
 class vertex:
     @staticmethod