| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
RODLON
Registrado: 09 Sep 2011 Mensajes: 3 Ubicación: Huesca
| Publicado: 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
| Publicado: 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
| Publicado: 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 | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |