
    ^j7                       d dl mZ d dlZd dlZd dlmZ d dlmZ d dlZd dlm	Z	m
Z
mZmZmZmZ d dlmZmZmZmZ d dlmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z! ddlm"Z# e	de
dedededededediZ$e	de
dedededededediZ%ddddddddZ&ed ed!iZ' G d" d#          Z( G d$ d%          Z) G d& d'          Z* G d( d)e          Z G d* d+e          Z G d, d-e          Z+ G d. d/          Z, G d0 d1          Z- G d2 d3          Z. G d4 d5e          Z G d6 d7          Z" G d8 d9          Z  G d: d;          Z/dBdCd=Z0 G d> d?e          Z1d@ Z2dA Z3dS )D    )annotationsN)array)urlopen)GL_BYTEGL_UNSIGNED_BYTEGL_SHORTGL_UNSIGNED_SHORTGL_FLOAT	GL_DOUBLE)GL_INTGL_UNSIGNED_INTGL_ELEMENT_ARRAY_BUFFERGL_ARRAY_BUFFER)	GL_REPEAT   )ModelDecodeExceptionModelDecoderScene)PBRMaterialCamera	Attribute	PrimitiveNodeMeshbBhHlLfd            	      )SCALARVEC2VEC3VEC4MAT2MAT3MAT4ELEMENT_ARRAY_BUFFERARRAY_BUFFERc                  ,    e Zd ZdZd Zd	dZd Zd ZdS )
Bufferz$Abstraction over unstructured bytes.c                   |d         | _         |d         | _        | j                            d          r,t          | j                  | _        | j        j        | _        d S t          j                            | j        d          | _        d S )N
byteLengthuridatarb)	length_uri
startswithr   	_responsefile_filepygletresourceselfr=   s     S/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/model/codecs/gltf.py__init__zBuffer.__init__A   sq    <(K	9'' 	?$TY//DN,DJJJ--di>>DJJJ    returnbytesc                j    | j                             |           | j                             |          S N)rD   seekread)rH   offsetnbytess      rI   rQ   zBuffer.readK   s*    
zv&&&rK   c                \    	 | j                                          d S # t          $ r Y d S w xY wrO   )rD   closeAttributeErrorrH   s    rI   __del__zBuffer.__del__O   sC    	J 	 	 	DD	s    
++c                0    | j         j         d| j         dS )Nz(length=))	__class____name__r?   rW   s    rI   __repr__zBuffer.__repr__U   s     .)AA4;AAAArK   NrL   rM   )r\   
__module____qualname____doc__rJ   rQ   rX   r]    rK   rI   r9   r9   ?   s`        ..? ? ?' ' ' '  B B B B BrK   r9   c                  &    e Zd ZdZd Zdd	Zd
 ZdS )
BufferViewz6View over a section of a Buffer, with optional stride.c                   |                     d          | _        |j        | j                 | _        |                     dd          | _        |                     d          | _        |                     dd          | _        |                     d          | _        t                               | j                  | _	        d S )Nbuffer
byteOffsetr   r;   
byteStridetarget)
get_buffer_indexbuffersrf   rR   r?   strideri   _targetstarget_namerH   r=   owners      rI   rJ   zBufferView.__init__[   s    !XXh//mD$67hh|Q//hh|,,hh|Q//hhx((#<<44rK   read_offsetintbyte_lengthcountrL   rM   c                    | j         |z   }d}t          |          D ],}|| j                            ||          z  }|| j        p|z  }-|S )NrK   )rR   rangerf   rQ   rm   )rH   rr   rt   ru   rR   
bytestring_s          rI   rQ   zBufferView.reade   s]    {*
u 	1 	1A$+**6;???Jdk0[0FFrK   c                @    | j         j         d| j         d| j         dS )Nz(buffer=z	, target=rZ   )r[   r\   rk   ro   rW   s    rI   r]   zBufferView.__repr__o   s-    .)cc43EccPTP`ccccrK   N)rr   rs   rt   rs   ru   rs   rL   rM   )r\   r_   r`   ra   rJ   rQ   r]   rb   rK   rI   rd   rd   Y   sQ        @@5 5 5   d d d d drK   rd   c                  (    e Zd Zd ZddZd Zd ZdS )	Accessorc                   |                     d          | _        |j        | j                 | _        |                     dd          | _        |                     d          | _        |                     d          | _        |                     d          | _        |                     d          | _        |                     d          | _	        |                     d	          | _
        | j
        rt          d
          t          | j                 | _        t          | j                 t          | j                 z  | _        d S )N
bufferViewrg   r   componentTypetyperu   maxminsparsezNot yet implemented)rj   _buffer_view_indexbuffer_viewsbuffer_viewbyte_offsetcomponent_typer   ru   r   r   r   NotImplementedError_array_typesfmt_gl_type_sizes_accessor_type_counts_byte_lengthrp   s      rI   rJ   zAccessor.__init__t   s   "&((<"8"8 -d.EF88L!44"hh77HHV$$	XXg&&
88E??88E?? hhx((; 	=%&;<<<   34 +4+>?BWX\XaBbbrK   rL   rM   c                X    | j                             | j        | j        | j                  S rO   )r   rQ   r   r   ru   rW   s    rI   rQ   zAccessor.read   s%    $$T%5t7H$*UUUrK   c                P    t          | j        |                                           S rO   )r   r   rQ   rW   s    rI   as_arrayzAccessor.as_array   s    TXtyy{{+++rK   c                0    | j         j         d| j         dS )Nz(buffer_view=rZ   )r[   r\   r   rW   s    rI   r]   zAccessor.__repr__   s!    .)RR8ORRRRrK   Nr^   )r\   r_   r`   rJ   rQ   r   r]   rb   rK   rI   r|   r|   s   sa        c c c.V V V V, , ,S S S S SrK   r|   c                       e Zd Z fdZ xZS )r   c                    |j         |         }|j        j        | _        |j        j        | _        t	                                          ||j        |j        |j        |	                                           d S rO   )
	accessorsr   ri   ro   superrJ   r   r   ru   r   )rH   nameindexrq   accessorr[   s        rI   rJ   zAttribute.__init__   sb    ?5)*1#/;x|X]HNHL]L]L_L_`````rK   r\   r_   r`   rJ   __classcell__r[   s   @rI   r   r      sA        a a a a a a a a arK   r   c                       e Zd Z fdZ xZS )r   c                   fd|                     d                                          D             }|                     d          }|j        |         nd }|r|                                nd }|                     dd          }|                     d          }|j        |         nd }	t                                          ||||	           d S )Nc                8    g | ]\  }}t          ||          S rb   r   ).0r   r   rq   s      rI   
<listcomp>z&Primitive.__init__.<locals>.<listcomp>   s)    fffeieU33fffrK   
attributesindicesmoder*   material)rj   itemsr   r   	materialsr   rJ   )rH   r=   rq   r   indices_indexindices_accessorr   r   material_indexr   r[   s     `       rI   rJ   zPrimitive.__init__   s    fffftxxP\G]G]GcGcGeGefff
++=J=V5?=99\`1AK"++---txx""*--6D6P5?>22VZWdH=====rK   r   r   s   @rI   r   r      s8        > > > > > > > > >rK   r   c                      e Zd Zd ZdS )Materialc                   |                     d          | _        |                     d          | _        |                     d          | _        |                     d          | _        |                     d          | _        |                     d          | _        |                     dd          | _        |                     d	d
          | _        |                     dd          | _	        |                     dd          | _
        d S )Nr   pbrMetallicRoughnessnormalTextureocclusionTextureemissiveTexturebaseColorTextureemissiveFactor)        r   r   	alphaModeOPAQUEalphaCutoffg      ?doubleSidedF)rj   r   pbr_metallic_roughnessnormal_textureocclusion_textureemissive_texturebase_color_textureemissive_factor
alpha_modealpha_cutoffdouble_sidedrG   s     rI   rJ   zMaterial.__init__   s    HHV$$	
 '+hh/E&F&F#"hh77!%*<!=!= $): ; ;"&((+=">">#xx(8/JJ((;99 HH]C88 HH]E::rK   Nr\   r_   r`   rJ   rb   rK   rI   r   r      s#        ; ; ; ; ;rK   r   c                      e Zd Zd ZdS )Texturec                   |                     d          | _        |                     d          | _        | j        r|j        | j                 | _        nt          i           | _        |                     d          | _        |j        | j                 | _        | j        j	        | _	        | j        j
        | _
        | j        j        | _        | j        j        | _        d S )Nr   samplersource)rj   r   _sampler_indexsamplersr   Samplerr   imagesimage
