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.
|
||
|
||
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 |
||
|
||
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. |
||
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 | ||
Vega is available in two main configuration flavours:
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. | ||
| ||
| ||
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. |
||
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/ | ||
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. |
||
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. | ||
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. | ||
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. | ||
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. | ||
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:
There are two more complex motion models provided are:
There is one further Motion model supported:
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. | ||
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. | ||
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. | ||
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. | ||
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. | ||
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:
System components that may be referenced by an environment include:
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. | ||
Currently environmental effects that are supported include:
See vgEnvFx and the Vega Programmers Guide for further details. | ||
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. | ||
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. | ||
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. | ||
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. | ||
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. | ||
I believe that Audioworks and Special effects are now provide a part of the base Vega development package.
Also see Vega Modules root page and contact MultiGen-Paradigm directly for prices etc. | ||
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. | ||
An Object Viewer for examining individual objects referenced in the Objects Panel
| ||
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.
| ||
Although normally you would uses Lynx to edit and create the ADF files. | ||
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 |
||
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. |
||
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. |
||
The following functions are defined in vg.h
See vgCommon and the Vega Programmers Guide for further details. |
||
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 |
||
|
||
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 |
||
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 |
||
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 |
||
|
||
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.
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. | ||
"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 |
||
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) |
||
Yes can use "pfb/pfa" files in Vega Irix, as well as all the other formats that supported directly supported by OpenGL Performer |
||
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 |
||
| ||
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 |
||
|
||
48 Should I keep my original files after converting to "pfb" or "fst" |
||
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 |
||
C++ General/ Preprocess Definitions for MFC based application _PSI_STATIC_LIBS,WIN32,NDEBUG,_WINDOWS,_AFXDLL
for Console based application _PSI_STATIC_LIBS,NDEBUG,VERSTR=\"3.5\",_CONSOLE,_MBCS,WIN32
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 |
||
|
||
|
||
© Copyright 2004-2006 Gordon Tomlinson All Rights Reserved. All logos, trademarks and copyrights in this site are property of their respective owner. |