
    ^j                        d Z ddlmZ ddlZddlZddlmZ ddlZ	ddl
Z
ddlmZ d
ddZedk(  r* e eej                   d   ej                   d	                yy)u  Colored GLB straight from the parts — no fuse, no STEP, ~seconds.

The STEP->GLB pipeline drops Compound child colors (the original grey-render
bug, resurfaced in 3D as all-gold-on-black). This exporter tessellates
gen_parts() directly: every part keeps its color as a PBR material and its
node is named stone-N / metal-N / support-N so the viewer can assign real
materials (tinted refractive stones, colored metals).

  .cad-venv/bin/python -m ringcli.glb <generator.py> <out.glb>
    )annotationsN)Path)is_metalc           	     ~   t        |       }t        j                  j                  d|      }t        j                  j	                  |      }t
        j                  j                  dt        |j                               |j                  j                  |       |j                         }t        j                         }t        |      D ][  \  }}	|	j!                  |      \  }
}t#        j$                  |
D cg c]%  }|j&                  |j(                  |j*                  f' c}      }t#        j$                  |t"        j,                        }t/        |      st        j0                  ||d      }|j2                  }t5        |	dd       }t7        |rt9        |      d d nd      d	gz   }t        j:                  j=                  t        j:                  j>                  jA                  |d	d
            |_        tC        |	      rdnd}|jE                  || d| | d|        ^ |jG                  |       |S c c}w )Ngen_modr   )dtypeF)processcolor   )ffffff?r   r   g      ?g333333?)baseColorFactormetallicFactorroughnessFactor)materialmetalstone-)	node_name	geom_name)$r   	importlibutilspec_from_file_locationmodule_from_specsyspathinsertstrparentloaderexec_module	gen_partstrimeshScene	enumerate
tessellatenparrayXYZint64lenTrimeshvertex_normalsgetattrlisttuplevisualTextureVisualsr   PBRMaterialr   add_geometryexport)gen_pathout_glbtolgenspecmodpartssceneipvertsfacesqvfm_crgbakinds                       /opt/ringagent/ringcli/glb.pyexport_parts_glbrL      s   
x.C>>11)SAD
..
)
)$
/CHHOOAs3::'KKC MMOEMMOE%  P1||C(uHHu5!qssACCo56HHU"((+1vOOAq%0Aw%AE!HRaL?;seC>>00^^,,88 $"C 9 9 1 : #1+w714&!D61#O!P" 
LLN! 6s   6*H:
__main__      )g{Gz?)r7   r   r8   r   r9   floatreturnr   )__doc__
__future__r   importlib.utilr   r   pathlibr   numpyr&   r"   ringcli.partsr   rL   __name__printargv     rK   <module>r]      sU   	 #  
    "< z	
388A;
45 r\   