Удалите неиспользуемые материалы из сеток 3DS-Max.

У меня довольно большая 3DS-сцена с множеством отдельных сеток - пару тысяч. Каждая сетка должна использовать только один материал, то есть все треугольники в этой сетке используют один и тот же материал, назначенный сетке. Похоже, что это так, но у нас есть много случаев, когда есть также несколько субматериалов, назначенных сетке, которые фактически не используются в этой сетке.

Это нормально в 3DS, но мы экспортируем нашу сцену для использования в 3D-движке в реальном времени, и это портит экспорт... поэтому я подумал, могу ли я написать сценарий, который действует как на всю сцену, так и на выбранные в данный момент сетки и удалит все [суб]-материалы из каждой сетки, которые не используются.

Я не художник, я надеюсь, что это имело смысл, и я понял всю мою терминологию правильно.

2 ответа

Решение

Как мы узнаем, какой материал является правильным из материала MultiSB? Если это всегда только первый материал, вы можете сделать что-то вроде

-- walk over all geometry find which has multiSub and apply first material
for o in geometry where isKindOf o.material multimaterial do o.material = o.material.material1

Edit1: Если мы предположим, что лицо 1 является ведущим для материала ID, мы можем сделать

-- walk over all geometry find which has multiSub and apply first material
for o in selection where isKindOf o.material multimaterial do 
(
    -- Get face material ID from face 1
    local id = getFaceMatID o.Mesh 1
    -- Assign that material
    o.material = o.material[id]
)

Попробуйте это:

for i in 1 to meditMaterials.count where (MeditUtilities.isMaterialInUse meditMaterials[i] == false) do meditMaterials[i] = Standard()
ATSOps.Refresh()
freeSceneBitmaps()

Или вы также можете обнаружить текстуры на модификаторах, как это:

modTexMaps = #()
for obj in geometry where obj.modifiers.count != 0 do
(
for m = 1 to obj.modifiers.count do
(
    for p in (getpropnames obj.modifiers[m]) \
    where isKindOf (tex = getproperty obj.modifiers[m] p) texturemap do 
    (
        append modTexMaps tex
    )
)
)
modTexMaps
Другие вопросы по тегам