min_filter
mag_filterwrap_swrap_trp   s      rI   rJ   zTexture.__init__   s    HHV$$	
 #hhy11 	' >$*=>DLL"2;;DLhhx((\$+.
 ,1,1l)l)rK   Nr   rb   rK   rI   r   r      s#        * * * * *rK   r   c                      e Zd Zd ZdS )r   c                "   |                     d          | _        |                     d          | _        |                     d          | _        |                     dt                    | _        |                     dt                    | _        d S )Nr   	minFilter	magFilterwrapSwrapT)rj   r   r   r   r   r   r   rG   s     rI   rJ   zSampler.__init__   si    HHV$$	((;//((;//hhw	22hhw	22rK   Nr   rb   rK   rI   r   r      s#        3 3 3 3 3rK   r   c                      e Zd Zd Zd ZdS )Imagec                ~   |                     d          | _        |                     d          | _        | j        r|j        | j                 nd | _        |                     d          | _        |                     d          | _        |                     d          | _        |                     d          | _        d S )Nr<   r~   mimeTyper   
extensionsextras)	rj   r<   r   r   r   	mime_typer   r   r   rp   s      rI   rJ   zImage.__init__   s    88E??"&((<"8"8JNJak5-d.EFFgk*--HHV$$	((<00hhx((rK   c                    t           rO   )r   rW   s    rI   rQ   z
Image.read   s
    
 "!rK   N)r\   r_   r`   rJ   rQ   rb   rK   rI   r   r      s2        ) ) )" " " " "rK   r   c                       e Zd Z fdZ xZS )r   c           	     R   |                     d          }|                     d          }|                     d          }|                     d          }|                     d          }|                     d          }t                                          |||||||           d S )NaspectRatioyfovxmagymagzfarznear)rj   r   rJ   )
rH   camera_typer=   aspect_ratior   r   r   r   r   r[   s
            rI   rJ   zCamera.__init__   s    xx..xxxxxxxx!!lD$dERRRRRrK   r   r   s   @rI   r   r      sA        	S 	S 	S 	S 	S 	S 	S 	S 	SrK   r   c                      e Zd Zd Zd ZdS )r    c                b    || _         fd|                    d          D             | _        d S )Nc                0    g | ]}t          |          S rb   r   )r   primitive_datarq   s     rI   r   z!Mesh.__init__.<locals>.<listcomp>  s#    iii9^U;;iiirK   
primitives)r=   rj   r   rp   s     `rI   rJ   zMesh.__init__	  s9    	iiiiRVRZRZ[gRhRhiiirK   c                J    | j         j         dt          | j                   dS )Nz(primitives=rZ   )r[   r\   lenr   rW   s    rI   r]   zMesh.__repr__  s(    .)NNs4?7K7KNNNNrK   Nr\   r_   r`   rJ   r]   rb   rK   rI   r    r      s:        j j jO O O O OrK   r    c                  6    e Zd Zd Zed             Zd Zd ZdS )r   c                   || _         || _        | j                             dg           | _        |                    d          }||j        |         nd | _        |                    d          | _        |                    d          | _        |                    d          | _        |                    d          | _	        d S )Nchildrenmeshmatrixtranslationrotationscale)
r=   _ownerrj   _child_indicesmeshesr   r   r   r   r   )rH   r=   rq   _mesh_indexs       rI   rJ   zNode.__init__  s    	"immJ;;hhv&&1<1HEL--d	hhx((88M22,,XXg&&


