o
    ߥi                     @   s   d dl Z d dlmZ d dlZd dlmZmZ d dlm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZ dZdd Zd	d
 Zdd Zdd ZdS )    Nload_objload_objs_as_meshes)AmbientLightsMeshRasterizerMeshRendererWithFragmentsPerspectiveCamerasRasterizationSettingsSoftPhongShaderlook_at_view_transform)
transforms)tqdmi   c                 C   s,   t | |d\}}}t| g|d}||||fS )Ndevicer   )
model_pathr   vertsfacesauxmesh r   f/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/models/cv/text_texture_generation/utils.py	init_mesh   s   r   c                 C   sp   d|  }|||  d }t |||\}}||d d< tttgd}	td}
t|
||||	d}||||fS )Nih  r      g       @)focal_lengthRTr   
image_size)r   torchtensor
IMAGE_SIZE	unsqueezer   )	num_viewsdistelevazimview_idxr   intervalr   r   r   r   camerasr   r   r   init_camera   s   
r(   c                 C   s6   t td}t|d}tt| |dt| ||dd}|S )N)r   r   )r'   raster_settings)r'   lightsr   )
rasterizershader)r	   r   r   r   r   r
   )camerar   r)   r*   rendererr   r   r   init_renderer(   s   

r/   c                    sV  d}t j rt d}t j| ntd t  d| tj	 dd t
| |\}}}}td tt|D ]E}tj d|}d	}	d
}
d}t||	|
|||\}}	}
}t||}||\}}|d  }|ddd}t |d}|| q9 fddttjD }tjtj d|dd tjtj d|dd td d S )NH   zcuda:0zno gpu avaiablezGIF-{}T)exist_okz=> rendering...{}.pngg?   r   r      RGBc                    s&   g | ]}t tj d |qS )r2   )imageioimreadospathjoinformat).0v_id
output_dirr   r   
<listcomp>T   s    z"generation_gif.<locals>.<listcomp>z
output.gifg?)durationz
output.mp4   )fpsz=> done!)r   cudais_availabler   
set_deviceprintexitr;   r8   makedirsr   r   ranger9   r:   r(   r/   cpupermuter   
ToPILImageconvertsaveargsr!   r6   mimsave)	mesh_pathr!   DEVICEr   r   r   r   r%   init_image_pathr"   r#   r$   r'   r.   init_images_tensor	fragments
init_imageimagesr   r>   r   generation_gif3   s@   





rY   )r8   
imageio.v2v2r6   r   pytorch3d.ior   r   pytorch3d.rendererr   r   r   r   r	   r
   r   torchvisionr   r   r   r   r(   r/   rY   r   r   r   r   <module>   s   $