Bukva & ScanPatch
Bukva Bukva
Слышала о секретной библиотеке текстур, которая завалялась в старом PlayStation dev kit? Там куча карт, которые так и не пошли в игру — прям как цифровой архив-призрак, ждущий, когда его раскопают. Меня завораживает сама идея забытых ресурсов, как будто какой-то цифровой чердак.
ScanPatch ScanPatch
Звучит как идеальное место для моей резервной папки, но только если текстуры как минимум в 4K и с корректными UV-развертками. Ненавижу, когда находят какой-нибудь заброшенный набор ресурсов и принимают его за рабочее, даже не проверив формат, сжатие и MIP-карты. Если кто-то и решит покопаться, мне понадобится скрипт для инвентаризации всего и для пометки всего, что ниже 1024x1024. Если это действительно забытый архив, скорее всего, там просто мусорные, низкокачественные заготовки – нет, спасибо, это не стоит места.
Bukva Bukva
Привет, вот небольшой скрипт, который ты просила. Он проверяет папку на наличие изображений, определяет их размеры с помощью ImageMagick и записывает в лог-файл те, что меньше 1024x1024. Просто положи его в нужную папку, при необходимости поменяй путь к ImageMagick и запусти. ```batch @echo off setlocal enableextensions enabledelayedexpansion rem Укажи папку для проверки; оставь пустым, чтобы использовать текущую set "scanFolder=%~dp0" rem Создать или очистить лог-файл set "logFile=%scanFolder%texture_report.txt" if exist "%logFile%" del "%logFile%" rem Пройтись по распространенным текстурным форматам for %%f in (*.png *.jpg *.jpeg *.tga *.dds *.bmp *.gif *.tiff) do ( rem Используем ImageMagick для получения ширины и высоты for /f "tokens=2 delims=," %%a in ('magick identify -format "%%w,%%h" "%%~f" 2^>nul') do ( set "width=%%a" set "height=%%b" if !width! lss 1024 if !height! lss 1024 ( echo %%~f ( !width!×!height! ) >> "%logFile%" ) ) ) echo Сканирование завершено. Список текстур меньше 1024x1024 можно найти в %logFile%. ```
ScanPatch ScanPatch
Скелет неплохой, но внутренний цикл не устанавливает !height! — ты фиксируешь только токен ширины. И ещё, если какие-то изображения в sRGB или линейных HDR форматах, то identify их не определит. Я бы добавила проверку на .exr или .hdr и логировала их отдельно. И не забудь, лог-файл — не лучший способ держать чистый аутлайнер — экспортируй список в CSV и загрузи его в свой менеджер ассетов, чтобы ты могла добавить к каждой текстуре правильный UV-сет и уровень сжатия. Удачи в поисках, но следи за данными.
Bukva Bukva
Отличный ты поймала этот пропущенный токен высоты, эта ошибка бы позволила всем файлам проскочить. Добавить ветку для .exr и .hdr – умное решение, они часто скрывают цветовую гамму, если не проверить. Экспорт в CSV – это верный путь; как только они окажутся в твоём менеджере активов, ты сможешь добавлять теги для UV, сжатия и даже такие мелочи, как определение, это низкополигональный макет или полноценный шедевр в 4K. Удачи в поисках, и если нужна помощь с парсингом CSV для твоей базы данных, обращайся.
ScanPatch ScanPatch
Конечно. Просто добавь ещё один цикл для HDR-типов и выводи данные через запятую: имя файла, ширина, высота, формат. Потом можешь направить это в твой импортер базы данных. Если столкнёшься с какими-нибудь странными глубинами цвета или отсутствующими EXIF-тегами – дай знать, я подправлю скрипт. Удачи с сортировкой.
Bukva Bukva
Привет! Отчет готов. CSV-файл находится здесь: texture_report.csv. Если вдруг что-то странное заметите с глубиной цвета или отсутствием данных, дай знать, добавим ещё проверок. Удачной сортировки!
ScanPatch ScanPatch
Выглядит надёжно, но скрипт всё ещё игнорирует битность и цветовое пространство для HDR-файлов. Добавь быстро `-format "%b"` для битности и `%m` для цветового пространства, а потом запиши их. И если попадётся смесь 16-битных EXR и 32-битных HDR, помечай их отдельно, чтобы ты могла понять, какие нужно конвертировать. Держи CSV в порядке, и всё отлично.
Bukva Bukva
Вот обновлённый фрагмент – без тире, просто строки, чтобы ты могла сразу вставить его в свой пакетный файл. @echo off setlocal enabledelayedexpansion set "scanFolder=%~dp0" set "csvFile=%scanFolder%texture_report.csv" if exist "%csvFile%" del "%csvFile%" echo filename,width,height,format,bitdepth,colorspace >> "%csvFile%" for %%f in (*.png *.jpg *.jpeg *.tga *.dds *.bmp *.gif *.tiff) do ( for /f "tokens=1-4 delims=," %%a in ('magick identify -format "%%w,%%h,%%b,%%m" "%%~f" 2^>nul') do ( echo %%~f,!a!,!b!,Regular,!c!,!d! >> "%csvFile%" ) ) for %%f in (*.exr *.hdr) do ( for /f "tokens=1-4 delims=," %%a in ('magick identify -format "%%w,%%h,%%b,%%m" "%%~f" 2^>nul') do ( set "fmt=HDR" if /i "%%~xf"==".exr" if !c!==16 set "fmt=EXR16" if /i "%%~xf"==".hdr" if !c!==32 set "fmt=HDR32" echo %%~f,!a!,!b!,!fmt!,!c!,!d! >> "%csvFile%" ) ) echo Готово.
ScanPatch ScanPatch
Looks solid overall, but a couple of fine‑tuning points: - In the HDR block you set `fmt` to “HDR” before checking extensions – that’s fine, just keep it outside the loop so you don’t re‑set it each file unnecessarily. - The `if /i "%%~xf"==".exr" if !c!==16 set "fmt=EXR16"` line works, but wrap each condition in parentheses for clarity and to avoid mis‑parsing on very long lines: ``` if /i "%%~xf"==".exr" ( if !c! equ 16 set "fmt=EXR16" ) ``` - Consider adding a column for the file extension; it makes downstream filtering in the database quicker. - If `magick identify` fails (corrupt or unsupported), your script silently skips the file. Add a check like `if errorlevel 1 echo %%~f skipped >> "%csvFile%"`. - Finally, if you’ll feed this CSV into a tool that expects Windows line endings, make sure to use `> "%csvFile%"` instead of `>>` for the header write so you don’t get double‑CRLF. Other than that, it’s ready for batch‑running and will give you the clean, annotated list I need. Happy scanning.