rK   c                *      fd j         D             S )Nc                4    g | ]}j         j        |         S rb   )r   nodesr   irH   s     rI   r   z!Node.children.<locals>.<listcomp>$  s#    BBB!!$BBBrK   )r   rW   s   `rI   r   zNode.children"  s     BBBBd.ABBBBrK   c              #  .   K   | V  | j         D ]}|V  d S rO   )r   )rH   childs     rI   __iter__zNode.__iter__&  s5      


] 	 	EKKKK	 	rK   c                @    | j         j         d| j         d| j         dS )Nz(mesh=z, children=rZ   )r[   r\   r   r   rW   s    rI   r]   zNode.__repr__+  s+    .)]]]]tGZ]]]]rK   N)r\   r_   r`   rJ   propertyr   r  r]   rb   rK   rI   r   r     sd        ' ' '  C C XC  
^ ^ ^ ^ ^rK   r   c                      e Zd Zdd	dZd ZdS )
GLTFN	gltf_datadictbinary_bufferbytes | Nonec                     | _          j         d         d          _         j         d                             dd           _        d |d         D              _         fd|d         D              _         fd	|d
         D              _        |r| j        d         _         fd|                    dg           D              _        d |                    dg           D              _	         fd|                    dg           D              _
        d |                    dg           D              _        t           j                   t           j	                   t           j
                    fd|d         D              _         fd|d         D              _        d |                    dg           D              _         fd|d         D              _         j        |                    dd                    _        d S )Nassetversion	generatorunknownc                .    g | ]}t          |           S )r=   )r9   r   r=   s     rI   r   z!GLTF.__init__.<locals>.<listcomp>5  s#    KKKdD)))KKKrK   rl   c                2    g | ]}t          |           S )r=   rq   )rd   r   r=   rH   s     rI   r   z!GLTF.__init__.<locals>.<listcomp>6  s&    ddd4ZT>>>dddrK   bufferViewsc                2    g | ]}t          |           S r  )r|   r  s     rI   r   z!GLTF.__init__.<locals>.<listcomp>7  s&    ]]]d(D999]]]rK   r   r   c                2    g | ]}t          |           S r  )r   r  s     rI   r   z!GLTF.__init__.<locals>.<listcomp>=  s&    \\\u$d333\\\rK   r   c                .    g | ]}t          |           S r  )r   r  s     rI   r   z!GLTF.__init__.<locals>.<listcomp>>  s#    VVVd+++VVVrK   r   c                2    g | ]}t          |           S r  )r   r  s     rI   r   z!GLTF.__init__.<locals>.<listcomp>?  s&    bbbDd$777bbbrK   texturesc                ,    g | ]}t          |          S rb   )r   r  s     rI   r   z!GLTF.__init__.<locals>.<listcomp>@  s    TTTT(4..TTTrK   r   c                2    g | ]}t          |           S r  r   r  s     rI   r   z!GLTF.__init__.<locals>.<listcomp>F  s&    SSSttT222SSSrK   r   c                2    g | ]}t          |           S r  r   r  s     rI   r   z!GLTF.__init__.<locals>.<listcomp>G  s&    QQQddD111QQQrK   r   c                R    g | ]$}t          |d          ||d                             %S )r   r   )r   cams     rI   r   z!GLTF.__init__.<locals>.<listcomp>I  s/    fff#s6{CF,<==fffrK   camerasc                T    g | ]$}t          fd |d         D                       %S )c                *    g | ]}j         |         S rb   r   r   s     rI   r   z,GLTF.__init__.<locals>.<listcomp>.<listcomp>K  s    #I#I#IaDJqM#I#I#IrK   r   r&  r   r  s     rI   r   z!GLTF.__init__.<locals>.<listcomp>K  s=    kkktu#I#I#I#I4=#I#I#IJJJkkkrK   scenesscene)
_gltf_datar  rj   r  rl   r   r   rD   r   r   r  r   printr   r   r#  r'  default_scene)rH   r	  r  s   `  rI   rJ   zGLTF.__init__0  s%   #w/	:155k9MMKKi	6JKKKdddd9UbKcddd]]]]iP[F\]]] 	2$1DLO!\\\\	hXZ@[@[\\\VV	jRT8U8UVVVbbbbIMMR\^`DaDabbbTTY]];PR5S5STTTdkdmdmSSSSy?RSSSQQQQi>PQQQ
ffW`bdIeIefffkkkkW`aiWjkkk![w)B)BCrK   c                t    | j         j         dt          | j                   dt          | j                   dS )Nz(scenes=z	, meshes=rZ   )r[   r\   r   r'  r   rW   s    rI   r]   zGLTF.__repr__N  s<    .)aa3t{3C3CaacRVR]N^N^aaaarK   rO   )r	  r
  r  r  r   rb   rK   rI   r  r  /  sF        D D D D D<b b b b brK   r  rL   c                $   	 |!t           j                            | d          }n?|j        dk    r4|                                 t           j                            | d          }n# t           j        j        $ r t          w xY w|                     d          r|                    d          }|dk    rt          d|           t          j
        d|                    d                    d         }|dk    rt          d	|           t          j
        d|                    d                    d         }t          j
        d|                    d                    d         }|                    d          }|d
