21.3. How-To

To indicate that a movement file (.mov) is to be used, the ODB is modified as shown:

OBJECT {
    GDB_FILENAME = truck.gdb
    UNITS = METERS
    INSTANCES {
        INFO = driving.mov
        INFO =  2175.00,  8908.00, 15.24, 1.00, 1.00, 1.00, 0.00, 0.00, 120.0
        INFO =  1375.00, 16908.00, 15.24, 1.00, 1.00, 1.00, 0.00, 0.00,  90.0
        INFO = 16750.00, 12178.00, 15.24, 1.00, 1.00, 1.00, 0.00, 0.00,  90.0
        INFO = 16750.00, 14908.00, 15.24, 1.00, 1.00, 1.00, 0.00, 0.00,  90.0
    }
}

Note that one of the "INFO" entries now specifies a movement file rather than the usual translation/scale/rotation variables.

The indicated "driving.mov" looks as follows:

DIRSIG_MOV = 1.0

INIT_POSITION {
    DATE = 6 23 2002
    GMT_OFFSET = 5.000
    LOCAL_TIME = 12.000

    TRANSLATION = 1575.00, 8908.00, 15.24
    SCALE = 1.0, 1.0, 1.0
    ROTATION = 0.0, 0.0, 1.57
}

MOVES {
    #      dsec  dTX     dTY  dTZ  dSX  dSY  dSZ  dRX  dRY  dRZ
    MOVE = 3600, 5000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
    MOVE = 3600, 4000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
    MOVE = 3600, 3000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
    MOVE = 3600, 4000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
    MOVE = 3600, 5000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
}

The movement file is broken into two major sections: "INIT_POSITION" and "MOVES". The INIT_POSITION section specifies the positioning of the instance at a given absolute time. The MOVES section contains a series of "MOVE" lines, which specify delta to the initial position.

Here is an analysis of the first move line:

    #      dsec  dTX     dTY  dTZ  dSX  dSY  dSZ  dRX  dRY  dRZ
    MOVE = 3600, 5000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0

At 6 minutes (3600 seconds) after noon (specified in INIT_POSITION), the instance has moved 5000 meters in the positive x direction. There has been no change in the objects y or z positions. Likewise, the scale and rotation of the object have remained unchanged.

Now the next move line:

    #      dsec  dTX     dTY  dTZ  dSX  dSY  dSZ  dRX  dRY  dRZ
    MOVE = 3600, 4000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0

At 12 minutes (3600+3600 seconds) after noon, the instance has moved a further 4000 meters in the positive x direction. The instance now has an x,y,z location of (10575.0, 8908.0, 12.24).

As previously mentioned, DIRSIG will use linear interpolation between specified positions. If the cfg indicates an imaging time of 12:09 PM, then DIRSIG interpolates halfway between the first and second "MOVE" entries. Thus, the instance position will have an x translation of 7000, giving an x,y,z location of (8575.0, 8908.0, 12.24).

The rotation deltas above are defined in radians. Note that a linear interpolation for Pi radians is ambigous. Attempting supply such a MOVE will result in an error message. The solution is to supply an intermediate MOVE.

Note that DIRSIG will use a flat extrapolation. That is, any time before INIT_POSITION will be equal to the INIT_POSITION. Similarly, any time after the last specified MOVE will equal the last specified MOVE.