 |
 |
|
 |
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Hola,
Estoy trantando de hacer vibrar unas figuras en una animación. He expuesto
el tema en povray.newusers pero no he recibido muchas respuestas.
Un compañero me ha pasado esta fórmula:
======================================
#declare xvibrate =
distance*cosd(clock*360*(frames/framerate)*frequency)*pow(2.817,-clock*(fram
es/framerate)*damping);
======================================
Si yo intento hacer esto:
======================================
rotate <xvibrate, 0, 0>
======================================
POV-Ray me dá un error y el nombre de la función ya está declarado
anteriormente.
Hasta ahora he hecho esto, pero esto sólo me produce un movimiento a lo
largo de los vectores X e Y.
======================================
object { ROM2 translate <0, 0, 0> translate <0.5*pi*clock, 0.2*pi*clock,
0> }
object { RHO1 translate <0, -0.2, 0> translate <-0.3*pi*clock, 0.2*pi*clock,
0> }
object { PKC1 translate <0, 0, 0> translate <0.3*pi*clock, 0.2*pi*clock,
0> }
object { BCK1 translate <0, 0, 0> translate <-0.31*pi*clock, 0.18*pi*clock,
0> }
object { MKK1_MKK2 translate <0, 0, 0> translate <0.2*pi*clock,
0.18*pi*clock, 0>}
object { Slt2 translate <-0.3*pi*clock, 0.2*pi*clock, 0> translate <0, -0.5,
0> }
object { Prot }
======================================
Creo que un buen modo para llegar ha hacer lo que quiero hacer es usando una
función de seno o de coseno, como bien me dijo ese compañero, pero no sé
porqué no me funciona.
Si alguien tienen tiempo y quiere ayudarme a resolver este pequeño problema
se lo agradecería.
Muchas gracias,
Oleguer
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Uf. Yo tenia por ahí unos ficheros que hacian algo parecido, vete tu a saber
donde ... Te cuento a ver si lo pillas.
La cosa era que tenia una animacion de unas avispas volando y para mover las
alas lo que hacia era definir dos posiciones para colocarlas (las alas).
Luego chequeaba si el fotograma de la animacion era par o impar y segun eso
ponia las alas en una posicion u otra.
Luego al montar la animacion creaba un efecto tela de chulo.
Siento no poder mandarte los codigos ni nada mas, pero como ya te digo a
saber donde estan esos .pov metidos. Espero que te sirva.
Un saludo.
Manuel Mata
http://es.geocities.com/manuel_mata_rueda
Post a reply to this message
|
 |
|  |
|  |
|
 |
From: Oleguer Vilella
Subject: Re: (Es) Vibrar figuras en animaci=F3n
Date: 30 Nov 2004 16:56:11
Message: <41acec7b@news.povray.org>
|
|
 |
|  |
|  |
|
 |
Pués hace muy pocos días que estoy con las animaciones y ando bastante
perdido. Pero, cualquier sugerencia o ayuda siempre será bienvenida.
Voy a pensar en esto que me dices, pero tiene que haver un modo más
sencillo.
Muchas gracias por tu tiempo.
Saludos,
Oleguer
"Manuel Mata" <man### [at] yahoo es> escribió en el mensaje
news:web.41ace66fdcc7e4a1346bade10@news.povray.org...
> Uf. Yo tenia por ahí unos ficheros que hacian algo parecido, vete tu a
saber
> donde ... Te cuento a ver si lo pillas.
>
> La cosa era que tenia una animacion de unas avispas volando y para mover
las
> alas lo que hacia era definir dos posiciones para colocarlas (las alas).
> Luego chequeaba si el fotograma de la animacion era par o impar y segun
eso
> ponia las alas en una posicion u otra.
>
> Luego al montar la animacion creaba un efecto tela de chulo.
>
> Siento no poder mandarte los codigos ni nada mas, pero como ya te digo a
> saber donde estan esos .pov metidos. Espero que te sirva.
>
> Un saludo.
>
> Manuel Mata
> http://es.geocities.com/manuel_mata_rueda
>
>
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
> Voy a pensar en esto que me dices, pero tiene que haver un modo más
> sencillo.
Claro que lo ai, que te lo den hecho.
#if (div(clock,2)=clock*2)
// fotograma par
#else
// fotograma impar
#end
Explicación de la falla:
Si divides clock por dos, coges la parte entera y la multiplicas por dos, el
resultado será clock si clock es par.
> Muchas gracias por tu tiempo.
>
> Saludos,
> Oleguer
>
>
> > http://es.geocities.com/manuel_mata_rueda
> >
> >
>
>
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Ok Bruno. Entiendo, ¿pero sabes porqué no funciona ese código que he puesto
antes que me dijo ese compañero del newusers? Creo que debería funcionar.
Estos días estoy bastante ocupado, el fin de semana me dedicaré a trabajar
con esto. Si tengo alguna otra duda ya la expondré.
Muchas gracias por las respuestas,
Oleguer
"B. Gimeno" <nos### [at] jazzfree com> escribió en el mensaje
news:41ae2040$1@news.povray.org...
> > Voy a pensar en esto que me dices, pero tiene que haver un modo más
> > sencillo.
>
> Claro que lo ai, que te lo den hecho.
>
> #if (div(clock,2)=clock*2)
> // fotograma par
> #else
> // fotograma impar
> #end
>
> Explicación de la falla:
> Si divides clock por dos, coges la parte entera y la multiplicas por dos,
el
> resultado será clock si clock es par.
>
>
> > Muchas gracias por tu tiempo.
> >
> > Saludos,
> > Oleguer
> >
> >
> > > http://es.geocities.com/manuel_mata_rueda
> > >
> > >
> >
> >
>
>
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
> Claro que lo ai, que te lo den hecho.
>
> #if (div(clock,2)=clock*2)
> // fotograma par
> #else
> // fotograma impar
> #end
>
> Explicación de la falla:
> Si divides clock por dos, coges la parte entera y la multiplicas por dos, el
> resultado será clock si clock es par.
Esto es bastante relativo y depende de lo que signifique tu clock. Cuando se
hace una animacion el clock se enfoca desde dos puntos de vista.
a.- clock va a ser el tiempo. Esto es si la animacion va a durar 10 segundos
se pone el initial_clock=0 y final_clock=10
b.- clock va a ser el fotograma. Si la animacion va a tener 200 fotogramas
el initial_clock=0 y el final_clock=200
Pasar de una opcion a otra es facil mediante unos calculos.
Dependiendo de esto para saber el fotograma actual hay que utilizar una u
otra formula.
En b) es directo.
En a) tienes que multiplicar el clock por el numero de fotogramas y ya lo
tienes. Para saber si es par o impar miras el resto de la division entera
por 2. Creo que es algo asi como mod(nFotograma,2). Si es 0 es par, si es 1
impar.
Ademas tienes que tener en cuenta el Ciclyc_animation y el initial_frame y
final_frame. Ya te dejo que investigues con todo esto, porque si no me voy
a enrollar demasiado. Utiliza sentencias #debug para ver los valores y lo
que pasa por ahi dentro.
Un saludo.
http://www.ignorancia.org/mmata
(Definitivamente voy a escribir algun tutorial de
animacion)
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Ok, sí, ahora me pondré a investigar con esto que es nuevo para mi.
Muchas gracias por vuestra ayuda.
Saludos,
Oleguer
"Manuel Mata" <man### [at] yahoo es> escribió en el mensaje
news:web.41aed1db43336c37d141b3240@news.povray.org...
> > Claro que lo ai, que te lo den hecho.
> >
> > #if (div(clock,2)=clock*2)
> > // fotograma par
> > #else
> > // fotograma impar
> > #end
> >
> > Explicación de la falla:
> > Si divides clock por dos, coges la parte entera y la multiplicas por
dos, el
> > resultado será clock si clock es par.
>
> Esto es bastante relativo y depende de lo que signifique tu clock. Cuando
se
> hace una animacion el clock se enfoca desde dos puntos de vista.
>
> a.- clock va a ser el tiempo. Esto es si la animacion va a durar 10
segundos
> se pone el initial_clock=0 y final_clock=10
> b.- clock va a ser el fotograma. Si la animacion va a tener 200 fotogramas
> el initial_clock=0 y el final_clock=200
>
> Pasar de una opcion a otra es facil mediante unos calculos.
>
> Dependiendo de esto para saber el fotograma actual hay que utilizar una u
> otra formula.
>
> En b) es directo.
>
> En a) tienes que multiplicar el clock por el numero de fotogramas y ya lo
> tienes. Para saber si es par o impar miras el resto de la division entera
> por 2. Creo que es algo asi como mod(nFotograma,2). Si es 0 es par, si es
1
> impar.
>
> Ademas tienes que tener en cuenta el Ciclyc_animation y el initial_frame y
> final_frame. Ya te dejo que investigues con todo esto, porque si no me voy
> a enrollar demasiado. Utiliza sentencias #debug para ver los valores y lo
> que pasa por ahi dentro.
>
> Un saludo.
>
> http://www.ignorancia.org/mmata
> (Definitivamente voy a escribir algun tutorial de
> animacion)
>
>
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
He probado vuestro código y lo que he consiguido a sido hacer que me
aperezcan primero 3 y después en el siguiente render las otras 3, tipo
anunció de aquellos de las vallas publicitarias.
Pero yo creo que con esta función esto debería funcionar:
======================================
include "transforms.inc"
#declare damping = 5;
#declare frequency = 5;
#declare framerate = 25;
#declare frames = 100
#declare xvibrate =
distance*cosd(clock*360*(frames/framerate)*frequency)*pow(2.817,-clock*(fram
es/framerate)*damping);
======================================
El único problema es que cuando yo incluyo esto en un vector de rotación o
de traducción me dá un error.
======================================
rotate <xvibrate, 0, 0>
translate <xvibrate, 0, 0>
======================================
En mi código, por ahora lo que he hecho es esto:
======================================
object { ROM2 translate <0, 0, 0> translate <0.5*pi*clock, 0.2*pi*clock,
0> }
object { RHO1 translate <0, -0.2, 0> translate <-0.3*pi*clock, 0.2*pi*clock,
0> }
object { PKC1 translate <0, 0, 0> translate <0.3*pi*clock, 0.2*pi*clock,
0> }
object { BCK1 translate <0, 0, 0> translate <-0.31*pi*clock, 0.18*pi*clock,
0> }
object { MKK1_MKK2 translate <0, 0, 0> translate <0.2*pi*clock,
0.18*pi*clock, 0>}
object { Slt2 translate <-0.3*pi*clock, 0.2*pi*clock, 0> translate <0, -0.5,
0> }
======================================
Yo creo que sacando esto de estos translates e incluyendo esta función
debería hacer el efecto de que estos objetos vibren.
¿Sabe alguno de vosotros si esto es posible o que es lo que me puede
producir este error?
P.D.: +KFI0 +KFF10
Gracias por avanzado,
Oleguer
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Oleguer Vilella" <ole### [at] infonegocio com> wrote:
> He probado vuestro código y lo que he consiguido a sido hacer que me
> aperezcan primero 3 y después en el siguiente render las otras 3, tipo
> anunció de aquellos de las vallas publicitarias.
> Pero yo creo que con esta función esto debería funcionar:
> ======================================
> include "transforms.inc"
>
> #declare damping = 5;
> #declare frequency = 5;
> #declare framerate = 25;
> #declare frames = 100
>
> #declare xvibrate =
> distance*cosd(clock*360*(frames/framerate)*frequency)*pow(2.817,-clock*(fram
> es/framerate)*damping);
> ======================================
> El único problema es que cuando yo incluyo esto en un vector de rotación o
> de traducción me dá un error.
> ======================================
> rotate <xvibrate, 0, 0>
> translate <xvibrate, 0, 0>
> [...]
> Yo creo que sacando esto de estos translates e incluyendo esta función
> debería hacer el efecto de que estos objetos vibren.
> ¿Sabe alguno de vosotros si esto es posible o que es lo que me puede
> producir este error?
>
> P.D.: +KFI0 +KFF10
>
> Gracias por avanzado,
> Oleguer
Ten en cuenta que "distance" y "frequency" son palabras reservadas del SDL,
usadas la primera en la niebla y el arco iris, y la segunda como
modificador de patrones. Por eso en la documentación se desaconseja usar
identificadores formados sólo por letras minúsculas, precaución que, como
es obvio, cabe observar en especial si se trata de palabras inglesas:
prueba, por ejemplo, a cambiarlos por "Distance" y "Frequency",
respectivamente, tanto al declararlos como al usar sus valores. Por otra
parte, la línea "#declare frames = 100" debería acabar en un punto y coma,
y debes también acordarte de definir el valor de "Distance" si no lo has
hecho ya en otra parte de la escena anterior al trecho que nos muestras.
Saludos :)
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|
 |