from pydantic import BaseModel, Field from typing import List, Optional, Union, Dict, Tuple class Camera(BaseModel): idx: int = Field( description="The index of the camera in the scene, starting from 0.", ) active_shot_idxs: List[int] = Field( description="The indices of the shots that the camera can film.", ) parent_cam_idx: Optional[int] = Field( default=None, description="The index of the parent camera. If the camera has no parent, set this to None.", ) parent_shot_idx: Optional[int] = Field( default=None, description="The index of the dependent shot. If the camera has no parent, set this to None.", ) reason: Optional[str] = Field( default=None, description="The reason for the selection of the parent camera. If the camera has no parent, set this to None.", ) parent_shot_idx: Optional[int] = Field( default=None, description="The index of the dependent shot. If the camera has no parent, set this to None.", ) is_parent_fully_covers_child: Optional[bool] = Field( default=None, description="Whether the parent camera fully covers the child camera's content. If the camera has no parent, set this to None.", ) missing_info: Optional[str] = Field( default=None, description="The missing information in the child shot that is not covered by the parent shot. If the parent shot fully covers the child shot, set this to None.", )