|
GRASS 8 Programmer's Manual 8.6.0dev(2026)-8843f13794
|
OGSF library - setting and manipulating keyframes animation (lower level functions) More...
#include <stdlib.h>#include <math.h>#include <grass/gis.h>#include <grass/glocale.h>#include <grass/ogsf.h>
Go to the source code of this file.
OGSF library - setting and manipulating keyframes animation (lower level functions)
GRASS OpenGL gsurf OGSF Library
SPDX-FileCopyrightText: 1999-2008 GRASS Development Team SPDX-License-Identifier: GPL-2.0-or-later
Definition in file gk.c.
Correct twist value.
| k | keyframe list |
Definition at line 707 of file gk.c.
References key_node::fields, KF_TWIST, key_node::next, NULL, and t.
Referenced by gk_make_framesfromkeys(), and gk_make_linear_framesfromkeys().
| double get_2key_neighbors | ( | int | nvk, |
| float | time, | ||
| float | range, | ||
| int | loop, | ||
| Keylist * | karray[], | ||
| Keylist ** | km1, | ||
| Keylist ** | kp1 | ||
| ) |
Finds interval containing time, putting left (or equal) key at km1, right at kp1.
| nvk | |
| time | |
| range | |
| loop | |
| karray | |
| km1 | |
| km2 |
Definition at line 560 of file gk.c.
References NULL.
Referenced by gk_make_linear_framesfromkeys().
| double get_key_neighbors | ( | int | nvk, |
| double | time, | ||
| double | range, | ||
| int | loop, | ||
| Keylist * | karray[], | ||
| Keylist ** | km1, | ||
| Keylist ** | kp1, | ||
| Keylist ** | kp2, | ||
| Keylist ** | km2, | ||
| double * | dt1, | ||
| double * | dt2 | ||
| ) |
Find interval containing time.
Changed June 94 to handle masks - now need to have called get_viable_keys for appropriate mask first to build the ARRAY of viable keyframes.
Putting left (or equal) key at km1, right at kp1, 2nd to right at kp2, and second to left at km2. dt1 is given the length of the current + left intervals dt2 is given the length of the current + right intervals
| nvk | |
| time | |
| range | |
| loop | |
| karray | |
| km1 | |
| kp1 | |
| kp2 | |
| km2 | |
| dt1 | |
| dt2 |
Definition at line 458 of file gk.c.
References NULL.
Referenced by gk_make_framesfromkeys().
Copy keyframes.
| k | source keyframes |
Definition at line 41 of file gk.c.
References key_node::fieldmask, key_node::fields, G_malloc, KF_NUMFIELDS, key_node::look_ahead, NULL, and key_node::pos.
Draw path.
| views | Viewnode struct |
| steps | step value |
| keys | keyframe list |
Definition at line 745 of file gk.c.
References CM_COLOR, view_node::fields, key_node::fields, GS_background_color(), GS_default_draw_color(), GS_get_from(), GS_get_longdim(), gsd_bgnline(), gsd_color_func(), gsd_colormode(), gsd_endline(), gsd_linewidth(), gsd_vert_func(), gsd_x(), gsd_zwritemask(), KF_FROMX, key_node::next, and NULL.
Referenced by gk_follow_frames(), GK_set_tension(), and GK_show_path().
| void gk_follow_frames | ( | Viewnode * | view, |
| int | numsteps, | ||
| Keylist * | keys, | ||
| int | step, | ||
| int | onestep, | ||
| int | render, | ||
| unsigned long | mode | ||
| ) |
Checks key masks.
Because if they're masked up until the current position, pre-existing (or current) field should be used.
| view | pointer to Viewmode struct |
| numsteps | number of steps |
| keys | list of keyframes |
| step | step value |
| onestep | |
| render | |
| mode |
Definition at line 137 of file gk.c.
References view_node::fields, FM_LABEL, FM_PATH, FM_SITE, FM_VECT, FM_VOL, G_debug(), gk_draw_path(), gk_get_mask_sofar(), GP_alldraw_site(), GS_alldraw_cplane_fences(), GS_alldraw_surf(), GS_alldraw_wire(), GS_background_color(), GS_clear(), GS_done_draw(), GS_draw_all_list(), GS_get_from(), GS_get_viewdir(), GS_getlight_position(), GS_moveto(), GS_ready_draw(), GS_set_draw(), GS_set_fov(), GS_set_twist(), GS_set_viewdir(), GS_setlight_position(), GSD_BACK, GSD_FRONT, GV_alldraw_vect(), GVL_alldraw_vol(), KF_DIRX, KF_DIRX_MASK, KF_DIRY, KF_DIRY_MASK, KF_DIRZ, KF_DIRZ_MASK, KF_FOV, KF_FOV_MASK, KF_FROMX, KF_FROMX_MASK, KF_FROMY, KF_FROMY_MASK, KF_FROMZ, KF_FROMZ_MASK, KF_TWIST, KF_TWIST_MASK, X, x, Y, and Z.
Referenced by GK_do_framestep().
Free keyframe list.
| ok | pointer to Keylist struct |
Definition at line 267 of file gk.c.
References G_free(), and key_node::next.
Referenced by GK_clear_keys().
Get mask value.
Get begin & end pos, AND all masks in keys <= pos
Time must be between 0.0 & 1.0
| time | timestamp |
| keys | list of keyframes |
Definition at line 75 of file gk.c.
References key_node::fieldmask, key_node::next, and key_node::pos.
Referenced by gk_follow_frames().
Generate viewnode from keyframes.
Here we use a cardinal cubic spline
| keys | list of keyframes |
| keysteps | keyframe step |
| newsteps | new step value |
| loop | loop indicator |
| t |
Definition at line 297 of file gk.c.
References _, correct_twist(), view_node::fields, key_node::fields, G_free(), G_malloc, G_warning(), get_key_neighbors(), gk_viable_keys_for_mask(), KF_NUMFIELDS, lin_interp(), key_node::next, NULL, key_node::pos, t, and x.
Referenced by GK_update_frames().
Generate viewnode from keyframe list (linear interpolation)
Here we use linear interpolation. Loop variable isn't used, but left in for use in possible "linear interp with smoothing" version.
| keys | keyframe list |
| keysteps | step value |
| newsteps | new step value |
| loop | loop indicator |
Definition at line 607 of file gk.c.
References _, correct_twist(), view_node::fields, G_free(), G_malloc, G_warning(), get_2key_neighbors(), gk_viable_keys_for_mask(), KF_NUMFIELDS, lin_interp(), key_node::next, NULL, and key_node::pos.
Referenced by GK_update_frames().
ADD.
| mask | mask value | |
| keys | list of keyframes | |
| [out] | keyret | output list of keyframes |
Definition at line 109 of file gk.c.
References key_node::fieldmask, and key_node::next.
Referenced by gk_make_framesfromkeys(), and gk_make_linear_framesfromkeys().
Linear interpolation.
| dt | coefficient |
| val2 | value 2 |
| val1 | value 1 |
Definition at line 541 of file gk.c.
Referenced by gk_make_framesfromkeys(), and gk_make_linear_framesfromkeys().