k    rt          d|           |                    |                                          }t          j
        d|                    d                    d         }|                    d          }	|	dk    rt          d|           |                    |          }
n|                                }d }
	 t          j        |          }n)# t          j        $ r}t          d|           d }~ww xY w	 |                                 n# |                                 w xY wd|vrt          d          t          |d                             dd                    dk     rt          d          t#          ||
          S )Nrglbr*   s   glTFzInvalid header for .glb file: z<Ir   r)   zUnsupported glTF version: s   JSONz#glTF 'chunk 0 type' is not 'JSON': s   BIN z"glTF 'chunk 1 type' is not 'BIN': z5Json error. Does not appear to be a valid glTF file. r  z2Not a valid glTF file: 'asset' property not found.r  g       @z#Only glTF 2.0+ models are supported)r	  r  )rE   rF   rC   r   rU   ResourceNotFoundExceptionr   endswithrQ   structunpackdecodejsonloadsJSONDecodeErrorfloatrj   r  )filenamerC   magicr  ry   chunk_0_lengthchunk_0_type	json_metachunk_1_lengthchunk_1_typer  r	  es                rI   	load_gltfrA  R  s   #<?''#66DDY#JJLLL?''#66D?4 # # #""#  		!G&'O'O'OPPP-diill33A6a<<&'MG'M'MNNN M$		!--a0  tTYYq\\::1=yy||7""&'[\'['[\\\IIn--4466	  tTYYq\\::1=yy||:%%&'ZL'Z'Z[[[		.11 IIKK	Jy))		 ` ` `"#^[\#^#^___` 	 	



i"#WXXX7#''	15566<<&'LMMM)=AAAAs6   A"A% %BI J J )I;;J  J J/c                      e Zd Zd Zd ZdS )GLTFModelDecoderc                
    ddgS )Nz.gltfz.glbrb   rW   s    rI   get_file_extensionsz$GLTFModelDecoder.get_file_extensions  s      rK   c                <    t          ||          }|j        d         S )Nr   )rA  r'  )rH   r9  rC   gltfs       rI   r4  zGLTFModelDecoder.decode  s    4(({1~rK   N)r\   r_   r`   rE  r4  rb   rK   rI   rC  rC    s2        ! ! !    rK   rC  c                      t                      gS rO   )rC  rb   rK   rI   get_decodersrI    s    rK   c                     g S rO   rb   rb   rK   rI   get_encodersrK    s    IrK   rO   )rL   r  )4
__future__r   r5  r2  r   urllib.requestr   rE   	pyglet.glr   r   r   r	   r
   r   r   r   r   r   r    r   r   baser   r   r   
BaseCamerar   BaseAttributer   BasePrimitiver   BaseNoder    BaseMeshr   r   r   rn   r9   rd   r|   r   r   r   r   r  rA  rC  rI  rK  rb   rK   rI   <module>rV     s   " " " " " "         " " " " " "  a a a a a a a a a a a a a a a a W W W W W W W W W W W W       0 0 0 0 0 0 0 0             & & & & & & , , , , , , , , , , , , " " " " " " " " " " " " Sccs
CScs	 Qaaq
AQaq	    3^B B B B B B B B4d d d d d d d d4"S "S "S "S "S "S "S "SJa a a a a a a a> > > > > > > > ; ; ; ; ;{ ; ; ;.* * * * * * * *,3 3 3 3 3 3 3 3" " " " " " " "$
S 
S 
S 
S 
SZ 
S 
S 
SO O O O O O O O^ ^ ^ ^ ^ ^ ^ ^< b  b  b  b  b  b  b  bF9B 9B 9B 9B 9B@    |            rK   