|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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:
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.
Vega process priority classes.
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.
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
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Vega ships with set of Example programs and ADF's that are described in the Vega Programmers are typically installed to:
Samples for the Vega Modules are typically installed to:
where XXX is the module e.g. C:\Program Files\Paradigm\Vega\Sample\vgLADBM 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:
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)
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
For further details on MultiGen-Paradigm's DIS support see the MultiGen-Paradigm vgDIS/HLA Datasheet | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
All the above functions return the time in seconds as double precision floating point using highest resolution that the system supports. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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).
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Support image formats for Vega are listed below
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
( other formats may be supported if a loader has been written or through OpenGL Performer on Irix systems) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
e.g. vgProp( obj, VGOBJ_CS, VGOBJ_DYNAMIC ); See vgObject man pages further details on the vgObject
|
|
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
|
|
You can set the isector mask on parts of your vgObject in a couple of ways: See vgObject man pages further details on the vgObject
|
|
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
|
|
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:
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
|
|
|
|
You can pause a vgNavigator by setting it's VGCOMMON_ENABLED property to Off e.g.
You can restart a vgNavigator after pausing it by setting it's VGCOMMON_ENABLED property to On
See vgCommon and the Vega Programmers Guide for further details on vgProp. See vgSplineNavigator further details on properties of a vgNavigator Class
|
|
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
|
|
To switch from a vgMotion model to a vgNavigator is quite straight forward see the Switching Code Sample See vgSplineNavigator further details on the vgNavigator Class
|
|
To switch from a vgNavigator to a vgMotion model is quite straight forward see the Switching Code Sample See vgSplineNavigator further details on the vgNavigator Class
|
|
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
|
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
|
|
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
|
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
|
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
|
|
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
|
|
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. |