def parse_open3d_file(open3d_ifp, image_dp, image_fp_type, op):
        """Parse an :code:`Open3D` (:code:`.json` or :code:`.log`) file.

        The :code:`.json` format supports intrinsics as well as
        extrinsic parameters, whereas the :code:`.log` (`Redwood
        <http://redwood-data.org/indoor/fileformat.html>`_) format contains
        only extrinsic parameters.
        """
        log_report("INFO", "parse_open3d_file: ...", op)
        log_report("INFO", "open3d_ifp: " + open3d_ifp, op)
        log_report("INFO", "image_dp: " + image_dp, op)

        image_relative_fp_list = get_image_file_paths_in_dir(
            image_dp,
            relative_path_only=True,
            without_ext=False,
            sort_result=True,
            recursive=True,
        )

        cams = []
        if os.path.splitext(open3d_ifp)[1].lower() == ".json":
            cams = Open3DFileHandler._parse_open3d_json_file(
                open3d_ifp, image_dp, image_relative_fp_list, image_fp_type, op
            )
        elif os.path.splitext(open3d_ifp)[1].lower() == ".log":
            cams = Open3DFileHandler._parse_open3d_log_file(
                open3d_ifp, image_dp, image_relative_fp_list, image_fp_type, op
            )
        else:
            assert False

        log_report("INFO", "parse_open3d_file: Done", op)
        return cams
Parse an :code:`Open3D` (:code:`.json` or :code:`.log`) file.

        The :code:`.json` format supports intrinsics as well as
        extrinsic parameters, whereas the :code:`.log` (`Redwood
        <http://redwood-data.org/indoor/fileformat.html>`_) format contains
        only extrinsic parameters.
        
photogrammetry_importer/file_handlers/open3D_file_handler.py