Alembic

З Alembic home page:

Alembic (буквально – «перегонник», «дистилятор») – це відкрита структура взаємообміну даними у комп’ютерній графіці. Alembic переганяє складні, анімовані сцени у не-процедурний, незалежний від застосунку набір запечених геометричних результатів. Це «переганяння» сцен у запечену геометрію є точним аналогом перегонки освітлення та рендерингу сцен у рендерені дані зображення.

Alembic орієнтований на ефективне збереження обчислених результатів складних процедурних геометричних конструкцій. Це дуже конкретно не стосується зберігання складного графа залежностей процедурних інструментів, що використовуються для створення обчислених результатів. Наприклад, Alembic ефективно зберігатиме позиції анімованих вершин та анімовані трансформації, що є результатом довільно складної анімації та процесу імітації, які можуть включати обгортання, коригувальні форми, імітації зі збереженням об’єму, імітації тканини та тіла тощо. Alembic не намагатиметься зберігати представлення мережі обчислень (в основному, оснасток), які вимагаються для продукування фінальних позицій анімованих вершин та фінальних анімованих трансформацій.

TL;DR – «Надто довго; не зчитується»: Alembic може використовуватися для запису анімованої сіті на диск та зчитування її швидко та ефективно. Це означає, що сіть може анімуватися з дуже інтенсивною для центрального процесора оснасткою, «запектися» у файл Alembic та завантажитися у файл знімка для відтінення та освітлювання за допомогою тільки помірного використання CPU.

Підтримка для формату файлів Alembic була уведена у Blender 2.78.

Через відкрито джерельну – Open Source – природу стандарту Alembic, а також через те, що його бібліотека на С++ імплементована у цей стандарт, Blender може використовуватися у гібридному конвеєрі. Наприклад, інші програми, такі як Houdini або Maya, можуть експортувати файли в Alembic, що далі може бути завантажено, відтінено та рендерено у Blender’і. Також можливим є анімування персонажів (або інших моделей) у Blender’і, далі експорт в Alembic та завантаження цих файлів в іншому застосунку для подальшої обробки.

Експорт у Файли Alembic – Exporting to Alembic Files

Ця секція описує вплив різних варіантів експорту.

Трансформа Вручну – Manual Transform

../../_images/files_import-export_alembic_export-panel-scene-options.png

Опції експорту в Alembic.

Масштаб – Scale
Це задає глобальний масштаб для файлу Alembic. Зберігайте для нього стандартне значення 1.0, щоб використовувати одиниці Blender’а.

Опції Сцени – Scene Options

Стартовий Кадр – Start Frame та Кінцевий Кадр – End Frame
Задає діапазон кадрів для експорту в Alembic. Це стандарти для діапазону кадрів поточної сцени.
Відбір Під-кадрів – Sub-frame Sampling

Ці опції керують відбором підкадрів в анімаціях.

Вибірки Трансформ – Transform Samples
Вибірки Трансформацій – Transform Samples задає кількість разів за кадр, якими відбираються анімовані трансформації та записуються в Alembic.
Вибірки Геометрії – Geometry Samples
Вибірки Геометрії – Geometry Samples задає кількість тих же разів за кадр, але для анімованої геометрії.
Відкриття/Закриття Затвору – Shutter Open/Close

Відкриття Затвору – Shutter Open та Закриття Затвору – Shutter Close визначають інтервал [відкриття, закриття], упродовж якого беруться ці вибірки. Допустимий діапазон – від -1 до 1, де -1 вказує на попередній кадр, 0 вказує на поточний кадр та 1 вказує на наступний кадр.

Наприклад, якщо бажана інформація для деталізованого розмиву рухом сіті, то деякі підкадри навколо поточного кадру можуть бути записані в Alembic, використовуючи в рахунку вибірок числа 5, Shutter Open як -0.25 та Shutter Close як 0.25. Це імітує «180 градусний» затвор, відкриття на 90 градусів перед цим кадром та закриття на 90 градусів після цього кадру.

