Перейти к содержанию
justrainy

[3Ds Max] Апгрейд скриптов Dan-Stash

Рекомендуемые сообщения

 

xray-tools-logo.png

Автор скриптов - Dan-Stash
Правки от 20.02.2020 - justrainy (Khyzyr
Версия Release 1 от 2016 - SkyLoaderScarabay; сборка пака - Stalker_Alex333

 

Ссылки на скачивание:

  • Финальные версии скриптов (ред. WolfHeart от 20.01.2022) - скачать
  • Мои правки от 20.02.2020 - скачать
  • Архив со всем, что есть в данный момент, включая видео - ссылка
  • Гугл диск (все, что есть, включая видео) - ссылка

Правка #1: Возможность вынести кнопку Add shader def из свитка Utilities на рабочую область в виде отдельной кнопки с возможностью назначения на нее горячей клавиши

Спойлер

Собственно, в чем заключается смысл данного "апгрейда". После установки скриптов, в панели Utilities рабочей области 3Ds Max появляется вот такой спойлер:

xvcWsonf.png?download=1


Нас интересует кнопка Add shader def. С ее помощью на уже назначенную текстуру в Material Editor можно поставить материалы, понятные движку XRay. Выглядит это таким образом:

0vPn1efM.png?download=1

Я пользуюсь этим инструментом уже довольно давно, это действительно удобно, можно не тратить время на назначение материалов через 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. Хватаем его и переносим на наш тулбар, созданный в третьем пункте. Выглядить это будет примерно так:

tgJatYzx.png?download=1

Чтобы кнопка не занимала такое большое пространство, ей можно задать иконку. Для этого нажимаем по ней ПКМ, в окошке жмем Edit Button Appearance, внутри которого выбираем Image Button. Там можно поискать любую понравившуюся иконку.

PXm4Y8Lw.png?download=1KK7B0ZX7.png?download=1

Каждая из имеющихся там иконок является динамической: если скрипт работает - иконка цветная, не работает - соответственно, черно-белая.
В итоге это все выглядит так

41VimwpS.png?download=1
 

Для любителей кода. Код скрипта выглядит таким образом:


macroScript shader
    category:"xrShader"
    toolTip:"XR"

(    
      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. К использованию не рекомендую, проблема описана в этом посте!

Спойлер

Здесь много объяснять не придется, по скриншоту все будет более чем понятно

jNHILP75.png?download=1

Теперь не нужно нажимать никаких лишних кнопок. С запуском программы свиток 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

При создании сборки использовались следующие работы и авторы:

Спойлер

X-Ray tools(2014-november)
Автор: den-stash
Источник


X-Ray tools(2016-august) - unofficial
Автор: Якобы den-stash, выложил Scarabay
Источник


X-Ray_3Ds_Max_tools_2016_R1:
Автор: den-stash
Обновления и дополнения: ScarabaySkyLoader
Компиляция в единый пакет: Stalker_AleX333 aka Silver Raven
Источник


X-Ray tools(2017-august) - unofficial
Автор: 1_A aka Virus_UA
Источник


max_scripts_update
Автор: SkyLoader
Источник


Если кого не упомянул, то это только по незнанию, за что прошу меня простить.
Тут приведены оригинальные (авторские) ссылки на пакеты скриптов. Если вдруг ссылки на них, со временем "умрут", то найти интересующий вас пакет, можно на моем ЯД:
xray_3dsmax_tools от DenStash
WolfHeart
08/03/2020


Полезные скрипты:
resetObjState - возвращает XForm, центрирует Pivot, показывает истинное "лицо" нормали объекта

  • Установка: кидаем куда угодно, запускаем из макса через Run script, заходим в Customize User Interface > mainUI и ищем там его в виде шахматной доски. Переносится на любой из тулбаров рабочей области и работает нажатием мыши. Можно создать для него отдельный тулбар, как это делаю я, и пришить его куда хочется.
Изменено пользователем justrainy
  • Лайк 1
  • Мастер! 2
  • Спасибо 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Мне кажется лучше дополнить для неопытных, опытные сами уже разобрались во всем, а вот неопытные, у которых дикий пробел будут дико благодарны. Я например из таких. Помню что-то там у ДэнСташа и даже на диски качал в 2013 его туторы, но сейчас понятие не имею от чего сплясать читая пост.

  • Мастер! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
20 минут назад, Pepel сказал:

Помню что-то там у ДэнСташа и даже на диски качал в 2013 его туторы, но сейчас понятие не имею от чего сплясать читая пост.

Den Stash по какой-то причине удалил свои видео уроки с Ютуба. Но есть перезаливы:
Канал Scarabay

Канал Юрий Караванов

А так-же можно скачать полный сборник видеоинструкций + файлы для анимации с мого Я.Д.: Den Stash видео инструкции

  • Лайк 1

EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

а добавить возможность импортировать сразу несколько объектов есть или можно добавить такое, ну типа открываешь через кнопу Import Object а там Import Model а когда открывается окно с выбором object файла то чтоб не по 1 выбирать а сразу чтоб можно было выделить несколько файлов и чтоб оно за раз импортировало несколько а не по 1 тыкать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, Reign_of_Monolith сказал:

а добавить возможность импортировать сразу несколько объектов есть или можно добавить такое,

А посмотреть видеоуроки можно? Или это нужно добавить в "мозги". sarcastic.gif

Такая возможность есть изначально, надо тольо поставить "галку" на batch import.

1.png


EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
5 часов назад, WolfHeart сказал:

А посмотреть видеоуроки можно? Или это нужно добавить в "мозги". sarcastic.gif

Такая возможность есть изначально, надо тольо поставить "галку" на batch import.

1.png

спасибо, протупил, мой косяк, нет оправданий

  • Жму руку 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Пропал я, так бы может что-то дописал бы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Всем приветики! Если кто-то еще плагинами занимается, вот примеры *.object, на которых валится импорт в 3dmax:

https://disk.yandex.ru/d/3ryEnDnRm6-wdQ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

macron очень хороший вопрос - а каким образом были получены эти обжекты?


Boomsticks & Sharpsticks: https://discord.gg/vThnFWrbaA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
7 минут назад, mortan сказал:

очень хороший вопрос - а каким образом были получены эти обжекты?

Полагаю, HellRatz с amk грабил гташку чем-то...
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

macron  ну, насчёт корректности загрузки не уверен https://dropmefiles.com/HWa9B

  • Мастер! 2

Boomsticks & Sharpsticks: https://discord.gg/vThnFWrbaA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Спасибо, поперло!  Жаль не нашел этой темы летом, пришлось изобретать свои методы обхода с бубном и последующим восстановлением настроек материалов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
8 минут назад, macron сказал:

пришлось изобретать свои методы обхода с бубном и последующим восстановлением настроек материалов.

macron так они и со старым xrTools.ObjectImport.ms загружались, только скрипт вылетал и дальнейшей загрузки при batch import не было. Но их можно было загрузить отдельно после загрузки остальных. Немного больше возни, но возможно.

Изменено пользователем WolfHeart

EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
Только что, WolfHeart сказал:

так они и со старым xrTools.ObjectImport.ms загружались,

По моему, там текстуры не грузились или объект загружался единым целым, в общем неудобоваримо выходило.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 минуту назад, macron сказал:

По моему, там текстуры не грузились или объект загружался единым целым, в общем неудобоваримо выходило.

Понятно. Ну этот момент с тем что ты предоставил, проверить нельзя. ?

В любом случае mortan респект! Проблемой меньше.


EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, macron сказал:

Спасибо, поперло!  Жаль не нашел этой темы летом, пришлось изобретать свои методы обхода с бубном и последующим восстановлением настроек материалов.

А модели-то корректно грузит? Так-то без фикса по идее дальше этого момента скрипт просто не отрабатывал.


Boomsticks & Sharpsticks: https://discord.gg/vThnFWrbaA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
11 минут назад, mortan сказал:

Так-то без фикса по идее дальше этого момента скрипт просто не отрабатывал.

mortan Было когда-то видео от Дена и он там что-то расказывал про это, но тогда я на это не обратил внимание, а теперь думаю, что он так специально сделал, но вот для чего конкретно не скажу.


EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
2 минуты назад, WolfHeart сказал:

mortan Было когда-то видео от Дена и он там что-то расказывал про это, но тогда я на это не обратил внимание, а теперь думаю, что он так специально сделал, но вот для чего конкретно не скажу.

Эээ вообще-то это стандартное поведение любого скрипта для 3д макса - он перестаёт выполнятся дальше при краше. Вроде бы это можно обойти при помощи конструктов try catch но не помню есть ли они в макс скриптах.


Boomsticks & Sharpsticks: https://discord.gg/vThnFWrbaA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Да я не совсем об этом. Я о том, что возможно Ден умышлено делал креш скрипта если он натыкался на определенный объект (поломанный). Но в то-же время, скрипт его загружал и только поле этого крешился. Для того чтобы этот объект можно было отловить. Может я и ошибаюсь, может все и не так.


EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

WolfHeart точно нет, просто для скрипта ожидается строгое поведение, тем более сдк этот объект открывает без крашей.


Boomsticks & Sharpsticks: https://discord.gg/vThnFWrbaA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 минуту назад, mortan сказал:

тем более сдк этот объект открывает без крашей.

Ну вообще-то да.


EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
7 часов назад, WolfHeart сказал:

Понятно. Ну этот момент с тем что ты предоставил, проверить нельзя.

Проверил  292_bridgeroadsub03.object  со старым плагином. После закрытия ошибки объект импортировался, но все материалы слились в единый кусок с параметрами "undefined_material default default default mtl\mtl_rja_01".


Дополнено 12 минуты спустя
5 часов назад, mortan сказал:

А модели-то корректно грузит?

Да, новый нормально. Еще в SDK после реэкспорта сравнил, число вертексов и фейсов не изменилось, внешне тоже одинаковы с оригиналом. Очередность материалов изменилась, но настройки сохранились. Сам файл килобайт на 200 похудел.

Изменено пользователем macron

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

нерабочие ссылки на скрипты автора. bruh

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Seraphim вот мой репак с правкой импорта:

https://disk.yandex.ru/d/ER2TzN144Zsnqg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
3 минуты назад, macron сказал:

Seraphim вот мой репак с правкой импорта:

https://disk.yandex.ru/d/ER2TzN144Zsnqg

Спасибо, а как вот так сделать?

2005271713_.png.504455d70fb4f5cfae49ab8d298ea9d0.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу