Поиск по документации
Введите не менее 2 символов
Введите не менее 2 символов
![]() |
CAE Fidesys 9.0 Руководство пользователя |
Visualization Toolkit предоставляет ряд исходных и записывающих объектов для чтения и записи популярных форматов файлов данных. Visualization Toolkit также предоставляет некоторые из своих собственных форматов файлов. Основной причиной создания еще одного формата файлов данных является предложение согласованной схемы представления данных для различных типов наборов данных и предоставление простого метода передачи данных между программами. По возможности мы рекомендуем использовать более широко используемые форматы. Но если это невозможно, вместо этого можно использовать форматы Visualization Toolkit, описанные здесь. Обратите внимание, что эти форматы могут не поддерживаться многими другими инструментами.
В VTK доступны два разных стиля форматов файлов. Простейшими являются устаревшие последовательные форматы, которые легко читать и записывать как вручную, так и программно. Однако эти форматы менее гибки, чем форматы файлов на основе XML, описанные далее в этом разделе. Форматы XML поддерживают произвольный доступ, параллельный ввод-вывод и переносимое сжатие данных и предпочтительнее последовательных форматов файлов VTK, когда это возможно.
Простые «Легаси» форматы
Легаси VTK форматы файлов состоят из 5 основных частей.
Первая часть — это версия и идентификатор файла. Эта часть содержит одну строку: # vtkDataFileVersionx.x. Эта строка должна быть точно такой, как показано, за исключением номера версии x.x, который будет отличаться в разных выпусках VTK. (Примечание: текущий номер версии — 3.0. Файлы версий 1.0 и 2.0 совместимы с файлами версии 3.0).
Вторая часть — заголовок. Заголовок состоит из строки символов, завершающейся символом конца строки \n. Заголовок содержит максимум 256 символов. Заголовок может использоваться для описания данных и включения любой другой соответствующей информации.
Следующая часть — формат файла. Формат файла описывает тип файла: ASCII или двоичный. В этой строке должно быть одно слово ASCII или BINARY.
Четвертая часть — структура набора данных. Геометрическая часть описывает геометрию и топологию набора данных. Эта часть начинается со строки, содержащей ключевое слово DATASET, за которым следует ключевое слово, описывающее тип набора данных. Затем, в зависимости от типа набора данных, другие комбинации ключевых слов/данных определяют фактические данные.
В последней части описываются атрибуты набора данных. Эта часть начинается с ключевых слов POINT_DATA или CELL_DATA, за которыми следует целое число, указывающее количество точек или ячеек соответственно. (Неважно, идет ли POINT_DATA или CELL_DATA первым.) Другие комбинации ключевых слов/данных затем определяют фактические значения атрибутов набора данных (то есть скаляры, векторы, тензоры, нормали, координаты текстуры или данные поля).
Обзор формата файла показан на рисунке 1. Первые три части являются обязательными, а остальные две — необязательными. Таким образом, у вас есть гибкость смешивания и сопоставления атрибутов набора данных и геометрии, либо путем манипуляции файлами операционной системы, либо с помощью фильтров VTK для объединения данных. Ключевые слова нечувствительны к регистру и могут быть разделены пробелами. Перед описанием форматов файлов данных, пожалуйста, обратите внимание на следующее.
dataType — один из типов bit, unsigned_char, char, unsigned_short, short, unsigned_int, int, unsigned_long, long, float или double. Эти ключевые слова используются для описания формы данных, как для чтения из файла, так и для построения соответствующих внутренних объектов. Не все типы данных поддерживаются для всех классов.

Часть 1: Заголовок.
Часть 2: Название (256 символов максимум, terminated with newline \n character).
Часть 3: Тип данных, либо ASCII, либо BINARY.
Часть 4: Геометрия/топология. Type один из: STRUCTURED_POINTS STRUCTURED_GRID UNSTRUCTURED_GRID POLYDATA RECTILINEAR_GRID FIELD.
Часть 5: Атрибуты набора данных. Количество элементов данных n каждого типа должно соответствовать количеству точек или ячеек в наборе данных. (Если type — FIELD, данные точек и ячеек следует опустить.
Рисунок 1 Обзор пяти частей данных формата файлов VTK
Все ключевые фразы записываются в формате ASCII, независимо от того, является ли файл двоичным или ASCII. Двоичная часть файла (если файл в двоичной форме) — это собственно данные; т. е. числа, которые определяют координаты точек, скаляры, индексы ячеек и т. д.
Индексы смещены на 0. Таким образом, первая точка имеет id точки 0.
Если в файле присутствуют как атрибут данных, так и часть геометрии/топологии, то количество значений данных, определенных в части атрибутов данных, должно точно соответствовать количеству точек или ячеек, определенных в части геометрии/топологии.
Типы ячеек и индексы имеют тип int.
Двоичные данные должны быть помещены в файл сразу после символа «новой строки» (\n) из предыдущего ключевого слова ASCII и последовательности параметров.
Описание геометрии/топологии должно предшествовать описанию атрибутов данных.
Двоичные файлы. Двоичные файлы в VTK переносимы между различными компьютерными системами, если вы соблюдаете два условия. Во-первых, убедитесь, что порядок байтов данных правильный, а во-вторых, убедитесь, что длина каждого типа данных согласована.
Большую часть времени VTK управляет порядком байтов двоичных файлов для вас. Когда вы пишете двоичный файл на одном компьютере и считываете его с другого компьютера, байты, представляющие данные, будут автоматически переставлены по мере необходимости. Например, двоичные файлы, записанные на Sun, хранятся в порядке big endian, в то время как файлы на ПК хранятся в порядке little endian. В результате файлы, записанные на рабочей станции Sun, требуют перестановки байтов при чтении на ПК. (См. класс vtkByteSwap для получения подробной информации о реализации.) Файлы данных VTK, описанные здесь, записаны в форме big endian.
Однако некоторые форматы файлов явно не определяют форму порядка байтов. Вы обнаружите, что данные, считываемые или записываемые внешними программами или классами vtkVolume16Reader, vtkMCubesReader и vtkMCubesWriter, могут иметь другой порядок байтов в зависимости от исходной системы. В таких случаях VTK позволяет вам указать порядок байтов с помощью методов.
SetDataByteOrderToBigEndian()
SetDataByteOrderToLittleEndian()
Другая проблема с двоичными файлами заключается в том, что системы могут использовать разное количество байтов для представления целого числа или другого собственного типа. Например, некоторые 64-битные системы будут представлять целое число 8 байтами, в то время как другие представляют целое число 4 байтами. В настоящее время Visualization Toolkit не может обрабатывать передачу двоичных файлов между системами с несовместимой длиной данных. В этом случае используйте вместо этого форматы файлов ASCII.
Формат набора данных. Visualization Toolkit поддерживает пять различных форматов наборов данных: структурированные точки, структурированная сетка, прямоугольная сетка, неструктурированная сетка и полигональные данные. Данные с неявной топологией (структурированные данные, такие как vtkImageData и vtkStructuredGrid) упорядочены с x, увеличивающимся быстрее всего, затем y, затем z. Эти форматы следующие.
Структурированные точки
Формат файла поддерживает 1D, 2D и 3D структурированные точечные наборы данных. Размеры nx, ny, nz должны быть больше или равны 1. Интервал данных sx, sy, sz должен быть больше 0. (Примечание: в файле данных версии 1.0 интервал назывался «соотношением сторон» (“aspect ratio”). ASPECT_RATIO по-прежнему можно использовать в файлах данных версии 2.0, но это не рекомендуется).

Структурированная решетка (сетка)
Формат файла поддерживает наборы данных структурированной сетки 1D, 2D и 3D. Размеры nx, ny, nz должны быть больше или равны 1. Координаты точек определяются данными в разделе POINTS. Он состоит из значений данных x-y-z для каждой точки.

Прямолинейная решетка (сетка)
Прямолинейная решетка определяет набор данных с регулярной топологией и полурегулярной геометрией, выровненной по осям координат x-y-z. Геометрия определяется тремя списками монотонно возрастающих значений координат, по одному списку для каждой из осей координат x-y-z. Топология определяется.

Полигональные данные
Полигональный набор данных состоит из произвольных комбинаций примитивов поверхностной графики вершин (и поливершин), линий (и полилиний), полигонов (различных типов) и полос треугольников. Полигональные данные определяются секциями POINTS, VERTICES, LINES, POLYGONS или TRIANGLE_STRIPS. Определение POINTS такое же, как мы видели для структурированных наборов данных сетки. Ключевые слова VERTICES, LINES, POLYGONS или TRIANGLE_STRIPS определяют топологию полигонального набора данных. Каждое из этих ключевых слов требует двух параметров: количество ячеек n и размер списка ячеек size. Размер списка ячеек — это общее количество целочисленных значений, необходимых для представления списка (т. е. сумма numPoints и индексов связности по каждой ячейке). Ни одно из ключевых слов VERTICES, LINES, POLYGONS или TRIANGLE_STRIPS не требуется.

Неструктурированная решетка (сетка)
Неструктурированный набор данных сетки состоит из произвольных комбинаций любых возможных типов ячеек. Неструктурированные сетки определяются точками, ячейками и типами ячеек. Ключевое слово CELLS требует два параметра: количество ячеек n и размер списка ячеек size. Размер списка ячеек — это общее количество целочисленных значений, необходимых для представления списка (т. е. сумма numPoints и индексов связности по каждой ячейке). Ключевое слово CELL_TYPES требует один параметр: количество ячеек n. Это значение должно совпадать со значением, указанным ключевым словом CELLS. Данные о типах ячеек — это одно целочисленное значение на ячейку, которая указывает тип ячейки (см. vtkCell.h или рисунок 2).

Поле
Данные поля — это общий формат без топологической и геометрической структуры и без определенной размерности. Обычно данные поля связаны с точками или ячейками набора данных. Однако, если в качестве типа набора данных указан тип FIELD (см. рисунок 1), то определяется общий объект данных VTK. Используйте формат, описанный в следующем разделе, чтобы определить поле. Также см. «Работа с данными поля» (из VTK User’s Guide) и четвертый пример в этой главе «Примеры».
Формат атрибута набора данных. Visualization Toolkit поддерживает следующие атрибуты набора данных: скаляры (от одного до четырех компонентов), векторы, нормали, координаты текстуры (1D, 2D и 3D), тензоры 3 × 3 и данные поля. Кроме того, можно определить таблицу поиска, использующую цветовую спецификацию RGBA, связанную со скалярными данными. Атрибуты набора данных поддерживаются как для точек, так и для ячеек.
Каждый тип данных атрибута имеет связанное с ним dataName. Это строка символов (без встроенных пробелов), используемая для идентификации конкретных данных. dataName используется считывателями VTK для извлечения данных. В результате в файл может быть включено более одного атрибута одного типа. Например, два разных скалярных поля, определенных для точек набора данных, давление и температура, могут содержаться в одном файле. (Если соответствующее dataName не указано в считывателе VTK, то из файла извлекаются первые данные этого типа).
Скаляры
Определение скаляра включает спецификацию таблицы поиска. Определение таблицы поиска необязательно. Если не указано, будет использована таблица VTK по умолчанию (и tableName должно быть «default»). Также обратите внимание, что переменная numComp необязательна — по умолчанию количество компонентов равно одному. (Параметр numComp должен находиться в диапазоне (1,4) включительно; в версиях VTK до vtk2.3 этот параметр не поддерживался).

Определение скаляров цвета (т. е. значений unsigned char, напрямую сопоставленных с цветом) зависит от количества значений (nValues) на скаляр. Если формат файла — ASCII, скаляры цвета определяются с использованием nValues значений с плавающей точкой (float) в диапазоне (0,1). Если формат файла — BINARY, поток данных состоит из nValues значений unsigned char на скалярное значение.

Таблица поиска
Поле tableName — это строка символов (без встроенных пробелов), используемая для идентификации таблицы поиска. Эта метка используется считывателем VTK для извлечения определенной таблицы.
Каждая запись в таблице поиска — это массив rgba[4] (красный-зеленый-синий-альфа) (alpha — это непрозрачность, где alpha = 0 — прозрачность). Если формат файла ASCII, значения таблицы поиска должны быть значениями с плавающей точкой (float) в диапазоне (0,1). Если формат файла BINARY, поток данных должен состоять из четырех значений unsigned char на запись таблицы.

Векторы

Нормали
Нормали предполагаются нормализованными |n| = 1.

Координаты текстур
Поддерживаются текстурные координаты 1, 2 и 3 измерений.

Тензоры
В настоящее время поддерживаются только действительные симметричные тензоры размером 3 × 3.

Данные поля
Данные поля по сути являются массивом массивов данных. Определение данных поля означает присвоение имени полю и указание количества массивов, которые оно содержит. Затем для каждого массива определяются имя массива arrayName(i), количество компонентов массива numComponents, количество кортежей в массиве numTuples и тип данных dataType.

Примеры. Первый пример — куб, представленный шестью многоугольными гранями. Мы определяем однокомпонентный скаляр, нормали и данные поля на шести гранях. Имеются скалярные данные, связанные с восемью вершинами. Также определена таблица поиска из восьми цветов, связанных с точечными скалярами. ВАЖНО! Файл должен иметь расширение .vtk, а не .VTK, иначе появится ошибка считывания.



Следующий пример — это том размером 3 × 4 × 5. Поскольку таблица поиска не определена, пользователь должен либо создать ее в VTK, либо будет использована таблица поиска по умолчанию.

Третий пример — неструктурированная сетка, содержащая двенадцать из девятнадцати типов ячеек VTK (см. Рисунок 2 и Рисунок 3). Файл содержит скалярные и векторные данные.


Рисунок 2 Линейные типы ячеек, найденные в VTK. Используйте включаемый файл CellType для управления типами ячеек.

Рисунок 3 Нелинейные типы ячеек, обнаруженные в VТК


Четвертый и последний пример — данные, представленные в виде поля. Вы также можете посмотреть «Работа с данными поля», чтобы узнать, как манипулировать этими данными. (Файл данных, показанный ниже, можно найти целиком в $VTK_DATA_ROOT/Data/financial.vtk).

В этом примере поле представлено с помощью шести массивов. Каждый массив имеет один компонент и 3188 кортежей. Пять из шести массивов имеют тип float, а последний массив имеет тип unsigned_short.
Дополнительные примеры доступны в каталоге данных.
VTK предоставляет другой набор форматов данных с использованием синтаксиса XML. Хотя эти форматы намного сложнее, чем исходный формат VTK, описанный ранее (см. «Простые устаревшие форматы»), они поддерживают гораздо больше функций. Основной мотивацией их разработки было упрощение потоковой передачи данных и параллельного ввода-вывода. Некоторые функции формата включают поддержку сжатия, переносимого двоичного кодирования, произвольного доступа, порядка байтов big endian и little endian, многофайлового представления фрагментарных данных и новых расширений файлов для различных типов наборов данных VTK. XML также предоставляет множество функций, особенно возможность расширять формат файла с помощью специфических для приложения тегов. Существует два типа файлов данных VTK XML: параллельные и последовательные, как описано ниже.
Последовательные (serial). Типы файлов, предназначенные для чтения и записи приложениями только одного процесса. Все данные содержатся в одном файле).
Параллельные (parallel). Типы файлов, предназначенные для чтения и записи приложениями с несколькими процессами, выполняющимися параллельно. Набор данных разбивается на части. Каждому процессу назначается часть или набор частей для чтения или записи. Отдельная часть хранится в соответствующем последовательном типе файла. Параллельный тип файла фактически не содержит никаких данных, но вместо этого описывает структурную информацию, а затем ссылается на другие последовательные файлы, содержащие данные для каждой части.
В формате XML наборы данных VTK классифицируются по одной из двух категорий.
Структурированные (structured). Набор данных представляет собой топологически регулярный массив ячеек, таких как пиксели и воксели (например, данные изображения) или четырехугольники и шестигранники (например, структурированная сетка) (см. «Модель визуализации» для получения дополнительной информации). Прямоугольные подмножества данных описываются через экстенты. Типы структурированных наборов данных — vtkImageData, vtkRectilinearGrid и vtkStructuredGrid.
Неструктцрированные (unstructured). Набор данных образует топологически нерегулярный набор точек и ячеек. Подмножества данных описываются с помощью частей. Неструктурированные типы наборов данных — vtkPolyData и vtkUnstructuredGrid (см. «Модель визуализации» для получения дополнительной информации).
По соглашению, каждый тип данных и тип файла сопоставляется с определенным расширением файла. Типы и соответствующие расширения:
ImageData (.vti) — Serial vtkImageData (структурированные).
PolyData (.vtp) — Serial vtkPolyData (неструктурированные).
RectilinearGrid (.vtr) — Serial vtkRectilinearGrid (структурированные).
StructuredGrid (.vts) — Serial vtkStructuredGrid (структурированные).
UnstructuredGrid (.vtu) — Serial vtkUnstructuredGrid (неструктурированные).
PImageData (.pvti) — Parallel vtkImageData (структурированные).
PPolyData (.pvtp) — Parallel vtkPolyData (неструктурированные).
PRectilinearGrid (.pvtr) — Parallel vtkRectilinearGrid (структурированные).
PStructuredGrid (.pvts) — Parallel vtkStructuredGrid (структурированные).
PUnstructuredGrid (.pvtu) — Parallel vtkUnstructuredGrid (неструктурированные).
Все типы файлов VTK XML являются допустимыми документами XML.* Элементом уровня документа является VTKFile:

