ó
    ¸ÑÆjO  ã                   óp   • S SK r S SKrS SKrS SKJrJr  / r/ r " S S5      rS	S jr	S
S jr
SS jrSS jrg)é    N)ÚVectorÚMatrixc                   ó*   • \ rS rSrS rSS jrS rSrg)ÚMeshé   c                 óV   • Xl         / U l        / U l        / U l        / U l        / U l        g ©N)ÚnameÚvÚfÚmiÚuvÚsmooth)Úselfr
   s     Ú1/root/fal-author/medieval-atom-kit-v1/geometry.pyÚ__init__ÚMesh.__init__   s'   €  4œ¨r¨¬¸°$´&ÀB¸D¼GÈrÀtÄwÐ^`ÐRVÕR]ó    Nc           
      ór  ^• U Vs/ s H  n[        U5      PM     nn[        U R                  5      mU R                  R                  U5        U GHÆ  nU R                  R                  [        U4S jU 5       5      5        U R                  R                  U5        U R                  R                  U5        U(       a0  U R                  R                  U V	s/ s H  o•U	   PM	     sn	5        MŸ  XxS      XxS      -
  R                  XxS      XxS      -
  5      R                  5       n
[        U
R                  5      S:  aH  [        S5      o»R                  U
5      R                  5       oÊR                  U5      R                  5       nOK[        S5      XªR                  -  -
  R                  5       oÊR                  U5      nUR                  S:  a  U* nUS;   aÊ  [!        U S	[        S5      5      oÝX­R#                  U
5      -  -
  nUR$                  S
:”  a.  UR                  5       oÊR                  U5      R                  5       nU R                  R                  U V	s/ s H  o—U	   PM	     sn	 Vs/ s H$  oÿR#                  U5      UR#                  U5      4PM&     sn5        GMT  U R                  R                  U V	s/ s H  o—U	   PM	     sn	 Vs/ s H8  oÿR#                  U5      [&        U   -  UR#                  U5      [&        U   -  4PM:     sn5        GMÉ     g s  snf s  sn	f s  sn	f s  snf s  sn	f s  snf )Nc              3   ó.   >#   • U  H
  nTU-   v •  M     g 7fr	   © )Ú.0ÚjÚoffs     €r   Ú	<genexpr>ÚMesh.add.<locals>.<genexpr>
   s   øé € Ð+¢d �s˜1–u¢dùs   ƒé   r   é   gffffffî?)r   r   r   )r   r   r   )r   é   é   é   Úgraingš™™™™™¹?)r   Úlenr   Úextendr   ÚappendÚtupler   r   r   ÚcrossÚ
normalizedÚabsÚyÚxÚzÚgetattrÚdotÚlengthÚTILES)r   ÚvertsÚfacesÚmatr   r   r   ÚvsÚfacer   ÚnormalÚupÚur"   Ú	projectedÚpr   s                   @r   ÚaddÚMesh.add   si  ø€ ÙÓš�A„fˆQ†i™€"Ð¤C¨¯©£K °·±·±¸bÔ0AÜ€dØ‡6�6‡=�=”Ô+¡dÓ+Ó+Ô,¨T¯W©W¯^©^¸CÔ-@ÀÇÁ×ASÑASÐTZÔA[Þˆ�‰�‰©Ó-ª 1˜Aœ©Ñ-Ô	.©xØ�1‰g‰;�r˜q™'‘{Ñ"×
)Ñ
)¨"°!©W©+°b¸a¹±kÑ*AÓ
B×
MÑ
MÓ
O€6ä	ˆ&�(‰(ƒm�CÓÜˆgƒ€BŸ™ &Ó)×4Ñ4Ó6�q¿¹Àa»×9SÑ9SÓ9U±qäˆgƒ�vŸh™h‘Ñ&×2Ñ2Ó4€A·|±|ÀA³°QØ‡s�sˆ1ƒu�ˆrˆQØ	ˆ[ÓÜ
�$�wœv g›Ó
/€EÀÇyÁyÐQWÓGXÑ@XÑ:X°	Ø×Ñ˜Ó˜Y×1Ñ1Ó3˜1·l±lÀ1³o×6PÑ6PÓ6R°AØ‡G�G‡N�NÁÓ1FÂ¸A°Q´%ÁÒ1FÓGÒ1F¨A—U‘U˜1“X˜aŸe™e A›hÓ'Ñ1FÑG×HØ�‰�‰Ñ[_ÓK`Ò[_ÐVWÈqÌEÑ[_ÒK`ÓaÒK`ÀaŸ™˜q›¤%¨¡*Ñ,¨Q¯U©U°1«X´e¸C±jÑ-@ÓAÑK`Ña×bò ùò  ùò .ùò 2GùÒGùÚK`ùÒas#   †LÃL 
ÉL%
É.+L*
Ê<L/
Ë?L4
c                 ó~  • [         R                  R                  R                  U R                  5      oR                  U R                  / U R                  5        UR                  5         [         R                  R                  R                  U R                  U5      n[         R                  R                  R                  R                  U5        [         H  o1R                  R                  U5        M     UR                   R                  SS9n[#        UR$                  U R&                  U R(                  U R*                  5       HD  u  pVpxXel        X…l        [#        UR0                  U5       H  u  pšX¤R                  U	   l        M     MF     [2        R                  " 5       o»R5                  U5        [2        R6                  R9                  X»R:                  S9  [2        R6                  R=                  U[?        UR:                  5      S9  URA                  U5        URC                  5         UR                  5         U$ )NÚUVMap)r
   )r2   )"ÚbpyÚdataÚmeshesÚnewr
   Úfrom_pydatar   r   ÚupdateÚobjectsÚcontextÚ
collectionÚlinkÚMATSÚ	materialsr%   Ú	uv_layersÚzipÚpolygonsr   r   r   Úmaterial_indexÚ
use_smoothÚloop_indicesÚbmeshÚ	from_meshÚopsÚrecalc_face_normalsr2   ÚtriangulateÚlistÚto_meshÚfree)r   ÚmeÚobÚmr   r:   r   ÚcoordsÚsmÚliÚcoÚbms               r   ÚfinishÚMesh.finish   sê  € Ü‡X�X‡_�_×Ñ˜Ÿ™Ó#€"§N¡N°4·6±6¸"¸T¿V¹VÔ$DÀRÇYÁYÄ[ÔTW×T\ÑT\×TdÑTd×ThÑThÐim×irÑirÐsuÓTvÐQSÔwz÷  xCñ  xC÷  xNñ  xN÷  xVñ  xV÷  x[ñ  x[ð  \^ô  x_ß€a—‘×#Ñ# AÖ&‰4Ø‡\�\×Ñ˜7ÐÐ#€"Ü˜BŸK™K¨¯©°·±¸¿¹ÖD�n€aˆ6ØÔ B”|Ü�A—N‘N 6Ö*�u€r¸"¯7©7°2©;®>Ó*ñ Eô ‡Y‚Yƒ[€"—‘˜bÔ!¤%§)¡)×"?Ñ"?ÀÏÉÐ"?Ñ"RÔSX×S\ÑS\×ShÑShÐikÔrvÐwy×wÑwó  sAÐShñ  TBð  CE÷  CMñ  CMð  NPô  CQð  RT÷  RYñ  RYô  R[ð  \^÷  \eñ  \eô  \gà	€)r   )r   r   r
   r   r   r   )FN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r;   ra   Ú__static_attributes__r   r   r   r   r      s   † Ú`ôcõ"	r   r   c           
      ó  • [         R                  " 5       n[         R                  R                  USS9  UR                   Hd  n[        UR                  R                  US   -  UR                  R                  US   -  UR                  R                  US   -  45      Ul        Mf     U(       aJ  [         R                  R                  U[        UR                  5      [        U[        U5      S-  5      SSS9  UR                  R                  5         UR                  R                  5         UR                   Vs/ s H  owR                  R!                  5       PM     nnUR"                   V	s/ s H  n	[%        S U	R                   5       5      PM!     n
n	UR'                  5         U(       a  U Vs/ s H  ouU-  PM	     nnU R)                  U Vs/ s H  ow[        U5      -   PM     snX£5        g s  snf s  sn	f s  snf s  snf )	Nr   )Úsizer   r   g¸…ëQ¸Î?ÚEDGES)ÚgeomÚoffsetÚsegmentsÚaffectc              3   ó8   #   • U  H  oR                   v •  M     g 7fr	   )Úindex)r   r   s     r   r   Úbox.<locals>.<genexpr>'   s   é € Ðd~Òv}Ðqr×elÖelÒv}ùs   ‚)rQ   rB   rS   Úcreate_cuber1   r   r_   r+   r*   r,   ÚbevelrV   ÚedgesÚminÚensure_lookup_tableÚindex_updateÚcopyr2   r&   rX   r;   )ÚgÚcÚsr[   ÚbÚrotr`   r   r4   r   Úfss              r   Úboxr   #   s¢  € Ü	‡I‚IƒK€”—	‘	×%Ñ% b¨aÐ%Ñ0Ø
�(Œ(€Qœ §¡§¡ q¨¡t¡¨A¯D©D¯F©F°1°Q±4©K¸¿¹¿¹¸qÀ¹t¹ÐDÓE�1–4‰(Þ„e‡i�i‡o�o�bœd 2§8¡8›n´C¸¼#¸a»&À¹*Ó4EÈqÐX_€oÑ`Ø‡�×ÑÔ §¡× 5Ñ 5Ô 7ÐQS×QYÒQYÓ;ZÒQYÈA¿D¹D¿I¹I¾KÑQY¸Ð;Zð  IK÷  IQò  IQó  _Rò  IQð  DEÔ_dÑd~Ðvw×v}Òv}Ód~Ö_~ñ  IQÐ[]ð  _Rð  SU÷  SZñ  SZô  S\Þ™2Óš2�a�ŒE™2ˆÐØ‡�™RÓ šR˜Œ&�‹)Œ™RÑ  Õ&ùò <[ùò  _RùÚùÚ s   Ä;#G0Å.&G5Æ1G:ÇG?c           	      ó®  • U VVVs/ s H  oQ  H	  u  pgXgU4PM     M     nnnn[        U5      n	[        [        U	S-
  SS5      5      [        [        U	SU	-  5      5      /[        U	5       V
s/ s H  oªU
S-   U	-  U
S-   U	-  U	-   X©-   4PM     sn
-   nUS:X  a  U VVVs/ s H	  u  pgoVXW4PM     nnnnU R                  X‹U5        g s  snnnf s  sn
f s  snnnf )Nr   éÿÿÿÿr   r*   )r#   r&   Úranger;   )ry   ÚpolyÚdepthr[   Úaxisr,   r+   r*   r4   ÚnÚir~   s               r   Úprismrˆ   +   sÊ   € áÕ,’e�£t¡ €aˆ!ƒW¡t�W‘e€Ò,¬s°4«y¨QÜ
Œ5��1‘�R˜ÓÓœU¤5¨¨1¨Q©3£<Ó0Ð1ÔV[Ð\]ÔV^Ó2_ÒV^ÐQR°q¸±s¸A±g¸qÀ¹sÀA¹gÀa¹iÈÉÓ3LÑV^Ñ2_Ñ_€Øˆ#ƒI¡rÕ*¢r™e˜a !�Q“'¡rˆbÒ*Ø‡�€rˆQ…ùô -ùÚ2_ùÜ*s   ‡CÁ, CÂCc                 ó®  • [        U5      n[        U5      o"U-
  R                  orU-
  R                  SS5      o†c  UOUnX4X&44 V	V
Vs/ s H�  u  pš[        U5        Hl  o¹U[        U
[        R
                  " U[        R                  -  U-  5      -  U
[        R                  " U[        R                  -  U-  5      -  S45      -  -   PMn     Mƒ     nn
n	n[        [        US-
  SS5      5      [        [        USU-  5      5      /[        U5       Vs/ s H  o»US-   U-  US-   U-  U-   Xµ-   4PM     sn-   nU R                  XÍUS5        g s  snn
n	f s  snf )NÚZÚYr   r   r�   r   T)
r   r/   Úto_track_quatr‚   ÚmathÚcosÚtauÚsinr&   r;   )ry   Úar|   Úrr[   r†   Úr2ÚLÚqr:   Úrrr‡   r4   r~   s                 r   Úcylr—   2   s6  € Ü	ˆ!ƒ9€Œv�a‹yˆQ˜a™CŸ<™<˜¨Q©3×*=Ñ*=¸cÀ#Ó*F¨ÉzÉ!Ð_aÀrØWXÐV[Ð]^Ð\bÑUcÕvÒUcÉTÈQÔmrÐst×muÐhi€qŒ�”D—H’H˜QœtŸx™x™Z¨™\Ó*Ñ*¨2¬d¯hªh°q¼¿¹±zÀ!±|Ó.DÑ+DÀQÐGÓ	HÑHÔHÑmuÑHÑUc€ÒvÜ
Œ5��1‘�R˜ÓÓœU¤5¨¨1¨Q©3£<Ó0Ð1ÔV[Ð\]ÔV^Ó2_ÒV^ÐQR°q¸±s¸A±g¸qÀ¹sÀA¹gÀa¹iÈÉÓ3LÑV^Ñ2_Ñ_€Ø‡�€rˆQˆtÕùô wùÚ2_s   Á	BEÄ Ec           	      óL   • [        XSS  5       H  u  pV[        XXbX45        M     g )Nr   )rL   r—   )ry   Úpointsr’   r[   r†   r‘   r|   s          r   Útuberš   8   s"   € Ü�˜a˜b�zÖ"�S€Q¤3 q¨1¨qÖ#3Ò"r   )g{®Gáz„?N)r,   )é   N)r›   )r?   rQ   r�   Ú	mathutilsr   r   rI   r0   r   r   rˆ   r—   rš   r   r   r   Ú<module>r�      s6   ðß Ó ß #Ø€Ø€÷ñ ô<'ôôõ4r   