|
En sin duda la
animación un campo
donde siempre ha
querido tomar parte
el usuario, ya sea por
lo espectacular de
éstas, lo realistas
que pueden llegar a
ser, o simplemente
por conseguir algunos
efectos de
movimiento para su
logotipo, etc...
|
NOTA:
Las fotos pueden ser ampliadas para ver detalles. Situando el ratón
encima de la foto durante unos instantes, podrás ver una pequeña
descripción y lo que ocupa la ampliación.
Por F. Javier Rodríguez
Si
bien los usuarios desean conocer las diferentes formas complejas de
los algoritmos con los que trabajan los programas de animación,
también es evidente que en la mayoría de los casos se
recurre a algún paquete profesional para crear la animación.
Las ventajas de recurrir a los programas ya creados son muchas, pero
posee dos grandes desventajas: la primera es que el usuario no podrá
conocer el cómo lo hace el ordenador para conseguir los resultados,
la segunda desventaja es que un programa por muy bueno que este sea
no llegará a reflejar al 100% los deseos del usuario.
Con esta serie de dos artículos
no se pretende consagrarles en el campo de la animación, sino
más bien introducirles de una forma sencilla y amena en este
tema, teniendo como principal objetivo el conocer un pcoo más
la forma de trabajar de nuestro ordenador.
Los programas de ejemplo que se incluyen
en el artículo están desarrollados en Basic, con lo cual
la velocidad de animación no se asemejará ni mucho menos
a las que usted puede observar en otros programas.
Formas de animación
Antes de entrar en el campo de la animación
vectorial decirles que, en un principio, lo que hizo a los vectores
interesantes fue la necesidad de tratar gráficos con cambio de
forma de la forma más rápida posible y con el menor consumo
de memoria en el almacenaje de los datos que dichas figuras representarían.
Los campos de aplicación para
los gráficos vectoriales son en sí muy elevados, ya que
se puede construir desde un espacio exterior perfectamente simulado,
hasta la representación lo más humana posible de una cabeza
(Max Headroom); haciendo que los comportamientos de las figuras se asemejen
lo más posible a las reacciones naturales.
|
El primer tipo de
animación es aquella en la
que partiendo de un dibujo
inicial, sin importar el
número de colores ni el
número de formas, se van
almacenando en la "lista"
de animación todos los
siguientes movimientos
relativos al dibujo inicial.
|
La animación en sí posee
varios "campos", dichos campos se diferencian dependiendo
de la forma usada para crear una animación. De entre los diferentes
tipos de animación "picture", animación de bloque
y animación vectorial.
El primer tipo de animación (animación
picture) es aquella en la que partiendo de un dibujo inicial, sin importar
el número de colores ni el número de formas, se van almacenando
en la "lista" de animación todos los siguientes movimientos
relativos al dibujo inicial (ver dibujo 1).
El segundo tipo de animación (animación
de bloque), es aquel en el que dicho efecto se consigue, sin importar
el número de colores ni de formas, por la alteración constante
de varias secuencias en la pantalla; evidentemente este tipo de animación
supone un gasto tremendo de memoria.
Por último el tercer tipo de animación
(animación vectorial), es aquel en el que se consigue dicho efecto
a través de una lista de movimientos (partiendo de una posición
inicial), cuya cantidad de colores son variables, pero en la que la
estructura del dibujo o formas se limita a la construcción de
las mismas mediante segmentos lineales.
Es precisamente este tipo de animación
en el que se basará el artículo, tratándose este
de animación vectorial en su forma más sencilla (con un
solo plano de color).
Introducción a la animación vectorial
La animación vectorial, como se
dijo anteriormente, está compuesta por el movimiento de una o
más formas en pantalla con la diferencia primordial de que dicha
animación está compuesta por diferentes segmentos.
Seguramente habrán visto más
de una vez, videojuegos en los que los diferentes paisajes se movían
perfectamente simulando la tridimensionalidad, pero también habrán
observado cómo dichos paisajes resultaban un poco planos y a
veces faltos de volumen.
Para
empezar a adentrarse en el mundo de la animación vectorial sirva
el siguiente ejemplo, con el movimiento por pantalla de un solo vector
o segmento. (Listado 1).
En realidad el conseguir dicho movimiento
no es nada complicado, ya que los datos (o puntos de referencia) a tener
en cuenta son muy pocos: cuatro iniciales y dos de variación
por cada secuencia de la animación. La cantidad de los datos
de variación dependerá en cada caso del algoritmo utilizado
para la animación, en este caso es un algoritmo muy común
y nada complicado.
En dicho algoritmo, los cuatro puntos
iniciales se corresponden con las coordenadas X e Y de los dos extremos
del segmento. Los diferentes puntos de movimiento se consiguen mediante
el incremento, por mediación de una variable, de los puntos base
(o puntos de coordenada iniciales). Para no tener que utilizar cuatro
puntos en cada una de las secuencias, lo que se hace es recalcular dichos
puntos a medida que se produce la animación, con lo cual se redibujará
el segmento a cada paso del programa.
Los valores de movimiento relativos a
los puntos originales son en definitiva no números, sino fórmulas
que generan determinados valores, los cuales traducidos darán
como resultado los valores de movimiento.
Como consecuencia de este algoritmo si
se desea animar formas más complejas (aquellas que están
construidas con más de un segmento), se necesitarán cuatro
puntos iniciales por cada uno de los segmentos que construyen la figura
en cuestión; con esto se consigue que cada uno de los segmentos
de la figra, puedan animarse independientemente al resto de la figura
(ver dibujo 2).
Es en el listado número dos donde
se puede apreciar este efecto. En dicho programa partiendo de una figa
inicial se realizan los pasos necesarios para redimensionar la misma;
esto se consigue en el tratamiento de la figura no como un único
gráfico sino como la composición de un gráfico
por más de un elemento (en este caso segmentos).
Efectos en la animación
Hasta el momento se ha tratado en este
artículo a la animación vectorial sin alterar el tamaño
de los segmentos, pero esto no quiere decir que ello sea imposible.
Con la alteración del tamaño
de los segmentos en una animación se pueden conseguir efectos
bastante interesantes, tales como por ejemplo el efecto de profundidad,
tridimensionalidad de la figura o la de acercamiento y alejamiento de
la misma.
Por ejemplo para conseguir el efecto
de profundidad, solamente será necesario romper la simetría
de la figura en cuestión (ver dibujo 3). Dicha asimetría
debe estar directamente relacionada con la desproporción de tamaño
entre las dos mitades de la figura. Pero son este y otros efectos los
que podrá observar en la segunda parte de este artículo,
la cual se publirará el próximo número.
Por otro lado la posibilidad de tratar
al objeto como una figra de dimensiones relativas, permite mucho tipo
de comodidades y ahorro. Poniendo como ejemplo la construcción
de un set de caracteres vectorial, parecería que el consumo de
memoria sería en cierta ofrma desmedido en comporación
a la utilizada por el set existente en formato bit-map; pero en cierta
manera dicho consumo de memoria se vería rápidamente saldado
a la hora de usar caracteres de mayor dimensión o en diferentes
formas de perspectiva. Esto es debido a que mientras en el formato Bit-Map
sería necesario recurrir a otro set de caracteres diferentes,
con las letras vectoriales la cantidad de datos relativos a la figura
serían los mismos independientemente del tamaño, perspectiva
etc...
|
Con la alteración
del ta-
maño de los segmentos en
una animación se pueden
conseguir efectos bastan-
te interesantes, tales co-
mo por ejemplo el efecto
de profundidad, tridimen-
sionalidad de la figua o la
de acercamiento y aleja-
miento de la misma.
|
Asimismo es con los vectores con los
que se consigue un mayor campo de posibilidades en cuanto a representaciones
gráficas de todo tipo, pues con un poco de imaginación
y paciencia es posible transformas una 'A' en un misil o en una flor,
aprovechando la misma estructura de datos.
Como adelanto al artículo del
próximo mes, decirles que en éste se tratará a
la animación vectorial en forma de figuras tridimencionales con
volumen, incluyendo un programa bastante interesante.
Como se mencionó anteriormente
todos los programas incluidos en el artículo están escritos
en AmigaBasic, con lo cual si se desea adquirir mayor velocidad de programa
es muy aconsejable que estos programas sean compilados con cualquiera
de los programas existentes en el mercado.
Comentarios de los programas
Segmento Animado
Este es un programa muy sencillo en el
que se usa el comando Line para definir el segmento, posteriormente
a éste se le va variando las coordenadas por mediación
de una variable, con lo cual se crean varias secuencias y por tanto
un movimiento de dicho elemento.
Letra vectorial
Este sencillo programa les mostrará
cómo con una sencilla rutina pueden hacer sus propios vectores
animados, ya que para la construcción de la animación
que aquí se emplea como ejemplo, sólo se han utilizado
ocho variables.
Como podrán comprobar dicha animación
carece de tridimensionalidad, así como de volumen en el objeto
en cuestión; pero este es algo que dejaremos para el siguiente
capítulo.
El sistema empleado para la creación
de la figura que se va a animar, en este caso una "A", es
el siguiente.
Se a definido un punto inicial de segmento
así como otro final del mismo; la representación de los
restantes segmentos que construyen la figura, se consigue mediante puntos
relativos a estos primeros. Esto hace que al cambiar alguna de las variables
que definen los puntos del segmento principal (aquel al que se "unen"
los demás), como los demás son relativos a dicho punto
por tanto también cambiarán su posición.
La forma de ver mejor este concepto es
mediante el uso único de una variable para producir el incemento
y decremento en el tamaño de la figura.
Es cierto que de esta forma los casos
son muy generales, debiendo cambiar todo el programa para la construcción
de otra letra, pero también es la forma con la que ustedes podrán
ver más fácilmente las operaciones que se producen.
La variable DIR se usa exclusivamente
como valor en el que se debe ir produciendo el aumento o decremento
de la figra, adquiriendo ésta mayor velocidad a medida que el
valor "DIR" sea mayor. Para ver los diferentes comportamientos
pruebe a modificar su valor con los siguientes datos: 0.1, 1, 1.5, 2,
5, 10.
Como habrán podido comprobar con
el valor 0.1 el cambio en el tamaño de la figa se eterniza, mientras
que si pruebas con el valor 10, la velocidad es bastante mayor, con
lo que el movimiento parece más real.
Por el momento, hasta el mes que viene,
podrá ir experimentando con este programa y de esta manera descubrir
nuevas posibilidades.
' LETRA VECTORIAL . 110 ' . 273 ' (C) 1990 AMIGA WORLD . 195 ' . 273 ' (C) 1990 F. JAVIER RODRÍGUEZ . 336 ' . 273 WINDOW CLOSE 1 . 224 SCREEN 1,320,200,5,1 . 667 WINDOW 1,"LETRA - VECTOR",(0,0)-(297,180),0,1 . 488 WINDOW OUTPUT 1 . 914 PALETTE 1,0,0,0 . 314 PALETTE 2,1,.1,.75 . 223 COLOR 2,1 . 846 PAINT (1,1),2,1 . 441 ' DEFINICIÓN DE COORDENADAS PARA LOS . 16 ' SEGMENTOS . 389 X=80 . 526 Y=150 . 687 X1=100 . 964 Y1=150 . 976 ' AUMENTO DEL VECTOR . 662 C=-200 . 637 C1=200 . 206 DIR=5 . 985 FIGURA: . 219 FOR I=C TO C1 STEP DIR . 939 LUNE (Y-I,X-I)-(Y1-I,X1+I+1),1 . 548 LINE (Y-I,X-I)-(Y+10+I,X-I),1 . 696 LUNE (Y+10+I,X-I)-(Y+10+I,X1+I+1),1 . 133 LINE (Y-I,X+10)-(Y+10+I,X+10),1 . 344 GOSUB BORRA . 358 NEXT . 61 SWAP C,C1 . 157 DIR=-DIR . 468 GOTO FIGURA . 146 BORRA: . 516 LINE (Y-I,X-I-1)-(Y1-I,X1+I+1),2 . 712 LINE (Y-I,X-I)-(Y+10+I,X-I),2 . 703 LINE (Y+10+I,X-1)-(Y+10+I,X1+I+1),2 . 140 LINE (Y-1,X+10)-(Y+10+I,X+10),2 . 351 RETURB . 357
Numero de líneas: 41
|
| |
' (C) 1990 AMIGA WORLD . 195
' . 273
' (C) 1990 F. JAVIER RODRÍGUEZ . 336
' . 273
WINDOW 1,"VECTOR",(0,0)-(500,80),0,-1 . 199
LI: . 81
B=-1 . 119
FOR T=0 TO 80 . 868
LINE (200,T)-(300,T) . 946
GOSUB BORRA . 358
NEXT . 61
B=1 . 995
FOR T=80 TO 0 SETP -1 . 160
LINE (200,T)-(300,T) . 946
GOSUB BORRA . 61
GOTO LI . 953
BORRA: . 516
LINE (200,T+B)-(300,T+B),0 . 725
RETURN . 357
Numero de lineas: 20
|
|