
    Mi>:                     t   S SK r S SKrS SKrS SKrSSKJrJr  SSKJ	r	  SSKJ
r
  \R                  " S5      rS\R                  l        SS jrS	 rS
 rS rS rS rSS jr0 r0 r\R0                  " S5      (       a  \\S'   \\S'   \\S'   gSSKJr  \" \" S5      5      r\R;                  \\S.5        \\S'   g)    N   )utilvisual)log)unique_name   Fc                    SSK nU(       a  UR                  R                  UR                  R                  UR                  R                  UR                  R
                  UR                  R                  UR                  R                  /nOSnUR                  XS9n0 nUR                   H&  nUR                  n	[        X5      XxR                  '   M(     UR                  R                  n
U
b  [        R                  " U
S5      (       a  SS0nOSU
 S30n0 n0 n/ nUR                   R"                   H  n[%        U[&        UUUUUUS9  M     S	XS
.$ )a  
Load a COLLADA (.dae) file into a list of trimesh kwargs.

Parameters
----------
file_obj : file object
  Containing a COLLADA file
resolver : trimesh.visual.Resolver or None
  For loading referenced files, like texture images
ignore_broken: bool
  Ignores broken references during loading:
    [collada.common.DaeUnsupportedError,
     collada.common.DaeBrokenRefError]
kwargs : **
  Passed to trimesh.Trimesh.__init__

Returns
-------
loaded : list of dict
  kwargs for Trimesh constructor
r   N)ignore      ?unitsmetersz	 * metersnodeparent_matrixmaterial_mapmeshesmeshes_countgraphresolvermetadataScene)classr   geometry)colladacommonDaeErrorDaeIncompleteErrorDaeMalformedErrorDaeBrokenRefErrorDaeUnsupportedErrorCollada	materialseffect_parse_materialid	assetInfo	unitmeternpisclosescenenodes_parse_node_EYE)file_objr   ignore_brokenkwargsr   ignorescr   mr#   unitr   r   r   r   r   s                   n/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/trimesh/exchange/dae.pyload_colladar6      s8   , NN##NN--NN,,NN,,NN..NN--
  	1A L[[,V>TT  ;;  D|rzz$,,X&vY/0 FLE%%		
  uAA    c                 @
   SSK nU n[        U [        [        [        [
        R                  45      (       d  U /nUR                  5       n/ n[        U5       GH@  u  pgSnSn	[        S5      n
UR                  R                  (       Ga  UR                  R                  S:X  a6  [        UR                  R                  5      n
UR                  R                  nOUR                  R                  S:X  a_  UR                  R                  S-  SS2SS24   n	[
        R                   " UR                  R"                  5      S-  U
R$                  l        OVUR                  R                  S:X  a<  [
        R                   " UR                  R"                  5      S-  U
R$                  l        UR(                  R+                  U
R$                  5        UR,                  R+                  U
5        UR.                  R1                  SUR2                  R5                  5       S	5      nUR.                  R1                  S
UR6                  R5                  5       S	5      nUR.                  R9                  5       nUR;                  SSS5        UR;                  SSS5        X/nUb^  [=        U5      S:  aO  UR.                  R1                  SUR5                  5       S5      nUR;                  SSS5        UR+                  U5        U	bZ  SnU(       a  SnUR.                  R1                  SU	R5                  5       S5      n	UR;                  USS5        UR+                  U	5        UR>                  RA                  U[B        RD                  " 5       RF                  [B        RD                  " 5       RF                  U5      n[
        RH                  " URJ                  R5                  5       [=        U5      5      nSU 3nURM                  UUU5      nURN                  R+                  U5        URP                  R+                  U5        URR                  RU                  UU
/ S9nURR                  RW                  UU/5      nURR                  RY                  SU 3U/S9nUR+                  U5        GMC     URR                  R[                  SU5      nUR\                  R+                  U5        UUl)        [^        R`                  " 5       nURc                  U5        URe                  S5        URg                  5       $ )z
Export a mesh or a list of meshes as a COLLADA .dae file.

Parameters
-----------
mesh: Trimesh object or list of Trimesh objects
    The mesh(es) to export.

Returns
-----------
export: str, string of COLLADA format output
r   Ntexturevertex     o@   facezverts-array)XYZznormals-arrayVERTEXz#verts-array   NORMALz#normals-arrayztexcoords-array)UVr   TEXCOORDz#texcoords-arrayzcolors-array)RGBCOLORz#colors-arraymaterial)inputsr   )childrenr*   )4r   
isinstancelisttuplesetr(   ndarrayr!   	enumerate_unparse_materialr   definedkindrK   uvvertex_colorsarray
main_colorr#   diffuseeffectsappendr"   sourceFloatSourceverticesflattenvertex_normals	InputListaddInputlenr   Geometryuuiduuid4hexrepeatfacescreateTriangleSet
primitives
geometriesr*   MaterialNodeGeometryNodeNoder   scenesioBytesIOwriteseekread)meshr0   r   r   r2   r+   ir3   rW   colorsmatr`   normals
input_listarrays	texcoordsidxgeomindicesmatreftrisetmatnodegeomnoder   r*   bs                             r5   export_colladar   X   s    FdT5#rzz:;;AE&!%88xx}}	)'(9(9:XX[[(*((0058!RaR%@%'XXahh.A.A%BU%J

"&(%'XXahh.A.A%BU%J

"			$	3 >>--1::--/
 ..,,Q--557
 ^^--/
Ax8Ax)9:$NR122!2::<I :/ABMM)$C^^// 0/F Wo>MM&!((DJJL,<,<djjl>N>NPVW))AGGOO-s6{;A3''VDv&	D!--,,VS,D==--dWI>}}!!D*z!BTm "n MM/EHHOOEAG


AGGAJFF1I668Or7   c                    SSK n[        XR                  R                  5      (       Ga  U R                  n	0 n
U R
                   HJ  nUR                  nUR                  nUR                  U;   a  X-R                     X'   M=  [        X5      X'   ML     U	R                   GH  n[        XR                  R                  5      (       a  UR                  5       n[        XR                  R                  5      (       d  M^  UR                  nUc  Mo  UR                   nUU   R#                  [%        U5      S-  S5      nSnUR&                  b9  UR&                  nUR(                  nUU   R#                  [%        U5      S-  S5      nSnUR*                  nSU;   a  [%        US   5      S:  an  [%        UR,                  5      S:  aU  US   S   S   R.                  nUR,                  SS2SS2US   S   S   4   nUU   R#                  [%        U5      S-  S5      n[0        R2                  " UR4                  S   5      R#                  UR4                  S   S-  S5      nSnUR6                  U
;   a  [8        R8                  " XR6                     5      nSn[%        UR:                  5      S:  a@  UR:                  S   nUR<                  S   nUU   R#                  [%        U5      S-  S45      n[>        R@                  RC                  UUS9n[E        U	R                  X4S	9nUUUUUUS
.UU'   URG                  UUUS.5        GM     g[        XR                  RH                  5      (       aR  U RJ                  bD  U RJ                   H3  n [0        RL                  " XRN                  5      n![Q        U U!UUUUUUS9  M5     gg[        XR                  RR                  5      (       a  g[        XR                  RT                  5      (       a  gg)z(
Recursively parse COLLADA scene nodes.
r   Nr<   rJ   r   r   )rW   rK   )containscounts)r`   rk   rb   rX   r   r   )frame_tomatrixr   r   )+r   rN   r*   rp   r   r"   symboltargetr%   r$   rm   polylistPolylisttrianglesetTriangleSetr:   vertex_indexreshapere   normalnormal_indexsourcesindexdatar(   arangeshaperK   copytexcoordsettexcoord_indexsetr   r9   TextureVisualsr   r]   rq   rM   dotr   r,   
CameraNode	LightNode)"r   r   r   r   r   r   r   r   r   r   local_material_mapmnr   r3   	primitiver:   r   r`   r|   r   r   rz   scolorcolor_indexrk   visrK   rW   texcoordtexcoord_index	geom_namechildr   s"                                     r5   r,   r,      s     $2233==  ..BYYF		Att|#-9$$-?"*-<Q-I"* ! ",,I)%5%5%>%>??%113	)%8%8%D%DEE"))>(55!,/77L8IA8MqQ ##/&--F#,#9#9L$\2::3|;Lq;PRSTG %%a<C'
Oa$7C	<PST<TgJqM!,11E"+//!Q'
1a8H2H"IK";/77K8H18LbQF		(.."34<<X^^A=NRS=SUVW %%);;#yy);<N<N)OPHB9001A5#,#8#8#;)2)D)DQ)G%n5== 014a8 !..7727QC'fZ	 ("&-%+! (%y! $-"/$-e -v 
D--,,	-	-==${{;"(!-!!-%%		 ' %  
D--22	3	3	D--11	2	2 
3r7   c                 ~    SSK Jn  UR                  U 5      nUR                  [        R
                  " U5      5      nU$ )z.
Load a texture from a file into a PIL image.
r   )Image)PILr   getopenr   wrap_as_stream)	file_namer   r   	file_dataimages        r5   _load_texturer     s3     Y'IJJt**956ELr7   c           
         SSK n[        R                  " S5      nSn[        U R                  UR
                  R                  5      (       a@   [        U R                  R                  R                  R                  R                  U5      nOU R                  b  U R                  n[        R                  " S5      nSn[        U R                   UR
                  R                  5      (       a@   [        U R                  R                  R                  R                  R                  U5      nOU R                   b  U R                   SS nS	n[        U R$                  UR
                  R                  5      (       d?  U R$                  b2   ['        U R$                  5      n[        R(                  " S
S
U-   -  5      nSn	Sn
U R.                  b?   [        U R.                  R                  R                  R                  R                  U5      n
U R0                  bh  [        U R0                  UR
                  R                  5      (       d9  [3        [        R4                  " USS ['        U R0                  S   5      5      5      n[6        R
                  R9                  UUU
UUU	US9$ ! [         a    [        R                  " SSS9   GNf = f! [         a    [        R"                  " SSS9   GNf = f! [*        [,        4 a(    [        R"                  " SU R$                   S35         GNkf = f! [         a    [        R"                  " SSS9   GNAf = f)z0
Turn a COLLADA effect into a trimesh material.
r   Nr   zunable to load base textureT)exc_infor<   zunable to load emissive texturer          @zInvalid shininess value: z, using default roughnessg        zunable to load bumpmap)emissiveFactoremissiveTexturenormalTexturebaseColorTexturebaseColorFactormetallicFactorroughnessFactor)r   r(   onesrN   r[   rK   Mapr   samplersurfacer   pathBaseExceptionr   debugzerosemissionwarning	shininessfloatsqrt	TypeError
ValueErrorbumpmaptransparentrP   r]   r   PBRMaterial)r#   r   r   r   r   r   r   r   shininess_valuer   r   s              r5   r$   r$   $  s     ggajO&..'"2"2"6"677	D,&&..44998 
 
	# .. XXa[NO&//7#3#3#7#788	J+&&..44998O
 
	$!, Ov'')9)9)=)=>>(	#F$4$45O ggcS?-B&CDO N M~~!	A)&&..44998M %jG,,00/ /  IIobq)51C1CA1F+GH
 ??&&%'#)'%' '  k  	DII3dC	D  	JKK9DI	J :& 	KK+F,<,<+==VW	  	AKK04@	AsH   >J  ->K 1K, 
>L'  KKK)(K),4L$#L$'M
	M
c                 p   SSK n[        U [        R                  R                  5      (       Ga  U R
                  nUc  [        R                  " / SQ5      nUS-  nUb  [        U5      nU R                  nUb*  [        US   5      [        US   5      [        US   5      S/nU R                  nUc  SnUb  SUS-  -  S-
  nUR                  R                  [        R                  " 5       R                  / S	UU/ S
Q[        U5      S9nUR                  R!                  [        R                  " 5       R                  SU5      n U $ UR                  R                  [        R                  " 5       R                  / S	S9nUR                  R!                  [        R                  " 5       R                  SU5      n U $ )z2
Turn a trimesh material into a COLLADA material.
r   N)r;   r;   r;   r;   r;   rB   r   r   r   phong)r   r   r   r   )paramsshadingtyper[   r   specularr   pbrmaterial)r   r   defaultmaterial)r   rN   r   rK   r   r   r(   rY   rO   r   r   r   Effectrg   rh   ri   Material)rK   r   r[   r   r   r#   s         r5   rT   rT   r  s     (FOO7788**?hh;<GE/7mG**hqk*E(1+,>hqk@RTWXH,,	I il*S0I!!((JJL)I& ) 
 ##,,TZZ\-=-=}fU O !!(()9)9"RY(Z##,,TZZ\-=-=?PRXYOr7   c                     [         R                  " U SS9n[        S UR                  5        5       5      n[        R
                  R                  U5      n[        X4   4SU0UD6nU$ )a   
Load a ZAE file, which is just a zipped DAE file.

Parameters
-------------
file_obj : file object
  Contains ZAE data
resolver : trimesh.visual.Resolver
  Resolver to load additional assets
kwargs : dict
  Passed to load_collada

Returns
------------
loaded : dict
  Results of loading
zip)	file_typec              3   p   #    U  H,  oR                  5       R                  S 5      (       d  M(  Uv   M.     g7f)z.daeN)lowerendswith).0ry   s     r5   	<genexpr>load_zae.<locals>.<genexpr>  s#     M1'')2D2DV2LQQs   '6	6r   )r   
decompressnextkeysr   	resolversZipResolverr6   )r.   r   r0   archiver   loadeds         r5   load_zaer     sb    ( ooh%8G MMMI ++G4H ',JxJ6JFMr7   r   daezae)ExceptionWrapperzmissing `pip install pycollada`)r   r   )NT)N)r   rs   rg   numpyr(    r   r   	constantsr   r   eyer-   flags	writeabler6   r   r,   r   r$   rT   r   _collada_loaders_collada_exporters
has_module
exceptionsr   ImportError_excupdate r7   r5   <module>r     s     	     	vvay

 FBRSlhVK\&RD   ??9*U&U .u .K(IJKDD67 $ur7   