G60 G60
Páginas: 1 2 3 [4]   Ir Abajo
  Imprimir  
Autor Tema: Proyecto: LLuvia dinámica en cabina 3D  (Leído 78391 veces)
0 Usuarios y 1 Visitante están viendo este tema.
19 Mayo, 2010, 12:19:28 #45
kha29096335
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 664



En línea
Re: Proyecto: LLuvia dinámica en cabina 3D

Uuuuuuuufff

No me he enterado de nada, pero acojona  Sonreir

Tranquilo, que no es para tanto. Segúro que es porque me explico como un zapato. Resumiendo, así, para ponerlo "en corto" -algo un poco complicado de hacer-

Ahora mismo lo que estoy haciendo es crear un "tapiz" de gotas de lluvia que caigan más frecuentemente según el valor del DataRef que indica la cantidad de lluvia. El efecto se intenta conseguir creando animaciones en las cuales en cada fotograma hay un número determinado y distinto de gotas. La selección del fotograma a mostrar dependerá del DataRef mencionado anteriormente, de modo que hay fotogramas con 1 gota, otros con 2, otros con 3 y un fotograma con 4, habiendo en total 16 fotogramas por animación, es decir, hay más de un fotograma con una, dos o tres gotas. Esto es así para que cuando la cantidad de gotas a mostrar, dado el valor del DataRef, sean 3, haya más de un gráfico a escoger con 3 gotas, para que parezca que caen 3 gotas pero en sitio diferente cada vez, dado que a cada ciclo de dibujado se escogerá el fotograma a mostrar.

Para implementar el sistema de fotogramas se van a usar 4 rotaries con 15 fotogramas por rotary. Por ejemplo aquí tienes todos los fotogramas en secuencia para el rotary que he denominado "de tipo A":

Se van a usar 4 rotaries para que sus animaciones difieran y haya más variedad, pues cada rotary tendrá varios fotogramas con el mismo número de gotas pero en distinto lugar, pero también serán distintos esos mismos fotogramas entre los distintos rotaries.

Estos 4 rotaries se pondrán como instrumentos en el panel del avión y será necesario mapearlos a lo largo de la superficie del parabrisas. Esa es precisamente la parte en la que estoy y he descrito. Para el parabrisas, un plano en 3D curvado, y para cualquier objeto 3D representado en el simulador, es necesario asignar una textura, como parte del proceso hay que generar lo que se denomina un mapeado UV, que no es si no indicar al motor de renderizado en dónde, a lo largo de la superficie del polígono, debe caer cada pixel de la textura.

El problema aqui radica en realizar un mapeado UV que minimice la deformación de la textura a lo largo de las caras del polígono. Como el parabrisas es un plano, en forma de malla, pero curvado, y la textura a aplicar es un dibujo 2D de unas gotas de agua -los rotaries-, lo mejor es crear un mapeado UV uniforme, de forma que cada fotograma de los rotaries caiga justo en cada rectangulo que forman el plano del cristal, y como todos los rotaries van a ser del mismo tamaño, lo mejor es procurar que en el mapeao UV todos los rectángulos sean iguales, de este modo minimizaremos la distorsión de la textura a lo largo del cristal, al menos esa es la intención. Por eso os he puesto las capturas de cómo estoy realizando ese mapeo UV.

Espero que se entienda mejor. Si alguna cosa particular no se entiende, os ruego me la preguntéis, que trataré de explicarme mejor o con otras palabras, o ejemplos, según sea el caso.

Saludos.


19 Mayo, 2010, 12:46:02 #46
DeltaRomeo
Superusuario
*******
Desconectado Desconectado

Mensajes: 2201




En línea
Re: Proyecto: LLuvia dinámica en cabina 3D

Entendido.

Y si no entiendo mal, se podrá implementar en distintos aviones sin demasiada dificultad, no?

19 Mayo, 2010, 17:18:19 #47
kha29096335
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 664



En línea
Re: Proyecto: LLuvia dinámica en cabina 3D

Entendido.

Y si no entiendo mal, se podrá implementar en distintos aviones sin demasiada dificultad, no?

La idea es establecer un método estándar y aplicable a cualquier avión sí, incluso sirviendo el mismo plugin que gestionará todo esto. Eso sí, dependiendo de la gracia artística que cada cual tenga el efecto gráfico quedará mejor o peor. Aqui, para el desarrollo, estoy usando gráficos que parecen gotas, pero lo correcto, en realidad, sería usar salpicaduras, fijándose uno en cómo queda una gota cuando ya ha impactado sobre la superficie, o una mezcla, en su justa medida, de los dos tipos de gráfico.

19 Mayo, 2010, 20:44:52 #48
kha29096335
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 664



En línea
Re: Proyecto: LLuvia dinámica en cabina 3D

Bueno, me permito exponeros un poco más de información a cerca del proceso de creación.

Aquí os incluyo lo que son los gráficos correspondientes a los fotogramas de los cuatro tipos de animación de rotary representando grupos de gotas para una única celda del parabrisas

Referencia de fotogramas (usadlo como guías)


Rotary tipo A:


Rotary tipo B:


Rotary tipo C:


Rotary tipo D:


Tened en cuenta que se trata de tiras de 16 fotogramas de 32x32 pixeles cada uno, lo que hace que cada tira sea de 512x32 pixeles.
En estas muestras podréis apreciar como para un tipo hay varios fotogramas con dos gotas, pero cada uno de ellos las tiene en distinta posición, es decir, en una misma tira, en horizontal, hay varios gráficos con 1, 2, 3 o 4 gotas, pero en todos ellos están situadas de forma distinta, excepto para el de 4 gotas, que es el último y solo hay uno con cuatro. Hacer notar también que el primer fotograma equivale a no tener lluvia, por lo tanto, no hay gotas en él.

Así mismo si miráis de arriba hacia abajo, en la misma columna, recordad que cada columna, pese a no estar marcada de ninguna manera, equivale a una anchura de 32 pixeles, apreciaréis como cada tipo tiene los fotogramas con una, dos, tres o cuatro gotas en las mismas columnas, pero son también distintos entre los diferentes tipos.

La diferencia de fotogramas en una misma tira nos dará como resultado diferenciación temporal, mientras que las diferencias en columnas nos dará diferenciación espacial.

Con respecto al objeto 3D que hará de parabrisas en la vista interior. Aquí tenéis una captura de Blender en la que se aprecia el objeto y el panel, muy simples pero válidos para el desarrollo. La perspectiva del parabrisas parece extraña pero es debido a que se trata de una superficie con sus normales hacia dentro, por lo que su cara exterior se ve aquí, y en X-Plane, transparente.



Si activamos la edición de la geometría del objeto se podrá apreciar mejor su forma poligonal:


Como veis el trabajo de mapeado UV consiste en "aplanar", "des curvar" la superficie del cristal de modo que toda ella quede coplanar a la superficie de la textura, que siempre es plana al ser 2D. El proceso descrito en una aportación mía anterior ha dado como resultado lo siguiente:



Lo que veis en la imagen anterior es ya el mapeo UV del parabrisas sobre la textura de la cabina 3D. En la parte con el panel se ha realizado el mapeo UV del objeto del panel de instrumentos, aunque no lo veis aquí, bajo el mapeo UV del parabrisas lo que hay es un ligero color azul con transparencia y algo de suciedad pintada en los límites. El pequeño rectángulo blanco no lo es tal, aunque aquí se aprecia blanco es transparencia del mismo nivel que el cristal del parabrisas, aquí es en dónde se colocarán los rotaries.

Aquí tenéis una captura de PlaneMaker con los instrumentos ya colocados encima de la textura del panel, incluidos los rotaries que son esos rectángulos con borde azul que se aprecian en la parte central-izquierda.



Ahora un siguiente paso será mover los puntos del mapeado UV del parabrisas para poner cada celda sobre un rotary particular, intentando no usar el mismo rotary para celdas contiguas. Para facilitar la tarea lo que he hecho es crear una textura diferente de la de las gotas para los rotary, con ese borde azulado para saber dónde quedan, pues de lo contrario, con las texturas definitivas no podría saber exactamente en donde está cada rotary. La textura provisional que he usado para tener las oportunas referencias ha sido esta:

Para el layer 1 del rotary


Para el layer 2 del rotary


Tened en cuenta que el layer 1 de un rotary son los archivos PNG sin numeración en el nombre, como por ejemplo Mi_Rotary.PNG, este layer representa elementos del rotary carentes de transparencia, como podría ser una arandela exterior en un instrumento. El layer 2, es decir, archivos con un '-1' agregado al nombre, como puede ser Mi_Rotary-1.PNG representan elementos translucidos cuando se usa el tipo de iluminación 'Glass' en las propiedades del rotary dentro de PlaneMaker. Por lo tanto a la hora de simular instrumentos que en realidad son gráficos dentro de un TFT, por ejemplo, se crean con un PNG totalmente transparente en la capa 1 y el gráfico en la capa 2 (los PNG con el '-1' en el nombre). En el caso que nos ocupa de las gotas de agua es lo mismo, éstas se definen únicamente en la capa 2 porque son transparentes y carecen totalmente de elementos opacos.

