ГОСТ Р 57591-2017
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
АДДИТИВНЫЕ ТЕХНОЛОГИЧЕСКИЕ ПРОЦЕССЫ. БАЗОВЫЕ ПРИНЦИПЫ - часть 4
Обработка данных
Additive processes. Basic principles. Part 4. Dataprocessing
ОКС 71.020
71.100.01
77.160
Дата введения 2017-12-01
Предисловие
1 РАЗРАБОТАН Федеральным государственным унитарным предприятием "Всероссийский научно-исследовательский институт стандартизации и сертификации в машиностроении" (ВНИИНМАШ), Акционерным обществом "Наука и инновации" (АО "Наука и инновации")
2 ВНЕСЕН Техническим комитетом по стандартизации ТК 182 "Аддитивные технологии"
3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 9 августа 2017 г. N 847-ст
4 ВВЕДЕН ВПЕРВЫЕ
5 ПЕРЕИЗДАНИЕ. Апрель 2019 г.
Правила применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ "О стандартизации в Российской Федерации". Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок-в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
1 Область применения
Настоящий стандарт содержит требования к формату файлов для аддитивного производства (AMF), которые используются для коммуникационной (для обмена данных) электронной геометрической модели аддитивного производства, включающей в себя пространственное описание геометрии поверхности, со встроенной поддержкой для цвета, материалов, сеток координат, групп элементов и метаданных.
Для поддержки совместимости со стандартами аддитивного производства файлы AMF могут быть использованы только при условии соблюдения настоящего стандарта и при условии использования расширяемого языка разметки (XML) (см. [1]).
Объединение XML и AMF возможно в соответствии со стандартами ISO и ASTM. Руководство по осуществлению такого объединения представлено в приложении А.
Настоящий стандарт не устанавливает каких-либо четких механизмов обеспечения целостности данных, электронных подписей и шифрования.
2 Нормативные ссылки
В настоящем стандарте использованы нормативные ссылки на следующие стандарты:
ГОСТ 2.511 Единая система конструкторской документации (ЕСКД). Правила передачи электронных конструкторских документов. Общие положения
ГОСТ 20886 Организация данных в системах обработки данных. Термины и определения
Примечание - При пользовании настоящим стандартом целесообразно проверить действие ссылочных стандартов в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет или по ежегодному информационному указателю "Национальные стандарты", который опубликован по состоянию на 1 января текущего года, и по выпускам ежемесячного информационного указателя "Национальные стандарты" за текущий год. Если заменен ссылочный стандарт, на который дана недатированная ссылка, то рекомендуется использовать действующую версию этого стандарта с учетом всех внесенных в данную версию изменений. Если заменен ссылочный стандарт, на который дана датированная ссылка, то рекомендуется использовать версию этого стандарта с указанным выше годом утверждения (принятия). Если после утверждения настоящего стандарта в ссылочный стандарт, на который дана датированная ссылка, внесено изменение, затрагивающее положение, на которое дана ссылка, то это положение рекомендуется применять без учета данного изменения. Если ссылочный стандарт отменен без замены, то положение, в котором дана ссылка на него, рекомендуется применять в части, не затрагивающей эту ссылку.
3 Термины, определения и сокращения
3.1 Термины и определения
В настоящем стандарте применены следующие термины с соответствующими определениями:
3.1.1 потребитель AMF: Программное обеспечение для чтения файлов аддитивного производства (AMF), используемых для изготовления, визуализации или анализа.
Примечание - AMF-файлы также используются для просмотра, анализа и верификации программного обеспечения.
3.1.2 редактор AMF: Программное обеспечение для считывания и перезаписи файлов аддитивного производства (AMF) при их преобразовании.
Примечание - Редактор AMF используется для преобразования AMF из одной формы в другую (например, когда необходимо преобразовать все изогнутые треугольники в плоские треугольники).
3.1.3 производитель AMF: Файл программного обеспечения для записи (генерации) файла аддитивного производства (AMF) по исходным геометрическим данным.
Примечание - AMF-файлы обычно экспортируются автоматически из программного обеспечения для проектирования (САПР), сканирования или непосредственно из алгоритмов вычислительной геометрии.
3.1.4 атрибут: Характеристика данных, представляющих собой один или более аспектов или дескрипторов данных в элементе.
3.1.5 редактор: Все элементы текста, связанные с файлами аддитивного производства (AMF).
Примечание - AMF-файлы обычно экспортируются автоматически из программного обеспечения для проектирования (САПР), сканирования или непосредственно из алгоритмов вычислительной геометрии.
3.1.6 элемент: Информация в XML-документе, состоящая из открывающего тега, конца тега, содержимого между тегами и атрибутами;
3.1.7 расширяемый язык разметки, XML; eXtensible Markup Language. Рекомендован Консорциумом Всемирной паутины (W3C): Стандарт Консорциума Всемирной паутины, разработанный для пометки информации, содержащейся в документах, предлагающий средства для предоставления содержимого в одинаково хорошо удобном формате для чтения человеком и компьютерными программами.
Примечание - Благодаря использованию настраиваемого стиля таблиц и схем, информация может быть представлена унифицированным способом, позволяющим обмен как информацией (данными), так и форматом (метаданными).
3.1.8 набор данных: Идентифицированная совокупность физических записей, организованная одним из установленных в системе обработки данных способов и представляющая файлы или части файлов в среде хранения. [ГОСТ 20886-85, статья 8] |
3.1.9 информационный объект: Идентифицированная (наименованная) совокупность данных в информационной системе, обладающая набором атрибутов (характеристик). [ГОСТ 2.511-2011, статья 3.1.13] |
3.2 Сокращения
AMF | - | формат компьютерных данных, альтернативный формату Stl., применяемому с 1987 г. в качестве базового для передачи данных компьютерной 3D-модели в аддитивную машину для построения физической модели. AMF базируется на языке EML (Extensible Markup Language - расширяемый язык разметки) и поддерживает размерность, цвет, текстуру, триангуляцию, сетчатые структуры, которые Stl-формат не поддерживает; более компактный, чем Stl-файл; |
XML | - | текстовый файл, содержащий список элементов и атрибутов; |
Бит | - | Единица измерения информации в двоичной системе счисления; |
ID | - | уникальный признак объекта, позволяющий отличать его от других объектов; |
RGBA | - | изображение цвета материала (красный/зеленый/синий) с техникой создания эффекта полупрозрачности альфа-композитинг (англ. Alpha compositing); |
SRGB | - | стандарт представления цветового спектра с использованием модели RGB; |
RGB | - | аддитивная цветовая модель, описывающая способ кодирования цвета для цветовоспроизведения; |
2D | - | двухмерное проектирование; |
3D | - | трехмерное проектирование; |
ZIP | - | формат архивации файлов и сжатия данных без потерь; |
PRSM | - | код для псевдослучайной пространственной карты; |
STL | - | формат файлов, применяемый с 1987 г. в качестве базового для передачи данных компьютерной 3D-модели в аддитивную машину для построения физической модели. |
4 Общие положения
4.1 Принципы форматирования
4.1.1 Существует естественный компромисс между форматом файла и его полезностью для определенных целей. Функции, предназначенные для удовлетворения одних целей, могут помешать достижению других. Требования к файлам AMF, описанные в настоящем стандарте, предназначены для решения задач, указанных в 4.1.2-4.1.7.
4.1.2 Технология независимости
AMF описывает объект таким образом, чтобы любая машина могла построить его в соответствии со своими характеристиками. Разрешение и толщина слоя построения независимы и не содержат информацию, относящуюся к какому-либо конкретному производственному процессу или методу. Это не отменяет функций, которые поддерживаются оборудованием (например, цвет, материалы и т.п.). Эти функции определены таким образом, чтобы избежать исключительности.
4.1.3 Доступность
AMF легко распознать и понять. Файлы можно читать и отлаживать в простом текстовом редакторе. Идентичная информация не хранится в нескольких местах.
4.1.4 Масштабируемость
Размер файла и время обработки хорошо масштабируются с увеличением сложности конфигурации детали и улучшением разрешающей способности, а также точности производственного оборудования. На случай, когда необходимо производство с очень высоким разрешением, предусмотрена возможность обработки больших массивов однотипных объектов (например, сеток и решеток) и криволинейных поверхностей, в том случае, когда необходимо производство с очень высоким разрешением.
4.1.5 Производительность
AMF обеспечивает разумный срок для чтения и записи, а также разумный размер файла для крупных объектов. Характеристики представлены в приложении Б.
4.1.6 Обратная совместимость
Любой существующий файл STL может быть преобразован непосредственно в файл AMF без потери информации и необходимости добавления какой-либо дополнительной информации. AMF-файлы можно легко конвертировать обратно в формат STL для использования на устаревших системах, при этом дополнительные функции будут потеряны. Этот формат поддерживает треугольную сетку геометрии поверхности.
4.1.7 Перспективы совместимости
Чтобы оставаться актуальным в быстро меняющейся отрасли, этот формат является легко расширяемым, при этом сохраняется совместимость с предыдущими версиями.
4.2 Рекомендации для включения новых элементов
4.2.1 Любой новый предложенный элемент должен применяться во всех аппаратных платформах и технологиях, которые могут быть использованы для достижения желаемого результата.
4.2.2 Новые элементы, предложенные в настоящем стандарте, описываются объектами, а не способами их построения. Например, в будущем элемент <hollow> может быть использован в виде пустого объема, если это возможно. Однако элемент <objectLayerFillPath>, в котором описывается создание полого объема, не предполагает особый процесс изготовления.
5 Структура данной спецификации
5.1 Формат
Информация, указанная в спецификации, сохраняется в формате XML 1.0. XML - это текстовый файл, содержащий список элементов и атрибутов. Применяя этот широко принятый формат данных, возможно использовать множество инструментов для создания, просмотра, манипулирования, обработки и хранения AMF-файлов. XML является удобочитаемым для человека. XML может быть сжат или зашифрован с использованием стандартных процедур.
5.2 Гибкость
Еще одним существенным преимуществом XML являются его гибкость. Отсутствие какого-либо параметра или дополнительный параметр не являются проблемой для синтаксического анализатора при условии, что документ соответствует стандарту XML. Использование имен XML позволяет добавлять - например, в устаревшее программное обеспечение - новые возможности без разрушения старой версии синтаксического анализатора.
5.3 Точность
Этот формат файла не учитывает точность представления числовых значений. Он несет ответственность за программу, генерирующую написание такого количества цифр, которое необходимо для правильного представления целевого объекта. Однако потребитель AMF должен прочитать и обработать числа двойной точности (64 бит).
5.4 Будущие изменения и дополнения
В то время как дополнительные элементы XML могут быть предварительно добавлены к любому файлу AMF для внутренних целей, такие добавки не должны рассматриваться как часть данной спецификации. Неофициальный элемент AMF может быть проигнорирован любым потребителем AMF и не может быть сохранен или воспроизведен приложением редактора. Элемент становится официальным только тогда, когда он принят в данной спецификации.
6 Общая структура
6.1 Файл AMF должен начинаться с объявления XML с указанием версии XML и кодировки, например:
<?xmlversion="1.0" encoding="UTF-8"?>
По умолчанию XML-версия должна быть 1.0. Необходимо указывать только utf-8 и utf-16. Нераспознанная кодировка должна вызывать сбой файла загрузки.
6.2 Пробелы и XML-стандарты могут быть внедрены в файл и должны игнорироваться любым интерпретатором:
<!-- ignorethiscomment -->
6.3 Оставшаяся часть файла должна быть заключена между началом </amf> и концом </amf> тегов. Элемент указывает на тип файла и выполняет требование о том, чтобы все XML-файлы имели один корневой элемент. Атрибут версии файла должен быть совместим с версией стандарта AMF. Также можно использовать стандартные атрибуты XML. Размеры изделия определяют в миллиметрах, дюймах, футах, метрах и микронах. По умолчанию размеры изделия определяют в миллиметрах, например:
<amfunit="millimeter" version="1.0" xml:lang="en"
xmins:amf="www.astm.org/Standards/F2915-14">
6.4 Стартовый элемент и закрывающие теги заключены в <amf/>. Есть пять элементов верхнего уровня:
- элемент <object> определяет объем или объемы материала;
- элемент <material> определяет один материал для изготовления. Этот материал должен быть идентифицирован. Идентификатор должен быть уникальным и не равняться 0;
- элемент <texture> - необязательный элемент текстуры. Определяет одно изображение или текстуру для цвета. Текстура имеет свой идентификатор. Идентификатор текстуры должен быть уникальным;
- элемент <constellation> - необязательный элемент созвездия. Иерархически объединяет объекты и другие созвездия в шаблон для печати. Элемент созвездия может содержать идентификатор объекта, который должен быть уникальным. Если не указан элемент созвездия, каждый элемент объекта должен быть импортирован. Потребительское программное обеспечение может определять относительное расположение объектов, если в файле указано более одного объекта;
- элемент <metadata> - необязательный элемент метаданных. Указывает дополнительные сведения об объектах и элементах, содержащихся в файле.
6.5 Для полнофункционального файла АМF необходим только один элемент.
7 Характеристики геометрии
7.1 Общие
7.1.1 Элемент верхнего уровня <object> объявляет уникальный идентификатор и должен содержать один дочерний элемент <mesh>. Элемент <mesh> содержит два дочерних элемента: <vertices> и <volume>. Элемент <object> необязательно может ссылаться на материал.
7.1.2 Элемент <vertices> описывает все вершины треугольников, которые используют при построении объекта. Каждой вершине треугольника присваивается идентификационный номер в виде целого числа в том порядке, в котором он объявлен, начиная с нуля. Требуемый дочерний элемент <coordinates> дает позицию в трехмерном (3D) пространстве, используя дочерние элементы <х>, <у> и <z>.
7.1.3 По крайней мере один элемент <volume> должен быть включен после получения информации о вершине треугольника. Каждый <volume> содержится в замкнутом объеме объекта. Несколько элементов <volume> могут быть включены в один объект. Не должно быть перекрытых элементов.
7.1.4 В процессе тесселяции поверхности объема в пределах каждого элемента <volume> несколько элементов <triangle> будут использованы для определения треугольников. Каждый элемент <triangle> должен иметь три вершины. Индексы трех вершин треугольника должны быть указаны с использованием элементов <v1>, <v2> и <v3>. Вершины должны быть упорядочены в соответствии с правилом правой руки (вершины перечисляются в порядке обхода против часовой стрелки). Каждому треугольнику присваивается идентификационный номер в виде целого числа в том порядке, в котором он был объявлен, начиная с нуля (см. рисунок 1).
7.1.5 Геометрия не может быть использована для описания структуры поддержки. Должна быть описана только конечная целевая структура.
Рисунок 1 - Базовый AMF-файл
Примечание - На рисунке 1 показан базовый AMF-файл, содержащий только список вершин треугольников. Эта структура совместима со стандартом STL.
7.2 Сглаженная геометрия
7.2.1 По умолчанию все треугольники должны быть плоскими. В случае наличия изогнутых треугольников необходимо уменьшить количество сетчатых элементов, необходимых для описания криволинейной поверхности. Некоторое программное обеспечение (см. раздел 14) может проигнорировать информацию о кривизне треугольников.
7.2.2 В процессе преобразования изогнутый треугольник должен быть рекурсивно разделен на четыре треугольника, чтобы сформировать окончательный временный набор плоских треугольников. Глубина рекурсии должна равняться пяти.
7.2.3 Создаваемое программное обеспечение, которое генерирует геометрию объектов, должно автоматически определять число криволинейных треугольников. Создаваемое программное обеспечение должно генерировать целевую геометрию объекта, заменяя изогнутые треугольники на плоские.
7.2.4 Вершина изогнутого треугольника может содержать дочерний элемент <normal>, который указывает нормаль к поверхности в этой вершине. Нормаль должна быть единичной длины, направлена наружу и расположена перпендикулярно к вершинам треугольника.
7.2.5 Если вершина треугольника ссылается на два элемента <volume>, нормаль является тождественной для каждого элемента <volume>.
7.2.6 Элемент <edge> используют для определения кривизны одного нелинейного края, соединяющего две вершины треугольников. Кривизна задается касательными векторами, направленными от начала к концу кромки.
7.2.7 Нормали не определяют для вершин плоских треугольников. Боковые элементы не определяются для кромок плоских треугольников.
7.2.8 При интерпретации нормалей и касательных необходимо использовать Эрмитову интерполяцию второй степени. Формулы для проведения интерполяции указаны в пункте А.3 (приложения А).
7.3 Ограничения в геометрии
При построении геометрии объекта следует соблюдать следующие ограничения:
- каждый треугольник должен иметь ровно три различные неколлинеарные вершины;
- треугольники не должны пересекаться. Треугольники могут соприкасаться только в их общих ребрах или общих вершинах;
- объемы должны быть описаны в виде непрерывного пространства;
- объемы не должны перекрываться;
- каждая вершина должна иметь ссылку не менее чем на три треугольника;
- каждая пара вершин должна ссылаться либо на ноль, либо на два треугольника в одном элементе <volume>;
- любые две вершины не должны иметь одинаковые координаты. Может быть использован допуск 8-10 единиц;
- внешнее направление треугольников с общим ребром в объеме должно быть последовательным. Внешнее направление определяют порядком вершин.
8 Характеристики материала
8.1 Общие
8.1.1 Материалы вводятся с помощью дополнительного элемента <material>. Каждый материал может быть определен только с помощью одного элемента <material>. Каждому материалу присваивают уникальный идентификатор. Материал может указываться через значение атрибута ID в элементе <volume>. ID "0" материала зарезервирован для представления пустот в объеме изделия (рисунок 2).
Характеристики материала содержатся внутри каждого элемента <material>. Дочерний элемент <colour> используют для указания цвета материала (красный/зеленый/синий/альфа (RGBA)) (пункт 9). Дополнительные свойства материала могут быть определены с помощью элемента <metadata> (см. рисунок 3). Описание элементов AMF содержится в пункте А.1 (приложения А).
a) - плоский треугольник; б) - изогнутый треугольник с использованием нормалей; в) - треугольник, использующий касательные; г) - разбиение изогнутого треугольника на четыре треугольника; д) - файл AMF, содержащий криволинейную геометрию
Рисунок 2 - Типы треугольников, используемых в сетке
Примечание - На рисунке показан AMF-файл, содержащий пять материалов. Материал 3 - это однородная смесь первых двух материалов в соотношении 40/60%. Материал 4 - вертикально-градиентный материал. Материал 5 - каркас со структурой шахматной доски.
8.2 Смешанные и градиентные материалы и субконструкции
8.2.1 Новые материалы можно определять как композиции из других материалов. Элемент <composite> используют для указания пропорций композиции как константу или формулу в зависимости от координат х, у и z. Постоянная пропорция смешивания приведет к получению однородного материала. Изменение состава в зависимости от координат приводит к градиентному составу материала. Более сложные координатно-зависимые пропорции могут приводить к получению нелинейных градиентных материалов. Формула удельного веса может также обращаться к функции текстур tex (textureid,x,y,z) описание приведено в А.1 (приложение А).
8.2.2 В композите может быть использовано любое количество материалов.
8.2.3 Любое отрицательное значение доли материала должно быть интерпретировано как нулевая пропорция. Сумма долей различных материалов должна быть равна 1.
8.3 Пористые материалы
8.3.1 Ссылка на функцию materialid "0" (пусто) используется для определения пористой структуры. Доля пустоты должна быть или 0 или 1. Любое другое число будет толковаться как 1.
8.3.2 Элемент <composite> теоретически может быть использован для полного описания геометрии объекта, как отдельная функция или как текстура со ссылкой на пустоту. Целевое использование элемента <composite> со ссылкой на пустоту необходимо для описания клеточных мезоструктур.
8.4 Стохастические материалы
8.4.1 Ссылка на rand-функцию (х, у, z) может быть использована для определения псевдослучайных материалов. Например, композитный материал может объединить два базовых материала в случайных пропорциях, в которых точная пропорция может зависеть от координат различными способами. Rand-функция (х, у, z) генерирует случайную точку в диапазоне [0,1], которая сохраняется на протяжении всех вызовов функции, см. А.4 (приложения А).
9 Характеристики цвета
9.1 Общие
9.1.1 Цвета могут быть введены с использованием элемента <colour> и указанием формата RGBA. По умолчанию цветовое пространство должно быть SRGB (см. [2]), но альтернативные профили могут быть установлены с помощью тега метаданных в корневой <amf> элемент, см. А.1 (приложение А). Элемент <colour> может быть связан с элементом <material>. Чтобы связать цвет и материал, используется элемент <object>; чтобы покрасить весь объект, используется элемент <volume>. Элемент <triangle> используется для покраски треугольника. Элемент <vertex> служит для связи цвета с определенной вершиной треугольника (см. рисунок 3).
9.1.2 Если цвет не указан, то по умолчанию используют белый цвет.
9.1.3 Цвет объекта может быть определен цветом материала спецификации. Цвет перекрывает объем объекта.
Рисунок 3 - Характеристики цвета
Примечание - Сплошной цвет может быть связан с материалом томаса или вершины. Вершина может быть также связана с координатой в файле цвета текстуры.
9.2 Градации цвета и отображение текстур
9.2.1 Цвет может также быть определен со ссылкой на формулы, которые могут использовать различные функции, включая функцию карты текстуры.
9.2.2 При обращении к формуле элемент <colour> указывает цвет, который зависит от координаты. В файлах могут быть использованы любые математические выражения, которые сочетают в себе функции, описанные в А.2 (приложения А). Например, использование rand-функции (функции случайных значений) допускается для псевдослучайных цветовых схем. Тех-функция допускает зависимость цвета от карты текстуры или изображения. Чтобы задать полноцветное изображение, как правило, требуется три текстуры - по одной на каждый цветовой канал. Чтобы создать монохромное изображение, обычно достаточно одной текстуры.
9.2.3 Когда вершины одного треугольника имеют разные цвета, внутренний цвет треугольника будет линейной интерполяцией между этими цветами, если цвет треугольника не был указан явно (цвет треугольника имеет приоритет над цветом вершины). Если все три вершины треугольника содержат отображение одной и той же ID-текстуры для любого канала (г, g, b или а), то цвет этого канала треугольника должен быть извлечен из текстурной карты, отменяя при этом цвет треугольника.
9.3 Прозрачность
Создание видимости частичной прозрачности может быть выполнено через канал прозрачности <а> альфа-композитингом путем объединения цвета переднего плана с цветом фона. Значение "0" указывает нулевую прозрачность, то есть ситуацию, когда используется только цвет переднего плана. Значение "1" указывает полную прозрачность, то есть ситуацию, когда используется только цвет фона. Промежуточные значения линейно интерполируются между цветом фона и цветом переднего плана. Отрицательные значения округлены до 0, а значения больше единицы - до 1. Цвет фона треугольника должен соответствовать цвету вершины. Цвет фона вершины должен соответствовать цвету объема, затем - цвету объекта и затем - цвету материала (в порядке убывания приоритета).
10 Характеристики текстур
10.1 Элемент <texture> используется для связывания textureid (текстурирования) с определенными текстурными данными. Размер текстурной карты должен быть указан. Поддерживаются двумерные (2D) и трехмерные (3D) текстуры. Данные должны быть представлены в виде ряда значений градаций серого в диапазоне [0-255]. Каждое значение хранится в одном байте и кодируется в Base64.
10.2 Упорядочение данных должно начинаться с левого верхнего угла и идти слева направо и сверху вниз. 3D текстура будет указывать сначала на первоначальный слой, а затем повторяться для всех последующих слоев в соответствии с правилом правой руки. Данные будут оптимизированы или добавлены с нулевыми значениями в соответствии с указанным размером текстуры.
10.3 Для наложения текстуры на треугольник используется элемент <texmap>, определяющий U-, V- (опционально) и W-координаты для каждой вершины этого треугольника. Если текстура имеет свойство "черепица" и соответствует значению True, то любые значения U, V, W, не попадающие в диапазон [0,1], будут определяться по модулю 1. Если текстура имеет свойство "черепица" и соответствует значению false, то значения, которые не попадают в пределы диапазона [0,1], будут соответствовать 0 (прозрачный). Текстуры должны быть линейно интерполированы для каждого треугольника. Треугольник должен включать только один элемент <texmap>. Перекрывающиеся текстуры должны быть объединены в единую текстуру, прежде чем накладываться на сетку.
11 Элементы группирования (созвездия)
11.1 Несколько объектов могут быть размещены вместе с помощью элемента <constellation> (см. рисунок 4). Элемент <constellation> может определить положение и ориентацию объектов для повышения эффективности упаковки и описать большие массивы одинаковых предметов. Элемент <instance> определяет перемещение и вращение объекта в процессе преобразования. Смещение и вращение должны быть определены по отношению к исходной позиции и ориентации объекта, определенным первоначально. Углы поворота должны быть указаны в градусах. Сначала применяются вращения вокруг оси х и оси у, а затем - вокруг оси z.
11.2 Элемент <constellation> может включать в себя другие элементы <constellation> с несколькими уровнями иерархии. Однако циклические определения элементов <constellation> использоваться не должны.
11.3 При наличии нескольких объектов и элементов <constellation>, определенных в одном файле, доступны для печати только объекты и элементы <constellation> верхнего уровня.
11.4 В элементе <constellation> ориентация печати будет указана по умолчанию.
Рисунок 4 - Элементы <constellation>
Примечание - Элементы <constellation> могут включать в себя несколько объектов вместе.
12 Метаданные
Элемент <metadata> необязательно может использоваться для указания дополнительной информации об определенных объектах, геометрии и материалах (см. рисунок 5). С помощью этого элемента могут указываться имя, текстовое описание, авторство, информация об авторских правах и специальные инструкции. Элемент <metadata> может быть включен в качестве дочернего элемента в <amf> с целью указания атрибутов всего файла или в качестве дочернего элемента объектов, объемов и материалов. Зарезервированные типы метаданных и их значения перечислены в А.1 (приложение А).
Рисунок 5 - Метаданные
Примечание - Дополнительные сведения об объекте могут храниться с помощью элемента метаданных.
Модифицированные типы метаданных должны использовать другое имя, например:
<xamf:metadata type="myattribute">mydata</xamf:metadata>
13 Архивирование
13.1 AMF должен храниться либо в виде простого текста, либо в сжатом виде. Сжатие должно быть выполнено в формате ZIP-архива (см. [3]) и может быть сделано пользователем во время записи с помощью приложения и нескольких открытых библиотек сжатия, таких как Reference (см. [4]).
13.2 Обе версии файла - сжатая и несжатая - будут иметь расширение AMF. Используемое программное обеспечение должно определить, является ли файл архивным или нет. Если файл заархивирован, то необходимо выполнить его декомпрессию во время чтения. Любой файл, который не начинается с тега <?xml>, должен быть интерпретирован как сжатый файл xml.
13.3 Кроме того, другие файлы - например, электронные подписи - могут быть включены в архив ZIP. Тем не менее только AMF-файл с тем же именем, что и файл архива, будет проанализирован программным обеспечением. Отсутствие файла с таким именем вызовет ошибку.
14 Минимальные требования для реализации
14.1 Минимальный AMF производителя должен генерировать сжатый файл с одного объекта. Один объект будет содержать сетку, включающую только один том.
14.2 Минимальный AMF потребителя должен разархивировать файл с одного объекта и игнорировать любые цвет, материал, текстуру, элемент <constellation> или метаданные.
Приложение А
(справочное)
Руководство по внедрению схемы AMF XML
А.1 Элементы AMF
Перечень элементов AMF представлен в таблице А.1.
Таблица А.1 - Перечень элементов AMF
Элемент | Родительский | Атрибут | Разре- | Описание |
<nх>, | <normal> | Нет | Нормализованные х-, у- или z-компоненты нормали к поверхности в вершине. | |
<volume> | <mesh> | Да | Определяет объем от установленного списка вершин. | |
materialid | Идентификатор материала, применяемый к этому объему. | |||
<triangle> | <volume> | Да | Определяет треугольник из трех вершин в 3D, в соответствии с правилом правой руки (против часовой стрелки). | |
<v1>, | <triangle> | Индекс вершин, определяющих треугольник или грань. | ||
<texture> | Да | Указывает данные текстуры, которая будет использоваться, с помощью tex-функции в формуле. Содержит последовательность Base64 с закодированными значениями и с указанием значения пикселей текстуры. | ||
id | Назначает для новой текстуры уникальный ID. | |||
width | Ширина (размер по горизонтали, х) текстуры в пикселях. | |||
height | Высота (боковой размер, у) текстуры в пикселях. | |||
depth | Глубина (вертикальный размер, z) текстуры в пикселях. | |||
Определяет, может ли текстура быть плиточной. Значение true означает "плиточная". Любое другое значение не подразумевает плитку. Любая текстура, отображенная за пределами заданного диапазона, должна возвращать к нулевому значению. | ||||
type | Кодирование данных в текстуре. В настоящее время должны быть "оттенки серого". В режиме градаций серого каждый пиксель представлен одним байтом в диапазоне [0-255]. Когда текстура задается с помощью tex-функции, эти значения преобразуются в одну точку в диапазоне [0-1] (см. А.2). Полноцветное изображение, как правило, требует три текстуры - по одному для каждого из цветовых каналов. Графическое отображение прозрачности может потребовать наличия четвертого канала. | |||
<texmapl> | <triangle> | Нет | Карта вершин этого треугольника (u,v,w) с координатами заданной текстуры. Если параметр не указан, координата w должна быть равна нулю. | |
rtexid | ID текстуры красного канала. | |||
gtexid | ID текстуры зеленого канала. | |||
btexid | ID текстуры голубого канала. | |||
atexid | ID текстуры альфа-канала. | |||
<utext1>, | <texmap> | Нет | Описание: координаты и, v и w (опционально) вершин треугольника 1, 2 и 3. | |
<ytext1>, | ||||
<wtext1>, | ||||
<material> | <amf> | Да | Доступный материал. | |
id | Уникальный ID материала. Значение "0" ID материала зарезервировано для обозначения пустот или расходуемого мат-ла. | |||
<composite> | <material> | Да | Композитный материал. Значение числовой константы или математические функции координат х, у, z, определяющее соотношение материалов (materialid). Если значение отрицательное, оно считается равным нулю. Дробное значение числа должно быть округлено до 1. Если оно равно нулю, то материал отсутствует (пустота). Пустоты материалов не должны быть смешаны. См. в п.А.2 список допустимых математических функций. | |
materialid | Ссылка на существующий материал. Ссылка не должна быть рекурсивной или циклической. | |||
<constellation> | <amf> | Да | Совокупность объектов с конкретным местоположением. | |
id | Определяет ID нового созвездия. | |||
<instance> | <constellation> | Да | Совокупность объектов для печати. | |
objectid | Ссылка на ID существующего или создаваемого объекта или созвездия. Рекурсивные или циклические ссылки не должны использоваться. | |||
<deltax>, | <instance> | Нет | Расстояние переноса в х-, у- или z-направлении, соответственно, в системе координат объекта для создания экземпляра объекта в текущем созвездии. | |
<rx>, | <instance> | Нет | Поворот объекта в градусах вокруг его х-, у- и z-осей, соответственно, для создания экземпляра объекта в текущем созвездии. Повороты должны быть выполнены в порядке х, а затем у и z. | |
<metadata> | <amf>, <object>, <volume>, <material>, <vertex> | Да | Указывает дополнительную информацию об объекте. | |
type | Тип атрибута. Значения должны быть одним из следующих: |
А.2 Математические операции и функции
Перечень математических операций и функций представлен в таблице А.2.
Формулы, содержащие символы, которые ограничены в XML, такие как "<" и ">", должны содержаться в пункте CDATA (т.e. начинаться с "[CDATA]" и заканчиваться "]]>").
Таблица А.2 - Перечень математических операций и функций
Старшинство | Оператор | Определение |
1 | () | Скобки блока |
2 | ^ | Степень |
3 | * | Умножение |
3 | / | Деление |
Логические операторы возвращают логическое значение 1 или 0, представляющий TRUE и FALSE, соответственно. Нулевое значение представляет FALSE и ненулевое значение представляет TRUE. | ||
4 | + | Добавить |
4 | - | Вычитание |
5 | = | Равно |
5 | <, < = | Меньше, чем(или равно) |
5 | >, > = | Больше, чем(или равно) |
6 | and | Точка пересечения (логическое И) |
6 | or | Союз (логическое ИЛИ) |
6 | xor | Разница (исключающее ИЛИ) |
6 | 1 | Отрицание (логическое НЕ) |
6 | mod(a,b) | Модуль, в том числе частичный. Возвращает остаток от деления а на b. |
6 | sin(x) | Синус, радианы |
6 | cos(x) | Косинусы, радианы |
6 | tan(x) | Тангенс, радианы |
6 | asin(x) | Арксинус, радианы |
6 | acos(x) | Арккосинус, радианы |
6 | atan(x) | Арктангенс, радианы |
6 | floor(x) | Округлить до ближайшего целого |
6 | ceil(x) | Округлить до ближайшего целого |
6 | sqrt(x) | Квадратный корень |
6 | ln(x) | Натуральный логарифм |
6 | Iog10(x) | Базовый десятичный логарифм |
6 | exp(x) | Экспонента |
6 | abs(x) | Абсолютное значение |
6 | max(x,y) | Максимальное значение |
6 | min(x,y) | Минимальное значение |
6 | rand(x,y) | 2D или 3D координаты интервале [0,1] (без учета 1). Возвращаемое число должно быть стойким (тот же номер должен всегда быть возвращен на те же координаты). См. пример реализации в пункте А.4. |
6 | tex (textured,u,v,w) tex(textureid,u,v) | Возвращает скалярное значение с плавающей запятой в диапазоне [0,1], что интерполирует текстуру с textureid в начало координат (u, v, w) для 3D-текстур и (u, v) для 2D-текстур. Если текстура имеет тип "градации серого", диапазон [0,1] соответствует диапазону [0-255] в данных текстурах. Целые значения координат относятся к центру текстуры с первого пикселя, имеющего индекс 1. Если значения дробное, необходимо использовать метод линейной интерполяции. Если координаты выходят за пределы не плиточной текстуры, нулевое значение должно быть возвращено. Если текстура 2D и z координат задана, координата z должна быть проигнорирована. |
Логические операторы возвращают логическое значение 1 или 0, представляющий FALSE и TRUE, соответственно. Нулевое значение представляет FALSE и ненулевое значение представляет TRUE. |
А.3 Формулы для перехода от криволинейных треугольников к прямолинейным
А.3.1 Нелинейные треугольные участки с установленными нормалями поверхности или краями касательных должны быть интерполированы из их трех вершин и шести касательных векторов и/или трех нормалей поверхности с использованием кривых интерполяции Эрмита второго порядка, как описано в пунктах А.3.2-А.3.4.
А.3.2 Для каждого из трех ребер треугольника (см. рисунок А.1 (а)) выполните шаги, описанные в пунктах А.3.2.1-А.3.2.6.
а) - обозначения, используемые для разбиения кривой; б) - треугольники разделены рекурсивно в глубину до пяти
Рисунок А.1 - Типы треугольников, используемых в сетке
Примечание - На рисунке показан пример сферической поверхности, содержащей 320 треугольников, каждый разделен на 16 субтреугольников, используя процедуру, описанную в пункте А.3.
А.3.2.1 Если нормаль в точке не была установлена явно с помощью элемента <normal>, вычислить нормаль можно путем вычисления декартова произведения между двумя краевыми касательными, сходящимися в этой точке. Для этого вычисления используют краевые касательные, указанные элементом <edge>, если таковые имеются, от А.3.2.6, выполненные в предшествующем уровне рекурсии или, если ни один из этих вариантов не доступен, используют прямые линии, соединяющие конечные точки.
А.3.2.2 Повторяют действия пункта А.3.2.1 для нормали в точке .
А.3.2.3 Если тангенс не указан явно в элементе <edge> или предыдущей рекурсии, вычисляют касательный вектор таким образом, чтобы он был перпендикулярен к нормали и находился в плоскости, определяемой нормалью и вектором, соединяющим две вершины и . Для расчета используется формула (А.1), при этом :
(А.1)
А.3.2.4 Повторяют действия пункта А.3.2.1 для тангенса в точке .
А.3.2.5 Центральную точку рассчитывают с помощью интерполяционной кривой Эрмита второго порядка, в соответствии с формулой (А.2):
. (A.2)
А.3.2.6 Центральную касательную рассчитывают с помощью интерполяции кривой Эрмита второго порядка, в соответствии с формулой (А.3):
. (A.3)
A.3.3 Используя полученные три новых вершины и нормали, делят треугольник на четыре подгруппы треугольников.
А.3.4 Повторяют рекурсивно действия пункта А.3.3 для каждого треугольника на глубину до пяти (см. рисунок А.1 (б)).
А.4 Код для псевдослучайной пространственной карты (PRSM)
Цель функции случайных значений (rand) - построить псевдослучайные текстуры, которые будут использоваться в построении объекта. Случайные (х, у), случайные (х, у, z) и случайные (х, у, z, k) возвращают постоянное случайное число в зависимости от установленной координаты. Эти функции позволяют получать 2D- или 3D-координаты в интервале [0,1] (без учета 1). Возвращаемое число должно быть все время постоянным. Если k=1, то второй номер может быть возвращен для этой координаты. Третий номер может быть возвращен для координаты с k=2 и так далее. Пример реализации кода С++ для rsm (х, у, z, k) приведен на рисунке А.2.
Рисунок А.2 - Пример реализации кода C++ для PRSM-функции
Приложение Б
(справочное)
Данные о производительности и будущие возможности
Целью данной спецификации является определение требований к AMF в части оптимального времени чтения и анализа файлов, а также его размеров в зависимости от объема содержащихся данных. В таблице Б.1 приведены статистические данные по эффективному размеру файлов в зависимости от количества треугольников, описывающих объект. Время обработки файла определяется как время, которое необходимо на чтение и анализ данных, содержащихся в файле.
Примечание - Время, необходимое на чтение и анализ файла, невелико по сравнению с общим временем, необходимым для обработки файла в процессе изготовления объекта.
Таблица Б.1 - Размер файлов
Количество | Двоичный Формат STL (несжатый) | Двоичный Формат STL (сжатый) | AMF (несжатый) | AMF (сжатый) |
1016388 | 49,6 Мb | 25,3 Мb | 205,9 Mb | 12,2 Мb |
100536 | 4,9 Мb | 2,3 Mb | 20,1 Мb | 1,2 Мb |
10592 | 518 K | 249 K | 2,1 Мb | 129 K |
1036 | 51 K | 20 K | 203 K | 12 K |
Таблица Б.2 - Время записи (в секундах)
Количество | Двоичный Формат STL (несжатый) | Двоичный Формат STL | AMF (несжатый) | AMF (сжатый) |
1016388 | 0,372 | ~3,4 | 6,8 | 15,5 |
100536 | 0,038 | 0,038 | 0,79 | 1,78 |
10592 | 0,005 | 0,005 | 0,11 | 0,21 |
1036 | 0,001 | 0,001 | 0,06 | 0,06 |
Таблица Б.3 - Время чтения и анализа (в секундах)
Количество | Двоичный Формат STL (несжатый) | Двоичный Формат STL (сжатый) | AMF (несжатый) | AMF (сжатый) |
1016388 | 0,384 | ~1,3 | 6,447 | 6,447 |
100536 | 0,043 | 0,043 | 0,669 | 0,687 |
10592 | 0,005 | 0,005 | 0,107 | 0,107 |
1036 | 0,001 | 0,001 | 0,056 | 0,056 |
Таблица Б.4 - Точность (погрешность вычисляется на единичной сфере)
Количество треугольников | STL | AMF (с нормалями) |
20 | 0,102673 | 0,006777 |
80 | 0,032914 | 0,000788 |
320 | 0,008877 | 8,28Е |
1280 | 0,001893 | 1,01Е |
5120 | 0,000455 | 1,95Е |
20480 | 1,13Е | 4,51Е |
81920 | 2,81 Е | 1,11Е |
327680 | 7,03Е | 2,75Е |
1310720 | 1,76Е | 6,87Е |
Библиография
[1] | W3C | Extensible Markup Language (XML)1.0 (Fifth Edition). W3C,2008, www.w3.оrg/TR/RЕС-xml |
[2] | IЕС 61966-2-1* | Multimedia systems and equipment - Colour measurement and management - Part 2-1: Colour management - Default RGB colour space - sRGB |
________________ * Доступ к международным и зарубежным документам, упомянутым в тексте, можно получить, обратившись в Службу поддержки пользователей. - . | ||
[3] | File Format Specification Z.I.P. | Version: 6.3.4. PKWARE Inc., 2014, |
[4] | Info-ZIP | www.info-zip.org |
УДК 774:002:006.354 | ОКС | 71.020 |
71.100.01 | ||
77.160 | ||
Ключевые слова: аддитивные технологии, аддитивные технологические процессы, базовые принципы |
Электронный текст документа
и сверен по:
, 2019