Макроскрипт для фасок в 3DS Max

В одном из прошлых постов я ругал Autodesk за баг в их модификаторе Chamfer - он задавал исправленные нормали для фасок на предпросмотре, но при сохранении терял эту информацию. Так вот, поскольку ошибку они так и не исправили, пришлось решать проблему своими силами)

Сразу уточню, что вникал в maxscript методом научного тыка, и скорее всего это тот еще быдлокод =)


Представляю вашему вниманию простенький макрос, объединяющий в себе упомянутый в том же посте Noors Simple Average Normals с модификатором Chamfer: WeightedChamfer (редактируется простым блокнотом или Notepad++)

https://yadi.sk/d/bcZGG1ok7DSMcA

Макроскрипт для фасок в 3DS Max Cgimedia, 3D моделирование, 3ds Max, Гифка

Вот что он делает:

1. Кнопка AddChamfer добавляет модификатор с заранее заданными параметрами - он влияет на все "харды".Для последующего выделения полигонов фасок им назначается 50-й id материала.

2. При нажатии Collapse модель конвертируется в Edit Poly, и нормали ломаются как и раньше. После этого происходит выделение всех фасок по material id, им назначается одна группа сглаживания, после инвертируется выделение и "жестким" граням задается другая группа сглаживания. Затем в ход идет ранее упомянутый скрипт, для которого заданы все необходимые входные данные.

Для пользователя происходящее незаметно, т.к. происходит слишком быстро, и мы просто получаем готовый результат)


Из минусов сразу хочу заметить, что данный скрипт "портит" material id полигонов, т.к. ему необходим признак, по которому он будет проводить выделение. В любом случае, при задании фасок на моделях с несколькими материалами происходит подобный баг, как минимум на стыках.


Кроме того, в зависимости от параметров единиц измерения возможно несоответствие значения в поле "Chamfer size". В моем случае исправляет это костыль под конец скрипта, если у вас тоже имеется несовпадение - менять делитель тут:

$.modifiers[#Chamfer].amount = Size.value/5

Буду рад, если подскажете более изящное решение проблемы.


***


Для установки разместите его по пути

C:\Users\<имя пользователя>\AppData\Local\Autodesk\3dsMax\<используемая версия>\ENU\usermacros

Затем в самом 3DS Max зайдите в

Customize User Intrface, во вкладке Category выберите Pikabu-Tools (ничего оригинальнее не придумалось:D ) и смело назначайте горячие клавиши для его вызова.

CGI Media

3K постов6.5K подписчиков

Правила сообщества

• Посты должны соответствовать тематике cообщества.

• Не допускается спам и нарушение правил сайта pikabu.