def generate_threshold_point_cloud(self, voxel_world_id, prob=0.5, history=None): import json import boxm2_adaptor import boxm2_mesh_adaptor import voxel_globe.tools import voxel_globe.meta.models as models voxel_world = models.VoxelWorld.objects.get(id=voxel_world_id) service_inputs = json.loads(voxel_world.service.inputs) image_collection = models.ImageCollection.objects.get( id=service_inputs[0][0]) with voxel_globe.tools.storage_dir('generate_point_cloud', cd=True) \ as storage_dir: scene_path = os.path.join(voxel_world.directory, 'scene.xml') scene,cache = boxm2_adaptor.load_cpp(scene_path) ply_filename = os.path.join(storage_dir, 'model.ply') boxm2_mesh_adaptor.gen_color_point_cloud(scene, cache, ply_filename, prob, "") with voxel_globe.tools.image_dir('point_cloud') as potree_dir: convert_ply_to_potree(ply_filename, potree_dir) models.PointCloud.create(name='%s threshold point cloud' % image_collection.name, service_id=self.request.id, origin=voxel_world.origin, potree_url='%s://%s:%s/%s/point_cloud/%s/cloud.js' % \ (env['VIP_IMAGE_SERVER_PROTOCOL'], env['VIP_IMAGE_SERVER_HOST'], env['VIP_IMAGE_SERVER_PORT'], env['VIP_IMAGE_SERVER_URL_PATH'], os.path.basename(potree_dir)), directory=storage_dir).save()
def generate_threshold_point_cloud(self, voxel_world_id, prob=0.5): import json import boxm2_adaptor import boxm2_mesh_adaptor import voxel_globe.tools import voxel_globe.meta.models as models voxel_world = models.VoxelWorld.objects.get(id=voxel_world_id) service_inputs = json.loads(voxel_world.service.inputs) image_set = models.ImageSet.objects.get( id=service_inputs[0][0]) #TODO Remove hack with voxel_globe.tools.storage_dir('generate_point_cloud', cd=True) \ as storage_dir: scene_path = os.path.join(voxel_world.directory, 'scene_color.xml') scene, cache = boxm2_adaptor.load_cpp(scene_path) ply_filename = os.path.join(storage_dir, 'model.ply') boxm2_mesh_adaptor.gen_color_point_cloud(scene, cache, ply_filename, prob, "") with voxel_globe.tools.image_dir('point_cloud') as potree_dir: convert_ply_to_potree(ply_filename, potree_dir) point_cloud = models.PointCloud(name='%s threshold point cloud' % image_set.name, service_id=self.request.id, origin=voxel_world.origin) point_cloud.potree_dir = potree_dir point_cloud.filename_path = ply_filename point_cloud.save()
def run_point_cloud(self, voxel_world_id, threshold): import voxel_globe.tools import voxel_globe.meta.models as models import boxm2_adaptor import boxm2_mesh_adaptor from plyfile import PlyData voxel_world = models.VoxelWorld.objects.get(id=voxel_world_id) with voxel_globe.tools.task_dir("voxel_viewer") as processing_dir: scene_path = os.path.join(voxel_world.directory, "scene.xml") scene, cache = boxm2_adaptor.load_cpp(scene_path) ply_filename = os.path.join(processing_dir, "model.ply") boxm2_mesh_adaptor.gen_color_point_cloud(scene, cache, ply_filename, 0.5, "") ply = PlyData.read(str(ply_filename)) return ply.elements[0].data
def run_point_cloud(self, voxel_world_id, threshold): import voxel_globe.tools import voxel_globe.meta.models as models import boxm2_adaptor import boxm2_mesh_adaptor from plyfile import PlyData voxel_world = models.VoxelWorld.objects.get(id=voxel_world_id) with voxel_globe.tools.task_dir('voxel_viewer') as processing_dir: scene_path = os.path.join(voxel_world.directory, 'scene.xml') scene, cache = boxm2_adaptor.load_cpp(scene_path) ply_filename = os.path.join(processing_dir, 'model.ply') boxm2_mesh_adaptor.gen_color_point_cloud(scene, cache, ply_filename, 0.5, "") ply = PlyData.read(str(ply_filename)) return ply.elements[0].data
def __init__(self, scene_str, device_string="gpu", opencl_multi_scene_cache=False): # init (list) self vars self.scene = None self.active_cache = None self.device_string = None self.cpu_cache = None self.device = None self.opencl_cache = None self.str_cache = None self.model_dir = None self.bbox = None self.lvcs = None # if device_string is gpu, load up opencl self.device_string = device_string if device_string[0:3] == "gpu" or device_string[0:3] == "cpu": self.scene, self.cpu_cache, self.device, self.opencl_cache = \ boxm2_adaptor.load_opencl(scene_str, device_string) self.active_cache = self.opencl_cache elif device_string[0:3] == "cpp": self.scene, self.cpu_cache = boxm2_adaptor.load_cpp(scene_str) self.active_cache = self.cpu_cache else: print "UNKNOWN device type: ", device_string print "exiting." exit(-1) # store model directory for later use self.bbox = boxm2_adaptor.scene_bbox(self.scene) self.description = boxm2_adaptor.describe_scene(self.scene) self.model_dir = self.description['dataPath'] # stores whether appearance model contains RGB - also includes view_dep self.rgb = self.description['appType'] == "boxm2_gauss_rgb" self.lvcs = boxm2_adaptor.scene_lvcs(self.scene) self.view = ("view" in self.description['appType'])