0g]0ddlZddlmZddlZddlZddlmZdZddejde fd Z dejfd Z dejfd Z dej fd Zd Zdeejej eefdejfdZGddZGddZGddZdS)N)Union)Latent2MeshOutputc|drtj|}n(tj}|||S)Nz.glb)endswithtrimeshload pymeshlabMeshSet load_new_mesh)pathmeshs b/apdcephfs_cq8/share_1367250/huiwenshi/repos/Hunyuan3D-2-spaces/hy3dgen/shapegen/postprocessors.py load_meshr"sN }}V!|D!! "" 4   K@ r max_facenumc @|d|dddddd|S)N(meshing_decimation_quadric_edge_collapseg?T) targetfacenum qualitythrpreserveboundaryboundaryweightpreservenormalpreservetopology autoclean apply_filter)rrs r reduce_facer +s>2!    Krc|dd|dd|d|S)N;compute_selection_by_small_disconnected_components_per_faceg{Gzt?) nbfaceratio)compute_selection_transfer_face_to_vertexF) inclusive*meshing_remove_selected_vertices_and_facesr)rs rremove_floaterr'9sYS"')))AUSSSBCCC Krctjdd5}||jt j|j}dddn #1swxYwYt |tjrRt j}|j D]#}tj ||g}$|}|SN.plyTsuffixdelete) tempfileNamedTemporaryFilesave_current_meshnamerr isinstanceSceneTrimeshgeometryvaluesutil concatenate)r temp_file combined_meshgeoms rpymeshlab2trimeshr<As  $F4 @ @ @,I y~...|IN++,,,,,,,,,,,,,,,$ &&)) M((** L LD#L44mT5JKKMM Ks4AAActjdd5}t|tjjr*** + + + + + + + + + + + + + + + KsB#CC  C cVt|tjr|}nt|trgt}||_||_|}nt|}|SN) r2r r r current_mesh vertex_matrixmesh_v face_matrixmesh_fr<)inputoutputrs r export_meshrN^s%*++) E, - -)"$$++--;;== ++--99;;  (( Krreturnct|trt|}n^t|trIt j}t j|j|j}| |dt|tj tj j frt|}|S)N)rHrJconverted_mesh)r2strrrr r MeshrIrKadd_meshrr4r>r3rD)rmesh_pymeshlabs r import_meshrVks$8 D+ , ,8 """dkt{[[[ n&6777$'-*=>??' && Krc reZdZ ddeejejee fde deejejffdZ dS) FaceReducer@rrrOcft|}t||}t||}|S)N)r)rVr rN)selfrrmss r__call__zFaceReducer.__call__zs7     5 5 54$$ rN)rY) __name__ __module__ __qualname__rr r rr4rrRintr]rrrXrXysq!I%w8I3NO y '/1 2 rrXcleZdZdeejejee fdeejejeffdZ dS)FloaterRemoverrrOcbt|}t|}t||}|SrF)rVr'rN)r[rr\s rr]zFloaterRemover.__call__s2   B  4$$ rN r^r_r`rr r rr4rrRr]rbrrrdrds`I%w8I3NO y '/3DD ErrdcleZdZdeejejee fdeejejeffdZ dS)DegenerateFaceRemoverrrOc.t|}tjdd5}||jt j}||jdddn #1swxYwYt||}|Sr)) rVr.r/r0r1r r r rN)r[rr\r9s rr]zDegenerateFaceRemover.__call__s    (t D D D -   0 0 0"$$B   Y^ , , , - - - - - - - - - - - - - - - 4$$ sAA::A>A>Nrfrbrrrhrhs` I%w8I3NO  y '/3DD E      rrh)r)r.typingrr r models.vaerrr rar r'r<r4rDrNrRrVrXrdrhrbrrrls2))))))  i' c    * I-     GO        eI-w@QSVVW \e\m                      r