agosty.ru

ПНСТ 793-2022 Умное производство. Спецификация формата файла аддитивного производства AMF

Обозначение:
ПНСТ 793-2022
Наименование:
Умное производство. Спецификация формата файла аддитивного производства AMF
Статус:
Действует
Дата введения:
01.01.2023
Дата отмены:
01.01.2024
Заменен на:
-
Код ОКС:
25.030 , 35.240.50

Текст ПНСТ 793-2022 Умное производство. Спецификация формата файла аддитивного производства AMF

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ТЕХНИЧЕСКОМУ РЕГУЛИРОВАНИЮ И МЕТРОЛОГИИ

ПРЕДВАРИТЕЛЬНЫЙ НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ


пнет

793—

2022 (ИСО/АСТМ 52915:2020)

УМНОЕ ПРОИЗВОДСТВО

Спецификация формата файла аддитивного производства AMF

[ISO/ASTM 52915:2020, Specification for additive manufacturing file format (AMF) —

Version 1.2, MOD]

Издание официальное

Москва Российский институт стандартизации 2022

Предисловие

  • 1 ПОДГОТОВЛЕН Федеральным государственным бюджетным учреждением «Российский институт стандартизации» (ФГБУ «Институт стандартизации») и Некоммерческим партнерством «Русское общество содействия развитию биометрических технологий, систем и коммуникаций» (Некоммерческое партнерство «Русское биометрическое общество») на основе собственного перевода на русский язык англоязычной версии стандарта, указанного в пункте 4

  • 2 ВНЕСЕН Техническим комитетом по стандартизации ТК 194 «Кибер-физические системы»

  • 3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 17 ноября 2022 г. № 110-пнст

  • 4 Настоящий стандарт является модифицированным по отношению к международному стандарту ИСО/АСТМ 52915:2020 «Спецификация формата файла аддитивного производства (АМР). Версия 1.2» (ISO/ASTM 52915:2020 «Specification for additive manufacturing file format (AMF) — Version 1.2», MOD) путем изменения отдельных фраз (слов, значений показателей, ссылок), которые выделены в тексте курсивом, а также путем изменения его структуры. Внесение указанных технических отклонений направлено на учет потребностей национальной экономики Российской Федерации.

Наименование настоящего стандарта изменено относительно наименования указанного международного стандарта для приведения в соответствие с ГОСТ Р 1.5—2012 (пункт 3.5).

Сопоставление структуры настоящего стандарта со структурой примененного в нем международного стандарта приведено в дополнительном приложении ДА

  • 5 Некоторые элементы настоящего стандарта могут быть объектами патентных прав. Международная организация по стандартизации (ИСО) и Американское общество по испытаниям и материалам (АСТМ) не несут ответственности за установление подлинности каких-либо или всех таких патентных прав

Правила применения настоящего стандарта и проведения его мониторинга установлены в ГОСТР 1.16—2011 (разделы 5 и 6).

Федеральное агентство по техническому регулированию и метрологии собирает сведения о практическом применении настоящего стандарта. Данные сведения, а также замечания и предложения по содержанию стандарта можно направить не позднее чем за 4 мес до истечения срока его действия разработчику настоящего стандарта по адресу: 121205 Москва, Инновационный центр Сколково, ул. Нобеля, д. 1, e-mail: info@tc194.ru и/или в Федеральное агентство по техническому регулированию и метрологии по адресу: 123112 Москва, Пресненская набережная, д. 10, стр. 2.

В случае отмены настоящего стандарта соответствующая информация будет опубликована в ежемесячном информационном указателе «Национальные стандарты» и также будет размещена на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.rst.gov.ru)

© ISO, 2020 © Оформление. ФГБУ «Институт стандартизации», 2022

Настоящий стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен в качестве официального издания без разрешения Федерального агентства по техническому регулированию и метрологии

Содержание

  • 1 Область применения

  • 2 Термины и определения

  • 3 Основные положения

  • 4 Структура спецификации формата

  • 5 Общая структура

  • 6 Спецификация геометрии

  • 7 Спецификация материала

  • 8 Спецификация цвета

  • 9 Спецификация текстуры

  • 10 Элементы группирования

  • 11 Метаданные

  • 12 Сжатие и распространение

  • 13 Реализация с минимальными функциями

Приложение А (справочное) Руководство по реализации XML-схемы АМР

Приложение В (справочное) Данные о производительности и будущие характеристики

Приложение ДА (справочное) Сопоставление структуры настоящего стандарта со структурой примененного в нем международного стандарта

Библиография

Введение

Настоящий стандарт определяет формат обмена для использования в технологиях аддитивного производства. В течение трех десятилетий отраслевым стандартом для передачи информации между программами проектирования и оборудованием для аддитивного производства являлся формат файла стереолитографии (STL). Файл STL определяет только поверхностную сетку и не определяет цвет, текстуру, материал, субструктуру и другие свойства объекта производства. По мере того, как технология аддитивного производства быстро развивается от производства однородных объектов из одного материала к производству полноцветных геометрических объектов с функционально заданными градиентами материалов и микроструктур, растет потребность в стандартном формате файла обмена с поддержкой указанных свойств.

Формат файла аддитивного производства (AMF) имеет много преимуществ. Формат определяет объект в общем виде, не зависящем от технологии, и может быть использован любым оборудованием в меру возможностей. Формат AMF является простым в реализации, масштабируемым и эффективным. Формат имеет обратную совместимость, что позволяет преобразовывать существующий файл STL и добавлять новые функции в будущем.

ПНСТ 793—2022 (ИСО/АСТМ 52915:2020)

ПРЕДВАРИТЕЛЬНЫЙ НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

УМНОЕ ПРОИЗВОДСТВО Спецификация формата файла аддитивного производства AMF

Smart manufacturing. Specification for additive manufacturing file format AMF

Срок действия — с 2023—01—01 до 2024—01—01

  • 1 Область применения

Настоящий стандарт определяет:

  • - спецификацию формата (AMF);

  • - требования к подготовке, отображению и передаче формата AMF.

Использование расширяемого языка разметки XML обеспечивает интероперабельность формата AMF.

Предполагается, что формат AMF будет расширен в будущем, список ожидаемых будущих функций представлен в приложении В.

Настоящий стандарт не устанавливает требования к обеспечению целостности, безопасности и шифрованию данных.

  • 2 Термины и определения

В настоящем стандарте применены следующие термины с соответствующими определениями:

  • 2.1 потребитель AMF (AMF consumer): Программное обеспечение для чтения (синтаксического анализа) файла AMF для производства, визуализации или анализа.

Примечание — Как правило, файлы AMF импортируются оборудованием для аддитивного производства, а также программным обеспечением для просмотра, анализа и верификации.

  • 2.2 редактор AMF (AMF editor): Программное обеспечение для чтения и перезаписи файла AMF для преобразования.

Примечание — Приложения-редакторы AMF используются для преобразования AMF из одной формы в другую, например, для преобразования всех изогнутых треугольников в плоские треугольники или преобразования спецификации пористого материала в сетчатую поверхность в явном виде.

  • 2.3 поставщик AMF (AMF producer): Программное обеспечение для создания файла AMF из геометрических данных.

Примечание — Как правило, файлы AMF экспортируются с помощью программного обеспечения систем автоматизированного проектирования (САПР), программного обеспечения сканирования объектов или непосредственно из алгоритмов вычислительной геометрии.

  • 2.4 атрибут (attribute): Характеристика данных, представляющая один или несколько аспектов или дескрипторов данных в элементе.

Примечание — В структуре XML атрибуты являются характеристиками элементов.

Издание официальное

  • 2.5 комментарий (comment): Текстовый элемент, связанный с любыми данными в файле AMF и игнорируемый программным обеспечением импортирования.

Примечание — Комментарии используются для отладки и повышения удобочитаемости файла пользователем.

  • 2.6 элемент (element): Информационный блок в документе XML, включающий начальный тег, конечный тег, содержимое между тегами и атрибуты.

Примечание — В структуре XML элемент может содержать данные, атрибуты и другие элементы.

  • 2.7 расширяемый язык разметки; XML (extensible markup language): Стандарт для представления контента в формате, который является одновременно человекочитаемым и машиночитаемым, путем тегирования информационного контента.

Примечание — Использование настраиваемых таблиц стилей и схем позволяет представлять информацию в унифицированном виде для обмена как контента (данными), так и формата (метаданными).

  • 2.8 формат STL (STL format): Формат файла, описывающий геометрию поверхности объекта в виде мозаики треугольников и используемый для передачи оборудованию информации о трехмерной геометрии с целью производства деталей.

Примечание — Формат файла STL изначально был разработан как часть пакета САПР для стереолитографического оборудования. Формат STL называют «стандартным языком триангуляции» или «стандартным языком мозаичности», хотя данный формат не был определен в каком-либо официальном стандарте.

  • 3 Основные положения

    • 3.1 Общие сведения

      • 3.1.1 Универсальность формата файла сужает эффективность его применения для конкретных целей. Функции формата файла для удовлетворения потребностей одного сообщества могут снижать эффективность использования другими пользователями. Формат файла AMF предназначен для применения в области аддитивного производства и обладает свойствами, перечисленными в 3.1.2—3.1.7.

      • 3.1.2 Технологическая независимость. Формат файла AMF определяет объект в общем виде, не зависящем от технологии, и может быть использован любым оборудованием в меру возможностей. Формат не зависит от разрешения и толщины слоя и не содержит информацию, относящуюся к производственным процессам или технологии. Формат может включать функции, которые поддерживаются только некоторым оборудованием (например, цвет, множественные материалы), но определение функций исключает ограничения для другого оборудования.

      • 3.1.3 Простота. Формат AMF является доступным для реализации и понимания, может быть прочтен и редактирован в простой программе просмотра текста. В формате не хранится дублирующая информация.

      • 3.1.4 Масштабируемость. Размер файла и время обработки линейно масштабируются при увеличении сложности детали и повышении разрешения и точности производственного оборудования. Это обеспечивает возможность обработки больших массивов идентичных объектов, сложных периодических внутренних функций (например, сеток и решетки) и гладких криволинейных поверхностей при производстве деталей с очень высоким разрешением.

      • 3.1.5 Производительность. Формат AMF обеспечивает умеренную продолжительность операций чтения и записи, а также умеренный размер файла для большого объекта. Данные о производительности формата AMF приведены в приложении В.

      • 3.1.6 Обратная совместимость. Файл STL может быть преобразован в файл AMF без потери информации и без запроса дополнительной информации. Файл AMF также может быть преобразован в файл STL для использования в устаревших системах, при этом расширенные функции будут потеряны. Формат AMF поддерживает представление геометрии треугольной сетки для использования существующих алгоритмов резки и инфраструктуры программного обеспечения.

      • 3.1.7 Совместимость в будущем. Формат AMF является расширяемым с обеспечением совместимости с более ранними версиями и технологиями. Это позволяет добавлять новые функции по мере развития технологий, не исключая работу с простой однородной геометрией на устаревшем оборудовании.

    • 3.2 Рекомендации по включению новых элементов

      • 3.2.1 Новый элемент должен быть применим ко всем аппаратным платформам и технологиям, которые могут быть использованы для получения желаемого результата.

      • 3.2.2 Новый элемент должен определять объект, а не то как его построить. Например, потенциальный будущий элемент <hollow> может определять необходимость оставить объем пустым. При этом не должен быть включен элемент <objectLayerFillPath>, определяющий, как построить полый объем, так как он предполагает конкретный процесс производства.

  • 4 Структура спецификации формата

    • 4.1 Формат. Информация, определяемая спецификацией формата, хранится в формате XML 1.0. XML — это текстовый файл, содержащий список элементов и атрибутов. Формат XML позволяет использовать множество инструментов для создания, просмотра, обработки, анализа и хранения файлов AMF. Формат XML является человекочитаемым, что допускает наличие в файле ошибок отладки. XML может быть сжат и/или зашифрован на этапе постобработки с использованием высоко оптимизированных стандартизированных процедур.

    • 4.2 Гибкость. Важным преимуществом формата XML является гибкость. Не являются сложностью для синтаксического анализатора отсутствующие или дополнительные параметры. Использование имен пространства XML позволяет добавлять новые свойства без нарушения старых версий синтаксического анализатора, например, в устаревшем программном обеспечении.

    • 4.3 Точность. Формат файла не зависит от точности представления числовых значений. Поставщик AMF должен записать цифры, необходимые для правильного представления целевого объекта. При этом потребитель AMF должен читать и обрабатывать вещественные числа с двойной точностью (64 бита).

    • 4.4 Будущие изменения и дополнения. Дополнительные элементы XML, добавленные к файлу AMF для внутреннего использования, не должны рассматриваться как часть спецификации формата AMF. Неофициальный элемент AMF может игнорироваться потребителем AMF и может не храниться или не воспроизводиться редактором AMF. Элемент становится официальным только тогда, когда он официально утвержден в спецификации формата AMF.

  • 5 Общая структура

    • 5.1 Файл AMF должен начинаться со строки объявления XML, определяющей версию и кодировку XML, например:

<? xml version = «1.0» encoding = «UTF-8»?>

Версия XML должна иметь значение 1.0. Допускается указывать кодировки UTF-8 и UTF-16. Нераспознанные кодировки должны приводить к сбою загрузки файла.

  • 5.2 В файле допускаются пробелы и стандартные комментарии XML, которые должны игнорироваться интерпретатором, например:

<!--данный комментарий необходимо проигнорировать-->

  • 5.3 Остальная часть файла должна быть заключена между начальным </amf> и конечным </amf> тегами элемента. Данный элемент определяет тип файла и обеспечивает условие единственности корневого элемента файла XML. Должен быть включен атрибут, обозначающий версию стандарта AMF, которой соответствует файл. Могут быть использованы стандартные атрибуты пространства имен XML, такие как атрибут языка <lang> для определения используемого естественного человеческого языка. Допускается указание единицы измерения (миллиметр, дюйм, фут, метр или микрон). При отсутствии единицы измерения предполагается значение атрибута в мм, например:

<amf unit="millimeter" version="l.0" xml:lang="en"

xmins:amf="www.astm.org/Standards/F2 915-14">

  • 5.4 Между начальным </amf> и конечным </amf > тегами элемента должны быть включены пять элементов верхнего уровня.

    • 5.4.1 <object>. Элемент объекта определяет объем или объемы материала, каждый из которых может определять идентификатор материала (ID) для обработки на аддитивном производстве. Элемент объекта должен определять уникальный идентификатор объекта (ID). В файле должен присутствовать хотя бы один элемент объекта. Допускается наличие дополнительных объектов.

    • 5.4.2 <material>. Необязательный элемент материала определяет материал для производства и имеет уникальный идентификатор материала (ID). Идентификатор материала не должен быть равен 0. Если ни один элемент материала не включен, предполагается единственный материал по умолчанию.

    • 5.4.3 <texture>. Необязательный элемент текстуры определяет одно изображение или текстуру для отображения цвета или текстуры и имеет уникальный идентификатор текстуры (ID).

    • 5.4.4 <constellation>. Необязательный элемент группировки иерархически объединяет объекты и другие группировки в шаблон для печати. Элемент группировки может представлять уникальный идентификатор объекта. При отсутствии элементов группировки каждый элемент объекта должен быть импортирован без данных об относительном положении. Программное обеспечение может определять относительное расположение объектов, если в файле указано более одного объекта.

    • 5.4.5 <metadata> . Необязательный элемент метаданных определяет дополнительную информацию об объектах и элементах, содержащихся в файле.

  • 5.5 Полнофункциональный файл АМЕ должен включать элемент только одного объекта.

  • 6 Спецификация геометрии

    • 6.1 Общие положения

      • 6.1.1 Элемент верхнего уровня <ob j ect> объявляет уникальный идентификатор (ID) и должен содержать один дочерний элемент <mesh>. Элемент <mesh> должен содержать два дочерних элемента: <vertices> и <volume>. Элемент <object> может ссылаться на материал.

      • 6.1.2 Обязательный элемент <vertices> должен содержать все вершины, используемые при построении объекта. Каждой вершине неявно присваивается целочисленный идентификатор по порядку, начиная с нуля. Требуемый дочерний элемент <coordinates> указывает положение вершины в трехмерном пространстве (3D) с использованием дочерних элементов <х>, <у> и <z>.

      • 6.7.3 После информации о вершинах должен быть включен по крайней мере один элемент <volume>. Элемент <volume> определяет замкнутый объем объекта. В один объект может быть включено несколько элементов объема. Объемы могут иметь общие вершины на уровне интерфейса, но не должны иметь перекрывающееся пространство.

      • 6.1.4 В элемент объема должны быть включены несколько дочерних элементов <triangle> для определения треугольников, формирующих мозаику на поверхности объема. Элемент <triangle> должен ссылаться на три вершины из набора индексов вершин, определенных ранее. Индексы трех вершин треугольников должны быть указаны с использованием дочерних элементов <vl>, <v2> и <v3>. Вершины должны быть упорядочены в соответствии с правилом правой руки (вершины перечисляются в порядке обхода против часовой стрелки при взгляде снаружи). Каждому треугольнику присваивается идентификационный номер в виде целого числа в том порядке, в котором он был объявлен, начиная с нуля (см. рисунок 1).

Примечание — На рисунке 1 показан базовый файл АМЕ, содержащий только список вершин и треугольников. Указанная структура совместима со стандартом STL и может быть читаема с помощью минимальной реализации потребителя АМЕ.

  • 6.1.5 Геометрия не должна быть использована для описания системы структур поддержек. Должна быть описана только геометрическая форма конечной детали.

  • 6.2 Сглаженная геометрия

    • 6.2.7 По умолчанию все треугольники должны быть плоскими, грани треугольников должны быть прямыми линиями, соединяющими вершины треугольников. Применение изогнутых треугольников и кривых граней для описания криволинейной поверхности позволяет уменьшить количество элементов сетки. Программное обеспечение с минимальными функциями (см. раздел 72) может игнорировать информацию о кривизне треугольников.

    • 6.2.2 В процессе преобразования изогнутый треугольник должен быть рекурсивно разделен на четыре треугольника, чтобы сформировать окончательный временный набор плоских треугольников. Глубина рекурсии должна равняться пяти (т. е. один изогнутый треугольник должен быть преобразован в 1024 плоских треугольника).

<?xml version="l.Q" encoding="UTF-8"?

<amf unit="millimeter">

cobject id="0">

<mesh>

<vertices>

<vertex>

<coordinates>

<x>0</x>

<y>l.32</y>

<z>3.715</z>

</coordinates>

</vertex>

<vertex>

<coordinates>

<x>0</x>

<y>1.269</y>

<z>2.45354</z> c/coordinates>

</vertex>

</vertices> <vroltime>

<triangle>

<vl>O</vl>

<v2>l</v2>

<v3>3</v3>

</trlangle>

<triangle>

<vl>lc/vl>

<v2>0</v2>

<v3>4</v3>

</triangle>

</volwne>

</mesh>

</object>

</amf>

Рисунок 1 — Базовый файл AMF

  • 6.2.3 Поставщик AMF, который генерирует изогнутые треугольники, должен автоматически определять количество изогнутых треугольников для задания целевой геометрии с определенным уровнем отклонения с учетом информации, что программное обеспечение-потребитель выполнит пять уровней деления для каждого изогнутого треугольника.

  • 6.2.4 Для определения кривизны вершина может содержать дочерний элемент <normal>, указывающий нормаль поверхности в вершине. Нормаль должна быть единичной длины и направлена наружу. При указании нормали все ребра треугольника, пересекающиеся в этой вершине, должны быть перпендикулярны к этой нормали.

  • 6.2.5 Если на вершину ссылаются два элемента <volume>, нормаль является тождественной для каждого элемента <volume>, но направление следует определять по отношению к рассматриваемому объему (направление наружу). Не следует указывать нормаль в вершинах с неоднозначной нормалью, являющейся общей для нескольких объемов.

  • 6.2.6 Изогнутый треугольник не должен выходить за пределы плоскости более чем на 25 % и не должен иметь перегибов.

  • 6.2.7 Если кривизна поверхности объема в вершине не определена (например, для выступа, угла или ребра), используют элемент <edge> для определения кривизны одного нелинейного края, соединяющего две вершины треугольников. Кривизна задается касательными векторами, направленными от начала к концу кромки. Элемент <edge> имеет приоритет в случае конфликта с кривизной, определяемой элементом <normal>.

  • 6.2.8 Нормали не определяют для вершин плоских треугольников. Боковые элементы не определяют для кромок плоских треугольников.

  • 6.2.9 При интерпретации нормалей и касательных необходимо использовать Эрмитову интерполяцию второй степени. Формулы для проведения интерполяции указаны в А.З (приложение А).

  • 6.3 Ограничения в геометрии

При построении геометрии объекта следует соблюдать следующие ограничения:

  • - каждый треугольник должен иметь ровно три разные неколлинеарные вершины;

  • - треугольники не должны пересекаться. Треугольники могут соприкасаться только в их общих ребрах или общих вершинах;

  • - объемы должны быть описаны в виде непрерывного пространства;

  • - объемы не должны перекрываться;

  • - на координаты каждой вершины должны ссылаться не менее трех треугольников;

  • - каждая пара вершин должна ссылаться либо на ноль, либо на два треугольника в одном элементе <volume>;

  • - любые две вершины не должны иметь одинаковые координаты. Может быть использован допуск 10-8 единиц;

  • - внешнее направление треугольников с общим ребром в объеме должно быть последовательным. Внешнее направление определяют порядком вершин.

  • 7 Спецификация материала

  • 7.1 Общие положения

    • 7.1.1 Материалы определяются в необязательном элементе <material>. Каждый материал может быть определен только с помощью одного элемента <material>. Каждому материалу присваивают уникальный идентификатор. Материал может указываться через значение атрибута ID в элементе <volume>. ID материала «0» зарезервирован для представления пустот в объеме изделия (рисунок 2).

    • 7.7.2 Характеристики материала определяются внутри каждого элемента <material>. Дочерний элемент <colour> используется для указания цвета материала [красный/зеленый/синий/альфа-канал (RGBA), см. раздел 9]. Дополнительные свойства материала могут быть указаны с помощью элемента <metadata>, например, наименование материала или свойства упругости для оборудования, которое может управлять такими свойствами (см. рисунок 3). Описание элементов AMF содержится в А.1 (приложение А).



Ь) Изогнутый треугольник с использованием нормалей



  • с) Треугольник, использующий касательные


  • d) Разбиение изогнутого треугольника на четыре треугольника


<?xml version="l.0" encoding="UTF-8"?> <amf

<object id="0">

<inesh>

<vertices>

<vertex> (coordinates >

(/coordinates > (normal> (nx>0(/nx> <ny>0.70 7</ny> <nz>0.70 7</nz>

(/normal>

</vertex>

(edge>

<vl>0</vl>

(dxl>0.577(/dxl>

(dyl>0.577</dyl>

<dzl>0.577</dzl>

<v2>l</v2>

(dx2>0.707(/dx2>

(dy2>0(/dy2>

<dz2>0.707(/dz2>

</edge>

(/vertices>

(volume materialid="0"> (triangle>

</triangle>

</volume>

</mesh> (/object> </amf>

e) Файл AMF, содержащий криволинейную геометрию

Рисунок 2 — Типы треугольников, используемых в сетке

<1xml version-"!.О" encodlng-"UTF-8"?> (amf unit-"millimeter"> (material id-*l”>

(metadata type- "Name ”>StiffMa terial(/metadata> </material> (material id-'’2”>

(metadata type-lrName'’>FlexibleMaterlal</metadata> (/material> (material id-*3n>

(metadata type-"Name">liediumMaterial(/metadata> (composite materialid-"l">0.4</composite> (composite materialid-"2n>0. 6</composite>

(/material> (material id=’4"> (metadata type-’4fame’,>VerticallyGraded</metadata> (composite materialid-"1">z</composite> (composite materialid-"2Я>10-z(/composite> </material> (material id=*5n>

(metadata type-"Namen>Cbeckerbaard</metadata>

(composite materialid-"1"> floor (mod (x+y+z ,l))+0.5) (/compos! te> (cospoeite materialid-,’2’,>

1 -floor(mod(x+y+z, 1) 1+0.5) (/compos!te> (/material>

(object id="0’>

<mesh> <vertices>

</vertices> (volume materialid="l">

</volume> (volume materialid=”2'’>

</volume>

</mesh>

</object> (/amf>

Примечание — На рисунке показан файл AMF, указывающий пять материалов. Материал 3 — это однородная смесь первых двух материалов в соотношении 40 %/60 %. Материал 4 — вертикально-градиентный материал. Материал 5 — каркас со структурой шахматной доски.

Рисунок 3 — Однородные и композитные материалы

  • 7.2 Смешанные и градиентные материалы и субконструкции

    • 7.2.1 Новые материалы можно определить как композиции из других материалов. Элемент <composite> используют для указания пропорций композиции как константу или формулу в зависимости от координат х, у и z. Постоянная пропорция смешивания приведет к получению однородного материала. Изменение состава в зависимости от координат приводит к градиентному составу материала. Более сложные координатно-зависимые пропорции могут приводить к получению нелинейных градиентных материалов. Формула удельного веса может также использовать функцию текстур tex (textureid, х, у, z) (см. А.1, приложение А).

    • 7.2.2 В составе композита может быть использовано любое количество материалов.

    • 7.2.3 Любое отрицательное значение доли материала должно быть интерпретировано как нулевая пропорция. Сумма долей различных материалов должна быть равна 1.

  • 7.3 Пористые материалы

    • 7.3.1 Ссылка на функцию materialid «0» (пусто) используется для определения пористой структуры. Доля пустоты должна быть или 0, или 1. Любое другое число будет толковаться как 1.

    • 7.3.2 Элемент <composite> теоретически может быть использован для полного описания геометрии объекта как отдельной функции или как текстуры со ссылкой на пустоту. Целевое использование элемента <composite> со ссылкой на пустоту необходимо для описания клеточных мезоструктур.

  • 7.4 Стохастические материалы

Ссылка на функцию rand (х, у, z) может быть использована для определения псевдослучайных материалов. Например, композитный материал может объединить два базовых материала в случайных пропорциях, в которых точная пропорция может зависеть от координат различными способами. Rand-функция (х, у, z) генерирует случайную точку в диапазоне [0,1], которая сохраняется на протяжении всех вызовов функции (см. А.4, приложение А).

  • 8 Спецификация цвета

    • 8.1 Общие положения

      • 8.1.1 Цвета могут быть введены с использованием элемента <colour> путем определения значений RGBA (прозрачности) в указанном цветовом пространстве. По умолчанию цветовое пространство должно быть sRGB, но могут быть указаны альтернативные профили с использованием тега метаданных в корневом элементе <amf> (см. А.1, приложение А). Элемент <colour> может быть связан с элементом <material>. Чтобы связать цвет и материал, используется элемент <object>; чтобы покрасить весь объект, используется элемент <volume>. Элемент <triangle> используется для покраски треугольника. Элемент <vertex> служит для связи цвета с определенной вершиной треугольника (см. рисунок 4).

Примечание — Сплошной цвет может быть связан с материалом, объемом или вершиной. Вершина может быть также связана с координатой в файле цвета текстуры.

  • 8.1.2 Если цвет не указан, то по умолчанию используют белый цвет.

  • 8.1.3 Цвет объекта имеет приоритет над цветом материала; цвет объема имеет приоритет над цветом объекта и материала; цвета вершин имеют приоритет над цветом объема, объекта и материала; цвет треугольника имеет приоритет над цветом вершин, объектов и материалов.

  • 8.2 Градации цвета и отображение текстур

    • 8.2.1 Цвет может также быть определен со ссылкой на формулы, которые могут использовать различные функции, включая функцию карты текстуры.

    • 8.2.2 При обращении к формуле элемент <colour> указывает цвет, который зависит от координаты. В файлах могут быть использованы любые математические выражения, которые сочетают в себе функции, описанные в А.2 (приложения А). Например, использование rand-функции (функции случайных значений) допускается для псевдослучайных цветовых схем. Tex-функция допускает зависимость цвета от карты текстуры или изображения. Чтобы задать полноцветное изображение, как правило, требуется три текстуры — по одной на каждый цветовой канал. Чтобы создать монохромное изображение, обычно достаточно одной текстуры.

<?xbi1 versian="1.0я enccding="UTF-8n?>

<am£ unit—KiBilliaetern>

<material id=HlH>

Metadata type-"£Same’’>Stiff№aterial</№etadata>

<color>

<£>0</r>

<g>z</g>

<b>l-z</b>

</color>

</material>

<texture id-’l" х1&сь-я10"1> eight—"26я type-’grayscale">

TfiFuTGlzTGRpc3Rpb№dlaXSoZWQsTG5vdCB vbmx5IGJ5IGhpcyByZWFzb24sIGJldCBieS BOaGlzIHNpbmdlbGFylHBhc3Kpb24gZnJvb SBvdGhlaIBhbmltYWxzLCB3aGljaCBpcyBh

</texture>

<object id-”O”>

<mesh>

<vertices>

</vertices>

Cvolume inaterialid=',lH>

<color>

<r>0.9</r>

<g>0.9</g>

<b>0.2</b>

<a>0.8</a>

</color>

<triangle>

<vl>0</vl>

<v2>l</v2>

<v3>3</v3>

<texmap rtexid=”ln gtexid="2n Ыех1й=яЗн>

<utexl>0. l</vitexl>

<utex2>0.21</utex2>

<utex3>0.15</utex3> <vtexl>0.65</vtexl> <vtex2>0. 72</vtex2> <vtex3>0.Sl<lvtex3> </texmap> </triangle>

</volume>

</mesh> </object> </amf>

Рисунок 4 — Спецификация цвета

  • 8.2.3 Когда вершины одного треугольника имеют разные цвета, внутренний цвет треугольника будет линейной интерполяцией между этими цветами, если цвет треугольника не был указан явно (цвет треугольника имеет приоритет над цветом вершины). Если все три вершины треугольника содержат отображение одной и той же ID-текстуры для любого канала (г, д, b или а), то цвет этого канала треугольника должен быть извлечен из текстурной карты, отменяя при этом цвет треугольника.

  • 8.3 Прозрачность

Создание видимости частичной прозрачности может быть выполнено через канал прозрачности <а> альфа-композитингом путем объединения цвета переднего плана с цветом фона. Значение «0» указывает нулевую прозрачность, то есть ситуацию, когда используется только цвет переднего плана. Значение «1» указывает полную прозрачность, то есть ситуацию, когда используется только цвет фона. Промежуточные значения линейно интерполируются между цветом фона и цветом переднего плана. Отрицательные значения округлены до 0, а значения больше единицы — до 1. Цвет фона треугольника должен соответствовать цвету вершины. Цвет фона вершины должен соответствовать цвету объема, затем — цвету объекта и затем — цвету материала (в порядке убывания приоритета).

  • 9 Спецификация текстуры

    • 9.1 Элемент <texture> используется для связывания textureid (текстурирования) с определенными текстурными данными. Размер текстурной карты должен быть указан. Поддерживаются двумерные (2D) и трехмерные (3D) текстуры. Данные должны быть представлены в виде ряда значений градаций серого в диапазоне [0,255]. Каждое значение хранится в одном байте и кодируется в Base64. Порядок данных пикселей должен соответствовать координатам карты текстуры.

    • 9.2 Производитель должен гарантировать, что объем данных соответствует указанному размеру текстуры. Если объем данных чрезмерен, потребитель должен его уменьшить. Если объем данных слишком мал, потребитель должен добавить данные со нулевым значением для соответствия указанному размеру текстуры.

    • 9.3 Для наложения текстуры на треугольник используется элемент <texmap>, определяющий и-, v- и и/-координаты (опционально) для каждой вершины этого треугольника. Если текстура имеет свойство «черепица» и соответствует значению true (истина), то любые значения и, v, w, не попадающие в диапазон [0,1], будут определяться по модулю 1. Если текстура имеет свойство «черепица» и соответствует значению false (ложь), то значения, которые не попадают в пределы диапазона [0,1], будут соответствовать 0 (прозрачный).

    • 9.4 Текстуры должны быть линейно интерполированы для каждого треугольника. Треугольник должен включать только один элемент <texmap>. Перекрывающиеся текстуры должны быть объединены в единую текстуру, прежде чем накладываться на сетку.

  • 10 Элементы группирования

    • 10.1 Несколько объектов могут быть размещены вместе с помощью элемента <constellation> (см. рисунок 5). Элемент <constellation> может определить положение и ориентацию объектов для повышения эффективности упаковки и описать большие массивы одинаковых предметов. Элемент <instance> определяет перемещение и вращение объекта в процессе преобразования. Смещение и вращение должны быть определены по отношению к исходной позиции и ориентации объекта, определенным первоначально. Углы поворота должны быть указаны в градусах. Сначала применяются вращения вокруг оси х и оси у, а затем — вокруг оси z.

    • 10.2 Элемент <constellation> может включать в себя другие элементы <constellation> с несколькими уровнями иерархии. Однако циклические определения элементов <constellation> не должны быть использованы.

    • 10.3 При наличии нескольких объектов и элементов <constellation>, определенных в одном файле, относительная ориентация только прямых дочерних объектов и группировок элемента <amf> может быть оптимизирована программным обеспечением-потребителем.

    • 10.4 При интерпретации ориентации предполагается, что ось z является вертикальной осью с положительным направлением, направленным вверх, и нулем базовой поверхности. Направления х и у должны соответствовать осям в соответствии с правилом правой руки.

<?xml version=”1,0" encoding="UTF-8"?>

<am.f unit="millimeter">

Cobject id=”l”> </object>

cconstellation id=”2">

Cinstance objectid=”l">

<deltay>5</deltay> <rz>90</rz>

</instance>

Cinstance objectid=”l”> cdeltax>-l0с/deltax> cdeltay>l0</deltay> <rz>l80</rz>

</instance>

c/constellation>

</amf>

Рисунок 5 — Группировка

Примечание — Элементы <constellation> могут включать в себя несколько объектов вместе.

11 Метаданные

Элемент <metadata> может использоваться для указания дополнительной информации об определяемых объектах, геометрии и материалах (см. рисунок 6). С помощью этого элемента могут указываться имя, текстовое описание, авторство, информация об авторских правах и специальные инструкции. Элемент <metadata> может быть включен в качестве дочернего элемента в <amf> с целью указания атрибутов всего файла или в качестве дочернего элемента объектов, объемов и материалов. Зарезервированные типы метаданных и их значения перечислены в А.1 (приложение А).

<?xml versi оп="1.0 ” encodings"UTF-8 "?>

<araf unit="millinietern>

cmetadata type="description”>Product 123</metadata>

<metadata type="author”>John Smith</metadata> cmetadata type="cad">SolidX 2.2c/metadata> Cmetadata type="name">Part lc/metadata>

Cmetadata type="revision">1.3A</metadata>

cobject ObjectID="0">

cmetadata type=”name">Component 1c/metadata>

c/object>

C/amf>

Рисунок 6 — Метаданные

Примечание —Дополнительные сведения об объекте могут храниться с помощью элемента метаданных.

Модифицированные типы метаданных должны использовать другое имя, например:

<xamf:metadata type="myattribute">mydata</xamf:metadata>

  • 12 Сжатие и распространение

  • 12.1 AMF должен храниться либо в виде простого текста, либо в сжатом виде. Сжатие должно быть выполнено в формате ZIP-архива (см. [7]) и может быть сделано пользователем во время записи с помощью приложения и нескольких открытых библиотек сжатия, таких как Reference (см. [2]).

  • 72.2 Как сжатая, так и несжатая версия файла должны иметь расширение AMF. Программное обеспечение-потребитель должно определить, сжат файл или нет, и, если да, выполнять декомпрессию файла во время чтения. Любой файл, который не начинается с тега <?xml>, должен интерпретироваться как сжатый файл xml.

  • 72.3 Другие файлы, например электронные подписи, могут быть включены в архив ZIP. Тем не менее только файл AMF с тем же именем, что и файл архива, будет проанализирован программным обеспечением. Отсутствие файла с таким именем вызовет ошибку.

  • 13 Реализация с минимальными функциями

  • 73.7 Реализация производителя AMF с минимальными функциями должна генерировать сжатый файл с одним объектом без цвета, материала, текстуры, совокупностей или метаданных. Единственный объект будет представлять собой сетку, содержащую только один объем.

  • 73.2 Реализация потребителя AMF с минимальными функциями должна анализировать сжатый файл с одним объектом и игнорировать любой цвет, материал, текстуру, совокупности или информацию метаданных.

Приложение А (справочное)

Руководство по реализации XML-схемы AMF

А.1 Элементы AMF

В таблице А.1 представлены элементы AMF.

Таблица А.1—ЭлементыAMF

Элемент

Родительский элемент

Атрибут

Возможность использования множественных элементов

Описание

<amf>

Нет

Корневой XML-элемент

unit

Допускаются значения «дюйм», «мм», «м», «фут» или «микрон»

version

Версия спецификации файла AMF в формате Х.ХХХ

<object>

<amf >

Да

Определение объекта

id

Уникальное целое число, идентифицирующее объект

<colour>

<material>

<object>

<volume>

<vertex>

<triangle>

Нет

Цвет объекта для отображения и изготовления, если это поддерживается

При наличии противоречий в сведениях о цвете приоритет определяется порядком, указанным в настоящем стандарте

<r>, <g>, <b>, <a>

<colour>

Нет

Красный, зеленый, синий и альфа-компонент (прозрачность) цвета в пространстве sRGB в виде значений с плавающей запятой от 0 до 1. Значения могут быть указаны как константы или как формула от значений координат

<mesh>

<object>

Нет

Определение треугольной сетки в 3D

<vertices>

<mesh>

Нет

Список вершин для определения треугольников в сетке

<vertex>

<vertices>

Да

Вершина, на которую ссылаются треугольники

<coordinates>

<vertex>

Нет

Определение положения вершины в 3D

Л Л Л X > N V V V

<coordinates>

Нет

Координата х, у или z положения вершины в пространстве

<normal>

<vertex>

Нет

Определение нормали к поверхности объекта в вершине в 3D

<edge>

<vertices>

Да

Определение касательной к ребру объекта в 3D между двумя вершинами

Элемент

Родительский элемент

Атрибут

Возможность использования множественных элементов

Описание

Л Л Л Л Л Л

<~>. <~> <~>. <~>. <~>

n ч: х n 'с х

ГО to ГО I-1 I-1 I-1

V V V V V V

<edge>

Да

Нормализованные компоненты х, у или z первого или второго вектора направления ребра

<пх>, <пу>, <nz>

<normal>

Нет

Нормализованные компоненты х, у или z нормали к поверхности в вершине

<volume>

<mesh>

Да

Определение объема из списка вершин

materialid

Идентификатор материала рассматриваемого объема

<triangle>

<volume>

Да

Определение треугольника из трех вершин в 3D в соответствии с правилом правой руки (против часовой стрелки при взгляде снаружи)

<vl>, <v2>, <v3>

<triangle>

<edge>

Индекс вершин, определяющих треугольник или ребро

<texture>

Да

Определение данных используемой текстуры с помощью tex-функции в формуле. Содержит последовательность Base64 с закодированными значениями и с указанием значения пикселей текстуры

id

Уникальный идентификатор текстуры

width

Ширина (размер по горизонтали, х) текстуры в пикселях

height

Высота (поперечный размер, у) текстуры в пикселях

depth

Глубина (размер по вертикали, z) текстуры в пикселях

tiled

Определение того, должна ли текстура быть тайловой. Значение true (истина) означает «тайловая». Любое другое значение не подразумевает тайловую текстуру. Любая текстура, отображенная за пределами заданного диапазона, должна возвращать к нулевому значению

Продолжение таблицы А. 1

Элемент

Родительский элемент

Атрибут

Возможность использования множественных элементов

Описание

type

Кодирование данных в текстуре. В настоящее время значение должно быть «оттенки серого». В режиме градаций серого каждый пиксель представлен одним байтом в диапазоне [0,255]. Когда текстура задается с помощью функции tex, эти значения преобразуются в одно число с плавающей запятой в диапазоне [0,1] (см. А.2). Полноцветное изображение, как правило, требует три текстуры, по одной для каждого цветового канала. Графическое отображение прозрачности может потребовать наличия четвертого канала

<texmapl>

<triangle>

Нет

Карта вершин этого треугольника (и, v, и/) с координатами заданной текстуры. Если параметр не указан, координата w должна быть равна нулю

rtexid

ID текстуры красного канала

gtexid

ID текстуры зеленого канала

btexid

ID текстуры синего канала

atexid

ID текстуры альфа-канала

<utext>, <utex2>, <utex3> <ytextl>, <ytex2>, <ytex3> <wtextl>, <wtex2>, <wtex3>

<texmap>

Нет

Координаты и, v и w (необязательно) для вершин треугольника 1,2 и 3

<material>

<amf >

Да

Доступный материал для справки по объемам или композитам

id

Уникальный идентификатор материала. Значение “0”зарезервировано для обозначения пустот или расходуемого материала

<composite>

<material>

Да

Композитный материал. Значение числовой констаты или математические функции координат х, у, z, определяющее соотношение материалов (materialid). Если значение отрицательное, оно считается равным нулю. Дробное значение числа должно быть округлено до 1. Если оно равно нулю, то материал отсутствует (пустота). Пустоты материалов не должны быть смешаны. В А.2 представлен список допустимых математических функций

Элемент

Родительский элемент

Атрибут

Возможность использования множественных элементов

Описание

materialid

Ссылка на существующий материал. Ссылка не должна быть рекурсивной или циклической

<constellation>

<amf >

Да

Группировка объектов с конкретным относительным положением

id

ID определяемой группировки

<instance>

<constellation>

Да

Экземпляр объекта или группировки для печати

objectid

Ссылка на ID существующего или создаваемого объекта или созвездия. Рекурсивные или циклические ссылки не должны использоваться

<deltax>, <deltay>, <deltaz>

<instance>

Нет

Расстояние переноса в х-, у- или z-направлении, соответственно, в системе координат объекта для создания экземпляра объекта в текущей группировке

<rx>, <ry>, <rz>

<instance>

Нет

Поворот объекта в градусах вокруг его х-, у- и z-осей, соответственно, для создания экземпляра объекта в текущей группировке. Повороты должны быть выполнены в порядке х, а затем у и z

<metadata>

<amf>, <object>, <volume>, <material>, <vertex>

Да

Указание дополнительной

информации об объекте

type

Тип атрибута. Значения должны быть одним из следующих: name — буквенно-цифровая метка объекта, которая может быть использована интерпретатором при взаимодействии с пользователем; description — описание сущности; url — ссылка на внешний источник, относящийся к объекту; author — задает имя (имена) автора(ов);

company — определяет компанию, генерирующий объект;

producer — задает имя исходного программного обеспечения и версии;

revision — определяет пересмотр сущности;

tolerance — задает необходимый производственный допуск объекта в системе предприятия/под-разделения;

Окончание таблицы А. 1

Элемент

Родительский элемент

Атрибут

Возможность использования множественных элементов

Описание

type

volume — определяет общий объем объекта в единице системы субъекта, который будет использоваться для проверки (применяется только к объекту и объему); elasticmodulus — задает модуль упругости объекта, в единицах СИ (только для материала);

poissonratio — определяет коэффициент Пуассона материала, в единицах СИ (только для материала); colourprofile — цвет ICC пространства, используемый для интерпретации трех цветовых каналов <r>, <д> и <Ь>. Может быть один из 9sRGB9, 9AdobeRGB9, 9WIDE-Gamut-RGB9, 9CIERGB9, 9CIELAB9 или 9CIEXYZ9 (верхний уровень только <AML>)

А.2 Математические операции и функции

Перечень математических операций и функций представлен в таблице А.2.

Формулы, содержащие символы, которые ограничены в XML, такие как «<» и «>», должны содержаться в пункте CDATA (т. е. начинаться с «[CDATA]» и заканчиваться «]]>»).

Таблица А.2 — Математические операции и функции <Tbl_large_span> </ Tbl_large_span>

Приоритет

Оператор

Описание

1

0

Скобки блока

2

Л

Степень

3

*

Умножение

3

/

Деление

4

+

Сложение

4

-

Вычитание

5

=

Равно3

5

< <=

Меньше (или равно)3

5

>, >=

Больше (или равно)3

6

and

Пересечение (логическое И)3

6

or

Соединение (логическое ИЛИ)3

6

xor

Разница (логический X0R)3

6

!

Отрицание (логическое НЕ)3

6

mod(a,b)

Деление по модулю. Возвращает остаток от деления а на b

6

sin(x)

Синус, радианы

6

cos(x)

Косинус, радианы

Окончание таблицы А.2

Приоритет

Оператор

Описание

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- или ЗО-координаты действительного (дробного) псевдослучайного числа с равномерным распределением в диапазоне [0,1] (исключая 1). Возвращаемое число должно быть постоянным (т. е. должен всегда возвращаться один и тот же номер для одной и той же координаты). Если к = 1, для этой координаты должно быть возвращено второе (возможно, другое) число. См. пример реализации в А.4

6

tex(textureid,u,v,w) tex(textureid,u,v)

Возвращает скалярное значение с плавающей запятой в диапазоне [0,1], что интерполирует текстуру с textureid в начало координат (и, v, и/) для ЗО-текстур и (и, v) для 20-текстур. Если текстура имеет тип «оттенки серого», диапазон [0,1] соответствует диапазону [0,255] в данных текстурах. Целые значения координат относятся к центру текстуры с первого пикселя, имеющего индекс 1. Если значение дробное, необходимо использовать метод линейной интерполяции. Если координаты выходят за пределы не плиточной текстуры, нулевое значение должно быть возвращено. Если текстура 2D- и z-координат задана, координата z должна быть проигнорирована

а Логические операторы возвращают логическое значение 1 или 0, представляющее true (истина) и false (ложь) соответственно. При обработке нелогических чисел как логических значений нулевое значение представляет false, а ненулевое значение представляет true.

А.З Формулы для перехода от криволинейных треугольников к прямолинейным

А.3.1 Нелинейные треугольные участки с установленными нормалями поверхности или краями касательных должны быть интерполированы из их трех вершин и шести касательных векторов и/или трех нормалей поверхности с использованием кривых интерполяции Эрмита второго порядка, как описано в А.З.2—А.3.4.

А.З.2 Для каждого из трех ребер треугольника [см. рисунок А.1 а)] необходимо выполнить шаги, описанные в А.3.2.1—А.3.2.6.



а) Обозначения, используемые для разбиения кривой Ь) Треугольники разделены рекурсивно в глубину до пяти

Рисунок А.1 — Типы треугольников, используемых в сетке

Примечание — На рисунке показан пример сферической поверхности, содержащей 320 треугольников, каждый разделен на 16 субтреугольников, используя процедуру, описанную в А.З.

А.3.2.1 Если нормаль п0 в точке v0 не была установлена явно с помощью элемента <normal>, вычислить нормаль л0 можно путем вычисления декартова произведения между двумя касательными к ребрам, сходящимися в этой точке. Для этого вычисления используют касательные к ребрам, указанные элементом <edge>, если таковые имеются, от А.3.2.6, выполненные в предшествующем уровне рекурсии или, если ни один из этих вариантов не доступен, используют прямые линии, соединяющие конечные точки.

Результирующая нормаль л0 должна быть нормализована к единице длины и направление наружу.

А.З.2.2 Повторяют действия А.3.2.1 для нормали л, в точке к,.

А.З.2.3 Если касательная tQ не указана явно в элементе <edge> или в предыдущей рекурсии, вычисляют касательный вектор tQ так, чтобы он был перпендикулярен к нормали в точке л0 и находился в плоскости, определяемой нормалью и вектором, соединяющим две вершины, и0 и Для расчета f0 используют формулу (А.1), при этом d = v1 - v0:

А.З.2.4 Повторяют действия А.З.2.3 для касательной в точке vr

А.З.2.5 Центральную точку v01 = h(Q рассчитывают с помощью интерполяционной кривой Эрмита второго порядка, в соответствии с формулой (А.2):

/7(s) = (2s3 - 3s2 + 1 )v0 + (s3 - 2s2 + s)f0 + (-2s3 + Ss2)^ + (s3 - s2)^. (A.2)

А.3.2.6 Центральную касательную f01 = t^0 5) рассчитывают с помощью интерполяции кривой Эрмита второго порядка, в соответствии с формулой (А.З):

f(s) = (6s2- 6s)v0 + (3s3- 4 s2+1)f0 + (-6s2 + 6s)v1 +(3s2-2s)t|. (А.З)

A.3.3 Используя три новые вершины и нормали, делят треугольник на четыре субтреугольника.

А.3.4 Повторяют рекурсивно действия А.З.3 для каждого треугольника на глубину до пяти [см. рисунок А.1 Ь)].

А.4 Код для псевдослучайной пространственной карты (PRSM)

Цель функции случайных значений (rand) — построить псевдослучайные текстуры, которые будут использоваться в построении объекта. Случайные (х, у), случайные (х, у, z) и случайные (х, у, z, к) возвращают постоянное случайное число в зависимости от установленной координаты. Эти функции позволяют получать 2D- или ЗО-координаты в интервале [0,1] (без учета 1). Возвращаемое число должно быть все время постоянным. Если к = 1, то второй номер может быть возвращен для этой координаты. Третий номер может быть возвращен для координаты с к = 2 и так далее. Пример реализации кода C++ для prsm (х, у, z, к) приведен на рисунке А.2.

/* prsm.h

  • * Spatial random number generator based on the maximally

  • * equidistributed combined Tausworthe-88 generator.

  • * By Daniel Ly and Hod Lipson (2010)

*/

  • # ifndef __SPATIAL_TAUS88_H__

  • # define __SPATIAL_TAUS88_H__

  • # include <climits>

у***************************************

  • * Declarations

**********-****************************y

typedef struct

(

unsigned long int si, s2, s3;

}

taus_state;

unsigned long int rand_seed(unsigned long int x);

unsigned long int taus_get(taus_state* state);

double prsm(double x, double y, double z=0, int k=0);

  • * Definitions

*t******************************t*****y

unsigned long int rand_seed(unsigned long int x)

(

return (1664525*x+1013904223) & 0x7fffffffUL;

}

unsigned long int taus_get(taus_state* state)

(

unsigned long b;

b = (((state->sl « 13UL) & OxffffffffUL) A state-

  • > sl) » 19UL;

state->sl = (((state->sl & OxfffffffeUL) « 12UL) &

OxffffffffUL) A b;

b = (((state->s2 « 2UL) & OxffffffffUL) A state-

  • > s2) » 25UL;

state->s2 = (((state->s2 & Oxfffffff8UL) « 4UL) &

OxffffffffUL) A b;

b = (((state->s3 « 3UL) & OxffffffffUL) A state-

  • > s3) » 11UL;

state->s3 = (((state->s3 & OxfffffffOUL) « 17UL) &

OxffffffffUL) A b;

return (state->sl A state->s2 A state->s3);

}

double prsm(double x, double y, double z, int k)

{

taus_state state;

float tx, ty, tz, tx = (float) x; ty = (float) y; tz = (float) z;

/* Convert floating point numbers to ints*/

unsigned long int tsi = *(unsigned int*)5tx;

unsigned long int ts2 = *(unsigned int*)&ty;

unsigned long int ts3 = *(unsigned int*)Stz;

/* Convert coordinates to random seeds */

state.si = rand_seed(tsi);

state.s2 = rand_seed(ts2);

state.s3 = rand_seed(ts3);

state.si = rand_seed(state.si A state.s3);

state.s2 = rand_seed(state.s2 A state.si);

state.s3 = rand_seed(state.s3 A state.s2);

state.si = rand_seed(state.si A state.s3);

state.s2 = rand_seed(state.s2 A state.si);

state.s3 = rand_seed(state.s3 A state.s2);

/* "warm up" generator and generate k-th number */

for (int i=0; i<k+9; i++) taus_get («estate) ;

)

return

((double)taus_get(&state)/UINTJMAX);

)

#endif /* __SPATIAL_TAUS88_H__ */

Рисунок А.2 — Пример C++ кода реализации функции PRSM

Приложение В (справочное)

Данные о производительности и будущие характеристики

В.1 Производительность

Целью настоящего стандарта является обеспечение интерактивного быстродействия для чтения-записи файла и разумных размеров файлов для типичных больших наборов данных. В таблице В.1 приведены статистические данные о производительности для различных размеров файлов. Время обработки относится ко времени, затраченному на чтение файла, синтаксический анализ объектов XML и построение внутренней структуры данных, см. таблицы В.1—В.4.

Примечания

  • 1 Время чтения и синтаксического анализа относительно мало по сравнению с общим временем, необходимым для обработки файла для изготовления (например, нарезки).

  • 2 Пример кода для реализации средства просмотра и конвертера AMF (открытый исходный код BSD) см. в [3].

Таблица В.1—Размер файла

Число треугольников

Бинарный STL (без сжатия)

Бинарный STL (со сжатием)

AMF (без сжатия)

AMF (со сжатием)

1 016 388

49,6 Мб

25,3 Мб

205,9 Мб

12,2 Мб

100 536

4,9 Мб

2,3 Мб

20,1 Мб

1,2 Мб

10 592

518 Кб

249 Кб

2,1 Мб

129 Кб

1036

51 Кб

20 Кб

203 Кб

12 Кб

Таблица В.2 — Время записи (с)

Число треугольников

Бинарный STL (без сжатия)

Бинарный STL (со сжатием)

AMF (без сжатия)

AMF (со сжатием)

1 016 388

0,372

~3,4

6,8

15,5

100 536

0,038

0,038

0,79

1,78

10 592

0,005

0,005

0,11

0,21

1036

0,001

0,001

0,06

0,06

Таблица В.З — Время чтения и распаковывания (с)

Число треугольников

Бинарный STL (без сжатия)

Бинарный STL (со сжатием)

AMF (без сжатия)

AMF (со сжатием)

1 016 388

0,384

~1,3

6,447

6,447

100 536

0,043

0,043

0,669

0,687

10 592

0,005

0,005

0,107

0,107

1036

0,001

0,001

0,056

0,056

Таблица В.4 — Точность (погрешность, рассчитанная на единичной сфере)

Число треугольников

STL

AMF (с нормалями)

20

0,102 673

0,006 777

80

0,032 914

0,000 788

320

0,008 877

8,28Е-°5

1280

0,001 893

1,01 Е-°5

Окончание таблицы В. 4

Число треугольников

STL

AMF (с нормалями)

5120

0,000 455

1,95Е-°6

20 480

1,13Е-°4

4,51 Е-°7

81 920

2,81 Б"05

1,11Е—07

327 680

7,ОЗЕ-06

2,75Е~°8

1 310 720

1,76Е-°6

6.87Е-09

  • В.2 Список будущих характеристик

    • В.2.1 Предполагается, что элементы и спецификации, не включенные в настоящий стандарт, будут добавлены в будущие версии настоящего стандарта. Список характеристик, которые необходимо учитывать в будущих версиях, приведен в В.2.2—В.2.9.

    • В.2.2 Допуски по пространственным и геометрическим размерам. Могут быть предусмотрены инструменты для определения критических допусков по пространственным и геометрическим размерам. Внутри элемента <object> может быть введен элемент <tolerance> для описания критических соотношений между наборами вершин, таких как расстояние, перпендикулярность или параллельность. Такая информация может быть использована планировщиком процесса при автоматической установке различных параметров печати, таких как ориентация детали и разрешение печати, для соответствия критическим допускам.

    • В.2.3 Шероховатость поверхности. Могут быть предусмотрены инструменты для определения критических свойств поверхности граней готовых деталей. Такая информация может использоваться планировщиком процесса при автоматической установке различных параметров печати, таких как ориентация детали и разрешение печати, для соответствия желаемому результату.

    • В.2.4 Опорная конструкция. Внутри элемента <mesh> может быть введен элемент <support> для описания системы структур поддержек. В соответствии с настоящим стандартом элемент <volume> может быть использован только для описания закрытых объемов. Элемент <support> может описывать нестандартные необъемные опорные конструкции.

    • В.2.5 Функциональные представления. Внутри элемента <object> может быть введен элемент <frep> для описания объекта с использованием функционального представления. В соответствии с настоящим стандартом только элемент <mesh> может быть использован для описания объемов с использованием мозаичной поверхности. Функциональное представление определяет геометрическую границу как формулу, вложенные формулы или алгоритм, который вычисляет значение для любого пространственного положения. Это значение может быть использовано для обозначения наличия/отсутствия материала в этом положении и других свойств. Хотя элемент <composite> может быть использован для функциональных представлений путем описания полной геометрии объекта как единой функции, такое использование не рекомендуется. Элемент <composite> предназначен только для описания клеточных мезоструктур.

    • В.2.6 Вексельные представления. Внутри элемента <object> может быть введен элемент <voxel> для описания объекта с использованием вексельного представления. В соответствии с настоящим стандартом только элемент <mesh> может быть использован для описания объемов с использованием мозаичной поверхности. Вексельное представление определяет геометрию с помощью трехмерного растрового изображения. Данный тип изображения особенно подходит для технологий медицинской визуализации. Хотя элемент <composite> может быть использован для вексельных представлений путем описания полной геометрии объекта с использованием функции tex (), такое использование не рекомендуется. Элемент <composite> предназначен только для описания клеточных мезоструктур.

    • В.2.7 Защита авторских прав и цифровые водяные знаки. Могут быть добавлены элементы для указания информации об авторских правах. В настоящее время возможно кодирование информации об авторских правах путем добавления цифровых водяных знаков к данным, например, путем изменения младших разрядов координат вершин в соответствии с некоторым скрытым шаблоном или сообщением. Могут быть добавлены другие методы, связывающие сообщение об авторском праве сданными.

    • В.2.8 Текстуры и покрытия поверхностей. Могут быть добавлены элементы для определения геометрической и материальной модуляции поверхности детали, например, определенного тактильного рисунка или покрытия поверхности (при печати на нескольких материалах). В соответствии с настоящим стандартом такие свойства могут быть описаны косвенно путем создания нового композитного материала и применения его вдоль поверхностей.

    • В.2.9 Более компактное кодирование координат вершин и сетки. Могут быть добавлены более компактные методы предоставления координат вершин и данных сетки. Например, кодирование всех координат вершин в блоке в формате Base64 может уменьшить размер файла до 30 %. Однако данная реализация может препятствовать таким условиям успешного внедрения, как удобочитаемость и простота реализации пользователями, не являющимися экспертами.

Приложение ДА (справочное)

Сопоставление структуры настоящего стандарта со структурой примененного в нем международного стандарта

Таблица ДА.1

Структура настоящего стандарта

Структура международного стандарта ИСО/АСТМ 52915:2020

1 Область применения (раздел 1)

1 Область применения

*

2 Нормативные ссылки

2 Термины и определения (раздел 3)

3 Термины и определения

3 Основные положения (раздел 4)

4 Основные положения

4 Структура спецификации формата (раздел 5)

5 Структура спецификации формата

5 Общая структура (раздел 6)

6 Общая структура

6 Спецификация геометрии (раздел 7)

7 Спецификация геометрии

6.1 Общие положения (раздел 7.1)

7.1 Общие положения

6.2 Сглаженная геометрия (раздел 7.2)

7.2 Сглаженная геометрия

7 Спецификация материала (раздел 8)

8 Спецификация материала

7.1 Общие положения (раздел 8.1)

8.1 Общие положения

7.2 Смешанные и градиентные материалы и субконструкции (раздел 8.2)

8.2 Смешанные и градиентные материалы и субконструкции

8 Спецификация цвета (раздел 9)

9 Спецификация цвета

9 Спецификация текстуры (раздел 10)

10 Спецификация текстуры

10 Элементы группирования (раздел 11)

11 Элементы группирования

11 Метаданные (раздел 12)

12 Метаданные

12 Сжатие и распространение (раздел 13)

13 Сжатие и распространение

13 Реализация с минимальными функциями (раздел 14)

14 Реализация с минимальными функциями

Приложение А Руководство по реализации XML-схемы AMF

Приложение А Руководство по реализации

XML-схемы AMF

Приложение В Данные о производительности и будущие характеристики

Приложение В Данные о производительности и будущие характеристики

Приложение ДА Сопоставление структуры настоящего стандарта со структурой примененного в нем международного стандарта

Библиография

Библиография

* Данный раздел исключен.

Примечание — После заголовков разделов настоящего стандарта приведены в скобках номера аналогичных им разделов международного стандарта.

Библиография

[7] File Format Specification Z.LP. Version: 6.3.4. PKWARE Inc., 2014, https://pkware.cachefly.net/webdocs/casestudies/ APPNOTE .TXT

  • [2] lnfo-ZIP.www.info-zip.org

  • [3] Additive Manufacturing File Format A.S.T.M. (AMF) (wiki). Tangient LLC, //amf.wikispaces.com

    УДК 004.738:006.354


    ОКС 25.030

    35.240.50


Ключевые слова: умное производство, аддитивное производство, формат файла AMF

Редактор Л.В. Каретникова Технический редактор В.Н. Прусакова Корректор И.А. Королева Компьютерная верстка Е.О. Асташина

Сдано в набор 22.11.2022. Подписано в печать 01.12.2022. Формат 60*84%. Гарнитура Ариал. Усл. печ. л. 3,26. Уч.-изд. л. 3,02.

Подготовлено на основе электронной версии, предоставленной разработчиком стандарта

Создано в единичном исполнении в ФГБУ «Институт стандартизации» , 117418 Москва, Нахимовский пр-т, д. 31, к. 2.

Превью ПНСТ 793-2022 Умное производство. Спецификация формата файла аддитивного производства AMF