Vega  FAQ's FAQs 1 thru 50

FAQs 1 thru 51 square72_blue.gif FAQs 51 thru 100 square72_blue.gif FAQs 101 thru 150 square72_blue.gif FAQs 151 thru 200 square72_blue.gif FAQs 201 thru 250 square72_blue.gif FAQs 251 thru 300 

    Vega is MPI's  original  software environment for the creation, development and deployment of 3d Real-time visual and Audio Simulation, Sensor, Virtual Reality, Urban, High-Flight, Medium-Flight, Low Level and Ground warfare  and general visualization applications.






* 1 *  What is Vega  images/vcr_up.gif


    Vega is MultiGen-Paradigm's  premier software environment. For the creation, development and deployment of 3d real-time visual and audio simulation, sensor, virtual reality, and general visualization applications.

    Vega provides an extensive and mature programming API in C, and a large list of add-on expansion modules.

    By combining advanced simulation functionality with easy-to-use tools, Vega provides the basis for the most productive process for building, editing, running and deploying sophisticated applications quickly and easily.

    Vega is used by leaders in the airline transportation, aircraft manufacturing, space and defence industries utilizing Vega's advanced 3d simulation technology for critical operations such as pilot and gunner training, aircraft design, mission planning rehearsal and missile visualizations.

    Vega has been superseded by MultiGen-Paradigm's new Vega Prime simulation software suite. (at this time Vega is still currently available from MultiGen-Paradigm)

    For more detailed information on Vega see Vega web pages and or contact MultiGen-Paradigm directly

* 2 *  How do I get Vegaimages/vcr_up.gif


    Vega is a commercial software product and thus has to be purchased.

    Vega and its many add-on modules can be purchased directly from MultiGen-Paradigm or through one of its many world wide distributors

    See MultiGen-Paradigm's Website for more details

    Note that Vega and its add-on modules are classed as restricted technology by the US state department thus are not available to certain countries and companies etc.

* 3 *  Can I Still by Vegaimages/vcr_up.gif

    No as MultiGen-Paradigm stopped selling Vega in the 3rd quarter of 2005

    MultiGen-Paradigm still provides excellent support for Vega through its skilled and well managed Customer Services group, but have not publicly released any patches since Vega 3.71 for NT and Vega 3.62 for Irix

* 4 *  What is Vega-SP and Vega-MP images/vcr_up.gif



      Vega is available in two main configuration  flavours:

      1. Vega-MP  Multi-Process (MP)

      2. Vega-SP   Single-Process (SP)


      Applications developed under Vega-SP can be re-compiled with Vega-MP for full multi-process functionality.

      Vega-SP offers a low cost solution for systems with a single CPU and supports the development of applications using a single process runtime model.

      Vega-MP  logically distributes application, culling, and drawing tasks across available processors for optimal performance and allows the user to assign graphics and processing tasks to specific processors in the workstation.

* 5 * What Operating Systems does Vega run on images/vcr_up.gif


    Vega Runs on 2 operating systems

    • SGI Irix

    • Windows NT ( Win 2000 and XP Professional)

    Not supported

    • Linux  (never released or fully developed)

    Note that Vega is designed to run on the Professional version of Windows (NT, Win2000 XP Professional), parts of the software including Lynx and the licensing mechanism require  the TCP/IP stack which is not present in the home additions ( 95,98, ME etc)


* 6 * How is Vega Licensed  images/vcr_up.gif

    Vega can be licensed so that it is locked to a single work station or you can have licenses which can "float" across a network between machines. This means that if you have only one Vega license, but two machines on your network, then a Vega-based application can be run on either machine, but not on both machines at the same time. In order for a license to be installed, at least one machine must be designated as the license server

    Vega is licensed directly from MultiGen-Paradigm and use's the FlexLM licensing technology from Globetrotter Software Inc.

    License files Keys are available only from MultiGen-Paradigm directly,

    See the QuickStart and release notes in your Vega installation for full details on install a license and or license server

    Note that Globetrotter was acquired by Macrovision  and FlexLM has been sucked into a product called FlexNet Publisher  Although this should not effect Vega.

* 7 * Were is my license file  images/vcr_up.gif

    MultiGen-Paradigm's Vega uses the same default file name on license.dat on both Irix and Lynx.

    On windows the file by default will be found typically in  C:\Program Files\Paradigm\flexlm or  C:\flexlm

    On Irix by default  /usr/local/PSI/flexlm/