Атрибуты элемента:
type — Тип файла (маркированные элементы в предыдущем списке).
version — Номер версии файла в формате «major.minor».
byte_order — Машинный порядок байтов, в котором хранятся данные. Это либо «BigEndian», либо «LittleEndian».
compressor — Некоторые данные в файле могут быть сжаты. Указывает подкласс vtkDataCompressor, который использовался для сжатия данных.
Внутри элемента VTKFile находится элемент, имя которого соответствует типу формата данных (т. е. атрибуту type). Этот элемент описывает топологию набора данных и отличается для последовательного и параллельного форматов, которые описаны следующим образом.
Форматы последовательных XML-файлов. Элемент VTKFile содержит один элемент, имя которого соответствует типу набора данных, описываемого файлом. Мы называем его элементом набора данных, который является одним из ImageData, RectilinearGrid, StructuredGrid, PolyData или UnstructuredGrid. Элемент набора данных содержит один или несколько элементов Piece, каждый из которых описывает часть набора данных. Вместе элемент набора данных и элементы Piece определяют весь набор данных.
Каждая часть набора данных должна определять геометрию (точки и ячейки) этой части вместе с данными, связанными с каждой точкой или ячейкой. Геометрия указывается по-разному для каждого типа набора данных, но каждая часть каждого набора данных содержит элементы PointData и CellData, определяющие данные для каждой точки и ячейки в части. Общая структура для каждого формата последовательного набора данных выглядит следующим образом:
ImageData — Каждая часть ImageData определяет свою протяженность в пределах всей протяженности набора данных. Точки и ячейки.
* Есть один случай, когда файл не является допустимым документом XML. Если раздел AppendedData не закодирован как base64, присутствуют необработанные двоичные данные, которые могут нарушать спецификацию XML. Это не поведение по умолчанию, и должно быть явно включено пользователем.
неявно описываются степенью, началом и интервалом. Обратите внимание, что начало и интервал постоянны для всех частей, поэтому они указаны как атрибуты элемента XML ImageData следующим образом.

