@@ -179,15 +179,16 @@ def export_pmxtailor_setting(self, model: PmxModel, setting_dir_path: str):
179179 bone_name = model .bone_indexes .get (bone_idx , None )
180180 for material_name , vidxs in model .material_vertices .items ():
181181 # 一定以上ウェイトが乗っている場合のみ対象とする
182- if [
182+ weighted_vidxs = [
183183 vidx
184184 for vidx in list (set (vidxs ) & set (bone_vidxs ))
185185 if bone_idx in model .vertex_dict [vidx ].deform .get_idx_list (0.3 )
186- ]:
186+ ]
187+ if weighted_vidxs :
187188 if bone_name not in bone_materials :
188189 bone_materials [bone_name ] = []
189190 if material_name not in bone_materials [bone_name ]:
190- bone_materials [bone_name ].append (material_name )
191+ bone_materials [bone_name ].append (( len ( weighted_vidxs ), material_name ) )
191192
192193 if material_name not in material_bones :
193194 material_bones [material_name ] = []
@@ -310,7 +311,7 @@ def export_pmxtailor_setting(self, model: PmxModel, setting_dir_path: str):
310311
311312 weighted_material_name = None
312313 for target_name in target_names :
313- for material_name in bone_materials .get (bone .name , []):
314+ for _ , material_name in reversed ( sorted ( bone_materials .get (bone .name , [])) ):
314315 if target_name in material_name :
315316 weighted_material_name = model .materials [material_name ].name
316317 break
@@ -347,7 +348,7 @@ def export_pmxtailor_setting(self, model: PmxModel, setting_dir_path: str):
347348 long_cnt = 1
348349
349350 for bname , hbones in hair_bones .items ():
350- material_name = bone_materials .get (hbones [0 ], ["" ] )[0 ]
351+ _ , material_name = list ( reversed ( sorted ( bone_materials .get (hbones [0 ], ["" , "" ]))) )[0 ]
351352 material_name = model .materials [material_name ].name if material_name else None
352353 if len (hbones ) > 1 and (model .bones [hbones [0 ]].position - model .bones [hbones [1 ]].position ).y () < 0 :
353354 if (HAIR_AHOGE , material_name ) not in pmx_tailor_settings :
0 commit comments