From 6369d5abf6aad8bd20b2c4ff73405489f66d70a7 Mon Sep 17 00:00:00 2001 From: lodenthal <lodenthal@uni-bielefeld.de> Date: Thu, 21 Dec 2017 19:50:44 +0300 Subject: [PATCH] setter in rendering updated --- navipy/rendering/bee_sampling.py~ | 2 +- navipy/rendering/cyber_bee.py | 57 +++++++++++++------------------ navipy/rendering/cyber_bee.py~ | 56 ++++++++++++------------------ 3 files changed, 46 insertions(+), 69 deletions(-) diff --git a/navipy/rendering/bee_sampling.py~ b/navipy/rendering/bee_sampling.py~ index 44688df..c1f388a 100644 --- a/navipy/rendering/bee_sampling.py~ +++ b/navipy/rendering/bee_sampling.py~ @@ -159,6 +159,6 @@ if __name__ == "__main__": grid_pos = bee_samp.grid_posorients condition = (grid_pos.x**2 + grid_pos.y**2) < ((bee_samp.world_dim / 2)**2) bee_samp.set_gridindeces2nan(condition[condition == 0].index) - bee_samp.set_cycle_samples(samples=5) + bee_samp.cycle_samples(samples=5) with tempfile.TemporaryDirectory() as folder: bee_samp.render(folder + '/database.db') diff --git a/navipy/rendering/cyber_bee.py b/navipy/rendering/cyber_bee.py index a148131..ac7a2d8 100644 --- a/navipy/rendering/cyber_bee.py +++ b/navipy/rendering/cyber_bee.py @@ -48,9 +48,9 @@ class Cyberbee(): bpy.context.scene.cycles.filter_type = 'GAUSSIAN' # Call all set function with default values self.camera_rotation_mode = 'XYZ' - self.camera_fov() + self.camera_fov = [[-90, 90], [-180, 180]] self.camera_gaussian_width = 1.5 - self.camera_resolution() + self.camera_resolution = [360, 180] self.cycle_samples = 30 # switch on nodes # Create render link to OutputFile with Image and Z buffer @@ -183,19 +183,14 @@ class Cyberbee(): self.camera.data.cycles.longitude_max) return fov - # @camera_fov.setter - def set_camera_fov(self, latmin=-90, latmax=+90, - longmin=-180, longmax=+180): + @camera_fov.setter + def camera_fov(self, resolution=[[-90, 90], [-180, 180]]): """change the field of view of the panoramic camera - :param latmin: minimum latitude (in deg) - :type latmin: float - :param latmax: maximum latitude (in deg) - :type latmax: float - :param longmin: minimum longitude (in deg) - :type longmin: float - :param longmin: maximum longitude (in deg) - :type longmin: float + :param resolution: [[minimum latitude, maximum latitude], + [minimum longitude, maximum longitude]] + (in deg) + :type latmin: 2x2 float array or list ..todo use @property.setter def camera_fov(self, latlongrange) @@ -204,22 +199,17 @@ class Cyberbee(): ..todo Change assert to if -> raise TypeError()/KeyError() """ - if not (isinstance(latmin, int) or isinstance(latmin, float)): - raise TypeError('latmin must be of type integer or float') - if not (isinstance(latmax, int) or isinstance(latmax, float)): - raise TypeError('latmin must be of type integer or float') - if not (isinstance(longmin, int) or isinstance(longmin, float)): - raise TypeError('latmin must be of type integer or float') - if not (isinstance(longmax, int) or isinstance(longmax, float)): - raise TypeError('latmin must be of type integer or float') + if not (isinstance(resolution, list) or + isinstance(resolution, np.ndarray)): + raise TypeError('resolution must be list or array') if not self.camera.data.type == 'PANO': raise Exception('Camera is not panoramic') if not self.camera.data.cycles.panorama_type == 'EQUIRECTANGULAR': raise Exception('Camera is not equirectangular') - self.camera.data.cycles.latitude_min = np.deg2rad(latmin) - self.camera.data.cycles.latitude_max = np.deg2rad(latmax) - self.camera.data.cycles.longitude_min = np.deg2rad(longmin) - self.camera.data.cycles.longitude_max = np.deg2rad(longmax) + self.camera.data.cycles.latitude_min = np.deg2rad(resolution[0, 0]) + self.camera.data.cycles.latitude_max = np.deg2rad(resolution[0, 1]) + self.camera.data.cycles.longitude_min = np.deg2rad(resolution[1, 0]) + self.camera.data.cycles.longitude_max = np.deg2rad(resolution[1, 1]) @property def camera_gaussian_width(self, gauss_w=1.5): @@ -269,8 +259,8 @@ class Cyberbee(): resolution_y = bpy.context.scene.render.resolution_y return resolution_x, resolution_y - # @camera_resolution.setter - def set_camera_resolution(self, resolution_x=360, resolution_y=180): + @camera_resolution.setter + def set_camera_resolution(self, resolution=[360, 180]): """change the camera resolution (nb of pixels) @@ -293,18 +283,17 @@ class Cyberbee(): ..todo check type and raise TypeError """ - if not isinstance(resolution_x, int): - raise TypeError('resolution must be integer') - if not isinstance(resolution_y, int): - raise TypeError('resolution must be integer') - bpy.context.scene.render.resolution_x = resolution_x - bpy.context.scene.render.resolution_y = resolution_y + if not (isinstance(resolution, list) or + isinstance(resolution, np.ndarray)): + raise TypeError('resolution list or array') + bpy.context.scene.render.resolution_x = resolution[0] + bpy.context.scene.render.resolution_y = resolution[1] bpy.context.scene.render.resolution_percentage = 100 def update(self, posorient): """assign the position and the orientation of the camera. - :param posorient: is a 1x6 vector continaing: + :param posorient: is a 1x6 vector containing: x,y,z, angle_1, angle_2, angle_3, here the angles are euler rotation around the axis specified by scene.camera.rotation_mode diff --git a/navipy/rendering/cyber_bee.py~ b/navipy/rendering/cyber_bee.py~ index 7ba2b21..6d80fbf 100644 --- a/navipy/rendering/cyber_bee.py~ +++ b/navipy/rendering/cyber_bee.py~ @@ -48,9 +48,9 @@ class Cyberbee(): bpy.context.scene.cycles.filter_type = 'GAUSSIAN' # Call all set function with default values self.camera_rotation_mode = 'XYZ' - self.camera_fov() + self.camera_fov = [[-90, 90], [-180, 180]] self.camera_gaussian_width = 1.5 - self.camera_resolution() + self.camera_resolution = [360, 180] self.cycle_samples = 30 # switch on nodes # Create render link to OutputFile with Image and Z buffer @@ -183,19 +183,14 @@ class Cyberbee(): self.camera.data.cycles.longitude_max) return fov - # @camera_fov.setter - def set_camera_fov(self, latmin=-90, latmax=+90, - longmin=-180, longmax=+180): + @camera_fov.setter + def camera_fov(self, resolution=[[-90, 90], [-180, 180]]): """change the field of view of the panoramic camera - :param latmin: minimum latitude (in deg) - :type latmin: float - :param latmax: maximum latitude (in deg) - :type latmax: float - :param longmin: minimum longitude (in deg) - :type longmin: float - :param longmin: maximum longitude (in deg) - :type longmin: float + :param resolution: [[minimum latitude, maximum latitude], + [minimum longitude, maximum longitude]] + (in deg) + :type latmin: 2x2 float array or list ..todo use @property.setter def camera_fov(self, latlongrange) @@ -204,22 +199,17 @@ class Cyberbee(): ..todo Change assert to if -> raise TypeError()/KeyError() """ - if not (isinstance(latmin, int) or isinstance(latmin, float)): - raise TypeError('latmin must be of type integer or float') - if not (isinstance(latmax, int) or isinstance(latmax, float)): - raise TypeError('latmin must be of type integer or float') - if not (isinstance(longmin, int) or isinstance(longmin, float)): - raise TypeError('latmin must be of type integer or float') - if not (isinstance(longmax, int) or isinstance(longmax, float)): - raise TypeError('latmin must be of type integer or float') + if not (isinstance(resolution, list) or + isinstance(resolution, np.ndarray)): + raise TypeError('resolution must be list or array') if not self.camera.data.type == 'PANO': raise Exception('Camera is not panoramic') if not self.camera.data.cycles.panorama_type == 'EQUIRECTANGULAR': raise Exception('Camera is not equirectangular') - self.camera.data.cycles.latitude_min = np.deg2rad(latmin) - self.camera.data.cycles.latitude_max = np.deg2rad(latmax) - self.camera.data.cycles.longitude_min = np.deg2rad(longmin) - self.camera.data.cycles.longitude_max = np.deg2rad(longmax) + self.camera.data.cycles.latitude_min = np.deg2rad(resolution[0, 0]) + self.camera.data.cycles.latitude_max = np.deg2rad(resolution[0, 1]) + self.camera.data.cycles.longitude_min = np.deg2rad(resolution[1, 0]) + self.camera.data.cycles.longitude_max = np.deg2rad(resolution[1, 1]) @property def camera_gaussian_width(self, gauss_w=1.5): @@ -269,8 +259,8 @@ class Cyberbee(): resolution_y = bpy.context.scene.render.resolution_y return resolution_x, resolution_y - # @camera_resolution.setter - def set_camera_resolution(self, resolution_x=360, resolution_y=180): + @camera_resolution.setter + def set_camera_resolution(self, resolution=[360, 180]): """change the camera resolution (nb of pixels) @@ -293,18 +283,16 @@ class Cyberbee(): ..todo check type and raise TypeError """ - if not isinstance(resolution_x, int): - raise TypeError('resolution must be integer') - if not isinstance(resolution_y, int): - raise TypeError('resolution must be integer') - bpy.context.scene.render.resolution_x = resolution_x - bpy.context.scene.render.resolution_y = resolution_y + if not (isinstance(resolution, list) or isinstance(resolution, np.ndarray)): + raise TypeError('resolution list or array') + bpy.context.scene.render.resolution_x = resolution[0] + bpy.context.scene.render.resolution_y = resolution[1] bpy.context.scene.render.resolution_percentage = 100 def update(self, posorient): """assign the position and the orientation of the camera. - :param posorient: is a 1x6 vector continaing: + :param posorient: is a 1x6 vector containing: x,y,z, angle_1, angle_2, angle_3, here the angles are euler rotation around the axis specified by scene.camera.rotation_mode -- GitLab