Ë
    ³ÐÆjÃ  ã            	       ód  — d Z ddlZddlZddlZddlZddlmZ ddlmZ  ee	«      j                  «       j                  Z ej                  edz  j                  «       «      d   Zej                   j"                  Zej$                  j&                  j)                  d¬«       ej$                  j&                  j+                  d	¬
«        eej.                  j0                  «      D ]'  Zej.                  j0                  j5                  e«       Œ) ej$                  j6                  j9                   eedz  «      ¬«       ej<                  D � ci c]+  } | j                  �Œ| j>                  dv sŒ| j@                  | “Œ- c} Z!ej.                  j0                  D �]S  Zej@                  evrŒejD                  Z# e$d„ e#jJ                  D «       «      Z&dD �]  Z'e#jJ                  jQ                  d«      Z)ej.                  jT                  jW                   eeeej@                     d   e'   z  «      d¬«      e)_,        e'dk(  rdnde)jX                  jZ                  _         de)_.        e'dk(  r7e#j^                  jQ                  e)j`                  d   e&jb                  d   «       ŒÌe'dk(  r‰e#jJ                  jQ                  d«      Z2e#j^                  jQ                  e)j`                  d   e2jb                  d   «       e#j^                  jQ                  e2j`                  d   e&jb                  d   «       �ŒZe#jJ                  jQ                  d«      Z3e#j^                  jQ                  e)j`                  d   e3jb                  d   «       e#j^                  jQ                  e3j`                  d   e&jb                  d   «       e#j^                  jQ                  e3j`                  d   e&jb                  d    «       �Œ �ŒV d!ejh                  _5        d"ejl                  _7        dejl                  _8        	 ej                   jr                  jt                  d#   jr                  Z;d$e;_<        e;j{                  «        e;j|                  D ]  Z?e?j>                  d%k7  e?_@        Œ d&ejl                  _A        d'ejh                  j„                  _C        d(ejˆ                  _E        dejŒ                  _G        ejŒ                  jD                  jJ                  j‘                  d)«      ZId*eIjb                  d   _J        d+eIjb                  d,   _J        ej$                  j&                  j—                  d-d.¬/«       ej                   j&                  ZLd0eLj.                  _M        d1eLj.                  _N        d2eLj.                  _O        eLj                    j£                  d3d4«      j¥                  «       eL_S        ej$                  j&                  j—                  d-d5¬/«       ej                   j&                  ZTd6eTj.                  _M        d7eTj.                  _O        eTj                    j£                  d3d4«      j¥                  «       eT_S        ej$                  j&                  j—                  d8¬9«       ej                   j&                  ZUd:eU_S        d;eUj.                  _M        d<eUj.                  _V        ej$                  j®                  j±                  d=d>¬?«       ej                   j&                  ZYd@eY_         ej.                  j0                  jQ                  d@«      ZZdeZ_G        dAeZjD                  jJ                  j‘                  dB«      jb                  d   _J        dCeZjD                  jJ                  j‘                  dB«      jb                  d   _J        eYj.                  j0                  j·                  eZ«       ej$                  j&                  j¹                  «        ej                   j&                  Z]e]e_^        dDe]j.                  _        ej.                  j0                  jQ                  dE«      Z_de__G        dFe_jD                  jJ                  j‘                  dB«      jb                  d   _J        dG„ Z`dH„ Zae!jÅ                  «       D ]  Zc eaecd	«       Œ dI„ ZddgdJ„Z4edKz  jË                  d¬L«       dMejÌ                  vrye!jÏ                  «       D ]f  \  Z Zc eaecd«       dNec_P         edecg«      \  ZhZiehjÔ                   ecj                   _j         e4dOe z   dPz   ecge dQk(  rdRndSdT«        eaecd	«       dNec_P        Œh dhdU„Zk ekg dV¢dW«        ekg dX¢dY«        ekg dZ¢d[«        ekg d\¢d]d^«        ekg d_¢d`d¬a«        ekg db¢dcdd«        elded¬f«       yc c} w #  d%ejl                  _A        Y �ŒxY w)izPReimport the delivered GLB and bind external maps; render reproducible QA views.é    N)ÚPath)ÚVectorzmaterials.jsonÚ	materialsÚSELECT)ÚactionF)Ú
use_globalzkit.glb)Úfilepath)ÚMESHÚEMPTYc              #   ó@   K  — | ]  }|j                   d k(  sŒ|–— Œ y­w)ÚBSDF_PRINCIPLEDN©Útype)Ú.0Úns     úrender_kit.pyú	<genexpr>r      s   è ø€ ÒI˜a¨q¯v©vÐ7HÓ/HœÑIùs   ‚—)Ú	BaseColorÚNormalÚORMÚShaderNodeTexImageÚmapsT)Úcheck_existingr   ÚsRGBz	Non-ColorÚREPEATÚColorz
Base Colorr   ÚShaderNodeNormalMapÚShaderNodeSeparateColorÚGreenÚ	RoughnessÚBlueÚMetallicÚCYCLESé    ÚcyclesÚOPTIXÚCPUÚGPUÚPNGÚAgXÚ
Background)gffffffæ?g¤p=
×£è?g…ëQ¸…ë?é   çÍÌÌÌÌÌä?r,   ÚAREA)éüÿÿÿiúÿÿÿé   )r   Úlocationi@  ÚDISKé   ú-ZÚY)r3   é   r3   i   é   ÚSUNr   )gÍÌÌÌÌÌÜ?çš™™™™™Ù¿g      à¿g333333ó?gš™™™™™¹?éd   )r   r   g{®Gáz”¿)Úsizer1   ÚSTUDIO_floor)çáz®GáÚ?ç…ëQ¸…Û?r>   r,   zPrincipled BSDFç333333ë?ÚORTHOÚSTUDIO_clay)r=   r=   r=   r,   c                 ó4   — | gt        | j                  «      z   S ©N)ÚlistÚchildren_recursive)Úobs    r   ÚpartsrG   $   s   € �b�Tœ$˜r×4Ñ4Ó5Ñ5Ð5ó    c                 ó4   — t        | «      D ]
  }| |_        Œ y rC   )rG   Úhide_render)rF   ÚvÚos      r   ÚvisiblerM   %   s   € Ü
