Итак, я не буду объяснять, что это вообще за скрипты и для чего они. Я думаю опытные пользователи и так все знают.
Правка #1:Возможность вынести кнопку Add shader def из свитка Utilities на рабочую область в виде отдельной кнопки с возможностью назначения на нее горячей клавиши
Собственно, в чем заключается смысл данного "апгрейда". После установки скриптов, в панели Utilities рабочей области 3Ds Max появляется вот такой спойлер:
Нас интересует кнопка Add shader def. С ее помощью на уже назначенную текстуру в Material Editor можно поставить материалы, понятные движку XRay. Выглядит это таким образом:
Я пользуюсь этим инструментом уже довольно давно, это действительно удобно, можно не тратить время на назначение материалов через SDK, но... меня начало бесить некоторое количество манипуляций, потому что добираться до этой кнопки - есть трата дополнительного времени. И я упростил задачу, вынеся эту утилиту на отдельную кнопку (которой, кстати, можно назначить горячую клавишу).
1. Качаем файл и закидываем его в корневую папку 3Ds Max, папка sctrips, далее Startup.
2. Запускаем 3Ds Max. Из папки Startup скрипты, по сути, запускаются сразу с запуском программы, но подстрахуемся. В рабочей области программы выбираем MAXScript/Run Script, заходим в папку Startup и запускаем наш файл с названием xrShader_by_Khyzyr. Ничего не должно произойти.
Теперь выдернем наш скрипт на отдельную кнопку в рабочей области. Для своего собственного удобства, я создал отдельный слой, на который размещаю все подобные инструменты. На примере этого и объясняю.
1. В рабочей области 3Ds Max нажимаем Customize/Customize User Interface.
2. Переходим во кладку Toolbars, нажимаем кнопку New, задаем любое имя и жмем ОК.
3. На экране появляется новый тулбар, который можно "прилепить" к любому месту на рабочей области. У меня это место слева. Прилепили.
4. Не закрывая вкладки Toolbars, слева находим спойлер Category, раскрываем его и в самом низу находим ругательство xrShader. Внутри него один Action, называемый XR. Хватаем его и переносим на наш тулбар, созданный в третьем пункте. Выглядить это будет примерно так:
Чтобы кнопка не занимала такое большое пространство, ей можно задать иконку. Для этого нажимаем по ней ПКМ, в окошке жмем Edit Button Appearance, внутри которого выбираем Image Button. Там можно поискать любую понравившуюся иконку.
Каждая из имеющихся там иконок является динамической: если скрипт работает - иконка цветная, не работает - соответственно, черно-белая. В итоге это все выглядит так
Для любителей кода. Код скрипта выглядит таким образом:
( Mtl = medit.getcurmtl() if classof Mtl != Multimaterial then Mtl = #(Mtl) for m in Mtl where classof m == Standardmaterial do if not (xrToolsUtil.HasShadersCA m) then custAttributes.add m xrShadersDataCA )
fn HasShadersCA Mtl = ----------------------------------------------------------------------------- ( if Mtl != undefined then ( local i, ca
for i = 1 to (custAttributes.count Mtl) do ( ca = custAttributes.get Mtl i if ca.name == "xrShadersData" then return true ) ) return false )
macroScript shader- название макро-скрипта category:"xrShader"- категория в кастомайзе toolTip:"XR"- название кнопки Mtl = medit.getcurmtl- параметр, назначающий материалы fn HasShadersCA Mtl =- функция, определяющая для параметра getcurmtl атрибуты. Атрибуты читаются из файла скрипта xrTools.CAMtl.
Правка #2:Убирает кнопку Add shader def из свитка Utilities. Дает возможность автоматизированного подключения свитка xray_shader_params во всех материалах области Material Editor !К использованию не рекомендую, проблема описана в этом посте!
Здесь много объяснять не придется, по скриншоту все будет более чем понятно
Теперь не нужно нажимать никаких лишних кнопок. С запуском программы свиток xray_shader_params уже будет находиться во всех стандартных материалах и автоматически добавляться в новые.
Любителям кода:
Код
fn OnMtl = ( local mtl = callbacks.notificationParam() format "mtlRefAdded: %\n" mtl if isKindOf mtl material do ( Mtl = medit.getcurmtl() if classof Mtl != Multimaterial then Mtl = #(Mtl) for m in Mtl where classof m == Standardmaterial do if not (HasShadersCA m) then custAttributes.add m xrShadersDataCA ) ) callbacks.removeScripts #mtlRefAdded id:#xxx callbacks.addScript #mtlRefAdded "OnMtl()" id:#xxx
Это сама функция. Все что выше в самом скрипте - оригинальные строки кода от Dan-Stash. Поначалу была идея не загромождать скрипт и сделать просто выноски в коде на соседние файлы, но это сказалось на оптимизации.
1. Поместить папку Startup в папку scripts в корне 3Ds Max
2. В папке xray_tools два файла: xrTools.gui_bak(29.042019) - оригинал от 29.04.2019 года на случай каких-либо проблем; xrTools.gui - моя правка. Поместить папку в папку scripts в корне 3Ds Max
При создании сборки использовались следующие работы и авторы:
Упростить можно еще много чего, но мне нужны идеи. Если кто-то захочет - предлагайте, все идеи обсудим, скажу что можно сделать, а что нет или можно, но не имеется смысла.
Сообщение отредактировал Khyzyr - Пятница, 13.03.2020, 13:19
Добавлено (17.02.2020, 19:49) --------------------------------------------- Хотя не надо. Что-то не очень то и похоже, на самые последние скрипты: Сравни сам, из твоего пакета слева.
Сообщение отредактировал WolfHeart - Понедельник, 17.02.2020, 20:03
У тебя, судя по всему пакет X-Ray max Tools (2014-august) + скрипт xray_invalid_model_check, а ведь были еще пакеты: X-Ray tools(2014-september); X-Ray tools(2014-november); max_scripts_update; X-Ray tools(2016-august) - unofficial; X-Ray_3Ds_Max_tools_2016_R1; X-Ray tools(2017-august) - unofficial. Пакеты эти, кроме первых двух (они были выложены самим Ден Сташем), были выложены разными людьми с различными правками. И они отличались по содержимому. Я собрал все самое новое в один пакет при помощи WinMerge, вроде все работает, но полной уверенности нет (в скриптах я не шарю).
ЦитатаKhyzyr ()
Если кто-то захочет - предлагайте, все идеи обсудим, скажу что можно сделать, а что нет или можно, но не имеется смысла.
Было бы не плохо если бы ты, если шаришь в скриптах, проверил все ли я корректно собрал, ну или собрал бы сам. Все перечисленные пакеты могу предоставить.
Сообщение отредактировал WolfHeart - Понедельник, 17.02.2020, 20:43
Да у меня все залито xray_3dsmax_tools от DenStash Добавил только свою сборку (солянку ), она называется X-Ray tools(28.04.2019)My - unofficial в папке "Дополненые от других авторов". Думаю разберешся.
Сообщение отредактировал WolfHeart - Понедельник, 17.02.2020, 21:01
Извини что вчера не смог проверить, а только сегодня. Но честно говоря, не понял назначения кнопки? Точнее не понятно для чего она вообще нужна? Получается так, что она нужна только для того, что-бы один раз за сессию запустить скрипт и все, отключить кнопкой скрипт нельзя. Да и зачем его отключать? Не лучше ли сделать авто-запуск скрипта при запуске Макса? Что-бы при открытии Материал эдитор, xray shader params уже присутствовал в нем ведь все равно до закрытия Макса его из материал эдитора не убрать. Так зачем тогда кнопка?
ЦитатаKhyzyr ()
Кидай, значит я упустил этот момент. Посмотрю.
Ну как, смотрел?
Сообщение отредактировал WolfHeart - Среда, 19.02.2020, 20:27
Для быстрого доступа. По-умолчанию она располагается во кладке утилит и называется Add shader def. Я лишь сделал возможным перенести ее на рабочую область чтобы далеко лазать не приходилось.
Цитата
Что-бы при открытии Материал эдитор, xray shader params уже присутствовал в нем
Могу покопаться. Это будет вполне себе нормально. Не додумался сразу. За идею спасибо.
Цитата
Ну как, смотрел?
Смотрел, ошибок я никаких не заметил - более чем рабочая сборка. Закину ее в шапку.
Для быстрого доступа. По-умолчанию она располагается во кладке утилит и называется Add shader def. Я лишь сделал возможным перенести ее на рабочую область чтобы далеко лазать не приходилось.
Да это я понял и тут однозначно, с твоей правкой удобней. Я имел ввиду, что не понимаю зачем для этого скрипта вообще нужна какая то кнопка, что идеально было бы скрипт определить в авто-запуск.
ЦитатаKhyzyr ()
Не додумался сразу
Ты не одинок, Ден Сташ то-же об этом видать не подумал.
ЦитатаKhyzyr ()
более чем рабочая сборка. Закину ее в шапку.
Ок! Только, я вот подумал, если у тебя получится Add shader def определить в авто-запуск, может тогда стоит и убрать его кнопку с панели инструментов. А то будет висеть там без толку, только место занимать.
WolfHeart, ок, я тоже об этом подумал. Как реализую - обновлю темку. В принципе, есть идея как это сделать - надо лишь понять какие строчки прописать для стартапа.
В принципе, есть идея как это сделать - надо лишь понять какие строчки прописать для стартапа.
Отлично. Успехов тебе.
ЦитатаKhyzyr ()
Как реализую - обновлю темку.
И за одно, будешь сборку обновлять, убери с названия мой ник, а то мне как то не удобно. Моя заслуга минимальна, собрал "солянку" из разных версий и правок и только. Я поищу авторов скриптов и правок, нужно будет добавить файлик с указанием авторов скриптов которые использовались в этой сборке. Так будет правильней.
Сообщение отредактировал WolfHeart - Среда, 19.02.2020, 23:02