Se Unity e Unreal Engine la fanno da padroni sulla scena dei software 3D real time, ci sono altri prodotti molto interessanti, che chi intende specializzarsi in questo ambito deve necessariamente tenere in considerazioni. Prodotti come Lumberyard, erede di quel CryEngine acquisito da un colosso come Amazon, piuttosto che sostenuti da sviluppatori decisamente più Indie. E' il caso di Unigine.
Il recente Unigine 2.6.1, pur proponendosi principalmente come un "maintenance update" aggiunge feature molto interessanti ad un software già molto promettente, introducendo elementi molto importanti come il Rendering Multi-Channel ed un complesso sistema di creazione e gestione di vegetazione, strade ed elementi ambientali, con un Landscape tool proprietario reso sempre più completo.
Per avere un'idea delle potenzialità di Unigine è sufficiente uno sguardo ad alcuni filmati dimostrativi, come quelli che vi proponiamo. In particolare il video del simulatore di volo integra molte delle feature introdotte in Unigine 2.6
Vi riportiamo un estratto (in lingua inglese) delle feature di Unigine 2.6.1, rilasciate sul sito ufficiale dello sviluppatore.
UNIGINE 2.6.1 - KEY CHANGES
- Better configurator for nonlinear image warping and edge blending.
- More robust multi-channel rendering with remote projection configuration.
- Improved CIGI protocol support.
- Improved generation of grass and clutters, increased performance, runtime modification.
- Added distributed terrain generation for Landscape tool.
- Improved UnigineEditor 2.
- Overall engine improvements and bugfixes.
- More C++ samples.
APP PROJECTION PLUGIN
The AppProjection plugin has evolved with support for adaptive grid, complex-shaped masks, blend maps and C++ API. Configuration of nonlinear image warping and edge blending for multi-projector setups has become an easier task.
The complete list of improvements includes the following:
- Support for adaptive grid, now it is possible to set an arbitrary number of control points.
- Improved visual editor offers flexible tuning of warping parameters for each control point.
- It is now possible to create and edit masks to cut certain regions out.
- Added C++ API and a set of new methods (The complete list of API changes is available in the API Migration Guide).
The interface of Projection Configurator has transformed and became more convenient, all settings are now displayed on different tabs.
- Warp tab contains geometry correction settings. New adaptive grid lets you set an arbitrary number of control points along horizontal and vertical axes. Precise positioning and flexible tuning of warping parameters for each control point, provided by the improved visual editor, give you full control over the image geometry to fit the required screen configuration.
- You can also use the Render Debug option to temporarily set individual colors for different projections. This helps to visualize overlapping regions for different projections and facilitates the setup process.
- Color tab contains color correction settings. Here you can set up color intensity, and adjust color balance for the selected projection
- Blend & Mask tab allows you to configure edge blending and create complex-shaped masks to cut certain regions out. You can create and modify multiple masks using visual editor.
After a huge revamp introduced in the previous release the Syncker plugin continues to evolve. Syncker options can now be changed via the Plugins tab of the system menu, displayed when the Esc button is pressed.
GUI View Configuration
Introducing new GUI view configuration for Syncker, making it possible to set up projections remotely on a Slave computer.
To configure projections on the Master or a Slave, open the system menu by pressing Esc, go to Plugins tab and enable Show projections configuration option.
IMPROVED GENERATION OF GRASS AND CLUTTERS
Generation of ObjectGrass, ObjectMeshClutter and WorldClutter objects has improved, with the use of multithreading and other performance optimizations. Overall performance has increased significantly. Now it is possible to modify grass and clutters at runtime (cut trees and stamp the grass flat) via API.
The complete list of improvements includes the following:
- Clutter generation is now performed in separate threads.
- Optimized grass / clutter generation performance and improved update logic (no more jitter on parameter change).
- Added new invalidate() methods for regeneration of grass / clutter cells.
- Added bend parameter for ObjectGrass, that allows you to create bent grass.
- Added ObjectMeshClutter::getClutterTransforms() method, that makes it possible to obtain transformations for all clutter meshes. The precision flag indicates whether clutter transformations will be collected for meshes within bounds,or within clutter cells.
- Added ObjectMeshClutter::setClutterExclude() method,that allows you to remove all the cells within certain area and skip their generation.
- Added world_spawn_list console command to monitor generation requests for ObjectGrass and ObjectMeshClutter nodes.
- Removed excessive ObjectGrass updates when a node is not visible.
The evolution of the Landscape Tool brings a number of new features and improvements.
Terrain generation is a complex task and may require a substantial amount of time depending on the area size and data resolution. Landscape Tool now enables you to use the advantages of distributed computing in the process of terrain generation. Generation time for large terrains can be significantly reduced, as the performance increases linearly for certain tasks.
For more information on distributed terrain generation please refer to the Distributed Computing article.
Roads generation has also become better. Terrain heights and masks can be adjusted for generated roads to provide better alignment and prevent vegetation from growing on the roads. This can be done in one click by simply selecting the Adjust terrain masks and heights option when setting up road generation parameters.
Roads with adjustment
We continue our work on improving the new UnigineEditor 2 to make it even more convenient and powerful tool. The following improvements were made for this release:
- Added support for per-node property modification.
- Improved assets validation time. All *.asset files will have to be re-committed once, as hash values for all files will change.
- Added progress bars for assets validation and reimporting at startup.
- Improved GUI performance on operations with multiple objects.
- Improved organization of UI elements in the Parameters window with a new Accordion widget. You can now collapse and expand groups of UI elements.
- Improved structure and added tooltips for states, textures and parameters of the core base materials displayed in the Parameters window.
- Overridden property and material parameters are now highlighted in green.
- Fixed various issues with FBX support.
- Added support for OBJ, 3DS and DAE (COLLADA) formats.
- Added a Merge similar materials import option, that allows you to merge multiple identical materials with different names into a single one. This option is very useful for importing complex models from various CAD systems.
- Extended the set of supported image formats and added point filtering for imported textures.
- Added support for rotation and scale to the Randomizer tool.
- All assets in the Asset Browser are now sorted by name.
- Asset names are now displayed in the fields of the Parameters window instead of the names of runtime files.
- The contents of the NodeReference tab of the Parameters window are now merged into the Node tab.
- NodeReference content is now automatically selected when Edit button is clicked.
- Fixed applying changes to nested NodeReferences.
- Improved usability of the FieldHeight attenuation slider.
- Added undo/redo for grass and clutters mask editing.
- Fixed incorrect object movement with snapping enabled.
- Editor configuration file is now stored in the following folder:
- C:/Users/AppData/Local/Unigine/Editor/ (Windows)
- ~/.config/Unigine/Editor/ (Linux)
- Other bugfixes and UI improvements.
- Improved intersection detection. Added ObjectTerrainGlobal::setForceIntersection() method, that enables/disables forced loading of necessary terrain tiles to ensure correct intersection detection. When enabled, this option may significantly reduce performance. Thus, it is recommended to enable it, perform intersection check, and disable it again.
- Now it is possible to add new LODs atop of the most detailed one. This feature can be used for creating high-detail insets with brushes or via API.
- Improved Brushes UX.
- Asset system now supports terrain detail arrays.
- Fixed crashes with LODs removal in cases when vegetation objects present on the terrain.
- Fixed incorrect brushes projection when viewport camera is locked.
- Fixed bug when terrain mask list was not refreshed after terrain re-generation with the Landscape Tool.
Improved the billboards_base material, now it is possible to use billboards to simulate various types of specialized lights. The list of key improvements includes the following:
- Added geometry inflation allowing the user to limit minimum billboard screen size (in pixels) to a fixed value in order to provide visibility from far distances.
- Added billboard size scale.
- Added horizontal and vertical angle limits (negative Y axis will be selected as forward axis) for angle-dependent visibility.
- Added haze support for emission pass.
- Fixed instanced omni lights in OpenGL.
- No more driver crashes on shader errors.
- More robust shader cache generation.
- Removed various shader warnings.
- 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.
- Added Video tutorials on UnigineEditor 2 interface:
- Added UnigineEditor 2 section.
- Added article on the *.spl file format.
La documentazione integrale è disponibile al seguente link. https://developer.unigine.com/en/devlog/20171222-unigine-2.6.1