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