![]()
geQKFrame
Description: Quaternion keyframe interface.
Source file: …\genesis3d\OpenSource\Source\Actor\QKFrame.h
Functions:
LinearCreate, SlerpCreate, SquadCreate, Insert, Query, Modify, LinearInterpolation, SlerpInterpolation, SquadInterpolation, SquadRecompute, SlerpRecompute, LinearRead, SlerpRead, SquadRead, CreateFromBinaryFile, WriteToBinaryFile, CreateFromFile, WriteToFile, WriteToFile geQKFrame_InterpolationTypeNotes:
viewChanges for Genesis3D v1.6: None
![]()
Types:
Return to Contents
![]()
Functions:
![]()
geTKArray* GENESISCC geQKFrame_LinearCreate(void);
NOTES:
Creates a frame list for linear interpolation
Return to Contents
![]()
geTKArray* GENESISCC geQKFrame_SlerpCreate();
NOTES:
Creates a frame list for spherical linear interpolation
Return to Contents
![]()
geTKArray* GENESISCC geQKFrame_SquadCreate();
NOTES:
Creates a frame list for spherical linear interpolation
Return to Contents
![]()
geBoolean GENESISCC geQKFrame_Insert(geTKArray** KeyList, geTKArray_TimeType Time, const geQuaternion* Q, int * Index);
ARGUMENTS:
KeyList is keyframe list to insert into
Time is time of new keyframe
Q is quaternion at new keyframe
Index is index of new frame
NOTES:
Inserts a new keyframe with the given time and vector into the list.
Return to Contents
![]()
void GENESISCC geQKFrame_Query(const geTKArray* KeyList, int Index, geTKArray_TimeType* Time, geQuaternion* V);
ARGUMENTS:
KeyList is keyframe list
Index is index of frame to return
Time is time of the frame is returned
V is vector from the frame is returned
NOTES:
Returns the vector and the time at keyframe[index]
Return to Contents
![]()
ARGUMENTS
KeyList is keyframe list
Index is index of frame to change
Q is vector for the new key
NOTES
Modifies a vector at keyframe[index]
Return to Contents
![]()
ARGUMENTS
KF1 is pointer to first keyframe
KF2 is pointer to second keyframe
T is blending parameter, 0 <= T <= 1
Result holds results
NOTES
Interpolates to get a vector between the two vectors at the two keyframes where T==0 returns the vector for KF1 and T==1 returns the vector for KF2 interpolates linearly
Return to Contents
![]()
ARGUMENTS:
KF1 is pointer to first keyframe
KF2 is pointer to second keyframe
T is blending parameter, 0 <= T <= 1
Result holds results
NOTES:
Interpolates to get a vector between the two vectors at the two keyframes where T==0 returns the vector for KF1 and T==1 returns the vector for KF2 interpolates using spherical linear blending
Return to Contents
![]()
ARGUMENTS
KF1 is pointer to first keyframe
KF2 is pointer to second keyframe
T is blending parameter, 0 <= T <= 1
Result holds results
NOTES
Interpolates to get a vector between the two vectors at the two keyframes where T==0 returns the vector for KF1 and T==1 returns the vector for KF2 interpolates using spherical quadratic blending
Return to Contents
![]()
NOTES
Looped indicates if keylist has the first key connected to last key
Rebuild precomputed data for keyframe list.
Return to Contents
![]()
ARGUMENTS
KeyList: list of keys to recompute hermite values for
NOTES:
Rebuild precomputed data for keyframe list.
Return to Contents
![]()
geBoolean GENESISCC geQKFrame_LinearRead(geVFile* pFile, void * geQKFrame);
Return to Contents
![]()
geBoolean GENESISCC geQKFrame_SlerpRead(geVFile* pFile, void * geQKFrame);
Return to Contents
![]()
geBoolean GENESISCC geQKFrame_SquadRead(geVFile* pFile, void * geQKFrame);
Return to Contents
![]()
geTKArray* GENESISCC geQKFrame_CreateFromBinaryFile(geVFile* pFile, int * InterpolationType, int * Looping);
Return to Contents
![]()
geBoolean GENESISCC geQKFrame_WriteToBinaryFile(geVFile* pFile, geTKArray* KeyList, geQKFrame_InterpolationType InterpolationType, int Looping);
Return to Contents
![]()
geTKArray* GENESISCC geQKFrame_CreateFromFile(geVFile* pFile, geQKFrame_InterpolationType* InterpolationType, int * Looping);
(Note: if being compiled for Borland C compiler, then geQKFrame_InterpolationType* type is replaced with int *)
Return to Contents
![]()
geBoolean GENESISCC geQKFrame_WriteToFile(geVFile* pFile, void * geQKFrame, geQKFrame_InterpolationType InterpolationType, int Looping);
Note: if being compiled for Borland C Compiler, then the following function is defined instead of above
geBoolean GENESISCC geQKFrame_WriteToFile(geVFile* pFile, geTKArray* KeyList, geQKFrame_InterpolationType InterpolationType, int Looping);
Return to Contents
![]()
This module handles interpolation for keyframes that contain a quaternion.
This is intended to support Path.c
geTKArray supplies general support for a time-keyed array, and this supplements that support to include the specific time-keyed arrays:
An array of geQuaternion interpolated linearly
An array of geQuaternion with spherical linear interpolation (SLERP)
An array of geQuaternion with spherical quadrangle interpolation (SQUAD) as defined by: Advanced Animation and Rendering Techniques by Alan Watt and Mark Watt
These are phycially separated and have different base structures because the different interpolation techniques requre different additional data.
The two lists are created with different creation calls, interpolated with different calls, but insertion and queries share a call.
Quadrangle interpolation requires additional computation after changes are made to the keyframe list. Call geQKFrame_SquadRecompute() to update the calculations.
Return to Contents
![]()