Je veux supprimer tous les objets dupliqués d'une scène, je veux trouver les doublons en comparant le polycount de tous les objets.Supprimer les doublons (même polycount) Maxscript
Lorsque j'ai trouvé le polycount de chaque objet, je veux regrouper tous les objets ayant le même polycount et supprimer tous sauf un d'entre eux. Devrait être simple, j'ai du mal à construire un tableau avec tous les objets en double si ...
Mon code ne génère aucune erreur mais n'ajoute aucun objet au tableau # (duplicata). Mon code détermine le polycount pour tous les objets et le place dans le tableau objs_info.
-- Remove object duplicates
clearselection()
select geometry
deselect helpers
objs = selection as array
objS_info = #()
objS_info2 = #()
dups = #()
for obj in objs do(
obj_info = #()
obj_dups = #()
ConvertTo obj Editable_Poly
PolyCount_src = polyop.getNumFaces obj
--resetxform obj ; maxOps.CollapseNodeTo obj 1 true --reset Xform + collapse stack
delta_x_src = ((-1 * obj.min.x) + obj.max.x)
delta_z_src = ((-1 * obj.min.z) + obj.max.z)
append obj_info PolyCount_src
delta_ratio_src = delta_x_src/delta_z_src
for i in 1 to objs.count do(
obj_dups = #()
if objs[i] != obj do(
ConvertTo obj Editable_Poly
PolyCount = polyop.getNumFaces obj
--resetxform obj ; maxOps.CollapseNodeTo obj 1 true --reset Xform + collapse stack
delta_x = ((-1 * obj.min.x) + obj.max.x)
delta_z = ((-1 * obj.min.z) + obj.max.z)
delta_ratio = delta_x/delta_z
if(delta_ratio == delta_ratio_src and PolyCount == PolyCount_src) do(
append obj_dups objs[i]
)
)
)
append dups obj_dups
)
format "dups = % \n " obj_dups
Toute aide sera grandement appréciée, merci!
Merci beaucoup pour votre réponse! Je suis d'accord que la comparaison des flotteurs est assez risqué (je ne pensais pas à ce sujet avant de lire votre réponse). vertex comparaison count serait une meilleure option (puisque le nombre de vertex est une valeur entière), essayera et modifiera votre script pour comparer aussi le nombre de vertex des objs – Maarten
J'ai réussi à modifier le script de telle sorte qu'il vérifie si les deux polycount et vertcount sont égaux :) – Maarten