[Bf-extensions-cvs] [d19453eb] master: io_convert_image_to_mesh_img: move to contrib: T63750

meta-androcto noreply at git.blender.org
Fri May 24 03:44:09 CEST 2019


Commit: d19453eb3dfa5a8b08c40ea4e95d66c9484455e8
Author: meta-androcto
Date:   Fri May 24 11:43:47 2019 +1000
Branches: master
https://developer.blender.org/rBAd19453eb3dfa5a8b08c40ea4e95d66c9484455e8

io_convert_image_to_mesh_img: move to contrib: T63750

===================================================================

D	io_convert_image_to_mesh_img/__init__.py
D	io_convert_image_to_mesh_img/mesh/__init__.py
D	io_convert_image_to_mesh_img/mesh/dtm.py
D	io_convert_image_to_mesh_img/mesh/terrain.py
D	io_convert_image_to_mesh_img/mesh/triangulate.py
D	io_convert_image_to_mesh_img/pvl/__init__.py
D	io_convert_image_to_mesh_img/pvl/label.py
D	io_convert_image_to_mesh_img/pvl/parse.py
D	io_convert_image_to_mesh_img/pvl/patterns.py
D	io_convert_image_to_mesh_img/ui/__init__.py
D	io_convert_image_to_mesh_img/ui/importer.py
D	io_convert_image_to_mesh_img/ui/terrainpanel.py

===================================================================