Una de las mayores dificultades a las que se enfrenta el diseñador de aviones para X-Plane es el mapeo UV de los instrumentos pertenecientes al cockpit 3D pero que también son parte del panel. A la hora de mapear en una aplicación 3D nosotros cargamos la textura y realizamos el mapeo UV sobre esta, pero a la hora de situar los vértices sobre un instrumento del panel no disponemos de referencia alguna de en donde está situado un determinado instrumento dentro de la textura del panel. Lo que X-Plane hace realmente es tomar nuestra textura del panel y dibujar sus instrumentos encima pero, cuando nosotros realizamos el mapeo UV, ¿en donde están exactamente esos instrumentos?. Nosotros tenemos únicamente la textura, carente de instrumentos sobre-impresos.

Una solución a esto era realizar una captura de pantalla del panel 2D de X-Plane a la misma resolución que la textura del panel, de este modo ya teníamos los instrumentos sobre-impresos y teniamos las referencias necesarias, ésto que no es tan incómodo a la hora de trabajar con texturas de 1024x1024 se hace bastante más tedioso a la hora de trabajar con texturas de 2048x2048; esto es así porque no podemos capturar la textura completa con los instrumentos superpuestos en una única captura, dado que no podemos establecer la resolución de nuestros monitores a 2048x2048, debiendo realizar las capturas a trozos y recomponer el puzle más tarde.

Sin embargo a partir de la versión 9.30 de X-Plane, Ben Supnik agregó a X-Plane la capacidad de generar un Preview del panel, a su resolución correcta, simplemente con pulsar una tecla. Esta es la opción que debéis configurar para realizar tal acción (en X-Plane para Windows):



Usando ésta característica, teniendo ya cargado el avión de prueba para el desarrollo de todo esto este es el resultado del preview:



Aquí ya tenemos una textura completa con los instrumentos sobre-impresos. Véanse los rotaries en el centro-izquierda, hay otros en el parabrisas pero son solo de pruebas para ver que tal quedaban las gotas al tamaño escogido. El color rosa es porque yo tengo configurado ese color en Irfanview como color de fondo por lo que toda parte con algo de transparencia se ve ese fondo detrás, esto me ayuda en muchas ocasiones a distinguir qué parte de un gráfico es transparente, cual es negra -sin transparencia- y cual es blanca -sin transparencia-.

Sin las referencias de en donde están colocados los rotaries exactamente esto es lo que deberíamos hacer:



Podéis ver que debemos remapear cada vértice de cada celda sobre un determinado rotary, pero lo estaríamos haciendo "a ojo" pues no tenemos referencia de en donde está situado de forma exacta cada rotary. Con el Preview generado por X-Plane la cosa cambia. Como podéis ver aquí:



Ahora ya disponemos de las referencias correctas y exactas para modificar el mapeo UV del parabrisas y que cada celda caiga sobre un rotary.

Tenemos dos posibilidades. Si usamos un solo objeto como parabrisas, remapeado por UV sobre los rotaries, tal y como estoy describiendo, entonces el espacio de textura que ya no será usado lo podemos aprovechar para otros instrumentos o texturizar otros objetos. Si usamos dos objetos, uno el cristal y otro con las celdas de los rotaries, entonces, el mapeo original es el correspondiente al cristal y el remapeo de las celdas sobre los rotaries es el mapeo UV del objeto para la lluvia. En el primer caso se aconseja no remapear sobre los rotaries las celdas del perímetro del parabrisas, para que conserven la textura de suciedad en los cantos y esquinas.

Yo probaré a duplicar el objeto del parabrisas y remapear sus celdas sobre los rotaries, de este modo no pierdo el tintado del cristal ni los detalles de suciedades en él, etc porque tendré, por un lado, el parabrisas mapeado así:



Y por otro el objeto para representar las gotas, mapeado inicialmente como el parabrisas pero, luego, modificado para remapearlo sobre los rotaries, así:



Obviamente esta técnica, de desarrollarla así, tal y como la describo, conlleva el no poder usar la vista de cabina 2D pura.

Espero que todo esto haya sido ilustrativo y haberme explicado lo suficientemente bien. Creo que es más complicado de explicar que de hacer.

Un saludo
« Última modificación: 20 Mayo, 2010, 13:41:39 por kha29096335 »

20 Mayo, 2010, 20:22:06 #49
jorduran
Superusuario
*******
Desconectado Desconectado

Mensajes: 9988



WWW
En línea
Re: Proyecto: LLuvia dinámica en cabina 3D

No creo  Giñar el trabajo que te estas metiendo es IM-PRESIONANTE y el mapeado no tiene desperdicio, y como dicen en marinería: AVANTE TODA, pero sin prisas  Sonreir


Un buen aterrizaje es el que sales andando.
Un gran aterrizaje es cuando el avion puede seguir volando.

Telefonica ha cerrado mi WEB sin preaviso.
PHOTOBUCKET A CORTADO LAS FOTOS
31 Mayo, 2010, 17:02:23 #50
kha29096335
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 664



En línea
Re: Proyecto: LLuvia dinámica en cabina 3D

Hola,

Bueno, me permito poneros una captura con la distribución preliminar de los 4 tipos de Rotaries a lo largo de las celdas del mapeado UV del objeto para la lluvia, que es copia del parabrisas:



Como podéis imaginar he intentado disimular cualquier patrón percibible, aunque con sólo 4 rotaries distintos es bastante complicado. Ahora lo que tocaría hacer, antes de remapear de forma definitiva cada celda sobre el rotary que le corresponde, sería realizar un "análisis estadístico" de la distribución, intentando ver qué zonas son las más propensas a que pueda discernirse un patrón, ya que no quedaría bien. Eso lo puedo hacer con un programa hecho a medida y para la ocasión, que analice cada celda y sus 8 adyacentes para determinar un índice que indique el nivel de diferenciación, luego se pinta en un gráfico un pixel, correspondiente a la celda analizada, de un color específico según el nivel de diferencia para la celda y, tras terminar su generación, àra todas las celdas,  se echa un vistazo al gráfico resultante para hacernos una idea de si hay alguna parte más homogénea -con mas igualdades- que otra, en la que puedan distinguirse patrones de gotas iguales. Si resultase demasiado evidente no quedaría otra que crear más rotaries distintos para colocarlos en esas partes con poca diferenciación, para intentar crear más variedad.

Es difícil de explicar con palabras, en cuanto pueda os pondré gráficos con la idea.

Por cierto, esta parte y la de remapear, son tediosas de la muerte. Jajaja.

31 Mayo, 2010, 17:23:39 #51
zxplane
Administrador
Superusuario
*****
Desconectado Desconectado

Mensajes: 4289




En línea
Re: Proyecto: LLuvia dinámica en cabina 3D

Del proceso que has descrito no me he enterado mucho pero me he quedado con lo siguiente:
Yo creo que no deberías de darle tanta importancia al hecho de evitar la repetición de un patrón analizando una celda y sus ocho adyacentes. La caída de gotas en una superficie es en fenómeno aleatorio, pero también rápido y en una escala de un parabrisas bastante difícil detectar una repetición al mismo tiempo a no ser que te quedes fijamente analizando una zona. En el conjunto global no se va a notar a no ser que la repetición siempre se produzca en el mismo par de celdas.


31 Mayo, 2010, 18:01:41 #52
kha29096335
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 664



En línea
Re: Proyecto: LLuvia dinámica en cabina 3D

Del proceso que has descrito no me he enterado mucho pero me he quedado con lo siguiente:
Yo creo que no deberías de darle tanta importancia al hecho de evitar la repetición de un patrón analizando una celda y sus ocho adyacentes. La caída de gotas en una superficie es en fenómeno aleatorio, pero también rápido y en una escala de un parabrisas bastante difícil detectar una repetición al mismo tiempo a no ser que te quedes fijamente analizando una zona. En el conjunto global no se va a notar a no ser que la repetición siempre se produzca en el mismo par de celdas.

Es que ese es el caso compañero. Ten en cuenta que todas marcadas con la A, en el mismo instante, van a tener el mismo número de gotas y en la misma posición. Lo mismo para las B, las C y las D. El tema de analizar cada celda no es algo a hacer dentro del simulador, si no un método para determinar en donde se necesitaría más variedad para tratar de evitarlo, es decir, no es algo a realizar en el plugin arriesgándonos a cargar en exceso el simulador.

Si que es verdad que quizá no debería darle tanta importancia. El problema es que si después de realizar el remapeo, que lleva lo suyo de trabajo, resulta que quedan mal los patrones, por la razón que sea, es una puñeta el tenerlo que volver a hacer poniendo más rotaries, ten en cuenta que cuando tenga todas las celdas remapeadas, sobre el rotary tipo A habrá tantos grupos de 4 vértices como celdas asignadas a la A, y lo mismo para la B, C y D, de modo que, en caso de tener que remapear algo, hay que partir de cero patatero, hay que partir de una malla original sin remapear, porque habrá muchos vértices, uno sobre otro, pero de distintas celdas, cualquiera los selecciona y los mueve, de ahí la intención de prevenirlo, para que el remapeo salga bien a la primera, dado que es un viaje solo de ida. Y eso que nadie garantiza que vayan a quedar bien tras el análisis este que comento, pero vamos, en principio deberían, que con esa intención se piensa.

Por discurrir que no quede.

03 Junio, 2010, 18:05:41 #53
kha29096335
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 664



En línea
Re: Proyecto: LLuvia dinámica en cabina 3D

Hola de nuevo,

Ya tengo los resultados del análisis estadístico sobre qué áreas de celdas disfruta de mas variedad y menos con respecto a las animaciones. Primero paso a exponeros el resultado y luego pasaré a indicaros cómo lo he realizado.

Partimos del mapeado UV a realizar con el objeto de las gotas sobre los distintos cuatro tipos de rotary (lo pongo otra vez porque he corregido una pequeña errata en el gráfico):


Como podréis ver, en este mar de letras distribuidas a lo largo de las celdas es dificilísimo discernir siquiera qué áreas de todo el grid tienen menos diferencias que otras, con respecto a la variedad en la distribución de las letras. La idea es analizar estadísticamente igualdades y generar un gráfico de colores que nos ayude a determinar las partes del grid con menos variedad de animaciones -menos variedad de rotaries-

Estos datos los importo al programa de análisis que he realizado:


Tras realizar el análisis este es el resultado:


En dicho resultado las celdas verdes brillante son las que menos celdas adyacentes con la misma animación tienen, a medida que el color verde va cambiando a más oscuro y hacia el rojo brillante más celdas con la misma animación rodean a la analizada. Es decir, a mas verde brillante, mas variedad, a mas rojo brillante, menos.

Este es el proceso que se ha seguido para realizar el análisis:

1.- He generado un archivo TXT con la distribución de los indicadores de animación y su disposición a lo largo del grid, por filas y columnas:


2.- El archivo de texto es importado en el programa y éste recorre cada una de las celdas y compara el indicador de animación de cada celda con las de su alrededor, así:


La secuencia de imágenes siguiente detalla el proceso:

Se toma un área de 9 celdas (excepto para las perimetrales):


Se toma el valor de la central:


Se compara con cada una de las que la rodean, secuencialmente:


Cuando coincide el valor, si está en su diagonal, lo valoramos como una coincidente de valor 1:

.
.
.
Si no coincide lo valoramos como 0

.
.
.
Cuando coincide el valor, si está en su misma línea vertical u horizontal, lo valoramos como una coincidente de valor 2:


las coincidencias en las diagonales se valora como 1 y las coincidencias en horizontal y vertical como 2 porque es más sencillo distinguir un patrón repetitivo cuando está en la misma horizontal o vertical que otro idéntico, de modo que valoro más negativamente cuando la coincidencia es en línea recta horizontal o vertical.

Los valores 0, si no hay coincidencia, 1 si la hay en diagonales o 2 si la hay en vertical u horizontal, se suman entre si, de modo que como máximo una configuración de animaciones con este patrón:
BBB
BBB
BBB

Daría como resultado del análisis de la 'B' central, en cada una de las posiciones, los siguientes valores:
121
202
121

Dando como total el valor 12

Despues de calcular el valor total por celda se cuantiza de forma que el máximo equivalga al rojo brillante, dando como resultado el que ya os he mostrado.

De este modo es fácilmente discernible las áreas conflictivas, susceptibles de mejora y corregibles añadiendo más tipos de animaciones -4 son muy escasas-. Por ejemplo aquí os marco las áreas en las que más fácilmente se podría ver que hay animaciones repetidas dentro de ellas


Un saludo.

Tags:
Páginas: 1 2 3 [4]   Ir Arriba
  Imprimir  
 
Ir a:  

www.x-plane.es.
Página creada en 0.278 segundos con 18 queries.