import os
import shutil

def pack_scene_data(root, scene, output_dir):
    scene_dir = os.path.join(output_dir, scene)
    if not os.path.exists(scene_dir):
        os.makedirs(scene_dir)

    pts_dir = os.path.join(root, scene, "pts")
    if os.path.exists(pts_dir):
        shutil.move(pts_dir, os.path.join(scene_dir, "pts"))
        
    scan_points_indices_dir = os.path.join(root, scene, "scan_points_indices")
    if os.path.exists(scan_points_indices_dir):
        shutil.move(scan_points_indices_dir, os.path.join(scene_dir, "scan_points_indices")) 

    scan_points_file = os.path.join(root, scene, "scan_points.txt")
    if os.path.exists(scan_points_file):
        shutil.move(scan_points_file, os.path.join(scene_dir, "scan_points.txt"))

    model_pts_nrm_file = os.path.join(root, scene, "points_and_normals.txt")
    if os.path.exists(model_pts_nrm_file):
        shutil.move(model_pts_nrm_file, os.path.join(scene_dir, "points_and_normals.txt"))

    camera_dir = os.path.join(root, scene, "camera_params")
    if os.path.exists(camera_dir):
        shutil.move(camera_dir, os.path.join(scene_dir, "camera_params"))

    scene_info_file = os.path.join(root, scene, "scene_info.json")
    if os.path.exists(scene_info_file):
        shutil.move(scene_info_file, os.path.join(scene_dir, "scene_info.json"))

def pack_all_scenes(root, scene_list, output_dir):
    for idx, scene in enumerate(scene_list):
        print(f"正在打包场景 {scene} ({idx+1}/{len(scene_list)})")
        pack_scene_data(root, scene, output_dir)

if __name__ == "__main__":
    root = r"H:\AI\Datasets\nbv_rec_part2"
    output_dir = r"H:\AI\Datasets\scene_info_part2"
    scene_list = os.listdir(root)
    from_idx = 0
    to_idx = len(scene_list)
    print(f"正在打包场景 {scene_list[from_idx:to_idx]}")

    pack_all_scenes(root, scene_list[from_idx:to_idx], output_dir)
    print("打包完成")

