[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [598] trunk/py/scripts/addons: rename planes from images to object_planes_from_images.py

Brendon Murphy meta.androcto1 at gmail.com
Sat Apr 17 16:55:24 CEST 2010


Revision: 598
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=598
Author:   meta-androcto
Date:     2010-04-17 16:55:24 +0200 (Sat, 17 Apr 2010)

Log Message:
-----------
rename planes from images to object_planes_from_images.py
now in the Object category.
*note this cleans Add_Mesh so only add_mesh scripts are in that category.
part of add mesh clean up for adding recall function.

Added Paths:
-----------
    trunk/py/scripts/addons/object_planes_from_images.py

Removed Paths:
-------------
    trunk/py/scripts/addons/add_mesh_planes_from_images.py

Deleted: trunk/py/scripts/addons/add_mesh_planes_from_images.py
===================================================================
--- trunk/py/scripts/addons/add_mesh_planes_from_images.py	2010-04-17 13:55:35 UTC (rev 597)
+++ trunk/py/scripts/addons/add_mesh_planes_from_images.py	2010-04-17 14:55:24 UTC (rev 598)
@@ -1,505 +0,0 @@
-# ##### BEGIN GPL LICENSE BLOCK #####
-#
-#  This program is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU General Public License
-#  as published by the Free Software Foundation; either version 2
-#  of the License, or (at your option) any later version.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with this program; if not, write to the Free Software Foundation,
-#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# ##### END GPL LICENSE BLOCK #####
-
-"""
-This script imports images and creates Planes with them as textures.
-At the moment the naming for objects, materials, textures and meshes
-is derived from the imagename.
-
-One can either import a single image, or all images in one directory.
-When imporing a directory one can either check the checkbox or leave
-the filename empty.
-
-As a bonus one can choose to import images of only one type.
-Atm this is the list of possible extensions:
-extList =
-    ('jpeg', 'jpg', 'png', 'tga', 'tiff', 'tif', 'exr',
-    'hdr', 'avi', 'mov', 'mp4', 'ogg', 'bmp', 'cin', 'dpx', 'psd')
-
-If someone knows a better way of telling if a file is an image which
-Blender can read, please tell so ;)
-
-when importing images that are allready referenced they are not
-reimported but the old ones reused as not to clutter the materials,
-textures and image lists.
-Instead the plane gets linked against an existing material.
-
-If one reimports images but chooses different material/texture mapping
-new materials are created.
-So one doesn't has to go through everything if one decides differently
-after importing 236 images.
-
-It also has an option to translate pixeldimensions into Blenderunits.
-"""
-
-bl_addon_info = {
-    'name': 'Add Mesh: Planes from Images',
-    'author': 'Florian Meyer (testscreenings)',
-    'version': '0.7',
-    'blender': (2, 5, 2),
-    'location': 'View3D > Add Mesh > Planes from Images',
-    'url': 'http://wiki.blender.org/index.php/Extensions:2.5/Py/' \
-        'Scripts/Add_Mesh/Planes_from_Images',
-    'description': 'Imports images and creates planes' \
-        ' with the appropiate aspect ratio.',
-    'category': 'Add Mesh'}
-
-import bpy
-from bpy.props import *
-from os import listdir
-from mathutils import Vector
-
-
-EXT_LIST = {
-    'jpeg': ['jpeg', 'jpg', 'jpe'],
-    'png': ['png'],
-    'tga': ['tga', 'tpic'],
-    'tiff': ['tiff', 'tif'],
-    'exr': ['exr'],
-    'hdr': ['hdr'],
-    'avi': ['avi'],
-    'mov': ['mov', 'qt'],
-    'mp4': ['mp4'],
-    'ogg': ['ogg', 'ogv'],
-    'bmp': ['bmp', 'dib'],
-    'cin': ['cin'],
-    'dpx': ['dpx'],
-    'psd': ['psd']}
-
-
-# Apply view rotation to objects if "Align To" for new objects
-# was set to "VIEW" in the User Preference.
-def apply_view_rotation(ob):
-    context = bpy.context
-    align = bpy.context.user_preferences.edit.object_align
-
-    if (context.space_data.type == 'VIEW_3D'
-        and align == 'VIEW'):
-            view3d = context.space_data
-            region = view3d.region_3d
-            viewMatrix = region.view_matrix
-            rot = viewMatrix.rotation_part()
-            ob.rotation_euler = rot.invert().to_euler()
-
-
-# Create plane mesh
-def createPlaneMesh(dimension, img):
-    # x is the x-aspectRatio.
-    x = img.size[0] / img.size[1]
-    y = 1
-
-    if dimension[0]:
-        x = (img.size[0] * (1.0 / dimension[1])) * 0.5
-        y = (img.size[1] * (1.0 / dimension[1])) * 0.5
-
-    verts = []
-    faces = []
-
-    v1 = (-x, -y, 0)
-    v2 = (x, -y, 0)
-    v3 = (x, y, 0)
-    v4 = (-x, y, 0)
-
-    verts.append(v1)
-    verts.append(v2)
-    verts.append(v3)
-    verts.append(v4)
-
-    faces.append([0, 1, 2, 3])
-
-    return verts, faces
-
-
-# Create plane object
-def createPlaneObj(img, dimension):
-    scene = bpy.context.scene
-
-    verts, faces = createPlaneMesh(dimension, img)
-
-    me = bpy.data.meshes.new(img.name)
-    me.from_pydata(verts, [], faces)
-    me.update()
-
-    plane = bpy.data.objects.new(img.name, me)
-    plane.data.add_uv_texture()
-
-    scene.objects.link(plane)
-    plane.location = scene.cursor_location
-    apply_view_rotation(plane)
-
-    return plane
-
-
-# Check if a file extension matches any
-# valid (i.e. recognized) image/movie format.
-def isImageFile(extension):
-    for ext, ext_list in EXT_LIST.items():
-        if extension in ext_list:
-            return True
-
-    return False
-
-
-# Get imagepaths from directory
-def getImageFilesInDirectory(directory, extension):
-    import os
-
-    # Get all files in the directory.
-    allFiles = listdir(directory)
-    allImages = []
-
-    extensions = []
-
-    # Import all images files?
-    if extension == '*':
-        all = True
-
-    else:
-        all = False
-        # Get the possible extensions
-        extensions = EXT_LIST[extension]
-
-    # Put all image files in the list.
-    for file in allFiles:
-        # Get the file extension (includes the ".")
-        e = os.path.splitext(file)[1]
-
-        # Separate by "." and get the last list-entry.
-        e = e.rpartition(".")[-1]
-
-        # Convert to lower case
-        e = e.lower()
-
-        if (e in extensions
-            or (all and isImageFile(e))):
-            allImages.append(file)
-
-    return allImages
-
-
-# Get image datablock from the (image's) filepath.
-def getImage(path):
-    img = []
-
-    # Check every Image if it is already there.
-    for image in bpy.data.images:
-        # If image with same path exists take that one.
-        if image.filename == path:
-            img = image
-
-    # Else create new Image and load from path.
-    if not img:
-        name = path.rpartition('\\')[2].rpartition('.')[0]
-        img = bpy.data.images.new(name)
-        img.source = 'FILE'
-        img.filename = path
-
-    return img
-
-
-# Create/get Material
-def getMaterial(tex, mapping):
-    mat = []
-
-    # Check all existing materials.
-    for material in bpy.data.materials:
-        # If a material with name and mapping
-        # texture with image exists, take that one...
-        if (material.name == tex.image.name
-        and tex.name in material.texture_slots
-        and material.mapping == mapping):
-            mat = material
-
-    # ... otherwise create new one and apply mapping.
-    if not mat:
-        mat = bpy.data.materials.new(name=tex.name)
-        mat.add_texture(tex, texture_coordinates='UV', map_to='COLOR')
-        mat.mapping = mapping
-        mat.name = tex.name
-
-    return mat
-
-
-# Create/get Texture
-def getTexture(path, img):
-    tex = []
-
-    # Check all existing textures.
-    for texture in bpy.data.textures:
-        # If an (image)texture with image exists, take that one...
-        if (texture.type == 'IMAGE'
-            and texture.image
-            and texture.image.filename == path):
-            tex = texture
-
-    # ... otherwise create a new one and apply mapping.
-    if not tex:
-        name = path.rpartition('\\')[2].rpartition('.')[0]
-        tex = bpy.data.textures.new(name=name)
-        tex.type = 'IMAGE'
-        tex = tex.recast_type()
-        tex.image = img
-
-    return tex
-
-
-# Custom material property - get
-def mapget(self):
-    """Custom property of the planes_from_images addon."""
-    mapping = []
-    mapping.append(self.shadeless)
-    mapping.append(self.transparency)
-    mapping.append(self.alpha)
-    mapping.append(self.specular_alpha)
-    mapping.append(self.transparency_method)
-
-    if (self.texture_slots[0]
-        and self.texture_slots[0].texture.type == 'IMAGE'
-        and self.texture_slots[0].texture.image):
-        mapping.append(self.texture_slots[0].texture.image.premultiply)
-
-    else:
-        mapping.append("no image")
-
-    return mapping
-
-
-# Custom material property - set
-def mapset(self, value):
-    self.shadeless = value[0]
-    self.transparency = value[1]
-    self.alpha = float(value[2])
-    self.specular_alpha = float(value[3])
-    self.transparency_method = value[4]
-
-    if (self.texture_slots[0]
-        and self.texture_slots[0].texture.type == 'IMAGE'
-        and self.texture_slots[0].texture.image):
-        self.texture_slots[0].texture.image.premultiply = value[5]
-
-
-bpy.types.Material.mapping = property(mapget, mapset)
-
-
-def main(filePath, options, mapping, dimension):
-    images = []
-    scene = bpy.context.scene
-
-    # If "Create from Directory" (no filename or checkbox) ####
-    if options['dir'] or not filePath[1]:
-        imageFiles = getImageFilesInDirectory(filePath[2], options['ext'])
-
-        # Check if images are loaded and put them in the list.
-        for imageFile in imageFiles:
-            img = getImage(str(filePath[2]) + "\\" + str(imageFile))
-            images.append(img)
-
-        # Deselect all objects.
-        bpy.ops.object.select_all(action='DESELECT')
-
-        # Assign/get all things.
-        for img in images:
-            # Create/get Texture
-            tex = getTexture(img.filename, img)
-
-            # Create/get Material
-            mat = getMaterial(tex, mapping)
-
-            # Create Plane
-            plane = createPlaneObj(img, dimension)
-
-            # Assign Material
-            plane.data.add_material(mat)
-
-            # Put Image into  UVTextureLayer
-            plane.data.uv_textures[0].data[0].image = img
-            plane.data.uv_textures[0].data[0].tex = True
-            plane.data.uv_textures[0].data[0].transp = 'ALPHA'
-            plane.data.uv_textures[0].data[0].twoside = True
-
-            plane.selected = True
-            scene.objects.active = plane
-
-    # If "Create Single Plane" (filename and is image)
-    else:
-        # Deselect all objects.
-        bpy.ops.object.select_all(action='DESELECT')
-
-        # Check if image is loaded.
-        img = getImage(filePath[0])
-
-        # Create/get Texture

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list