Лише Вибрані Об’єкти – Selected Objects Only
При увімкненні, експортує тільки поточно вибрані об’єкти. При вимкненні, усі об’єкти будуть експортовані.
Лише Рендероздатні Об’єкти – Renderable Objects Only
Це корисно для, наприклад, запобігання експортуванню кастомних форм кісток.
Лише Видимі Шари – Visible Layers Only
Лімітує експорт шарів сцени лише тими, які поточно видимими.
Випрямлена Ієрархія – Flatten Hierarchy
При вимкненні, відношення предок/нащадок між об’єктами також експортуються. Будь-який предківський об’єкт, якщо він сам не експортується, але його нащадки експортуються, то замінюється об’єктом типу «порожня» – Empty. При увімкненні, відношення предок/нащадок не експортуються, а будь-які трансформації записуються повністю у координатах світу.

Опції Об’єкта – Object Options

../../_images/files_import-export_alembic_export-panel-object-options.png

Опції об’єкта.

UVи – UVs
При увімкненні, розкладки UV будуть експортуватися. Хоча стандарт Alembic підтримує тільки одиничну розкладку UV, Blender експортує усі розкладки UV у спосіб, що повинен бути читаним іншою програмою.
Упакувати Острови UV – Pack UV Islands
Генерує оптимізовану розставу UV з не-перекривними островами, що намагається ефективно заповнити простір текстур – Texture Space. Дивіться детальніше про оператор – pack islands operator, що працює за таким самим принципом.
Нормалі – Normals
При увімкненні експортуються нормалі – normals об’єкта.
Кольори Вершин – Vertex Colors
При увімкненні, експортує кольори вершин. На даний момент це підтримує тільки статичні кольори вершин та не підтримує динамічно анімовані кольори вершин.
Набори Граней – Face Sets
Експортує імена матеріалів своє для кожної грані. Дані матеріалів не експортуються, а лише імена матеріалів.
Вжити Схему Підподілення – Use Subdivision Schema
Записує полігональні сіті, використовуючи схему «SubD» Alembic’а, а не схему «PolyMesh». Це каже програні при відкриванні цього файлу застосовувати форму не-руйнівного підподілення з нього.
Застосувати Підподілення Поверхні – Apply Subdivision Surface
Застосовує будь-які модифікатори підподілення поверхонь – Subdivision surface modifiers перед записуванням в Alembic.
Трикутникування – Triangulate
Трикутникує сіть перед записуванням в Alembic. Детальніше про цю специфічну опцію дивіться – Triangulate Modifier.

Системи Частинок – Particle Systems

../../_images/files_import-export_alembic_export-panel-particle-systems.png

Опції Систем Частинок.

Alembic не має підтримки для Систем Частинок, і так само він не підтримує арматури. Волосинки експортуються як анімовані криві з нульовою шириною. Частинки експортуються як анімовані точки.

Importing Alembic Files

When importing an Alembic file, Mesh Sequence Cache modifiers are automatically added to time-varying meshes. For time-varying object transforms (so animation of rotation, location, or scale) the Transform Cache Constraint is used.

Custom Split Normals of Meshes

Blender supports the import and export of custom normals to Alembic files. As a basic rule of thumb, a completely smooth mesh will be exported without normals and thus produce the smallest Alembic file. This is reflected in the importer; an Alembic mesh without normals is loaded as a smooth mesh.

On export, for every mesh:

  • If it has Custom Loop Normals then the loop normals are exported.
  • If one or more polygons are marked flat then loop normals are also exported.
  • Otherwise, no normals are exported.

On import, when the Alembic mesh contains:

  • Loop normals (kFacevaryingScope) are used as custom loop normals, and enable Auto Smooth to have Blender actually use them.
  • Vertex normals (kVertexScope or kVaryingScope) are convert to loop normals, and handle as above.
  • If there are no normals then the mesh is marked as smooth.
  • Unsupported normal types (kConstantScope, kUniformScope, kUnknownScope) are handled as no normals.

When an imported mesh does not contain normals, the final look can be controlled by enabling the Auto Smooth checkbox and altering the threshold angle.

Handling Time

Unlike Blender and many other applications and file formats, Alembic files don’t have any concept of frames. Alembic works purely with time, and values that are sampled over time. For example, there is no way to distinguish 30 FPS with 2 samples per frame, and 60 FPS with 1 sample per frame. This has caused many developers to just hard-coded 24 FPS when reading Alembic files.

Blender uses the current scene frame rate to convert a frame number (in Blender) to a time in seconds (in Alembic). As a result, you can import an Alembic file that was produced at 120 FPS into a Blender scene that is 30 FPS and still not see any time stretching.