§
    ¡)ýfÝ  ã                   ó`   — d „ Z d„ ZddlmZ ddlmZmZmZ ddlm	Z	  G d„ de¦  «        Z
e
fZdS )	c                 ój   — | j         j        r| j         j        S | j                             ddd¦  «        S )NÚColorÚ
BYTE_COLORÚCORNER)Ú
attributesÚactive_colorÚcolor_attributesÚnew)Úmes    úc/home/blender/git/blender-v430/install_release/4.3/scripts/startup/bl_operators/vertexpaint_dirt.pyÚensure_active_color_attributer      s5   € Ø	„}Ô!ð *ØŒ}Ô)Ð)ØÔ×"Ò" 7¨L¸(ÑCÔCÐCó    c           	      óv  — ddl m} ddlm} dd l}	|	                     ddg¦  «        t          | j        ¦  «        z  }
d„ t          t          | j        ¦  «        ¦  «        D ¦   «         }| j        D ]d}||j        d                   	                    |j        d         ¦  «         ||j        d                   	                    |j        d         ¦  «         Œet          | j        ¦  «        D ]Â\  }} |¦   «         }|j        }|j        }||         D ],}|| j        |         j        |z
                       ¦   «         z  }Œ-t          ||         ¦  «        }|dk    rt          dz  }n#||z  } ||                     |¦  «        ¦  «        }t!          ||¦  «        }|st#          ||¦  «        }||
|<   ŒÃt          |¦  «        D ]c}|
d d …         }t          |¦  «        D ]F\  }}|D ]}|
|xx         |||         z  z  cc<   Œ|
|xx         t          |¦  «        |z  dz   z  cc<   ŒG~Œd|rt#          |
¦  «        }t!          |
¦  «        }n|}|}||z
  }|d	k     rd}nd
|z  }t%          | ¦  «        }|sdhS |j        dk    }|j        }| j        }t          | j        ¦  «        D ]Œ\  }}|r|j        r~|j        D ]v}| j        |         } | j        }||r|n|         j        }!|
|         }"|"|z
  |z  }"|rt#          |"d¦  «        dz  }"|"|!d         z  |!d<   |"|!d         z  |!d<   |"|!d         z  |!d<   ŒwŒ�|                      ¦   «          dhS )Né    )ÚVector)ÚacosÚfç        c                 ó   — g | ]}g ‘ŒS © r   )Ú.0Úis     r   ú
<listcomp>z#applyVertexDirt.<locals>.<listcomp>!   s   € Ð
/Ð
/Ð
/�!ˆ2Ð
/Ð
/Ð
/r   é   g       @g-Cëâ6?ç      ð?Ú	CANCELLEDÚPOINTg      à?é   ÚFINISHED)Ú	mathutilsr   Úmathr   ÚarrayÚlenÚverticesÚrangeÚedgesÚappendÚ	enumerateÚnormalÚcoÚ
normalizedÚpiÚdotÚmaxÚminr   ÚdomainÚdataÚuse_paint_maskÚpolygonsÚselectÚloop_indicesÚloopsÚvertex_indexÚcolorÚupdate)#r
   Úblur_iterationsÚblur_strengthÚ
clamp_dirtÚclamp_cleanÚ	dirt_onlyÚ	normalizer   r   r!   Ú	vert_toneÚconÚer   ÚvÚvecÚnor)   ÚcÚtot_conÚangÚorig_vert_toneÚjÚmin_toneÚmax_toneÚ
tone_rangeÚactive_color_attributeÚpoint_domainÚattribute_datar1   ÚpÚ
loop_indexÚloopÚcolÚtones#                                      r   ÚapplyVertexDirtrU      sÚ  € Ø Ð Ð Ð Ð Ð ØÐÐÐÐÐØ€L€L€Lð  —’˜C # Ñ'Ô'­#¨b¬kÑ*:Ô*:Ñ:€Ið 0Ð
/•u�S ¤Ñ-Ô-Ñ.Ô.Ð
/Ñ
/Ô
/€Cð ŒXð 1ð 1ˆØˆAŒJ�qŒMÔ×!Ò! !¤*¨Q¤-Ñ0Ô0Ð0ØˆAŒJ�qŒMÔ×!Ò! !¤*¨Q¤-Ñ0Ô0Ð0Ð0å˜"œ+Ñ&Ô&ð ð ‰ˆˆ1Øˆf‰hŒhˆØŒXˆØŒTˆð �Q”ð 	9ð 	9ˆAØ�B”K ”NÔ%¨Ñ*×6Ò6Ñ8Ô8Ñ8ˆCˆCõ �c˜!”f‘+”+ˆà�aŠ<ˆ<Ý�s‘(ˆCˆCà�7‰NˆCð
 �$�r—v’v˜c‘{”{Ñ#Ô#ˆCõ �*˜cÑ"Ô"ˆàð 	(Ý�k 3Ñ'Ô'ˆCàˆ	�!‰ˆõ �?Ñ#Ô#ð 
ð 
ˆà" 1 1 1œˆõ ˜c‘N”Nð 	7ð 	7‰DˆAˆqØð Bð B�Ø˜!��” °¸qÔ0AÑ AÑA��‘�à�aˆLˆLŒL�C ™FœF ]Ñ2°QÑ6Ñ6ˆLˆL‰LˆLØˆNàð Ý�y‘>”>ˆÝ�y‘>”>ˆˆàˆØˆà˜HÑ$€Jà�FÒÐàˆ
ˆ
à˜:Ñ%ˆ
å:¸2Ñ>Ô>ÐØ!ð Øˆ}Ðà)Ô0°GÒ;€Là+Ô0€NàÔ&€NÝ˜"œ+Ñ&Ô&ð 'ð '‰ˆˆ1Øð 	' ¤ð 	'Øœnð 'ð '�
Ø”x 
Ô+�ØÔ%�Ø$¨,Ð%F Q Q¸JÔGÔM�Ø  ”|�Ø˜x™¨:Ñ5�àð 0Ý˜t S™>œ>¨CÑ/�Dà  A¤™��A‘Ø  A¤™��A‘Ø  A¤™��A‘�øØ‡I‚I�K„K€KØˆ<Ðr   r   )ÚOperator)ÚFloatPropertyÚIntPropertyÚBoolProperty)r+   c                   ó   — e Zd ZU dZdZdZddhZ edddd	d	¬
¦  «        ed<    e	ddddd¬
¦  «        ed<    eddde
e
d¬¦  «        ed<    eddde
dd¬¦  «        ed<    eddd¬¦  «        ed<    edd d!¬¦  «        ed"<   ed#„ ¦   «         Zd$„ Zd%S )&ÚVertexPaintDirtz,Generate a dirt map gradient based on cavityzpaint.vertex_color_dirtzDirty Vertex ColorsÚREGISTERÚUNDOzBlur StrengthzBlur strength per iterationg{®Gáz„?r   )ÚnameÚdescriptionr.   r-   Údefaultr:   zBlur Iterationsz6Number of times to blur the colors (higher blurs more)r   é(   r   r9   zHighlight Anglez5Less than 90 limits the angle used in the tonal ranger   ÚROTATION)r^   r_   r.   r-   r`   ÚunitÚclean_anglez
Dirt AngleÚ
dirt_anglez	Dirt Onlyz'Don't calculate cleans for convex areasF)r^   r_   r`   r=   Ú	Normalizez-Normalize the colors, increasing the contrastTr>   c                 ó*   — |j         }|o
|j        dk    S )NÚMESH)ÚobjectÚtype)ÚclsÚcontextÚobjs      r   ÚpollzVertexPaintDirt.poll®   s   € àŒnˆØÐ*˜œ FÒ*Ð+r   c           	      óˆ   — |j         }|j        }t          || j        | j        | j        | j        | j        | j        ¦  «        }|S )N)	ri   r0   rU   r9   r:   re   rd   r=   r>   )Úselfrl   rm   ÚmeshÚrets        r   ÚexecutezVertexPaintDirt.execute³   sJ   € ØŒnˆØŒxˆåØØÔ ØÔØŒOØÔØŒNØŒNñ
ô 
ˆð ˆ
r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	bl_idnameÚbl_labelÚ
bl_optionsrW   Ú__annotations__rX   r+   rY   Úclassmethodrn   rs   r   r   r   r[   r[   ƒ   s†  € € € € € € Ø6Ð6Ø)€IØ$€HØ˜fÐ%€Jà �=ØØ1Ø�cØð	ñ ô ð ð ñ ð !�[ØØLØ�2Øð	ñ ô ð ð ñ ð �ØØKØ�RØØðñ ô ð ð ñ ð �ØØKØ�RØØðñ ô ð ð ñ ð ˆ|ØØ=Øðñ ô ð ð ñ ð
 ˆ|ØØCØðñ ô ð ð ñ ð ð,ð ,ñ „[ð,ðð ð ð ð r   r[   N)r   rU   Ú	bpy.typesrV   Ú	bpy.propsrW   rX   rY   r    r+   r[   Úclassesr   r   r   ú<module>r€      s©   ðð
Dð Dð Dðpð pð pðf Ð Ð Ð Ð Ð Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø Ð Ð Ð Ð Ð ð>ð >ð >ð >ð >�hñ >ô >ð >ðD ð€€€r   