UNIGINE 2.14 Beta


Recommended Posts

Beta Disclaimer

This version is NOT FOR PRODUCTION USE, beware. Some changes are not merged into this version, there are known major issues.

Do not migrate your projects to this SDK without keeping a backup copy - some more data format changes might be introduced before the final release. Migration from 2.14-beta to 2.14 is not guaranteed!

Key Changes

  • Volumetric Clouds System Improvements: better performance, presets for all cloud types.
  • Sandworm Tool (production-ready).
  • Integration of .NET Core 5(C# 9).
  • Water system upgrade: precise control of waves spectrum.
  • Planar reflection probes.
  • Asset packages system.

Cloud Improvements

UNIGINE’s 3D volumetric multilayer cloud system is designed especially for enterprise flight simulators and meets the strict requirements applicable to them, offering true-to-life skies.

There are ten types of clouds in nature: Altocumulus, Altostratus, Cirrocumulus, Cirrostratus,  Cirrus, Cumulonimbus, Cumulus, Nimbostratus, Stratocumulus, Stratus.

And all of them are available since the 2.14 release right out-of-the-box as configurable presets. With a pack of performance optimizations including fast intersection testing etc.

 

frame_3.png

 

frame_2.png

frame_1.png

frame_0.png

Sandworm Tool: Production-Ready

Our new landscape generation tool (Sandworm) introduced in the previous release as experimental has evolved to the production-ready stage. With a lot of UI/UX improvements and a set of new features added it enables you to generate the new Landscape Terrain based on the data from geo-referenced data sources. You can use raster (elevation, imagery, and masks) and vector data sources from your local storage device, or connect to 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 (currently supported data from online sources: imagery and elevation). 

Most of the widely used projections are supported, moreover, you can combine sources with different projection types within the same project. Output settings have evolved to make the landscape generation process more clear.

A basic set of tools is available including:

  • Mask-based generation of vegetation and 2.5D buildings generation.
  • Creating details for more detailed landscape surfaces based on landcover data.
  • Generation of roads based on vector data.
  • Generation of pipelines, fences, powerlines, and whatever necessary based on vector data.

tags_and_objects.png

 

For more information on generating landscapes with the new tool please refer to the Sandworm Tool section of the documentation.

We have also added the possibility to export the created landscape to ObjectTerrainGlobal, but it's mainly for backward compatibility. In the future the tool shall also be used for generation of the Round Planet object as well. Distributed generation and partial re-generation of the landscape functionality is on the way and is likely to be available with the next SDK release (2.15).

Water System Upgrade

The sea has a very wide, irregular, and continuously changing surface and is usually composed of several wave systems. Effective and convincing water simulation is hard to imagine without an advanced control over the steepness of waves to form sharper peaks and broader troughs for rough seas.

New implementation of waves is now available offering you precise control of waves spectrum. Unique characteristics of each wave system can be set independently through spectral parameters, wave direction and speed, and the shape factor of waves (as all the data is now available on the CPU side). You can create multiple waves and wave groups (from largest to smallest) with convenient access to every parameter and an ability to control them via API at run time (e.g. processing Weather Control packets from IOS, etc.). Wind-dependent automatic waves spectrum calculation is also available.

New procedurally-generated foam now looks more natural than the one provided by the previous texture-based implementation.

Further Water System upgrades to be expected shall include refactoring of the Global Water object with a set of performance optimizations and visual improvements, as well as improvements of local water, rivers and streams.

Planar Reflection Probes

Working with planar reflections has become more convenient with a new Light Planar Probe. You’re no longer bound to a certain mesh, surface, and material, as it is a separate object for grabbing and projecting reflections onto flat surfaces (mirrors, water surface, etc.) - a single probe can be used for multiple surfaces it covers. Improved rough reflections and an extended set of control parameters offers you even more flexibility.

 

visible_reflection.png

Similar functionality has been removed from the mesh_base material. Unfortunately, proper automatic migration of planar reflections is not possible as new implementation differs a lot. So you will have to manually set up planar reflections in your scenes once. For more information on planar reflections please check out our online documentation.

Other Rendering Improvements

  • Added support of vertex_id input to UUSL.
  • Fixed TAA issues on Skinned Meshes with Alpha Blend surfaces.
  • MeshDynamic improvements: renderInstancedSurface is allowed when the vertex buffer is empty.
  • Optimized light baking for static lights, now it takes less time preserving the quality.
  • Fixed OpenGL errors on baking lighting.
  • Fixed an issue with the Soft Interaction feature disabled for particle systems having the Emission state enabled.
  • Fixed sRGB when blending samples for the DoF (Depth of Field) effect.
  • Fixed issues when creating RenderSurface in async thread sometimes leading to crashes.
  • Fixed lighting of alpha-blend objects by LightOmni sources with disabled shadows.
  • Fixed an issue with Supersampling for dynamic reflections of static environment probes sometimes leading to visible seams.
  • Reduced TAA ghosting, more improvements are on the way.

 

Integration of .NET 5 (C# 9)

Having started with .NET Core 2.2 and 3.1 support, we have now implemented support for .NET 5 released in November 2020 (new major .NET versions are planned annually, so we keep the pace). This update brings you many fixes and new features as well:

  • Better performance.
  • Garbage collection improvements (reduced memory consumption).
  • C# 9.0 support with improved performance & native interop and more (for details please follow this link).
  • Container size optimizations
  • Numerous bugs fixed and much more.

For more details please refer to the official .NET 5 Release Notes. Please note that the minimum required Visual Studio version is 2019 v16.8.0 (for .NET SDK 5.0.100).

End of .NET Framework Support

Since UNIGINE 2.14 the .NET Framework is considered obsolete and no longer supported, as 5.0 is the main implementation of .NET going forward, and the preferred C# workflow is based on using the integrated C# Component System. All related demos, samples and project templates have been migrated to .NET5. 

For details on migrating your .NET Framework projects to .NET5 please refer to the dedicated article.

Updated Execution Sequence

We have made changes to the Engine's execution sequence to optimize the order and ensure overall stability and timeliness of execution of all operations, avoiding possible conflicts and crashes (e.g. when calling Plugin::swap() you can be sure that all physics calculations are completed). 

You can now add callbacks to execute your code at any stage of the Engine's main loop (e.g. after the SystemLogic::postUpdate() execution) via the Engine::addCallback() method.

World Management

As for world management we have unified and improved loading and unloading operations for maximum safety and stability: a world shall not be unloaded until all methods of the main loop are executed. You can also force-load a world instantly via the new loadWorldForce() method if necessary (can be useful for custom Unigine-based Editors). World initialization will now begin only after all system managers are updated and before executing plugins update.

New methods of the World class are now available for more convenient management via API (saveWorld, reloadWorld, quitWorld). And new World callbacks enable you to perform necessary actions right before and just after all world logic initialization and shutdown methods.

 

For more information on the updated execution sequence please refer to the updated Execution Sequence section of the Documentation.

API Improvements

UxXwYw5RyjPW_56lCDk3UrIxcDQEpwz9RQNgJSjQ

  • Methods of the AppOculus that were available for UnigineScript only can now be used from C++/C# as well.
  • Added useful methods Vector::operator+= and Vector::operator+.
  • Added HashSet::fromKeys method.
  • Added inverseLerp functions to MathLib.
  • Added an ability to set minimum and maximum (clamp) values for a TextureCurve (ValueMin/ValueMax).
  • Added an ability to get and remove components by their interface:

List<HeliRotor> rotors;
//...
rotors = GetComponentsInChildren<HeliRotor>(node).ToList<HeliRotor>();

  • Fixed inverted input in VScrollHidden / HScrollHidden C# methods.
  • Fixed race conditions in thread handling.
  • Nodes no longer implement IDisposable to avoid ambiguity.
  • Added support for ‘delegate’ keyword in C#, so the following code won’t raise any errors:

public class Test : Component
{
    public delegate void TestDelegate();
    public delegate void TestDelegate2();
    public delegate bool TestDelegate3(int i);
   
    public event TestDelegate2 onFinished = delegate { };
    public event TestDelegate onChanged = delegate { };
}

 

  • Added an overload for Unigine::Xml::load()/save() functions taking Unigine::Stream as a parameter enabling you to transfer XML data (including binary format) via streams.

Other Engine Improvements

  • Fixed LOD switching on moving objects with a stationary camera.
  • Upgraded the WPF Multiple Windows C# sample with an individual GUI for each viewport and mouse input handling.
  • Fixed an issue with Blob compression when calling the Blob::compress() method.
  • Upgraded Steam integration plugin to support Steamworks SDK 1.46.
  • Upgraded CUDA sample to support version 11.2.
  • Upgraded EasyBlend integration plugin to support Scalable SDK 7.0
  • Fixed an issue with incorrect runtime FBX file import path containing uppercase letters causing an import failure on Linux.
  • File GUID stored in a .meta file for an existing file shall not be overwritten, the corresponding GUID in the guids.db file will be updated instead.
  • Improved behavior of frozen rigid bodies (BodyRigid), so they no longer ignore torques, forces, and impulses applied.
  • Fixed PhysicsIntersection for WorldSplineGraph segments.
  • Fixed handling of physical contacts for PlayerActor.
  • Fixed handling of physical masks for Water Mesh with a Body Water assigned.
  • Fixed intersection testing for the WaterGlobal object curved with a GeodeticPivot.
  • Changed the default Height value for details of ObjectLandscapeTerrain to 0, to avoid intersection issues resulting in incorrect placement of objects relative to the landscape surface.
  • Fixed an issue with resetting Texture Atlas Size values when saving a Particle System to a Node Reference or reloading a world.
  • Fixed a crash on loading a mesh by an absolute path.
  • The Tracker tool now supports haze physical parameters.
  • Fixed minor boot screen flickering on loading.
  • Fixed a crash on the Engine re-initialization.
  • Fixed a crash on calling the SetMaterialParameterFloat4() method.
  • Fixed PgUp and PgDn keys in the Console, now they work as expected.
  • Fixed an issue with the Console::setActive() method, it works as expected again.
  • C# components are now automatically saved to a *.node file when calling the World.SaveNode() method.
  • Fixed an issue with managing C++ components assigned to nodes having the LIFETIME_ENGINE option set resulting in deleting components on reloading a world with a subsequent failure to add a component to the node.
  • Improved the default first_person_controller in the C# projects template. It now has a BodyDummy with a capsule shape assigned (Triggers Interaction is enabled by default). You can control whether to use the default body via the Use Object Body toggle in the Body section of the FirstPersonController parameters.

UnigineEditor

Asset Packages

UNIGINE’s community grows with a lot of new projects appearing, and so grows the demand for sharing or selling assets (from textures, models, and animations to whole project examples, and so on).

0vQ6F8bUqKvSFyJQHdh8oRn9FsQOMzKuyW0BFhq4

Introducing a mechanism of packages - collections of files and data from UNIGINE projects, or elements of projects, compressed and stored in a single file with the .upackage extension. 

When unpacked a package (like a zip file) maintains its original directory structure, as well as metadata about assets (links to other assets). Consider it as a step to the long-awaited Asset Store that is currently being developed actively. Meanwhile, you can already pack your assets, send them to other developers, as well as receive packages, and easily unpack their contents to use in your projects.

 

QOk-FZGXcyIHz9lvOXG5qZrs9b1bdMxO1tC_pWYD

All dependencies for exported assets are resolved and added automatically, just check Include Dependencies. You can click on any exported asset in the list to check it out (each asset has its size displayed after its name).

Filter Surfaces By Name

Any surface in your project can now be found in a snap! Searching for nodes in the UnigineEditor by name is handy, but what about surfaces? Imagine you have a CAD model with a hundred surfaces and you want to find that very one - this could be tricky before the new surface filter was added.

2bJGEy7_k1TEPK-acGOXPnarS2yWr0NJhDYMykAd

Moreover, you can now copy surface names via the corresponding context menu item.

Improved 2D Curves Support

2D curves a convenient instrument used to control various parameters changing over time now supports undo/redo operations and has become available for properties and C# components.

rgt1untavf5dccUEaFrRxzOOw35xcNeaApFGmnUk

Other Editor Improvements

  • Improved browsing through folders with a keyboard in the Asset Browser window: current folder selection shall be restored after returning back to the previous level of the folder hierarchy.
  • Links to deleted nodes are highlighted red in the UI to help you find problems quickly.
  • Auto-correction of the decimal delimiter in the numeric fields (, -> .)
  • Asset dependencies are now resolved for script files (*.usc) as well when selecting the Show Assets Using This One context menu action.
  • Added an ability to quickly find nodes in the Editor by ID (full match only) to the World Hierarchy window.
  • Improved animation name handling when importing from FBX files: animations shall keep their names.
  • Now you can import a pack of FBX assets with materials having the same name but unique textures (e.g., terrain tiles exported from a 3rd party software), avoiding name collisions and keeping all materials without any additional manual renaming. Just check Add Asset Name as Prefix in the import options and a name of each material will have the name of the imported FBX-asset as a prefix.
  • Relative paths specified for imported/exported assets shall be considered relative to the data folder.
  • The debug_direct_light material is now handled properly in the UnigineEditor.
  • Fixed a crash on failing to load a property after building a C# project.
  • Fixed displaying the initial set of options for the Create Build tool.
  • Fixed black preview for textures with empty MIP levels.
  • Fixed target node parameter for PlayerPersecutor objects.
  • Fixed editor hanging on material_reload console command.
  • Fixed issues with undo/redo operations in the Settings window.
  • Fixed camera control via expressions / tracks in the Editor viewport.
  • Fixed incorrect node selection when displaying asset dependencies via "Show Assets Using This One"
  • Fixed an issue with deleting files having the same name as a folder or a mount point deleted just before the file deletion.
  • Fixed hotkeys in Curve Editor.
  • Fixed WidgetManipulatorTranslator on orthographic view.
  • Added a tooltip with internal texture name (from .basemat file) on hovering over a texture slot.
  • Fixed applying wildcards to get a correct list of used assets for the Project Build tool.

 

Image Generator Updates

Syncker

Syncker, our multi-channel rendering plugin, has got a number of improvements making it even faster, more reliable, and convenient.

 

We have optimized searching methods for synchronized nodes with extended use of multithreading significantly improving performance of all operations that require scanning through the whole list (adding nodes, setting sync masks, checking if nodes are synchronized, etc.). Displaying debug information for synchronized nodes has become faster and smoother as well. The list of other improvements includes the following:

 

  • Added synchronization of Viewport Masks for objects enabling you to display objects selectively across all slaves.
  • Selecting nodes in the Syncker Debug window will now highlight them with the visualizer in the viewport for your convenience.
  • Nested NodeReference nodes are now synchronized correctly.
  • Node’s scale is now taken into account by the Syncker when interpolation mode is enabled.

 

CIGI Callbacks

The CIGIConnector now enables you to set callbacks to be fired right before sending a response to a request. This can be used to send additional data required by a host (e.g., velocities of the point of intersection for LOS/HAT queries which is useful in case of landing on a moving platform).

A callback function has the following signature:

(bool &ret, IG::CIGI::CigiIGPacket *response, IG::CIGI::CigiHostPacket *request, IG::IGIntersection *intersection)

  • ret - boolean value indicating if the packet is to be sent or not;
  • response - the packet to be sent;
  • request - request for which a packet is to be sent as a response (can be nullptr);
  • intersection - additional info on intersection (if necessary).

Here is an example:

void AppSystemLogic::init_cigi()
{
    int index = Engine::get()->findPlugin("CIGIConnector");
    // check CIGIConnector plugin load
    if (index < 0)
        return;
    // get CIGI interface
    cigi = IG::CIGI::Connector::get();
   
    cigi->setSendPacketCallback(Plugins::IG::CIGI::CIGI_OPCODE_LOS_EXT_RESPONSE, MakeCallback(this, &AppSystemLogic::on_los_ext_send));
    cigi->setSendPacketCallback(Plugins::IG::CIGI::CIGI_OPCODE_LOS_RESPONSE, MakeCallback(this, &AppSystemLogic::on_los_ext_send));
}
void AppSystemLogic::on_los_ext_send(bool &ret, IG::CIGI::CigiIGPacket *response, IG::CIGI::CigiHostPacket *request, IG::IGIntersection *intersection)
{
    ret = false;
    Log::message("reject packet %d\n", response->getType());
    if (request)
        Log::message("request was %d\n", request->getType());
    if (intersection)
    {
        Log::message("intersection was\n");
        if (intersection->object)
            Log::message("intersection object %s\n", intersection->object->getName());
    }
}

 

The list of other IG improvements includes the following:

  • IG state is now saved and restored after reloading a database (database_reload command), so the current settings (entities, cameras, weather conditions, etc.) won’t be lost on resetting a world or loading another one.
  • Information on the current version of each IG plugin (and Syncker as well) is now available in the Engine’s log.
  • View_Definition packets are now processed and applied correctly on Slaves.
  • Extended the list of commands for the IG Debug mode (ig_state_save/load, ig_debug_switch_entity, ig_debug_visualizer_dephtest/screenspace/scale/duration). For more information please refer to the dedicated article.
  • Fixed incorrect range values returned by LOS Vector responses (extended and basic) if a request was made with a non-zero min_range.
  • Added an ability to skip processing for certain DIS packets (PDUs) via the following method:

setConnectorProcessPacketEnabled(int pdu_type, bool enabled);

 

Demos and Samples

Improved LiDAR sample with optimized rendering discarding unnecessary buffers and some performance improvement. More comments were added to the source code for your convenience.

Documentation

Learning Materials

A Technical Livestream With Experts was recorded with additional subtitles available in Chinese and Russian: 

and a set of new ultrashort HowTo quick tip videos in English, Chinese, and Russian:

 

Other Documentation Changes

Work In Progress

We have focused on improving some legacy features (like GUI, splines, tracker, etc.) to make them shine the same way as other modules of UNIGINE do. And we keep on adding new functionality, as we have expanded our R&D team recently. There is a set of major and long-awaited features and improvements in development branches currently, and they are progressing fast (most of these features will be production-ready for you in 2.15 and 2.16) some of them are currently polished based on user feedback gathered, others are to be kept for a while to avoid cascades of painful migrations.

Thank you for your feedback!

Node-Based Material Editor

Earlier this February we have released an experimental build demonstrating a prototype of the new Material Editor enabling you to create your own materials visually without writing a single line of code by simply creating and connecting nodes building a graph! The prototype is advancing to the production-ready stage with a lot of improvements and useful features added, and polished to ensure smooth user experience.

d662k2B1yraCOsKkuihmSJXWHl348AI5kpHrIq0q

ETA: 2.15.

Vulkan Renderer

jUEGBX1JMHh8xtRwP3-TOWhr6DY2OgSmMGzwCK6T

We don’t forget our promises, and we’re also working on implementing Vulkan support to improve rendering performance and compatibility. There is some progress on that at the moment, however, the first experimental release is not to be expected earlier than the end of this year. Vulkan is a low-overhead, cross-platform 3D graphics library that gives developers more control over the GPU and lower level CPU usage. This feature also opens up a way for more supported platforms, including mobile devices.

New Universal Animations System

It is hard to imagine a 3D application not using animations at all (character movement, camera control for cinematic cutscenes, dynamically changing materials, you name it). 

We are currently focused on system design and internal API improvements to implement an advanced Animator tool in the future. Just a quick look at what we have done so far.

First, we have added a new file format (.animation) to store animations - unlike the current .anim format, it is xml-based and user-friendly (you can modify any key value you want). We have made animations independent, they are not bound to certain nodes, properties, or materials (no file names, guids, or anything), instead our new animations operate with abstract entities (like placeholders), enabling you to assign any existing node/material/property via the UnigineEditor or via code. This also makes transferring animations between projects simple (no migration required). 

Multiple entities and hierarchies can be driven by the same animation, with an ability to change what exactly is to be animated in a snap - just by dragging nodes or materials to the corresponding fields in the UnigineEditor. With an advanced API animations can be procedurally generated, configured, and managed at run time, as well they can be saved as assets to be used later. Another important thing is that you will be able to animate virtually any parameter available via API, even new ones that will be added with each new release, automatically! Interpolation and advanced blending functionality will also be at your disposal offering you unprecedented flexibility and capabilities.

Old .anim and .track files are to be completely replaced by the new universal .animation format. The new Tracker tool will support this format enabling you to animate your objects right in the UnigineEditor with an ability to manage animations imported from FBX-assets. 

 

Here is an example of simplified control over animations via code (the final version may differ):

F8N4KUgJR4nKjD34TChRZqYMVIYxs_J5uvwIKFZy

And a video demonstration of the current state of research:

 

ETA: 2.16.

New In-App GUI

Current GUI implementation has a number of weak points and limitations. A new GUI system implemented using the component-based approach is to replace the current one and make it much more flexible and easier to use. Simplified widget transformation and scaling, improved intersection testing with advanced flexible control, stylesheets, better layout based on components (horizontal, vertical, grid, or panel), visual and logic components for widgets for advanced customization to fit the needs of any project.

 

ETA: experimental release in 2.15, production version in 2.16.

Editor Plugins

The ability to extend functionality of the UnigineEditor was added in 2.10. We’re now upgrading the UnigineEditor Plugin System and improving public API, to make this instrument simple and more convenient so that you could create your own plugins to customize the Editor for your project-specific needs, e.g., add new menus, windows, toolbar commands, sub-modes, define how properties are displayed, etc.

qXYIoc2jpuypmtIxF1PI57Cg7JE64C3c_QfzGNen

ETA: beta release in 2.15, production version in 2.16.

Full-Planet Solution

Full round Earth solution (ObjectPlanet) for flight simulation and similar tasks (continent-wide road network planning, precise weapon simulation, etc). The power of UNIGINE's 64-bit coordinates precision is utilized here to its full extent.

bK3xIo0ZzHmp128rNC-kYuKGNl_umrACWyvZbuuY

ETA: beta release in 2.15, production version in 2.16.

New SDK Browser

UNIGINE is made to help bring your projects to life. Most of your activities revolve around projects, you create, configure, and upgrade them, you also need to have all necessary templates, samples, demos, and additional content at hand. SDK Browser is a hub that connects you to the world of UNIGINE and streamlines all the processes. We’re putting a lot of effort into making all processes as smooth and intuitive as possible and switching to a new technology stack to make the product even more robust and secure.

Gr54TdfpD_Nu0j8V-VSnib5zC7_zTg9PoADKjPcc

ETA: 2.15.


More details on the roadmap for upcoming releases can be found on the official forum.

  • Like 1
  • Thanks 1
Link to post

Known Issues

General:

  • Remaining non-functional Shadow Shafts and Simplified Depth Test checkboxes for deprecated parameters in the clouds settings ( Rendering -> Clouds) and related warnings in the Console:

Console::get_variable(): can't find "render_clouds_shadow_shafts" variable

Console::getInt(): "render_clouds_shadow_shafts" is not int type variable

Console::get_variable(): can't find "render_clouds_simplified_depth_test" variable

Console::getInt(): "render_clouds_simplified_depth_test" is not int type variable

  • The default internal csharp_components.prop is displayed in the list when creating an Asset Package containing a C# component.
  • Incorrect rendering of fonts in the Asset Browser.
  • Asset Package Manager does not currently process duplicate guids properly.
  • Warnings in the Console when opening API samples: 

Unused in node render_clouds_fix_coverage_tiling

  • Just after opening a world, UnigineEditor displays a prompt to save it as missing render settings are removed from the world at startup.
  • New cloud types are not available in the IG Template. You can manually add them to the list of cloud types in the ig_config.xml file specifying a path to the corresponding material:

<cloud_types>
    <cloud_type type="5" name="cirrus" material="ig/clouds/materials/clouds_cirrus.mat"/>
    ...
</cloud_types>

  • Conformal Clamp does not work in IG.
  • Temporary naming in the Bake Lightning\Build Lightning, will be changed by the official 2.14 release.

 

Sandworm:

  • Support for .ECW and .JP2 formats is unavailable.
  • Re-generation removes old data of an existing ObjectLandscapeTerrain without applying new data (the terrain disappears).
  • The Adjust Terrain Heights state for Vector Roads generation does not work for ObjectLandscapeTerrain.
  • Visual artefacts along the edges of insets.
  • Possible issue with updating masks for Grass objects after re-generation of the ObjectTerrainGlobal, reloading the world solves the issue.
  • Broken tiles and seams may appear on the surface of ObjectLandscapeTerrain and ObjectTerrainGlobal.
  • Landcover Masks do not work with ObjectLandscapeTerrain.
  • Projections for some Projected Coordinate Systems can be displayed incorrectly in the tool.
  • Like 2
Link to post

Also, we are working on even better support for transparency sorting in the clouds (not in beta yet):

 

  • Like 1
Link to post

Hi, A lot of VERY GOOD thing in there!

Planar reflection are amazing! The new clouds are gorgeous!

On 3/19/2021 at 9:56 AM, fox said:

IG state is now saved and restored after reloading a database (database_reload command), so the current settings (entities, cameras, weather conditions, etc.) won’t be lost on resetting a world or loading another one.

I guess this is for a manually triggered database_reload. What about a CIGI Reset? I hope this one still *resets* all settings to their default value.

Thanks for the quality work!

Link to post

Hi,

I have some points that you maybe can improve:

  • New projects create a very foggy basic environment effect which is different from previous versions, is this the new standard setting for projects?
  • Non edited cumulus cloud layer material looks grey and dark when setting the sun rotation into zenit.
  • Cumulus and cumulonimbus 2 clouds are flickering at the borders and look very noisy there.
  • Cumulonimbus cloud base and cumulus do not match with their lower base height. Render order is a problem there too and correct height positions are not possible with the current placing now.
  • Is there a easy way to interpolate coverage from 0 % to 100 % for the different cloud types?

Thanks

Link to post

Hi Sebastian,

Are you using IG and Meteo classes or you are using clouds directly and modifying their settings manually?

Regarding the issues:

  1. Yes, that's new haze settings that will be used by default for every template.
  2. Will be fixed as well.
  3. You can adjust Step Accuracy and Samples Count options in the Clouds settings to reduce the noise and flickering:
    image.png
     
  4. Can you show us a screenshot or video about not matching height? How we can reproduce it on our side? You can also improve sorting by enabling Accurate Layers Sorting option, but with OpenGL it would significantly drop the performance (unlike DX11).
  5. The easiest way (if I understand you correctly) is to create 2 cloud layers and increase coverage + density levels up in a first layer while decreasing the same parameters in the second layer. If that's not what you want to achieve - could you please give us more detailed description with video / screenshots of what kind of effect you want to get?

Thanks!

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to post

Hi silent,

we are using the clouds directly like they are placed in the editor.

7 hours ago, silent said:

3. You can adjust Step Accuracy and Samples Count options in the Clouds settings to reduce the noise and flickering:

Setting samples count to Ultra and step Accuracy to 1.0 makes it better. What is the performance impact?

7 hours ago, silent said:

4. Can you show us a screenshot or video about not matching height? How we can reproduce it on our side? You can also improve sorting by enabling Accurate Layers Sorting option, but with OpenGL it would significantly drop the performance (unlike DX11).

Accurate Layer Sorting did the trick.

1101562614_cumulonimbuscenter.thumb.PNG.165de480bff01564ed4a647ebb73eec6.PNG

With not matching height I mean the distance between the model coordinate system and the cloud bottom is too high (arround -1100 units in Z and -12500 Units for X and Y) we can workarround this with a dummy node for now.

When disabling Accurate Layer Sorting and set the position of cumulonimbus one unit lower it draws first.

2021-03-23 08-55-50.mkv

7 hours ago, silent said:

5. The easiest way (if I understand you correctly) is to create 2 cloud layers and increase coverage + density levels up in a first layer while decreasing the same parameters in the second layer. If that's not what you want to achieve - could you please give us more detailed description with video / screenshots of what kind of effect you want to get?

What I tried to say is, when you are placing one cumulus cloud layer in the scene, we want to increase the coverage by "adding more clouds" to this layer with less gaps between each cloud and decrease the coverage by "removing clouds" in the layer with more gaps between each cloud. In earlier version we did this by interpolating layer_max_height, coverage_contrast, density hgp_brightness,shadow_intensity ...

Edited by sebastian.vesenmayer
Link to post
Quote

 With not matching height I mean the distance between the model coordinate system and the cloud bottom is too high (arround -1100 units in Z and -12500 Units for X and Y) we can workarround this with a dummy node for now.

We will fix X/Y offset (that's was not planned), but Z-offset will remain the same. So you would need anyway to use NodeDummy to adjust height for your needs.

 

Quote

What I tried to say is, when you are placing one cumulus cloud layer in the scene, we want to increase the coverage by "adding more clouds" to this layer with less gaps between each cloud and decrease the coverage by "removing clouds" in the layer with more gaps between each cloud. In earlier version we did this by interpolating layer_max_height, coverage_contrast, density hgp_brightness,shadow_intensity ...

hgp_brightness is not available anymore, but you can change sun intensity instead. Other than that I think there was no big changes and you still can tweak the same parameters as before.

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to post

Another question, is it possible to reset the clouds positions in a cumulus cloud layer after wind has been applied?

For example by reloading a save point the clouds look the same way as before.

Link to post
Quote

Another question, is it possible to reset the clouds positions in a cumulus cloud layer after wind has been applied?

You can try to reset clouds animation via ObjectCloudLayer::setAnimationNoiseOffset/setAnimationCoverageOffset methods.

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to post