
    +j                         d dl Z d dlZd dlZd dlmZ d dlmZmZ d Z	 G d dej
                  Z G d dej
                  Z G d	 d
ej
                  Z G d de          ZdefdZdS )    N)override)ComfyExtensionioc                    t          j        | g          } t          j        |g          }t          j        t          j        d| z
  dz
            t          j        t          j        |                    t          j        t          j        |                    t          j        dt          j        | d          z
            gd                              d          }|S )NZ   r   dim   )torch	as_tensorstackdeg2radsincos	full_like	unsqueeze)	elevationazimuth
embeddingss      ;/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_stable3d.pycamera_embeddingsr      s    ,,Iowi((G)^+  	%-0011	%-0011A666 		
 
 
 
 9Q<<      c                   J    e Zd Zed             Zedej        fd            ZdS )StableZero123_Conditioningc                 (   t          j        ddt           j                            d          t           j                            d          t           j                            d          t           j                            dddt          j        d	
          t           j                            dddt          j        d	
          t           j                            dddd          t           j	                            dddddd          t           j	                            dddddd          gt           j
                            d          t           j
                            d          t           j                            d          g          S )Nr   model/conditioning/3d_modelsclip_vision
init_imagevaewidth         defaultminmaxstepheight
batch_sizer      r&   r'   r(   r                f     f@皙?Fr&   r'   r(   r)   roundr   positivedisplay_namenegativelatentnode_idcategoryinputsoutputsr   Schema
ClipVisionInputImageVaeIntnodesMAX_RESOLUTIONFloatConditioningOutputLatentclss    r   define_schemaz(StableZero123_Conditioning.define_schema   s9   y03##M22|,,U##Wcru?SZ[\\Xs@T[\]]\1!FF{CVUX`effy#6uSV^cdd	 &&J&??&&J&??	  h 77
 
 
 	
r   returnc	                    |                     |          }	|	j                            d          }
t          j                            |                    dd          ||dd                              dd          }|d d d d d d d df         }|                    |          }t          ||          }t          j
        |
|                    |
j                                      |
j        d         ddf          gd          }|d|igg}t          j        |
          dt          j        |          igg}t          j        |d	|d
z  |d
z  g          }t#          j        ||d|i          S )Nr   r   r   bilinearcenter   r	   concat_latent_image   r$   samples)encode_imageimage_embedsr   comfyutilscommon_upscalemovedimencoder   r   cattodevicerepeatshape
zeros_likezerosr   
NodeOutput)rL   r   r   r    r!   r*   r+   r   r   outputpooledpixelsencode_pixelst
cam_embedscondr4   r7   r8   s                      r   executez"StableZero123_Conditioning.execute0   sj   ))*55$..q11++J,>,>r!,D,DeVU_aijjrrstuwxxqqq111RaRx(JJ}%%&y'::
y&*--">">"E"Ev|TUXY[\F]"^"^_eghhh11567%f--0EuGWXYGZGZ/[\]j!Vq[%1*EFF}Xx)F1CDDDr   N__name__
__module____qualname__classmethodrM   r   rd   rl    r   r   r   r      s_        
 
 [
* Eeger E E E [E E Er   r   c                   J    e Zd Zed             Zedej        fd            ZdS )"StableZero123_Conditioning_Batchedc                    t          j        ddt           j                            d          t           j                            d          t           j                            d          t           j                            dddt          j        d	
          t           j                            dddt          j        d	
          t           j                            dddd          t           j	                            dddddd          t           j	                            dddddd          t           j	                            ddddddd          t           j	                            ddddddd          g
t           j
                            d          t           j
                            d          t           j                            d          g           S )!Nrt   r   r   r   r    r!   r"   r#   r$   r%   r*   r+   r   r,   r-   r   r.   r/   r0   r1   Fr2   r   elevation_batch_incrementT)r&   r'   r(   r)   r3   advancedazimuth_batch_incrementr4   r5   r7   r8   r9   r>   rK   s    r   rM   z0StableZero123_Conditioning_Batched.define_schema@   s   y83##M22|,,U##Wcru?SZ[\\Xs@T[\]]\1!FF{CVUX`effy#6uSV^cdd:CVY^ehpu  AE  F  F8#6W\cfns  C  D  D &&J&??&&J&??	  h 77
 
 
 	
