This page has been translated automatically.
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
UnigineScript
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine and Tools
GUI
Double Precision Coordinates
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
CIGI Client Plugin
Rendering-Related Classes
Warning! This version of documentation is OUTDATED, as it describes an older SDK version! Please switch to the documentation for the latest SDK version.
Warning! This version of documentation describes an old SDK version which is no longer supported! Please upgrade to the latest SDK version.

CigiClient Plugin

Common Image Generator Interface (CIGI) protocol is a standard way for a host device to communicate with an image generator (IG). It is widely used in the simulation industry.

UNIGINE's implementation of CIGI supports its common functionality (versions 3.0, 3.1, 3.2, and 3.3).

The CigiClient plugin enables to use CIGI protocol in the UNIGINE engine and offers the following features:

  • Communication with a CIGI Host: all packets are received and sent automatically.
  • Automatic creation, modification and deletion of entities; manipulation of views and view group.
  • Interaction with the Syncker plugin allows to use multi-IG configurations
  • Processing of any type of Host packets (control, definition, request) can be customized via callbacks.
  • C++/UnigineScript API

This plugin allows to use a single IG or a multi-channel IG setup.

For a multiple-IG setup the Synker plugin should be used, in this case one IG is initialized as a master, and all other as slaves.

The capabilities of this plugin are showcased in the CIGI demo project, available in the UNIGINE SDK (2.6 and later).

To run the demo from the Unigine SDK Browser, click the CIGI demo button on the Demos tab.

CIGI Host - IG communication

CIGI Host - IG communication

See Also

CigiClient API:

  • The Manager interface article for more details on managing CigiClient via code (C++, UnigineScript).
  • The CigiClient Plugin API article for more details on managing CigiClient classes via code (C++, UnigineScript).

Using CigiClient

The basic workflow is as follows:

  1. Implement CIGI logic for your application.
  2. Prepare your environment.

    It is recommended to use a 100 Mb LAN. Otherwise, you may experience network lags (see Troubleshooting section).

    Notice
    When using a Multi-IG configuration, all applications you use must have access to all Unigine files and project data. So, you should copy your project to all computers. If some nodes are missing in the world file on a local computer, they will not be rendered.
  3. Run your CIGI Client application.

    • For a Single-IG setup you should launch the CigiClient plugin via the extern_plugin command-line option at the start-up of your application, e.g.:

      Shell commands
      <your_app_name> -extern_plugin "CigiClient" -sync_master 0
    • If you want to use a Multi-IG configuration, you should add the Syncker plugin and specify necessary startup command-line options, e.g.:

      Shell commands
      <your_app_name> -extern_plugin "Syncker,CigiClient" -sync_master 0 -sync_slave_name <slave_name> -sync_mesh <mesh_name>.mesh -sync_view_0 <mesh_surface_0> -sync_view_1 <mesh_surface_1>
      Notice
      The order of plugins in the list matters: Syncker must be specified before CigiClient.

Troubleshooting

If the network latency is too large despite 1Gb bandwidth or higher, it can be caused by a 100 Mb or 10 Mb device connected to a network. Data exchange rate will drop down to the maximum rate supported by such device, slowing down the connection speed.

  • Some 100 Mb or 10 Mb devices can have a working network interface when they are turned off.
  • It is also possible that when turned off, 1 Gb devices have a network interface working at 100 Mb rate, which will slow down connection in LAN.

Useful Tool

If you have a source SDK, you can use a simple and useful tool to monitor the network messages exchange speed. It is server.usc found in source/tools/Interpreter/scripts/network/.

Last update: 2017-10-20
Build: ()