Vega  FAQ's FAQs 101 thru 150

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

     

  1. What Multi-threading support does Vega Provide
  2. What are the Differences between Vega for Irix and Vega NT
  3. What Threads or Processes does Vega Create
  4. What Process/Thread combinations are in Vega
  5. Were are the Vega Code Examples
  6. Are there any online Vega Code Sources or Examples
  7. Were are the Vega Man Pages for Windows
  8. Does Vega Support Sound
  9. What is Vega Audio
  10. Does Vega support DIS
  11. Does Vega support HLA
  12. What is DIS
  13. What is HLA
  14. How can I get the Time information in my Application
  15. Can I control the simulation time
  16. What is the Difference between a vgPlayer and vgObserver
  17. Why do I only get one key press event with vgGetWinKey()
  18. How can I tell when my sound has Finished with vgAudio
  19. What is a Z Isector
  20. What is a ZPR Isector
  21. What is a HAT Isector
  22. What is a Tripod Isector
  23. What is a LOS Isector
  24. What is a BUMP Isector
  25. What is a XYZPR Isector

 

  1. What is a Volume Isector
  2. Does Vega support OpenFlight version 15.8 files
  3. Does Vega read OpenFlight Light Sources
  4. Does Vega Support TIFF images
  5. What image/texture formats does Vega Support
  6. How can I convert my Textures to Vega supported Formats
  7. Why can't I see my Gif Textures in Vega
  8. How can I get the position of my Navigator
  9. Why won't my vgObject change Position when I set a new position
  10. Why can't I change the Scale of my vgObject
  11. How Can I set the Isector mask on Part of my Object
  12. Can I use the OpenFlight API in Vega
  13. Why can I not change the Fog properties in my Vega App
  14. Are Meshes supported in Vega
  15. How can I pause a vgNavigator
  16. How can I change the colour of vgNavigator's path
  17. How can I switch from a Motion model to a Navigator
  18. How can I switch from a Navigator to a Motion Model
  19. Why do Navigator use so much Memory
  20. Why does my frame rate drop when I change my Navigator
  21. How do I attach a vgObject to a vgNavigator
  22. How do I toggle the render of a vgNavigator's path On or Off
  23. How can I set the Speed of a Particular Control Point in a vgNavigator
  24. How can I set a constant overall speed on a vgNavigator
  25. How to Retrieve the Speed of a vgNavigator

Faq's

 

* 101 *  What Multi-threading Support does Vega Provide up

     

    a Vega  program is a single Windows process that has multiple threads in its context.  A thread is the basic unit to which the operating system allocates processor time. To maximize performance on a given machine, the user can configure Vega to run in a variety of multithreading modes.

    The three main Vega threads  application (APP), CULL, DRAW  can be performed as a single thread, as two threads in any combination, or as three separate threads. You may also select to have a separate thread for intersection processing, a thread for database loading, and another thread for light point calculations. The database loading thread is only needed when paging geometry using Large Area Database Management (LADBM), or when doing it yourself.

    To select a multithreading mode, use vgProp to set VGSYS_MPMODE to one of the following:

     

    • VGSYS_MPDEFAULT Let the system determine the best configuration for CPUs on the target machine. In this case, you may not get an intersection or database thread, even though you request it.

    • VGSYS_MP0 [DEFAULT] one single thread for app, cull, and draw.

    • VGSYS_MP1 App and cull in one thread, draw in a separate thread.

    • VGSYS_MP3 Two threads, one for app and the other for both cull and draw.

    • VGSYS_MP4 Three threads, one for app, one for cull, one for draw

     

    The user may control which processors (CPUs) the threads run on. Draw CPUs and priorities are set as properties of a window. Cull CPUs and priorities are set as properties of a channel. Light point CPUs and priorities are also set as properties of a channel.

    Set the app CPU by setting the vgSystem property VGSYS_APPCPU to the appropriate CPU number. The CPU numbers are in the range 0 to the number of CPUs on the system minus one. The default value -1 means no particular CPU is assigned, i.e., the operating system will determine which CPU to use each time that thread runs. 

    If a CPU number is specified that does not exist on the particular machine that the Vega application is running on, a warning is logged, and it is treated as if a value of -1 was specified.

    • The user may also control the scheduling priority of the thread. The priority of each thread is determined by the following criteria:

    • The Vega Priority Class of the Vega process

    • The Vega Priority Level of the thread within the Vega Priority Class of the Vega process

    • The Priority Class and Priority Level are combined to form the base priority of a thread.

    • The Priority Class of the Vega process is a value in the range 32-39, with 32 being highest

    Vega process priority classes.

    Vega Priority
    Class

    Corresponding Windows 
    Priority Class

    Meaning

    31-32

    REALTIME_PRIORITY_CLASS 

    Specify this class for a process that has the highest possible priority.

    The threads of the process preempt the threads of all other processes, including operating system processes performing important tasks.

    For example, a real-time process that executes for more than a very brief interval can cause disk caches not to flush or cause the mouse to be unresponsive. 

    33-34

    HIGH_PRIORITY_CLASS 

    Specify this class for a process that performs time-critical tasks that must be executed immediately. The threads of the process preempt the threads of normal or idle priority class processes. 

    Use extreme care when using the high-priority class, because a high-priority class application can use nearly all available CPU time.  
     

    35-36

    NORMAL_PRIORITY_CLASS 

    Specify this class for a process with no special scheduling needs. 

    37-39

    IDLE_PRIORITY_CLASS 

    Specify this class for a process whose threads run only when the system is idle. The threads of the process are preempted by the threads of any process running in a higher priority class.

     
    The Vega System property VGSYS_VEGAPRI is used to select the Vega  process priority class.  Note that this property is only available under VegaNT , it is not supported and does not exist for Vega for Irix.

    The Vega thread Priority Level has a range of 32 to 39, with 32 being the highest. The table below explains the meanings of the Vega thread priority level values. Refer to the sections on SetThreadPriority and Scheduling Priorities in the WIN32 Function manual for more information on the thread priority levels.
     

    Vega thread priority levels.

    Vega  priority level

    Corresponding Windows thread
    priority level

    Meaning

    32

    THREAD_PRIORITY_TIME_CRITICAL

    Indicates a base priority level of 15 for IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, or HIGH_PRIORITY_CLASS processes, and a base priority level of 31 for REALTIME_PRIORITY_CLASS processes

    33

    THREAD_PRIORITY_HIGHEST

    Indicates 2 points above normal priority for the priority class 

    34

    THREAD_PRIORITY_ABOVE_NORMAL

    Indicates 1 point above normal priority for the priority class

    35

    THREAD_PRIORITY_NORMAL

    Indicates normal priority for the priority class

    36

    THREAD_PRIORITY_BELOW_NORMAL

    Indicates 1 point below normal priority for the priority class

    37-39

    THREAD_PRIORITY_LOWEST

    Indicates 2 points below normal priority for the priority class


    Note:

    For cross-platform compatibility, the numerical values used to specify the Vega priority classes and thread levels differ from the actual numerical values of those items used by Windows. Vega NT will automatically translate from the above numerical scheme to the correct values required by Windows

 

