UNIGINE 2.12: Faster Physics, Better Clouds, Earthworks Demo, Advanced Particle Systems
- Improved particles simulation with advanced control
- 2x physics performance optimization
- Better clouds and atmosphere improvements
- Advanced control over Landscape Terrain details
- New Earthworks demo
- .NET Core 3.1 integration and C# API improvements
- Multiple IG and Syncker improvements, dead reckoning for DIS protocol
- New content add-ons: Airport and Industrial assets
- UnigineEditor product in the Sim edition
Improved Particle Systems
Now you’ve got full control over various particles parameters, enabling you to control their values during the whole lifetime of your particles. The changes affected the Particle System object (ObjectParticles) itself along with the particles_base material. We’ve added a new visual Curve Editor to simplify adjustment of parameter’s behavior making the process more intuitive and flexible.
So, some parameters can now be controlled via curves, some new parameters were added (like particle position enabling you to create swirls, for example), and UI for Particle Systems has become more intuitive and convenient.
A new Curve Editor:
Motion Texture Support
Added a new texture - motion, containing vectors and providing smoother animation for sprite-to-sprite transitions. This can be useful in case you use particle texture atlases with high-resolution sprites and low number of frames. Such textures can be generated in EmberGen or Houdini.
Emission color can now be controlled per-material (particles_base) via dedicated emission texture.
Translucency effects for particles can now be controlled per-material (particles_base) via dedicated translucence texture.
Other Particles Improvements
- Two new separate passes (Procedural Decals and Procedural Fields) were added for rendering particles into procedural textures to be used by orthographic decals or height fields.
- Albedo and Emission colors of particles can now be changed via curves.
2x Physics Performance Optimization
Built-in physics has been significantly refactored with a set of optimizations (data preparation for the solver and others) and extended use of multithreading giving it a 2x boost.
Easy Contacts Management
Getting all contacts for the body has become much easier now. As a matter of optimization in UNIGINE by design, contacts are distributed between the interacting bodies in a random manner (not to store each of them twice). This was a cause of a complication - in order to collect all contacts in which a certain body participates, you had to catch them in callbacks and put them to an array or vector to be processed later. Now all contacts of the body can be accessed right from this body as it holds both internal contacts (handled by the body) and references to external ones (handled by other bodies).
Another convenience is that you can now set the priority for a body in the process of contacts distribution, so that the most of them are stored by this body (e.g. when you detect collisions for your car) - it does not affect performance but makes iterating through them much faster.
Unified Physics Callbacks
Physics callbacks for all APIs are now uniformly called from the main thread. These callbacks are mostly used to create, destroy, or modify objects, which is only allowed in the main thread. So, everything is safe now and there’s no need to write your custom asynchronous task queue.
Advanced Landscape Terrain Details Control
We’ve seen a lot of requests from the community (on our forum and discord server) for detail management improvements and distance-dependent performance optimization. Well, here you are!
Visibility of Landscape Terrain details can now be configured depending on the density (texel size) - this option is an analogue of distance-dependent visibility applied to the Landscape Terrain implementation and is to be used for performance optimization.
Even more flexibility in setting up Landscape Terrain details is now available - you can control rotation and offset for details via the corresponding parameters of the landscape_terrain_detail_base material. These parameters can also be successfully used for tiling reduction.
Detail Masks Dithering
You can now control dithering for detail masks of the Landscape Terrain to remove artifacts on smooth gradients of detail masks due to insufficient mask bitness. This parameter adds some jitter to the masks which may result in some additional noise but the final look gets much better. Jitter intensity is controlled, per-mask via the corresponding sliders and globally via Settings -> Render-> Landscape or via the render_landscape_terrain_mask_dithering console variable.
Other Landscape Terrain Improvements
- Fixed an issue with an Additive Heightmap brush of the Landscape Terrain behaving like in Alpha Blend mode.
- The Erase brush of the Landscape Terrain now works properly with height maps instead of affecting only opacity of the heightmap data.
- Data picker for the Heightmap brush now takes Height Scale into account.
- Fixed an issue with LandscapeLayerMap loading sometimes resulted in the LandscapeFetch::fetchForce() method failing to work properly.
- Fixed collision detection for the Landscape Terrain sometimes resulted in players falling under the terrain surface.
- Fixed Landscape Terrain generation from 32-bit EXR data sources.
Added an ability to visualize debug albedo data of the Landscape Terrain via Helpers->Landscape Data -> Albedo (or via the render_show_landscape_albedo console command).
- Fixed padding artefacts on the surface of the Landscape Terrain when editing it with brushes.
- Fixed shader errors associated with Landscape Terrain rendering on AMD hardware using OpenGL API.
Clouds and Atmosphere Improvements
Atmosphere in UNIGINE’s virtual world now looks even more true-to-life, with cloud system improvements and physically correct haze.
Clouds On The Horizon
It is now possible to imitate curvature of the planet’s atmosphere, with the ability to set a specific radius for the planet eliminating the unnatural gap between the clouds and the ground at the horizon. This feature is performance-friendly, affects clouds only, works relative to the camera position, and is not taken into account in intersection detection. You can control the feature in the UnigineEditor via the Settings -> Render -> Clouds section (Rounded and Planet Radius parameters) of the Settings window, or via the render_clouds_rounded_* console commands.
Physically Based Haze
A new physically based gradient calculation mode is now available for atmospheric haze rendering. The new haze now works correctly with clouds with default settings providing a realistic look out of the box. A set of clear and simple parameters, including height-dependent density control, enables you to fine-tune the result to fit your needs (tweak the color a bit, etc.).
Haze in 2.12
Tiling of the clouds coverage texture can sometimes be noticeable in large-scale worlds, but now there is a solution for that - simply enable the Fix Coverage Tiling option via the Settings -> Render -> Clouds section and enable the Fix Coverage Tiling state in the clouds_base material. Another tiling reduction feature is on the way (expected in 2.13) - it shall affect the 3D noise used for clouds generation, so tiling will be totally wiped out from the sky.
Other Clouds Improvements
Added a new Attenuation Coefficient parameter to the clouds_base material enabling you to control the rate of opacity growth (alpha channel) with the distance inside the cloud, imitating cloud volume and fixing a break at a certain height appearing in the process of rendering curved cloud layers when viewed from inside the layer.
- Detail noise in the clouds_base material is now unbound from the base noise with a new Base Noise Mip Offset parameter added to control mip levels of the base noise texture in order to reduce blurring at large distances.
In the research branch we have even more improvements for the clouds (including support for Cumulonimbus) and the weather system in general, including a major upgrade of the regional weather system.
Please note that these improvements are under active development, they are planned to be available in full for UNIGINE customers in 2.13+ SDK releases.
More advanced and convenient control over skinned mesh animations is now available. Each bone of a skinned mesh can now be bound to a separate node to control its transformation giving you a lot of flexibility. For example, you can animate these nodes via the Tracker tool or enable physics-based control over skinned mesh bones binding them to nodes driven by physics. You can fine-tune animations for your skinned mesh via the Bones section of the Parameters window right in the UnigineEditor, using an improved bones visualizer for monitoring. For your convenience the Bones section also displays bones hierarchy of the selected skinned mesh. This functionality is also available via API.
Bones that are not attached to the skeleton shall now be imported by default (Import Bones Without Skin option).
Looped Animation Smoothing
Added an ability to smooth looped animation playback for imported animations - simply check the Forced Loop option in the Animation Import parameters for your mesh- or FBX-asset and set the number of frames to be used for smoothing.
Materials Loading Modes
By default materials loading in UNIGINE is optimized for moderate spikes reduction, average memory consumption and loading time at Engine’s and Editor startup. In case of insufficient memory capacity or when it is necessary to perform a lot of iterations quickly (e.g. development stage) you might want to sacrifice spikes reduction to save memory and increase loading speed. Or, on the contrary, you might want to reduce spikes during run time as much as possible (e.g., for simulators or other applications). Now you can choose between three materials loading modes to fit your needs:
- No caching - minimum memory consumption and maximum Engine loading speed. Recommended for fast iterations during the application development phase.
- Caching for materials - slightly slower loading at Engine's startup and more memory used than for the first mode, but less spikes. Can be used for a small project having a small number of materials (in case of satisfactory performance and sufficient memory amount). This mode is enabled by default. Switch mode for faster loading or better spikes reduction when necessary.
- Caching for materials and shaders - this mode ensures stable work and significant spikes reduction, but takes a lot of memory and increases loading time at startup. Recommended for production phase (when you hand over your application to the end user).
You can set this mode via the new materials_loading_mode console command, as well as via the corresponding option in the configuration file.
New Boot, Splash, and Loading Screens
We’ve completely redesigned splash screens in UNIGINE applications. Up to 2.11 you had a system, and world splash screens. Now there are three types of screens available:
- Engine boot screen
- Splash screen with UNIGINE logo animation
- Loading screens for other purposes (world loading, etc.)
Boot and Loading screens are highly customizable (offer you a lot of flexibility in customization). You can add any custom messages (with Rich Text formatting supported) or modify existing ones to display progress or any other information to the user. Callbacks enable you to connect to boot/loading screen render to add something to it, like render some custom 3D model, add widgets, etc.
Good news - we made customization available for everyone - from now on customization of loading screens and Engine boot screen is available for all editions starting from the Community one (the Splash screen cannot be changed or removed in the Community edition, but it is possible in Community Pro, Engineering, and Sim).
For more information on loading and boot screens, as well as customization, please refer to the dedicated article.
Engine Configuration Files
We have analyzed Engine configuration parameters stored in the unigine.cfg file in the project’s bin folder and decided to split them into separate groups to optimize management.
Now, instead of a single file, there are four in the data/configs folder (but you can move them to other locations if necessary):
- default.boot - the main configuration file with Engine startup parameters, world to be loaded by default (starting_world), World Manager settings, and links to other configuration files as well.
- default.config - all settings available when working with the Config class in API.
- default.controls - keyboard control keys and settings defining the mouse behavior.
- default.user - various personal settings, such as helpers (wireframe, profiler, etc.)
Rendering scenes containing both complex geometry and highly specular materials is a challenging task. A high quality image requires finding all tiny speckles induced by geometry as well as elongated anisotropic highlights that can often have areas of sub-pixel size.
Presence of normal maps and displacement maps makes the problem even worse. Moreover, as the roughness of the material is decreased, these highlights increase their intensity, while their area decreases.
Specular AA helps fight such artefacts by increasing roughness at places where normals change their orientation. Simply enable the Specular AA state in the mesh_base material, adjust intensity and threshold, and that’s it. Normal map is not required, as the geometry of the model is used. This feature is available for the Metalness workflow only.
Ranges For Screen Space Shadows
Screen Space Shadows, a great feature to provide a consistent image with shadows rendered for objects at any distance from the camera at a low cost, has become even better. You can now set different Step Size and Threshold values for objects located near the camera and far away from it. Thus, full-scale shadows will be rendered for large objects located far away, while within the close distance range only shadows cast by small objects will be rendered. This feature is especially useful for locations where details are required for both short and long-distance ranges.
New settings adjusted per-light are available in the Screen Space Shadows section of the light source’s parameters.
Integration of .NET Core 3.1
Having started with .NET Core 2.2 support, we have now implemented support for 3.1 released in December 2019. It is a Long-Term Support (LTS) version, which means it will be supported for three years. This update brings you many fixes and new features as well:
- Better performance.
- Garbage collection improvements (reduced memory consumption).
- C# 8.0 support.
- Support for Windows desktop applications using Windows Presentation Foundation (WPF) and Windows Forms.
- A lot of bugs fixed and much more.
Please note that the minimum required Visual Studio version is now 2019 (only for C# projects using the Component System). We have also added support for the cross-platform JetBrains Rider IDE.
Updated Character Controller Component
We have revised our character controller component to simplify player management in your C# projects built on the basis of the Component System and make adjustment and debugging easier.
The new FirstPersonController component is available in all relevant C# project templates with the following updates:
- Y axis now points forward for the player.
- Added simplified support for Gamepad.
- Additional flags for optional use of jump, crouch, and run, as well as for default always-run mode are now available. As well as a set of parameters to control player’s flying behavior, e.g., angle for sliding against the walls.
- Extended debugging options with the support for Profiler. Color customization for debug information output for your convenience.
- Additional debug camera to look at the player from a third-person view. This camera either follows the player with the same orientation, or can be rotated freely as well as shift closer to the player and away from it.
- The transformation of the node, to which the component is assigned, now properly affects player’s transformation.
C++ Component System Changes
Our pioneer C++ Component System, initially implemented as a user-customizable feature attached to the UNIGINE Core, has become a part of the Engine now. This means that checking additional options to enable the Component System when creating a new C++ project is no longer required, and what is more, you won’t have to migrate the Component System in your projects manually. The next step is refactoring to improve usability of the C++ Component System and make it as convenient as the one used for C#.
Other Engine Improvements
- Fixed an issue with ObjectWaterGlobal rendering.
- Fixed rendering artefacts sometimes occurring in case of a large number (thousands) of static meshes rendered in the scene.
- Batching-related issues sometimes resulting in disappearing objects are fixed now.
- Shadows shall again behave correctly in case of setting up Viewport masks for objects' surfaces.
- Fixed an issue with Mesh Clutters disappearing when oriented at certain angles relative to the camera’s view direction.
- Fixed an issue with transparent objects (Alpha Blend; Additive; Multiplicative preset) ignoring the Render Transparent option when rendered inside Environment Probes in case the Multiple Env Probes mode is disabled.
- Fixed an issue with the World::getNodeByName() method occurring when loading a node and trying to find it by name.
- Fixed full window mode (video_fullscreen 2) when an application window is rendered borderless, without decorations.
- Fixed an issue with PlayerPersecutor losing its target after being exported to a node reference.
- Collision shapes will be displayed even when objects' surfaces are disabled.
- Fixed an issue with incorrect StringStack->char* conversion resulting in incorrect return values of FileSystem::getModifier() and Material::getPath() functions.
- The loadWorld() method in case of failing to load a world file shall now display its name instead of the GUID.
- Fixed alpha-related issues for Mesh Decals with Screen Projection option enabled and Alpha Blend / Alpha Test transparency preset selected.
- Fixed Voxel Probe rendering artefacts in case of enabling the Cubic Filtering option.
- Fixed an issue with Environment Probe being rendered as dynamic even when Dynamic Reflections are disabled globally.
- Grass and Clutter masks are now properly reloaded after being modified using a third-party software.
- Added an ability to change node’s transformation without affecting its children, as sometimes it might be useful to transform just the parent relative to them. The functionality is available via API (setTransformWithoutChildren() and setWorldTransformWithoutChildren() methods).
- Added support for 24-bit WAV files.
- You can now create widgets via API without specifying a GUI simplifying your code, in this case a new widget will be added to the Engine GUI. New constructors were added for all widgets.
- WidgetMenu is now rendered atop of all other widgets eliminating issues with z-ordering.
- Changed Profiler colors to make them more distinctive improving the visual look of the Profiler graphs and values displayed.
- Fixed an issue with the first bounce calculation when baking lighting for overlapping Voxel Probes.
- Added callbacks to be called before and after shadows rendering stages for World, Projected, and Omni light sources.
- Now you can get the Engine version, build configuration, and precision via API. See the Engine::getVersion(), Engine::isDouble(), and Engine::getBuildConfig() methods respectively.
- Fixed issues with setting waves control parameters of the Water Mesh object.
- Replaced getters and setters with properties in the C# API of the Mesh class for the sake of consistency.
- Fixed error messages in the Console related to setting detail materials of the Landscape Terrain on reloading materials.
- Fixed XPad controller buttons becoming unresponsive in some cases. The right order of buttons was set for Linux.
UNIGINE’s log file has changed its format from html to txt, reducing file size due to removed excessive formatting and making it easier and faster to load. For your convenience the following two custom color schemes highlighting log syntax for Notepad++ are included in the SDK:
- Improved the look of the visualizer for collision shapes.
- You can now control depth testing for each Visualizer element (point, line, triangle, circle, etc.) as well as time period during which each element shall be displayed. The corresponding arguments were updated for all related methods of the Visualizer class.
- Vectors drawn by the Visualizer are now scaled properly.
- Changed the zero default message font size for the Visualizer, so the message shall be displayed even in case the font size is not specified when calling the renderMessage() method.
Removal And Deprecation List
- World Layer and World Cluster, which were marked earlier as deprecated, are removed.
- WorldLogic::destroyRenderResources() has been removed since now reloading of all graphic resources is automatically handled by UNIGINE when the video mode is changed.
- Sun Shafts effect has been considered deprecated and removed. It is recommended to use Volumetric objects instead.
- Render::renderProcedurals() method as well as textures of the "filter" type are considered deprecated and will be removed in future versions. Please, use scriptable materials instead.
So many times we were asked if it is possible to dig the ground… Well, now it is possible - check out the new Earthworks demo project (available for Sim SDK edition only). Featuring a backhoe loader, that you can operate to drive across the construction site, dig holes and trenches. Digging is performed via voxelization of terrain volume inside the bucket and baking of voxels back into the heightmap after dumping. More features are yet to come.
Dynamic excavation zone size is 300x300x20 meters, voxel size is 10 cm. In addition to the voxel-based simulation of precision digging, the demo uses runtime terraforming (ObjectLandscapeTerrain) as well.
Better Presets Management
We've improved management of Render, Physics, and Sound settings making it flexible and convenient. Switching between the presets is much easier now, simply select the corresponding preset in the dropdown, all settings will be applied automatically.
You can save your settings to the selected preset by simply clicking Save or save them to a new one via the Save As New button. There is also an ability to revert your changes made to the preset via the corresponding button.
For your convenience there is also a new [From World] option enabling you to use render, sound, and physics settings stored in a *.world file, that is currently loaded.
Other Editor Improvements
- Creation of nested mount points is now supported.
- Fixed an issue with removing a mount point from the Asset Browser after deleting the corresponding file via the file browser.
- In case an asset requires your attention or has any problems associated with it, you will see it marked with the exclamation sign in the Asset Browser.
- A new button was added to the shader compilation message displayed in the viewport enabling you to stop the process of shaders cache generation in case the UnigineEditor’s UI response has become too slow.
- The total number of currently selected nodes shall now be displayed in the Parameters window.
- The camera speed can now be adjusted by holding the right mouse button and spinning the mouse wheel in the Editor Viewport. Use the Shift and Ctrl keys as modifiers for the speed of change.
- Fixed an issue with animating float property parameters in the Tracker tool.
- The Texture Cache Preload parameter responsible for loading textures at the Engine startup was moved from Streaming settings (Settings->Render->Streaming) to the Engine startup configuration file (data/default.boot by default).
- Current selection is no longer affected when clicking on elements inside an imported FBX-asset, the information displayed in the Parameters window does not change.
- Hitting Esc on the keyboard in the UnigineEditor shall clear the current selection.
- Fixed an issue with setting Max Visibility for the last LOD to -inf instead of inf when importing a model with LODs having the Combine By Postfixes option enabled.
- Collision for the ground plane in the template world is now enabled by default.
- Fixed an issue with wrong mask texture format being set upon mask creation for Grass and Clutter objects restricting modification of these masks.
- Fixed an issue with assigning a water body to a WaterMesh object.
- Fixed an issue with the Run button ignoring the first click event after switching between the windows with Alt+Tab.
- Fixed a crash on reimporting an FBX asset when the Asset Browser displays its contents.
- Fixed issues with applying changes made to an FBX asset on re-importing it.
- Restored missing creators for Decal => Particles, Water => FieldHeightParticles, Water => DecalParticles.
- Fixed an issue with some parameters of a C# Component being hidden after re-importing.
- Fixed a crash on launching the Editor with -video_app null.
- For your convenience all fields in the UnigineEditor where you specify coordinates (X, Y, Z) are now color-coded.
- Fixed issues when performing reparenting operations between ULON-based and old XML-based materials.
- Added reset buttons for Filmic Tone Mapper settings in the Camera Effects section.
- Renamed the Radius parameter of the Smooth brush to Smooth Intensity for the sake of clarity.
- Fixed an issue with Video Grabber not working when UnigineEditor is out of focus.
Multi-Channel Rendering and Image Generator Updates
- Added an ability to connect additional slaves on the fly (sync_allow_extra_slaves 1) for the synchronous mode (sync_async = 0). However, stable work may require additional effort as channels launched with a significant delay can skip some packets sent from the Master.
- In case only the Master is present (-sync_count 1) and connection of additional slaves on the fly is enabled (sync_allow_extra_slaves 1) the session shall start immediately and last forever (until the Master is on).
- The setSlavePlayer(slave_index/view_name, player) method now affects only the specified Slave as expected. Synchronization settings for all other Slaves will remain the same and the camera will be automatically changed for them after calling the Game::setPlayer() method on the Master. A crash related to calling the setSlavePlayer() method for a new connected slave was also fixed.
- Added a new SKIP_FLAGS::SET_PLAYER flag for Slaves to ignore setSlavePlayer() calls by the Master for them.
- Function call buffering is enabled for Syncker. In case of calling Master::loadNode(), Master::loadNodeReference(), or Master::createNode() methods on the Master these calls are put to a buffer and sent to each new Slave connecting during the active session (sync_allow_extra_slaves 1).
- Fixed issues with the Master::createNode() method, now it returns a bool value (true - on success).
Extended DIS protocol support and added implementation of Dead Reckoning algorithms (Static, FPW, RPW, RVW, FVW, FPB, RPB, RVB, FVB) used in Advanced Distributed Simulation to reduce the need to continually update a simulated entity's state information. These algorithms are available in the Entity State PDU.
Velocity and acceleration of an entity used to perform extrapolation can be set in IG via the Entity::setVelocity() method (former setRate) and Entity::setAcceleration(linear, angular_deg) method. As for CIGI, we’ve added support for Trajectory Definition (X, Y, and Z Acceleration).
The sendUserMessage() method now has a packet ID argument, so now you can tell exactly what was sent, unlike in 2.11 and earlier versions. This method can be called from anywhere and at any time you can subscribe to any packet you want.
Added a new OnIGReady callback - it is used for initialization of various user settings. Since 2.12 you can initialize your settings only when the IG is ready, otherwise Slaves may not receive some data. The best place for initialization of user settings is inside this callback.
The world_load console command doesn’t work now!
Do not use the following in your launchers:
-console_command "world_load world_name"
It is recommended to specify the ID of the desired database in the autoload_database parameter of the ig_config.xml configuration file instead.
To load the world in case you don’t have a connector available and the default world is not set you can use the following console command: database_load [id]
Working with Cameras
Cameras in IG are synchronized in a special way.
IG now has the following methods to set the desired view for a Slave:
- void setCurrentView(int view_id);
- void setSlaveView(int slave_index, int view_id);
A view is an IG wrapper for the player, so you can manage a camera via the view only.
In case of a multi-channel application the following methods of the View class can be used:
- copyDefinitionFromPlayer() - to copy projection from a usual camera to the view.
- copyTransformFromPlayer() - to copy the transformation of a usual camera to the view.
You can also create a dedicated component to copy all camera settings to the view each frame, when necessary.
In the configuration file you can set the desired view for each Slave and specify if it is affected by the Syncker’s projections:
<syncker_channels> <channel syncker_name="center_view" view_id="0" use_syncker_projection="1"/> <channel syncker_name="left_view" view_id="0" use_syncker_projection="1"/> <channel syncker_name="ground_cam" view_id="1" use_syncker_projection="0"/> </syncker_channels>
Sim SDK Licensing Changes
Very often, when your UNIGINE application is already in the maintenance phase and is actively used, it might be necessary to make some changes to virtual scenes, add new entities, or adjust settings - perform any operation you usually do in the UnigineEditor. You don't actually need the whole SDK, just the Editor, and you wouldn't like to overpay. Introducing a new UnigineEditor product, with its own licensing plan, enabling you to open any world in your project and make necessary updates just like you would do with a regular SDK, but for a reduced price. The feature is available for Sim edition only.
So with the introduction of UnigineEditor as a separate product, there are two types of development licenses now, providing better budget flexibility:
- Full SDK Seat - all the tools, including C++ / C# / UnigineScript API access, editor, samples and demos (useful for programmers and content creators)
- Editor Seat - editor only (useful for content creators only)
There are also three types of runtime licenses for the Sim edition now, more budget-flexible as well:
- IG Channel - enables you to launch an application using IG (AppEasyBlend, AppProjection, Syncker, etc.) and VR plugins (see the list below).
- VR Channel - enables you to launch an application using VR plugins (AppOculus, AppVarjo, AppVive, TeslaSuit, etc.).
- Desktop Runtime - any other application with base plugins, except for IG and VR.
Please contact your account manager for more info on pricing and licensing options, or email at email@example.com if not a customer yet.
Demos and Samples
The Normal Maps sample from the Art Samples suite was improved with a demonstration of the best way to use. New samples were added to the Art Samples suite:
- Particles parameters set via curves.
- Settings of the particles_base material.
- Example of a forest fire created using particle systems and decals.
Introducing a new add-on with a set of ready-to-use assets with LODs, that can be used to create various industrial scenes, including vehicles (such as trucks, minibus, pickup, backhoe loader, etc.), containers, fences, mobile light tower, diesel generator, and many others.
This add-on is available for free in the Engineering and Sim SDK editions.
Another new add-on contains a set of ready-to-use assets with LODs, simplifying creations of various airport scenes, including vehicles (such as buses, tractors, trucks, light-duty vehicles, etc.), ladders, carts, fences, masts and towers, airport and airfield lights, and a lot more.
This add-on is available for free in the Engineering and Sim SDK editions.
All particle systems in the VFX add-on were updated to use the new curve-based workflow.
The Vegetation add-on was updated with a set of trees, small plants, and different grass types used in the Fox Hole demo.
New Multilingual Website
We are excited to announce the launch of our new redesigned official website with the most accurate, up-to-date information on all our products and services available in English, German, French, Chinese, and Russian (more languages are to be added soon).We are excited to announce the launch of our new redesigned official website with the most accurate, up-to-date information on all our products and services available in English, German, French, Chinese, and Russian (more languages are to be added soon).
Please visit us at unigine.com.
Also, we are working on the localization of the official SDK documentation, in addition to providing localized subtitles to video-tutorials.
We have launched a new UNIGINE training video format - Technical Livestreams With Experts:
The first one is about Making a C# Car Project:
The next one on Assembling a Village Scene:
Added a new video tutorial on the Landscape Terrain:
and a set of new ultrashort HowTo quick tip videos in English, Chinese, and Russian:
In-Place Documentation for API Methods
It's good to have API documentation, but it’s much better when method descriptions, at least basic ones, are always at hand, available in your IDE while you code. We’ve made the first effort to provide you with in-place API documentation for C#/C++.
Descriptions for some of the methods may be missing, but they will be added in the upcoming releases.
Other Documentation Changes
- Added an article on Garbage Collector.
- Added an article on Working with Landscape Terrain via Code.
- Added a new HowTo section for ultrashort video tutorials.
- Added a new article on the new Curve Editor.
- The complete list of API changes is available in the API Migration Guide.
- The complete list of Console command changes is available in the Console Migration Guide.
The up-to-date list of learning materials can be found in the new Learning Support section of the website.
New Landscape Tool (WIP)
Our tools team is currently working on a new version of the Landscape Tool. The main goal is to provide UNIGINE users with a convenient terrain generation tool supporting the new LandscapeTerrain object introduced in 2.10. One of the new features is the ability to pull terrain generation data from common open server protocols (WMS, TMS, WFS, and others). As data sources, you'll be able to specify both, open services (such as OpenStreetMap or various state/municipal databases) or private tile servers created and supported by users on the basis of services similar to QGIS. To generate a terrain using the data from the OpenStreetMap TMS-service simply mark the desired area on the world map, enter service URL and desired zoom value - that’s it! More popular protocols and useful features are to be added.
The new Landscape Tool is still in an R&D branch and is not included in UNIGINE 2.12 SDK, but stay tuned as the release is coming.
Notice: UNIGINE 2.12 SDK requires SDK Browser version 1.9.26 or later.