[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55934] trunk/blender/release/scripts/ modules/bpy_extras/object_utils.py: py api: simple function to get an image from an objects for simple formats that only support one image per object .

Campbell Barton ideasman42 at gmail.com
Wed Apr 10 13:43:25 CEST 2013


Revision: 55934
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55934
Author:   campbellbarton
Date:     2013-04-10 11:43:25 +0000 (Wed, 10 Apr 2013)
Log Message:
-----------
py api: simple function to get an image from an objects for simple formats that only support one image per object.

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/bpy_extras/object_utils.py

Modified: trunk/blender/release/scripts/modules/bpy_extras/object_utils.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_extras/object_utils.py	2013-04-10 09:49:44 UTC (rev 55933)
+++ trunk/blender/release/scripts/modules/bpy_extras/object_utils.py	2013-04-10 11:43:25 UTC (rev 55934)
@@ -201,3 +201,42 @@
         return space_data.grid_scale_unit
 
     return 1.0
+
+
+def object_image_guess(obj, bm=None):
+    """
+    Return a single image used by the object,
+    first checking the texture-faces, then the material.
+    """
+    # TODO, cycles/nodes materials
+    me = obj.data
+    if bm is None:
+        if obj.mode == 'EDIT':
+            bm = bmesh.from_edit_mesh(me)
+
+    if bm is not None:
+        tex_layer = bm.faces.layers.tex.active
+        if tex_layer is not None:
+            for f in bm.faces:
+                image = f[tex_layer].image
+                if image is not None:
+                    return image
+    else:
+        tex_layer = me.uv_textures.active
+        if tex_layer is not None:
+            for tf in tex_layer.data:
+                image = tf.image
+                if image is not None:
+                    return image
+
+    for m in obj.data.materials:
+        if m is not None:
+            # backwards so topmost are highest priority
+            for mtex in reversed(m.texture_slots):
+                if mtex and mtex.use_map_color_diffuse:
+                    texture = mtex.texture
+                    if texture and texture.type == 'IMAGE':
+                        image = texture.image
+                        if image is not None:
+                            return image
+    return None




More information about the Bf-blender-cvs mailing list