* 102 *   What are the Differences between Vega for Irix and Vega NT   up

     
    One of the main design goals for the Windows version of Vega was to help provide an easy migration of existing Vega applications on Irix over to the Vega NT and a PC platform, which Vega NT did achieve. Because of Vega's Irix heritage, several aspects of Vega will be familiar to users with Unix experience

    Some of the Irix conventions and methods may be slightly strange to experienced Windows users.  

    For examples in the case of VGWIN_DRAWPRI, priorities in Vega are still specified using a Unix-like scheme, where a numerical priority of 30 is highest priority, and larger numbers mean lower priorities. However, Windows uses a completely different numbering scheme for priorities. In cases like this, Vega NT  uses the original, mapping the Unix-like priorities to comparable Windows priorities behind the scenes.

    Another difference between Vega on Irix and Vega NT is apparent from the VGWIN_DRAWPRI example. On an Irix , Vega and OpenGL Performer will spawn separate Processes to split up the work in a simulation application.

    Under Vega NT thee separate processes are separate threads running under a single Vega NT Process. While in most cases the LynX GUI has been modified to reflect this change, the names of properties have not been changed, and so may seem slightly off in some cases.

    Vega for Irix  is layered on top of Irix's OpenGL Performer; In the Performer library, all data structures and routine names begin with a lower-case pf. The purpose of some Vega API calls are to return pointers to scene graph nodes so that user code can directly manipulate them.

    For example, the Vega API call vgGetDSPfObj  returns a pfNode* pointer. Vega NT has type deffed pfNode to be an appropriate data structure in the Jolt scene graph management library. There are many examples of where Vega NT defines a data structure similar to one defined in the Performer library, and for ease of porting, has type deffed this data structure to have the same name as the corresponding Performer data structures

    On Windows the  coordinates are specified the following the Performer convention, with the Y coordinate measured from the bottom of the screen, while Windows specifies Y coordinates from the top of the screen.

    When specifying directories or file names forward slashes can be used in anyplace that a backslash is normally used. Vega NT will translate to backslashes when needed

    When running Vega on an Irix  system, logging messages are sent to stdout, and  appear in the shell that started Vega.

    Under Vega NT, if the Vega application is a console application then the logging messages will appear on the console.

    However, Windows applications are not required to have a console. For "normal" Windows applications or MFC-based applications, Vega NT provides some additional API calls to create a console window for the logging messages (see vgWin.h)
     

* 103 *    What Threads or Processes does Vega Create  up


    Vega can create the following processes or threads listed below. Depending in your system you may have multiple draw.cull and isector processes or threads

    • APP  Generally where the applications code moves objects, triggers actions, etc
    • CULL Decides which geometry is visible in the viewing frustum
    • DRAW  Renders the visible geometry
    • ISECT Calculates intersections with the scene graph geometry
    • DATABASE Loads new geometry in from disk files
    • LPOINT Does the calculations necessary for rendering light points
    • INPUT Reads the Input devices Asynchronously


    On Irix OpenGL Performer will create an extra 2 processes

    • CLOCK The high performance simulation clock
    • COMPUTE An Asynchronously that can be used for expensive calculations

       

* 104 *   What Process/Thread combinations are in Vega up


    You can configure Vega to run in a variety of multi-thread/Process modes. There are three primary processes/threads in Vega: APP (application), CULL, and DRAW. These threads may be performed as a single thread or as a combination of the three. Vega provide the following process/thread combinations:

    Default

    Allow the system to determine optimum thread allocation

    Single Thread

    Single thread model

    App+Cull, Draw

    Application and Culling is in one thread, Draw is in another thread

    App, Cull+Draw

    Application is in one thread and the Cull and Draw in another thread

    App, Cull, Draw

    Three separate threads

    Display List Draw

    Single Thread model, but a display list is generated for the Draw function (Irix only)

    Overlapped Cull + Draw

    Three separate threads; Cull and Draw threads are overlapped (Irix only)

 

* 105 *   Where are the Vega Examples up

     

    Vega ships with set of Example programs and ADF's that are described in the Vega Programmers are typically installed to:

     

    • On Windows  C:\Program Files\Paradigm\Vega\Sample\Vega\pguide\
    • On Irix /usr/local/PSI/sample/vega/pguide

     

    Samples for the Vega Modules are typically installed to:

    • On Windows  C:\Program Files\Paradigm\Vega\Sample\vgXXXX  

      where XXX is the module e.g. C:\Program Files\Paradigm\Vega\Sample\vgLADBM

    • On Irix /usr/local/PSI/sample/vega/pguide/module

      e.g. /usr/local/PSI/sample/vega/pguide/ladbm

     

    Various miscellaneous sample and demo applications are also installed with Vega and can be found in:

    • On Windows  C:\Program Files\Paradigm\Vega\Sample
    • On Irix /usr/local/PSI/sample/

     

    Further MultiGen-Paradigm support department has many many good and varied sample code and examples of programming with Vega. If you have a specific need then contact them and they may be able to supply you with a example or offer help getting you started in solving your problem ( Don't expect them to write your code for you through, that's not their job or what support is for)

 

* 106 *    Are there any online Vega Code Sources or Examples  up


    There are not many online resources for Vega in fact there are next to known as it is a very specialised API and market. A quick search of the Web will reveal what is out there

    MultiGen-Paradigm currently have a user forum which has a lot of posts with solutions and answers to many question and some code examples. I Highly recommend that you Search the forum for previous answers etc.

    There are the several code examples that I have written available on this site, Please note if you ask me or other  to write code don't be offended if I ask for payment, I make my lively hood out of writing code, and I'm afraid  I don't work for free. I'll gladly discuss yo needs if you need code written see my Professional Services pages

     

* 107 *    Where are the Vega Man Pages for Windows  up

     

    Man pages are a part of the Unix help system. Man pages are not generally available in there native format on Windows based system.

    Vega NT ships with the man pages converted to HTML format and should be install in the C:\Program Files\Paradigm\Vega\doc\Man directly.

    Unfortunately these are out dated Man pages not having been update from Vega NT 3.5. before I left MultiGen-Paradigm updated the Man pages but these were not distributed with the product for various reason.

    But the good news is that the updated HTML pages are currently available from the MultiGen-Paradigm document center for downloading

    Also these updated Man pages are currently available on from this site in HTML format

     

* 108 *    Does Vega Support Sound up


    Yes Vega for both Irix and Windows has support for  3d Audio spatial sound through the Vega Audio2 Module. Originally this was sold as a separate module, how  today Vega Audio is shipped as part of the Base Vega Product ( Note it is still a Vega module and not part of the Kernel)

     

* 109 *  What is Vega Audio up


    Vega Audio is an add-on module for the Vega, which seamlessly integrates the Vega product providing hi-fidelity audio simulation:

    • Allows sound triggering and releasing options based on the state of visual entities. For example, you can have a sound trigger automatically if a vgIsector hits a specific portion of your terrain.
    • Allows the user to vary the sound pressure level (SPL), pitch bend (PBEND) or low pass filtering of a sound based on the physical state of visual entities. For example, you might want to vary pitch bend with the velocity magnitude of a vgObject or vgPlayer to simulate an engine sound.
    • Provides the ability to read sound beads out of MultiGen Open-Flight files at run time.
    • Provides the ability to graphically attach sounds to Vega objects or parts of objects.
    • Provides the ability to specify globally heard environmental sounds.

       

* 110 *    Does Vega support DIS up



    Yes Vega does support DIS which is an acronym  Distributed Interactive Simulation. Vega support DIS through its Optional vgDIS/HLA add-on module

    For further details  on MultiGen-Paradigm's DIS support see the MultiGen-Paradigm vgDIS/HLA Datasheet
     

* 111 *  Does Vega support HLA  up

     

    Yes Vega does support HLA which is an acronym for High Level Architecture. Vega support DIS through its Optional vgDIS/HLA add-on module

    For further details on MultiGen-Paradigm's HLA support  see the MultiGen-Paradigm vgDIS/HLA Datasheet
     

