Ë
    /ÐÆji  ã                   ód   — d dl Z d dlZd dlZd dlmZ g Zg Z G d„ d«      Zd	d„Zd
d„Z	dd„Z
dd„Zy)é    N)ÚVectorc                   ó    — e Zd Zd„ Zdd„Zd„ Zy)ÚMeshc                 ót   — || _         g | _        g | _        g | _        g | _        g | _        g | _        d| _        y )N)é   r   r   r   )ÚnameÚvÚfÚmiÚuvÚsmoothÚcolorsÚcolor)Úselfr   s     úgeometry.pyÚ__init__zMesh.__init__   s?   €  4˜œ¨r¨¬¸°$´&ÀB¸D¼GÈrÀtÄwÐ^`ÐRVÔR]ÐmoÐaeÔalð  |EÐptÕpzó    Nc           
      óð  ‡— |D �cg c]  }t        |«      ‘Œ }}t        | j                  «      Š| j                  j                  |«       |D �]  }| j                  j                  t        ˆfd„|D «       «      «       | j                  j                  |«       | j                  j                  |«       | j                  j                  | j                  «       |r-| j                  j                  |D �	cg c]  }	||	   ‘Œ	 c}	«       Œ»||d      ||d      z
  j                  ||d      ||d      z
  «      j                  «       }
t        |
j                  «      dk  rJt        d«      }|j                  |
«      j                  «       }|
j                  |«      j                  «       }nLt        d«      |
|
j                   z  z
  j                  «       }|
j                  |«      }|j"                  dk  r| }| j                  j                  |D �	cg c]  }	||	   ‘Œ	 c}	D �cg c]8  }|j%                  |«      t&        |   z  |j%                  |«      t&        |   z  f‘Œ: c}«       �Œ y c c}w c c}	w c c}	w c c}w )Nc              3   ó(   •K  — | ]	  }‰|z   –— Œ y ­w©N© )Ú.0ÚjÚoffs     €r   ú	<genexpr>zMesh.add.<locals>.<genexpr>   s   øè ø€ Ò+ �s˜1•uÑ+ùs   ƒr   r   é   gffffffî?)r   r   r   )r   r   r   )r   Úlenr	   Úextendr
   ÚappendÚtupler   r   r   r   r   ÚcrossÚ
normalizedÚabsÚyÚxÚzÚdotÚTILES)r   ÚvertsÚfacesÚmatr   r   r	   ÚvsÚfacer   ÚnormalÚupÚuÚpr   s                 @r   ÚaddzMesh.add   sê  ø€ ØÖ�A„fˆQ…iÐ€"Ð¤C¨¯©£K °·±·±¸bÔ0AØó 
^€dØ‡6�6‡=�=”Ó+ dÔ+Ó+Ô,¨T¯W©W¯^©^¸CÔ-@ÀÇÁ×ASÑASÐTZÔA[Ð\`×\gÑ\g×\nÑ\nÐos×oyÑoyÔ\zÙˆ�‰�‰¨Ö- 1˜˜A›Ò-Ô	.¨xØˆd�1‰g‰;�r˜$˜q™'‘{Ñ"×
)Ñ
)¨"¨T°!©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˜fŸh™h‘Ñ&×2Ñ2Ó4€A°v·|±|ÀA³°QØ‡s�sˆ1‚u�ˆrˆQØ‡7�7‡>�>ÐVZÖF[ÐQRÀrÈ!ÃuÒF[Ö\À�A—E‘E˜!“HœU 3™ZÑ'¨¯©¨a«´°s±Ñ(;Ò<Ò\Ö]ñ
^ùò  ùò .ùò G\ùÒ\s   †I$Ã3I)
ÈI.
È=I3
c                 ól  — t         j                  j                  j                  | j                  «      }|j                  | j                  g | j                  «       |j                  «        t         j                  j                  j                  | j                  |«      }t         j                  j                  j                  j                  |«       t        D ]  }|j                  j                  |«       Œ |j                   j                  d¬«      }t#        |j$                  | j&                  | j(                  | j*                  «      D ]G  \  }}}}||_        ||_        t#        |j0                  |«      D ]  \  }	}
|
|j                  |	   _        Œ ŒI |j2                  j                  ddd¬«      }t#        |j$                  | j4                  «      D ]*  \  }}|j0                  D ]  }	||j                  |	   _        Œ Œ, t9        j                  «       }|j;                  |«       t8        j<                  j?                  ||j@                  ¬«       t8        j<                  jC                  |tE        |j@                  «      ¬«       |jG                  |«       |jI                  «        |j                  «        |S )NÚUVMap)r   ÚColorÚFLOAT_COLORÚCORNER)r   ÚtypeÚdomain)r*   )%Ú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Úcolor_attributesr   r   ÚbmeshÚ	from_meshÚopsÚrecalc_face_normalsr*   ÚtriangulateÚlistÚto_meshÚfree)r   ÚmeÚobÚmr   r1   r   ÚcoordsÚsmÚliÚcor   ÚcÚbms                 r   ÚfinishzMesh.finish   sf  € Ü‡X�X‡_�_×Ñ˜Ÿ™Ó#€" B§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Õ&Ð&Ø‡\�\×Ñ˜7ÐÓ#€"Ü˜BŸK™K¨¯©°·±¸¿¹ÓDò =�n€aˆˆ6�"Ø€1Ô B�q”|Ü�A—N‘N 6Ó*Ò<�u€rˆ"¸"¨2¯7©7°2©;­>Ñ<ð=ð 	×Ñ×Ñ W°-ÀxÐÓP€%Ü�—‘˜TŸ[™[Ó)ò 3�c€aˆØ�^‰^Ò2€r°˜EŸJ™J r™NÕ0Ñ2ð3ä
‡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   )FN)Ú__name__Ú
__module__Ú__qualname__r   r2   r^   r   r   r   r   r      s   „ ò Eó^ór   r   c           
      óê  — t        j                  «       }t         j                  j                  |d¬«       |j                  D ]c  }t        |j                  j                  |d   z  |j                  j                  |d   z  |j                  j                  |d   z  f«      |_        Œe |rMt         j                  j                  |t        |j                  «      t        |t        |«      dz  «      dd¬«       |j                  j                  «        |j                  j                  «        |j                  D �cg c]  }|j                  j!                  «       ‘Œ }}|j"                  D �	cg c]  }	t%        d„ |	j                  D «       «      ‘Œ  }
}	|j'                  «        |r|D �cg c]  }||z  ‘Œ	 }}| j)                  |D �cg c]  }|t        |«      z   ‘Œ c}|
|«       y c c}w c c}	w c c}w c c}w )	Nr   )Úsizer   r   g¸…ëQ¸Î?ÚEDGES)ÚgeomÚoffsetÚsegmentsÚaffectc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   )Úindex)r   r	   s     r   r   zbox.<locals>.<genexpr>'   s   è ø€ Òd~ÐqrÐef×elÕelÑd~ùs   ‚)rM   r=   rO   Úcreate_cuber)   r   r[   r%   r$   r&   ÚbevelrR   ÚedgesÚminÚensure_lookup_tableÚindex_updateÚcopyr*   r    rT   r2   )Úgr\   ÚsrW   ÚbÚrotr]   r	   r,   r
   Úfss              r   Úboxrw   #   sŸ  € Ü	‡I�IƒK€”—	‘	×%Ñ% b¨aÐ%Ô0Ø
�(‰(ÒE€Qœ §¡§¡ q¨¡t¡¨A¯D©D¯F©F°1°Q±4©K¸¿¹¿¹¸qÀ¹t¹ÐDÓE�1•4ÐEÙ„e‡i�i‡o�o�bœd 2§8¡8›n´C¸¼#¸a»&À¹*Ó4EÈqÐX_€oÔ`Ø‡�×ÑÔ §¡× 5Ñ 5Ô 7ÐQS×QYÑQYÖ;ZÈA¸A¿D¹D¿I¹I½KÐ;Z¸Ð;Zð  IK÷  IQñ  IQö  _Rð  DEÔ_dÑd~Ðvw×v}Ñv}Ôd~Õ_~ð  _RÐ[]ð  _Rð  SU÷  SZñ  SZô  S\Ù˜2Ö�aˆC�‹EÐˆÐØ‡�˜RÖ ˜ˆŒ&�‹)‹Ò   AÕ&ùò <[ùò  _RùÚùÚ s   Ä9!G!Å*#G&Æ%G+ÇG0c           	      ó¦  — |D ���cg c]  }|D ]
  \  }}|||f‘Œ Œ }}}}t        |«      }	t        t        |	dz
  dd«      «      t        t        |	d|	z  «      «      gt        |	«      D �
