generación:
mesh
tile
chunk
manager:
stream de datos
interacción
La idea se basa en la generación de Spherified Cube de Philip Nowell url
Este grafico ejemplifica la forma en la que cada vértice del plano se moldea en la forma de una de las caras.
Cada vértice se genera en la forma de una cuadricula con valor en el rango de 0 -> 1 luego se le aplica la función matemática que transformara la posición de todos los vértices a su nueva posición
Al mover el slider el grafico se actualizara ara ejemplificar como el grafico se proyecta a la nueva forma.
Una vez tenemos la ecuacion para proyectar cada vertice a la superficie de una esfera, podemos generar la malla del planeta como la demostracion que podemos ver
Ahora, para poder trabajar con la esfera, simplemente tenemos que verlo como el cubo antes de trasnformarlo.
Es un simple cuvo de dimenciones [1,1,1], luego se va a escalar al tamaño del planeta requerido, antes de la vsualizacion todo se trabaja en la escala de 0 a 1.
los tiles son cada cara de la esfera y es el que nos va a dictar el nivel de detalle, son piezas independientes controladas por el sistema de chunks.
Los tiles se crean y destruyen para ahorrar memoria y/agregar nivel de detalle
Ahora al mirar este grafico tenemos que tener en cuenta que cada cuadradito tiene la misma escala en la imagen, cada tile tiene asociada una imagen de 256x256px 512x512px 1024x1024px.
La forma de entender, es que por donde pasa el mouse es una simulación del zoom que hace la cámara al planeta, eliminando los tiles grandes y generando tiles mas pequeños, para así poder ver con mas detalle
Los tiles son entidades completamente independientes y aislados (lo que significa que no sabe ni le importa lo que pasa con los tiles vecinos) cada tile es responsable de si mismo.
Los tiles tienen como información básica 3 cosas Zoom,x,y
zoom: esta información que va de 0 a inf (idealmente) nos indica que tan pequeño será el tile, y por ende que resolución o detalle vamos a poder ver
x/y son las coordenadas locales de cada tile hijo (aun tengo que pensar el algoritmo a usar) el valor va a empezar desde 0 y el valor máximo va a depender del nivel de zoom en el que se encuentre el tile
El sistema de chunks es complejo para describirlo en esta pagina de presentación, va a requerir de su propia pagina dedicada.
Definición propia: entiendo como chunk a un área determinada en el espacio virtual con una lista de objetos, dichos objetos contiene la información.
Tipo: el tipo le indica al manejador, que es lo que tiene que hacer con los datos.
Datos: los datos son una lista de toda la información necesaria para construir el objeto final.
Transformación: la transformación es la información del objeto y le indica al generador donde y como crear el objeto, lo posiciona, lo rota y lo escala.
Los chunks pueden ser globales o locales dependiendo de la necesidad, y a su vez cada chunk puede tener sub chunks, no tiene sentido que al estar en la vista alejada cargue los chunks de la dimensión de un parque, tampoco tiene sentido que en una vista cercana carguen parte del chunk que esta por debajo de la curvatura del planeta y por lo tanto no se ve.
Además se pueden tener chunks localizados en una área especificada en un área a necesidad del usuario.
El stream de datos es la forma que tiene el renderizador/ generador de obtener los datos tanto de la memoria ram como de la memoria rom, por lo tanto este apartado es portante saber que datos es lo que tenemos que guardar, como lo tenemos que guardar, para por fin entender la forma de cargar, enviar y guardar datos.
Los tipos de datos a guardar pasan de simples archivos .tres de godot que es el archivo que nos almacenara los datos en forma de texto, como vectores, textos, ruta a archivos binarios etc.
Los tipos de datos binarios que no se pueden guardar en forma de texto o no tiene sentido guardarlo en forma de .tres, se guardaran en una carpeta de recursos, para que el manejador de datos pueda ubicarlos y enviarlos al sistema de chunks.
La forma de guardar los archivos es en una forma de carpetas estructurada, el arbol va a estar dividida por.
Uso: basicamente que tanto se va a estar leyendo los datos.
Tipo: como se va a usar.
Etiqueta: que tipo de archivo es, no es lo mismo un modelo 3d que una imagen.
Esta estructura es con la facilidad de crear un algoritmo de busqueda.
El generador del mundo va a hacer una peticion de que archivos es necesario cargar, y el manejador va a buscar el archivo, lo cargara, y se lo otorgara al que lo necesite.
El stream de datos se encargara de la tarea compleja de administrar los archivos.
la interacción del mundo tiene un problema matemático, y es que tenemos que hacer click en un tile, y saber las coordenadas latitud y longitud, también altitud pero este es mas fácil, el problema radica en que el sistema de coordenadas geográficas lat,long no es con el que el tile es generado, por lo cual tiene una distorsión. el problema no es tan complicado al porque simplemente puedo simular que es una esfera y al hacer click solo tengo que generar un punto en la posición de de impacto entre el click y el tile, y ahí al centro, y así con ese vector obtener tanto la longitud y la latitud