* 112 * What is DIS  up

     

    DIS is an acronym  Distributed Interactive Simulation note that DIS is being replace by HLA and as such is regard as being depreciated by many

    The availability of increasing computer power, causes the DoD to view integrated electronic battle spaces as a feasible and cost-effective method of performing these functions. One approach to creating an electronic battle space is the DIS effort.

    The chief objective of DIS is to create real-time, synthetic, virtual representations of warfare environments (DIS 92). These environments are accomplished by interconnecting separate, distributed computers, which are called component simulator nodes. Each node is usually a manned simulator of an individual military unit (tank, APC, etc.). DIS provides flexibility in its ability to reconfigure simulators as necessary to support particular missions or exercises.

    The DIS interoperability properties allow heterogeneous simulators to interact such that interactions are ``seamless' to the participants and allow a ``fair fight.'' This means that when an exercise uses simulators of dissimilar abilities, these dissimilarities do not affect the outcome of the exercise. To support simulator interconnection, DIS also defines standards that allow the various simulators to communicate over local and wide area networks.

    DIS is an extension of the concepts developed by the DARPA Simulation Networking (SIMNET) program. While SIMNET was a successful demonstration of homogenous simulation networking, it was recognized that a method for heterogeneous simulator networking was needed. A heterogeneous simulator network provides for the interaction of simulators developed by various contractors for disparate DoD organizations. 

    HLA, Vega DIS-HLA provides easy-to-use support for the Real-time Platform Reference Federation Object Model (RPR-FOM). This HLA object model was developed by an industry consortium to aid in the transition from DIS to HLA by encapsulating the features of DIS.

    This also facilitates an API that is protocol-independent for the vast majority of operations. The RPR-FOM defines interactions that correspond to DIS PDUs. They can be accessed by your Vega DIS-HLA application in similar fashion to PDUs, using protocol-independent code.

    Vega DIS-HLA also provides routines to receive and easily decode object updates within HLA that correspond to EntityState PDUs in DIS, but are somewhat different in form.

     For further details  on MultiGen-Paradigm's DIS support see the MultiGen-Paradigm vgDIS/HLA Datasheet

 

* 113 *  What is HLA up


    HLA  is an acronym for High Level Architecture.  (Note that  HLA is replacing DIS)

    The HLA was developed under the leadership of the Defense Modeling and Simulation Office (DMSO) to support reuse and interoperability across the large numbers of different types of simulations developed and maintained by the DoD. The HLA Baseline Definition was completed on August 21, 1996. It was approved by the Under Secretary of Defense for Acquisition and Technology (USD(A&T)) as the standard technical architecture for all DoD simulations on September 10, 1996.

    The HLA was adopted as the Facility for Distributed Simulation Systems 1.0 by the Object Management Group (OMG) in November 1998 and updated in 2001 to reflect the changes resulting from commercial standardization of the specification under the IEEE.

    The HLA was approved as an open standard through the Institute of Electrical and Electronic Engineers (IEEE) - IEEE Standard 1516 - in September 2000. In November 2000 the Services and Joint Staff signed the HLA Memorandum of Agreement identifying the HLA as the preferred architecture for simulation interoperability within the DoD

    For further details on MultiGen-Paradigm's HLA support  see the MultiGen-Paradigm vgDIS/HLA Datasheet
     

* 114 *  How can I get the Time information in my Application up


    Vega provides several functions for getting simulation times:

    • vgGetTime() will return the time in seconds from when vgInitSys was called.
    • vgGetRunTime() will return the elapsed time since the first frame was drawn
    • vgGetFrameTime() will returns the time between when the first frame was drawn and the last call to vgFrame.
    • vgGetDeltaFrameTime() will returns the time elapsed since the beginning of the current frame and the beginning of the previous frame.

     

    All the above functions return the  time in seconds as  double precision floating point using highest resolution that the system supports.
     

* 115 *  Can I control the Simulation Time  up

     

    Yes you can control the simulation time using pfFrameTimeStamp()

    Typically you would do this when you were creating say a movie or trying to sync different machines. The code sample below shows how to run a simulation at 30hz for 10 Seconds. It does not matter how long it takes to draw the frame, the simulation time is set to be 33ms for each frame (1/30).

     

    Code :

    --

       

      double m_framerate = 30.0;

      double m_frameTime = pfGetFrameTimeStamp();

      double m_frameDelta = 1.0f / m_framerate;  // 30hz

      int    m_numFrame = 10 * m_framerate;

      while( m_numFrame -- >= 0 ) {

          vgSyncFrame();

          pfFrameTimeStamp( m_frameTime );

          m_frameTime += m_frameDelta;

          vgFrame();  

          captureNextScreenImageForAvi( m_numFrame );

          }

       

     

     

* 116 *   What is the difference between vgObserver and vgPlayer  up


    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.

    Basically the vgObserver is you viewpoint/eyepoint in to the 3d scene, see vgObserver  and the Vega Programmers Guide for further details

    While the vgPlayer is used to specify the characteristics of and control dynamic entities and group items. For example when vgObjects are attached to a vgPlayer the vgPlayers position becomes the local coordinate system for the object and the vgPlayer controls the position of the vgObject.

    When the vgPlayers is moved any attached vgObject will also move with respect to the vgPlayers position. See vgPlayer  and the Vega Programmers Guide for further details.
     

* 117 *   Why do I only get one key press on Vega NT with vgGetWinKey up


    When you use vgGetWinKey(...) on Vega for NT the function only will only return one key press. This is a limitation of the windows implementation of vgGetWinKey(...) it only using buffers the last key pressed. In Vega For Irix vgGetWinKey(....) will buffer multiple key presses.

    There is no straight forward work around to the problem for vgGetWinKey(...) on windows. You would have to drop down in to the guts of  windows messaging and intercept the key stroke before they get to Vega.

     

* 118 *  How can I tell if a sound has Finished playing with vgAudio  up

     

    Unfortunately vgAudio and vgAudio works does not provide any API functions, call-backs or message to tell you when a sounds is finished. This is mainly down to the fact that the sound if passed on to the audio hardware and out of the hands of Vega Audio

    I'm not aware of any work around's for this problem. It may or may not  be possible to use the audio hardware to help.

     

* 119  *   What is a  Z Isector  up

     

    The 'Z' (VGIS_Z) isector is a method provided with Vega and is used to compute elevation Z queries. The 'Z' isector defines an internal volume of type segment, which consists of a single line segment. This line segment extends from Z = maximum terrain elevation to the Z = minimum terrain elevation at the current X,Y position of the Isector. The output of this method is the Z value of the highest intersection point at the current X,Y position.

    When the 'Z' isector  is used with a flat earth coordinate systems, the Z coordinate is the value of the point of intersection with the terrain. When using a non flat earth coordinate systems, the you should use a 'HAT' or 'XYZPR' isector method instead of Z to compute elevations as elevation is then a function of x,y,z.

    See vgIsector  and the Vega Programmers Guide for further details on vgIsectors.
     

* 120  *   What is a ZPR Isector up

     

    The 'ZPR' (VGIS_ZPR) isector is a method provided with Vega and can be used to compute elevation as well as the pitch and roll at the point of intersection. This method uses the current heading of the isector to calculate pitch and roll values from the normal vector of the intersected primitive.

    The pitch and roll values returned by the intersection  depend upon the current heading of the isector. The normal of the primitive intersected, along with the isector heading, provides all the information required to determine the orientation at the point of intersection.

    When used with a flat earth coordinate systems, the elevation computed is equivalent to the Z coordinate value of the point of intersection with the terrain. When using non flat earth coordinate systems, use the HAT or XYZPR methods instead of ZPR to compute elevation.

    See vgIsector  and the Vega Programmers Guide for further details on vgIsectors.
     

* 121  *   What is a HAT Isector up


    The 'HAT' (VGIS_HAT) isector is a method provided with Vega which can be used to compute height above terrain. When used with a flat earth coordinate systems, this is equivalent to the difference between the current Z coordinate value of the isector minus the Z coordinate value of the point of intersection with the terrain.

    When used with a non flat earth coordinate systems, the HAT is equivalent to the Euclidean distance between the current location of the isector and the point of intersection.

    Regardless of the coordinate system type used, a positive value for HAT indicates that the isector position is above the terrain surface. A negative value indicates that the isector position is below the terrain surface. Zero means that the isector is "grounded".See vgIsector  and the Vega Programmers Guide for further details on vgIsectors.

     See vgIsector  and the Vega Programmers Guide for further details on vgIsectors.
     
     

* 122  *   What is a TRIPOD Isector  up

     

    The 'TRIPOD' (VGIS_TRIPOD) isector is a method provided with Vega which can be used to orient a moving platform on uneven terrain. It is named tripod, because its construction looks somewhat like the three footed camera tripod stand.

    Three line segments are used to compute intersection points with the terrain. The intersection points, one per line segment, define a plane. Using the current value of heading for the isector position, and the normal to the generated plane, the TRIPOD isector method computes three values, the Z coordinate which is the tripods center, pitch in degrees, and roll in degrees.

     See vgIsector  and the Vega Programmers Guide for further details on vgIsectors.
     

*  123 *   What is a LOS Isector  up

     

    The 'LOS' (VGIS_LOS) isector is a method provided with Vega which can be used to compute "Line Of Sight ranges". For example, a LOS isector can be used to implement a laser range finder, or to decide if point B is visible from point A, and, if not, what is in the way.

     See vgIsector  and the Vega Programmers Guide for further details on vgIsectors.

* 124  *    What is a Bump Isector  up

     

    The 'BUMP' (VGIS_BUMP) isector is a method provided with Vega which can be used to detect collisions with the database. This isector uses six line-segments oriented along the plus and minus x,y, and z body axes defined by the isector's position and orientation.

    This Bump Isector is surprisingly effective. It is based on the idea of "curb feelers". The length of the line-segments are controlled by the three properties VGIS_BUMP_WIDTH, VGIS_BUMP_LENGTH, VGIS_BUMP_HEIGHT which correspond to the line-segments for the x, y, and z body axes respectively.

    In general, this method is expensive compared with the others, and intended to be used more for illustration than for extended use in an application. It is almost always more efficient to use the VGIS_VOLUME method and define your own volume that meets your application's requirements, or to use a combination of the other methods.

    The reason that there are six line segments in this isector, instead of just three, is that the line segments have direction as well as length. Primitive surfaces, such as tri's, quads, or tmeshes that are back facing with respect to the direction of the line segment are ignored. This is done to make the intersection tests more efficient. If your database does not take advantage of backface removal you could possibly reduce your drawing time and intersection time a considerable amount by redesigning your database to utilize backfacing.

    See vgIsector  and the Vega Programmers Guide for further details on vgIsectors.
     