cg c]  }
|
|
dz   |	z  |
dz   |	z  |	z   |
|	z   f‘Œ c}
z   }|dk(  r|D ���cg c]  \  }}}|||f‘Œ }}}}| j                  |||«       y c c}}}w c c}
w c c}}}w )Nr   éÿÿÿÿr   r$   )r   r    Úranger2   )rr   ÚpolyÚdepthrW   Úaxisr&   r%   r$   r,   ÚnÚirv   s               r   Úprismr€   +   sÜ   € à×,Ð,� tÒ,¡  !€aˆˆ!‚WÐ,€WÐ,€Ò,¬s°4«y¨QÜ
Œ5��1‘�R˜ÓÓœU¤5¨¨1¨Q©3£<Ó0Ð1ÔV[Ð\]ÓV^Ö2_ÐQR°A°q¸±s¸A±g¸qÀ¹sÀA¹gÀa¹iÈÈ!ÉÒ3LÒ2_Ñ_€Øˆ#‚I r×*Ð*™e˜a  !�1�Q�q’'Ð*ˆbÒ*Ø‡�€rˆ"ˆQ…ùô -ùÚ2_ùÜ*s   ‡C Á)CÂCc                 óª  — t        |«      }t        |«      }||z
  j                  }||z
  j                  dd«      }|€|n|}||f||ffD �	�
