예제 #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() 
예제 #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()
예제 #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
예제 #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