Alembic¶
Alembic (буквально – «перегонник», «дистилятор») – це відкрита структура взаємообміну даними у комп’ютерній графіці. Alembic переганяє складні, анімовані сцени у не-процедурний, незалежний від застосунку набір запечених геометричних результатів. Це «переганяння» сцен у запечену геометрію є точним аналогом перегонки освітлення та рендерингу сцен у рендерені дані зображення.
Alembic орієнтований на ефективне збереження обчислених результатів складних процедурних геометричних конструкцій. Це дуже конкретно не стосується зберігання складного графа залежностей процедурних інструментів, що використовуються для створення обчислених результатів. Наприклад, Alembic ефективно зберігатиме позиції анімованих вершин та анімовані трансформації, що є результатом довільно складної анімації та процесу імітації, які можуть включати обгортання, коригувальні форми, імітації зі збереженням об’єму, імітації тканини та тіла тощо. Alembic не намагатиметься зберігати представлення мережі обчислень (в основному, оснасток), які вимагаються для продукування фінальних позицій анімованих вершин та фінальних анімованих трансформацій.
TL;DR: Alembic can be used to write an animated mesh to a drive, and read it back quickly and efficiently. This means that a mesh can be animated with a very CPU-intensive rig, „baked“ to an Alembic file, and loaded into the shot file for shading and lighting with only moderate CPU usage.
Support for the Alembic file format was introduced in Blender 2.78.
Через відкрито джерельну – Open Source – природу стандарту Alembic, а також через те, що його бібліотека на С++ імплементована у цей стандарт, Blender може використовуватися у гібридному конвеєрі. Наприклад, інші програми, такі як Houdini або Maya, можуть експортувати файли в Alembic, що далі може бути завантажено, відтінено та рендерено у Blender’і. Також можливим є анімування персонажів (або інших моделей) у Blender’і, далі експорт в Alembic та завантаження цих файлів в іншому застосунку для подальшої обробки.
Експорт у Файли Alembic – Exporting to Alembic Files¶
Ця секція описує вплив різних варіантів експорту.
Трансформа Вручну – Manual Transform¶
- Масштаб – Scale
Це задає глобальний масштаб для файлу Alembic. Зберігайте для нього стандартне значення 1.0, щоб використовувати одиниці Blender’а.
Опції Сцени – Scene Options¶
- Frame Start, End
Задає діапазон кадрів для експорту в Alembic. Це стандарти для діапазону кадрів поточної сцени.
- Відбір Під-кадрів – Sub-frame Sampling
Ці опції керують відбором підкадрів в анімаціях.
- Samples Transform
Вибірки Трансформацій – Transform Samples задає кількість разів за кадр, якими відбираються анімовані трансформації та записуються в Alembic.
- Geometry
Вибірки Геометрії – 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 градусів після цього кадру.
- Випрямлена Ієрархія – Flatten Hierarchy
When disabled, parent/child relations between objects are exported too. Any parent object that is not exported itself, but with children that are exported, is replaced by an empty. When enabled, parent/child relations are not exported, and transformations are all written in world coordinates.
- Use Instancing
Exports data of duplicated or instanced objects as Alembic instances; speeds up the export and can be disabled for compatibility with other software.
- Custom Properties
When enabled (which it is by default), custom properties are exported to Alembic as well. The following custom property types are supported:
Numbers (
int
,float
) and strings. These are exported as arrays of a single element, so47
will be exported as[47]
to Alembic, and"Agent"
to["Agent"]
. This matches the behaviour of many other DCCs.Lists of numbers and strings. These are exported as-is, so
[327, 47]
is exported as[327, 47]
.Matrices and nested arrays of numbers. These are flattened into one long list, so a 3×2 matrix of numbers will become a list of 6 numbers. Similarly, nested lists
[[1, 2, 3], [4, 5], [6]]
will be exported as[1, 2, 3, 4, 5, 6]
.Numbers can be animated as well.
- Only
- Selected Objects
При увімкненні, експортує тільки поточно вибрані об’єкти. При вимкненні, усі об’єкти будуть експортовані.
- Renderable Objects
Це корисно для, наприклад, запобігання експортуванню кастомних форм кісток.
- Visible Objects
Limits the export to scene collections that are currently visible.
Опції Об’єкта – Object Options¶
- UVи – UVs
При увімкненні, розкладки UV будуть експортуватися. Хоча стандарт Alembic підтримує тільки одиничну розкладку UV, Blender експортує усі розкладки UV у спосіб, що повинен бути читаним іншою програмою.
- Упакувати Острови UV – Pack UV Islands
Генерує оптимізовану розставу UV з не-перекривними островами, що намагається ефективно заповнити простір текстур – Texture Space. Дивіться детальніше про оператор – pack islands operator, що працює за таким самим принципом.
- Нормалі – Normals
When enabled, an object’s Normals are exported. See Custom Split Normals of Meshes below for more information.
- Кольори Вершин – Vertex Colors
When enabled, exports vertex colors.
Примітка
Currently this only supports static vertex colors, and not dynamically animated vertex colors.
- Набори Граней – Face Sets
Експортує імена матеріалів своє для кожної грані. Дані матеріалів не експортуються, а лише імена матеріалів.
- Subdivisions
- Apply
Applies any Subdivision Surface modifiers before writing to Alembic.
- Use Schema
Writes polygonal meshes using the «SubD» Alembic schema, rather than the «PolyMesh» schema. This sets a import option for the program, with which the file is opened, to apply its form of a non-destructive subdivision.
- Трикутникування – Triangulate
Triangulates the mesh before writing to Alembic. For more detail on the specific option see the Triangulate modifier.
Системи Частинок – Particle Systems¶
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
orkVaryingScope
) 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.