�‹)Ò'€Q a %�A•MÑ'rH   c                 óþ  ‡— t         j                  j                  j                  «        | D ���cg c]K  }t	        |«      D ];  }|j
                  dk(  sŒ|j                  D ]  }|j                  t        |«      z  ‘Œ Œ= ŒM }}}}t        t        d«      D �‡cg c]  Št        ˆfd„|D «       «      ‘Œ c}«      t        t        d«      D �‡cg c]  Št        ˆfd„|D «       «      ‘Œ c}«      fS c c}}}w c c}w c c}w )Nr
   r7   c              3   ó(   •K  — | ]	  }|‰   –— Œ y ­wrC   © ©r   rK   Úks     €r   r   zbounds.<locals>.<genexpr>*   s   øè ø€ Ò&˜Q�A�a•DÑ&ùó   ƒc              3   ó(   •K  — | ]	  }|‰   –— Œ y ­wrC   rP   rQ   s     €r   r   zbounds.<locals>.<genexpr>*   s   øè ø€ ÒFYÐPQÀqÈÅtÑFYùrS   )ÚbpyÚcontextÚ
view_layerÚupdaterG   r   Ú	bound_boxÚmatrix_worldr   ÚrangeÚminÚmax)ÚobsrF   rL   ÚcÚptsrR   s        `r   Úboundsra   (   sî   ø€ Ü‡�×Ñ×ÑÔ È÷  &Hð  &HÀ2ÔV[Ð\^ÓV_ò  &HÐQRÐcd×ciÑciÐkqÓcqÐ{|÷  |Gñ  |Gò  &HÐvw a§n¡n´V¸A³YÓ&>ð  &HÐ&>ð  &HÐ&>ð  &H ò  &HÜ´°a³×9¨1”Ó& #Ô&Õ&Ò9Ó:¼6ÔchÐijÓck×BlÐ^_Ä3ÓFYÐUXÔFYÕCYÒBlÓ;mÐmÐmùô &HùÚ9ùÒBls   °"C.Á-C.ÂC5ÃC:
c                 óÐ  — t        |«      \  }}||z   dz  }|t        |«      j                  «       dz  z   t        _        |t        j                  z
  j                  dd«      j                  «       t        _        t        j                  j                  j                  «        t        j                  j                  «       }|D �	�
�cg c]N  }	t        |	«      D ]>  }
|
j                  dk(  sŒ|
j                   D ]  }||
j                  t        |«      z  z  ‘Œ Œ@ ŒP }}
}	}t#        d„ |D «       «      t%        d„ |D «       «      z
  }t#        d„ |D «       «      t%        d	„ |D «       «      z
  }t#        |||d
   z  |d   z  «      dz  t        j&                  _        |d
   t*        j,                  _        |d   t*        j,                  _        dt*        j,                  _        |rt4        nd t*        j6                  d
   _        t;        t<        | z  «      t*        j,                  _        t        j@                  j,                  j-                  d¬«       d t*        j6                  d
   _        y c c}}
}	w )Nç      à?é   r4   r5   r
   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrC   ©Úx©r   Úps     r   r   zrender.<locals>.<genexpr>/   s   è ø€ Ò�ˆ��Ñùó   ‚c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrC   rf   rh   s     r   r   zrender.<locals>.<genexpr>/   s   è ø€ Ò- Q˜QŸS�SÑ-ùrj   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrC   ©Úyrh   s     r   r   zrender.<locals>.<genexpr>/   s   è ø€ Ò4E¸Q°Q·SµSÑ4Eùrj   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrC   rm   rh   s     r   r   zrender.<locals>.<genexpr>/   s   è ø€ ÒIZÐRSÈ!Ï#Í#ÑIZùrj   r   r,   gáz®Gáò?r:   T)Úwrite_still)!ra   r   Ú
normalizedÚcamr1   Úto_track_quatÚto_eulerÚrotation_eulerrU   rV   rW   rX   rZ   ÚinvertedrG   r   rY   r]   r\   ÚdataÚortho_scaleÚsceneÚrenderÚresolution_xÚresolution_yÚresolution_percentageÚclayÚview_layersÚmaterial_overrideÚstrÚROOTr	   Úops)Únamer^   Ú	directionÚresÚclaymodeÚloÚhiÚtargetÚinvrF   rL   r_   ÚppÚwxÚhys                  r   rz   rz   +   s’  € Üˆcƒ{�€€B˜2˜b™5 "™*�6°&¼À	Ó9J×9UÑ9UÓ9WÐXZÑ9ZÑ2Z¤S¤\ÐouÔvy÷  wCñ  wCñ  pC÷  oRñ  oRð  SWð  X[ó  o\÷  oeñ  oeó  ogÔ[^Ô[mä‡�×Ñ×ÑÔ ¤S×%5Ñ%5×%>Ñ%>Ó%@ Ðnq÷  Emð  EmÐhjô  |Að  BDó  |Eò  EmÐvwð  IJ÷  IOñ  IOð  QWó  IWð  ab÷  alñ  alò  Emð  \]ÀSÈ!Ï.É.ÔY_Ð`aÓYbÑJbÓEcð  EmÐEcð  EmÐEcð  EmÀò  EmÜÑ�RÔÓœÑ-¨"Ô-Ó-Ñ-€´Ñ4EÀ"Ô4EÓ1EÄcÑIZÐWYÔIZÓFZÑ1Z¨bÜ˜"˜R  A¡™Y s¨1¡vÑ-Ó.¨tÑ3„‡�ÔØ˜q™6„‡�Ô¸CÀ¹F¤%§,¡,Ô";ÐfiÄ5Ç<Á<ÔCeÙ08­¸d„×Ñ�1ÑÔ'ÔY\Ô]aÐbfÑ]fÓYgÄ5Ç<Á<ÔCXÔhk×hoÑho×hvÑhv×h}Ñh}ð  KOÐh}ô  iPð  x|ô  QV÷  Qbñ  Qbð  cdñ  Qeõ  Qwùô	 Ems   Ã"I!Ã(0I!Úrenders)Úexist_okz--details-only©r   r   r   zrenders/z.pngÚtavern_sign)r?   éÿÿÿÿrc   )çìQ¸…ëÑ?r“   r=   )i0  ià  c                 óÎ  — t         j                  «       D ]  }t        |d«       d|_        Œ d}g }| D ]x  }t         |   }t        |d«       t	        |g«      \  }}	||j
                  z
  d|j                   f|_        ||	j
                  |j
                  z
  dz   z  }|j                  |«       Œz |D ]$  }|j                  xj
                  |dz  z  c_        Œ& t        |||d|«       y )NFr‘   r   TgffffffÖ?r6   )i€  iL  )	ÚmastersÚvaluesrM   r1   ra   rg   ÚzÚappendrz   )