* 9 * What is a vgSystemimages/vcr_up.gif


    The Vega vgSystem calls allow the user to initialise, define, configure, and control the real-time processing of Vega. The first step in any Vega application should be to call vgInitSys this is required and initialises the Vega System.

    vgSystem provides attributes that provide system control, error handling and notification, frame update, multiprocessing setup, and how to gracefully exit the application. All the attributes have default settings that may be overridden from LynX or by API using vgProp. The settings can be queried using vgGetProp (see vgCommon API)

    To get the pointer on the vgSystem, use vgGetSys() note that there is and can only be one vgSystem. This is the handle that is supplied to  vgProp and vgGetProp. Note that the handle for the vgSystem is also returned by vgInitSys.

    See vgSystem  and the Vega Programmers Guide for further details.

* 9 * What is a vgGFX  images/vcr_up.gif



    vgGfx  controls the graphics state. It is a collection of enables and values that control how geometry is rendered. All the properties and values for vgGfx are controlled with the vgCommon API vgProp and vgGetProp respectively.

    The vgGfx instances are  used with either to vgChannel or vgObserver.

    See vgGfx and the Vega Programmers Guide for further details.

* 10 * What is a vgWindow images/vcr_up.gif


    All of the rendering within Vega is performed in a window described by vgWindow. A Vega application must generally have at least one window , unless graphics are turned off by setting the system property VGSYS_GRAPHICS to VG_OFF.  

    A vgWindow can contain any number of viewports known as vgChannels. To optimize performance when showing multiple views of a scene, it is best to use multiple channels within a single window rather than multiple windows as this stops the need for the expensive OpenGL context switching.

    vgWindow's are opened during the call to vgConfigSys. Thus vgWindow's must be defined before the call to vgConfigSys. You can either let vgDefineSys set up windows that have been specified in an Lynx create ADF file or created through API by calling  vgNewWin to define the windows before calling vgConfigSys.

    Each window has its own set of attributes whose settings control frame buffer characteristics, IO, and the drawing process. Some of these properties can be changed during run-time and some cannot. The vgWindow properties are set and retrieved by the vgCommon API vgProp and vgGetProp respectively.

    See vgWindow and the Vega Programmers Guide for further details.

* 11 * What is a vgChannel  images/vcr_up.gif


    The vgChannel is were the actual visual data within the 3d Scene is rendered to, you can think of the vgChannel a camera were you set near and far clip planes, vertical and horizontal fields of view.

    The data stored in a vgChannel defines where the 3d scene is displayed with in a vgWindow, further it says how the vgScene  is projected onto the screen; How the vgScene is rendered in terms of the graphics environment, and what method is used to clear the screen.

    See vgChannel  and the Vega Programmers Guide for further details.

* 12 * What is a vgObserverimages/vcr_up.gif


    The primary function of vgObserver is to specify the characteristics, position, and control the visual representations within the Vega graphics system.

    The vgObserver is a collection of attributes and references to Vega class instances that together describe a visual representation. Each vgObserver contains a list of vgChannel instances whose views are positioned and oriented based upon the current observer position.

    A vgObserver also contains information defining the graphics state (vgGfx) and the environmental parameters (vgEnv) of the scene. Only one instance of a vgGfx or vgEnv may be bound to a vgObserver.

    Each vgObserver has a vgScene associated with it that defines the components (vgObject) and hierarchy of the potentially viewed scene.

    See vgObserver  and the Vega Programmers Guide for further details.

* 13 * What is a vgMotion  images/vcr_up.gif


    Out of the box Vega provides you with 7 relatively basic motion models and 3 complex motion models with allow the user to navigate through their 3d vgScene

    These simple motion models can be used to change the position of a vgObserver and or vgPlayer in a vgScene

    The motion models provide are:

    • Spin
    • Drive
    • UFO
    • Warp
    • Fly
    • Trackball
    • Walk.

    There are two more complex motion models provided are: 

    • Flight Simulator
    • Missile
    • PickFly

    There is one further Motion model supported:

    • Input Device Direct

    The "Input Device Direct" motion model is intended as a direct interface to the data provided by the various types of input devices supported by Vega.

    Further the user may create and define up to six additional motion models for use with Vega

    See vgMotion  and the Vega Programmers Guide for further details.

* 14 * What is a vgScene images/vcr_up.gif

    A vgScene is basically a collection of and a container for all the visible of objects that can be viewed by an observer (vgObserver).

    Vega can manage any number of active scenes at one time, and provide multiple observers which can view the same scene simultaneously.

    Objects may be added and removed using vgAddSceneObj and vgRemSceneObj. Once an object is removed it will no longer visible; however it can be re-attached to a vgScene at any time and become visible

    See vgScene  and the Vega Programmers Guide for further details.

* 15 * What is a vgObjectimages/vcr_up.gif


    A vgObject is a collection of geometry and attributes maintained in a single hierarchy. A vgObject is typically a 3d Model such as an OpenFlight file or fast loading binary file such a "fst'" or "pfb" files

    With Vega only vgObjects are visible they may be added to a vgScene to form a collection of objects that would then form the visible scene.

    See vgObject and the Vega Programmers Guide for further details.

