Сцена Blender, которая путешествует вместе со своими ресурсами.
Чтобы перенести сцену Blender, соберите её зависимости вокруг проекта, сделайте пути переносимыми и проверьте копию в месте, которое не сможет найти старые источники. Один только файл .blend не доказывает, что папка полная. Наш оригинальный пакет Pli применяет этот метод на практике: керамический флакон, распространяемая текстура и независимая проверка Blender.
Pli — портативная папка Blender
Оригинальный генератор для Blender 4.5.x LTS, процедурная текстура, рецепт, лицензия, манифест и приёмочный лист. Ни .blend, ни рендер не предоставляются: их предстоит воссоздать и проверить в Blender.
Что было проверено
- Проверка файлов из распакованного ZIP, при этом доступ к исходным источникам закрыт.
- Обнаружены отсутствующая текстура, изменённая текстура и внешний путь; лист заполнен на принятой копии.
- Blender, рендеринг на CPU, рендеринг на GPU и внешний вид сцены: не запускались или не проверялись.
Проект Pli: рецепт сцены с чётко очерченными границами
Pli — вымышленный флакон, придуманный для этого упражнения: фиолетовый корпус с мягкими рёбрами, атласный оранжевый воротничок, этикетка с шевронами и глиняное основание. Генератор предусматривает студийный свет и композицию, оставляющую место слева. Он создаёт объекты и материалы; единственное внешнее изображение — оригинальный узор PNG размером 512 × 512 пикселей вместе с программой, которая его воссоздаёт. Ни модели, ни HDRI, ни шрифты, ни клиентские файлы не требуются.
Цель — Blender 4.5.x LTS с Cycles. Папка относится к статичному изображению, без симуляции и расширений. Генератор отклоняет другую ветку Blender, чтобы этот выбор оставался явным. Для проверки файлов достаточно Python 3.10 или новее; для построения сцены нужен Python, встроенный в Blender.
Pli предоставляет генератор для запуска в Blender 4.5.x LTS. Файлы и случаи ошибок были проверены под Python 3.14.6; создание сцены, её открытие и рендеринг ещё предстоит протестировать в Blender. Ни файл .blend, ни рендер не прилагаются.
Перед копированием решите, что проект должен воспроизвести
Начните с определения результата: статичное изображение, анимация или серия вариантов. Запишите программу и её версию, движок, активную камеру, сцену, размеры и параметры качества. Для анимации добавьте частоту кадров и включительные границы. Сцена, которая открывается, не обязательно воспроизводит те же текстуры, те же кэши или правильное кадрирование.
Работайте над зафиксированной версией и сохраняйте оригиналы. Отделяйте используемые ресурсы от заброшенных поисков; две почти одноимённые текстуры могут объяснить разницу в материале. Проверьте также права на передачу моделей, изображений и библиотек. Пакет Pli предоставляет лицензию MIT для своих скриптов, документов, узора и описанной геометрии; у ваших добавлений могут быть другие условия.
В Pli scene.json играет роль стартовой карточки: целевая версия, опись десяти объектов, графическая зависимость, движок, изображение 1 и места вывода результатов. Он также указывает то, чего в этом проекте нет: связанные библиотеки, шрифты, кэши и анимация. Заявленное отсутствие помогает не принять пустую папку за забытый ресурс.
Древовидная структура, где у каждого файла есть своя роль
Держите версионируемый корень, здесь blender-v1, и распакуйте архив перед началом работы. Разделение ниже позволяет найти источник изображения, редактируемый проект и результат для сдачи. Оно не навязывает универсального соглашения: главное — выбирайте имена, которые человек, взявший папку, поймёт без вашей истории сообщений.
Распространяемые исходники перечислены в manifest.sha256.json с их размером и отпечатком. Манифест исключает сам себя, чтобы избежать циклической ссылки. Будущие .blend, PNG и отчёты — это выходные данные: после проверки они должны войти в вашу собственную опись поставки.
| Расположение | Содержимое | Контроль, который стоит запомнить |
|---|---|---|
| 01_sources | Оригинальная программа узора | Позволяет воссоздать текстуру без Blender |
| 02_projet | Место назначения .blend | До восстановления .blend не прилагается |
| 03_ressources | pli-chevron.png, базовый цвет sRGB | Внешний файл сохранён и предусмотрен для включения |
| 04_caches | Заметка о границах | Для этого статичного изображения симуляции нет |
| 05_rendus | Место назначения изображений | Ни один рендер на CPU или GPU не прилагается |
| 06_livraison | Шаблон приёмки и будущие отчёты | Скопируйте шаблон перед заполнением |
Проверьте распакованный ZIP-архив перед запуском Blender
Из корня распакованной папки запустите валидатор с независимым Python. Он сравнивает тринадцать файлов с манифестом, проверяет рецепт, пути и PNG, а затем анализирует синтаксис четырёх скриптов. Ожидаемый результат для неповреждённого пакета — ok: true и код выхода 0. Эта проверка не импортирует bpy и не создаёт ни одного 3D-изображения.
Наши испытания начинаются с ZIP-архива, распакованного в другом месте. Процесс проверки разрешает чтение только в этой копии и в каталоге используемого Python; попытка доступа к исходному рецепту явно отклоняется. Таким образом, успех не зависит от текстуры, незаметно найденной в папке создания.
Код 1 обязывает прочитать список ошибок. Не переписывайте отпечатки, чтобы устранить предупреждение. Возьмите неповреждённый архив заново или создайте отдельную рабочую версию, если хотите изменить сцену. Идентичный отпечаток доказывает целостность файла относительно манифеста, а не его визуальное качество и не личность его автора.
python validate_pack.py --root . --jsonПересобрать сцену и запросить небольшой рендер на CPU
Следующая команда — это процедура, которую нужно выполнить на машине с Blender 4.5.x LTS; она не запускалась во время этой подготовки. Запустите её в отдельном процессе: скрипт начинает работу с пустой сцены. В Windows, если blender отсутствует в PATH, укажите полный путь к исполняемому файлу; в PowerShell предварите этот путь в кавычках символом &.
Генератор сначала проверяет пак, создаёт объекты, загружает текстуру из копии, встраивает её и сохраняет 02_projet/renderparcel_pli_v1.blend. В сохранённом файле заданы Cycles CPU, 1 200 × 750 пикселей, 64 сэмпла и изображение 1. Опция --render-preview затем запрашивает PNG размером 480 × 300 пикселей и 16 сэмплов, без шумоподавления. Эти числа — это настройки, а не измерения производительности.
Отчёт reconstruction.json записывается после успешных операций и указывает, действительно ли выполнялся рендеринг. Чтобы собрать только .blend, уберите -- --render-preview. Скрипт отказывается перезаписывать существующие выходные файлы: повторная попытка выполняется в новой распаковке. Опция --python-exit-code 1 позволяет обнаружить исключение скрипта по коду выхода процесса.
blender --background --factory-startup --python-exit-code 1 --python generate_scene.py -- --render-previewОтносительные пути: описание расположения без забытой копии
В Blender путь, начинающийся с //, указывает на расположение файла .blend. Поскольку проект Pli будет находиться в 02_projet, его текстуру можно задать как //../03_ressources/pli-chevron.png. Папка ресурсов перемещается вместе с ним. Тем не менее генератор начинает с абсолютного пути, разрешённого в копии, встраивает изображение, а затем прописывает относительный путь перед сохранением.
Для существующего проекта сначала сохраните .blend в папку передачи. В File → External Data команда Make Paths Relative преобразует ссылки; эта операция не копирует ресурсы. Report Missing Files помогает найти нарушенные связи. Find Missing Files ищет файлы в выбранной папке и может исправить ссылки на абсолютные пути: проверьте их снова перед передачей.
Не путайте «найдено на этом компьютере» и «присутствует в папке». Текстура, всё ещё доступная в Загрузках, может скрыть забытый файл. После копирования откройте проект в среде, где это прежнее расположение уже не может удовлетворить ссылку, сохранив при этом независимую резервную копию.
Встроить подходящие ресурсы, остальные внести в список
Pack Resources позволяет включить подходящие ресурсы в .blend; сохранение делает эту операцию действительной в передаваемом файле. Это не собирает все зависимости: видео — задокументированный контрпример. Связанные библиотеки имеют отдельную команду встраивания. Поэтому составьте список того, что включено и что должно оставаться рядом с проектом.
Для Pli сохранение внешнего PNG упрощает его изменение, тогда как его встраивание должно позволить найти узор в сохранённом файле. После изменения текстуры нужно обновить фактически используемый ресурс, а затем сохранить нужную версию. Простая замена соседнего PNG не доказывает, что .blend использует его новые пиксели.
| Ресурс | Выбор упаковки | Если вы расширяете сцену |
|---|---|---|
| Узор PNG | Отдельный источник и планируемое встраивание | Перезагрузить изменённую текстуру, проверить и сохранить |
| Геометрия и процедурные материалы | Создано скриптом | Сохранить версию скрипта или отредактированный проект |
| Связанная библиотека .blend | Нет | Инвентаризировать библиотеку и её собственные зависимости |
| Видео, звук или кэш | Нет | Сохранить и проверить необходимые внешние файлы |
Открыть заново во втором процессе и заполнить реальную приёмку
После успешной пересборки inspect_scene.py открывает .blend во втором процессе Blender с отключённым выполнением его внутренних скриптов. Он проверяет инвентарь, камеру, настройки вывода, преобразование AgX, встроенную текстуру и её относительный путь. Его отчёт описывает открытие и данные; он не подтверждает качество рендера.
Откройте полученный PNG в программе просмотра изображений. Убедитесь, что флакон полностью остаётся в кадре, что этикетка показывает кремовый, фиолетовый и оранжевый узор, что контакт с подставкой читается и что не появляется пурпурная текстура. Эти критерии — намерения приёмки; мы не публикуем эталонное изображение Blender, рассчитанное для этого набора.
Скопируйте 06_livraison/modele-reception.csv в 06_livraison/reception-executee.csv, затем заполните эту новую форму. Сохраняйте шаблон нетронутым: он принадлежит манифесту. Валидатор принимает заполненную копию, не изменяя отпечатки источников, что проверил наш приёмочный тест. Затем внесите эту форму и одобренные выходные данные в свой архив поставки.
blender --background --factory-startup --python-exit-code 1 --python inspect_scene.pyОтсутствующая зависимость должна останавливать проверку
Негативное упражнение набора удаляет pli-chevron.png из пробной копии, не трогая источники. Валидатор тогда возвращает код 1 и определяет одновременно файл, отсутствующий в инвентаре, и отсутствующую зависимость рецепта. Генератор начинается с этой же проверки: он должен отказаться продолжать с этой неполной копией.
Другая проба изменяет первый байт PNG; проверка обнаруживает отличающийся отпечаток и недействительную подпись изображения. Третья заменяет его путь на ссылку за пределами папки, что также отклоняется. Эти пробы проверяют конкретные дефекты передачи. Они не имитируют ни открытие Blender, ни исчезновение кэша в анимации.
Чтобы повторить упражнение, работайте только с дополнительной распаковкой и сохраняйте нетронутую копию. Исправление состоит в том, чтобы вернуть нужный ресурс и его ожидаемое расположение. Другая текстура с тем же именем не проходит проверку целостности.
Добавление анимации меняет периметр проверки
Сцена Pli содержит только одно изображение и не требует никакого кэша. Если вы добавляете в неё дым, ткань или симуляцию, укажите тип кэша, его версию расчёта, расположение и весь полезный диапазон. Механизмы предварительного расчёта зависят от физической системы; не переносите поведение одного кэша на все остальные.
Зафиксируйте результат перед копированием. Для последовательности проверьте начало, конец, смену декораций или симуляции, а также наличие каждого промежуточного файла. Три визуально корректных изображения не доказывают, что доступны все 96 файлов анимации с 1 по 96. Чётко укажите, поставляется ли кэш или его нужно пересчитать, с какими параметрами и какими входными данными.
Применяйте ту же логику к последовательностям текстур, объёмов, звуков и монтажных медиа. Не удаляйте единственные исходники после создания ZIP: сохраняйте их до открытия копии, проверки выходных данных и их получения.
Цвет, память и длительность: измеряем реальный проект
Узор Pli служит для базового цвета и объявлен как sRGB. Карта, описывающая нормали или смещение, играет другую роль; её интерпретация должна соответствовать её данным. Также сохраняйте преобразование отображения и экспозицию при сравнении результатов. Разница в цвете может возникать из-за цепочки отображения и не иметь отношения к вычислительной мощности.
Вес ZIP не отражает потребность в памяти GPU. Оценённая геометрия, фактически загруженные текстуры и этапы рендеринга значат больше, чем количество файлов в архиве. Небольшой предпросмотр на CPU не предсказывает ни пиковую память, ни длительность финального рендеринга на GPU. Измерьте полный репрезентативный результат в финальном разрешении, прежде чем выбирать конфигурацию.
Мастерская 3D помогает выстроить эту проверку. Затем сравните конфигурации GPU по совместимости и наблюдаемому пику, с запасом, подходящим для проекта. Выберите 3, 7 или 30 дней в конфигураторе, чтобы охватить открытие, тесты, правки, вычисления и восстановление; ни одно из этих окон само по себе не гарантирует срок рендеринга. Руководство по экспорту доводит работу до готовых к передаче файлов.
Что проверено и что ещё предстоит выполнить
Семь проверок ниже выполнены под Windows с Python 3.14.6. Пакет содержит четырнадцать файлов, включая манифест; тринадцать файлов охвачены его контрольными суммами. Текстура была восстановлена и сравнена побайтово в этой среде. Это равенство PNG не доказывает идентичность 3D-рендеринга между версиями или оборудованием.
Проверки касаются файлов, их зависимостей и ошибок передачи. Генерация .blend, инспекция сцены и рендеринг на CPU или GPU не тестировались. В README описана процедура их проверки в Blender 4.5.x LTS.
| Тест | Результат | Объём |
|---|---|---|
| ZIP распакован, оригиналы недоступны | Код 0 | Целостность, приёмка, PNG и синтаксис Python |
| Копия карточки, затем ввод | Код 0 | Источники остаются под контролем после получения |
| Текстура удалена из копии | Ожидается код 1 | Обнаружена отсутствующая зависимость |
| Текстура изменена | Ожидается код 1 | Отпечаток и подпись PNG отклонены |
| Путь выходит за пределы папки | Ожидается код 1 | Внешняя ссылка отклонена |
| Восстановление узора | Идентичные байты | Процедурная текстура, а не рендер Blender |
| Генератор запускается только через Python | Ожидаемый отказ | Требуется Blender, bpy не выполняется |
Чтобы продвинуться в вашем проекте.
Воспроизвести те же цвета
Различать данные, отображение и экспорт, чтобы сравнивать изображения в правильном контексте.
Читать заметку Материалы, свет и изображениеПередать пригодные для работы проходы
Выбрать полезные выходные данные и проверить файл EXR в программе-получателе.
Читать заметкуВаши вопросы.
Почему в пакете нет готового файла .blend?+
Пакет содержит оригинальный генератор и его ресурсы. Создание и открытие сцены по-прежнему нужно протестировать: ни .blend, ни рендер не прилагаются. На машине с Blender 4.5.x LTS в README описано, как создать .blend, а затем проверить его в отдельном процессе.
Может ли .blend со встроенными ресурсами заменить всю папку?+
Это зависит от используемых данных. Некоторые ресурсы можно встроить; другие, в частности видео, остаются внешними. Ведите явный учёт и контролируйте зависимости собственной сцены. Пакет Pli сохраняет исходную текстуру, чтобы можно было вносить изменения.
Почему манифест помечает мои изменения как ошибку?+
Он описывает файлы, входящие в версию 1.0.0. Изменение скрипта, рецепта или текстуры обычно меняет его отпечаток. Работайте в новой версии и составляйте её опись. Для приёмки скопируйте шаблон CSV в reception-executee.csv: этот результат остаётся отдельным от контролируемого шаблона.
Позволяет ли этот пакет напрямую выбрать видеокарту GPU?+
Нет. Он служит для подготовки и контроля переноса. Для этой сцены не измерялись ни потребность в VRAM, ни время GPU. Проверьте вашу полную сборку, её совместимость и пик памяти, прежде чем определять объём аренды.