RectilinearGrid — Каждая часть RectilinearGrid определяет свою протяженность в пределах всей протяженности набора данных. Точки описываются элементом Coordinates. Ячейки неявно описываются протяженностью.

StructuredGrid — Каждая часть StructuredGrid определяет свою протяженность в пределах всей протяженности набора данных. Точки явно описываются элементом Points. Ячейки неявно описываются протяженностью.

PolyData — Каждая часть PolyData определяет набор точек и ячеек независимо от других частей. Точки явно описываются элементом Points. Ячейки явно описываются элементами Verts, Lines, Strips и Polys.

UnstructuredGrid — Каждая часть UnstructuredGrid определяет набор точек и ячеек независимо от других частей. Точки явно описываются элементом Points. Ячейки явно описываются элементом Cells.

Каждый набор данных описывает данные, связанные с его точками и ячейками, с помощью XML-элементов PointData и CellData следующим образом:

VTK позволяет связать произвольное количество массивов данных с точками и ячейками набора данных. Каждый массив данных описывается элементом DataArray, который, помимо прочего, дает каждому массиву имя.
Следующие атрибуты PointData и CellData используются для указания активных массивов по имени:
Scalars — Имя активного массива скаляров, если таковой имеется.
Vectors — Имя активного массива векторов, если таковой имеется.
Normals — Имя активного массива нормалей, если есть.
Tensors — Имя активного массива тензоров, если есть.
TCoords — Имя активного массива координат текстуры, если таковой имеется.
Некоторые наборы данных описывают свои точки и ячейки, используя различные комбинации следующих общих элементов:
Points — Элемент Points явно определяет координаты для каждой точки по отдельности. Он содержит один элемент DataArray, описывающий массив с тремя компонентами на значение, каждый из которых указывает координаты одной точки.

Coordinates — Элемент Coordinates определяет координаты точек для экстента, указывая ординату вдоль каждой оси для каждого целочисленного значения в диапазоне экстента. Он содержит три элемента DataArray, описывающих ординаты вдоль осей x-y-z соответственно.

Verts, Lines, Strips, и Polys — Элементы Verts, Lines, Strips и Polys явно определяют ячейки, указывая связность точек. Типы ячеек неявно известны по типу элемента, в котором они указаны. Каждый элемент содержит два элемента DataArray. Первый массив указывает связность точек. Все списки точек ячеек объединяются вместе. Второй массив указывает смещение в массив связности для конца каждой ячейки.

Cells — Элемент Cells определяет ячейки явно, указывая связность точек и типы ячеек. Он содержит три элемента DataArray. Первый массив определяет связность точек. Все списки точек ячеек объединяются вместе. Второй массив определяет смещение в массиве связности для конца каждой ячейки. Третий массив определяет тип каждой ячейки. (Примечание: типы ячеек определены на рисунке 2 и рисунке 3).

Все спецификации данных и геометрии используют элементы DataArray для описания своего фактического содержимого следующим образом:
DataArray — Элемент DataArray хранит последовательность значений одного типа. На одно значение может приходиться один или несколько компонентов.

Атрибуты элементов DataArray описываются следующим образом:
type — Тип данных одного компонента массива. Это один из Int8, UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Float32, Float64. Примечание: 64-битные целочисленные типы поддерживаются только если включен VTK_USE_64BIT_IDS (переменная CMake — см. «CMake») или платформа 64-битная.
Name — Имя массива. Обычно это краткое описание данных, хранящихся в массиве.
NumberOfComponents — Количество компонентов на значение в массиве.
format — Способ, которым сами значения данных сохраняются в файле. Это «ascii», «binary» или «appended».
offset — Если атрибут формата равен «appended», это указывает смещение от начала раздела добавленных данных до начала данных этого массива.
Атрибут формата (format) выбирает один из трех способов хранения значений данных.:
format=”ascii” — Данные перечислены в ASCII непосредственно внутри элемента DataArray.
Пробелы используются для разделения.
format=”binary” — Данные кодируются в base64 и перечислены непрерывно внутри элемента DataArray. Данные также могут быть сжаты перед кодированием в base64. Порядок байтов данных соответствует указанному в атрибуте byte_order элемента VTKFile.
format=”appended” — Данные хранятся в разделе «appended data». Поскольку многие элементы DataArray могут хранить свои данные в этом разделе, атрибут offset используется для указания того, где начинаются данные каждого DataArray. Этот формат используется по умолчанию писателями VTK.
Раздел добавленных данных хранится в элементе AppendedData, который вложен в VTKFile после элемента набора данных:

Раздел добавленных данных начинается с первого символа после подчеркивания внутри элемента AppendedData. Подчеркивание не является частью данных, но всегда присутствует. Данные в этом разделе всегда находятся в двоичной форме, но могут быть сжаты и/или закодированы в base64. Порядок байтов данных соответствует указанному атрибутом byte_order элемента VTKFile. Данные каждого DataArray хранятся непрерывно и добавляются сразу после данных предыдущего DataArray без разделителя. Атрибут offset DataArray указывает смещение позиции файла от первого символа после подчеркивания до начала его данных.
Параллельные форматы файлов (Parallel File Formats). Форматы параллельных файлов на самом деле не хранят никаких данных в файле. Вместо этого данные разбиваются на части, каждая из которых хранится в последовательном файле того же типа набора данных.
Элемент VTKFile содержит один элемент, имя которого соответствует типу набора данных, описываемого файлом, но с префиксом «P». Мы называем его элементом параллельного набора данных, который является одним из PImageData, PRectilinearGrid, PStructuredGrid, PPolyData или PUnstructuredGrid.
Элемент параллельного набора данных и те, которые вложены внутри, указывают типы массивов данных, используемых для хранения точек, данных точек и данных ячеек (тип массивов, используемых для хранения ячеек, фиксируется VTK). Элемент на самом деле не содержит никаких данных, но вместо этого включает список элементов Piece, которые указывают источник, из которого следует читать каждую часть. Отдельные части хранятся в соответствующем последовательном формате файла. Параллельный файл должен указывать тип и структурную информацию, чтобы читатели могли обновлять информацию конвейера, фактически не читая файлы частей.
Общая структура для каждого формата параллельного набора данных выглядит следующим образом:
PImageData — Элемент PImageData определяет весь объем набора данных и количество уровней-призраков, на которые перекрываются объемы отдельных частей. Атрибуты Origin и Spacing неявно определяют местоположения точек. Каждый элемент Piece описывает объем одной части и файл, в котором она хранится.

PRectilinearGrid — Элемент PRectilinearGrid определяет
весь объем набора данных и количество уровней-призраков, на которые
перекрываются объемы отдельных частей. Элемент PCoordinates описывает
тип массивов, используемых для указания ординат точек вдоль каждой
оси, но фактически не содержит данных. Каждый элемент Piece описывает
объем одной части и файл, в котором она хранится.
PStructuredGrid — Элемент PStructuredGrid определяет
весь объем набора данных и количество уровней-призраков, на которые
перекрываются объемы в отдельных частях. Элемент PPoints описывает
тип массива, используемого для указания местоположений точек, но фактически
не содержит данные. Каждый элемент Piece описывает объем одной части
и файл, в котором она хранится. 
PPolyData — Элемент PPolyData определяет количество уровней-призраков, на которые накладываются отдельные части. Элемент PPoints описывает тип массива, используемого для указания местоположений точек, но фактически не содержит данных. Каждый элемент Piece определяет файл, в котором хранится часть.

PUnstructuredGrid — Элемент PUnstructuredGrid определяет количество уровней-призраков, на которые накладываются отдельные части. Элемент PPoints описывает тип массива, используемого для указания местоположений точек, но фактически не содержит данных. Каждый элемент Piece определяет файл, в котором хранится часть. Каждый набор данных использует элементы PPointData и PCellData для описания типов массивов данных, связанных с его точками и ячейками.

Каждый набор данных использует элементы PPointData и PCellData для описания типов массивов данных, связанных с его точками и ячейками.
PPointData and PCellData — Эти элементы просто отражают элементы PointData и CellData из форматов последовательных файлов. Они содержат элементы PDataArray, описывающие массивы данных, но без каких-либо фактических данных.

Для наборов данных, требующих спецификации точек, следующие элементы отражают их аналоги из формата последовательного файла:
PPoints — Элемент PPoints содержит один элемент PDataArray, описывающий массив с тремя компонентами. Массив данных на самом деле не содержит никаких данных.

PCoordinates — Элемент PCoordinates содержит три элемента PDataArray, описывающих массивы, используемые для указания ординат по каждой оси. Массивы данных на самом деле не содержат никаких данных.

Все спецификации данных и геометрии используют элементы PDataArray для описания типов массивов данных:
PDataArray — Элемент PDataArray определяет type, Name и, опционально, атрибуты NumberOfComponents из элемента DataArray. Он не содержит фактических данных. Это может использоваться читателями для создания массива данных в их выводе без необходимости считывать какие-либо реальные данные, что необходимо для эффективных обновлений конвейера в некоторых случаях.

Пример. Ниже приведен полный пример, определяющий vtkPolyData, представляющий куб с некоторыми скалярными данными по его точкам и граням.