* 16 * What is a vgPart images/vcr_up.gif

    The vgPart functions provide a simple and direct method to query and manipulate parts of objects. It provides the user a means to access database elements in real-time.  

    vgParts are created for an object using vgMakeParts. This function only creates a vgPart where a named node in the object hierarchy exists. Usually, names are given to the "parts" of an vgObject when constructed using whatever database design tool is applicable.

    The Vega parts mechanism provides a simple means to locate and reference those named elements in the object. A list of vgParts is kept for each vgObject within the vgObject class instance.

    See vgPart  and the Vega Programmers Guide for further details.

* 17 * What is a vgPlayer images/vcr_up.gif

    A vgPlayer is used to specify the characteristics of and control dynamic entities within Vega.

    Typically, entities are represented visually by a single or multiple vgObjects containing visual attributes.

    A vgPlayer may be positioned within the Vega system in either absolute world coordinates, or relative to another specified coordinate system. Using the player type (VGPLYR_TYPE) property, players may be optionally specified to be terrain mapped

    i.e. automatically placed at the terrain height plus an offset. In addition, the position of a player may be provided either from an external source via API (vgPos), attaching a vgMotion model to the player, or by attaching an instance derived from the vgNavigator class to the player.

    See vgPlayer  and the Vega Programmers Guide for further details.

* 18 * What is a vgEnv images/vcr_up.gif

    A vgEnv is an environment descriptor structure that is used to specify and control environments within the Vega system. By definition, an environment within Vega is a bounded region that possesses information that describes the atmospheric conditions or circumstances within that region.

    The information that specifies the environment consists of either properties that are maintained internal either to a vgEnv instance, or as references of other system components.

    Environment properties include:

    • state
    • atmospheric color
    • ambient light control (time of day)
    • wind velocity.

    System components that may be referenced by an environment include:

    • light source (vgLight)
    • fog model (vgFog),
    • Environment effects simulation (vgEnvFX) descriptors.

    Note that multiple vgLight descriptors or vgEnvFx descriptors may be attached to a single environment. But only single Fog model per environment is supported.

    See vgEnv  and the Vega Programmers Guide for further details.

* 19 * What is a vgEnvFx images/vcr_up.gif


    vgEnvfx supports the creation, deletion, or modification of environmental effects for the Vega System, a variety of optional environmental effects may be invoked and controlled within each vgEnv. Effects within the environment simulate commonly observed atmospheric and physical phenomenon.

    Currently environmental effects that are supported include: 

    • ground fog
    • Box cloud
    • Hinged cloud layers
    • Sky Box cloud
    • storm
    • ephemeris model
    • Sun/Solar
    • Lunar disk
    • Background images

    Cloud layers are simulated as a cloud deck that extends to the horizon and is defined by a top and bottom elevation. When above or below the cloud layer, the cloud surface is simulated by textured polygons that extend to the horizon. A transition layer exists at both the top and bottom of the cloud layer that introduces a gradual degradation of visibility conditions as the eyepoint enters and exits the cloud layer. If scudded clouds are enabled, then the density of the simulated cloud layer varies with eyepoint translation, or a nominal translation value to continue obscurations when the observer is stationary. When the eyepoint is within the cloud layer, the cloud layer appears as an opaque homogeneous haze of the specified cloud deck color.

    See vgEnvFx  and the Vega Programmers Guide for further details.

* 20 * What is a vgIsector images/vcr_up.gif


    vgIsectors provide a method of collision detection which is an important feature of visual simulation software.

    Height above terrain (HAT), terrain elevation, line-of-sight occultation (LOS), and object intersection queries are common requirements for visual simulation applications.

    Isectors are used in Vega to define these types of collision detection and intersection tests. Isectors need a volume and a target. Isectors use a method which determines the volume, imposes limitations on how the volume can be positioned, and defines the minimum set of test results required for the method.

    The target is specified by the user either through the ADF or Vega API and can be a scene or an object. Intersection tests are conducted between the target of the isector and the volume defined for the isector.

    See vgIsector  and the Vega Programmers Guide for further details.

* 21 * What is a vgIDev  images/vcr_up.gif

    is a Vega class which handles various input devices including 6-D trackers, spaceballs and joysticks. Once created, the vgIDev class handles asynchronous input from the device, which can be accessed by the user either through a motion model or directly through the C API.

    In an effort to maintain a consistent frame rate, reading from devices may be done asynchronously, in order to prevent a slow device from interrupting the desired frame rate. Note that if a device is not capable of producing data at the desired frame rate, the device position data may not be updated every frame. Some devices, such as the mouse, have very fast read times, and therefore it may be desirable to avoid the slight overhead of an additional thread. In such a case, the input device instance may be configured as synchronous with data reads done in a post frame callback function.

    See vgIDev  and the Vega Programmers Guide for further details.