* 125 *  What is a XYZPR Isector up

     

    The 'XYZPR ' (VGIS_XYZPR) isector is a method provided with Vega which can be used with a non flat earth coordinate systems to compute the point of intersection as well as the pitch and roll at that point.

    This isector uses the current heading of the isector to calculate pitch and roll values from the normal vector of the intersected primitive. The pitch and roll values returned depend upon the current heading of the isector . The normal of the primitive, along with the isector heading, provides all the information required to determine the orientation at the point of intersection.

    See vgIsector  and the Vega Programmers Guide for further details on vgIsectors.
     

* 126  *  What is a VOLUME Isector up

     

    The VOLUME (VGIS_VOLUME) isector method is the "roll your own method". Each of the other methods available can be used to support a common database query.

    While the other Isectors can be "extended" by asking for additional results, there are limits to what a each isector method can do.

    There are lots of other methods that could be defined for Isectors. The volume method allows the user to take charge and implement their own intersection method. The user is responsible for defining the volume instance and for enforcing the limits on positioning the volume.

    For example, the user could easily implement a "Z-LOWER" method by creating a volume with one segment, and then only use x,y,z when positioning the isector. The idea behind Z-LOWER is that it would return the elevation of database from a point at or below your current location, never above it.

    This enables the isector to intersect the terrain underneath a bridge, while the Z method, in contrast, would only intersect the terrain atop the bridge. Note that the segment in the volume should be defined to start at (0,0,0) and have direction (0,0,-1) assuming a flat earth coordinate system. The length of the segment in the volume should be the maximum distance that you wish to check below the current elevation.

     

* 127 *  Can Vega Load OpenFlight 15.8 files  up

     

    Yes Vega NT 3.7x and Vega Irix 3.6x should be able to load 15.8 OpenFlight. The OpenFlight loader that is shipped with Vega NT and Vega Irix support OpenFlight version 15.7.

    The caveat on loading 15.8 files is that OpenFlight 15.8 introduced Light Point palettes which means that these will no loaded in to Vega NT or Irix. Note that Creator does off the option of saving 15.8 light points as 15.7 style, consult the Creator on line help for more information.

    Also you might want to check with MultiGen-Paradigm support to see if there might be a new loader for Vega that supports 15.8 files ( unlikely because light point palettes were introduced for Vega Prime compatibility).
     

* 128  *   Does Vega Read OpenFlight Light Sources  up


    The answer to this question is yea and No

    The OpenFlight loader converts OpenFlight light source beads into pfLightSource nodes.

    For Vega for Irix the loader defaults to ignore light sources, this behaviour can be changed in LynX by un-checking the LynX->Channels Panel->Cull Traversal Modes->Ignore Light Sources checkbox.

    While On Vega NT the pfLightSource nodes are not supported by the OpenFlight loader at this time

    Note that in general OpenGL only supports a maximum of 8 dynamic light source beads.
     

* 129 * Does Vega Support TIFF Images  up


    Unfortunately both Vega Irix and Vega NT does not support the TIFF image format, you will need to convert it to supported format

    Support image formats for Vega are listed below

    Image Format

    Vega for Irix

    Vega NT

    int     - SGI Intensity Format

    yes

    yes

    inta   - SGI Intensity Format with transparency

    yes

    yes

    rgb    - SGI color format

    yes

    yes

    rgba  - SGI colour format with transparency

    yes

    yes

    bw    - SGI Black and White format

    yes

    no

    bmp  -  Windows 24bit bitmaps

    no

    yes

    jpg    - Jpeg format

    no

    yes

     

* 130  *  What image formats does Vega support up


    Support image formats for Vega are listed below

    Image Format

    Vega for Irix

    Vega NT

    int     - SGI Intensity Format

    yes

    yes

    inta   - SGI Intensity Format with transparency

    yes

    yes

    rgb    - SGI color format

    yes

    yes

    rgba  - SGI colour format with transparency

    yes

    yes

    bw    - SGI Black and White format

    yes

    no

    bmp  -  Windows 24bit bitmaps

    no

    yes

    jpg    - Jpeg format

    no

    yes

    ( other formats may be supported if a loader has been written  or through OpenGL Performer on Irix systems)
     