ÚnamesÚfileÚdirÚclrF   rg   r^   r„   rˆ   r‰   s
             r   Úsheetrž   :   sÛ   € Ü�>‰>ÓÒA€RœG B uÔ-¸'¨b­kÐAØ€ˆ€SØò t€TÜˆT�]€"”7˜2˜dÔ#¬&°"°«,¡E B rÀAÀbÇdÁdÁFÈ1ÈbÏdÉdÈUÐCS°r´{ÐTUÐWY×W[ÑW[Ð\^×\`Ñ\`ÑW`ÐadÑWdÑTdÐTUÐeh×eoÑeoÐprÕesðtàÒ!€Rˆr�{‰{�}Š}˜a ™cÑ!Ž}Ð!ÜˆˆS��[ Õ$rH   )Úwindow_leadedÚwindow_leaded_stoneÚwindow_smallÚ
door_plankÚdoor_arched_doubleÚwindow_shopzdetails_joinery.png)Úbrace_storeyÚbrace_straightÚbressummer_1mÚ	joist_endÚjetty_bracketzdetails_timber.png)ÚdormerÚchimney_stoneÚtile_strip_aÚridge_tile_roundzdetails_roof.png)r’   Úlantern_ironÚbarrelÚ
bench_woodzdetails_props.png)r-   r“   gR¸…ëQØ?)r£   rª   r©   rŸ   zclay_check.png)r�   )r    r¢   rª   r’   zreverse_check.png)r9   r,   çš™™™™™Ù?ÚRENDERS_COMPLETE)Úflush))r”   r“   r±   )ix  iè  F))g)\�Âõ(Ì?r“   g{®GázÔ?F)mÚ__doc__rU   ÚmathÚjsonÚsysÚpathlibr   Ú	mathutilsr   Ú__file__ÚresolveÚparentr‚   ÚloadsÚ	read_textÚSHELFrV   ry   rƒ   ÚobjectÚ
select_allÚdeleterD   rw   r   ÚmÚremoveÚimport_sceneÚgltfr�   Úobjectsr   r„   r–   Ú	node_treeÚntÚnextÚnodesÚbsÚkindÚnewÚtexÚimagesÚloadÚimageÚcolorspace_settingsÚ	extensionÚlinksÚoutputsÚinputsr   Úseprz   Úenginer%   ÚsamplesÚuse_denoisingÚpreferencesÚaddonsÚprefsÚcompute_device_typeÚget_devicesÚdevicesÚdÚuseÚdeviceÚimage_settingsÚfile_formatÚview_settingsÚview_transformÚworldÚ	use_nodesÚgetÚbgÚdefault_valueÚ	light_addÚkeyÚenergyÚshaper;   r1   rs   rt   ru   ÚrimÚsunÚangleÚmeshÚprimitive_plane_addÚfloorÚmatr™   Ú
camera_addrr   Úcamerar~   rG   rM   r—   rF   ra   ÚmkdirÚargvÚitemsrˆ   r‰   r˜   rž   Úprint)rL   s   0r   ú<module>rÿ      s˜	  ðÙ Vß × Ý Ý Ù	ˆ(ƒ^×ÑÓ×$Ñ$€Ø€d‡j�j�$Ð'Ñ'×2Ñ2Ó4Ó5°kÑB€Ø	‡k�k×Ñ€˜Ÿ™Ÿ™×1Ñ1¸Ð1ÔBÀ3Ç7Á7Ç>Á>×CXÑCXÐdiÐCXÔCjÙ	ˆc�h‰h× Ñ Ó	!Ò >€A #§(¡(×"4Ñ"4×";Ñ";¸AÕ">Ð >Ø ‡�× Ñ × Ñ ¡3 t¨I¡~Ó#6Ð Ô 7Ø Ÿ=™=Ö\�a¨A¯H©HÑ,<ÀÇÁÐK[ÒA[ˆ�‰�‰Ò\€Ø	�‰×	Ñ	ó 	R€AØ‡F�F�%Ñ˜Ø‡K�K€‘4ÑI 2§8¡8ÔIÓI�Ø)ó R€TØ‡h�h‡l�lÐ'Ó(€#°3·8±8·?±?×3GÑ3GÉÈDÐQVÐWX×W]ÑW]ÑQ^Ð_eÑQfÐgkÑQlÑLlÓHmð  ~BÐ3Gó  4C¨¬ð  quð  wBò  qBñ  gmð  HSð  DG÷  DMñ  DM÷  Dañ  Daô  Dfð  bjð  TWô  TaØ	ˆ;Ò�r—x‘x—|‘| C§K¡K°Ñ$8¸¿¹À<Ñ9PÕQØˆX‚~Ø‡X�X‡\�\Ð'Ó(€1¨¯©¯©°c·k±kÀ'Ñ6JÈ1Ï8É8ÐT[ÑK\Ô)]Ð^`×^fÑ^f×^jÑ^jÐkl×ktÑktÐuvÑkwÐxz÷  yBñ  yBð  CKñ  yLö  _Mà	‡x�x‡|�|Ð-Ó.€3¨r¯x©x¯|©|¸C¿K¹KÈÑ<PÐQT×Q[ÑQ[Ð\]ÑQ^Ô/_Ð`b×`hÑ`h×`lÑ`lÐmp×mxÑmxð  zAñ  nBð  CE÷  CLñ  CLð  MXñ  CYô  aZð  []÷  [cñ  [c÷  [gñ  [gð  hk÷  hsñ  hsð  tzñ  h{ð  |~÷  |Eñ  |Eð  FPñ  |Qö  [RòRð	Rð €‡�Ô °"˜UŸ\™\Ô1ÐPT°U·\±\Ô5Oð!Ø
‡{�{×Ñ×%Ñ% hÑ/×;Ñ;€ÐV]¸EÔ<UÐ^c×^oÑ^oÔ^qØ
�-‰-Ò+€Q˜aŸf™f e™m˜�Ð+Ø€‡�Ôà(-€‡�× Ñ Ô 'ÐQV¨e×.AÑ.AÔ.PØ€‡�Ô ˜eŸk™k×3Ñ3×9Ñ9×=Ñ=¸lÓK˜2ÐgvÈBÏIÉIÐVWÉLÔLfð  SVÐwy÷  xAñ  xAð  BCñ  xDô  xRØ ‡�‡�× Ñ ˜f¨iÐ Ô 8¸S¿[¹[×=OÑ=O¸Ð`dÐPS×PXÑPXÔP_ÐtzÐeh×emÑemÔesð  JKÐ{~÷  |Dñ  |Dô  |Ið  ad÷  amñ  amð  `m÷  _|ñ  _|ð  }Að  BEó  _F÷  _Oñ  _Oó  _Qð  LOô  L^Ø ‡�‡�× Ñ ˜f¨gÐ Ô 6¸3¿;¹;×;MÑ;M°sÐ^aÈcÏhÉhÌoÐpqÐbe×bjÑbjÔboð  HK÷  HTñ  HTð  GT÷  Fcñ  Fcð  dhð  iló  Fm÷  Fvñ  Fvó  FxÐruô  sEØ ‡�‡�× Ñ ˜eÐ Ô $¨¯©×);Ñ); SÈ}¸CÔ<NÐmpÐ]`×]eÑ]eÔ]lð  ADÐqt×qyÑqyÔqØ ‡�‡�×  Ñ   c°:Ð  Ô >ÀSÇ[Á[×EWÑEW¸uÐcqÐX]ÔXbØ‡H�H×Ñ×Ñ˜>Ó*€¸¨3¬=ð  M\¸c¿m¹m×>QÑ>Q×>UÑ>UÐVgÓ>h×>oÑ>oÐp|Ñ>}ô  ?Lð  jmð  ]`÷  ]jñ  ]j÷  ]pñ  ]p÷  ]tñ  ]tð  uFó  ]G÷  ]Nñ  ]Nð  OZñ  ][ô  ]ið  ns÷  nxñ  nx÷  nBñ  nB÷  nIñ  nIð  JMô  nNØ ‡�‡�× Ñ Ô  §¡× 2Ñ 2˜CÀ°5´<ÐRYÀCÇHÁHÄMØ‡X�X×Ñ×Ñ˜MÓ*€¸$¨4¬>ð  O^¸t¿~¹~×?SÑ?S×?WÑ?WÐXiÓ?j×?qÑ?qÐr~Ñ?ô  @NÚ 5ò(à
�.‰.Ó
Ò ,€B™7 2 eÕ,Ð ,ònó|ð €i�× Ñ  Ð Ô %Ø˜3Ÿ8™8Ñ#Ø—‘“ò (�W€Tˆ"Ù	ˆ"ˆTÔ˜w�2”;©V°R°D«\¡u r¨"ÈÏÉÈ¸"¿+¹+¼-Ùˆ�D‰˜Ñ	  °T¸=Ò5H¡\ÈlÐ[dÔeÙ	ˆ"ˆUÔ �B•Kð(ó
%ñ Òlð  nCô  DÙ ÒSÐThÔ iÙ ÒBÐCUÔ VÙ Ò:Ð;NÈ|Ô \Ù ÒEÐFVÐZ^Õ _Ù ÒAÐBUÐVbÔ cÙ Ð˜tÖ $ùò{ 	]øð  !˜5€u‡|�|×ús   Å
fÅfÅ+fÐA:f æf/