Скрипт Collect Asset

Автор
Сообщение
Возраст: 41
Пол: М
На сайте c: 10.07.2008
Сообщения: 1661
Откуда: Украина, Киев

Решил создать тему по своему скрипту Collect Asset. Качать тут

Пишите в тему, если найдете ошибки, или знаете, как его улучшить, или можете что-то подсказать. Или если что-то не понятно.

ed7cad9fe80a53f466b82beff8c986fe.jpg

Скрипт предназначен для сбора всех текстур и других используемых в сцене файлов в одну папку. Имеется проверка на совпадение имен файлов.

Скрипт видит специфические карты (например VRayBMPFilter, Camera_Map_Per_Pixel). Так же скрипт обрабатывает тектуры в XRef файлах.

Описание работы:

Вверху статусная строка. Показывает сколько карт с полными путями (Ok), сколько фалов найдено по другому пути (Found), и сколько файлов не найдено (Missing).

Path to seek textures - позволяет выбрать папку для дополнительного поиска текстур

Кнопка Seek - совершает поиск потерянных текстур в папке для поиска. Подпапки не учитываются.

Resolve path - прописывает всем найденным картам полный путь, по которому их нашел 3ds max.

Del Missing Paths - удаляет потерянные текстуры.

Selected Directory - Путь для сбора всех текстур.

Collect Files - собтвенно кнопка для начала сбора. Если стоит галка "and relink..." - то в сцене пропишутся пути к новому месту (не забудте сохранить сцену после этой операции). Если поставить галку "from selected objects", то текстуры соберуться только с выделенных обьектов. Собираются только используемые в сцене текстуры. Если в мат.эдиторе есть не назначенные материалы, текстуры с них не будут обработаны.

При копировании производится проверка на одинаковые имена файлов. Если в папке сбора уже существует файл и размер у него отличается от копируемого, то выдается окно сравнения текстур и выбора действия, что с ними делать. Можно заменить, использовать существующую или переименовать.

Set Path - Назначет всем текстурам путь к указанной директории. Это полезно, когда перенесли сцену с текстурами в другую папку или другой компьютер, и нужно переназначить пути к текстурам, что-бы компьютер их все время не искал (при том что компьютер может найти не правильную текстуру в другом месте).

Rename Russian - Заменяет русские символы английскими в именах файлов. Новые файлы складывает в указанную директорию и прописывает к ним пути в сцене.

Make Archive - Создает архив сцены с текстурами в формате 7zip или zip. Текстуры помещает в папку maps.

Скрипт с открытым кодом. Если кому интересно - может покопаться в нем. Или изменить под свои нужды.

Для установки в 3ds max выберите меню Scripting -> Run Script... и выберите скачанный файл. После этого зайдите в меню Customize -> Customize user interface -> Toolbars. Category: # Scripts. Перетащите скрипт на любую панель в удобное для вас место.

Для обновления проведите установку новой версии и она заменит старую.

Версия v2.098

- Добавил опцию исключения Xref файлов при коллекте ассетов

Версия v2.092

- Добавлено еще несколько классов (Corona LUT, Forest Pack...)

- Добавлена кнопка "Del RE Paths" которая очищает пути в рендер элементах.

Версия v2.09

- Поддержка Final Render

- Исправлены проблемы с Redshift

- Добавлен класс BitmapHDR

- Добавлена кнопка "Strip paths"

- Исправлены некоторые ошибки

Версия v2.08

- Добавлена поддержка FStorm и Redshift

Версия v2.07

- Исправил ошибку в обработке источников света. Теперь скрипт их обрабатывает намного быстрее.

- Исправил еще некоторые ошибки

Версия v2.05

- Добавлена функция поиска текстур в указанной папке

Версия v2.04

- поддержка Octane Render

- собирает сиквенцию из ifl фалов

- собирает point cache

- теперь проверяет файлы с одинаковыми именами не по размеру, а по чексуму

- быстрее проводит повторное сканирование файлов после выполнения операций

- можно автоматически повторять операции сравнения одинаковых файлов

- теперь есть лог файл и окно логов операций

- изменилось окно выбора папки

- исправлены ошибки

Создал версию 2. Полностью переписал скрипт и изменил метод работы с файлами. Ушел от максовского Aseet Tracking. Теперь скрипт работает в некоторых моментах быстрее, но главное должен работать надежнее. Пока что интерфейс и функционал остался прежним.

- Видит карты VRayBMPFilter, Camera_Map_Per_Pixel, CoronaBitmap

- Обрабатывает Xref файлы и ссылки внутри них

- Добавлена функция переименования русских символов

p.s. Пожалуйста, отписывайтесь об ошибках. Не молчите, если что-то не работает, или работает не так как нужно. Это важно. Я не всегда могу все протестировать в одиночку.

Вы можете отблагодарить меня за скрипт материально, если желаете.

Возраст:
Пол: Ж
На сайте c: 23.07.2018
Сообщения: 2
Откуда:
Цитата xiruim:

Цитата vsvst:

Здравствуйте! Скрипт установила перетаскиванием в окно макса. Кнопка вроде как есть, но без картинки. Только если навести курсор мышки на нее, рядом появляется название. Перезагрузка макса и компа не помогла. Подскажите, пожалуйста, что сделать чтобы картинка на кнопке появилась?

Не скопировались иконки. Попробуйте запустить установщик через Run script. Дать права администратора, когда спросит.

Попробовала установить через Run script. Просто версия обновилась, а иконка не появилась. Это может быть как-то связано с тем, что у меня макс не лицензионный?

Возраст: 41
Пол: М
На сайте c: 10.07.2008
Сообщения: 1661
Откуда: Украина, Киев
Цитата vsvst:
Попробовала установить через Run script. Просто версия обновилась, а иконка не появилась. Это может быть как-то связано с тем, что у меня макс не лицензионный?

значит вам сюда

https://3ddd.ru/forum/thread/show/skript_collect_asset/16#post1529139 

Или пишите мне в личку, помогу установить и заодно сам посмотрю почему у вас не ставится

Возраст: 41
Пол: М
На сайте c: 16.11.2015
Сообщения: 3
Откуда:
v. 2.099b @ 3d's Max 2021 не создает архив... все процессы проходят без проблем с выбором пути и имени файла архива, даже появляется сообщение об успешно созданном архиве, но в итоге файл с архивом не сохраняется по указанному пути.
Возраст: 35
Пол: М
На сайте c: 10.07.2008
Сообщения: 1135
Откуда: Екатеринбург
хочу напомнить, про пожелание многих тут: возможность выбора сохраняемой версии макса! ОЧЕНЬ НУЖНО!
Возраст: 31
Пол: М
На сайте c: 11.11.2014
Сообщения: 8
Откуда: Moscow

День добрый! Спасибо за замечательный скрипт, который очень облегчает рабочий процесс!

Однако, как уже писали выше, почему-то он перестал создавать архив со сценой. При сборе сцены и упаковке - все как бы происходит нормально, в конце - сообщение об удачном создании архива. Но его нет. И так и эдак, и переустанавливал, и даже макс переустанавливал - ничего не помогает. Скрипт 2.099b и макс 2020.

Возраст: 20
Пол: М
На сайте c: 14.04.2017
Сообщения: 3
Откуда: Москва

xiruim

салют! присоединяюсь к благодарностям - скрипт чудесный, очень удобный и полезный!

все уже звучавшие здесь предложения, имеют место быть: 

- и возможность выбора версии макса при создании архива

- и возможность коллекта "текстур" OSL

- и избавление от проблем и ошибок, связанных с символами $ & в названии.

от себя добавлю такое предложение: при нажатии на кнопку в панели инструментов, скрипт запускается и сразу начинает шерстить текстуры, а зачастую такое нажатие произошло случайно или текстур так много, что это занимает время, а запускался скрипт, например, только для зачистки RE путей (очень удобная функция). так вот, может быть стоит в скрипте вынести наверх кнопку REFRESH или START, чтобы коллект ассет запускался мгновенно, а большинство функций до старта были бы неактивными.

а теперь "за всю боль":на домашних компьютерах collect asset запускается за считанные секунды, шерстит всё что надо и готов работать, собирает текстуры быстро, как будто просто копирует с диска на диск, после копирования в течении 10 секунд переписывает им пути и уже готов закрываться - всё проходит быстро и приятно)

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

пожалуйста, подскажите, куда звонит и не может дозвониться скрипт, связано ли это с наличием локалки, хотя пользуемся мы только выносным рейд-массивом (потому что все остальные условия типа мощности процов 9980, количества оперативки 96gb и скорости SSD m2 - равные) и что можно предпринять, чтобы ускорить работу коллекта в данных условиях? мы выбились из сил(

огромное спасибо!

Возраст: 41
Пол: М
На сайте c: 10.07.2008
Сообщения: 1661
Откуда: Украина, Киев

tlp-ab.ru

блин, когда же я за него уже сяду. Каждый день пользуюсь в таком виде как он есть и сил нет сесть за программирование. Уже были мысли отдать кому-то на доработку его.

А  по поводу тормозов на рабочих компах это новость. Я такого не замечал. Скрипт в общем использует максовские функции, значит и макс должен делать с тормозами операции связанные с путями. Например долго сохранять сцену, так как он там еще и пути обновляет заодно. Где-то была уже тема с такой проблемой в сети, люди ее как-то решали. Удалите для начала список пользовательских путей в максе, посмотрите будет ли разница. Самое тормозное в скрипте - это шапку с логотипом вывести :) Остальные функции делаются через макс и тут скорее нужно проблему макса решать. копайте в этом направлении. Пишите если что-то накопаете. Так же можете обращаться лично, если могу чем-то помочь

Возраст: 39
Пол: М
На сайте c: 19.02.2011
Сообщения: 2796
Откуда: Москва

Еще в копилку багов, уже год всё забывал написать.

Открываем сцену, удаляем половину, или даже всю геометрию, а также чистим material editor от матов. Открываем Asset tracking, обновляем - все карты, как им и положено, пропадают. Asset tracking пуст! После этого открываем Collect asset нажимаем refresh 5 раз - все карты на месте и он готов их собрать. Если нажать collect он соберёт всё то, чего уже давно в сцене нет. Пока не переоткроешь файл так и будет собирать всё что было.

Зачем это нужно? Пример: открываем сцену, удаляем всякий ненужный хлам для того чтобы куда то отправить архив. Пока отдельно не сохранишь сцену в архиве будет всякий хлам. 

Возраст: 41
Пол: М
На сайте c: 10.07.2008
Сообщения: 1661
Откуда: Украина, Киев
Цитата alexfmos:

Еще в копилку багов, уже год всё забывал написать.

Открываем сцену, удаляем половину, или даже всю геометрию, а также чистим material editor от матов. Открываем Asset tracking, обновляем - все карты, как им и положено, пропадают. Asset tracking пуст! После этого открываем Collect asset нажимаем refresh 5 раз - все карты на месте и он готов их собрать. Если нажать collect он соберёт всё то, чего уже давно в сцене нет. Пока не переоткроешь файл так и будет собирать всё что было.

Зачем это нужно? Пример: открываем сцену, удаляем всякий ненужный хлам для того чтобы куда то отправить архив. Пока отдельно не сохранишь сцену в архиве будет всякий хлам. 

А вот это для меня новость. спасибо, запишу в список багов. Кстати а зачем бало нажимать refresh 5 раз?
Возраст: 39
Пол: М
На сайте c: 19.02.2011
Сообщения: 2796
Откуда: Москва

Rename Ru всегда падает

Возраст: 20
Пол: М
На сайте c: 14.04.2017
Сообщения: 3
Откуда: Москва
Цитата xiruim:
Где-то была уже тема с такой проблемой в сети, люди ее как-то решали. Удалите для начала список пользовательских путей в максе, посмотрите будет ли разница.

спасибо большущее! всё равно будет круто, если вдруг кто-то подскажет эту "тему в сети")

мы пошуршали в пользовательских путях, перекинули и перепрописали все библиотеки материалов и форестов на внутренние ССД и ХДД, по идее сейчас макс вообще не долбится никуда кроме самого компьютера, и по путям не знает о существовании локалки/сервера - результат на лицо!

коллект запускается быстро, в течении нескольких секунд, и шустро копирует текстуры, но вот после нажатия кнопки ОК (с количеством скопированых) - зависает минуты на 3-4 (написано end collect assets или end get list xref assets, даже когда включена галка exclude xref). при том ЦП загружен в этот момент на 3% против 1% в спокойном состоянии, а память и диски загружена так же как и обычно, то есть видимой работы не происходит.

и вот тут мы снова не можем справиться без ваших подсказок! 

Возраст: 41
Пол: М
На сайте c: 10.07.2008
Сообщения: 1661
Откуда: Украина, Киев
Цитата tlp-ab.ru:
коллект запускается быстро, в течении нескольких секунд, и шустро копирует текстуры, но вот после нажатия кнопки ОК (с количеством скопированых) - зависает минуты на 3-4 (написано end collect assets или end get list xref assets, даже когда включена галка exclude xref). при том ЦП загружен в этот момент на 3% против 1% в спокойном состоянии, а память и диски загружена так же как и обычно, то есть видимой работы не происходит.

после нажатия на ОК макс начинает обновлять все материалы на новые текстуры. То есть скрипт перепрописал пути и макс теперь пересчитывает их везде. На это нужно время, особенно когда много материалов и текстур. Это как при открытии сцены, когда макс сцену открыл, но еще никак не покажет.

Это я тоже обойти не могу. Для корректной работы макс должен обновить все пути.

Возможно можно его заставить это делать до сообщения о завершении копирования, тогда думаю будет немного удобней

Возраст:
Пол: М
На сайте c: 19.06.2021
Сообщения: 29
Откуда:
Цитата xiruim:
Это я тоже обойти не могу. Для корректной работы макс должен обновить все пути. Возможно можно его заставить это делать до сообщения о завершении копирования, тогда думаю будет немного удобней

А вы не пробовали undo отключить перед этим этапом и включить по его окончанию? Вполне вероятно будет быстрее. Еще в некоторых скриптах иногда используют связку enableRefMsgs + disableRefMsgs чтобы отключать какие-то внутренние обновления объектов тридемакса.