diff --git a/io_convert_image_to_mesh_img/__init__.py b/io_convert_image_to_mesh_img/__init__.py
deleted file mode 100644
index a884fb90..00000000
--- a/io_convert_image_to_mesh_img/__init__.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# This file is a part of the HiRISE DTM Importer for Blender
-#
-# Copyright (C) 2017 Arizona Board of Regents on behalf of the Planetary Image
-# Research Laboratory, Lunar and Planetary Laboratory at the University of
-# Arizona.
-#
-# 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 3 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, see <http://www.gnu.org/licenses/>.
-
-"""A HiRISE DTM Importer for Blender"""
-
-bl_info = {
-    "name": "HiRISE DTM Importer",
-    "author": "Nicholas Wolf (nicwolf at pirl.lpl.arizona.edu)",
-    "version": (0, 2, 2),
-    "blender": (2, 78, 0),
-    "location": "File > Import > HiRISE DTM (.img)",
-    "description": "Import a HiRISE DTM as a mesh",
-    "warning": "May consume a lot of memory",
-    "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/Py/"
-                "Scripts/Import-Export/HiRISE_DTM_from_PDS_IMG",
-    "category": "Import-Export",
-}
-
-if "bpy" in locals():
-    import importlib
-    importlib.reload(importer)
-    importlib.reload(terrainpanel)
-
-else:
-    from .ui import importer
-    from .ui import terrainpanel
-
-import bpy
-
-
-def menu_import(self, context):
-    i = importer.ImportHiRISETerrain
-    self.layout.operator(i.bl_idname, text=i.bl_label)
-
-
-def register():
-    bpy.utils.register_module(__name__)
-    bpy.types.TOPBAR_MT_file_import.append(menu_import)
-
-
-def unregister():
-    bpy.utils.unregister_module(__name__)
-    bpy.types.TOPBAR_MT_file_import.remove(menu_import)
-
-
-if __name__ == '__main__':
-    register()
diff --git a/io_convert_image_to_mesh_img/mesh/__init__.py b/io_convert_image_to_mesh_img/mesh/__init__.py
deleted file mode 100644
index edbc8c88..00000000
--- a/io_convert_image_to_mesh_img/mesh/__init__.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# This file is a part of the HiRISE DTM Importer for Blender
-#
-# Copyright (C) 2017 Arizona Board of Regents on behalf of the Planetary Image
-# Research Laboratory, Lunar and Planetary Laboratory at the University of
-# Arizona.
-#
-# 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 3 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, see <http://www.gnu.org/licenses/>.
-
-"""A sub-package for loading DTMs as 3D models"""
-
-from . import dtm
-from . import terrain
-
-__all__ = ['dtm', 'terrain', ]
diff --git a/io_convert_image_to_mesh_img/mesh/dtm.py b/io_convert_image_to_mesh_img/mesh/dtm.py
deleted file mode 100644
index a6ab6e30..00000000
--- a/io_convert_image_to_mesh_img/mesh/dtm.py
+++ /dev/null
@@ -1,219 +0,0 @@
-# This file is a part of the HiRISE DTM Importer for Blender
-#
-# Copyright (C) 2017 Arizona Board of Regents on behalf of the Planetary Image
-# Research Laboratory, Lunar and Planetary Laboratory at the University of
-# Arizona.
-#
-# 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 3 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, see <http://www.gnu.org/licenses/>.
-
-"""Objects for importing HiRISE DTMs."""
-
-import numpy as np
-
-from .. import pvl
-
-
-class DTM:
-    """
-    HiRISE Digital Terrain Model
-
-    This class imports a HiRISE DTM from a Planetary Data Systems (PDS)
-    compliant .IMG file.
-
-    Parameters
-    ----------
-    path : str
-    terrain_resolution : float, optional
-        Controls the resolution the DTM is read at. This should be a float
-        in the range [0.01, 1.0] (and will be constrained to this range). A
-        value of 1.0 will result in the DTM being read at full resolution. A
-        value of 0.01 will result in the DTM being read at 1/100th resolution.
-        Default is 1.0 (no downsampling).
-
-    Todo
-    ----
-    * Use GDAL for importing the DTM if it is installed for this Python
-      environment. If/when I have the time to do this, it probably
-      warrants breaking out separate importer classes. The benefits of
-      doing this are pretty substantial, though:
-
-        + More reliable (doesn't rely on my PVL parser for finding the
-          valid values in the DTM, for locating the starting position of
-          the elevation data in the .IMG file)
-
-        + Other, better, downsampling algorithms are already built in.
-
-        + Would make this much better at general PDS DTM importing,
-          currently some of the import code is specific to HiRISE DTMs.
-
-    """
-
-    # Special constants in our data:
-    #     NULL : No data at this point.
-    #     LRS  : Low Representation Saturation
-    #     LIS  : Low Instrument Saturation
-    #     HRS  : High Representation Saturation
-    #     HIS  : High Insturment Saturation
-    SPECIAL_VALUES = {
-        "NULL": np.fromstring(b'\xFF\x7F\xFF\xFB', dtype='>f4')[0],
-        "LRS": np.fromstring(b'\xFF\x7F\xFF\xFC', dtype='>f4')[0],
-        "LIS": np.fromstring(b'\xFF\x7F\xFF\xFD', dtype='>f4')[0],
-        "HRS": np.fromstring(b'\xFF\x7F\xFF\xFE', dtype='>f4')[0],
-        "HIS": np.fromstring(b'\xFF\x7F\xFF\xFF', dtype='>f4')[0]
-    }
-
-    def __init__(self, path, terrain_resolution=1.0):
-        self.path = path
-        self.terrain_resolution = terrain_resolution
-        self.label = self._read_label()
-        self.data = self._read_data()
-
-    def _read_label(self):
-        """Returns a dict-like representation of a PVL label"""
-        return pvl.load(self.path)
-
-    def _read_data(self):
-        """
-        Reads elevation data from a PDS .IMG file.
-
-        Notes
-        -----
-        * Uses nearest-neighbor to downsample data.
-
-        Todo
-        ----
-        * Add other downsampling algorithms.
-
-        """
-        h, w = self.image_resolution
-        max_samples = int(w - w % self.bin_size)
-
-        data = np.zeros(self.shape)
-        with open(self.path, 'rb') as f:
-            # Seek to the first byte of data
-            start_byte = self._get_data_start()
-            f.seek(start_byte)
-            # Iterate over each row of the data
-            for r in range(data.shape[0]):
-                # Each iteration, seek to the right location before
-                # reading a row. We determine this location as the
-                # first byte of data PLUS a offset which we calculate as the
-                # product of:
-                #
-                #     4, the number of bytes in a single record
-                #     r, the current row index
-                #     w, the number of records in a row of the DTM
-                #     bin_size, the number of records in a bin
-                #
-                # This is where we account for skipping over rows.
-                offset = int(4 * r * w * self.bin_size)
-                f.seek(start_byte + offset)
-                # Read a row
-                row = np.fromfile(f, dtype=np.float32, count=max_samples)
-                # This is where we account for skipping over columns.
-                data[r] = row[::self.bin_size]
-
-        data = self._process_invalid_data(data)
-        return data
-
-    def _get_data_start(self):
-        """Gets the start position of the DTM data block"""
-        label_length = self.label['RECORD_BYTES']
-        num_labels = self.label.get('LABEL_RECORDS', 1)
-        return int(label_length * num_labels)
-
-    def _process_invalid_data(self, data):
-        """Sets any 'NULL' elevation values to np.NaN"""
-        invalid_data_mask = (data <= self.SPECIAL_VALUES['NULL'])
-        data[invalid_data_mask] = np.NaN
-        return data
-
-    @property
-    def map_size(self):
-        """Geographic size of the bounding box around the DTM"""
-        scale = self.map_scale * self.unit_scale
-        w = self.image_resolution[0] * scale
-        h = self.image_resolution[1] * scale
-        return (w, h)
-
-    @property
-    def mesh_scale(self):
-        """Geographic spacing between mesh vertices"""
-        return self.bin_size * self.map_scale * self.unit_scale
-
-    @property
-    def map_info(self):
-        """Map Projection metadata"""
-        return self.label['IMAGE_MAP_PROJECTION']
-
-    @property
-    def map_scale(self):
-        """Geographic spacing between DTM posts"""
-        map_scale = self.map_info.get('MAP_SCALE', None)
-        return getattr(map_scale, 'value', 1.0)
-
-    @property
-    def map_units(self):
-        """Geographic unit for spacing between DTM posts"""
-        map_scale = self.map_info.get('MAP_SCALE', None)
-        return getattr(map_scale, 'units', None)
-
-    @property
-    def unit_scale(self):
-        """
-        The function that creates a B

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list