Foros - Stratos

Stratos => Proyectos => Mensaje iniciado por: Warchief en 09 de Octubre de 2005, 04:18:20 PM

Título: Decisión 2d
Publicado por: Warchief en 09 de Octubre de 2005, 04:18:20 PM
 Saludos,

estoy rehaciendo el PFC (no, no me sobra tiempo) y uno de los importantes cambios que tengo que hacer es el sistema de celdas (no, mejor el motor de celdas, que queda más guay).

Actualmente tenemos:

(http://img382.imageshack.us/img382/4781/actual7eb.th.png)

Lo que claramente no nos sirve, porque las celdas se superponen unas a otras. (Bueno, de momento servía, pero ha de cambiarse).

Surgen dos opciones:

(http://img382.imageshack.us/img382/7194/opciones9ao.th.png)

La primera permite construir todo con 5 tipos de celdas (E == F), teniendo en cuenta que los 4 puntos cardinales han de tener las combinaciones de los terrenos (5 tipos de terreno):
Cardinales: 4 * VR5,2 = 4*25 = 100
Central     : 5

Total 105 tiles distintos.
Teniendo el dibujo 54 celdas

La segunda tendría sólo dos tipos de celda, pero con las variaciones son:
Tipo A = VR5,3 = 125
Tipo B = VR5,3 = 125

Total 250 tiles distintos
Teniendo el dibujo 18 celdas

Lo que no me mola un pelo en ningun caso. XD
¿Mejor número de celdas o menor número de tiles?

Asumamos que quiero renderizar cuadrados y, si es posible, evitar superposiciones (barrido simple) ¿qué opináis?.
Título: Decisión 2d
Publicado por: Tyrell en 11 de Octubre de 2005, 01:50:32 PM
 No entiendo porqué necesitas crear diferentes tipos de tiles para crear hexágonos combinándolos. ¿No sería mejor crear un tile hexagonal con fondo transparente y luego colocar copias por medio de un bucle que controle las coordenadas x,y de cada uno? Hice algo así para Virus:

(http://www.escaque.com/images/productos/virus/shot_virus_m.jpg)
Título: Decisión 2d
Publicado por: Pogacha en 11 de Octubre de 2005, 02:04:07 PM
 Opino igual que Tyrell, me parece que es muy complicado tener tanta combinación ...
Título: Decisión 2d
Publicado por: tewe76 en 11 de Octubre de 2005, 02:20:50 PM
 Yo tampoco entiendo muy bien el motivo, pero según pone:
CitarLo que claramente no nos sirve, porque las celdas se superponen unas a otras. (Bueno, de momento servía, pero ha de cambiarse).
parece que tiene que evitar que se superpongan...
Título: Decisión 2d
Publicado por: Warchief en 11 de Octubre de 2005, 04:14:51 PM
 En efecto. En la versión actual lo tengo así en 2D.[véase http://img382.imageshack.us/my.php?image=actual7eb.png]
El problema es que no puedo hacer lo mismo con las texturas de los tiles del suelo del 3D. Digamos que tengo un:

tile[x][y]->SetTexture(bla bla bla);


La verdad es que como no he visto solución me estaba planteando:
Título: Decisión 2d
Publicado por: Ray en 11 de Octubre de 2005, 04:39:33 PM
 Yo te iba a decir que dibujases cuadrados sobre los hexagonos solo dibujando en su interior, la verdad es que es dificil explicarlo sin una imagen.

A ver..., si tienes un hexagono de 6 vertices, 2 arriba, 2 abajo y uno a cada lado, con los 4 de arriba y abajo haces un cuadrado sobre el que dibujar, despues te quedaria un margen a los lados que siempre sería el mismo para todos.

Aunque lo mejor como ya se ha dicho es que se solapen lo que les de la gana usando trasparencias.

un saludo.
Título: Decisión 2d
Publicado por: Warchief en 11 de Octubre de 2005, 07:40:20 PM
 @Ray
El problema ahí es que las zonas que no son casilla son rectangulares, no cuadradas.



@Todos
La verdad es que el problema viene porque el motor no me deja tratar el suelo de otra forma que no sean tiles cuadrados o textura completa para el suelo (lo que no me permite generar tableros dinámicamente, sin tener que pasar por arte). Así que creo que lo mejor es que me olvide del terreno y los trate el tablero como mallas.

A empaparme de 3D un poquito, a ver si consigo hacer un prisma hexagonal y darle textura. XD


Gracias por vuestras ideas.
Título: Decisión 2d
Publicado por: Tyrell en 12 de Octubre de 2005, 02:27:24 AM
 
Cita de: Warchiefel problema viene porque el motor no me deja tratar el suelo de otra forma que no sean tiles cuadrados o textura completa para el suelo (lo que no me permite generar tableros dinámicamente, sin tener que pasar por arte). Así que creo que lo mejor es que me olvide del terreno y los trate el tablero como mallas.
Ya. Ahora te entiendo. Resulta que justamente estoy ahora metido con el mismo tema: hacer un suelo tileado en 3D. Efectivamente, hay que olvidarse de usar terrenos para ello, he creado una malla múltiple que hace las veces de suelo, en mi caso uso cuadrados pero puede hacerse igualmente con hexágonos regulares, y aplicando una textura a cada uno de ellos.
Título: Decisión 2d
Publicado por: Warchief en 12 de Octubre de 2005, 02:38:16 AM
 El TiledTerrain a mí me lo daba IrrlichtSpintz (una modificación del Irrlicht original) [ http://irrlicht.spintz.com/ ], ya que Irrlicht no da Tiles. En cualquier caso ya estoy trabajando con mallas.


Del ejemplo de TiledTerrainManager.

for( s32 x = 0; x < 4; x++ )
{
 for( s32 z = 0; z < 4; z++ )
 {
  core::stringc filename = "";

  filename = filenamePrefix;
  filename += x;
  filename += "_";
  filename += z;
  filename += filenameSuffix;

  printf( "Loading terrain tile [%2d][%2d]...\n", x, z );

  // Here we tell the terrain manager to load a tile at the specified position
  terrainManager->LoadTile( x, z, filename.c_str() );

  // Here, we're getting the pointer to the tile we just added and then, since we aren't
  // using any lights, set the material lighting flag to false.  We then set the 2 textures,
  // the first being our standard texture, and the second being the detail texture.  Then
  // we scale the 2nd texture coordinates, so our detail map will repeat 10x over to show
  // even more detail.
  tNode = terrainManager->GetTileNode( x, z );
  tNode->setMaterialFlag( video::EMF_LIGHTING, false );
  tNode->setMaterialTexture( 0, terrainTexture );
  tNode->setMaterialTexture( 1, detailTexture );
  tNode->setMaterialType( video::EMT_DETAIL_MAP );
  tNode->scaleTexture( 1.0f, 10.0f );
 }
}


Saludos.
Título: Decisión 2d
Publicado por: Tyrell en 12 de Octubre de 2005, 02:53:15 AM
 Bueno, yo estoy usando Blitz3D, y no tiene función para crear terrenos tileados. De todos modos, me lo he montado con mallas y me funciona perféctamente.