Возраст: 20
Пол: М
На сайте c: 14.04.2017
Сообщения: 3
Откуда: Москва
Цитата xiruim:
после нажатия на ОК макс начинает обновлять все материалы на новые текстуры.

да, всё так. проверили на других сценах - это время и вообще факт подвисания подтвердился только на сценах с больше чем 600 текстурами, но на сценах с меньшим количеством паузы нет совсем)

ещё пара забавных наблюдений:

"dgdfg" в строчке статуса при запуске скрипта)))

и если открыть скрипт, а потом ещё раз нажать на кнопку его запуска (допустим задумался), то 3ds max вылетает

ещё раз большое спасибо за вашу работу!

Возраст: 41
Пол: М
На сайте c: 10.07.2008
Сообщения: 1661
Откуда: Украина, Киев
Цитата tlp-ab.ru:
и если открыть скрипт, а потом ещё раз нажать на кнопку его запуска (допустим задумался), то 3ds max вылетает

спасибо. это точно баг который нужно чинить.
Возраст: 37
Пол: М
На сайте c: 23.12.2008
Сообщения: 13
Откуда:
Добрый день. Вопрос и предложению автору скрипта по функционалу. Возможно ли сделать так, чтоб COLLECT файлов в выбранную папку из позиций "Ok" и "Found" происходил выборочно? То есть из каждой по отдельности ли из обоих сразу. Это было бы чрезвычайно удобно.И при переименовании при повторном совпадении не показывал ошибку, а предлагал повторно переименовать в ручную.
Возраст: 41
Пол: М
На сайте c: 10.07.2008
Сообщения: 1661
Откуда: Украина, Киев
Цитата Stalker-Ivan:
Добрый день. Вопрос и предложению автору скрипта по функционалу. Возможно ли сделать так, чтоб COLLECT файлов в выбранную папку из позиций "Ok" и "Found" происходил выборочно? То есть из каждой по отдельности ли из обоих сразу. Это было бы чрезвычайно удобно.И при переименовании при повторном совпадении не показывал ошибку, а предлагал повторно переименовать в ручную.

Я не понял. Объясните конкретнее с чем возникает проблема на примере вашей сцены.

Возраст: 37
Пол: М
На сайте c: 23.12.2008
Сообщения: 13
Откуда:
Цитата xiruim:
Цитата Stalker-Ivan:
Добрый день. Вопрос и предложению автору скрипта по функционалу. Возможно ли сделать так, чтоб COLLECT файлов в выбранную папку из позиций "Ok" и "Found" происходил выборочно? То есть из каждой по отдельности ли из обоих сразу. Это было бы чрезвычайно удобно. И при переименовании при повторном совпадении не показывал ошибку, а предлагал повторно переименовать в ручную.

Я не понял. Объясните конкретнее с чем возникает проблема на примере вашей сцены.

По поводу переименования?

Есть вариант с добавленной абракадабра и где можно прописать изменения самому.Если самому прописывать, то при следующем совпадении выдаёт ошибку что имя одинаковое, и как понимаю он не переименовывается и не перемещается. Надо начать заново. Как понимаю при автоматчиком варианте тоже самое.

Возраст: 41
Пол: М
На сайте c: 10.07.2008
Сообщения: 1661
Откуда: Украина, Киев
Цитата Stalker-Ivan:
Цитата xiruim:
Цитата Stalker-Ivan:
Добрый день. Вопрос и предложению автору скрипта по функционалу. Возможно ли сделать так, чтоб COLLECT файлов в выбранную папку из позиций "Ok" и "Found" происходил выборочно? То есть из каждой по отдельности ли из обоих сразу. Это было бы чрезвычайно удобно. И при переименовании при повторном совпадении не показывал ошибку, а предлагал повторно переименовать в ручную.

Я не понял. Объясните конкретнее с чем возникает проблема на примере вашей сцены.

По поводу переименования?

Есть вариант с добавленной абракадабра и где можно прописать изменения самому.Если самому прописывать, то при следующем совпадении выдаёт ошибку что имя одинаковое, и как понимаю он не переименовывается и не перемещается. Надо начать заново. Как понимаю при автоматчиком варианте тоже самое.

Я опять ничего не понимаю.

Вы собираете всё в какую-то папку. у вас есть текстуры с одинаковыми именами, если они разные по содержанию, то скрипт говорит что они разные и предлагает с ними что-то сделать. Переименовать, оставить ту что уже есть в папке, или заменить новой.

Что именно вас не устраивает в этом алгоритме?

Репутация: 0
Возраст: 30
Пол: М
На сайте c: 26.12.2020
Сообщения: 1
Откуда: Magnitogorsk
Дружище! Спасибо огромное!
Читают эту тему: