Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Fourier

Iniciado por Drácula, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Drácula

                                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.                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

ethernet

                                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)                                

Lorien

                                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:                                

 /            / _
 X=o=> Lorien |-<#>-|
/              ¨ /

synchrnzr

                                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 ]                                

synchrnzr

                                Bueno, eso de las carreras que decíamos, sirve para este tipo de mariconadas XDDD

Sync :guay:                                

seryu

                                qno qno.. autodidacta rlzz.... xD                                

synchrnzr

                                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:                                

Drácula

                                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...
                               
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Cronodragón

                                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
                               

ethernet

                                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                                






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.