*131  * How can I convert my images/textures to a format Supported by Vega  up


    There are quite a lot of ways that you can convert your images, here's some of them:

    • On Windows Thumbs Plus http://www.cerious.com is an excellent and affordable program which can convert to SGI formats and has a batch command for multiple file, the file can also be resize in the batch process as well.
    • Paint Shop Pro 8 and above supports the SGI Formats
    • Dan Oller wrote an excellent Creator plug-in that will convert all images in a OpenFlight file to supported formats and will also scale the images to be a power of 2 ( see Convert Image 1.2  Windows - Irix )
    • You can do a save as using the Creator  Image editor
    • Creator Ships with SGI format plugin for Photo Shop
    • Irix has several command line tools for converting textures do a 'man -k texture convert' to see what tool uou have installed
    • GIMP will read and write the required formats

     

* 132  *   Why can I not see my GIF Texture in Vega  up

     

    The Gif images format both single frame and animated formats are not supported as an texture format in Vega or OpenGL Performer

    See this FAQ for the supported image formats

     

* 133  *  How can I get the position of my Navigator  up

     

    To get the current position of you vgNavigator, you can simply use vgGetWCSPos(..) you can also get the current position by getting the position of the vgPlayer attached to the vgNavigator again using vgGetWCSPos(..) ;

    See vgSplineNavigator further details on the vgNavigator

     

* 134  *  Why won't my vgObjects Position change when I set a new Position up

     

    There are at least a couple of possible reasons why your vgObject's position will not change when you give it a new position using vgPos

    • Your  vgObject  is attached to a vgPlayer, which will override any positional changes you make to the vgObject, in this case you have to move the vgPlayer not the vgObject
    • You set the objects coordinate property (VGOBJ_CS) to static(VGOBJ_STATIC) which is the default for objects created by code or through LynX, you need to make sure that the object is made dynamic by setting the VGOBJ_CS property to dynamic(VGOBJ_DYNAMIC)

      e.g. vgProp( obj, VGOBJ_CS, VGOBJ_DYNAMIC );
       

    See vgObject man pages further details on the vgObject
     

* 135  *   Why can't I change the Scale of my vgObject  up

     

    This is usually down to your vgObject be declared as a static object, which is the default for a vgObject

    A scale can be specified for a static or dynamic object by setting the VGOBJ_SCALE property to the desired scale using vgProp or by entering a value in the LynX Objects panel.

    For a static object, this scale must be set "before" the object is made as this scale is 'built into' the static object and may not be changed after the object has been made.

    While Dynamic objects may have their scales changed after system configuration, or after the objects are made. Scaling is uniform in X, Y, and Z.

    See vgObject man pages further details on the vgObject
     

 * 136  *  How can I set an Isector mask on Part of my Object  up

     

    You can set the isector mask on parts of your vgObject in a couple of ways:

    • Through code, find your vgObject, find the named vgPart and then set the isector mask for the found vgPart
    • Or you could use the LynX Property Editor Tool to set the isector mask with a GUI based tool. See the Lynx user guide for more details on the Property Editor

       

    See vgObject man pages further details on the vgObject
     

 * 137  *   Can I use the Open Flight API in Vega up


    Yes and no, it all depends on what you want to do with the OpenFlight API

    You cannot use the OpenFlight API in Vega to modify an vgObject that has been loaded  in to memory by Vega, in fact your cannot use the API directly on Vega Instances.

    Now you could use the API to modify an OpenFlight file base on some event, where you load the OpenFlight file using the API, modify the files, then save the file and then you could use Vega to load the saved and modified files. You could possibly create an OpenFlight converter using the API.

    But really you would not use the Creator API with in Vega
     

 * 138  *  Why can I not change the Fog properties in my Vega App up

     


    If your doing something  along the lines of code below you find that it does not effect the fog model as your are expecting

     

    Code :

    --

       

      vgFog* fog = vgGetFog( 0 );

      vgProp( fog, VGFOG_RNGFAR, 50000.0f );

       

     

    The vgFog is actually member of the vgEnvironment, which mean that  have to change vgFog's Properties through the vgEnvironment otherwise the vgEnvironment over writes what your do when you try to set the properties directly. This one of those little hidden Vega idiosyncrasies that can catch up out now and again

    So to change a property of the vgEnvironment's Fog you would do something along the lines of:

    Code :

    --

       

      vgEnv* env = vgFindEnv( "Default" );

      vgProp( env, VGENV_VGIS, 50000.0f );

       

     

    Also note the little difference in naming convention where vgFog use VGFOG_RNGFAR and vgEnv use VGENV_VISRNG for the far range settings of the fog

     

* 139  *  Are Meshes Supported in Vega  up


    Yes Creator Mesh Nodes are supported in Vega NT 3.7x and Vega for Irix 3.6x
     

 * 140  * How do can I pause a vgNavigator up

     

    You can pause a vgNavigator by setting it's VGCOMMON_ENABLED property to Off

    e.g.

    Code :

    --

       

      vgProp( m_nav, VGCOMMON_ENABLED, VG_OFF  );

       

     

    You can restart a vgNavigator after pausing it by setting it's VGCOMMON_ENABLED property to On

    Code :

    --

       

      vgProp( m_nav, VGCOMMON_ENABLED, VG_ON  );

       

     

    See vgCommon and the Vega Programmers Guide for further details on vgProp.

    See vgSplineNavigator further details on properties of a vgNavigator Class
     

 * 141  * How can I change the Color of a vgNavigator's path up

     

    Vega when asked  will render the path of a vgNavigator in Red, Unfortunately in Vega there is now way to change this color, there is no API and now way to access the path and it color descriptor.

    See vgSplineNavigator further details on the vgNavigator Class
     