* 22 * What is a vgPath images/vcr_up.gif


    In addition to the basic motion models provided with Vega, users can create a series of  control points called that describe a predetermined path, these waypoints are controlled with vgPath and are stored on disk in a binary format

    The vgPath and it waypoints can the be use to control motion of certain Vega classes by automatically by traversing the defined path with vgPlayers, vgObserver's, or vgObjects via an attachment to a vgPlayer using a vgNavigator to do the actual motion between and along the described path

    The vgSplineNavigator class API, together with the vgPath class API form the underpinning of the Vega Pathing tool. The Vega Pathing tool provides an easy-to-use capability for users to place control points and set vgNavigator parameters without writing any code. Vega features both linear and vgSplineNavigators  describe how the control points are traversed

    See vgPath  and the Vega Programmers Guide for further details.

    See vgNavigator  and the Vega Programmers Guide for further details.

* 23 * What is a vgNavigator images/vcr_up.gif

    The vgSplineNavigator class API, together with the vgPath class API form the underpinning of the Vega Pathing tool. The Vega Pathing tool provides an easy-to-use capability for users to place control points and set vgNavigator parameters without writing any code. Vega features both linear and vgSplineNavigators  describe how the control points are traversed.

    a vgNavigator's use a marker table to describe the control points to traverse, these control points may be created using the Vega Pathing tool or through API and through loading vgPath file

    A "marker" is a data structure associated with a control point in a path; the navigator to process this data and perform the actions it specifies during path traversal. The navigator interprets these markers and uses their data to determine how to traverse between two control points or which specific actions to take when a certain control point is reached. Path traversal can be based upon a constant velocity and acceleration, deceleration, or duration.

    See vgNavigator  and the Vega Programmers Guide for further details.

    See vgPath  and the Vega Programmers Guide for further details.

* 24 * What is a vgPicker images/vcr_up.gif


    A vgPicker provides a set of functions that allow the user to pick or select geometry within a Vega Application.

    The vgPicker can be used to pick the following types vgPlayers, vgObjects, vgParts, pfGeodes and pfGeosets. As a vgPlayer is an abstract container class and has no physical presence in the scene-graph thus when a vgPlayer is selected at the pick target all vgObjects attached to the vgPlayer will be picked.

    the vgPicker provides a set of high lighting styles to visually indicate which items have been selected. vgPicker also provides a simple method for transforming and rotating the selected items.

    The vgPicker properties are set and retrieved by the vgCommon API vgProp  and vgGetProp respectively.

    See vgPicker  and the Vega Programmers Guide for further details.

* 25 * What add-ons are available for Vega images/vcr_up.gif


    MultiGen-Paradigm's Vega has several very useful Add-on modules available to extend the functionality of the product: Here a list of those I'm aware of links to their respective data sheets. The add-on modules have to be purchased and require separate licenses to be generated

    I believe that Audioworks and Special effects are now provide a part of the base Vega development package.

* 26 * Were can I download Vegaimages/vcr_up.gif


    MultiGen-Paradigm's Vega and its Module are not currently available online so you cannot download the software from MultiGen-Paradigm or any were else.

    The Vega software and modules have to be purchased directly through MultiGen-Paradigm or on of its distributors, see the How to Buy page at MultiGen-Paradigm's Website for further details and current sales contact information etc.

* 27 * What is Lynx  images/vcr_up.gif


    LynX is an extensible point and click graphical user interface that increases productivity by enabling changes to changes to: application functionality, visual channels, multi-CPU allocation, eye-points, observers, special effects, time of day, system configuration, models, databases, and more at the point of application deployment. Access to 'Active Preview' also allows many settings to be modified, and previewed instantly, without re-starting of the application. LynX supports end-user reconfigurability of delivered systems for non-programmers. Several tools are provided with LynX to help the user quickly define a simulation. These include:

    An Object Viewer for examining individual objects referenced in the Objects Panel

    • An Object Property Editor for viewing and setting attributes of object parts

    • A Scene Viewer for looking at a Vega scene in top-down orthographic or perspective views and for examining coordinates within the scene

    • An Input Device tool for testing and understanding the nature of the input devices defined in the Input Device panel

    • A Path Tool for defining and editing paths along which objects or observers can move, as well as specifying object or observer speed and orientation along segments of those paths


