
    3j	                         S SK r S SKrS SKrS SKJr  S SKJrJr  S r	 " S S\R                  5      r " S S\R                  5      r " S	 S
\R                  5      r " S S\5      rS\4S jrg)    N)override)ComfyExtensionioc                    [         R                  " U /5      n [         R                  " U/5      n[         R                  " [         R                  " SU -
  S-
  5      [         R                  " [         R                  " U5      5      [         R
                  " [         R                  " U5      5      [         R                  " S[         R                  " U S5      -
  5      /SS9R                  S5      nU$ )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oowi(G)^+ 		%--01		%--01A66		
 
 9Q<      c                   P    \ rS rSr\S 5       r\S\R                  4S j5       rSr	g)StableZero123_Conditioning   c                    [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  S5      [         R                  R                  SSS[        R                  S	S
9[         R                  R                  SSS[        R                  S	S
9[         R                  R                  SSSSS9[         R                  R                  SSSSSSS9[         R                  R                  SSSSSSS9/[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9/S9$ )Nr   !model/conditioning/stable zero123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_schema(StableZero123_Conditioning.define_schema   s,   yy08##M2|,U#Wcru?S?SZ[\Xs@T@T[\]\1!F{CVUX`efy#6uSV^cd	 &&J&?&&J&?		  h 7
 	
r   returnc	                    UR                  U5      n	U	R                  R                  S5      n
[        R                  R                  UR                  SS5      XESS5      R                  SS5      nUS S 2S S 2S S 2S S24   nUR                  U5      n[        Xx5      n[        R                  " XR                  U
R                  5      R                  U
R                  S   SS45      /SS9nUSU0//n[        R                  " U
5      S[        R                  " U5      0//n[        R                   " US	US
-  US
-  /5      n["        R$                  " UUSU05      $ )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)rM   r   r    r!   r"   r+   r,   r   r   outputpooledpixelsencode_pixelst
cam_embedscondr5   r8   r9   s                      r   execute"StableZero123_Conditioning.execute0   s@   ))*5$$..q1++J,>,>r!,DeU_aijrrstuwxq1RaRx(JJ}%&y:
yy&--">"E"Ev||TUXY[\F]"^_egh11567%%f-0EuGWGWXYGZ/[\]j!Vq[%1*EF}}Xx)F1CDDr    N
__name__
__module____qualname____firstlineno__classmethodrN   r   rf   rn   __static_attributes__rp   r   r   r   r      s9    
 
* Eegerer E Er   r   c                   P    \ rS rSr\S 5       r\S\R                  4S j5       rSr	g)"StableZero123_Conditioning_Batched?   c                    [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  S5      [         R                  R                  SSS[        R                  S	S
9[         R                  R                  SSS[        R                  S	S
9[         R                  R                  SSSSS9[         R                  R                  SSSSSSS9[         R                  R                  SSSSSSS9[         R                  R                  SSSSSSSS9[         R                  R                  SSSSSSSS9/
[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9/S 9$ )!Nry   r   r   r    r!   r"   r#   r$   r%   r&   r+   r,   r   r-   r.   r   r/   r0   r1   r2   Fr3   r   elevation_batch_incrementT)r'   r(   r)   r*   r4   advancedazimuth_batch_incrementr5   r6   r8   r9   r:   r?   rL   s    r   rN   0StableZero123_Conditioning_Batched.define_schema@   s   yy88##M2|,U#Wcru?S?SZ[\Xs@T@T[\]\1!F{CVUX`efy#6uSV^cd:CVY^ehpu  AE  F8#6W\cfns  C  D &&J&?&&J&?		  h 7
 	
r   rP   c                 
   UR                  U5      nUR                  R                  S5      n[        R                  R                  UR                  SS5      XESS5      R                  SS5      nUS S 2S S 2S S 2S S24   nUR                  U5      n/ n[        U5       H%  nUR                  [        Xx5      5        Xy-  nX-  nM'     [        R                  " USS9n[        R                  " [        R                  R                  X5      U/SS9nUSU0//n[        R                  " U5      S[        R                  " U5      0//n[        R                  " US	US
-  US
-  /5      n[         R"                  " UUUS/U-  S.5      $ )Nr   r   r   rR   rS   rT   r	   rU   rV   r%   )rW   batch_index)rX   rY   r   rZ   r[   r\   r]   r^   rangeappendr   r   r_   repeat_to_batch_sizerd   re   r   rf   )rM   r   r    r!   r"   r+   r,   r   r   r|   r~   rg   rh   ri   rj   rk   rl   irm   r5   r8   r9   s                         r   rn   *StableZero123_Conditioning_Batched.executeX   sr   ))*5$$..q1++J,>,>r!,DeU_aijrrstuwxq1RaRx(JJ}%
z"A/	CD2I.G #
 YYzq1
yy%++::6NPZ[acd11567%%f-0EuGWGWXYGZ/[\]j!Vq[%1*EF}}XxFTUSVYcSc1deer   rp   Nrq   rp   r   r   ry   ry   ?   sE    
 
. f  Z\  Zg  Zg f fr   ry   c                   P    \ rS rSr\S 5       r\S\R                  4S j5       rSr	g)SV3D_Conditioningn   c                    [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  S5      [         R                  R                  SSS[        R                  S	S
9[         R                  R                  SSS[        R                  S	S
9[         R                  R                  SSSSS9[         R                  R                  SSSSSSS9/[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9/S9$ )Nr   z"model/conditioning/stable video 3dr   r    r!   r"   i@  r$   r%   r&   r+   video_frames   r   r-   r.   r   r/   g     Vg     V@r2   Fr3   r5   r6   r8   r9   r:   r?   rL   s    r   rN   SV3D_Conditioning.define_schemao   s   yy'9##M2|,U#Wcru?S?SZ[\Xs@T@T[\]^RQDI{CUSV^cd &&J&?&&J&?		  h 7
 	
r   rP   c                    UR                  U5      nUR                  R                  S5      n	[        R                  R                  UR                  SS5      XESS5      R                  SS5      n
U
S S 2S S 2S S 2S S24   nUR                  U5      nSnS[        US5      S-
  -  n/ n/ n[        U5       H)  nUR                  U5        UR                  U5        X-  nM+     XUUS	.//n[        R                  " U	5      [        R                  " U5      UUS	.//n[        R                  " US
US-  US-  /5      n[        R                  " UUSU05      $ )Nr   r   r   rR   rS   rT   ih     )rU   r   r   rV   r%   rW   )rX   rY   r   rZ   r[   r\   r]   r^   r)   r   r   r   rd   re   r   rf   )rM   r   r    r!   r"   r+   r   r   rg   rh   ri   rj   rk   r   azimuth_increment
elevationsazimuthsr   r5   r8   r9   s                        r   rn   SV3D_Conditioning.execute   sa   ))*5$$..q1++J,>,>r!,DeU_aijrrstuwxq1RaRx(JJ}%3|Q#7!#;<
|$Ai(OOG$(G %
 Z\defg%%f-uGWGWXYGZis  AI  0J  K  LlAv{EQJGH}}Xx)F1CDDr   rp   Nrq   rp   r   r   r   r   n   s9    
 
( E^`^k^k E Er   r   c                   L    \ rS rSr\S\\\R                        4S j5       r	Sr
g)Stable3DExtension   rP   c                 ,   #    [         [        [        /$ 7fN)r   ry   r   )selfs    r   get_node_listStable3DExtension.get_node_list   s      '.
 	
s   rp   N)rr   rs   rt   ru   r   listtyper   	ComfyNoder   rw   rp   r   r   r   r      s)    
T$r||*<%= 
 
r   r   rP   c                     #    [        5       $ 7fr   )r   rp   r   r   comfy_entrypointr      s     s   )r   rF   comfy.utilsrZ   typing_extensionsr   comfy_api.latestr   r   r   r   r   ry   r   r   r   rp   r   r   <module>r      sk       & /$$E $EL-f -f^+E +E\
 
 1 r   