Exemplo n.º 1
0
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() 
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
    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'])
Exemplo n.º 6
0
    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'])