Что такое fbx key
Русские Блоги
Анализ и загрузка модели FBX на основе FBX SDK- (1)
Оригинальная ссылка: https://blog.csdn.net/BugRunner/article/details/7210511
1. Введение
2. Конфигурация FBX SDK
3. Организационная структура модели FBX
Вся сцена начинается с корневого узла с пустым атрибутом, где каждый узел является объектом KFbxNode, а связь между всеми объектами является двунаправленной, например, от дочернего узла может быть проиндексирован родительский узел от родительского Узлы также могут быть проиндексированы на дочерние узлы, от одного узла может быть проиндексирована вся сцена, от сцены также может быть проиндексирована узел. Каждый узел будет иметь значение Enum атрибута маркировки, такого как eMesh, eLight, eCamera или eSkeleton и т. Д., Которые используются для маркировки текущего узла как Mesh, Light, Camera или Skeleton соответственно. В процессе обхода всей структуры различные операции обработки могут выполняться путем оценки различных атрибутов узла.
Перед выполнением операции обработки FBX с использованием SDK необходимо сначала инициализировать два необходимых объекта FBX: KFbxSdkManager и KFbxScene. Первый используется для внутреннего управления всеми объектами FBX.Все ресурсы, загруженные с помощью SDK, находятся под контролем этого объекта, и он также выполняет окончательный выпуск ресурсов. После того, как у вас есть менеджер памяти, а затем создан связанный объект KFbxScene, вы можете добавить и обработать модель. KFbxScene фактически эквивалентен входу во весь объект сцены, предоставленный Менеджером. Коды инициализации и конфигурации этих двух объектов следующие:
Инициализировать SDKManager
Инициализация FbxScene
После завершения инициализации KFbxScene вы можете получить из него всю информацию о всей модели. Поскольку FBX использует древовидную структуру для хранения, легко использовать древовидный рекурсивный метод для обхода каждого узла и выбрать соответствующую операцию обработки в соответствии с атрибутами узла. Следующий код Глобальный обход от корневого узла завершен:
Приведенный выше код является относительно простым, и он может быть передан каждому дочернему узлу непосредственно после передачи непосредственно в корневой узел, полученный из KFbxScene. В хранилище FBX каждый родительский узел может содержать несколько дочерних узлов, но у каждого дочернего узла есть только один корневой узел, и соединение является двунаправленным, что очень удобно, например, при работе со Skeleton часто требуется Получите матрицу и другую информацию родительского узла от дочернего узла, и это двустороннее отношение делает эти операции очень простыми для реализации. Обратите внимание, что операция проверки pNode-> GetNodeAttribute () в приведенном выше коде необходима, поскольку не все узлы имеют соответствующие атрибуты (Атрибут также связан с текущим узлом в форме дочернего узла, поэтому он может быть Пусто).
4. Загрузите геометрическую сетку
FBX по-прежнему очень хорошо поддерживает геометрические сетки, и Nurbes, Polygon, Triangle и т. Д. Могут быть сохранены. Однако, чтобы упростить работу во время загрузки и обработки, лучше всего напрямую выбрать унифицированный режим в плагине экспорта FBX. Например, вы можете выбрать атрибут Triangluation при экспорте и генерации FBX, тогда плагин экспорта FBX автоматически триангулирует все Nurbes и Polygon в треугольники для хранения. Конечно, этот процесс также может выполняться при загрузке модели. Таким образом, в полученном FBX есть только сетчатая модель, такая как треугольник, которая облегчает операцию загрузки. Геометрические данные модели в основном включают в себя следующие части:
Загрузка геометрической сетки относительно проста. Итеративно рекурсивно проходит весь граф от корневого узла, чтобы определить, является ли текущий узел атрибутом eMESH. Если он предназначен для обработки геометрических данных, основной код выглядит следующим образом:
Читайте в вершине:
Читать в цвете:
Читайте в УФ:
Читайте в нормальном:
Читайте в тангенте:
Реализация функций для считывания вышеупомянутой нормальной, касательной, ультрафиолетовой и другой информации фактически аналогична. Прежде всего, вам необходимо определить, существует ли соответствующая ассоциация слоев в текущей сетке. Если она есть, тогда получите ее адрес, а затем используйте различные методы отображения. Метод может прочитать соответствующее значение из памяти.
После прочтения базовой геометрической информации вы можете использовать ее для рендеринга:
Открывайте файлы fbx на ПК с помощью одного из этих 4 программных решений
Чтобы исправить различные проблемы с ПК, мы рекомендуем Restoro PC Repair Tool:
это программное обеспечение исправит распространенные компьютерные ошибки, защитит вас от потери файлов, вредоносных программ, сбоев оборудования и оптимизирует ваш компьютер для максимальной производительности. Исправьте проблемы с ПК и удалите вирусы прямо сейчас, выполнив 3 простых шага:
Расширения файлов FBX – это тип файлов, представляющих 3D-файлы и видео-контент. Аббревиатура FBX, первоначально созданная Кайдарой и принадлежащая Autodesk с 2006 года, расшифровывается как Filmbox.
Многие пользователи Windows 10 изо всех сил пытаются найти лучшую программу для открытия и редактирования файлов FBX, но нам удалось придумать 4 программных решения, которые, как мы обнаружили, действительно эффективно работают с файлами FBX.
Paint 3D – это гибридный графический редактор 2D-3D от Microsoft, выпущенный вместе с Windows 10 в качестве альтернативы существующим на рынке графическим редакторам.
В 2016 году Microsoft Paint 3D был анонсирован и выпущен как часть Windows 10 Creators Update. Приложение для Windows пользуется популярностью среди менее опытных редакторов, предлагая простые 3D-модели, доступные для редактирования.
Большинство инструментов, предлагаемых Paint, не соответствуют его предыдущим версиям и включают:
Microsoft также добавила специальный инструмент, позволяющий пользователям преобразовывать 2D-объекты в 3D-объекты. Также доступны стандартные функции 3D, такие как вращение и изменение положения объекта на оси 3D.
Также доступен онлайн-сервис, который позволяет пользователям загружать свои 2D / 3D-творения в свои профили Xbox Live. В MS Paint 3D также есть опция, позволяющая пользователям записывать весь процесс редактирования.
Если вы еще не пробовали Paint 3D, обязательно сделайте это, поскольку это совершенно бесплатно.
Blender – это бесплатное программное обеспечение с открытым исходным кодом, используемое для создания всего 3D-конвейера. Программное обеспечение используется для создания анимационных фильмов, визуальных эффектов, 3D-печатных моделей, 3D-приложений, видеоигр и искусства.
Приложение позволяет использовать различные геометрические формы, контурные шрифты и имеет собственную новую систему моделирования, называемую B-сеткой. Это довольно быстрый движок рендеринга Cycles, который сделает процесс рендеринга быстрее, чем когда-либо.
Стоит отметить, что этот инструмент идеально подходит для разработки видеоигр, поскольку он поддерживает сценарии Python для создания инструментов, игровой логики, автоматизации задач и прототипирования.
Программное обеспечение 3D также имеет функцию отслеживания движения, которая поддерживает функции отслеживания как камеры, так и движения. Что касается отслеживания, пользователи могут настроить камеру на отслеживание объектов вручную или автоматически.
Преимущество наличия этих конкретных функций заключается в том, что пользователям не понадобятся другие программы, поскольку у него есть собственный встроенный полноценный композитор.
Запустите сканирование системы, чтобы обнаружить потенциальные ошибки
Нажмите Начать сканирование, чтобы найти проблемы с Windows.
Нажмите «Восстановить все», чтобы исправить проблемы с запатентованными технологиями.
Запустите сканирование ПК с помощью Restoro Repair Tool, чтобы найти ошибки, вызывающие проблемы с безопасностью и замедление. После завершения сканирования в процессе восстановления поврежденные файлы заменяются новыми файлами и компонентами Windows.
Autodesk MotionBuilder – это редактор трехмерной графики, который в основном используется для игр, производства фильмов и телевидения. Это программное обеспечение для 3D-редактирования имеет инструмент очистки сцены, который удаляет пустые или неиспользуемые ресурсы из сцен, тем самым уменьшая размер файла.
Управление камерой стало проще для пользователей MontionBuilder. У камер есть своя отдельная панель, и опция CTRL + select camera была создана для того, чтобы переключать камеры быстрее и проще.
В MotionBuilder каждая сцена может иметь много разных и отдельных анимационных дорожек. Эта функция полезна, потому что пользователю не нужно сохранять каждую анимацию как независимый файл.
Autodesk MotionBuilder предлагает своим пользователям инструмент Story, который позволяет им складывать серии клипов для создания новой анимации. С помощью этого инструмента вы также можете обрезать клипы, выровнять клип с другим и смешивать клипы.
Mudbox – это программа для цифровой скульптуры, позволяющая пользователям создавать и редактировать все виды 3D-моделей. Это очень сложное программное обеспечение, предлагающее широкий спектр инструментов и функций.
Вот некоторые из наиболее часто используемых функций:
Mudbox – довольно удобная программа. Его интерфейс был очень хорошо продуман, чтобы быстро адаптироваться к новым пользователям. Разработчики программного обеспечения реализовали функции рисования и текстурирования, что позволило пользователям рисовать на своих моделях непосредственно в 3D.
Динамическая тесселяция – это инструмент Mudbox, призванный упростить работу пользователя. Он предсказывает форму модели, которую пользователи хотят детализировать. Инструменты лепки могут создавать мозаику для сетки пользователя, пока он лепит.
Мы надеемся, что наш список может предоставить вам программное обеспечение, соответствующее вашим потребностям. Если эта статья вам помогла, оставьте комментарий в разделе комментариев ниже.
Русские Блоги
FBX SDK Quick Sketch (базовый)
Быстрый набросок FBX SDK (базовый)
Организационная структура модели FBX
Весь Fbx начинается с корневого узла пустого атрибута Scene (сцена), где каждый узел является объектом KFbxNode (корневой узел), обеспечивая двунаправленное индексирование (то есть родительский узел может индексировать дочерний узел и наоборот). Каждый узел имеет значение перечисления атрибута метки (тип перечисления C ++), такое как eMesh, eLight, eCamera или eSkeleton и т. Д., Которые используются для маркировки текущего узла как Mesh, Light, Camera или Skeleton, в основном путем оценки атрибута узла при обходе. Одновременно выполняются разные операции обработки.
Обычно перед использованием мы инициализируем следующие две переменные.
KFbxskdManager: механизм управления памятью [Управление всеми загруженными ресурсами (создание ресурсов и уничтожение ресурсов (короче говоря, это механизм управления динамической памятью, написанный C))]
KFbxScene: контейнер сцены (сцены) [загрузить и обработать модель в этом контейнере]
FbxManagr управляет разметкой памяти
FbxManagr управляет разметкой памяти, это основа и должна существовать для fbx. Функции-члены Create () и Destroy () для создания или уничтожения.
Примечание: (FbxNode и FbxMesh) могут быть созданы только с использованием FbxManager в качестве ссылки.
Скопируйте объект
Управление атрибутами
Данные атрибута
Флаги
Если свойство также содержит набор FbxPropertyFlags :: eFbxPropertyFlags, вы можете использовать для работы FbxProperty :: GetFlag () и FbxProperty :: ModifyFlag ().
Оператор
Стандартные операторы сравнения и присваивания могут использоваться для сравнения и присвоения свойств друг другу (FbxProperty :: operator == (), FbxProperty :: operator :: operator! = (), FbxProperty :: operator = ()).
Пользовательские данные
Атрибуты могут быть организованы в иерархию. FbxProperty может быть подключен к FbxObject или к другому FbxProperty. Доступ к привязке FbxObject свойства можно получить, вызвав FbxProperty :: GetFbxObject (). Пример ExportScene05 иллюстрирует построение иерархии атрибутов.
Доступ к объектам FBX
Используйте FbxObject :: FindProperty () для поиска этих свойств. Вы также можете перебирать свойства объекта, вызывая FbxObject :: GetFirstProperty () и FbxObject :: GetNextProperty ().
Перемещаться по иерархии атрибутов (примечание: эта часть четко не описана)
Функцию навигации по свойствам FBX можно использовать для просмотра иерархии свойств FBX: FbxProperty :: GetParent (), FbxProperty :: GetChild (), FbxProperty :: GetSibling (), FbxProperty :: Find () и т. Д.
Он демонстрирует, как создавать собственные значения FbxProperty и связывать их с экземпляром FbxObjectMetaData (этот экземпляр наследуется от FbxObject).
Связи (вы не сможете упростить это, если будете стараться изо всех сил)
Визуализация связей
Подключения можно визуализировать как объекты и атрибуты FBX, разделенные на целевую и исходную иерархии.
В следующем примере кода демонстрируются целевое соединение и исходное соединение на приведенной выше диаграмме отношений.
Доступ к исходному объекту obj0:
Получите доступ к исходным свойствам obj0:
Доступ к целевому объекту obj1:
Особым образом пройдемся по иерархии, начиная с obj2:
Вообще говоря, это немного похоже на отображаемое дерево отношений. При настройке нового дисплея (блока) нужно указать его порядок, например: 0, 1 После установки блока что-то в него вставьте, а затем установите форму подключения.
Объекты и атрибуты подключения
Концепция подключения в FBX SDK позволяет динамически добавлять экземпляры FbxProperty в FbxObject. Это позволяет гибко определять собственные типы данных, заключать их в свойства FBX с помощью функции-члена FbxProperty :: SetUserDataPtr () и связывать свойства с объектом FBX с помощью функции-члена FbxObject :: ConnectSrcProperty ().
Прежде чем углубляться в связь между узлом (FbxNode) и атрибутом узла (FbxNodeAttribute), рекомендуется ознакомиться с организацией графа сцены в FBX SDK. Для получения дополнительной информации см. раздел.
Пример связи «объект-объект»: родительско-дочерние отношения между узлами в сцене
Способ подключения следующий:
Примечание: тема явно манипулирует связями между узлами, чтобы объединить содержимое двух сцен.
Пример соединения «объект-объект»: узел и атрибуты узла
Связь между FbxNode и FbxNodeAttribute обычно создается путем вызова FbxNode :: SetNodeAttribute (). Следовательно, экземпляр FbxMesh (который наследуется от FbxNodeAttribute) может быть привязан к узлу в сцене. при этих обстоятельствах:
Примечание: материал (fbxsurfacemataterial) также связан с fbxnode как исходный объект. Один узел может быть подключен к нескольким материалам, а один материал может быть подключен к нескольким узлам (для уменьшения использования памяти). Однако обратите внимание, что fbxsurfacemataterial не является подклассом FbxNodeAttribute.
Пример соединения «объект-атрибут»: узлы и переходы
Как описано в разделе
, данные локального преобразования FbxNode определяются как FbxPropertyT и параметризуются с использованием типа данных FbxDouble3. при этих обстоятельствах:
FbxPropertyT, возвращаемый FbxNode :: LclTranslation, является исходным свойством FbxNode.
Обработка ошибок
Формат строки поддержки
FBX SDK внутренне использует строки UTF-8. При вызове функций в API операционной системы FBX преобразует свою строку UTF-8 в требуемый строковый формат.
Среда Windows определяет следующие функции преобразования:
Пользовательский FBX SDK
Пользовательские данные пользователя
Экземпляры FbxObject и FbxProperty предоставляют (void) Указатель, чтобы вы могли связать любые пользовательские данные с экземпляром:*
Примечание. Вы несете ответственность за создание, уничтожение и иное управление пользовательскими данными.
Настраиваемые атрибуты
Вы можете динамически добавлять собственные экземпляры FbxProperty в FbxObject. Пример кода в
показывает, как создавать и добавлять такие настраиваемые свойства.
Примеры программ ExportScene05, UserProperties и Tutorial: ImportExport также предоставляют подробную информацию о том, как получить и установить данные настраиваемых свойств.
Пользовательский класс
Вы можете динамически добавлять собственные экземпляры FbxProperty в FbxObject. Пример кода в
показывает, как создавать и добавлять такие настраиваемые свойства.
Примеры программ ExportScene05, UserProperties и Tutorial: ImportExport также предоставляют подробную информацию о том, как получить и установить данные настраиваемых свойств.
Пользовательский класс должен быть зарегистрирован в FbxManager путем вызова FbxManager :: RegisterFbxClass ().
Из » [ExportScene03] () «/ main в примере. Пользовательские классы MyFbxMesh и MyFbxObject определены в ExportScene03 / MyFbxMesh.h. Эти классы наследуются от FbxMesh и FbxObject соответственно.
Настроить пользовательские данные для элементов слоя
Чтобы создать элемент слоя с настраиваемым типом, используйте класс FbxLayerElementUserData. Как и любой другой элемент слоя, он может отображаться на вершину многоугольника, вершину, многоугольник и так далее.
Обратитесь к функции CreateCubeWithMaterialAndMyFbxMesh () в ExportScene03. Эта функция создает пользовательское соединение на основе типов данных с плавающей запятой и логического типа и добавляет данные в каждую вершину.
Пользовательский формат файла
FBX SDK использует несколько форматов файлов для импорта и экспорта данных сцены. Каждый формат файла имеет свой собственный класс записи (из FbxWriter) и класс чтения (из FbxReader). Чтобы использовать настраиваемые FbxWriter и FbxReader, они должны быть загружены через подключаемый модуль ввода-вывода FBX SDK. Для получения дополнительной информации см. Настройка формата файла с помощью подключаемого модуля ввода-вывода FBX SDK.
SDK расширения FBX
Вышеупомянутое базовое введение окончено, начните здесь, чтобы познакомить вас с ключевыми моментами.
FBX SDK (я думаю, вам будет неприятно его видеть)
Чтобы настроить FBX SDK, вам необходимо загрузить FBX SDK.
FBX сцена
Сводка по организации сцены
Граф сцены FBX SDK абстрагируется классом FbxScene. Сцены организованы в виде иерархии узлов (FbxNode). Получите доступ к корневому узлу сцены через FbxScene :: GetRootNode (). Элемент сцены, например сетка, источник света или камера, определяется путем объединения подклассов FbxNode и FbxNodeAttribute. Для получения дополнительной информации см. Свойства узла FBX и узла FBX.
Примечание. Во время операции экспорта корневой узел сцены не будет экспортирован в файл. В файл экспортируются только дочерние узлы корневого узла. Поэтому не рекомендуется ничего связывать с корневым узлом, который должен быть сохранен в файле.
Создать сцену
Как показано в разделе «Использование диспетчера FBX SDK для управления памятью», FbxScene создается путем вызова функции FbxScene :: Create (). Новый FbxScene содержит корневой FbxNode и объект FbxGlobalSettings (глобальные настройки) с конфигурацией по умолчанию.
Используйте Scene для создания дочерних узлов
Ось чувств и преобразование единиц измерения
Объекты в FBX SDK всегда создаются в системе оси вправо. Систему осей сцены может потребоваться преобразовать в соответствии с потребностями вашего приложения. Для получения дополнительной информации см. Документацию по классу FbxAxisSystem.
Ключевые моменты системного блока FBX SDK:
• Если приложению для чтения необходимо определить системную единицу, создавшую данные, используйте исходную системную единицу в качестве ссылки.
• Для написания прикладной программы системный блок должен быть четко установлен.
Система чувств и единиц измерения может быть изменена с помощью следующих функций:
Обратите внимание, что вызов ConvertScene () не изменит значения вершин меша, он повлияет только на преобразование узлов и анимацию. Если сцена уже находится в требуемой системе осей или требуемой системе единиц, вызов ConvertScene () не влияет на сцену. Например:
Примечание. Если ваша сцена неправильно масштабируется после преобразования единиц измерения, это может быть вызвано различными типами наследования узлов (ETransformInheritType), особенно узлами с типом наследования eINHERIT_Rrs. Чтобы избежать этой проблемы, обязательно используйте параметры преобразования в следующих фрагментах кода, чтобы избежать преобразования единиц на этих узлах. Этот код также демонстрирует, как преобразовать единицы измерения сцены из сантиметров (см) в метры (м):
Все настройки сцены
Система осей, системная единица, окружающее освещение и настройки времени сцены определяются в ее объекте FbxGlobalSettings. Доступ к этому объекту осуществляется через FbxScene :: GetGlobalSettings ().
Animation evaluation
FbxAnimEvaluator сцены вычисляет геометрическое преобразование анимации каждого узла сцены в определенное время. Он также вычисляет любые другие анимируемые свойства сцены, такие как изменение цвета для определенных материалов. Получите доступ к FbxAnimEvaluator сцены через FbxScene :: GetEvaluator (). Подробнее см. Анимация.
Управление текстурой и материалами
Вы можете использовать функции-члены (такие как FbxScene :: GetMaterial () и FbxScene :: getexture ()) для доступа и изменения материалов (FbxSurfaceMaterial) и текстур (FbxTexture), созданных в сцене. Для получения дополнительной информации об использовании материалов и текстур с сетками см. Сетки, материалы и текстуры.
Управление характером и осанкой персонажа
Вы можете использовать FbxScene :: GetCharacter () и FbxScene :: GetCharacterPose () для доступа к персонажу (FbxCharacter) и позе персонажа (FbxCharacterPose) в сцене. Для получения подробной информации о том, как определить персонажа в сцене, обратитесь к документации классов FbxCharacter и FbxCharacterPose.
Тип дочернего узла структуры данных
Данные модели FBX
Поддерживаемые элементы сцены
FBX SDK позволяет вам получать доступ, создавать или изменять следующие элементы сцены (FbxScene):
Сетка-FbxMesh
Уровень детализации (LOD) Group-FbxlodGroup
Фары и прожекторы FbxLight, FbxGobo
Отображение текстуры на геометрии- FbxTexture
Отображение материалов по геометрии- FbxSurfaceMaterial
Контрольные точки анимации буфера вершин для геометрической фигуры- FbxDeformer
Отметка- FbxMarker
Кривая анимации- FbxAnimCurve
Примечание: Конечно, вы можете определить больше специальных атрибутов в расширении.
Ниже приведены некоторые часто используемые атрибуты тегов.
Иерархия узлов
Используйте FbxNode :: GetChild () и FbxNode :: GetParent () для обхода иерархии узлов. GetChildCount () возвращает количество дочерних узлов узла.
Преобразовать данные
Данные преобразования узла включают его векторы перемещения, поворота и масштабирования относительно его родительского узла. Данные представлены в виде набора объектов FbxPropertyT, к которым можно получить доступ через FbxNode :: LclTranslation, FbxNode :: LclRotation, FbxNode :: LclScaling. Обратите внимание, что префикс «Lcl» означает «локальный».
Данные преобразования узла могут быть ограничены объектом FbxLimits, и к ним можно получить доступ через FbxNode :: GetTranslationLimits (), FbxNode :: GetRotationLimits () и FbxNode :: GetScalingLimits (). Вы также можете использовать объект FbxConstraint для ограничения узлов. Подробнее см. Документацию классов FbxLimits и FbxConstraint.
Характеристики перемещения, поворота и масштабирования узла относительно глобальной системы координат сцены могут быть выражены в виде матрицы преобразования. Эта матрица преобразования получается с помощью FbxNode :: EvaluateGlobalTransform ().
Сгруппированные узлы
Экземпляр FbxNode может существовать без привязки FbxNodeAttribute. В этом случае такой FbxNode можно использовать для группировки или определения местоположения его дочерних узлов в сцене.
Создать атрибуты узла
Атрибут FbxNodeAttribute связан с FbxNode для определения элементов сцены с конкретными позициями, поворотами и масштабами. Если атрибут узла не установлен для узла, вызов FbxNode :: GetNodeAttribute () вернет NULL.
Атрибуты узла
В следующей таблице показан набор основных элементов сцены и связанные с ними подклассы FbxNodeAttribute. Вы можете использовать FbxNode :: SetNodeAttribute (), чтобы связать эти атрибуты узла с FbxNode. Полную иерархию классов см. В Справочном руководстве по C ++.
Примечание. Некоторым приложениям требуются пустые типы узлов в графе сцены. Атрибут узла FbxNull используется для определения такого типа узла. Обратите внимание, что экземпляры FbxNull отличаются от значений NULL.
Тип атрибута узла
Тип FbxNodeAttribute (FbxNodeAttribute :: EAttributeType) можно получить, вызвав FbxNodeAttribute :: GetAttributeType (). EAttributeType очень полезен для преобразования объектов атрибутов узла в соответствующие подклассы.
В следующем примере кода (адаптированном из ImportScene / main.cxx и ImportScene / DisplayLight.cxx) показано, как использовать переключатель для отображения FbxLight, содержащегося в FbxNode.
Эта часть страницы
•легкий
• камера
•геометрия
легкий
Создайте свет
Источники света в FBX SDK абстрагируются классом FbxLight. FbxLight создается так же, как и любой другой объект в сцене.
По умолчанию FbxLight указывает вдоль отрицательной оси Y узла.
Примечание. Окружающее освещение сцены определяется в глобальных настройках, к которым можно получить доступ через FbxScene :: GetGlobalSettings (). Для получения дополнительной информации обратитесь к документации класса FbxGlobalSettings.
Тип света
Вы можете определить поведение источника света, задав его свойство FbxLight :: LightType.
В следующей таблице приводится сводная информация о поведении каждого типа источника света.
Light Type ( FbxLight::ELightType ) | Description |
---|---|
FbxLight::eSpot | Light spreads in a conical shape from its origin, like a spotlight. The FbxLight::InnerAngle and FbxLight::OuterAngle properties determine the parameters of the cone in degrees. |
FbxLight::ePoint | Light spreads uniformly in all directions from its origin. |
FbxLight::eDirectional | Light spreads in a cylindrical shape from its origin. |
Направьте свет
Прожекторы или направленные источники света можно заставить постоянно указывать на определенные цели в сцене. Для этого световой узел должен использовать FbxNode :: SetTarget () для установки своей цели. Используйте атрибут узла FbxMarker в целевом узле.
По умолчанию FbxNode использует свою положительную ось X в качестве ограничения прицеливания. Напомним, что по умолчанию вновь созданная световая точка расположена вдоль отрицательной оси Y узла. Чтобы осветить точку вдоль положительной оси X узла, необходимо использовать FbxNode :: SetPostTargetRotation (), чтобы применить смещение поворота на 90 градусов к узлу источника света. Дополнительные сведения см. В разделе «Управление целевым узлом» в документации по классу FbxNode.
Цвет и интенсивность
Цвет света определяется в его свойстве FbxLight :: color. Значение RGB источника света по умолчанию (1.0,1.0,1.0), выраженное как FbxDouble3.
Ослабление света
Тип затухания света определяется в его атрибуте FbxLight :: DecayType.
В таблице ниже приведены доступные типы затухания.
Decay Type ( FbxLight::EDecayType ) | Description |
---|---|
FbxLight::eNone | No decay. The light’s intensity will not diminish with distance. |
FbxLight::eLinear | Linear decay. The light’s intensity will diminish linearly with the distance from the light. |
FbxLight::eQuadratic | Quadratic decay. The light’s intensity will diminish with the squared distance from the light. This is the most physically accurate decay rate. |
FbxLight::eCubic | Cubic decay. The light’s intensity will diminish with the cubed distance from the light. |
Примечание. Также доступны другие функции затухания на основе расстояния, такие как FbxLight :: enablenear и FbxLight :: enablefar. Для получения дополнительной информации обратитесь к документации класса FbxLight.
Видеокамера
Создать камеру
Камера в FBX SDK абстрагируется классом FbxCamera. Стереокамера, используемая для создания трехмерных изображений, абстрагируется классом FbxCameraStereo. В этой теме мы обсудим только основные методы создания и работы с FbxCamera.
По умолчанию FbxCamera указывает на положительную ось X узла.
После создания камеры ее можно установить в качестве камеры по умолчанию для сцены. Сцена должна явно установить камеру по умолчанию, даже если в сцене есть только одна камера.
Укажите на камеру
В сцене камеру можно заставить последовательно указывать на конкретную цель. Для этого узел камеры должен использовать FbxNode :: SetTarget () для установки своей цели. Используйте атрибут узла FbxMarker в целевом узле.
Примечание. Дополнительные сведения см. В разделе «Управление целевым узлом» в документации по классу FbxNode.
По умолчанию для свойства FbxCamera :: FocusSource установлено значение FbxCamera :: eFocusSrcCameraInterest, чтобы фокус оставался на цели камеры. Источник фокусировки также можно установить на определенном расстоянии от камеры.
Свойства камеры
Для получения дополнительной информации о настройке камеры в сцене см.FbxCameraДокумент класса.
геометрическая структура
геометрическая структура
Для получения дополнительной информации обратитесь к разделу «Сетка, материал и текстура».
Meshes, Materials and Textures
Сетка, материал и текстура
В этом разделе представлены сетки, текстуры и материалы в FBX SDK.
Сетки
Сетка абстрагируется классом FbxMesh. FbxMesh определяет список контрольных точек, также называемых вершинами в общей литературе. Вы можете привязать один экземпляр FbxMesh к нескольким экземплярам FbxNode, чтобы уменьшить потребление памяти. Это называется созданием экземпляра. Геометрия сцены использует концепцию слоев и элементов слоя (FbxLayerElement) для определения карт нормалей, карт материалов, текстурных карт и т. Д.
Материалы
Материалы (FbxSurfaceLambert, FbxSurfacePhong) привязываются к экземпляру FbxNode через FbxNode :: AddMaterial (). Материал определяет основные характеристики рендеринга геометрии сцены, такие как ее диффузное отражение, окружение и цветовые характеристики излучения. Каждый материал занимает определенный индекс в FbxNode. FbxMesh :: BeginPolygon () может ссылаться на этот индекс для определения материала вновь созданного многоугольника.
Текстуры
Страницы в этом разделе
• сетка
• материал
• Текстура
Сетки
Creating a mesh
Сетка в FBX SDK абстрагируется классом FbxMesh. Сетка определяется набором вершин или «контрольных точек» на каждой грани, а набор слоев определяет нормаль, текстуру и материал сетки. В следующем примере кода показано, как создать экземпляр FbxMesh.
Определение контрольных точек
Примечание: обратите внимание, что преобразование оси сцены не влияет на значения вершин меша. Для получения дополнительной информации см. Ось сцены и преобразование единиц измерения.
Назначение нормалей
Вектор нормали сетки определяется в экземпляре FbxLayerElementNormal. Элементы слоя, такие как нормали, могут быть сопоставлены с поверхностью сетки различными способами, например, с помощью контрольных точек (FbxLayerElement :: eByControlPoint), вершин многоугольника (FbxLayerElement :: eByPolygonVertex), многоугольников (FbxLayerElement :: eByPolygon), FbxLayerElement :: eByEdge) или отображение для координации всей поверхности (FbxLayerElement :: eAllSame). Для получения дополнительной информации см. FbxLayerElement :: EMappingMode.
Учитывая массив векторов нормалей и массив контрольных точек, мы можем указать, как массив контрольных точек ссылается на массив векторов нормалей. Это определяется FbxLayerElement :: SetReferenceMode (), указанным в FbxLayerElement :: EReferenceMode. В режиме eDirect n-й элемент в массиве векторов нормалей сопоставляется с n-м элементом в массиве контрольных точек.
В следующем примере кода мы изучим, как использовать эталонный режим EReferenceMode :: eDirect для отображения каждой контрольной точки (FbxLayerElement :: eByControlPoint) нормали в сетку. Обратите внимание, что порядок вызова FbxLayerElementArrayTemplate :: Add () соответствует порядку контрольных точек, определенному выше.
Страницы в этом разделе • Совместное использование экземпляра сетки
Материалы
Примечание. Пример кода в этом разделе также находится в ExportScene03 / main. cxx пример программы.
Создание материала
Пример: создание квадратной пирамиды из материалов Пример: создание квадратной пирамиды из материалов
В следующем примере кода функция CreateMaterials (), определенная выше, используется для привязки пяти материалов к пяти граням квадратной пирамиды. Сначала определим контрольные точки и нормали конуса.
Затем создайте новый элемент слоя материала (fbxgeometry yelementmaterial) в сетке, чтобы указать, что материал привязан к контрольным точкам многоугольников в сетке. Функция FbxMesh :: BeginPolygon () использует индекс, чтобы определить, какие материалы будут привязаны к новому многоугольнику. Этот индекс относится к расположению материала, хранящегося в FbxNode.
Использование аппаратных шейдеров для создания материалов
Аппаратные шейдеры CGFX и DirectX поддерживаются FBX SDK с версии 2010. Вы можете использовать CGFX или DirectX для реализации, использовать класс FbxImplementation и класс FbxBindingTable для установки материала.
Текстуры
Примечание. Пример кода в этом разделе также находится в ExportScene03 / main. cxx пример программы.
Создать текстуру из файла
Пример: создание текстурированного куба Пример: создание текстурированного куба
The following code sample makes use of the CreateTexture() function we defined above. We first begin by defining the control points and normals of the cube.
В следующем примере кода используется функция CreateTexture (), которую мы определили выше. Сначала мы определяем контрольные точки и нормали куба.
Затем мы вызываем «FbxMesh :: CreateElementUV ()» для создания трех новых текстурных слоев в сетке соответственно дляДиффузное отражение、окружениес участиемвыбросМатериальный канал. Созданный элемент слоя текстуры (’fbxgeometry yelementuv’) определяет, как сопоставить UV-координаты текстуры с каждой вершиной многоугольника. Наконец, мы вызываем значение FbxNode :: SetShadingMode () FbxNode :: etextuding, чтобы позволить отрисовать нашу текстуру в сцене.
Pages in this section
Матрицы глобальных и локальных преобразований
Вызовите FbxNode :: EvaluateGlobalTransform () и FbxNode :: EvaluateLocalTransform (), чтобы получить соответственно глобальную и локальную матрицы преобразования узла:
Эти функции-члены эквивалентны использованию функций FbxAnimEvaluator :: GetNodeGlobalTransform () и FbxAnimEvaluator :: GetNodeLocalTransform () оценщика анимации FbxScene:
Передавая объект FbxTime, можно получить матрицу преобразования узла анимации в определенный момент времени.
Примечание. Невозможно явно установить глобальную матрицу преобразования узла в FBX SDK.
Свойства геометрического преобразования
Свойства геометрического преобразования FbxNode (FbxNode :: GeometricTranslation, FbxNode :: GeometricRotation, FbxNode :: GeometricScaling) описывают, как FbxNodeAttribute смещается от локальной системы координат FbxNode. После вычисления локальных преобразований FbxNode эти геометрические преобразования применяются к FbxNodeAttribute, а не наследуются в иерархии узлов.
Примечание. Природа геометрического преобразования связана с тем, как 3ds Max представляет информацию об основных компонентах. Это сопоставимо с преобразованием смещения объекта в 3ds Max.
Компоненты преобразования выпечки в стандартное преобразование TRS
Примечание. Во избежание повторного вычисления сводной матрицы и обновления кривой анимации каждый раз при изменении параметра FBX SDK применяет новые настройки только при явном вызове ResetPivotSetAndConvertAnimation () или ConvertPivotAnimationRecursive ().
Рассчитать матрицу преобразования
FBX SDK и Maya используют одну и ту же формулу для вычисления матрицы преобразования. Однако в 3ds Max используется другая формула.
Примечание. Импортеры и экспортеры FBX автоматически преобразуют матрицу преобразования для 3ds Max в 3ds Max и обратно.
FBX and Maya
Следующая формула показывает, как FBX SDK и Maya вычисляют матрицу преобразования узла:
Любой заданный вектор преобразуется следующим образом
Примечания:
3ds Max
Следующая формула показывает, как 3ds Max вычисляет матрицу преобразования узла. Все термины в формуле такие же, как в FBX и Maya, за исключением трех членов, представляющих геометрическое преобразование;
Where the term: | Is a 4 x 4 matrix that contains: |
---|---|
WorldTransform | Transformation matrix of the node |
ParentWorldTransform | Transformation matrix of the parent node |
T | Translation |
R | Rotation |
S | Scaling |
OT | Geometric transform translation |
OR | Geometric transform rotation |
OS | Geometric transform scaling |
Заметка:
Анимация
В этом разделе представлена система анимации FBX SDK, взаимосвязь между структурой данных анимации и разница между текущей структурой данных и структурой данных, используемой для анимации в FBX SDK 2010. Кроме того, в этом разделе объясняется процесс смешивания, извлечения и оценки данных анимации.
Страницы в этом разделе
• Структура данных анимации
• Гибридная анимация
• Извлечение данных анимации из файлов FBX
• Оцените анимацию сцены.
•пример
Структуры данных анимации
FBX SDK использует эти структуры данных для анимации: стек анимации (FbxAnimStack), слой анимации (FbxAnimLayer), узел кривой анимации (FbxAnimCurveNode), кривую анимации (FbxAnimCurve) и ключ кривой анимации (FbxAnimCurveKey). В сцене FBX (FbxScene) структуры данных связаны друг с другом через соединения объект-объект (OO) и соединения объект-атрибут (OP). Дополнительные сведения об этих структурах данных см. В разделе Классы анимации и их отношения.
FBX SDK поддерживает гибридную анимацию, которая является функцией Autodesk MotionBuilder, Autodesk Maya и других приложений. Смешивание создает плавный переход от одной анимации к другой. Например, если у вас есть набор кривых анимации, которые позволяют персонажу ходить, и другой набор кривых анимации, которые позволяют персонажу бегать, вы можете создать плавный переход от ходьбы к бегу, смешав анимацию ходьбы с анимацией бега. При смешивании анимаций вы получите наилучшие результаты, если смешаете анимации с похожими движениями. Инструкции по смешиванию с использованием структуры данных анимации см. В разделе «Смешивание анимации».
Пример использования этих структур данных для создания анимации (без смешивания) см. В разделе «Узел анимации».
До FBX SDK 2011 структуры данных, используемые для анимации, включали узел получения, контейнер узла приема, информацию о получении и т. Д. См. Раздел «Переход на новую структуру данных анимации», чтобы понять разницу между текущей структурой данных и структурой данных, используемой для анимации в FBX SDK 2010.
Страницы в этом разделе
• Классы анимации и их отношения
• Переход на новую структуру данных для анимации
• Напишите и используйте своих собственных оценщиков
• Сохранять анимацию в буфере вершин
Родительская страница: анимация
Классы анимации и их взаимосвязь
Ниже приведены классы для хранения данных, связанных с анимацией, в сцене:
На следующей диаграмме классов UML показаны отношения между классами в сцене FBX.
Сценарий, показывающий взаимосвязь между структурами данных
Родительская страница: структура данных анимации
Сцена, показывающая взаимосвязь между структурами данных
Этот пример помогает понять, как структуры данных связаны друг с другом в типичном сценарии.
В примере сцены есть стек анимации с тремя слоями анимации. В следующей таблице объясняется, как слои анимации и другие структуры данных влияют на значение свойств FBX.
нота:
AnimationCurve0 подключен к CurveNode1 и CurveNode3. Следовательно, при оценке сцены AnimationCurve0 повлияет на два разных свойства FBX (Obj0Property и Obj2Property) двух разных объектов FBX (FBXObject0 и FBXObject1) в двух разных слоях анимации (AnimationLayer1 и AnimationLayer2). Кроме того, способ оценки данных анимации зависит не только от кривой анимации, но также от режима наложения и веса смешивания каждого слоя анимации. Дополнительные сведения о смешивании см. В разделе «Анимация наложения».
Система анимации FBX SDK обеспечивает большую гибкость, но вы несете ответственность за обеспечение эффективности отношений между структурами данных.
Переход на новые структуры данных для анимации
Текущая система анимации FBX SDK была полностью переработана. Структуры данных, такие как приемный узел, приемный узел-контейнер и информация о приеме в FBX SDK 2010, были заменены новыми структурами данных. В следующей таблице объясняется разница между текущей структурой данных и структурой данных в FBX SDK 2010.
Примечание. Не рекомендуется использовать устаревшие классы и элементы API. При использовании устаревших классов и элементов API компилятор может отображать предупреждения.
аномальный
Объект FbxTakeInfo не является устаревшим в текущей версии FBX SDK.
Вы по-прежнему можете получить данные анимации из файла (сцены) FBX в объект FbxTakeInfo, не загружая весь файл FBX. См. Извлечение aata анимации из файлов FBX.
• Вы можете использовать данные, хранящиеся в объекте FbxTakeInfo, для инициализации объекта FbxAnimStack. Смотрите FbxAnimStack: Reset ().
связанная тема:
• Классы анимации и их отношения
• Сценарии, показывающие взаимосвязь между структурами данных
Родительская страница: структура данных анимации
Написание и использование собственного оценщика
Вы можете использовать класс FbxAnimEvaluator для расчета анимации в сцене.
Однако вы можете реализовать свой собственный класс оценщика, производный от класса FbxAnimEvaluator.
Выполните следующие шаги, чтобы реализовать свой оценочный класс:
Вызовите «FbxScene :: SetEvaluator ()», чтобы установить оценщик на ваш собственный объект оценки.
Make the following call:
Теперь mySceneEvaluator будет указывать на объект вашего собственного класса оценщика.
See Evaluating the animation in a scene for information on evaluating the animation in a scene.
Сохранение анимации в кеше вершин
Образец кода использования буфера вершин для создания и анимации вершин см. В функциях MapVertexCacheOnTriangle () и AnimateVertexCacheOnTriangle () в программе-образце ExportScene03 (см. Без метки).
Пример кода для чтения данных в буфере вершин см. В функциях PreparePointCacheData () и ReadVertexCacheData () в программе-примере ViewScene (см. Без метки).
Примеры программ можно найти в \ samples \.
Родительская страница: структура данных анимации
Смешивание анимации
Смешивание создает плавный переход от одной анимации к другой. Вы можете смешивать две анимации, иметь общие свойства и быть частью одного набора символов. При смешивании анимации вы получите наилучшие результаты, если смешаете анимацию с аналогичным движением. Например, создайте смесь анимации ходьбы и бега.
Для смешивания анимаций в сцене требуется несколько слоев анимации. Например, чтобы смешать анимацию ходьбы с анимацией бега, необходимо использовать два слоя анимации. Базовый слой (Layer0) содержит узлы кривой анимации анимации ходьбы, а другой слой (Layer1) содержит узлы кривой анимации бегущей анимации.
Слои анимации вычисляются в том порядке, в котором они добавляются в стек анимации: Layer0, Layer1, Layer2 и т. Д.
Узел кривой анимации обычно соединяет кривую анимации с атрибутом FBX, но вы также можете использовать узел кривой анимации, чтобы просто переопределить значение атрибута FBX. См. Сценарии, показывающие отношения между структурами данных.
Примечание. Узлы кривой анимации также могут использоваться в качестве контейнеров для значений атрибутов FBX. Посмотрите анимацию в оценочной сцене
Использовать смешанный режим
Обойти смешанный режим определенных типов данных
Родительская страница: анимация
Использование режимов наложения
Режим наложения определяет, как анимация в слое анимации смешивается с анимацией в предыдущем слое анимации в стеке анимации. В следующей таблице поясняется смешанный режим:
Mode | Description | Example |
---|---|---|
Additive | The animation layer adds the animation to the preceding animation layers in the animation stack. The preceding animation layers must affect the same FBX properties. | If AnimLayerA and AnimLayerB both contain animation curve nodes that control the X translation of a FBX object, the resulting X translation is the sum of the X translation values in both the animation layers. |
Override | The animation layer overrides the animation in the preceding animation layers of the animation stack. The preceding animation layers must control the same FBX properties. | If AnimLayerA and AnimLayerB are in override mode, and the X translation of a FBX object on AnimLayerA is 10, and on AnimLayerB the X translation is 15, then the resulting X translation of the FBX object is 15. |
Override-Passthrough | Unlike, the override mode that completely blocks the animation in the preceding animation layers, in the override-passthrough mode, you can control the opacity of the animation layer. The preceding animation layers must affect the same FBX properties. | If AnimLayerC is in the override mode, then it is completely opaque and blocks the animation in the preceding animation layers. However, if AnimLayerC is in the override-passthrough mode, you can control the opacity of AnimLayerC by setting the weight value. |
Увидеть:
enum FbxAnimLayer:: EBlendMode
•enum FbxAnimLayer:: ERotationAccumulationMode
•enum FbxAnimLayer:: EScaleAccumulationMode
Родительская страница: Гибридная анимация
Обход режима наложения для определенных типов данных
Каждый слой анимации может содержать узлы кривой анимации, которые определяют множество свойств FBX для разных типов данных. Для свойств FBX определенного типа данных вы можете не захотеть, чтобы анимация в одном слое смешивалась с анимацией в другом слое, например, для типа данных Boolean.
Для каждого типа данных, определенного в файле заголовка fbxtype.h, каждый слой анимации имеет флаг обхода режима наложения. Чтобы обойти режим наложения, вы можете получить и установить значение флага обхода режима наложения на одно из следующих значений:
Value of Blend Mode Bypass Flag | Description |
---|---|
true | The blend mode in the animation layer is ignored. During evaluation (by using the FbxAnimEvaluator class), the value of the properties in the animation layer override the values in any previous layers. |
false | The blend mode for the animation layer is used during evaluation. |
See also:
Извлечение данных анимации из файла FBX
Вы можете извлекать и запрашивать данные анимации из сцены (файл FBX), не загружая весь файл FBX.
Выполните следующие шаги, чтобы извлечь данные анимации из сцены:
Extract the animation stacks using a pointer to an instance of the FbxScene (pScene).
Используйте указатель на экземпляр FbxScene (pScene), чтобы извлечь стек анимации.
Retrieve the nth animation stack.
Получите n-й стек анимации.
Retrieve the number of animation layers in an animation stack.
Получите количество слоев анимации в стеке анимации.
Retrieve the nth animation layer from the animation stack.
Извлеките n-й слой анимации из стека анимации.
After retrieving an animation layer, you can access the animation curves for the properties of nodes and node attribute.
После получения слоя анимации вы можете получить доступ к свойствам узла и кривым анимации свойств узла.
Retrieve the animation curves.
Получите кривую анимации.
Given a node (lNode) and an animation layer (lAnimLayer), you can retrieve the animation curves for node properties such as the local translation as shown in the following example.
Учитывая узел (lNode) и слой анимации (lAnimLayer), вы можете получить кривую анимации атрибута узла, например, локальное преобразование, показанное в следующем примере.
Given a node (lNode) and a layer (lAnimLayer), you can retrieve the animation curves for node attribute properties such as the red color component as shown in the following example.
Учитывая узел (lNode) и слой (lAnimLayer), вы можете получить кривую анимации атрибутов узла, таких как красный компонент, показанный в следующем примере.
You can also use the animation curve nodes to access the animation data for the properties. The following steps show how to access the animation curves for a specific property on the first (0th) channel.
Вы также можете использовать узел кривой анимации для доступа к данным анимации атрибута. Следующие шаги демонстрируют, как получить доступ к кривой анимации определенного атрибута на первом (0-м) канале.
Check whether the property is valid.
Проверить, действительна ли недвижимость.
Retrieve the curve node using the animation layer.
Используйте слои анимации, чтобы получить узлы кривой.
If the property is not animated the curve node is NULL.
Если этот атрибут не активирован, узел кривой пуст.
Step through the curves in the curve node.
Пройдите через кривую в узле кривой.
See the FbxAnimCurveNode class reference for more information on animation curve nodes and channels.
Дополнительные сведения об узлах и каналах кривых анимации см. В справке по классу «FbxAnimCurveNode».
Более подробный пример использования FBX SDK для импорта данных анимации см. В примере «ImportScene / DisplayAnimation.cxx».
Related topics:
Parent page: Animation
Оценка анимации в сцене
Для рендеринга сцены анимации (FbxScene) необходимо оценить свойства анимации (FbxObject) объектов в сцене в разные моменты времени. Например, чтобы отобразить мобильный гоночный автомобиль, представленный сеткой, необходимо анимировать свойство локального перехода узла, атрибут узла которого является сеткой. См. FbxNode :: LclTranslation.
Выполните следующие шаги, чтобы оценить анимацию в сцене:
Get an evaluator object from the scene object that contains the node.
Получите объект оценки из объекта сцены, содержащего узел.
Create a time object.
Создать объект времени
Create a node object.
Создать объект узла
Get the global transformation matrix or local transformation matrix of the node at a specific time.
Получить матрицу глобального преобразования или матрицу локального преобразования узла в определенный момент
To get the global transformation matrix:
Получите матрицу глобального преобразования:
To get the local transformation matrix:
Получите локальную матрицу преобразования:
Evaluate the camera’s position expressed as a vector at a specific time. Note A transformation matrix is not needed to evaluate a camera’s position.
Рассчитайте положение камеры как вектор в определенное время. Обратите внимание, что матрица преобразования не требуется для расчета положения камеры.
Evaluate a material property at a specific time.
Оцените эффективность материала в определенное время
See Animation/main.cxx for an example that illustrates the use of animation stacks, animation layers, animation curve nodes, and animation curves.
Анимация / главное смотреть. Приведите примеры, иллюстрирующие использование стеков анимации, слоев анимации, узлов кривой анимации и кривых анимации.
Использование узла Animation Curve для хранения значения свойства FBX
В приведенном выше фрагменте кода объект «FbxAnimCurveNode» не используется в качестве точки соединения между кривой анимации и свойством FBX. Вместо этого FbxAnimCurveNode используется как удобное место для хранения вектора атрибутов, возвращаемого оценщиком. Есть много типов данных для анимированных свойств объектов FBX. Некоторые типы данных являются скалярными, например «FbxDouble1», «FbxInteger1» и «FbxBool1». Другие типы данных имеют тройные (X, Y, Z) значения, которые хранятся как векторы.
See also:
Анимация узла
Если вы не используете смешанную анимацию, структура данных настройки анимации очень проста. Для каждого атрибута FBX требуется как минимум один стек анимации, один слой анимации и один узел кривой анимации.
В этом примере показано, как анимировать свойства локального перевода объекта FbxNode камеры.
Хотя этот пример демонстрирует, как анимировать свойства перемещения камеры, если свойства FBX анимированы, вы можете анимировать любые свойства FBX любого объекта FBX. Для получения дополнительной информации см. FbxPropertyFlags :: eAnimatable.
Следуйте инструкциям в этих разделах, чтобы настроить анимацию свойств локального перевода камеры.
Начните с создания стека анимации и слоя анимации
Выполните следующие действия:
1. Создайте стек анимации.
2. Создайте слой анимации.
3. Добавьте базовый слой в стек анимации.
После добавления базового слоя в стек анимации вы можете создать узлы кривой анимации для подключения данных анимации к свойствам FBX.
Создание узлов кривой анимации
Учебная программа CubeCreator создает узел кривой анимации для каждой оси движения камеры.
Создайте узел кривой анимации и подключите данные перевода к свойству LclTranslation узла камеры:
Описание:
Чтобы узнать о другом методе создания узлов кривых анимации и кривых анимации, обратитесь к программе-образцу анимации в \ samples \ animation \.
После установки узла кривой анимации (myAnimCurveNode) в качестве свойства локального перевода, которое соединяет кривую анимации с камерой (myCameraNode), вы можете создать кривую анимации.
Создайте кривые анимации
Выполните следующие действия:
1. Создайте кривую анимации панорамирования камеры по оси x.
2. Определите начальный и конечный ключевые кадры кривой анимации.
Если вы запустите эту анимацию, камере потребуется 20 секунд, чтобы переместить 500 единиц по оси x.
Вы можете обратиться к этим примерам программ, демонстрирующих анимацию:
• Пример программы анимации в \ samples \ Animation \.
• Учебная программа CubeCreator находится в \ samples \ UI Examples \ CubeCreator \.
связанная тема:
• Структура данных анимации
• камера
Объединить две сцены
В этом разделе описывается, как объединить две импортированные сцены. Он также предоставляет базовые сведения о рабочих сценариях и узлах в нем, а также знакомит читателей с концепциями подключения и управления подключением.
Шаги по объединению двух сцен следующие:
1. Загрузите сцену.
2. Измените узлы в сцене загрузки.
3. Переместите содержимое загруженной сцены в эталонную сцену.
4. Загрузите другую сцену.
5. Обновите вновь загруженную сцену содержанием эталонной сцены.
6. Уничтожьте эталонную сцену.
Загрузить и изменить сцену
Переместите содержимое загруженной сцены в эталонную сцену
Создайте еще один объект FbxScene, который мы назовем «эталонной сценой». Обратите внимание, что при создании объекта FbxScene также будут созданы его корневой узел и его глобальные настройки. Таким образом, целью этого шага является удалением дочерних узлов из корневого узла текущей сцены, так что они могут стать дочерними узлами корневого узла опорной сцены.
Другие объекты FbxObject, содержащиеся в текущей сцене, возможно, потребуется переместить в эталонную сцену. Эти объекты могут включать: экземпляры FbxCharacter, FbxCharacterPose и FbxDocumentInfo. Обратите внимание, что эти объекты не являются дочерними узлами корневого узла текущей сцены и их необходимо перемещать по-разному. Для этого нам потребуются некоторые базовые знания о соединениях в контексте FBX SDK.
Соединение представляет собой направленную связь «источник-цель» между двумя объектами FbxObject, одним FbxObject и одним FbxProperty или двумя наборами FbxProperty. Для получения дополнительной информации о подключении см. Подключение. В рамках этого руководства мы хотим отключить все связанные исходные объекты от текущей сцены и подключить их к эталонной сцене. Для этого мы используем FbxObject :: GetSrcObjectCount (), FbxObject :: DisconnectAllSrcObject () и FbxObject :: ConnectDstObject ().
Примечание: используя концепцию соединения, вы можете получить все объекты определенного типа в сцене.
В следующем фрагменте кода мы вызываем lScene-> GetSrcObjectCount (FbxMesh :: ClassId), чтобы пройти по сетке, подключенной к сцене.
Загрузить и обновить другую сцену
На этом этапе мы переместили элементы текущей сцены в опорную сцену, и текущая сцена становится пустой. Теперь мы получаем текущую сцену и заполняем ее содержимым «file2.fbx». Наконец, мы меняем имя первого дочернего элемента корневого элемента в текущей сцене, чтобы ссылаться на имя первого дочернего элемента корневого элемента в сцене. Наконец, имя первого дочернего элемента корня в текущей сцене должно быть «Test name».
Учебник по объединению сцен
Ниже представлена учебная программа по слиянию сцен, о которой говорилось выше.