UNIGINE 2.19.1: Масштабирование в VR, импорт USD, предварительный просмотр анимации, стабилизация
Ключевые изменения
- Импорт из формата данных USD
- Поддержка апскейлеров (DLSS и FSR) в VR
- Предварительный просмотр анимации в редакторе
- Поддержка Handtracking и Linux для OpenXR
- Улучшения плагина WebStreaming
- Оптимизация производительности: более быстрые хэш-карты
- Интеграция ImGUI и пример плагина для UnigineEditor
- Новые сэмплы SpiderVision
- Регистрация учетной записи в SDK Browser
- Учебный курс по UNIGINE на C++
Импорт и экспорт USD
Universal Scene Description (Универсальное описание сцены) ( формат *.usd) — это иерархический формат описания сцены с открытым исходным кодом, разработанный как универсальный формат обмена 3D-контентом при его разработке. Он широко используется в индустрии кино, анимации и VFX для оптимизации производственных конвейеров и облегчения взаимодействия между художниками и студиями. Поддержка USD позволяет осуществлять эффективный обмен 3D-данными между различными 3D-приложениями без потери каких-либо данных.
USD Kitchen Set, Pixar Animation Studios.
Помимо экспорта данных сцены в формат USD, представленного в версии 2.19, в этом релизе также реализован импорт USD (расширения файлов usda, usdc и usdz), в настоящее время поддерживающий следующие компоненты сцены:
- Текстуры (с автоматическим преобразованием текстур затенения UNIGINE)
- Материалы
- Меши и примитивы (сфера, куб и т.д.)
- Скелетная геометрия, кости и анимация
- Смешение фигур (цели морфинга)
- Источники освещения
- Камеры
Плагин USD Export для UnigineEditor был переименован в USD Exchanger и теперь доступен для всех редакций SDK. Дополнительную информацию об использовании плагина смотрите в этой статье.
Оптимизации Hash Map
Hash Map — это мощная структура данных, которая имеет широкое применение, особенно когда требуется быстрое время поиска. Однако, если мы не уделяем внимание деталям, она может стать неоптимальной. Мы провели рефакторинг и оптимизацию в отношении Hash Map и Hash Set для этого релиза. Теперь они обе хранят данные линейно, подобно векторам, что повышает производительность и снижает потребление памяти.
Мы также сохранили предыдущую реализацию для обратной совместимости и некоторых особых случаев, она называется BucketHashMap. Более подробную информацию см. в API Migration Guide.
Улучшения потоковой передачи видео
В версии 2.19 мы представили плагин WebStreaming, позволяющий транслировать аудиоданные и видеокадры, отрисованные приложением UNIGINE, через WebRTC. Помимо некоторых оптимизаций и улучшений, этот релиз дает возможность транслировать изображение с любой существующей камеры в отдельный экземпляр веб-браузера. Это позволяет переключаться между разными камерами в сцене, передавать разные виды на разные клиентские устройства (включая мобильные) и даже просматривать несколько разных видов в отдельных экземплярах веб-браузера на одном клиентском устройстве.
Улучшения SSRTGI
Мы продолжаем совершенствовать нашу технологию Screen-Space Ray-Traced Global Illumination, известную как SSRTGI, делая ее еще более фотореалистичной. Мы переработали распределение лучей по полусфере для всего эффекта. Также откорректировали накопление и применение SSGI. Исправили гамма-коррекцию для SSAO при записи в буфер, а также для визуализации SSAO во время отладки рендеринга.
Кроме того, удалили наложение SSAO на отражения, чтобы они выглядели более естественно.
Другие улучшения рендеринга
Также добавились различные улучшения рендеринга, включая следующие:
- Оптимизированное отсечение поверхности для источников света Projected и Omni (прозрачные материалы), которое дало прирост производительности в 10 раз для источников света Projected и в 2 раза для Omni.
- Добавлена возможность задать расстояние, на котором отображаются тени, и затенения границы ближнего отсечения для источников света Projected и Omni.
- Исправлена проблема с воздействием удаленных статических объектов на буфер скорости.
- Исправлена проблема с движением камеры, влияющим на скорость анимации анимированных материалов.
- Исправлены визуальные артефакты от растительности, возникающие, когда параметр Leaves Offset больше 0.
- Декали теперь поддерживают рендеринг Ambient Occlusion. Функция доступна в Редакторе материалов через выходы Ambient Occlusion и Opacity Ambient Occlusion материала Decal PBR.
- Исправлено мерцание объектов-импосторов травы при включенных параметрах Animation и Depth Map, а также при значениях Stem Noise больше 1.
- Исправлена проблема с источниками света Projected и профилями IES, приводившая к ошибкам компиляции шейдеров.
- Исправлена проблема с апскейлером FSR, приводившая к чрезмерному шуму.
- Исправлена проблема с рендерингом теней и каустики от источников света World на поверхности объекта Global Water.
- Исправлена некорректная визуализация дымки, когда Gradient Mode установлен на Short/Long Distance Range.
- Исправлена проблема, из-за которой изменение глобальной настройки Textures Quality влияло на текстуры Scattering LUT, освещение и пост-эффекты .
- Исправлен визуальный артефакт от источника света World после перезагрузки мира, связанный с потоковой передачей текстур рассеивания Солнца/Луны.
- Добавлена возможность включать/отключать временную фильтрацию для эффекта Subsurface Scattering. Управлять ею можно через настройки Subsurface Scattering в UnigineEditor (или render_sssss_taa через консоль).
- Исправлена проблема с некорректной потоковой передачей текстур детализации для объекта Landscape Terrain.
- Исправлена проблема с очисткой 3D-текстур на Vulkan, приводившая к появлению артефактов при запекании освещения в Voxel Probe.
- Исправлены визуальные артефакты при нехватке памяти графического процессора (Vulkan GAPI).
- Оптимизация рендеринга графического интерфейса сделала его примерно в 2 раза быстрее.
- Исправлены артефакты разрыва FSR в нижней части экрана.
- Исправлена проблема с рендерингом FFP, приводившая к появлению визуальных артефактов на графических процессорах AMD и Intel.
- Добавлены бикубическая фильтрация и коррекция sRGB для кубических карт, удаляющие визуальные артефакты в отражениях.
Прогресс по поддержке OpenXR
Мы продолжаем процесс интеграции OpenXR - в этом релизе добавили поддержку Hand Tracking (XR_EXT_hand_tracking). Кроме того, поддержка OpenXR теперь доступна для пользователей Linux. В настоящее время поддерживается версия OpenXR 1.1.
Поддержка OpenXR для отслеживания глаз, смешанной реальности, а также фовеального рендеринга находится в разработке и ожидается в последующих релизах.
Список поддерживаемых в настоящее время расширений включает:
XR_OCULUS_audio_device_guid XR_FB_color_space XR_FB_display_refresh_rate XR_KHR_visibility_mask XR_KHR_binding_modification |
XR_EXT_dpad_binding XR_EXT_local_floor XR_EXT_palm_pose XR_EXT_hand_tracking |
XR_EXT_hand_interaction XR_EXT_hand_joints_motion_range XR_EXT_hand_tracking_data_source XR_EXT_debug_utils |
Апскейлеры в VR
Такие апскейлеры, как NVIDIA DLSS 3 (Deep Learning Super Sampling) и AMD FSR 2.2 (Fidelity FX Super Resolution), которые мы добавили в версии 2.18.1, играют важную роль, снижая нагрузку на рендеринг пикселей для более высоких разрешений, освобождая ресурсы и поддерживая приемлемую производительность.
В этом релизе они также доступны в VR, что обеспечивает заметный прирост производительности.
Обновления плагина SpiderVision
Мы продолжаем улучшать плагин SpiderVision, расширяя его функциональность и работая над общей стабилизацией. В этот релиз включены следующие обновления:
- Добавлены функции отмены/повтора операций.
- Улучшен множественный выбор в виджетах окна Projection Setup (настройки зоны смешивания, маски и деформации).
- Добавлена возможность установить окно в качестве главного окна.
- Добавлены подсказки для элементов пользовательского интерфейса.
- В API добавлен отсутствующий тип окна Borderless.
Скоро закончится поддержка DirectX 11
Этот релиз является последним релизом с поддержкой DirectX 11. Начиная с версии 2.18, DirectX 12 рассматривается как основной API рендеринга в Windows. Мы уже прекратили поддержку OpenGL, и в UNIGINE 2.20 мы уберем устаревший рендерер DirectX 11 из движка, чтобы обеспечить более быстрый переход к новым функциям, таким как аппаратная трассировка лучей, текстуры без привязки и многое другое.
Другие улучшения движка
- Исправлена проблема с применением Texture Streaming Density Multiplier для унаследованных материалов.
- Исправлена проблема с Microprofile для DX12, приводившая к зависанию при выключении движка с отключенной опцией Fast Shutdown.
- Расширенная информация в профилировщике для источников освещения теперь отображает количество источников, видимых во вьюпорте для каждого типа, а также отражения для них.
- Исправлена проблема с копированием меша с запеченной картой освещения и отменой операции копирования через «Undo», приводившей к созданию новой карты освещения.
- Исправлено поведение счетчика Total GPU для графических процессоров AMD.
- Исправлен сбой при запекании карт освещения для больших мешей, содержащих несколько поверхностей (количество отскоков = 1).
- Исправлены ошибки «Невозможно открыть файл .cache» («Can`t open .cache file») при открытии проекта, в котором нет предварительно сгенерированного шейдерного кэша.
- Исправлена проблема с рендерингом теней от источников освещения Omni и Projected для мешей со статическим режимом освещения в случае, если в области просмотра есть меши с другим режимом освещения.
- Исправлен сбой, связанный с SpatialTreeNode::getIntersection(), который иногда возникал при добавлении нод в мир.
- Исправлена ошибка, в некоторых случаях приводившая к задержкам потоковой передачи данных на Vulkan.
- Исправлена ошибка «Assertion failed!», связанная с многопоточным рендерингом теней, которая иногда приводила к сбою движка.
- Добавлена функция обратного проецирования глубины в буфер отладки рендеринга.
- Исправлена проблема с некорректным расчетом границ для объектов Extern в многопоточном режиме, приводившая к случайному переключению теней.
- Добавлена возможность устанавливать текущую выбранную вкладку EngineWindowGroup с помощью метода setCurrentTab().
- Добавлен гибкий модификатор для параметра Linear Damping объекта ObjectParticles (LinearDampingOverTimeModifier).
- Исправлена проблема WindowManager, связанная с некорректным растяжением окон после их развертывания или восстановления из скрытого состояния.
- Исправлена проблема, связанная с распределением текстур, которая в некоторых случаях приводила к ошибкам и сбоям при использовании текстового объекта с расширенным форматированием текста.
- Исправлен сбой при передаче StructuredBuffer.
- Исправлен режим Billboard объекта Gui.
- Исправлена проблема с заменой анимаций в инструменте Tracker.
- Исправлены сбои и другие проблемы, возникающие при динамическом монтировании и размонтировании дополнительных папок данных.
- Исправлена ошибка «Использование необъявленного идентификатора»,(Use of undeclared identifier), возникавшая при включении опции Auxiliary для материала gui_base.
- Исправлен сбой при запекании Environment Probe и теней от источников света при включенном профилировщике (DirectX 12).
- Добавлена возможность отключить диалоговые сообщения Fatal и записывать ошибки в лог вместо этого (например, при запуске консольных инструментов, таких как RuntimesGenerator или BuildTool). Вы можете управлять этой функцией через API или с помощью консольной команды -dialog_fatal_enabled.
- Исправлен сбой после удаления ноды, расположенной внутри Physical Trigger, и запуска события «Выход».
- В профилировщике исправлены показания счетчика RAM Meshes Static с дополнительным отображением объема загруженной памяти в информации MeshRender (render_streaming_meshes_info).
- Исправлена проблема с обновлением параметров материалов, созданных в редакторе материалов, и текстур при изменении состояний, что иногда приводило к сбою.
- Добавлена возможность проигрывать анимацию с предопределенного времени начала до предопределенного времени окончания. Эта функция доступна через новые параметры "TimeFrom/TimeTo" ноды AnimationPlayback (класс AnimationPlayback через API).
- Добавлены средние значения времени, рассчитанные для всех временных параметров Профилировщика.
- Исправлена проблема с неправильным вращением Environment Probe при включенной проекции Box или Sphere и настройке Realtime Update.
- Исправлена проблема с пересозданием буфера параметров материала при изменении состояний, которая иногда приводила к появлению визуальных артефактов и некорректной отрисовке некоторых характеристик материала.
- Исправлена некорректная перезагрузка кэшированных нод, вызывающая проблемы с потоковой передачей после перемонтирования папок с данными.
- Добавлена поддержка обратной связи по усилию для контроллеров руля, обеспечивающей тактильную обратную связь для пользователя, что позволяет создать большее чувство погружения (имитация повреждений при столкновении, «ощущение дороги») и повысить сложность вождения.
- Различные улучшения пользовательского интерфейса, такие как правильное форматирование таблиц и перенос текста, исправление проблемы с тегом <br/>, правильное использование тега CDATA, позиционирование изображений, применение шкалы DPI к изображению и многое другое.
- Исправлено некорректное позиционирование (сброс позиции в начало координат) Dynamic Mesh с назначенным на него телом Fracture при перезагрузке мира.
- Исправлена проблема с событием 'Released' виджета (EventReleased), которое всегда возвращало 0 вместо маски, идентифицирующей отпущенные в данный момент кнопки мыши. Также была исправлена сигнатура события JoyPovMotion.
- Добавлена возможность игнорировать декали при запекании глобального освещения (карт освещения и probe) с помощью новой опции «Cast Baked Global Illumination».
- Исправлена проблема с методом Node.GetVariable(), который всегда возвращал переменную int с нулевым значением вместо фактической переменной в API C#.
- Добавлена поддержка пользовательских текстур в сэмплах ImGui для C++ и C#.
- Исправлена ошибка с записью неверных данных в буфер Information Lost для Skinned Mesh.
- Исправлены некорректные проверки границ нулевого размера, которые иногда приводили к исчезновению значков нод во вьюпорте.
- Исправлены проблемы с добавлением нод с Lifetime = Engine в мир после перезагрузки.
- Исправлена проблема с доступом за пределы допустимого диапазона при обновлении материала, назначенного объекту Skinned Mesh с потерянным мешем, что иногда приводило к сбоям при удалении Skinned Mesh, а затем и материала, назначенного на него.
- Исправлена проблема с некорректной потоковой передачей мешей с материалом mesh_base, назначенным при включенной опции Terrain Lerp.
- Перезагрузка NodeReference стала более стабильной, что позволяет предотвратить сбои и непредвиденное поведение.
- Исправлены проблемы, связанные с многопоточностью, из-за которых плоские отражения на воде и поверхностях исчезали.
- Исправлен сбой при попытке включить любой режим вьюпорта Panorama (отладочные двоичные файлы).
UnigineEditor
Изменения API редактора
Мы внесли ряд изменений в общедоступный API UnigineEditor, чтобы расширить его функциональность, сделав его более понятным и простым в использовании.
Класс ViewportManager был переработан с созданием нового класса ViewportWindow. Все связанные методы были перемещены из ViewportManager в ViewportWindow.
В общедоступный API UnigineEditor были добавлены два заголовочных файла:
- UnigineObjectMode.h — предлагает удобный интерфейс для управления инструментами размещения UnigineEditor, доступными на панели инструментов при активации Object Mode — вы можете проверить это в своем коде с помощью метода ObjectMode::isEnabled().
- UnigineShortcutManager.h - предлагает удобный интерфейс для создания и управления всеми сочетаниями клавиш (горячими клавишами и комбинациями), а также контекстами сочетаний клавиш, которые вы обычно видите в Windows -> Settings -> Hotkeys. Этот заголовок содержит следующие новые классы: ShortcutManager, ShortcutContext и Shortcut.
Более подробную информацию о новых классах можно найти в документации API UnigineEditor.
Предварительный просмотр анимации
Предварительный просмотр анимации теперь доступен в редакторе, как и предварительный просмотр других ресурсов, что упрощает проверку контента и выбор нужной анимации.
Раньше для просмотра анимации вам приходилось назначать ее объекту Skinned Mesh в сцене. Теперь вы можете просто выбрать ассет *.anim в Браузере ассетов и просмотреть его непосредственно на вкладке Parameters. Здесь вы можете увидеть иерархию костей, проверить поведение сочленений и оси, а также посмотреть все анимации, доступные для персонажа. Вы также можете применить анимацию к другому персонажу. Кроме того, вы можете предотвратить смещение меша, включить опцию Fix Root Bone in Origin.
Интеграция ImGui и пример плагина
Dear ImGui — это легковесная библиотека графического пользовательского интерфейса для C++, которая позволяет быстро и эффективно разрабатывать инструменты создания контента и визуализации/отладки. Многие наши клиенты ею пользуются и задают много вопросов, на которые мы отвечаем. Поэтому в этом релизе мы решили реализовать и предоставить пример интеграции, демонстрирующий наиболее часто используемые вещи и ответы на часто задаваемые вопросы по плагинам редактора на основе Dear ImGui.
Этот пример доступен в Add-On Store под названием ImGuiSamplesPlugin и охватывает несколько основных случаев, с которыми сталкиваются пользователи при создании собственных плагинов редактора.
Плагин создает собственное окно в UnigineEditor, в котором доступны три вкладки, каждая с отдельным примером:
- Spline Editor — демонстрирует, как использовать систему Undo/Redo редактора через API, работать с переназначаемыми горячими клавишами (Windows -> Settings -> Hotkeys) и реализовывать пользовательскую визуализацию на примере редактирования сплайнов.
- Editor (Immediate Mode) — демонстрирует, как работать с редактором и виджетами движка в режиме Immediate (в стиле ImGui) с использованием класса EditorImmediate. Программирование в этом режиме простое, но имеет ряд ограничений. Этот режим рекомендуется для прототипирования или простых плагинов. В центре сцены находятся 4 соединенные точки, которые образуют многоугольник, каждую из точек можно перемещать с помощью манипуляторов. Текущее положение каждой точки (X, Y, Z) обновляется каждый кадр в виджете в верхнем левом углу вьюпорта.
- Components — демонстрирует, как работать с компонентами C++ прямо в редакторе: генерация и назначение компонентов C++ нодам в редакторе, что позволяет немедленно выполнять логику компонентов с возможностью настройки параметров компонентов прямо в редакторе!
Обновления редактора материалов
- Добавлена возможность панорамирования рабочей области редактора материалов путем перетаскивании с нажатой правой кнопкой мыши.
- Исправлен сбой при сохранении графа материала, содержащего ноду Function.
- Исправлена проблема с переключением выбора нод графа при сохранении графа материала.
- Alpha Test Accounting теперь работает и для материалов, созданных при помощи редактора материалов.
- Исправлены ошибки консоли при добавлении ноды Screen Space Subsurface Scattering в граф.
- Двойной щелчок в пустой области рабочего пространства графа отобразит меню создания ноды.
- Добавлена новая нода Screen Coord Before Upscale для решения проблемы с неправильным позиционированием пост-эффектов на экране. Используйте эту ноду для fetch-выборки вместо Screen Coord.
- Проблему с артефактами, вызванными изменением смещения/положения вершин в Vulkan (похожими на Z-fighting), теперь можно устранить, отключив опцию Vulkan Vertex Shader Optimizations в Compilation Settings.
- При выборе входа или выхода портала пунктирная линия теперь будет показывать след к привязанным портам других нод портала.
- Добавлены следующие новые ноды:
Screen Coord Before Upscale
Upscale Factor
Более подробную информацию об изменениях в графах материалов см. в Руководстве по миграции контента.
Другие улучшения UnigineEditor
Список улучшений редактора, делающих его более стабильным и удобным, включает в себя следующее:
- В случае сбоя редактор автоматически сохранит файлы дампа в папке bin и уведомит вас, предложив открыть последний сохраненный файл дампа в браузере файлов (в настоящее время реализовано только для Windows). Дополнительный флаг -editor_dump_full_process_memory позволяет сделать дамп всей памяти процесса. Дампы записываются в циклическом режиме, чтобы избежать чрезмерного потребления дискового пространства (максимум 5 файлов дампа).
- Исправлена проблема с импортом текстур из файлов FBX.
- Исправлена проблема с обновлением состояния карт освещения, запеченных для источников освещения внутри NodeReference, приводившая к потере новых запеченных текстур при перезагрузке мира без запроса на их сохранение.
- Нажатие горячей клавиши F (Фокус на выбранной ноде) при наведении курсора мыши на окно World Nodes установит фокус на последнюю выбранную ноду в иерархии.
- Добавлена возможность копировать и вставлять параметры поверхности в несколько выбранных похожих мешей (имеющих одинаковое количество поверхностей) одновременно.
- Исправлен сбой при открытии данных производительности Микропрофайлера в веб-браузере.
- Исправлен сбой при отключении источника освещения World при включенном визуализаторе World Shadow Casters.
- Исправлена проблема с некорректным размещением ноды в начале координат мира (нулевые координаты) при перетаскивании ассета ноды из браузера ассетов в любое место во вьюпорте редактора.
- Исправлен сбой при удалении ноды через deleteLater() плагином Editor.
- Исправлена проблема с некорректным выбором нод при выделении прямоугольником во вьюпорте.
- Исправлена проблема со смещением теней, запеченных для источников освещения внутри NodeReference после перезагрузки сохраненного мира.
- Параметры инструмента Project Build Tool теперь автоматически сохраняются при каждом их изменении.
- Исправлена ошибка, из-за которой Project Build Tool не мог сгенерировать окончательную сборку проекта в консольном режиме на Linux.
- Исправлена проблема с некорректной привязкой к сетке по всем осям при перемещении ноды только по одной оси в случае, если в качестве Coordinate System выбрано World.
- Исправлен сбой при нажатии на миниатюры в Браузере ассетов, которые еще не загружены.
- Исправлен сбой при быстром изменении выбора в Браузере ассетов с активно обновляемыми окнами параметров и иерархии материалов.
- Исправлен сбой при удалении ассетов через диалоговое окно «Select Asset».
- Исправлена проблема с восстановлением внутренних GUID-ов свойств компонентов C#, назначенных на ноды, приводившая к неработоспособным ссылкам на компоненты С# после запуска проекта через кнопку «Play» и перезагрузки мира.
- Исправлена проблема с повторным клонированием дочерних нод.
- Исправлена проблема с невозможностью заблокировать окно «Parameters» в случае, если в Браузере ассетов выбран компонент FBX-контейнера.
- Исправлена проблема с растущим числом полигонов тела Rope при сохранении мира после запуска предварительного просмотра физики в редакторе.
- Исправлены сбои при попытке преобразовать ноду WorldSplineGraph в файл *.mesh , а также при попытке назначить Static Mesh на WorldSplineGraph.
- Отладочные материалы в режиме Texture Paint теперь применяются корректно к текстурам с разным количеством каналов.
- Исправлен ряд проблем с созданием новых текстур в режиме Texture Paint, проблем с преобразованием текстур и неправильного определения формата текстуры в предварительном просмотре текстур из-за неподдерживаемых комбинаций канала/глубины (будут отображаться и использоваться только поддерживаемые параметры).
- Исправлена проблема с изменением размера предварительного просмотра материала.
Обновления IG
- Исправлена проблема с загрузкой состояния с погодным регионом и облаками через IG Host.
- Исправлена проблема в CIGI с выбором другого типа при выборе несуществующего типа. Теперь это поведение можно контролировать с помощью функции Entity::setAutoTypeMatchEnabled(), которая включена для сущностей DIS и отключена для CIGI.
- Исправлено неверное направление ветра для частиц дождя/снега на CPU (WeatherLayerPrecipitation).
- Добавлен новый режим отладки IG::Manager::DEBUG_MODE_INTERPOLATION_INFO, который отображает параметры и состояния таймера интерполяции на экране. Отображение этих данных также можно включить консольной командой ig_debug_interpolation.
- Исправлена проблема с ошибкой интерполяции при подключении дополнительного подчиненного устройства.
- Добавлен метод IG::Manager::reloadGeodetics(), который принудительно обновляет геопривязку во время выполнения, что полезно для оперативного изменения проекции.
- Исправлен сбой, связанный с обработкой обратных вызовов метеорологических данных в плагине IG Editor Plugin.
- Исправлена проблема с неправильной генерацией Node ID для нод MeshSkinned в Syncker, которая в некоторых случаях приводила к сбоям.
Регистрация в SDK Browser
Регистрация новой учетной записи пользователя стала проще и теперь может быть выполнена прямо в SDK Browser (без посещения портала разработчиков).
Демо-проекты и сэмплы
Сэмпл Robot Arm
В этом сэмпле показано, как создать физический роботизированный манипулятор с кинематической цепью, включающей 6 звеньев (1 фиксированное и 5 подвижных), соединенных с помощью шарнирных сочленений (JointHinge). Каждое сочленение имеет двигатель, вращение которого контролируется парой клавиш. Конечный эффектор представляет собой магнитный захват, который позволяет поднимать, переносить и бросать предметы, окружающие манипулятор. Вы можете использовать этот пример в качестве шаблона для создания любого типа роботизированного манипулятора с требуемым числом степеней свободы для любого варианта использования и подключить систему управления вместо ввода с клавиатуры для управления манипулятором. Этот пример был добавлен в наборы сэмплов C++ Samples и C# Samples.
Кроме того, мы внесли некоторые изменения в эти наборы сэмплов:
C# Component Samples
- Добавлена новая группа «Complex Solutions» и в нее перемещены сэмплы «Arcade Sample» и «Robot Arm».
- Сэмпл «Character Controller» перенесен в группу «Cameras».
C++ Samples
- Группа «Tracked Vehicle» переименована в «Complex Solutions» и теперь содержит сэмплы Non-physical Tracks, Physical Tracks и Robot Arm.
- Группа «Network»: добавлены два новых сэмпла «Simple Http Response» и «Image Http Response», демонстрирующих соответствующие серверы; сэмпл «Image Http» переименован в «Image Http Request», а сэмпл «Simple Http» — в «Simple Http Request».
Обучающий курс UNIGINE на C++
Наш бесплатный обучающий онлайн-курс UNIGINE, который мы сначала сделали на C#, теперь доступен и для разработчиков на C++. Структура курса такая же, как и для C#, и охватывает как базовые аспекты, так и множество других продвинутых и очень интересных тем, включая анимацию и физику, освещение, создание материалов, добавление звуков и музыки, создание GUI, основы оптимизации, запись видео и многое другое.
После успешного завершения курса вы не только приобретете практический опыт, но и пополните свое портфолио четырьмя интересными проектами:
- ArchViz: Создайте иммерсивную интерьерную сцену с интерактивными объектами.
- FPS: Погрузитесь в мир шутеров от первого лица с простым, но увлекательным проектом.
- Гонка: испытайте свою креативность, создав аркадную гоночную игру по пересеченной местности.
- VR: Погрузитесь в мир виртуальной реальности с проектом, разработанным для VR-гарнитур.
Регистрация не требуется! Переходите по ссылке https://learn.unigine.com/ прямо сейчас и отправляйтесь в путешествие по миру обучения UNIGINE!
Документация
Добавлен набор новых ультракоротких обучающих видеороликов на английском, китайском и русском языках:
- Обновлена статья о плагине SpiderVision.
- Обновлен справочник API UnigineEditor.
- Обновлен справочник MathLib и добавлены комментарии для математических методов, которые будут отображаться в IDE (IntelliSense).
- Добавлены дополнительные описания и примеры в Справочник по нодам редактора материалов.
- Полный список изменений API доступен в Руководстве по миграции API.
- Полный список изменений команд консоли доступен в Руководстве по миграции консоли.
Благодарим вас за чтение. Следите за обновлениями - мы продолжаем работать над тем, чтобы сделать UNIGINE еще лучше!
- Ваша команда UNIGINE