* 28 * What is an ADF file images/vcr_up.gif


    An ADF stands for Application Definition File which is a plain text file

    Lynx is the editor for Application Definition Files. An ADF contains all the information that a Vega application needs at initialisation, as well as some information to be used during run-time.

    A single Vega executable is capable of producing a variety of simulations by interpreting different ADFs. As with any editor, you may create, view, modify, and save these files. From LynX you can launch an application that uses an ADF to preview the results before saving the definition for later use.

* 29 *  Can I edit an ADF Fileimages/vcr_up.gif


    Yes you can edit an ADF file, you can edit the file in any standard text editor, Jot, Nedit, Vi, Emacs etc.

    Although normally you would uses Lynx to edit and create the ADF files.

* 30 * Where is pfflt.himages/vcr_up.gif


    The head file pfflt.h is shipped with SGI Performer and is required to be able to set OpenFlight loader properties and use the OpenFlight file loader directly. The file is found in "Include\Performer\pfdb\pfflt.h", this files is not shipped with Vega for Irix or Vega for NT. MultiGen-Paradigm support  had stopped supplying this to customers, for some reason, I believe that they still do not supply this file.

    The good news is that you can get this file from the SGI Performer package and this is now easier as Performer is free to download from SGI Website for Irix, Windows and Linux. On Windows the file can be found:

    "C:\Program Files\Silicon Graphics\OpenGL Performer\Include\Performer\pfdb"

    Also currently you can get the pfflt.h here

* 31 * Where do I find Open Flight Loader functions and structsimages/vcr_up.gif


    The functions to set and get properties/attributes for  loading OpenFlight files are found in the pfflt.h which is only shipped with SGI Performer


    see FAQ #30 for details on where to get the header files.

* 32 * What is vgCommon images/vcr_up.gif


    Many functions in Vega share a common API. These common function are normally referred to as vgCommon functions and will operate on any Vega instance, note that not all of the vgClass instances implement all functions. See the individual vgClass man pages for which vgCommon functions are support.

    Vega is a modular library, meaning each set of functions that perform a specific task share a common control structure. All the information necessary to complete the task is contained in the control structure.

    No global or static local variables are used. This allows the user to instance as many Vega classes as necessary. Each class shares many similar variables with all other classes. A single API is used to access these variables for all Vega class instance.

    See vgCommon  and the Vega Programmers Guide for further details.

* 33 * What functions can I find in vgCommon images/vcr_up.gif


    The following vgCommon functions are grouped together and are shared between many of the vgClasses, note that not all of the vgClass instances implement all functions. See the individual vgClass man pages for which vgCommon functions are support.

    The following functions are defined in vg.h

    • int        vgGetType( vgCommon *handle );
    • void       vgName( vgCommon *handle, const char *name );
    • void       vgGetName( vgCommon *handle, char *str );
    • int        vgGetName vgCommon *handle );
    • void       vgDelete( vgCommon *handle );
    • void       vgUpdate( vgCommon *handle );
    • ERR        vgProp( vgCommon *handle, int which, float prop );
    • float      vgGetProp( vgCommon *handle, int which );
    • ERR        vgClassProp( vgClassId classid, int which, float prop );
    • float      vgGetClassProp( vgClassId classid, int which );
    • ERR        vgAttrList  (vgCommon *handle, int which, void *attr, int nattr)
    • ERR        vgGetAttrList( vgCommon *handle, int which, void **attr, int *nattr)
    • void       vgCopy( vgCommon *dest, vgCommon *src );
    • void       vgPrint( vgCommon *handle );
    • void       vgUserData( vgCommon *handle, void *data );
    • void *     vgGetUserData( vgCommon *handle );
    • void       vgWriteADF vgCommon *handle, int token, FILE *fp );
    • void       vgAddFunc( vgCommon *handle, int which, vgCallback *func, void *data );
    • void       vgDelFunc( vgCommon *handle, int which, vgCallback *func, void *udata );
    • ERR        vgSnapshot( vgCommon *handle );
    • ERR        vgDetach( vgCommon *handle );
    • ERR        vgReattach( vgCommon *handle );
    • void       vgAddClassFunc( vgClassId classid, int which, vgCallback *func, void *data );
    • void       vgDelClassFunc( vgClassId classid, int which, vgCallback *func );
    • void       vgInitClass( vgCommon *handle, vgCommon *src );
    • void       vgAddClass( vgCommon *handle, vgCommon *refhandle );
    • vgCommon * vgGetClass( vgCommon *handle, int type, int idx );
    • int        vgGetNumClass( vgCommon *handle, int type );
    • void       vgRemClass ( vgCommon *handle, vgCommon *refhandle );

    See vgCommon and the Vega Programmers Guide for further details.

