/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Motor de tiles 3D, ¿Seleccionar tiles a dibujar?

 
      Índice del Foro elrincondelc.com -> Algoritmos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
RODLON



Registrado: 09 Sep 2011
Mensajes: 3
Ubicación: Huesca

MensajePublicado: 09/09/2011 7:11 pm
Título: Motor de tiles 3D, ¿Seleccionar tiles a dibujar?

Hola! Este es mi primer post en este foro, no he visto ningun apartado de presentaciones ni nada, asi que... Lo que busco es una forma de detectar lo que explico mas abajo, no estoy pidiendo codigo ni algoritmos exactamente:

Estoy haciendo un videojuego simple con graficos 3D, y la representacion gráfica era uno de mis mayores problemas(yo no lo es, tanto). El nivel(pantalla, mapa, escenario o como lo llameis) esta compuesto por cubos, con 6 caras cada uno(conoces minecraft?pues algo asi). Utilizo un vector de tres dimensiones para almacenar el nivel, y cada posicion del vector almacena un indice para saber si se ha de dibujar algo o no(explicado de forma muy simple). La camara esta situada en algun punto dentro de ese vector, orientada hacia alguna direccion. Tambien decir que uso las librerias graficas SDL y opengl, pero eso creo que es irrelevante.

El caso es que, si yo tengo un nivel supergrande, con grandes espacios abiertos y cerrados(almacenado en un vector por ejemplo de 7000*700*200, necesito una forma eficiente de saber que caras de que cubos he de dibujar, sin tener que recorrer todo el vector ni dibujar cosas que no se van a ver(dividirlo en "habitaciones" no lo considero una opcion). Cuando digo dibujar, quiero decir mandar a opengl dibujar la cara o caras de un cubo.
La idea es dibujar solo las caras de los cubos que van a ser visibles desde la posicion donde está la camara. Me han dicho de usar algo llamado raycasting(que no raytracing) pero la informacion que he entontrado no me ha sido muy util hasta ahora...

Una idea es, desde donde esta situada la camara, avanzar por el vector en una direccion hasta llegar a un indice que indique dibujar o hasta el final del vector. Hacerlo muchas veces, cambiando la direccion gradualmente(para cubrir todo el ancho y alto "visible" desde donde está la camara). Pero me parece un despilfarro de CPU hacerlo tantisimas veces(creo que serian necesarias al menos 100 en vertical y 180 en horizontal, si no mas, y ademas igual dibujaria varias veces algunas cosas.

Cuando he empezado a escribir me parecio apropiado ponerlo en la seccion algorithmos, porque lo que busco es saber que he de mandar dibujar y que no, pero ahora no estoy seguro...

Saludos, y gracias a los que lean el tocho que he escrito!!
Volver arriba
Sorancio



Registrado: 29 May 2009
Mensajes: 1157
Ubicación: España

MensajePublicado: 12/09/2011 5:34 am
Título:

Hola RODLON.

No sé si por aquí hay mucho experimentado en temas de gráficos y videojuegos aunque, ahora que recuerdo, Requiem (un usuario) está haciendo un motor en C++, podrías echarle un vistazo:

http://www.elrincondelc.com/nuevorincon/foros/viewtopic.php?t=18323

Ahora bien, hay una comunidad que se dedica sólo al desarrollo de videojuegos y parece estar bastante bien (algunos compañeros están contentísimos con ella) así que te dejo un link a la Wiki y a ver si encuentras algo interesante:

http://wiki.gamedev.net/index.php/Main_Page

Espero que te sirva de ayuda y mucha suerte.
Volver arriba
RODLON



Registrado: 09 Sep 2011
Mensajes: 3
Ubicación: Huesca

MensajePublicado: 12/09/2011 4:10 pm
Título:

Vaya lio en el que me he metido, por simple que sea lo que quiero hacer, no deja de ser bastante complicado. Tengo mucho que aprender todavia, antes de poder crear un juego 3D desde 0...

Ese usuario tiene muchas cosas en su blog, que parece interesante, ya lo ire mirando.

Gracias por responder!
Volver arriba
      Índice del Foro elrincondelc.com -> Algoritmos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com