* 142  * How can I switch from a Motion Model to a Navigator up

     

* 143  * How can I switch from a Navigator to a Motion Modeup

     

*144  *  Why do Navigator use so much memory up

     

    Unfortunately vgNavigator's can consume memory if the Navigator contains a large number of control points and event markers

    This is basically due to the nature of a vgNavigator's and their use of splines, which results in  large amounts of data need to be calculated for each control point and the data that make the path segments between control points this can result in many thousands of vectors even in to the hundred of thousands.

    Vega Navigator  pre-calculates and stores the information that makes up the actual path segments, if you use vgPrintSplineNavigatorCurrentSegment on each segment you will get a feel for the information that a vgNavigator generates and stores

    Unfortunately  there is no real easy work around to the problem with vgNavigator's using large amounts of memory. One way would be to write you own  Pathing and interpolation functions that calculate path segments between controls points on the fly, you still need to store the control points and information on how to traverse between them etc.

    FYI while I was at MultiGen-Paradigm I was involved in the redesign and implementation of Pathing and navigators for Vega Prime. The Navigators that have been implemented in VegaPrime do not suffer from the same memory problems as they calculate the path segments on the fly. The VegaPrime navigator also provides many enhancements over the old navigator and is a quantum leap forward. Much of the enhancement seen in the new Navigator is down to the great talent of one Mr Eric  Hirschorn who translated the new design in to reality.

    See vgSplineNavigator further details on the vgNavigator Class
     

* 145  *  Why does my frame rate drop when I change something on a vgNavigator up

     

    Frame rates can be hit if you make changes to a vgNavigator's path or marker.  Unfortunately they way vgNavigator are designed is that they have to pre-calculate all the path segments between control points. When you make any changes to these or the vent markers Vega marks the navigator as dirty and the whole path has to be rebuilt. The more control points and markers that a navigator has the longer it will take to regenerate the path segments

    See vgSplineNavigator further details on the vgNavigator Class

     

* 146  *  How can I attach a vgObject to a vgNavigator up


    You cannot directly attach a vgObject to a vgNavigator.

    You have to attached the vgObject to the vgPlayer that is attached to the vgNavigator

    You could also attach the vgObject to another vgPlayer and then associate that vgPlayer with vgPlayer for the vgNavigator

    See vgSplineNavigator further details on the vgNavigator Class

     

* 147  *  How do I toggle the render of a vgNavigator's path On/Off   up


    This is quite easy to do :
     

    Code :

    --

       

      //

      // To turn path rendering On

      //

      vgProp( myNavigator, VGSPLINENAV_RENDER, VG_ON );

       

      //

      // To turn path rendering Off

      //

      vgProp( myNavigator, VGSPLINENAV_RENDER, VG_OFF );

       

     

    See vgCommon and the Vega Programmers Guide for further details on vgProp.

    See vgSplineNavigator further details on properties of a vgNavigator

     

* 148  * How can I set the Speed of a Particular Control Point in a vgNavigator  up

     

    To set the speed to be used from a given control point in a vgNavigator requires a little work as its not quite straight forward

    Basically you have to search through a the marker that a vgNavigator has check to see if the marker is of the type VGSPLINENAV_VELOCITY and that the index matches. If no match is found then you have would have to add a new VGSPLINENAV_VELOCITY marker for that control point of the vgNavigator.

    See this code example on how to change or set the speed of a vgNavigator's control point

    See vgSplineNavigator further details on the vgNavigator Class
     

* 149  * How can I set a constant overall speed on a vgNavigator  up


    If the vgNavigator has no control point event markers of type VGSPLINENAV_VELOCITY then you can simply set the velocity on the vgNavigator instance using
     

    Code :

    --

       

      vgProp( m_nav, VGSPLINENAV_VELOCITY, speed );

       

     

    If the vgNavigator has control point event markers of the type VGSPLINENAV_VELOCITY then you have to search through the event markers and set the speed for the markers that are of the type VGSPLINENAV_VELOCITY

    See this code example on how to set a constant speed on a vgNavigator

    See vgSplineNavigator further details on the vgObject Class
     

* 150  * How to retrieve the Speed of a vgNavigator  up


    If the vgNavigator has no control point event markers of type VGSPLINENAV_VELOCITY then you can simply retrieve the velocity of the vgNavigator instance using
     

    Code :

    --

       

      float speed = vgGetProp( m_nav, VGSPLINENAV_VELOCITY );

       

     

    If  you want to get the speed of a particular vgNavigator's control point event marker then you have to search through  the event markers and find the event marker for that control point

    See this code example on how to retrieve vgNavigator's overall speed and speed of a control point

    See vgSplineNavigator further details on the vgNavigator Class

 

     

     

     Copyright 2004-2006 Gordon Tomlinson  All Rights Reserved.

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