* 34 * What is Performer images/vcr_up.gif

    from Silicon Graphics (SGI) is a powerful and comprehensive programming interface for developers creating real-time visual simulation and other performance-oriented 3D graphics applications. It simplifies development of complex applications used for visual simulation, manufacturing, simulation-based design, virtual reality, scientific visualization, interactive entertainment, architectural walk-through, and computer-aided design.

    Performer provides the advanced features and innovative techniques that enable you to achieve peak performance and make optimal use of system capabilities and sophisticated 3D graphics features. It gives you the capability to scale easily to multiple processors and multiple graphics pipelines, deploy to a wide range of systems and price points, and be ready-made for the graphics systems of today and the future.

    Performer has be re-branded by SGI to OpenGL Performer. Performer is considered by man as the Granddaddy of the Scene-Graph and may of the feature now commonplace in other Scene-Graphs were first pioneered in Performer. Originally Performer was only available on Irix and was used as a tool to show the power of the SGI big iron such as the Infinite Reality series of machines.

    Vega Irix, used SGI Performer as its Scene-Graph and significantly provide added value, many new features and enhancements and ease if use on top of Performer

* 35 * What version of Performer does Vega Support images/vcr_up.gif

    Vega for Irix only supports Performer 2.2x. and requires Irix 6.2 or greater ( Although some programs things such as MultiGen-Paradigm's Flight IG product supports a later version of Performer

* 36 * Can I use Performer on Windowsimages/vcr_up.gif

    No you cannot use SGI Performer for windows with Vega NT as you would use SGI Performer for Irix with Vega For Irix.

    Vega NT was released long before SGI released Performer for windows, and due to high customer demand MultiGen-Paradigm ported their Excellent Vega product line to Window's in the process they had to develop their own Scene-Graph, which is called Jolt.

    Note that Jolt is not directly exposed to the Vega NT user, instead MultiGen-Paradigm product a performer emulation wrapper layer around jolt. This was required in order to allow their customer to port the Irix based application to windows

    Note that not all Performer function are support see  Functions supported for which Performer functions are supported in Vega NT

* 37 *  What is Flight IG images/vcr_up.gif

    FlightIG is MultiGen-Paradigm's outstanding and industry leading Image Generation(IG) application based on Vega, and is optimized for fast jet and helicopter flight simulation using complex geo-specific databases.

    MultiGen-Paradigm's FlightIG is more than an advanced application through it is a complete turn key solution of Software, Hardware, support, customer engineering and complex geo-specific database generation

    See the MultiGen-Paradigm's FlightIG page as part of the Visual Simulation services

* 38 * What is Jolt images/vcr_up.gif


    Jolt MultiGen-Paradigm's  internally developed Scene-graph that is behind the scene on Windows NT.

    Note that Jolt is not directly exposed to the Vega NT user, instead MultiGen-Paradigm product a performer emulation wrapper layer around jolt. This was required in order to allow their customer to port the Irix based application to windows

    Note that not all Performer function are support see  Functions supported for which Performer functions are supported in Vega NT

* 39 * How can I improve real-time performance images/vcr_up.gif


    Here's a list of some  things that you can do that might help you to get the best performance out of your real-time 3D simulation:


    • On Windows run login and as administrator or grant your account administrator rights

    • On Unix systems such as Irix or Linux run as Root

    • If you cannot run as root then use  account with root privileges for your application

    • Run your application in Full-screen and border less, windowed applications do run slower than full screen applications epically on MS Windows

    • Run only one Window per pipe if at all possible, if more than one visual I required then it better to use multiple channels rather than multiple window

    • On Multi - processor systems lock your processes on to a process and give them non-degrading priorities were possible

    • Run your application in APP CULL DRAW mode, this will normally give better performance than APP+CULL+DRAW mode even on single Processor systems

    • Only run your application on the simulation system

    • Do not run multiple graphics programs on the same pipe as the graphics context switching is expensive

    • Run the release build of the application, the release build will generally run faster than your debug builds

    • Shutdown or close all none essential background services or programs( these can be the cause of those hard to find sudden frame drops)

    • Again shutdown or close any clocks, gr_osview, or other tools that may wake up and draw themselves

    • Close any messenger servers such as MSN or Yahoo

    • Close your virus checker if your able to ( or at least exclude the files in you Sim from the scan)

    • When multi-processing, make sure the executable is on a local file system.

    • Try to make sure than any swap space, arena space or temp space is on a different drive from your data

    • Make sure that you make the swap space or page file large enough

    • Store your data on local file system if possible rather than network drives

    • Convert you models to a fast loading binary format such as pfb, vsb or fst etc.

    • Convert your textures to compressed format such DDS if your graphics card supports compressed textures

    • Pre-load your textures if possible

    • Pre-load your models where possible

    • Reduce the ratios for the near and far clip plane use, that is use a largest near clip plane that you can, this will help increase the Z-buffer resolution

    • Avoid sub-facing or decals polygons , cut them in polygons are cheaper to draw these days

    • Keep textures to a power of 2 ( OpenGL 1.x requires this) and scaling will occur in some run-times which is time consuming and can distort you textures

    • Keep texture size as small as possible

    • Don't exceed 512x512 for texture size currently cards struggle to move larger size texture through the pipe

    • Combine textures together if possible 1 512x512 is better than 20 32x32 images

    • Aim to keep the number LOD nodes to a minimum (especially for APP/CPU bound applications )

    • Keep the number DCS/DOF nodes to minimum ( especially for APP/CPU bound applications )

    • Do make sure that you flatten and clean you 3D models ( You should do this as pre process to a fast binary format)

    • Don't flatten and clean models during while running your application, do this as an offline - process on you models

    • In your 3d models create a deep hierarchy rather than a flat

    • Make sure you models contain no none-planar or co-plane polygons

    • Use textures create the look of detail rather than using polygons

    • On Systems that support it use multi-textures to help provide more realism in lighting etc

    • Add system memory the more the better 1gb is an absolute minimum these days  2gb is better and  more is great (memory is cheap)

    • Graphics memory get the best card you can 256mb minimum

    • Make sure your system has a good  fast CPU and fast mother board and fast bus speeds

    • Multi-CPU's for Vega/Vega Prime and Performer really improves and shows their prowess when it comes there use of multi-threads and multi-processes

    • Use fast and local hard drive, faster the better

    • Make sure and Defrag your hard drives

    • Make sure you have the latest graphics driver ( although some times you may need to step back early versions as new version can be bad)

    • You will want to turn "Synchronise to Vertical" retrace off on your graphics card/ driver (if this is on you can only run as fast as the vertical retrace or you monitor)
      Avoid using certain OpenGL functions such as glReadPixels as frame buffer reads are typically an expensive operation

    • Disable C++ exceptions in your compiler options this could get as much as 15% improvement

    • Try to keep the field of views (FOV) as small as you can  and the far clip as close as possible ( if you need a large FOV you might want to consider multiple channels and use separate machine with distributed render.

    • If you need multiple channels on PC platforms consider using a single machine for each channel and use something like MultiGen-Paradigm's Distributed rendering module

    • Keep the number of Light sources to a minimum, use modeling and multi-texture techniques to provide lighting effects such as shadow and depth etc.

    • Try to avoid deleting large number of objects , if possible remove objects from the scene and keep in memory if they be needed again or use a deferred
      deletion scheme

    • For very large area databases you should be using a paging mechanism such as Vega's LADBM( Large Area Database Management ) along with the use of Virtual texturing or Clip texturing mechanism

    • Avoid IO ( printf , cout etc ) were possible on windows create a non-console application, IO its expensive its slow and causes context switching

    • Try to share material and colour state were ever possible ( Pre-process your files and again save in a fast binary format)

    • Try to  create geometry that can use meshing such triangle strips or meshes ( Pre-process these and again save in a fast binary format)

    • Make sure you are not generating any floating-point exceptions in your code, these can be really expensive

    • Put only latency-critical tasks between the applications AppSync() and drawframe() calls

    • See you run-time API documentation for specific things you can do to improve performance with that API

    • Keep to a minimum the use of Isectors each frame, these are quite expensive

    • Use an Asynchronous process to provide the updates for the Isector

    • Use an Asynchronous process for any input devices

* 40 * What is Phase Lockingimages/vcr_up.gif


    If a Vega or Vega Prime based application is running in locked phase, the drawing process will swap buffers only on frame boundaries.  A benefit of locking is that such pipelines are self regulating so synchronizing two Pipes together is simple, even across different machines. 


    Another benefit is that latency is minimized and predictable.  The major drawback is that if a channel takes slightly longer than a frame to render (it has 'frame-extended'), then an entire frame is skipped rather than a single vertical retrace period. 


    However, if minimal distraction is crucial, the phase can float so that buffer swapping may happen on non-frame boundaries.  In this case it is not guaranteed that the windows on pfPipes will swap together; they may get out of phase resulting in inconsistent images if the displays are  adjacent and are displaying the same scene.

    The difference between locking and floating  becomes less apparent with increasing frame rates.  At a rate equal to the vertical retrace rate, there is no difference.  Also, if the pipes do not actually 'frame extend', then there is no difference.


    Applications which do not require a fixed frame rate may use Free Run or Limit.  Free Run essentially disables the fixed frame rate mechanisms and will cause the application to run at its rendering rate so it slows down when rendering complex scenes and speeds up when rendering simple scenes.  In this case, the frame rate specified by pfFrameRate no longer affects the system frame rate but is still used to compute system load and stress.


    Additionally, if the APP, CULL, or DRAW stages are in separate processes, they will run in lock step and each stage will wait for the downstream stage to get its results and likewise, downstream stages wait for upstream stages to finish.  This is the desired mode if you need to be sure that every APP frame is actually drawn and that the APP can not spin ahead of the draw is slow and extends past its goal frame time.

    Limit is equivalent to Free Run  except that the application can go no faster than the frame rate specified by setting the desired Frame Rate although it may go slower.  Thus fixed frame rate behaviour is achieved if the time required to process a frame never takes longer than that specified by target Frame Rate.

* 41 * What are "pfb/pfa" files images/vcr_up.gif


    "pfb" and "pfa" are database file formats provided with OpenGL Performer. Performer provides both loaders and writers for this format

    "pfb", is binary database format, this is basically a binary dump of the scene-graph of a model or node, it is extremely fast to load.

    The general practice is to convert you 3d models to pfb for your finished application

    "pfa" is an ASCII text format which is human readable, this is very slow loading and is generally used for debugging purposes


* 42 * How do I Create "pfb" file images/vcr_up.gif


    "pfb" and "pfa" can be created using the OpenGL Performer pfconv tool or through code using pfdStoreFile, any file that OpenGL Performer can load can be converted to the "pfb" or "pfa" formats.

    Alternatively you can use the Vega supplied tool topfb on Irix and objconvert on Windows  which will convert a single file or convert all files defined within an ADF file.) (on windows you get "fst" files not "pfb" files)

* 43 * Can I use  "pfb/pfa" files in Vegaimages/vcr_up.gif


    Yes can  use  "pfb/pfa" files in Vega Irix, as well as all the other formats that supported directly supported by OpenGL Performer

* 44 * What are "fst" filesimages/vcr_up.gif

    "fst" files are MultiGen-Paradigms proprietary binary database format, which  is basically a binary dump of the Vega NT scene-graph of a model or node, making it extremely fast to load.

    The general practice is to convert you 3d models such as OpenFlight "flt" to "fst" files

    "fst" files are created using the objconvert utility program supplied with Vega NT

* 45 * How do I use objconvert  images/vcr_up.gif

    objconvert [[-A adf | -g geofile] -s suffix] | [-f] [-i]

    • -A  : Convert all objects in specified ADF;
    • -g : Convert only the specified geometry file;
    • -s  : convert all objects in ADF to object with suffix
    • -f   : print supported formats
    • -i  : inline textures
    • -: print this help message


* 46 * Are "pfb" files backwards/forwards compatible images/vcr_up.gif


    Due to the binary nature of the "pfb" the files they can easily be come none compatible with newer versions of OpenGL Performer, requiring for the "pfb" files to be re-generated

* 47 * Are "FST" files backwards/forwards compatible  images/vcr_up.gif


    Due to the binary nature of the "fst" the files they can easily be come none compatible with newer versions of Vega NT, requiring for the "fst" files to be re-generated

* 48 * Should I keep my original files after converting to "pfb" or "fst" images/vcr_up.gif


    Absolutely yes you MUST keep you original model sources files you used to create your "pfb" or "fst" files. Due to the binary nature of the "pfb" and "fst" files, they  can easily be come none compatible with newer versions of Vega NT and OpenGL Performer, requiring for the "pfb" files to be re-generated

* 49 * How do I build a static Vega NT Application images/vcr_up.gif

    To build a Vega NT application statically you need to make sure your Visual Studio build settings include the following:

    C++ General/ Preprocess Definitions

    for MFC based application



    for Console based application



    Link, General Object/Library Modules

    dsound.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib glaux.lib wsock32.lib winmm.lib dxguid.lib msacm32.lib comctl32.lib netapi32.lib psVTexS.lib

    Link, Input Object/Library Modules

    dsound.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib glaux.lib wsock32.lib winmm.lib dxguid.lib msacm32.lib comctl32.lib netapi32.lib psVTexS.lib

    Other Libraries

    Add any other libraries you need to link in on to this line as well, Note Vega static libraries have the 'S" for static. 

    The only none static Vega libraries you should need is the xvs.dll the other should link in above.

    Then you may need various Windows/MFC DLL's such as MsvcPxx.dll, MSVCRT.DLL, MSVCRTD.DLL,MSVCRTxx.DLL this will depend on what is on the target system version

* 50 * Does Vega Support Terrex's Terra Page format images/vcr_up.gif


    Unfortunately no neither Vega for Irix nor Vega NT have direct support for the Terra Page file format.





Copyright 2004-2006 Gordon Tomlinson  All Rights Reserved.

All logos, trademarks and copyrights in this site are property of their respective owner.