Estoy intentando implementar el efecto del mar. He visto documentación y veo que utilizan la transformada de Fourier. Sin embargo, no entiendo porqué se utiliza. ¿Alguien puede explicarme para qué se utiliza Fourier? Pero por favor, no respuestas técnicas. Lo que quiero saber es porqué debo utilizar Fourier y no simplemente la función del seno.
La transformada de fourier no es mas q un cambio de base. Pasas de la base del tiempo a la base de la frecuencia, de esa manera sabes q energia tiene la señal en cada frecuancia. Todo esto viene a cuanto de q una señal (no todas) se puede poner como suma de señales periodicas (como el seno o el coseno).
Lo q no tengo ni idea es para q usaran el tranformada de fourier para las ondas del agua. Puede q se refieran mas bien a la serie de fourier q esta muy relaccionada.
(si me pilla mi profesor de señales diciendo todo esto me mata xD)
XD Señales y Sistemas forever! Que viva FOURIER! (Es coña, evidentemente)
A ver, supongo que se usa la transformada de FOURIER por que el reflejo de una onda obedece al espectro de un escalon, es decir que es una SYNC. Es decir que un escalon en dominio temporal corresponde a una SYNC en dominio frecuencial si usas FOURIER. Pero no veo por que lo hacen asi, ya que seria mas facil tomar un modelo precalculado y adaptarlo a cada momento.
Hacer FFTs es un poco costoso, del palo de N*log(N) en 1D. Asin que en 2D me paese que es N^2*log(N^2) o tal vez (nlogn)log(nlogn), dependiendo de la implementacion.
Un poco animal pa hacerlo en tiempo real.
Un saludo!
Lorien! :lengua:
Ese Lorien! No me desgastes el nombre, la función esa (sin x)/(x) se llama sinc no Sync. Como se nota que hace más tiempo que yo que hiciste SS, que maldito... XDDD
En lo del mar, lo más probable es que te digan que la elevación de la superfície en un punto es igual a la suma de todas las ondas sinusoidales que llegan de los distintos focos emisores. Esa suma corresponde precisamente a la Transformada de Fourier (o a la antitransformada, que pal caso es lo mismo) Probablemente te dicen que es mucho más rápido aplicar la FFT que la TF normal por los motivos de complejidad que dice Lorien.
Ahora bien, esas elevaciones supongo que las aplicas a los vértices de una red de triángulos (o cuadrados trinagulados) de n*n, que no a píxeles. En el mejor de los casos, si n es potencia de 2 (que es cuando más aprovechas las ventajas de la FFT) y n no es un número demasiado grande, el cálculo de la FFT es bastante rápido y es posible que puedas aplicarlo a tiempo real para calcular las elevaciones de los vértices y crear un efecto ondulatorio dinámico muy realista, descuidando el número de focos emisores, en vez de sumar la contribución de todos los focos en cada punto (eso correspondería a una serie de Fourier como muy bien se ha comentado antes)
Puede ser un cálculo bastante costoso según lo que valga n. Pero para n=256, por ejemplo, aún se puede hacer bastante rápido y utilizar a tiempo real sin problemas.
Sync :guay:
[ Este Mensaje fue editado por: synchrnzr el 2002-07-11 12:48 ]
Bueno, eso de las carreras que decíamos, sirve para este tipo de mariconadas XDDD
Sync :guay:
qno qno.. autodidacta rlzz.... xD
La verdad es que cuando empesé a haser mariconadillas de estas yo tb era autodidacta, pero mira... me matriculé en la Uni y... en fin... XDDD
De todas formas la mayor parte de cosillas que he aprendido como programador de videojuegos, sí lo he tenido que hacer de forma autodidacta. Por ejemplo a programar en ensamblador de ARM para GameBoy Advance, DirectSound, etc... En la Uni no nos dan esas cosillas :triste:
Ahora que lo pienso... por si hay algún ingeniero por ahí interesado en el tema, acabo de leer que en la UdG buscaban gente para un par de doctorados sobre videojuegos, uno de síntesis de imágenes fotorrealistas y otro de realidad virtual immersiva
Sync :guay:
A ver, os cuento. He generado un array 2D basado en Perlin Noise. Y luego he asociado el resultado de la matriz a la y de los vértices. Y me aparece una animación del mar bastante buena. Entonces tengo 2 preguntas:
-¿Para qué debo usar Fourier si de esta forma está todo resuelto?
-¿Cómo puedo hallar las normales de los vértices basándome sólo en el array 2d? Supongo que así es mucho más rápido...
1. Si tienes a Perlin para que haga ruido, ya puedes patearle a Fourier su senoidal trasero y mandarlo para la casa. jeh! XD
2. Vas a tener que derivar el Perlin... y tres veces, pues necesitas las derivadas parciales para encontrar el gradiente en cada punto de la curva de nivel 3D. Busca un libro de cálculo y geometría para que veas de lo que se trata. Personalmente yo madaría las matemáticas a la mierda y me iría por la solución más mañosa. XDDD
Podrias dar los enlaces de los q hablastes al principio?
De todas maneras si q puede estar muy relacionado fourier con el Perlin noise puesto q este se basa en diferentes funciones senoidales sumadas con diferentes amplitudes. Eso es fourier XD.
Saludos