Skip to content
Snippets Groups Projects
__init__.py 5.33 KiB
Newer Older
  • Learn to ignore specific revisions
  • # ##### 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 #####
    
    
    bl_info = {
    
        "name": "HiRISE DTM from PDS IMG",
        "author": "Tim Spriggs (tims@uahirise.org)",
    
    Luca Bonavita's avatar
    Luca Bonavita committed
        "version": (0, 1, 2),
    
        "blender": (2, 5, 7),
        "api": 35622,
    
        "location": "File > Import > HiRISE DTM from PDS IMG (.IMG)",
        "description": "Import a HiRISE DTM formatted as a PDS IMG file",
    
    Luca Bonavita's avatar
    Luca Bonavita committed
        "warning": "May consume a lot of memory",
    
        "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.5/Py/"\
    
    Luca Bonavita's avatar
    Luca Bonavita committed
            "Scripts/Import-Export/HiRISE_DTM_from_PDS_IMG",
    
        "tracker_url": "https://projects.blender.org/tracker/index.php?"\
    
    Luca Bonavita's avatar
    Luca Bonavita committed
            "func=detail&aid=24897&group_id=153&atid=469",
    
    Luca Bonavita's avatar
    Luca Bonavita committed
        "category": "Import-Export"}
    
    
    # Revision History:
    # 0.1.1 - make default import 12x12 bin (fast) to not consume too much memory
    #         by default (TJS - 2010-12-07)
    # 0.1.2 - included into svn under the tree:
    #         trunk/py/scripts/addons/io_convert_image_to_mesh_img
    #         may be moved out to contrib once the blender downloader works well
    #         (TJS - 2010-12-14)
    
    
    if "bpy" in locals():
        import imp
        imp.reload(import_img)
    else:
        from . import import_img
    
    
    
    import bpy
    from bpy.props import *
    
    from bpy_extras.io_utils import ImportHelper
    
    
    
    class ImportHiRISEIMGDTM(bpy.types.Operator, ImportHelper):
        '''Import a HiRISE DTM formatted as a PDS IMG file'''
        bl_idname = "import_shape.img"
        bl_label  = "Import HiRISE DTM from PDS IMG"
    
    
        filename_ext = ".IMG"
        filter_glob = StringProperty(default="*.IMG", options={'HIDDEN'})
    
    
        scale = FloatProperty(name="Scale",
                              description="Scale the IMG by this value",
                              min=0.0001,
                              max=10.0,
                              soft_min=0.001,
                              soft_max=100.0,
                              default=0.01)
    
    
        bin_mode = EnumProperty(items=(
                                       ('NONE', "None", "Don't bin the image"),
                                       ('BIN2', "2x2", "use 2x2 binning to import the mesh"),
                                       ('BIN6', "6x6", "use 6x6 binning to import the mesh"),
                                       ('BIN6-FAST', "6x6 Fast", "use one sample per 6x6 region"),
                                       ('BIN12', "12x12", "use 12x12 binning to import the mesh"),
                                       ('BIN12-FAST', "12x12 Fast", "use one sample per 12x12 region"),
                                      ),
                                name="Binning",
                                description="Import Binning.",
                                default='BIN12-FAST'
    
    
        #red_material = BoolProperty(name="Mars Red Mesh",
        #                            description="Set the mesh as a 'Mars' red value",
        #                            default=True
        #			        )
    
        ## TODO: add support for cropping on import when the checkbox is checked
        # do_crop = BoolProperty(name="Crop Image", description="Crop the image during import", ... )
        ## we only want these visible when the above is "true"
        # crop_x = IntProperty(name="X", description="Offset from left side of image")
        # crop_y = IntProperty(name="Y", description="Offset from top of image")
        # crop_w = IntProperty(name="Width", description="width of cropped operation")
        # crop_h = IntProperty(name="Height", description="height of cropped region")
        ## This is also a bit ugly and maybe an anti-pattern. The problem is that
        ## importing a HiRISE DTM at full resolution will likely kill any mortal user with
        ## less than 16 GB RAM and getting at specific features in a DTM at full res
        ## may prove beneficial. Someday most mortals will have 16GB RAM.
        ## -TJS 2010-11-23
    
        def execute(self, context):
          filepath = self.filepath
          filepath = bpy.path.ensure_ext(filepath, self.filename_ext)
    
          return import_img.load(self, context,
                                 filepath=self.filepath,
                                 scale=self.scale,
                                 bin_mode=self.bin_mode,
                                 cropVars=False,
                                 # marsRed=self.red_material
                                 marsRed=False
                                 )
    
    ## How to register the script inside of Blender
    
    def menu_import(self, context):
        self.layout.operator(ImportHiRISEIMGDTM.bl_idname, text="HiRISE DTM from PDS IMG (*.IMG)")
    
    def register():
    
        bpy.types.INFO_MT_file_import.append(menu_import)
    
    def unregister():
    
        bpy.types.INFO_MT_file_import.remove(menu_import)
    
    if __name__ == "__main__":
        register()