�cg c]}  \  }	}
t        |«      D ]j  }|	|t        |
t	        j
                  |t        j                  z  |z  «      z  |
t	        j                  |t        j                  z  |z  «      z  df«      z  z   ‘Œl Œ }}
}	}t        t        |dz
  dd«      «      t        t        |d|z  «      «      gt        |«      D �cg c]  }||dz   |z  |dz   |z  |z   ||z   f‘Œ c}z   }| j                  |||d«       y c c}}
}	w c c}w )NÚZÚYr   r   ry   r   T)
r   ÚlengthÚto_track_quatrz   ÚmathÚcosÚtauÚsinr    r2   )rr   Úart   ÚrrW   r~   Úr2ÚLÚqr1   Úrrr   r,   rv   s                 r   Úcylr�   2   sI  € Ü	ˆ!ƒ9€Œv�a‹yˆQ˜A˜a™CŸ<™<˜¨1¨Q©3×*=Ñ*=¸cÀ#Ó*F¨ÈrÈzÉ!Ð_aÀrØWXÐYZÐV[Ð]^Ð_aÐ\bÐUc×vÐvÉTÈQÈrÔmrÐstÓmuÒvÐhi€Q€qŒ�”D—H‘H˜QœtŸx™x™Z¨™\Ó*Ñ*¨2¬d¯h©h°q¼¿¹±zÀ!±|Ó.DÑ+DÀQÐGÓ	HÑHÓHÐvÐHÐv€ÒvÜ
Œ5��1‘�R˜ÓÓœU¤5¨¨1¨Q©3£<Ó0Ð1ÔV[Ð\]ÓV^Ö2_ÐQR°A°q¸±s¸A±g¸qÀ¹sÀA¹gÀa¹iÈÈ!ÉÒ3LÒ2_Ñ_€Ø‡�€rˆ"ˆQˆtÕùô wùÚ2_s   ÁBE	ÄEc           	      óR   — t        ||dd  «      D ]  \  }}t        | |||||«       Œ y )Nr   )rG   r�   )rr   Úpointsr‹   rW   r~   rŠ   rt   s          r   Útuber“   8   s/   € Ü��v˜a˜b�zÓ"Ò3�S€Q€q¤3 q¨¨1¨Q¨q°Õ#3Ñ3r   )g{®Gáz„?N)r&   )é   N)r”   )r:   rM   r†   Ú	mathutilsr   rD   r(   r   rw   r€   r�   r“   r   r   r   ú<module>r–      s6   ðç Ó Ý Ø€Ø€÷ñ ó:'óóô4r   