Скрипт Collect Asset

Автор
Сообщение
На сайте c 10.07.2008
Сообщений: 1693
Украина, Киев

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

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

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

Скрипт видит специфические карты (например 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.099c
- Новый инсталлер, теперь можно не только установить / обновить, но и удалить скрипт
- Добавлены новые классы для ассетов
- Можно выбрать версию макс файла при создании архива
- В настройках можно выбрать тип архива по умолчанию
- При запуске не сканирует ассеты сразу. Нужно нажать кнопку Refresh. Можно изменить в настройках.
- При создании архива для выделенных объектов скрипт в новом файле сбрасывает настройки рендера, чистит matedit, удаляет бэкграунд в окружении.
- устранены некоторые баги

Версия 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 10.07.2008
Сообщений: 1702
Екатеринбург
хочу напомнить, про пожелание многих тут: возможность выбора сохраняемой версии макса! ОЧЕНЬ НУЖНО!
На сайте c 11.11.2014
Сообщений: 8
Moscow

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

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

На сайте c 14.04.2017
Сообщений: 3
Москва

xiruim

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

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

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

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

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

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

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

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

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

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

На сайте c 10.07.2008
Сообщений: 1693
Украина, Киев

tlp-ab.ru

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

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

На сайте c 19.02.2011
Сообщений: 3766
Москва

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

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

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

На сайте c 10.07.2008
Сообщений: 1693
Украина, Киев
Цитата alexfmos:

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

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

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

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

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

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

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

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

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

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

На сайте c 10.07.2008
Сообщений: 1693
Украина, Киев
Цитата 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 чтобы отключать какие-то внутренние обновления объектов тридемакса.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

На сайте c 26.12.2020
Сообщений: 1
Magnitogorsk
Дружище! Спасибо огромное!
На сайте c 20.04.2020
Сообщений: 3
Uzbekistan, Tashkent

 работал без проблем. сегодня начал глюкать. никакие настройки не трогал. кэш очистил через %temp% не помогло, переустановил скрипт и другую и эту всё равно не помогает. кто нибудь сталкивался, есть решение?

Активность: 0
На сайте c 07.06.2010
Сообщений: 1
Цитата xiruim:
не работает установщик корректно в 3ds max 2022.1 раскидал по папкам ручным способом содержимое (не факт что правильно) все равно ошибка при запуске в загруженной сцене. Как решить проблему? Спасибо!

На сайте c 10.07.2008
Сообщений: 1693
Украина, Киев

entrancer

Проблема из-за $ в названии текстуры. Я это пока не исправил. Нужно вручную переименовать файл текстуры, чтоб скрипт заработал.

Читают эту тему: