Aspose.3D Объектная модель документа (DOM)

Aspose.3D Объектная модель документа (DOM)-это мощное представление в памяти сцены 3D. Он предоставляет разработчикам возможность читать, манипулировать и изменять содержимое и форматирование сцены 3D программным способом.

В этом разделе мы рассмотрим ключевые классы DOM Aspose.3D и их отношения. Используя эти классы, вы можете получить программный доступ к различным элементам в сцене 3D.

Давайте углубимся в основные классы Aspose.3D DOM:

  • Сцена: Класс Scene представляет корень иерархии сцены 3D. Он служит контейнером для всех других элементов и предоставляет методы манипулирования общей сценой.
  • Узел: Узлы-это строительные блоки сцены 3D. Они представляют отдельные объекты или объекты в сцене, такие как сетки, огни, камеры или группы. Узлы могут быть преобразованы, анимированы и текстурированы.
  • Образования: Классы Сущностей охватывают широкий спектр объектов и элементов, составляющих сцену 3D. Он включает в себя такие объекты, как сетки, фонари, камеры, профили и многое другое. Эти объекты служат строительными блоками, позволяя создавать сложные сцены, комбинируя и манипулируя ими программно. Категория Сущности обеспечивает доступ и контроль над этими фундаментальными элементами сцены 3D.
  • Материалы: Классы Materials вращаются вокруг определения визуальных свойств объектов в сцене 3D. Он предоставляет инструменты для программного создания, изменения и управления материалами, которые определяют, как свет взаимодействует с поверхностями. Регулируя такие свойства, как цвет, текстура, прозрачность и отражение, вы можете добиться различных визуальных эффектов и настроить внешний вид ваших моделей 3D.
  • Анимации: Классы анимации сосредоточены на создании и управлении движением и преобразованиями в сцене 3D. Он позволяет программно определять анимацию и манипулировать ею, позволяя объектам перемещать, поворачивать, масштабировать или изменять свойства с течением времени. С помощью этой категории вы можете привнести динамичные и интерактивные элементы в свои сцены 3D.

Используя классы Aspose.3D DOM, упомянутые выше, вы можете программно взаимодействовать и манипулировать содержимым и структурой сцены 3D. Это обеспечивает гибкость и контроль при работе с моделями 3D в ваших приложениях.

Структура сцены

Когда Aspose.3D читает 3D файл в память, он генерирует объекты различных типов для представления различных элементов в 3D сцене.

Структура сцены в Aspose.3D следует составному шаблону проектирования, который обеспечивает гибкость и организацию:

Узел служит в качестве контейнеров, которые могут содержать другие узлы, позволяя группировать различные объекты в сцене.

  • Каждый узел может иметь свое собственное преобразование, которое также относится к его дочерним узлам.
  • Все типы пространственных сущностей в Aspose.3D должны быть размещены под экземпляром Node. Это гарантирует, что такие объекты, как сетки, фонари, камеры и другие элементы, организованы в иерархии сцены.
  • Узлы могут содержать несколько материалов, и связь между многоугольниками и материалами, прикрепленными к узлу, решается с помощью концепции VertexElementMaterial в объекте Mesh.

! Иерархия сцен

Пространственные сущности

Все пространственные объекты в пределах Aspose.3D наследуются от класса Entity и служат фундаментальными строительными блоками для построения виртуальных сред. Aspose.3D подразделяет эти сущности на несколько основных категорий, каждая со своей конкретной целью и функциональностью.

! Образования

  • ПримитивныйКласс Primitive служит базовым классом для всех процедурных геометрий 3D в пределах Aspose.3D, таких как Cylinder, Torus и Sphere. Эти геометрии могут быть определены с использованием минимального набора параметров, что делает удобным создание базовых 3D фигур.
  • Геометрия: Геометрия в Aspose.3D обычно состоит из вершин, ребер и многоугольников, определяющих форму и структуру объекта 3D. Эта категория охватывает широкий спектр сложных геометрий, используемых для представления различных объектов в сцене 3D.
  • Профиль: Профили, подобно примитивам, определяют 2D замкнутые контуры в плоскости x-y. Они обеспечивают способ создания 2D фигур, которые могут быть выдавлены для создания соответствующих геометрий 3D. Профили часто используются в качестве отправной точки для создания более сложных объектов 3D.
  • Кривая: В отличие от профилей, кривые могут быть открытыми или несвязанными. Они используются для определения пространственных путей в 3D. Кривые предоставляют средства для создания гибких и настраиваемых путей, по которым объекты могут следовать в среде 3D.
  • Экструзия: Экструзия-это процедурная техника, используемая для построения геометрии 3D с использованием профилей и кривых. Применяя экструзию к профилю или кривой, можно создать форму 3D путем удлинения профиля или кривой вдоль заданного направления. Такой подход позволяет создавать более сложные и динамичные геометрии.
  • Фрустум: Категория frustum включает такие объекты, как фонари и камеры. Фрустумы определяют объем и перспективу просмотра в сцене 3D. Камеры используют frustums для определения части сцены, которая будет видна, в то время как огни используют frustums для определения области, в которой они освещают сцену.

Эти основные категории сущностей в Aspose.3D охватывают множество сущностей, которые играют важную роль в создании и представлении виртуальных сред, предоставляя универсальный набор инструментов для создания и управления сценами 3D.

Типы геометрии

! Типы геометрии

Aspose.3D содержит множество типов геометрии:

  • Mesh Удобная многоугольная сетка для авторского инструмента.
  • PointCloud Облако точек.
  • NurbsSurface Неоднородные рациональные поверхности B-сплайна.
  • Patch Поверхность, определяемая набором контрольных точек и функций смешивания.
  • TriMesh Рендеринг API-дружественной сетки на основе треугольников.

Наиболее важными из них являются Mesh и TriMesh, различия в таблице:

Особенность Mesh TriMesh
Многоугольник Не-треугольника Да Нет
Легко изменить Да Нет
Повторное использование индекса данных Да Нет
Дружественный кэш процессора Нет Да
Рендеринг API дружественный Нет Да
Исправлена раскладка памяти Нет Да

Классы, полученные из Geometry, предназначены для изменения и создания контента, а TriMesh-для рендеринга.

Geometry состоит из контрольных точек и VertexElement, которые определяют дополнительные данные для контрольной точки/ребра/многоугольника/вершины многоугольника, Geometry может содержать ноль или более VertexElement, В конкретных подклассах Geometry реализованы различные методы моделирования и представления геометрии 3D.

! Типы геометрии

Можно вручную создать элемент вершины и назначить для него данные. Следующий пример кода показывает, как это сделать:

Примитивные типы геометрии

Aspose.3D предоставляет набор предопределенных типов примитивной геометрии, которые следуют определенным правилам и алгоритмам для создания моделей 3D. Эти примитивные типы упрощают процесс создания геометрии 3D по сравнению с использованием более сложных геометрических типов.

Доступные предопределенные примитивные типы в Aspose.3D включают:

  • Box: примитив коробки позволяет создавать прямоугольные кубовидные фигуры, определяемые их шириной, высотой и глубиной.
  • Цилиндр: с помощью примитива цилиндра можно создавать цилиндрические формы, задав радиус и высоту. Это полезно для создания объектов, таких как трубы или столбцы.
  • Dish: Примитив тарелки позволяет создавать геометрические формы тарелки, обычно используемые для представления таких объектов, как чаши или спутниковые тарелки.
  • Plane: примитив плоскости генерирует плоские поверхности, определяемые их шириной и длиной. Он часто используется в качестве фундамента или наземной плоскости в сценах 3D.
  • Pyramid: С помощью примитива пирамиды вы можете создавать геометрии в форме пирамиды, характеризующиеся их базовым размером и высотой. Это полезно для строительства таких объектов, как здания или пирамиды.
  • Torus: Примитив тора позволяет создавать геометрии в форме пончиков с заданными радиусами для большой и малой окружностей. Подходит для создания объектов, напоминающих кольца или шины.
  • RectangularTorus: Примитив прямоугольного тора создает тороподобные геометрии с прямоугольными поперечными сечениями вместо круговых. Это обеспечивает дополнительную гибкость для создания уникальных форм.
  • Sphere: примитив сферы генерирует идеально круглые геометрии на основе заданного радиуса. Это полезно для создания объектов, таких как планеты или шары.

Используя эти предопределенные примитивные типы в Aspose.3D, вы можете легко создать широкий спектр базовых геометрий 3D. Это упрощает процесс моделирования и позволяет быстро формировать и собирать объекты в ваших сценах 3D.

! Примитивные типы геометрии

Следующий пример кода показывает, как создать сферу с заданным радиусом:

Типы экструзии

Экструзия может использоваться для создания множества сложных объектов 3D, это фундаментальный метод в моделировании 3D, который включает в себя расширение 2D профиля вдоль кривой для создания объекта 3D.

В Aspose.3D мы предоставили 3 типа экструзии:

  • LinearExtrusion Линейная экструзия использует 2D профиль в качестве входа и расширяет форму в 3-м измерении.
  • RevolvedAreaSolid Этот класс представляет сплошную модель путем вращения поперечного сечения, обеспеченного профилем вокруг оси.
  • SweptAreaSolid Этот класс представляет сплошную модель с помощью схемы широкого представления, позволяющей поперечному сечению 2D профиля проходить через пространство.

! Экструзии

Следующий пример кода показывает, как создать линейную экструзию из текстового профиля:

Типы кривых

В Aspose.3D кривая представляет один или несколько пространственных путей, которые могут принимать различные формы, такие как прямые, NURBS-кривые или составные кривые, состоящие из нескольких сегментов кривой. Кривые обычно используются в сочетании с типами экструзии для создания динамичных и сложных форм 3D.

Кривые могут использоваться для определения сложных путей, по которым объекты следуют в среде 3D, обеспечивая плавные и точные движения. Используя различные типы кривых и составляя их вместе, вы можете получить универсальные и настраиваемые пространственные пути для ваших моделей 3D.

Кроме того, некоторые форматы файлов, поддерживаемые Aspose.3D, также обеспечивают возможность импорта и экспорта данных кривой. Это позволяет легко интегрировать кривые, созданные во внешних приложениях, или совместно использовать кривые, сгенерированные в пределах Aspose.3D, с другим программным обеспечением.

! Типы кривых

Типы профилей

Aspose.3D предлагает ряд 2D профилей, которые можно использовать для создания замкнутых форм или контуров в среде 3D. Эти профили позволяют создавать сложные 2D-структуры, которые могут быть дополнительно экструдированы или преобразованы в геометрию 3D. Вот некоторые известные реализации профиля в Aspose.3D:

  • ParameterizedProfile: Aspose.3D предоставляет несколько реализаций, которые предлагают профили со стандартными формами. Эти предопределенные профили позволяют быстро создавать часто используемые формы, такие как круги, прямоугольники и многоугольники.

  • MirroredProfile: Этот тип профиля позволяет зеркально отразить существующий профиль вдоль оси Y, создавая симметричную форму. Это обеспечивает удобный способ создания сбалансированных и визуально привлекательных профилей.

  • ArbitraryProfile: при реализации произвольного профиля можно сопоставить произвольную кривую для создания закрытого профиля. Это обеспечивает гибкость в проектировании пользовательских форм путем определения кривой и преобразования ее в закрытый профиль для дальнейших манипуляций.

  • Text: Aspose.3D включает возможность создания профилей из текста с использованием заданного шрифта. Эта функция позволяет создавать профили в форме букв, цифр или любого другого текстового контента, добавляя элемент персонализации или брендинга к вашим моделям 3D.

! Типы 2D профилей

Типы камеры и освещения

! Камера и свет

Типы материалов

Aspose.3D поддерживает различные типы материалов, включая материал Lambert, материал Phong, материал PBR, зеркальный материал PBR и материал шейдеров (доступно только в файлах FBX).

Каждый материал в Aspose.3D может иметь различные атрибуты и свойства, которые определяют его внешний вид и поведение в сцене 3D. Эти материалы могут быть подключены к текстурным экземплярам, улучшая их визуальные характеристики.

Текстуры в Aspose.3D связаны с определенным атрибутом материала. Тип текстуры объединяет определения параметров для источника изображения и образца текстуры. Используя текстуры, вы можете применять подробные узоры, цвета и другие визуальные эффекты к поверхностям ваших моделей 3D.

Благодаря поддержке различных типов материалов и возможности соединения текстур, Aspose.3D предлагает гибкость в создании визуально привлекательных и реалистичных материалов для ваших 3D сцен.

! Типы материалов

Следующий пример кода показывает, как применить материал PBR к геометрии:

Анимация отношений объектов

Aspose.3D обеспечивает поддержку анимации на уровне данных, и в настоящее время разрабатывается поддержка вычислений.

В Aspose.3D сцена может содержать несколько объектов AnimationClip. Каждый анимационный клип может состоять из нескольких узлов анимации. Узел анимации следует составному шаблону проектирования, что позволяет создавать иерархические структуры с узлами суб-анимации.

Узлы анимации могут быть связаны с точками привязки, которые определяют свойства целевого объекта, который будет анимироваться. Векторы-обычно используемые типы данных во многих свойствах сущности. Следовательно, точки привязки могут иметь различные каналы анимации для обновления конкретных каналов вектора независимо. Каждый канал содержит последовательность ключевых кадров, которая определяет, как значение анимируется с течением времени.

Эта система обеспечивает гибкую структуру для анимации объектов в сцене. Определяя клипы анимации, узлы, точки привязки и каналы, можно создавать сложные и динамические анимации, которые влияют на различные свойства объектов в сцене 3D.

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

! Анимации

Сцена с анимацией может иметь такую структуру:

! Образец анимации