o
    *jJ                     @   s>   d dl Z d dlmZ ddlmZmZ g dZG dd dZdS )    N)rotation_conversions   )JOINTSTYPE_ROOTSMPL)Za2mZa2mplsmplZvibeverticesc                   @   s(   e Zd Zd	ddZ				d
ddZdS )Rotation2xyzamassc                 C   s$   || _ || _t| || _d S )N)devicedatasetr   evalto
smpl_model)selfr
   Zsmpl_data_pathr    r   |/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/models/cv/motion_generation/modules/rotation2xyz.py__init__   s   zRotation2xyz.__init__Nr   Fc                 K   s  |dkr|S |d u rt j|jd |jd ft|jd}|s%|
d u r%td|tvr-td|rE|d d dd df }|d d d df }n|}|dddd	}|j\}}}}|d
krbt	
|| }n+|dkrq|| d|dd}n|dkr}t	|| }n|dkrt	|| }ntd|st j|
|jd}t	
|dddd}|t|ddd}n|d d df }|d d dd f }|d u rt j|jd | jjg|j|jd}|	|d d df< | j|||d}|| }t j|||jd d|j|jd}d|| < |||< |dd	dd }|dkr%t| }||d d |gd d d d f  }|rI|rI||d d d d dgf  }||d d d d d d d f  }|rQ|||fS |S )NZxyzr   )dtyper
   z1You must specify global rotation if glob is Falsez#This jointstype is not implemented.   r      ZrotvecZrotmatZrotquatZrot6dzNo geometry for this one.)r
   )Z	body_poseglobal_orientbetas)r
   r   r   )torchZonesshapeboolr
   	TypeErrorJOINTSTYPESNotImplementedErrorZpermutegeometryZaxis_angle_to_matrixviewZquaternion_to_matrixZrotation_6d_to_matrixZtensorrepeatlenZzerosr   Z	num_betasr   empty
contiguousr   )r   xmaskZpose_reptranslationglobZ
jointstypeZ
vertstransr   betaZglob_rotZget_rotations_backkwargsZx_translationsZx_rotationsZnsamplestimeZnjointsZfeatsZ	rotationsr   outZjointsZx_xyzZ	rootindexr   r   r   __call__   s|   


" 
zRotation2xyz.__call__)r	   )Nr   NF)__name__
__module____qualname__r   r-   r   r   r   r   r      s    
r   )	r   Z modelscope.utils.cv.motion_utilsr   r   r   r   r   r   r   r   r   r   r   <module>   s
   