r   rN   c                 <   |                     |          }|j                            d          }t          j                            |                    dd          ||dd                              dd          }|d d d d d d d df         }|                    |          }g }t          |          D ]/}|	                    t          ||                     ||	z  }||
z  }0t          j        |d          }t          j        t          j                            ||          |gd          }|d|igg}t          j        |          dt          j        |          igg}t          j        |d	|d
z  |d
z  g          }t!          j        |||dg|z  d          S )Nr   r   r   rP   rQ   rR   r	   rS   rT   r$   )rU   batch_index)rV   rW   r   rX   rY   rZ   r[   r\   rangeappendr   r   r]   repeat_to_batch_sizerb   rc   r   rd   )rL   r   r   r    r!   r*   r+   r   r   rv   rx   re   rf   rg   rh   ri   rj   irk   r4   r7   r8   s                         r   rl   z*StableZero123_Conditioning_Batched.executeX   s   ))*55$..q11++J,>,>r!,D,DeVU_aijjrrstuwxxqqq111RaRx(JJ}%%
z"" 	/ 	/A/	7CCDDD22I..GGYzq111
y%+::6:NNPZ[acddd11567%f--0EuGWXYGZGZ/[\]j!Vq[%1*EFF}XxFTUSVYcSc1d1deeer   Nrm   rr   r   r   rt   rt   ?   sg        
 
 [
. f  Z\  Zg f f f [f f fr   rt   c                   J    e Zd Zed             Zedej        fd            ZdS )SV3D_Conditioningc                    t          j        ddt           j                            d          t           j                            d          t           j                            d          t           j                            dddt          j        d	
          t           j                            dddt          j        d	
          t           j                            dddd          t           j	                            dddddd          gt           j
                            d          t           j
                            d          t           j                            d          g          S )Nr   r   r   r   r    r!   i@  r#   r$   r%   r*   video_frames   r   r,   r-   r   r.   g     Vg     V@r1   Fr2   r4   r5   r7   r8   r9   r>   rK   s    r   rM   zSV3D_Conditioning.define_schemao   s   y'3##M22|,,U##Wcru?SZ[\\Xs@T[\]]^RQDII{CUSV^cdd &&J&??&&J&??	  h 77
 
 
 	
r   rN   c                    |                     |          }|j                            d          }	t          j                            |                    dd          ||dd                              dd          }
|
d d d d d d d df         }|                    |          }d}dt          |d          dz
  z  }g }g }t          |          D ]1}|
                    |           |
                    |           ||z  }2|	|||d	gg}t          j        |	          t          j        |          ||d	gg}t          j        |d
|dz  |dz  g          }t          j        ||d|i          S )Nr   r   r   rP   rQ   rR   ih     )rS   r   r   rT   r$   rU   )rV   rW   r   rX   rY   rZ   r[   r\   r(   r{   r|   r   rb   rc   r   rd   )rL   r   r   r    r!   r*   r   r   re   rf   rg   rh   ri   r   azimuth_increment
elevationsazimuthsr~   r4   r7   r8   s                        r   rl   zSV3D_Conditioning.execute   s   ))*55$..q11++J,>,>r!,D,DeVU_aijjrrstuwxxqqq111RaRx(JJ}%%3|Q#7#7!#;<
|$$ 	) 	)Ai(((OOG$$$((GGQZ\deefg%f--uGWXYGZGZis  AI  0J  0J  K  LlAv{EQJGHH}Xx)F1CDDDr   Nrm   rr   r   r   r   r   n   s_        
 
 [
( E^`^k E E E [E E Er   r   c                   L    e Zd Zedeeej                          fd            ZdS )Stable3DExtensionrN   c                 .   K   t           t          t          gS N)r   rt   r   )selfs    r   get_node_listzStable3DExtension.get_node_list   s       '.
 	
r   N)	rn   ro   rp   r   listtyper   	ComfyNoder   rr   r   r   r   r      sE        
T$r|*<%= 
 
 
 X
 
 
r   r   rN   c                  "   K   t                      S r   )r   rr   r   r   comfy_entrypointr      s      r   )r   rE   comfy.utilsrX   typing_extensionsr   comfy_api.latestr   r   r   r   r   rt   r   r   r   rr   r   r   <module>r      sK         & & & & & & / / / / / / / /  $$E $E $E $E $E $E $E $EL-f -f -f -f -f -f -f -f^+E +E +E +E +E +E +E +E\
 
 
 
 
 
 
 
 1      r   