CPP Samples
The CPP Samples demo showcases the use of engine features for various use cases via the C++ API.Демо CPP Samples демонстрирует использование функций движка для различных вариантов использования через C++ API.
IntersectionsIntersections#
Intersections samples show different cases of intersection detection:Сэмплы Intersections показывают разные случаи обнаружения пересечения:
- Simple Async Request sample demonstrates detection of intersections with all objects in the world using a combination of World::getIntersection() and Landscape::getIntersection() methods. A single ray from the mouse cursor position is used. A normal at the point of intersection is rendered and latency value is displayed.Сэмпл Simple Async Request демонстрирует обнаружение пересечений со всеми объектами в мире с помощью комбинации методов World::getIntersection() и Landscape::getIntersection(). Используется один луч от позиции курсора мыши. Отрисовывается нормаль в точке пересечения и отображается значение задержки.
- Multiple Async Requests sample demonstrates detection of intersections with all objects in the world using a combination of World::getIntersection() and Landscape::getIntersection() methods. 900 rays from a moving emitter-objects are used. You can check out latency values (number of frames per each result).Сэмпл Multiple Async Requests демонстрирует обнаружение пересечений со всеми объектами в мире с помощью комбинации методов World::getIntersection() и Landscape::getIntersection(). Используются лучи 900 от движущихся объектов-эмиттеров. Вы можете проверить значения задержки (количество кадров для каждого результата).
Landscape TerrainLandscape Terrain#
The Landscape Terrain sample set demonstrates various Landscape Terrain features and use cases:Набор сэмплов Landscape Terrain демонстрирует различные функции и варианты использования Landscape Terrain:
- Combined Landscape Modification sample — combination of nondestructive (using multiple Landscape Layer Maps) and destructive (using Landscape::asyncTextureDraw) Landscape Terrain modification techniques.Сэмпл Combined Landscape Modification — комбинация неразрушающих (с использованием нескольких Landscape Layer Maps) и деструктивных (с использованием Landscape::asyncTextureDraw) методов модификации Landscape Terrain.
- Landscape Creation sample — dynamic creation of a Landscape Layer Map with albedo, height, and two mask textures using LandscapeMapFileCreator and LandscapeMapFileSettings.Сэмпл Landscape Creation — динамическое создание Landscape Layer Map с альбедо, высотой и двумя текстурами маски с использованием LandscapeMapFileCreator и LandscapeMapFileSettings.
- Details sample demonstrates how to add Details to a Landscape Terrain using ObjectLandscapeTerrain::getDetailMask() and ObjectLandscapeTerrain::addDetail() methods.Сэмпл Details демонстрирует, как добавить Details в Landscape Terrain с помощью методов ObjectLandscapeTerrain::getDetailMask() и ObjectLandscapeTerrain::addDetail().
- Excavation sample demonstrates how to perform destructive Landscape Terrain modification at run time using the tractor grader. This modification is by changing the underlying textures of Landscape Layer Map.Сэмпл Excavation демонстрирует, реализацию деструктивной модификации Landscape Terrain грейдером в режиме реального времени. Эта модификация заключается в изменении базовых текстур Landscape Layer Map.
- Fetch sample shows how to get terrain information (height, albedo, masks) for an arbitrary point.Сэмпл Fetch показывает, как получить информацию о рельефе (высота, альбедо, маски) для произвольной точки.
- Landscape Mesh sample demonstrates the generation of a mesh (ObjectMeshDynamic) representing a certain region of the Landscape Terrain based on fetched Landscape data (LandscapeFetch).Сэмпл Landscape Mesh демонстрирует создание меша (ObjectMeshDynamic), представляющей определенную область Landscape Terrain на основе полученных данных ландшафта (LandscapeFetch).
- Paint sample demonstrates destructive run-time Landscape Terrain modification by changing the underlying textures of the Landscape Layer Map using Landscape::asyncTextureDraw with the help of the custom base materials.Сэмпл Paint демонстрирует деструктивную модификацию Landscape Terrain во время выполнения путем изменения базовых текстур Landscape Layer Map с помощью Landscape::asyncTextureDraw с помощью пользовательских базовых материалов.
- Tracks sample demonstrates non-destructive runtime Landscape Terrain modification by spawning multiple Landscape Layer Maps under the objects to create tracks.Сэмпл Tracks демонстрирует неразрушающую модификацию Landscape Terrain во время выполнения путем создания нескольких Landscape Layer Maps под объектами для создания дорожек.
TrackerTracker#
The Track Playback sample demonstrate how to use Tracker to animate objects (change their position, rotation, and scale) using tracks created in the Tracker tool. Tracks in code are referred to via names and IDs. The TrackPlayback component uses a C++ wrapper for Tracker functionality implemented in the Tracker component.Сэмпл Track Playback демонстрирует, как использовать Tracker для анимации объектов (изменения их положения, поворота и масштаба) с помощью дорожек, созданных в инструменте Tracker. Треки в коде упоминаются через имена и идентификаторы. Компонент TrackPlayback использует оболочку C++ для функциональности Tracker, реализованной в компоненте Tracker.
Water GlobalWater Global#
Water Global samples demonstrate how to control Global Water via API:Сэмплы Water Global демонстрируют, как управлять Global Water через API:
- Buoyancy sample shows how to control the current state of Global Water via changing Beaufort levels (the Beaufort slider). It also demonstrates the use of fetching of the water level at a certain point for simplified simulation of buoyancy without engaging Physics.Сэмпл Buoyancy показывает, как управлять текущим состоянием Global Water посредством изменения уровней Бофорта (ползунок Beaufort). Он также демонстрирует использование получения уровня воды в определенной точке для упрощенного моделирования плавучести без привлечения физики.
- CustomWave sample shows how to control the wave spectrum of Global Water in Manual mode via API by changing the number of octaves, number of waves per octave, and various other parameters for random waves generation, such as wave length, amplitude, phase offset, and steepness (can be used, for example, to process Weather Control packets from IOS in a simulator application).Сэмпл CustomWave показывает, как управлять спектром волны Global Water в ручном режиме через API, изменяя количество октав, количество волн на октаву и различные другие параметры для генерации случайных волн, такие как длина волны, амплитуда, сдвиг фазы и крутизна. (можно использовать, например, для обработки пакетов Weather Control из IOS в приложении-симуляторе).
- Boat sample demonstrates how to simulate ship wake foam via Orthographic Decals and Particle Systems, that are spawned behind the boat and project foam onto the water surface. You can control sea state via the Beaufort slider (from 0 - calm to 8 - huge waves).Сэмпл Boat демонстрирует, как имитировать пену в кильватерной струе корабля с помощью Orthographic Decals и Particle Systems, которые появляются за лодкой и проецируют пену на поверхность воды. Вы можете управлять состоянием моря с помощью ползунка Beaufort (от 0 - штиль до 8 - огромные волны).
- Fetch Intersection sample demonstrates the influence of the Steepness Quality, Amplitude Threshold, and Precision parameters on the accuracy of fetch and intersection requests for the Global Water object at various Beaufort levels.Сэмпл Fetch Intersection демонстрирует влияние параметров Steepness Quality, Amplitude Threshold и Precision на точность выборка и пересечение запросы на объект Global Water на различных уровнях Бофорта.
Доступ к исходному коду демо-проекта#
Вы можете изучать и модифицировать исходный код демо-проекта, и создавать свои собственные проекты на его основе. Чтобы получить доступ к исходному коду, сделайте следующее:
- Найдите демо-проект CPP Samples в разделе Demos и щелкните Install (если вы не установили его ранее).
- После успешной установки демо появится в разделе Installed, и вы сможете скопировать ее как проект, щелкнув Copy as Project.
- В открывшемся окне Create New Project введите имя нового проекта в соответствующее поле и нажмите Create New Project.
- Теперь вы можете щелкнуть Open Code IDE, чтобы проверить и изменить исходный код в IDE по умолчанию, или Open Editor, чтобы открыть проект для работы с контентом в UnigineEditor.